synapse-react-client 4.0.32 → 4.0.34

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 (331) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +5 -1
  3. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  4. package/dist/components/AccessRequirementList/AccessRequirementList.js +152 -85
  5. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  6. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js +1 -0
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts +1 -0
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +62 -43
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts +6 -0
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +227 -147
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.d.ts.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js +28 -24
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +21 -0
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -0
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +163 -0
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -0
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +22 -0
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -0
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +264 -0
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -0
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js +1 -0
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  29. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  30. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +166 -71
  31. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  32. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.d.ts +13 -0
  33. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.d.ts.map +1 -0
  34. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js +122 -0
  35. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewCollaboratorsAndSigningOfficialAccordion.js.map +1 -0
  36. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +17 -0
  37. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -0
  38. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +112 -0
  39. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -0
  40. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +22 -0
  41. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -0
  42. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +193 -0
  43. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -0
  44. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.d.ts +1 -0
  45. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.d.ts.map +1 -1
  46. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js +7 -7
  47. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js.map +1 -1
  48. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts +3 -0
  49. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts.map +1 -0
  50. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js +9 -0
  51. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js.map +1 -0
  52. package/dist/components/CopyToClipboardIcon.d.ts +2 -1
  53. package/dist/components/CopyToClipboardIcon.d.ts.map +1 -1
  54. package/dist/components/CopyToClipboardIcon.js +6 -6
  55. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  56. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  57. package/dist/components/DataGrid/SynapseGrid.js +230 -215
  58. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  59. package/dist/components/DataGrid/SyncGridWithSourceButton.js +3 -3
  60. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  61. package/dist/components/DataGrid/columns/DateTimeColumn.js +1 -1
  62. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  63. package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts +10 -0
  64. package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts.map +1 -0
  65. package/dist/components/DataGrid/components/ReorderColumnsButton.js +37 -0
  66. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -0
  67. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts +12 -0
  68. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -0
  69. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +93 -0
  70. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -0
  71. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +1 -1
  72. package/dist/components/DataGrid/utils/applyModelChange.d.ts +3 -0
  73. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  74. package/dist/components/DataGrid/utils/applyModelChange.js +5 -0
  75. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  76. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts +8 -0
  77. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts.map +1 -0
  78. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js +14 -0
  79. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js.map +1 -0
  80. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +1 -1
  81. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  82. package/dist/components/EntityFinder/details/view/DetailsView.js +119 -122
  83. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  84. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts +5 -1
  85. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts.map +1 -1
  86. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +7 -7
  87. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  88. package/dist/components/EntityLink.d.ts +2 -0
  89. package/dist/components/EntityLink.d.ts.map +1 -1
  90. package/dist/components/EntityLink.js +15 -11
  91. package/dist/components/EntityLink.js.map +1 -1
  92. package/dist/components/EntitySidebar/AccessAndPermissions.css +1 -0
  93. package/dist/components/EntitySidebar/AccessAndPermissions.d.ts +7 -0
  94. package/dist/components/EntitySidebar/AccessAndPermissions.d.ts.map +1 -0
  95. package/dist/components/EntitySidebar/AccessAndPermissions.js +75 -0
  96. package/dist/components/EntitySidebar/AccessAndPermissions.js.map +1 -0
  97. package/dist/components/EntitySidebar/AccessAndPermissions.module.js +15 -0
  98. package/dist/components/EntitySidebar/AccessAndPermissions.module.js.map +1 -0
  99. package/dist/components/EntitySidebar/AccessAndPermissions.module.scss +58 -0
  100. package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
  101. package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
  102. package/dist/components/EntitySidebar/EntitySidebar.js +54 -42
  103. package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
  104. package/dist/components/EntitySidebar/EntitySidebar.module.js +10 -11
  105. package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
  106. package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -13
  107. package/dist/components/EntityTreeTable/EntityTreeTable.css +1 -1
  108. package/dist/components/EntityTreeTable/EntityTreeTable.module.js +1 -1
  109. package/dist/components/EntityTreeTable/EntityTreeTable.module.js.map +1 -1
  110. package/dist/components/EntityTreeTable/EntityTreeTable.module.scss +18 -0
  111. package/dist/components/EntityTreeTable/components/ColumnHeaders.d.ts.map +1 -1
  112. package/dist/components/EntityTreeTable/components/ColumnHeaders.js +20 -7
  113. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  114. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  115. package/dist/components/EntityTreeTable/components/EntityNameCell.js +3 -1
  116. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  117. package/dist/components/EntityTreeTable/components/EntityTreeTableView.d.ts.map +1 -1
  118. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js +4 -1
  119. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  120. package/dist/components/EntityTreeTable/components/IdColumnHeader.d.ts.map +1 -1
  121. package/dist/components/EntityTreeTable/components/IdColumnHeader.js +3 -1
  122. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  123. package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
  124. package/dist/components/EntityTreeTable/hooks/useTableColumns.js +24 -19
  125. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  126. package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
  127. package/dist/components/FilePreview/PdfPreview.js +23 -20
  128. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  129. package/dist/components/Forum/DiscussionEmpty.css +1 -1
  130. package/dist/components/Forum/DiscussionEmpty.module.js +4 -4
  131. package/dist/components/Forum/DiscussionEmpty.module.js.map +1 -1
  132. package/dist/components/Forum/DiscussionEmpty.module.scss +3 -6
  133. package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
  134. package/dist/components/GenericCard/SynapseCardLabel.js +100 -99
  135. package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
  136. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.css +1 -0
  137. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts +29 -0
  138. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts.map +1 -0
  139. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js +229 -0
  140. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js.map +1 -0
  141. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js +9 -0
  142. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js.map +1 -0
  143. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.scss +19 -0
  144. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts +23 -0
  145. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts.map +1 -0
  146. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js +39 -0
  147. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js.map +1 -0
  148. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts +14 -0
  149. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts.map +1 -0
  150. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js +12 -0
  151. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js.map +1 -0
  152. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts +17 -0
  153. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts.map +1 -0
  154. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js +8 -0
  155. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js.map +1 -0
  156. package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts +6 -0
  157. package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts.map +1 -0
  158. package/dist/components/JsonSchema/JsonSchemaPicker/index.js +4 -0
  159. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts +20 -0
  160. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts.map +1 -0
  161. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js +25 -0
  162. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js.map +1 -0
  163. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts +35 -0
  164. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts.map +1 -0
  165. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js +60 -0
  166. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js.map +1 -0
  167. package/dist/components/ProjectInfo/ProjectInfo.css +1 -1
  168. package/dist/components/ProjectInfo/ProjectInfo.module.js +5 -5
  169. package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -1
  170. package/dist/components/ProjectInfo/ProjectInfo.module.scss +2 -4
  171. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -1
  172. package/dist/components/ProjectInfo/ProjectInfoPopover.js +17 -16
  173. package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -1
  174. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
  175. package/dist/components/ProjectStorage/ProjectDataAvailability.js +16 -16
  176. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  177. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  178. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +95 -95
  179. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  180. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +2 -2
  181. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  182. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +120 -92
  183. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  184. package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
  185. package/dist/components/StorybookComponentWrapper.js +1 -3
  186. package/dist/components/StorybookComponentWrapper.js.map +1 -1
  187. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  188. package/dist/components/SynapseChat/SynapseChat.js +40 -40
  189. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  190. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -2
  191. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  192. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  193. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.css +1 -1
  194. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.d.ts.map +1 -1
  195. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js +0 -7
  196. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js.map +1 -1
  197. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js +2 -2
  198. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js.map +1 -1
  199. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.scss +12 -2
  200. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.css +1 -1
  201. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js +3 -3
  202. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js.map +1 -1
  203. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.scss +5 -1
  204. package/dist/components/TanStackTable/ColumnHeader.d.ts +7 -0
  205. package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
  206. package/dist/components/TanStackTable/ColumnHeader.js +10 -9
  207. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  208. package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts +8 -0
  209. package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts.map +1 -1
  210. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js +31 -22
  211. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  212. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts +21 -0
  213. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts.map +1 -0
  214. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js +22 -0
  215. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js.map +1 -0
  216. package/dist/components/dataaccess/AccessRequirementDashboard.d.ts.map +1 -1
  217. package/dist/components/dataaccess/AccessRequirementDashboard.js +55 -55
  218. package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
  219. package/dist/components/dataaccess/EDucTemplateTable.d.ts +3 -0
  220. package/dist/components/dataaccess/EDucTemplateTable.d.ts.map +1 -0
  221. package/dist/components/dataaccess/EDucTemplateTable.js +213 -0
  222. package/dist/components/dataaccess/EDucTemplateTable.js.map +1 -0
  223. package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
  224. package/dist/components/dataaccess/ReviewerDashboard.js +44 -34
  225. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  226. package/dist/components/entity/metadata/AnnotationsTable.js +2 -2
  227. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  228. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.d.ts.map +1 -1
  229. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js +8 -8
  230. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  231. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  232. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  233. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +22 -22
  234. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  235. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  236. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +62 -68
  237. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  238. package/dist/components/styled/StyledTableContainer.d.ts +1 -0
  239. package/dist/components/styled/StyledTableContainer.d.ts.map +1 -1
  240. package/dist/components/styled/StyledTableContainer.js +3 -3
  241. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  242. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +2 -0
  243. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  244. package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -40
  245. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  246. package/dist/mocks/eDuc/mockEDucTemplates.d.ts +7 -0
  247. package/dist/mocks/eDuc/mockEDucTemplates.d.ts.map +1 -0
  248. package/dist/mocks/eDuc/mockEDucTemplates.js +18 -0
  249. package/dist/mocks/eDuc/mockEDucTemplates.js.map +1 -0
  250. package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts +31 -0
  251. package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts.map +1 -0
  252. package/dist/mocks/jsonschema/mockJsonSchemaListing.js +101 -0
  253. package/dist/mocks/jsonschema/mockJsonSchemaListing.js.map +1 -0
  254. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  255. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +48 -23
  256. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  257. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts +2 -0
  258. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts.map +1 -0
  259. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js +14 -0
  260. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js.map +1 -0
  261. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts +8 -0
  262. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts.map +1 -0
  263. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js +30 -0
  264. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js.map +1 -0
  265. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  266. package/dist/mocks/msw/handlers.js +55 -51
  267. package/dist/mocks/msw/handlers.js.map +1 -1
  268. package/dist/style/abstracts/_cssVariables.scss +13 -0
  269. package/dist/style/components/entity_finder/_details-view.scss +0 -10
  270. package/dist/style/components/facet_nav/_facet-nav-panel.scss +0 -6
  271. package/dist/style/main.css +1 -1
  272. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  273. package/dist/synapse-client/SynapseClient.js +2 -6
  274. package/dist/synapse-client/SynapseClient.js.map +1 -1
  275. package/dist/synapse-queries/KeyFactory.d.ts +3 -0
  276. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  277. package/dist/synapse-queries/KeyFactory.js +9 -0
  278. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  279. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +3 -3
  280. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  281. package/dist/synapse-queries/dataaccess/useEDuc.js +40 -35
  282. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  283. package/dist/synapse-queries/entity/index.d.ts +0 -2
  284. package/dist/synapse-queries/entity/index.d.ts.map +1 -1
  285. package/dist/synapse-queries/entity/index.js +8 -10
  286. package/dist/synapse-queries/index.d.ts +1 -0
  287. package/dist/synapse-queries/index.d.ts.map +1 -1
  288. package/dist/synapse-queries/index.js +136 -128
  289. package/dist/synapse-queries/index.js.map +1 -1
  290. package/dist/synapse-queries/jsonschema/index.d.ts +6 -0
  291. package/dist/synapse-queries/jsonschema/index.d.ts.map +1 -0
  292. package/dist/synapse-queries/jsonschema/index.js +6 -0
  293. package/dist/synapse-queries/jsonschema/useEntityBoundSchema.d.ts.map +1 -0
  294. package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.js +1 -1
  295. package/dist/synapse-queries/jsonschema/useEntityBoundSchema.js.map +1 -0
  296. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts +26 -0
  297. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts.map +1 -0
  298. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js +36 -0
  299. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js.map +1 -0
  300. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts +8 -0
  301. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts.map +1 -0
  302. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js +21 -0
  303. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js.map +1 -0
  304. package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts +8 -0
  305. package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts.map +1 -0
  306. package/dist/synapse-queries/jsonschema/useListOrganizations.js +22 -0
  307. package/dist/synapse-queries/jsonschema/useListOrganizations.js.map +1 -0
  308. package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -0
  309. package/dist/synapse-queries/{entity → jsonschema}/useSchema.js +1 -1
  310. package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -0
  311. package/dist/testutils/VirtualizedTableTestUtils.js +17 -0
  312. package/dist/testutils/VirtualizedTableTestUtils.js.map +1 -0
  313. package/dist/theme/palette/Palettes.d.ts.map +1 -1
  314. package/dist/theme/palette/Palettes.js +13 -0
  315. package/dist/theme/palette/Palettes.js.map +1 -1
  316. package/dist/tsconfig.build.tsbuildinfo +1 -1
  317. package/dist/utils/APIConstants.d.ts +6 -0
  318. package/dist/utils/APIConstants.d.ts.map +1 -1
  319. package/dist/utils/APIConstants.js +2 -2
  320. package/dist/utils/APIConstants.js.map +1 -1
  321. package/dist/utils/hooks/useFetchBlobUrl.d.ts +9 -0
  322. package/dist/utils/hooks/useFetchBlobUrl.d.ts.map +1 -0
  323. package/dist/utils/hooks/useFetchBlobUrl.js +19 -0
  324. package/dist/utils/hooks/useFetchBlobUrl.js.map +1 -0
  325. package/package.json +3 -3
  326. package/dist/synapse-queries/entity/useEntityBoundSchema.d.ts.map +0 -1
  327. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +0 -1
  328. package/dist/synapse-queries/entity/useSchema.d.ts.map +0 -1
  329. package/dist/synapse-queries/entity/useSchema.js.map +0 -1
  330. /package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.d.ts +0 -0
  331. /package/dist/synapse-queries/{entity → jsonschema}/useSchema.d.ts +0 -0
@@ -2,17 +2,18 @@ import { DAY_IN_MS as e } from "../../utils/SynapseConstants.js";
2
2
  import { SynapseErrorBoundary as t } from "../error/ErrorBanner.js";
3
3
  import { SynapseSpinner as n } from "../LoadingScreen/LoadingScreen.js";
4
4
  import { useGetAccessRequirements as r, useUpdateAccessRequirement as i } from "../../synapse-queries/dataaccess/useAccessRequirements.js";
5
+ import { useListEDucTemplates as a } from "../../synapse-queries/dataaccess/useEDuc.js";
5
6
  import "../../synapse-queries/index.js";
6
- import { UploadDocumentField as a } from "../AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js";
7
- import { AccessRequirementWikiInstructions as o } from "../SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js";
8
- import { AccessorRequirements as s } from "../SetBasicAccessRequirementFields/AccessorRequirements.js";
7
+ import { UploadDocumentField as o } from "../AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField.js";
8
+ import { AccessRequirementWikiInstructions as s } from "../SetBasicAccessRequirementFields/AccessRequirementWikiInstructions.js";
9
+ import { AccessorRequirements as c } from "../SetBasicAccessRequirementFields/AccessorRequirements.js";
9
10
  import "../SetBasicAccessRequirementFields/index.js";
10
- import { forwardRef as c, useEffect as l, useImperativeHandle as u, useMemo as d, useState as f } from "react";
11
- import { Alert as p, Box as m, Checkbox as h, FormControlLabel as g, TextField as _, Typography as v } from "@mui/material";
12
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
13
- import { FileHandleAssociateType as S } from "@sage-bionetworks/synapse-types";
11
+ import { forwardRef as l, useEffect as u, useImperativeHandle as d, useMemo as f, useState as p } from "react";
12
+ import { Alert as m, Autocomplete as h, Box as g, Checkbox as _, FormControlLabel as v, TextField as y, Typography as b } from "@mui/material";
13
+ import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
14
+ import { FileHandleAssociateType as w } from "@sage-bionetworks/synapse-types";
14
15
  //#region src/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.tsx
15
- var C = "There was an error uploading the DUC template. ", w = (t) => {
16
+ var T = "There was an error uploading the DUC template. ", E = (t) => {
16
17
  if (t === "") return 0;
17
18
  let n = "Please enter a valid expiration period (in days): ";
18
19
  if (/^[-]?\d+$/.test(t)) {
@@ -20,46 +21,51 @@ var C = "There was an error uploading the DUC template. ", w = (t) => {
20
21
  return r < 0 ? `${n}If expiration period is set, then it must be greater than 0.` : r * e;
21
22
  }
22
23
  return `${n}For input string: "${t}"`;
23
- }, T = c(function(c, T) {
24
- let { accessRequirementId: E, onSave: D, onError: O } = c, { data: k, error: A } = r(E, { staleTime: Infinity });
25
- l(() => {
26
- k && (I(k), R((k.expirationPeriod / e).toString()));
27
- }, [k]);
28
- let [j, M] = f(null), [N, P] = f(null), [F, I] = f(null), [L, R] = f(""), z = d(() => {
29
- if (F?.ducTemplateFileHandleId) return {
30
- fileHandleId: F.ducTemplateFileHandleId,
31
- associateObjectType: S.AccessRequirementAttachment,
32
- associateObjectId: F.id.toString()
24
+ }, D = l(function(l, D) {
25
+ let { accessRequirementId: O, onSave: k, onError: A } = l, { data: j, error: M } = r(O, { staleTime: Infinity });
26
+ u(() => {
27
+ j && (R(j), B((j.expirationPeriod / e).toString()));
28
+ }, [j]);
29
+ let [N, P] = p(null), [F, I] = p(null), [L, R] = p(null), [z, B] = p(""), V = f(() => {
30
+ if (L?.ducTemplateFileHandleId) return {
31
+ fileHandleId: L.ducTemplateFileHandleId,
32
+ associateObjectType: w.AccessRequirementAttachment,
33
+ associateObjectId: L.id.toString()
33
34
  };
34
- }, [F?.ducTemplateFileHandleId, F?.id]), B = (e) => {
35
- if (e.resp && e.success && F) {
36
- M(null);
35
+ }, [L?.ducTemplateFileHandleId, L?.id]), { data: H, isLoading: U, hasNextPage: W, fetchNextPage: G } = a();
36
+ u(() => {
37
+ W && G();
38
+ }, [W, G]);
39
+ let K = f(() => H?.pages.flatMap((e) => e.results ?? []) ?? [], [H]), q = f(() => K.find((e) => e.templateId === L?.eDucTemplateId) ?? null, [K, L?.eDucTemplateId]), J = (e) => {
40
+ if (e.resp && e.success && L) {
41
+ P(null);
37
42
  let t = e.resp;
38
- I({
39
- ...F,
40
- ducTemplateFileHandleId: t.fileHandleId
43
+ R({
44
+ ...L,
45
+ ducTemplateFileHandleId: t.fileHandleId,
46
+ eDucTemplateId: void 0
41
47
  });
42
- } else !e.success && e.error && M(`${C} ${e.error.reason}`);
43
- }, { mutate: V, isPending: H, error: U } = i({
44
- onSuccess: () => D(),
45
- onError: () => O()
48
+ } else !e.success && e.error && P(`${T} ${e.error.reason}`);
49
+ }, { mutate: Y, isPending: X, error: Z } = i({
50
+ onSuccess: () => k(),
51
+ onError: () => A()
46
52
  });
47
- return u(T, () => ({ save() {
48
- if (F) {
49
- let e = w(L);
50
- typeof e == "string" ? (P(e), O()) : V({
51
- ...F,
53
+ return d(D, () => ({ save() {
54
+ if (L) {
55
+ let e = E(z);
56
+ typeof e == "string" ? (I(e), A()) : Y({
57
+ ...L,
52
58
  expirationPeriod: e
53
59
  });
54
60
  }
55
61
  } }), [
62
+ z,
56
63
  L,
57
- F,
58
- V,
59
- O
60
- ]), F ? /* @__PURE__ */ x(y, { children: [
61
- /* @__PURE__ */ b(o, { accessRequirement: F }),
62
- /* @__PURE__ */ x(m, { children: [/* @__PURE__ */ b(v, {
64
+ Y,
65
+ A
66
+ ]), L ? /* @__PURE__ */ C(x, { children: [
67
+ /* @__PURE__ */ S(s, { accessRequirement: L }),
68
+ /* @__PURE__ */ C(g, { children: [/* @__PURE__ */ S(b, {
63
69
  sx: {
64
70
  bgcolor: "#f5f5f5",
65
71
  borderBottom: "1px solid #ddd",
@@ -68,103 +74,125 @@ var C = "There was an error uploading the DUC template. ", w = (t) => {
68
74
  py: 1
69
75
  },
70
76
  children: "Data Access Request Parameters"
71
- }), /* @__PURE__ */ x(m, {
77
+ }), /* @__PURE__ */ C(g, {
72
78
  sx: {
73
79
  mt: 2,
74
80
  mb: 4
75
81
  },
76
- children: [/* @__PURE__ */ b(s, {
77
- accessRequirement: F,
78
- onChange: (e) => I(e)
79
- }), /* @__PURE__ */ x(m, {
82
+ children: [/* @__PURE__ */ S(c, {
83
+ accessRequirement: L,
84
+ onChange: (e) => R(e)
85
+ }), /* @__PURE__ */ C(g, {
80
86
  sx: { mb: 2 },
81
87
  children: [
82
- /* @__PURE__ */ b(v, {
88
+ /* @__PURE__ */ S(b, {
83
89
  variant: "body1",
84
90
  sx: { fontWeight: 700 },
85
91
  children: "DUC"
86
92
  }),
87
- /* @__PURE__ */ b(g, {
88
- control: /* @__PURE__ */ b(h, {}),
93
+ /* @__PURE__ */ S(v, {
94
+ control: /* @__PURE__ */ S(_, {}),
89
95
  label: "DUC is required.",
90
- checked: F.isDUCRequired,
91
- onChange: (e, t) => I({
92
- ...F,
96
+ checked: L.isDUCRequired,
97
+ onChange: (e, t) => R({
98
+ ...L,
93
99
  isDUCRequired: t
94
100
  })
95
101
  }),
96
- /* @__PURE__ */ x(t, { children: [/* @__PURE__ */ b(a, {
102
+ /* @__PURE__ */ C(t, { children: [/* @__PURE__ */ S(o, {
97
103
  id: "duc",
98
- isLoading: H,
99
- uploadCallback: (e) => B(e),
104
+ isLoading: X,
105
+ disabled: !L.isDUCRequired,
106
+ uploadCallback: (e) => J(e),
100
107
  documentName: "Template DUC",
101
- fileHandleAssociations: z ? [z] : void 0,
108
+ fileHandleAssociations: V ? [V] : void 0,
102
109
  isMultiFileUpload: !1,
103
110
  uploadBtnVariant: "contained"
104
- }), j && /* @__PURE__ */ b(p, {
111
+ }), N && /* @__PURE__ */ S(m, {
105
112
  severity: "error",
106
113
  sx: { marginTop: 2 },
107
- children: j
114
+ children: N
108
115
  })] }),
109
- /* @__PURE__ */ b(g, {
116
+ /* @__PURE__ */ S(g, {
117
+ sx: { mt: 2 },
118
+ children: /* @__PURE__ */ S(h, {
119
+ id: "eDucTemplate",
120
+ options: K,
121
+ loading: U,
122
+ disabled: !L.isDUCRequired,
123
+ value: q,
124
+ onChange: (e, t) => R({
125
+ ...L,
126
+ eDucTemplateId: t?.templateId
127
+ }),
128
+ getOptionLabel: (e) => e.name ?? "",
129
+ isOptionEqualToValue: (e, t) => e.templateId === t.templateId,
130
+ renderInput: (e) => /* @__PURE__ */ S(y, {
131
+ ...e,
132
+ label: "eDUC template (electronic signing)",
133
+ helperText: "Optional. Select a DocuSign template to enable the eDUC signing flow for this Access Requirement."
134
+ })
135
+ })
136
+ }),
137
+ /* @__PURE__ */ S(v, {
110
138
  label: "IRB approval is required.",
111
- checked: F.isIRBApprovalRequired,
112
- control: /* @__PURE__ */ b(h, {}),
113
- onChange: (e, t) => I({
114
- ...F,
139
+ checked: L.isIRBApprovalRequired,
140
+ control: /* @__PURE__ */ S(_, {}),
141
+ onChange: (e, t) => R({
142
+ ...L,
115
143
  isIRBApprovalRequired: t
116
144
  }),
117
145
  sx: { ml: 0 }
118
146
  }),
119
- /* @__PURE__ */ b(g, {
120
- control: /* @__PURE__ */ b(h, {}),
147
+ /* @__PURE__ */ S(v, {
148
+ control: /* @__PURE__ */ S(_, {}),
121
149
  label: "Other documents are required.",
122
- checked: F.areOtherAttachmentsRequired,
123
- onChange: (e, t) => I({
124
- ...F,
150
+ checked: L.areOtherAttachmentsRequired,
151
+ onChange: (e, t) => R({
152
+ ...L,
125
153
  areOtherAttachmentsRequired: t
126
154
  })
127
155
  }),
128
- /* @__PURE__ */ b(_, {
156
+ /* @__PURE__ */ S(y, {
129
157
  id: "expirationPeriod",
130
158
  name: "expirationPeriod",
131
159
  label: "Expiration period (days)",
132
- value: L,
133
- error: !!N,
134
- helperText: N,
160
+ value: z,
161
+ error: !!F,
162
+ helperText: F,
135
163
  sx: { mt: 1 },
136
164
  fullWidth: !0,
137
165
  onChange: (e) => {
138
- P(null), R(e.target.value);
166
+ I(null), B(e.target.value);
139
167
  },
140
168
  onBlur: () => {
141
- let e = w(L);
142
- typeof e == "string" && P(e);
169
+ let e = E(z);
170
+ typeof e == "string" && I(e);
143
171
  }
144
172
  }),
145
- /* @__PURE__ */ x(m, {
173
+ /* @__PURE__ */ C(g, {
146
174
  sx: { mt: 1 },
147
- children: [/* @__PURE__ */ b(g, {
148
- control: /* @__PURE__ */ b(h, {}),
175
+ children: [/* @__PURE__ */ S(v, {
176
+ control: /* @__PURE__ */ S(_, {}),
149
177
  label: "Intended Data Use statement is required.",
150
- checked: F.isIDURequired,
178
+ checked: L.isIDURequired,
151
179
  onChange: (e, t) => {
152
- I(t ? {
153
- ...F,
180
+ R(t ? {
181
+ ...L,
154
182
  isIDURequired: !0
155
183
  } : {
156
- ...F,
184
+ ...L,
157
185
  isIDURequired: !1,
158
186
  isIDUPublic: !1
159
187
  });
160
188
  }
161
- }), /* @__PURE__ */ b(g, {
162
- control: /* @__PURE__ */ b(h, {}),
189
+ }), /* @__PURE__ */ S(v, {
190
+ control: /* @__PURE__ */ S(_, {}),
163
191
  label: "Intended Data Use statements will be publicly available.",
164
- checked: F.isIDUPublic,
165
- disabled: !F.isIDURequired,
166
- onChange: (e, t) => I({
167
- ...F,
192
+ checked: L.isIDUPublic,
193
+ disabled: !L.isIDURequired,
194
+ onChange: (e, t) => R({
195
+ ...L,
168
196
  isIDUPublic: t
169
197
  })
170
198
  })]
@@ -172,17 +200,17 @@ var C = "There was an error uploading the DUC template. ", w = (t) => {
172
200
  ]
173
201
  })]
174
202
  })] }),
175
- U && /* @__PURE__ */ b(p, {
203
+ Z && /* @__PURE__ */ S(m, {
176
204
  severity: "error",
177
205
  sx: { marginTop: 2 },
178
- children: U.reason
206
+ children: Z.reason
179
207
  })
180
- ] }) : A ? /* @__PURE__ */ b(p, {
208
+ ] }) : M ? /* @__PURE__ */ S(m, {
181
209
  severity: "error",
182
- children: A.reason
183
- }) : /* @__PURE__ */ b(n, {});
210
+ children: M.reason
211
+ }) : /* @__PURE__ */ S(n, {});
184
212
  });
185
213
  //#endregion
186
- export { C as DUC_TEMPLATE_UPLOAD_ERROR, T as SetManagedAccessRequirementFields, w as getValidExpirationPeriodOrErrorMessage };
214
+ export { T as DUC_TEMPLATE_UPLOAD_ERROR, D as SetManagedAccessRequirementFields, E as getValidExpirationPeriodOrErrorMessage };
187
215
 
188
216
  //# sourceMappingURL=SetManagedAccessRequirementFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetManagedAccessRequirementFields.js","names":[],"sources":["../../../src/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.tsx"],"sourcesContent":["import {\n useGetAccessRequirements,\n useUpdateAccessRequirement,\n} from '@/synapse-queries'\nimport { DAY_IN_MS } from '@/utils/SynapseConstants'\nimport {\n Alert,\n Box,\n Checkbox,\n FormControlLabel,\n TextField,\n Typography,\n} from '@mui/material'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { UploadDocumentField } from '../AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport {\n AccessorRequirements,\n AccessRequirementWikiInstructions,\n} from '../SetBasicAccessRequirementFields'\n\nexport const DUC_TEMPLATE_UPLOAD_ERROR =\n 'There was an error uploading the DUC template. '\n\nexport const getValidExpirationPeriodOrErrorMessage = (\n expirationPeriodDays: string,\n) => {\n if (expirationPeriodDays === '') return 0\n\n const msgPrefix = 'Please enter a valid expiration period (in days): '\n if (/^[-]?\\d+$/.test(expirationPeriodDays)) {\n const num = Number(expirationPeriodDays)\n if (num < 0) {\n return `${msgPrefix}If expiration period is set, then it must be greater than 0.`\n }\n return num * DAY_IN_MS\n }\n return `${msgPrefix}For input string: \"${expirationPeriodDays}\"`\n}\n\nexport type SetManagedAccessRequirementFieldsHandle = {\n /* Allow the parent component to trigger saving the AR, so this may be embedded in an arbitrary modal. */\n save: () => void\n}\n\nexport type SetManagedAccessRequirementFieldsProps = {\n accessRequirementId: string\n /* Called when AR has been saved successfully */\n onSave: () => void\n /* Called when error saving AR */\n onError: () => void\n}\n\nexport const SetManagedAccessRequirementFields = forwardRef(\n function SetManagedAccessRequirementFields(\n props: SetManagedAccessRequirementFieldsProps,\n ref: ForwardedRef<SetManagedAccessRequirementFieldsHandle>,\n ) {\n const { accessRequirementId, onSave, onError } = props\n\n const { data: accessRequirement, error: getArError } =\n useGetAccessRequirements<ManagedACTAccessRequirement>(\n accessRequirementId,\n { staleTime: Infinity },\n )\n useEffect(() => {\n if (accessRequirement) {\n setUpdatedAr(accessRequirement)\n setExpirationPeriodDays(\n (accessRequirement.expirationPeriod / DAY_IN_MS).toString(),\n )\n }\n }, [accessRequirement])\n\n const [uploadDucTemplateError, setUploadDucTemplateError] = useState<\n string | null\n >(null)\n const [expirationPeriodError, setExpirationPeriodError] = useState<\n string | null\n >(null)\n\n const [updatedAr, setUpdatedAr] =\n useState<ManagedACTAccessRequirement | null>(null)\n const [expirationPeriodDays, setExpirationPeriodDays] = useState<string>('')\n\n const ducTemplateFileHandleAssociation = useMemo(() => {\n if (updatedAr?.ducTemplateFileHandleId) {\n const ducTemplateFileHandleAssociation: FileHandleAssociation = {\n fileHandleId: updatedAr.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: updatedAr.id.toString(),\n }\n return ducTemplateFileHandleAssociation\n }\n return undefined\n }, [updatedAr?.ducTemplateFileHandleId, updatedAr?.id])\n\n const uploadDucTemplateCallback = (data: UploadCallbackResp) => {\n if (data.resp && data.success && updatedAr) {\n setUploadDucTemplateError(null)\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n setUpdatedAr({\n ...updatedAr,\n ducTemplateFileHandleId: uploadResponse.fileHandleId,\n })\n } else if (!data.success && data.error) {\n setUploadDucTemplateError(\n `${DUC_TEMPLATE_UPLOAD_ERROR} ${\n (data.error as SynapseClientError).reason\n }`,\n )\n }\n }\n\n const {\n mutate: updateAccessRequirement,\n isPending: isUpdatingAccessRequirement,\n error: updateArError,\n } = useUpdateAccessRequirement<ManagedACTAccessRequirement>({\n onSuccess: () => onSave(),\n onError: () => onError(),\n })\n\n useImperativeHandle(ref, () => {\n return {\n save() {\n if (updatedAr) {\n const expirationPeriodOrErrorMessage =\n getValidExpirationPeriodOrErrorMessage(expirationPeriodDays)\n if (typeof expirationPeriodOrErrorMessage === 'string') {\n setExpirationPeriodError(expirationPeriodOrErrorMessage)\n onError()\n } else {\n updateAccessRequirement({\n ...updatedAr,\n expirationPeriod: expirationPeriodOrErrorMessage,\n })\n }\n }\n },\n }\n }, [expirationPeriodDays, updatedAr, updateAccessRequirement, onError])\n\n if (!updatedAr) {\n if (getArError) {\n return <Alert severity=\"error\">{getArError.reason}</Alert>\n } else {\n return <SynapseSpinner />\n }\n }\n\n return (\n <>\n <AccessRequirementWikiInstructions accessRequirement={updatedAr} />\n <Box>\n <Typography\n sx={{\n bgcolor: '#f5f5f5',\n borderBottom: '1px solid #ddd',\n color: '#333',\n px: 2,\n py: 1,\n }}\n >\n Data Access Request Parameters\n </Typography>\n <Box\n sx={{\n mt: 2,\n mb: 4,\n }}\n >\n <AccessorRequirements\n accessRequirement={updatedAr}\n onChange={updatedAr =>\n setUpdatedAr(updatedAr as ManagedACTAccessRequirement)\n }\n />\n <Box\n sx={{\n mb: 2,\n }}\n >\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 700,\n }}\n >\n DUC\n </Typography>\n <FormControlLabel\n control={<Checkbox />}\n label=\"DUC is required.\"\n checked={updatedAr.isDUCRequired}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n isDUCRequired: checked,\n })\n }\n />\n <SynapseErrorBoundary>\n <UploadDocumentField\n id=\"duc\"\n isLoading={isUpdatingAccessRequirement}\n uploadCallback={resp => uploadDucTemplateCallback(resp)}\n documentName=\"Template DUC\"\n fileHandleAssociations={\n ducTemplateFileHandleAssociation\n ? [ducTemplateFileHandleAssociation]\n : undefined\n }\n isMultiFileUpload={false}\n uploadBtnVariant=\"contained\"\n />\n {uploadDucTemplateError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {uploadDucTemplateError}\n </Alert>\n )}\n </SynapseErrorBoundary>\n <FormControlLabel\n label=\"IRB approval is required.\"\n checked={updatedAr.isIRBApprovalRequired}\n control={<Checkbox />}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n isIRBApprovalRequired: checked,\n })\n }\n sx={{ ml: 0 }}\n />\n <FormControlLabel\n control={<Checkbox />}\n label=\"Other documents are required.\"\n checked={updatedAr.areOtherAttachmentsRequired}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n areOtherAttachmentsRequired: checked,\n })\n }\n />\n <TextField\n id=\"expirationPeriod\"\n name=\"expirationPeriod\"\n label=\"Expiration period (days)\"\n value={expirationPeriodDays}\n error={Boolean(expirationPeriodError)}\n helperText={expirationPeriodError}\n sx={{ mt: 1 }}\n fullWidth\n onChange={event => {\n setExpirationPeriodError(null)\n setExpirationPeriodDays(event.target.value)\n }}\n onBlur={() => {\n const expirationPeriodOrErrorMessage =\n getValidExpirationPeriodOrErrorMessage(expirationPeriodDays)\n if (typeof expirationPeriodOrErrorMessage === 'string') {\n setExpirationPeriodError(expirationPeriodOrErrorMessage)\n }\n }}\n />\n <Box\n sx={{\n mt: 1,\n }}\n >\n <FormControlLabel\n control={<Checkbox />}\n label=\"Intended Data Use statement is required.\"\n checked={updatedAr.isIDURequired}\n onChange={(_event, checked: boolean) => {\n if (checked) {\n setUpdatedAr({\n ...updatedAr,\n isIDURequired: true,\n })\n } else {\n setUpdatedAr({\n ...updatedAr,\n isIDURequired: false,\n isIDUPublic: false,\n })\n }\n }}\n />\n <FormControlLabel\n control={<Checkbox />}\n label=\"Intended Data Use statements will be publicly available.\"\n checked={updatedAr.isIDUPublic}\n disabled={!updatedAr.isIDURequired}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n isIDUPublic: checked,\n })\n }\n />\n </Box>\n </Box>\n </Box>\n </Box>\n {updateArError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {updateArError.reason}\n </Alert>\n )}\n </>\n )\n },\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"SetManagedAccessRequirementFields.js","names":[],"sources":["../../../src/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.tsx"],"sourcesContent":["import {\n useGetAccessRequirements,\n useListEDucTemplates,\n useUpdateAccessRequirement,\n} from '@/synapse-queries'\nimport { DAY_IN_MS } from '@/utils/SynapseConstants'\nimport {\n Alert,\n Autocomplete,\n Box,\n Checkbox,\n FormControlLabel,\n TextField,\n Typography,\n} from '@mui/material'\nimport { EDucTemplate } from '@sage-bionetworks/synapse-client'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport {\n FileHandleAssociateType,\n FileHandleAssociation,\n FileUploadComplete,\n ManagedACTAccessRequirement,\n UploadCallbackResp,\n} from '@sage-bionetworks/synapse-types'\nimport {\n ForwardedRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport { UploadDocumentField } from '../AccessRequirementList/ManagedACTAccessRequirementRequestFlow/UploadDocumentField'\nimport { SynapseErrorBoundary } from '../error/ErrorBanner'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport {\n AccessorRequirements,\n AccessRequirementWikiInstructions,\n} from '../SetBasicAccessRequirementFields'\n\nexport const DUC_TEMPLATE_UPLOAD_ERROR =\n 'There was an error uploading the DUC template. '\n\nexport const getValidExpirationPeriodOrErrorMessage = (\n expirationPeriodDays: string,\n) => {\n if (expirationPeriodDays === '') return 0\n\n const msgPrefix = 'Please enter a valid expiration period (in days): '\n if (/^[-]?\\d+$/.test(expirationPeriodDays)) {\n const num = Number(expirationPeriodDays)\n if (num < 0) {\n return `${msgPrefix}If expiration period is set, then it must be greater than 0.`\n }\n return num * DAY_IN_MS\n }\n return `${msgPrefix}For input string: \"${expirationPeriodDays}\"`\n}\n\nexport type SetManagedAccessRequirementFieldsHandle = {\n /* Allow the parent component to trigger saving the AR, so this may be embedded in an arbitrary modal. */\n save: () => void\n}\n\nexport type SetManagedAccessRequirementFieldsProps = {\n accessRequirementId: string\n /* Called when AR has been saved successfully */\n onSave: () => void\n /* Called when error saving AR */\n onError: () => void\n}\n\nexport const SetManagedAccessRequirementFields = forwardRef(\n function SetManagedAccessRequirementFields(\n props: SetManagedAccessRequirementFieldsProps,\n ref: ForwardedRef<SetManagedAccessRequirementFieldsHandle>,\n ) {\n const { accessRequirementId, onSave, onError } = props\n\n const { data: accessRequirement, error: getArError } =\n useGetAccessRequirements<ManagedACTAccessRequirement>(\n accessRequirementId,\n { staleTime: Infinity },\n )\n useEffect(() => {\n if (accessRequirement) {\n setUpdatedAr(accessRequirement)\n setExpirationPeriodDays(\n (accessRequirement.expirationPeriod / DAY_IN_MS).toString(),\n )\n }\n }, [accessRequirement])\n\n const [uploadDucTemplateError, setUploadDucTemplateError] = useState<\n string | null\n >(null)\n const [expirationPeriodError, setExpirationPeriodError] = useState<\n string | null\n >(null)\n\n const [updatedAr, setUpdatedAr] =\n useState<ManagedACTAccessRequirement | null>(null)\n const [expirationPeriodDays, setExpirationPeriodDays] = useState<string>('')\n\n const ducTemplateFileHandleAssociation = useMemo(() => {\n if (updatedAr?.ducTemplateFileHandleId) {\n const ducTemplateFileHandleAssociation: FileHandleAssociation = {\n fileHandleId: updatedAr.ducTemplateFileHandleId,\n associateObjectType:\n FileHandleAssociateType.AccessRequirementAttachment,\n associateObjectId: updatedAr.id.toString(),\n }\n return ducTemplateFileHandleAssociation\n }\n return undefined\n }, [updatedAr?.ducTemplateFileHandleId, updatedAr?.id])\n\n const {\n data: eDucTemplateData,\n isLoading: isLoadingEDucTemplates,\n hasNextPage: hasNextEDucTemplatePage,\n fetchNextPage: fetchNextEDucTemplatePage,\n } = useListEDucTemplates()\n // Auto-fetch all pages so the dropdown always shows the complete template list.\n useEffect(() => {\n if (hasNextEDucTemplatePage) {\n void fetchNextEDucTemplatePage()\n }\n }, [hasNextEDucTemplatePage, fetchNextEDucTemplatePage])\n const eDucTemplates = useMemo(\n () => eDucTemplateData?.pages.flatMap(page => page.results ?? []) ?? [],\n [eDucTemplateData],\n )\n const selectedEDucTemplate = useMemo(\n () =>\n eDucTemplates.find(\n template => template.templateId === updatedAr?.eDucTemplateId,\n ) ?? null,\n [eDucTemplates, updatedAr?.eDucTemplateId],\n )\n\n const uploadDucTemplateCallback = (data: UploadCallbackResp) => {\n if (data.resp && data.success && updatedAr) {\n setUploadDucTemplateError(null)\n // Files are uploaded and synced with the server immediately\n const uploadResponse: FileUploadComplete = data.resp\n setUpdatedAr({\n ...updatedAr,\n ducTemplateFileHandleId: uploadResponse.fileHandleId,\n eDucTemplateId: undefined, // mutually exclusive with file upload\n })\n } else if (!data.success && data.error) {\n setUploadDucTemplateError(\n `${DUC_TEMPLATE_UPLOAD_ERROR} ${\n (data.error as SynapseClientError).reason\n }`,\n )\n }\n }\n\n const {\n mutate: updateAccessRequirement,\n isPending: isUpdatingAccessRequirement,\n error: updateArError,\n } = useUpdateAccessRequirement<ManagedACTAccessRequirement>({\n onSuccess: () => onSave(),\n onError: () => onError(),\n })\n\n useImperativeHandle(ref, () => {\n return {\n save() {\n if (updatedAr) {\n const expirationPeriodOrErrorMessage =\n getValidExpirationPeriodOrErrorMessage(expirationPeriodDays)\n if (typeof expirationPeriodOrErrorMessage === 'string') {\n setExpirationPeriodError(expirationPeriodOrErrorMessage)\n onError()\n } else {\n updateAccessRequirement({\n ...updatedAr,\n expirationPeriod: expirationPeriodOrErrorMessage,\n })\n }\n }\n },\n }\n }, [expirationPeriodDays, updatedAr, updateAccessRequirement, onError])\n\n if (!updatedAr) {\n if (getArError) {\n return <Alert severity=\"error\">{getArError.reason}</Alert>\n } else {\n return <SynapseSpinner />\n }\n }\n\n return (\n <>\n <AccessRequirementWikiInstructions accessRequirement={updatedAr} />\n <Box>\n <Typography\n sx={{\n bgcolor: '#f5f5f5',\n borderBottom: '1px solid #ddd',\n color: '#333',\n px: 2,\n py: 1,\n }}\n >\n Data Access Request Parameters\n </Typography>\n <Box\n sx={{\n mt: 2,\n mb: 4,\n }}\n >\n <AccessorRequirements\n accessRequirement={updatedAr}\n onChange={updatedAr =>\n setUpdatedAr(updatedAr as ManagedACTAccessRequirement)\n }\n />\n <Box\n sx={{\n mb: 2,\n }}\n >\n <Typography\n variant=\"body1\"\n sx={{\n fontWeight: 700,\n }}\n >\n DUC\n </Typography>\n <FormControlLabel\n control={<Checkbox />}\n label=\"DUC is required.\"\n checked={updatedAr.isDUCRequired}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n isDUCRequired: checked,\n })\n }\n />\n <SynapseErrorBoundary>\n <UploadDocumentField\n id=\"duc\"\n isLoading={isUpdatingAccessRequirement}\n disabled={!updatedAr.isDUCRequired}\n uploadCallback={resp => uploadDucTemplateCallback(resp)}\n documentName=\"Template DUC\"\n fileHandleAssociations={\n ducTemplateFileHandleAssociation\n ? [ducTemplateFileHandleAssociation]\n : undefined\n }\n isMultiFileUpload={false}\n uploadBtnVariant=\"contained\"\n />\n {uploadDucTemplateError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {uploadDucTemplateError}\n </Alert>\n )}\n </SynapseErrorBoundary>\n <Box sx={{ mt: 2 }}>\n <Autocomplete<EDucTemplate>\n id=\"eDucTemplate\"\n options={eDucTemplates}\n loading={isLoadingEDucTemplates}\n disabled={!updatedAr.isDUCRequired}\n value={selectedEDucTemplate}\n onChange={(_event, template) =>\n setUpdatedAr({\n ...updatedAr,\n eDucTemplateId: template?.templateId,\n })\n }\n getOptionLabel={template => template.name ?? ''}\n isOptionEqualToValue={(option, value) =>\n option.templateId === value.templateId\n }\n renderInput={params => (\n <TextField\n {...params}\n label=\"eDUC template (electronic signing)\"\n helperText=\"Optional. Select a DocuSign template to enable the eDUC signing flow for this Access Requirement.\"\n />\n )}\n />\n </Box>\n <FormControlLabel\n label=\"IRB approval is required.\"\n checked={updatedAr.isIRBApprovalRequired}\n control={<Checkbox />}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n isIRBApprovalRequired: checked,\n })\n }\n sx={{ ml: 0 }}\n />\n <FormControlLabel\n control={<Checkbox />}\n label=\"Other documents are required.\"\n checked={updatedAr.areOtherAttachmentsRequired}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n areOtherAttachmentsRequired: checked,\n })\n }\n />\n <TextField\n id=\"expirationPeriod\"\n name=\"expirationPeriod\"\n label=\"Expiration period (days)\"\n value={expirationPeriodDays}\n error={Boolean(expirationPeriodError)}\n helperText={expirationPeriodError}\n sx={{ mt: 1 }}\n fullWidth\n onChange={event => {\n setExpirationPeriodError(null)\n setExpirationPeriodDays(event.target.value)\n }}\n onBlur={() => {\n const expirationPeriodOrErrorMessage =\n getValidExpirationPeriodOrErrorMessage(expirationPeriodDays)\n if (typeof expirationPeriodOrErrorMessage === 'string') {\n setExpirationPeriodError(expirationPeriodOrErrorMessage)\n }\n }}\n />\n <Box\n sx={{\n mt: 1,\n }}\n >\n <FormControlLabel\n control={<Checkbox />}\n label=\"Intended Data Use statement is required.\"\n checked={updatedAr.isIDURequired}\n onChange={(_event, checked: boolean) => {\n if (checked) {\n setUpdatedAr({\n ...updatedAr,\n isIDURequired: true,\n })\n } else {\n setUpdatedAr({\n ...updatedAr,\n isIDURequired: false,\n isIDUPublic: false,\n })\n }\n }}\n />\n <FormControlLabel\n control={<Checkbox />}\n label=\"Intended Data Use statements will be publicly available.\"\n checked={updatedAr.isIDUPublic}\n disabled={!updatedAr.isIDURequired}\n onChange={(_event, checked: boolean) =>\n setUpdatedAr({\n ...updatedAr,\n isIDUPublic: checked,\n })\n }\n />\n </Box>\n </Box>\n </Box>\n </Box>\n {updateArError && (\n <Alert severity=\"error\" sx={{ marginTop: 2 }}>\n {updateArError.reason}\n </Alert>\n )}\n </>\n )\n },\n)\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StorybookComponentWrapper.d.ts","sourceRoot":"","sources":["../../src/components/StorybookComponentWrapper.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAa,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAIvE,OAAO,EACL,SAAS,EAOV,MAAM,OAAO,CAAA;AAoBd;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,QAAQ,EAAE,SAAS,CAAA;IAEnB,gBAAgB,EAAE;QAChB,IAAI,EAAE;YACJ,eAAe,CAAC,EAAE,OAAO,CAAA;SAC1B,CAAA;QACD,OAAO,EAAE;YACP,KAAK,CAAC,EAAE,YAAY,CAAA;YACpB,sBAAsB,CAAC,EAAE,OAAO,CAAA;SACjC,CAAA;QACD,UAAU,EAAE;YACV,KAAK,CAAC,EAAE,YAAY,CAAA;YACpB,UAAU,CAAC,EAAE,OAAO,CAAA;YACpB,YAAY,CAAC,EAAE,OAAO,CAAA;SACvB,CAAA;KACF,CAAA;CACF,2CA4KA;AAED,eAAe,yBAAyB,CAAA"}
1
+ {"version":3,"file":"StorybookComponentWrapper.d.ts","sourceRoot":"","sources":["../../src/components/StorybookComponentWrapper.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAa,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAIvE,OAAO,EACL,SAAS,EAOV,MAAM,OAAO,CAAA;AAoBd;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,QAAQ,EAAE,SAAS,CAAA;IAEnB,gBAAgB,EAAE;QAChB,IAAI,EAAE;YACJ,eAAe,CAAC,EAAE,OAAO,CAAA;SAC1B,CAAA;QACD,OAAO,EAAE;YACP,KAAK,CAAC,EAAE,YAAY,CAAA;YACpB,sBAAsB,CAAC,EAAE,OAAO,CAAA;SACjC,CAAA;QACD,UAAU,EAAE;YACV,KAAK,CAAC,EAAE,YAAY,CAAA;YACpB,UAAU,CAAC,EAAE,OAAO,CAAA;YACpB,YAAY,CAAC,EAAE,OAAO,CAAA;SACvB,CAAA;KACF,CAAA;CACF,2CA2KA;AAED,eAAe,yBAAyB,CAAA"}
@@ -26,9 +26,7 @@ function w(e) {
26
26
  }
27
27
  function T(t) {
28
28
  let { storybookContext: o } = t, s = o.globals.stack || o.parameters.stack;
29
- d(() => {
30
- w(s);
31
- }, [s]);
29
+ w(s);
32
30
  let _ = m(C.subscribe, C.getSnapshot), T = p(!1);
33
31
  d(() => (T.current ||= (C.start(), !0), () => {
34
32
  C.dispose(), T.current = !1;
@@ -1 +1 @@
1
- {"version":3,"file":"StorybookComponentWrapper.js","names":[],"sources":["../../src/components/StorybookComponentWrapper.tsx"],"sourcesContent":["import { StandaloneLoginForm } from '@/components/Authentication/index'\nimport SynapseClient from '@/synapse-client'\nimport {\n defaultQueryClientConfig,\n SynapseContextProvider,\n SynapseContextType,\n} from '@/utils'\nimport { ApplicationSessionContextProvider } from '@/utils/AppUtils/session/ApplicationSessionContext'\nimport {\n SynapseSessionManager,\n type SessionState,\n} from '@/utils/AppUtils/session/SynapseSessionManager'\nimport { STACK_MAP, SynapseStack } from '@/utils/functions/getEndpoint'\nimport useDetectSSOCode from '@/utils/hooks/useDetectSSOCode'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\nimport {\n ReactNode,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from 'react'\nimport { createMemoryRouter } from 'react-router'\nimport { RouterProvider } from 'react-router/dom'\nimport { SynapseToastContainer } from './ToastMessage'\n\nconst storybookQueryClient = new QueryClient(defaultQueryClientConfig)\n\n// Module-level session manager instance, stable across story switches (like the QueryClient above)\nconst sessionManager = new SynapseSessionManager({\n onSessionInvalid: () => {\n // In Storybook, just refresh the session instead of reloading the page\n sessionManager.refreshSession()\n },\n})\n\nfunction overrideEndpoint(stack: SynapseStack) {\n const endpointConfig = STACK_MAP[stack]\n ;(window as any)['SRC_OVERRIDE_ENDPOINT_CONFIG'] = endpointConfig\n}\n\n/**\n * Wraps storybook story components to ensure that all components receive required context.\n * @param props\n * @returns\n */\nexport function StorybookComponentWrapper(props: {\n children: ReactNode\n /* This will match the `globalTypes` object in preview.tsx. */\n storybookContext: {\n args: {\n isAuthenticated?: boolean\n }\n globals: {\n stack?: SynapseStack\n showReactQueryDevtools?: boolean\n }\n parameters: {\n stack?: SynapseStack\n withRouter?: boolean\n requireLogin?: boolean\n }\n }\n}) {\n const { storybookContext } = props\n\n const currentStack: SynapseStack = (storybookContext.globals.stack ||\n storybookContext.parameters.stack) as SynapseStack\n\n useEffect(() => {\n overrideEndpoint(currentStack)\n }, [currentStack])\n\n // Subscribe to the framework-agnostic SynapseSessionManager for token/auth state\n // These methods are bound in the SynapseSessionManager constructor, so they are safe to pass directly.\n const sessionState: SessionState = useSyncExternalStore(\n // oxlint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.subscribe,\n // oxlint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.getSnapshot,\n )\n\n // Track whether we've started the manager so we only start once (module-level instance persists across renders)\n const managerStartedRef = useRef(false)\n\n useEffect(() => {\n if (!managerStartedRef.current) {\n sessionManager.start()\n managerStartedRef.current = true\n }\n return () => {\n sessionManager.dispose()\n managerStartedRef.current = false\n }\n }, [])\n\n // When the stack changes, restart the session manager to pick up the new endpoint\n useEffect(() => {\n if (managerStartedRef.current) {\n sessionManager.dispose()\n sessionManager.start()\n }\n }, [currentStack])\n\n const shouldPromptForLogin =\n storybookContext.parameters.requireLogin &&\n currentStack !== 'mock' &&\n sessionState.hasInitializedSession &&\n !sessionState.isAuthenticated\n\n const { isLoading: isLoadingSSO } = useDetectSSOCode({\n onSignInComplete: () => {\n void sessionManager.refreshSession()\n },\n onError: (err: unknown) => {\n console.error('SSO error in Storybook:', err)\n },\n isInitializingSession: !sessionState.hasInitializedSession,\n isAuthenticated: sessionState.isAuthenticated,\n })\n\n useEffect(() => {\n async function resetCache() {\n await storybookQueryClient.cancelQueries()\n await storybookQueryClient.resetQueries()\n }\n\n void resetCache()\n }, [sessionState.token, currentStack])\n\n const effectiveToken = useMemo(() => {\n if (currentStack === 'mock') {\n return storybookContext.args.isAuthenticated ? 'fake token' : undefined\n }\n return sessionState.token\n }, [sessionState.token, currentStack, storybookContext.args.isAuthenticated])\n\n const effectiveIsAuthenticated = useMemo(() => {\n if (currentStack === 'mock') {\n return !!storybookContext.args.isAuthenticated\n }\n return sessionState.isAuthenticated\n }, [\n sessionState.isAuthenticated,\n currentStack,\n storybookContext.args.isAuthenticated,\n ])\n\n const refreshSession = useCallback(async () => {\n await sessionManager.refreshSession()\n }, [])\n\n const clearSession = useCallback(async () => {\n await sessionManager.clearSession()\n }, [])\n\n const applicationSessionContext = useMemo(\n () => ({\n token: effectiveToken,\n realmId: sessionState.realmId,\n userId: sessionState.userId,\n isAuthenticated: effectiveIsAuthenticated,\n hasInitializedSession: sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n twoFactorAuthSSOErrorResponse: undefined,\n termsOfServiceStatus: undefined,\n twoFactorStatus: undefined,\n }),\n [\n effectiveToken,\n effectiveIsAuthenticated,\n sessionState.realmId,\n sessionState.userId,\n sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n ],\n )\n\n const synapseContext: Partial<SynapseContextType> = useMemo(\n () => ({\n accessToken: effectiveToken,\n isAuthenticated: effectiveIsAuthenticated,\n isInExperimentalMode: SynapseClient.isInSynapseExperimentalMode(),\n utcTime: SynapseClient.getUseUtcTimeFromCookie(),\n withErrorBoundary: true,\n downloadCartPageUrl: '/?path=/story/download-downloadcartpage--demo',\n }),\n [effectiveToken, effectiveIsAuthenticated],\n )\n\n const wrappedStory = (\n <Suspense fallback={'global suspense loading...'}>\n <QueryClientProvider client={storybookQueryClient}>\n <ApplicationSessionContextProvider context={applicationSessionContext}>\n <SynapseContextProvider\n key={currentStack}\n synapseContext={synapseContext}\n >\n {storybookContext.globals.showReactQueryDevtools && (\n <ReactQueryDevtools />\n )}\n <SynapseToastContainer />\n <main>\n {shouldPromptForLogin ? (\n <StandaloneLoginForm\n sessionCallback={() => {\n void sessionManager.refreshSession()\n }}\n />\n ) : (\n props.children\n )}\n </main>\n </SynapseContextProvider>\n </ApplicationSessionContextProvider>\n </QueryClientProvider>\n </Suspense>\n )\n\n if (!storybookContext.parameters.withRouter) {\n return wrappedStory\n }\n\n const router = createMemoryRouter([\n {\n path: '/',\n element: wrappedStory,\n },\n ])\n\n return <RouterProvider router={router} />\n}\n\nexport default StorybookComponentWrapper\n"],"mappings":"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"}
1
+ {"version":3,"file":"StorybookComponentWrapper.js","names":[],"sources":["../../src/components/StorybookComponentWrapper.tsx"],"sourcesContent":["import { StandaloneLoginForm } from '@/components/Authentication/index'\nimport SynapseClient from '@/synapse-client'\nimport {\n defaultQueryClientConfig,\n SynapseContextProvider,\n SynapseContextType,\n} from '@/utils'\nimport { ApplicationSessionContextProvider } from '@/utils/AppUtils/session/ApplicationSessionContext'\nimport {\n SynapseSessionManager,\n type SessionState,\n} from '@/utils/AppUtils/session/SynapseSessionManager'\nimport { STACK_MAP, SynapseStack } from '@/utils/functions/getEndpoint'\nimport useDetectSSOCode from '@/utils/hooks/useDetectSSOCode'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\nimport {\n ReactNode,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n} from 'react'\nimport { createMemoryRouter } from 'react-router'\nimport { RouterProvider } from 'react-router/dom'\nimport { SynapseToastContainer } from './ToastMessage'\n\nconst storybookQueryClient = new QueryClient(defaultQueryClientConfig)\n\n// Module-level session manager instance, stable across story switches (like the QueryClient above)\nconst sessionManager = new SynapseSessionManager({\n onSessionInvalid: () => {\n // In Storybook, just refresh the session instead of reloading the page\n sessionManager.refreshSession()\n },\n})\n\nfunction overrideEndpoint(stack: SynapseStack) {\n const endpointConfig = STACK_MAP[stack]\n ;(window as any)['SRC_OVERRIDE_ENDPOINT_CONFIG'] = endpointConfig\n}\n\n/**\n * Wraps storybook story components to ensure that all components receive required context.\n * @param props\n * @returns\n */\nexport function StorybookComponentWrapper(props: {\n children: ReactNode\n /* This will match the `globalTypes` object in preview.tsx. */\n storybookContext: {\n args: {\n isAuthenticated?: boolean\n }\n globals: {\n stack?: SynapseStack\n showReactQueryDevtools?: boolean\n }\n parameters: {\n stack?: SynapseStack\n withRouter?: boolean\n requireLogin?: boolean\n }\n }\n}) {\n const { storybookContext } = props\n\n const currentStack: SynapseStack = (storybookContext.globals.stack ||\n storybookContext.parameters.stack) as SynapseStack\n\n // Set endpoint synchronously so SynapseContextProvider picks up the correct basePath on first render.\n overrideEndpoint(currentStack)\n\n // Subscribe to the framework-agnostic SynapseSessionManager for token/auth state\n // These methods are bound in the SynapseSessionManager constructor, so they are safe to pass directly.\n const sessionState: SessionState = useSyncExternalStore(\n // oxlint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.subscribe,\n // oxlint-disable-next-line @typescript-eslint/unbound-method\n sessionManager.getSnapshot,\n )\n\n // Track whether we've started the manager so we only start once (module-level instance persists across renders)\n const managerStartedRef = useRef(false)\n\n useEffect(() => {\n if (!managerStartedRef.current) {\n sessionManager.start()\n managerStartedRef.current = true\n }\n return () => {\n sessionManager.dispose()\n managerStartedRef.current = false\n }\n }, [])\n\n // When the stack changes, restart the session manager to pick up the new endpoint\n useEffect(() => {\n if (managerStartedRef.current) {\n sessionManager.dispose()\n sessionManager.start()\n }\n }, [currentStack])\n\n const shouldPromptForLogin =\n storybookContext.parameters.requireLogin &&\n currentStack !== 'mock' &&\n sessionState.hasInitializedSession &&\n !sessionState.isAuthenticated\n\n const { isLoading: isLoadingSSO } = useDetectSSOCode({\n onSignInComplete: () => {\n void sessionManager.refreshSession()\n },\n onError: (err: unknown) => {\n console.error('SSO error in Storybook:', err)\n },\n isInitializingSession: !sessionState.hasInitializedSession,\n isAuthenticated: sessionState.isAuthenticated,\n })\n\n useEffect(() => {\n async function resetCache() {\n await storybookQueryClient.cancelQueries()\n await storybookQueryClient.resetQueries()\n }\n\n void resetCache()\n }, [sessionState.token, currentStack])\n\n const effectiveToken = useMemo(() => {\n if (currentStack === 'mock') {\n return storybookContext.args.isAuthenticated ? 'fake token' : undefined\n }\n return sessionState.token\n }, [sessionState.token, currentStack, storybookContext.args.isAuthenticated])\n\n const effectiveIsAuthenticated = useMemo(() => {\n if (currentStack === 'mock') {\n return !!storybookContext.args.isAuthenticated\n }\n return sessionState.isAuthenticated\n }, [\n sessionState.isAuthenticated,\n currentStack,\n storybookContext.args.isAuthenticated,\n ])\n\n const refreshSession = useCallback(async () => {\n await sessionManager.refreshSession()\n }, [])\n\n const clearSession = useCallback(async () => {\n await sessionManager.clearSession()\n }, [])\n\n const applicationSessionContext = useMemo(\n () => ({\n token: effectiveToken,\n realmId: sessionState.realmId,\n userId: sessionState.userId,\n isAuthenticated: effectiveIsAuthenticated,\n hasInitializedSession: sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n twoFactorAuthSSOErrorResponse: undefined,\n termsOfServiceStatus: undefined,\n twoFactorStatus: undefined,\n }),\n [\n effectiveToken,\n effectiveIsAuthenticated,\n sessionState.realmId,\n sessionState.userId,\n sessionState.hasInitializedSession,\n refreshSession,\n clearSession,\n isLoadingSSO,\n ],\n )\n\n const synapseContext: Partial<SynapseContextType> = useMemo(\n () => ({\n accessToken: effectiveToken,\n isAuthenticated: effectiveIsAuthenticated,\n isInExperimentalMode: SynapseClient.isInSynapseExperimentalMode(),\n utcTime: SynapseClient.getUseUtcTimeFromCookie(),\n withErrorBoundary: true,\n downloadCartPageUrl: '/?path=/story/download-downloadcartpage--demo',\n }),\n [effectiveToken, effectiveIsAuthenticated],\n )\n\n const wrappedStory = (\n <Suspense fallback={'global suspense loading...'}>\n <QueryClientProvider client={storybookQueryClient}>\n <ApplicationSessionContextProvider context={applicationSessionContext}>\n <SynapseContextProvider\n key={currentStack}\n synapseContext={synapseContext}\n >\n {storybookContext.globals.showReactQueryDevtools && (\n <ReactQueryDevtools />\n )}\n <SynapseToastContainer />\n <main>\n {shouldPromptForLogin ? (\n <StandaloneLoginForm\n sessionCallback={() => {\n void sessionManager.refreshSession()\n }}\n />\n ) : (\n props.children\n )}\n </main>\n </SynapseContextProvider>\n </ApplicationSessionContextProvider>\n </QueryClientProvider>\n </Suspense>\n )\n\n if (!storybookContext.parameters.withRouter) {\n return wrappedStory\n }\n\n const router = createMemoryRouter([\n {\n path: '/',\n element: wrappedStory,\n },\n ])\n\n return <RouterProvider router={router} />\n}\n\nexport default StorybookComponentWrapper\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SynapseChat.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseChat/SynapseChat.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,uCAAuC,CAAA;AAO/E,OAAO,EACL,YAAY,EAEZ,uBAAuB,EACxB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AA4BlE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B,cAAc,CAAC,EAAE,uBAAuB,CAAA;IAExC,eAAe,CAAC,EAAE,YAAY,CAAA;IAE9B,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,KAAK,IAAI,CAAA;IAE1D,iBAAiB,CAAC,EAAE,SAAS,CAAA;IAE7B,uBAAuB,CAAC,EAAE,gBAAgB,CAAA;IAE1C,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,mDAAmD;IACnD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,mBAAmB,EACnB,WAA2B,EAC3B,WAA4B,EAC5B,SAAiB,EACjB,qBAA6B,EAC7B,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,mBAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,gBAAwB,GACzB,EAAE,gBAAgB,2CAsQlB;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"SynapseChat.d.ts","sourceRoot":"","sources":["../../../src/components/SynapseChat/SynapseChat.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,uCAAuC,CAAA;AAO/E,OAAO,EACL,YAAY,EAEZ,uBAAuB,EACxB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AA4BlE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B,cAAc,CAAC,EAAE,uBAAuB,CAAA;IAExC,eAAe,CAAC,EAAE,YAAY,CAAA;IAE9B,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,KAAK,IAAI,CAAA;IAE1D,iBAAiB,CAAC,EAAE,SAAS,CAAA;IAE7B,uBAAuB,CAAC,EAAE,gBAAgB,CAAA;IAE1C,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,mDAAmD;IACnD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,mBAAmB,EACnB,WAA2B,EAC3B,WAA4B,EAC5B,SAAiB,EACjB,qBAA6B,EAC7B,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,mBAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,gBAAwB,GACzB,EAAE,gBAAgB,2CAwQlB;AAED,eAAe,WAAW,CAAA"}