synapse-react-client 4.0.41 → 4.0.43

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 (396) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +6 -20
  3. package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
  4. package/dist/components/AccessRequirementList/AccessRequirementList.js +165 -159
  5. package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
  6. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts +3 -2
  7. package/dist/components/AccessRequirementList/AccessRequirementListItem.d.ts.map +1 -1
  8. package/dist/components/AccessRequirementList/AccessRequirementListItem.js +23 -22
  9. package/dist/components/AccessRequirementList/AccessRequirementListItem.js.map +1 -1
  10. package/dist/components/AccessRequirementList/AccessRequirementListUtils.d.ts +4 -3
  11. package/dist/components/AccessRequirementList/AccessRequirementListUtils.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js +6 -4
  13. package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
  14. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.d.ts +22 -0
  15. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.d.ts.map +1 -0
  16. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.js +166 -0
  17. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/JsonSchemaRequestWizard.js.map +1 -0
  18. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.d.ts +18 -0
  19. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.d.ts.map +1 -0
  20. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.js +91 -0
  21. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/RequesterInformationFields.js.map +1 -0
  22. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.d.ts +33 -0
  23. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.d.ts.map +1 -0
  24. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.js +49 -0
  25. package/dist/components/AccessRequirementList/JsonSchemaAccessRequirementRequestFlow/requesterInformation.js.map +1 -0
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts +7 -0
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts.map +1 -0
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +30 -0
  29. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -0
  30. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.d.ts.map +1 -1
  31. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js +26 -42
  32. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/CancelRequestDataAccess.js.map +1 -1
  33. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  34. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +97 -218
  35. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  36. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts +13 -0
  37. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts.map +1 -0
  38. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js +60 -0
  39. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js.map +1 -0
  40. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +8 -2
  41. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  42. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +177 -78
  43. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  44. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts +4 -3
  45. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts.map +1 -1
  46. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +15 -15
  47. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  48. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +3 -2
  49. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  50. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +88 -103
  51. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  52. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts +12 -0
  53. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts.map +1 -0
  54. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js +50 -0
  55. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js.map +1 -0
  56. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.d.ts.map +1 -1
  57. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js +14 -30
  58. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestDataAccessSuccess.js.map +1 -1
  59. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItem.d.ts → RequestableAccessRequirementItem.d.ts} +9 -8
  60. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.d.ts.map +1 -0
  61. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItem.js → RequestableAccessRequirementItem.js} +16 -16
  62. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItem.js.map +1 -0
  63. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItemView.d.ts → RequestableAccessRequirementItemView.d.ts} +8 -7
  64. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItemView.d.ts.map +1 -0
  65. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/{ManagedACTAccessRequirementItemView.js → RequestableAccessRequirementItemView.js} +3 -4
  66. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/RequestableAccessRequirementItemView.js.map +1 -0
  67. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  68. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +123 -170
  69. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  70. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +2 -2
  71. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -1
  72. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +35 -51
  73. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -1
  74. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +3 -2
  75. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  76. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +107 -91
  77. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  78. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts +12 -0
  79. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts.map +1 -0
  80. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js +51 -0
  81. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js.map +1 -0
  82. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts +12 -0
  83. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts.map +1 -0
  84. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js +24 -0
  85. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js.map +1 -0
  86. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +12 -0
  87. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -0
  88. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.js +0 -0
  89. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts +22 -0
  90. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts.map +1 -0
  91. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js +32 -0
  92. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js.map +1 -0
  93. package/dist/components/AccessRequirementList/RequestDataStep.d.ts +34 -0
  94. package/dist/components/AccessRequirementList/RequestDataStep.d.ts.map +1 -0
  95. package/dist/components/AccessRequirementList/RequestDataStep.js +37 -0
  96. package/dist/components/AccessRequirementList/RequestDataStep.js.map +1 -0
  97. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.d.ts +1 -1
  98. package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js.map +1 -1
  99. package/dist/components/AclEditor/AclEditor.js +20 -20
  100. package/dist/components/Authentication/TwoFactorBackupCodes.js +1 -1
  101. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  102. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  103. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +79 -69
  104. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  105. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  106. package/dist/components/DataGrid/SynapseGrid.js +244 -246
  107. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  108. package/dist/components/DataGrid/components/GridLoadingState.d.ts +23 -0
  109. package/dist/components/DataGrid/components/GridLoadingState.d.ts.map +1 -0
  110. package/dist/components/DataGrid/components/GridLoadingState.js +64 -0
  111. package/dist/components/DataGrid/components/GridLoadingState.js.map +1 -0
  112. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  113. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +30 -29
  114. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  115. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +60 -6
  116. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  117. package/dist/components/DataGrid/useDataGridWebsocket.js +71 -60
  118. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  119. package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts +11 -0
  120. package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts.map +1 -0
  121. package/dist/components/DataGrid/utils/getNamedColumnIndices.js +8 -0
  122. package/dist/components/DataGrid/utils/getNamedColumnIndices.js.map +1 -0
  123. package/dist/components/FilePreview/FileHandleContentRenderer.d.ts +6 -2
  124. package/dist/components/FilePreview/FileHandleContentRenderer.d.ts.map +1 -1
  125. package/dist/components/FilePreview/FileHandleContentRenderer.js +27 -14
  126. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  127. package/dist/components/FilePreview/PdfPreview.d.ts +1 -1
  128. package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
  129. package/dist/components/FilePreview/PdfPreview.js +15 -16
  130. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  131. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  132. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +71 -68
  133. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  134. package/dist/components/FormTemplateEditor/FieldLibrary.css +1 -0
  135. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts +17 -0
  136. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -0
  137. package/dist/components/FormTemplateEditor/FieldLibrary.js +88 -0
  138. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -0
  139. package/dist/components/FormTemplateEditor/FieldLibrary.module.js +5 -0
  140. package/dist/components/FormTemplateEditor/FieldLibrary.module.js.map +1 -0
  141. package/dist/components/FormTemplateEditor/FieldLibrary.module.scss +12 -0
  142. package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts +19 -0
  143. package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts.map +1 -0
  144. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +115 -0
  145. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -0
  146. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.css +1 -0
  147. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts +9 -0
  148. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts.map +1 -0
  149. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js +18 -0
  150. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js.map +1 -0
  151. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js +5 -0
  152. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js.map +1 -0
  153. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.scss +4 -0
  154. package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts +21 -0
  155. package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts.map +1 -0
  156. package/dist/components/FormTemplateEditor/FormStructurePanel.js +108 -0
  157. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -0
  158. package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts +10 -0
  159. package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts.map +1 -0
  160. package/dist/components/FormTemplateEditor/FormTemplateEditor.js +31 -0
  161. package/dist/components/FormTemplateEditor/FormTemplateEditor.js.map +1 -0
  162. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts +15 -0
  163. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts.map +1 -0
  164. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +234 -0
  165. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -0
  166. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -1
  167. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +29 -41
  168. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -1
  169. package/dist/components/FormTemplateEditor/StepCard.d.ts +25 -0
  170. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -0
  171. package/dist/components/FormTemplateEditor/StepCard.js +203 -0
  172. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -0
  173. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts +34 -0
  174. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -0
  175. package/dist/components/FormTemplateEditor/StepFieldRow.js +128 -0
  176. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -0
  177. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts +19 -0
  178. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -0
  179. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +78 -0
  180. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -0
  181. package/dist/components/FormTemplateEditor/dragHandle.css +1 -0
  182. package/dist/components/FormTemplateEditor/dragHandle.module.js +8 -0
  183. package/dist/components/FormTemplateEditor/dragHandle.module.js.map +1 -0
  184. package/dist/components/FormTemplateEditor/dragHandle.module.scss +22 -0
  185. package/dist/components/FormTemplateEditor/dropTarget.css +1 -0
  186. package/dist/components/FormTemplateEditor/dropTarget.module.js +5 -0
  187. package/dist/components/FormTemplateEditor/dropTarget.module.js.map +1 -0
  188. package/dist/components/FormTemplateEditor/dropTarget.module.scss +14 -0
  189. package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts +48 -0
  190. package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts.map +1 -0
  191. package/dist/components/FormTemplateEditor/formTemplateDraftState.js +126 -0
  192. package/dist/components/FormTemplateEditor/formTemplateDraftState.js.map +1 -0
  193. package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts +35 -0
  194. package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts.map +1 -0
  195. package/dist/components/FormTemplateEditor/formTemplateSchema.js +35 -0
  196. package/dist/components/FormTemplateEditor/formTemplateSchema.js.map +1 -0
  197. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +3 -1
  198. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -1
  199. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +26 -8
  200. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  201. package/dist/components/FormTemplateEditor/sortableIds.d.ts +23 -0
  202. package/dist/components/FormTemplateEditor/sortableIds.d.ts.map +1 -0
  203. package/dist/components/FormTemplateEditor/sortableIds.js +24 -0
  204. package/dist/components/FormTemplateEditor/sortableIds.js.map +1 -0
  205. package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts +33 -0
  206. package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts.map +1 -0
  207. package/dist/components/FormTemplateEditor/useFormTemplateDraft.js +59 -0
  208. package/dist/components/FormTemplateEditor/useFormTemplateDraft.js.map +1 -0
  209. package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts +9 -0
  210. package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts.map +1 -0
  211. package/dist/components/FormTemplateEditor/useFormTemplateDrag.js +66 -0
  212. package/dist/components/FormTemplateEditor/useFormTemplateDrag.js.map +1 -0
  213. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -1
  214. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +34 -19
  215. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
  216. package/dist/components/FormTemplateEditor/utils.d.ts +2 -2
  217. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -1
  218. package/dist/components/FormTemplateEditor/utils.js +7 -10
  219. package/dist/components/FormTemplateEditor/utils.js.map +1 -1
  220. package/dist/components/JsonSchemaForm/SchemaStepForm.d.ts +21 -0
  221. package/dist/components/JsonSchemaForm/SchemaStepForm.d.ts.map +1 -0
  222. package/dist/components/JsonSchemaForm/SchemaStepForm.js +29 -0
  223. package/dist/components/JsonSchemaForm/SchemaStepForm.js.map +1 -0
  224. package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts +11 -0
  225. package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts.map +1 -1
  226. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js +28 -19
  227. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  228. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +1 -0
  229. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  230. package/dist/components/QueryBuilder/FilterConditionRow.js +102 -105
  231. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  232. package/dist/components/QueryBuilder/FilterGroupNode.js +6 -6
  233. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  234. package/dist/components/QueryBuilder/QueryBuilderControls.js +88 -81
  235. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  236. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +7 -0
  237. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  238. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  239. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +2 -1
  240. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -1
  241. package/dist/components/QueryBuilder/qbTreeToReadable.js +24 -20
  242. package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -1
  243. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -1
  244. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +2 -2
  245. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -1
  246. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +1 -1
  247. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +16 -0
  248. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  249. package/dist/components/QueryBuilder/queryBuilderMetadata.js +13 -5
  250. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  251. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts +18 -0
  252. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -0
  253. package/dist/components/QueryBuilder/useQBValueDisplayName.js +64 -0
  254. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -0
  255. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.d.ts +2 -2
  256. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.d.ts.map +1 -1
  257. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js +11 -10
  258. package/dist/components/SetBasicAccessRequirementFields/GovernanceUtils.js.map +1 -1
  259. package/dist/components/SynapseForm/SynapseForm.js +28 -28
  260. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +6 -6
  261. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts +1 -0
  262. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts.map +1 -1
  263. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +13 -11
  264. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  265. package/dist/components/SynapseTable/SearchV2.js +4 -4
  266. package/dist/components/ToastMessage/ToastMessage.d.ts.map +1 -1
  267. package/dist/components/ToastMessage/ToastMessage.js +25 -22
  268. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  269. package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts +7 -0
  270. package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts.map +1 -0
  271. package/dist/components/dataaccess/FormTemplateEditorRoute.js +26 -0
  272. package/dist/components/dataaccess/FormTemplateEditorRoute.js.map +1 -0
  273. package/dist/components/dataaccess/FormTemplateTable.d.ts +10 -0
  274. package/dist/components/dataaccess/FormTemplateTable.d.ts.map +1 -0
  275. package/dist/components/dataaccess/FormTemplateTable.js +124 -0
  276. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -0
  277. package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
  278. package/dist/components/dataaccess/ReviewerDashboard.js +80 -50
  279. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  280. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  281. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +7 -4
  282. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  283. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.d.ts.map +1 -1
  284. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +5 -4
  285. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  286. package/dist/components/widgets/FileHandleLink.d.ts +12 -2
  287. package/dist/components/widgets/FileHandleLink.d.ts.map +1 -1
  288. package/dist/components/widgets/FileHandleLink.js +25 -29
  289. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  290. package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -1
  291. package/dist/features/curator/dashboard/CuratorDashboardRouter.js +15 -15
  292. package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -1
  293. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -1
  294. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +15 -14
  295. package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -1
  296. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -0
  297. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
  298. package/dist/mocks/accessRequirement/mockFormTemplates.js +8 -2
  299. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
  300. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
  301. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -1
  302. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +30 -15
  303. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -1
  304. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
  305. package/dist/mocks/accessRequirement/mockJsonSchemas.js +17 -31
  306. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
  307. package/dist/mocks/dataaccess/MockDataAccessRequest.d.ts +3 -0
  308. package/dist/mocks/dataaccess/MockDataAccessRequest.d.ts.map +1 -1
  309. package/dist/mocks/dataaccess/MockDataAccessRequest.js +24 -12
  310. package/dist/mocks/dataaccess/MockDataAccessRequest.js.map +1 -1
  311. package/dist/mocks/msw/handlers/authHandlers.d.ts +1 -0
  312. package/dist/mocks/msw/handlers/authHandlers.d.ts.map +1 -1
  313. package/dist/mocks/msw/handlers/authHandlers.js +6 -2
  314. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  315. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts +2 -0
  316. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  317. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +65 -47
  318. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  319. package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
  320. package/dist/mocks/msw/handlers/fileHandlers.js +25 -21
  321. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  322. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +2 -1
  323. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -1
  324. package/dist/mocks/msw/handlers/formTemplateHandlers.js +18 -18
  325. package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -1
  326. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +8 -0
  327. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  328. package/dist/mocks/msw/handlers/schemaHandlers.js +20 -3
  329. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  330. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts +8 -0
  331. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts.map +1 -0
  332. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js +19 -0
  333. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js.map +1 -0
  334. package/dist/style/abstracts/_cssVariables.scss +13 -0
  335. package/dist/style/components/_toasts.scss +10 -1
  336. package/dist/style/main.css +1 -1
  337. package/dist/synapse-queries/KeyFactory.d.ts +8 -1
  338. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  339. package/dist/synapse-queries/KeyFactory.js +17 -4
  340. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  341. package/dist/synapse-queries/auth/index.d.ts +1 -0
  342. package/dist/synapse-queries/auth/index.d.ts.map +1 -1
  343. package/dist/synapse-queries/auth/index.js +2 -1
  344. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts +11 -0
  345. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts.map +1 -0
  346. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +19 -0
  347. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -0
  348. package/dist/synapse-queries/dataaccess/index.js +5 -5
  349. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +18 -0
  350. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  351. package/dist/synapse-queries/dataaccess/useEDuc.js +33 -1
  352. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  353. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.d.ts +19 -0
  354. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.d.ts.map +1 -0
  355. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.js +26 -0
  356. package/dist/synapse-queries/dataaccess/useGeneratedRequestForm.js.map +1 -0
  357. package/dist/synapse-queries/file/useDirectUploadToS3.js +6 -6
  358. package/dist/synapse-queries/file/useFileHandle.d.ts +8 -0
  359. package/dist/synapse-queries/file/useFileHandle.d.ts.map +1 -1
  360. package/dist/synapse-queries/file/useFileHandle.js +15 -6
  361. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  362. package/dist/synapse-queries/index.js +260 -253
  363. package/dist/synapse-queries/jsonschema/index.js +2 -2
  364. package/dist/synapse-queries/jsonschema/useSchema.d.ts +5 -0
  365. package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -1
  366. package/dist/synapse-queries/jsonschema/useSchema.js +9 -1
  367. package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -1
  368. package/dist/tsconfig.build.tsbuildinfo +1 -1
  369. package/dist/utils/APIConstants.d.ts +1 -0
  370. package/dist/utils/APIConstants.d.ts.map +1 -1
  371. package/dist/utils/APIConstants.js +2 -2
  372. package/dist/utils/APIConstants.js.map +1 -1
  373. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  374. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  375. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  376. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  377. package/dist/utils/functions/toPascalCase.d.ts +6 -0
  378. package/dist/utils/functions/toPascalCase.d.ts.map +1 -0
  379. package/dist/utils/functions/toPascalCase.js +8 -0
  380. package/dist/utils/functions/toPascalCase.js.map +1 -0
  381. package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
  382. package/dist/utils/hooks/useDetectSSOCode.js +31 -26
  383. package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
  384. package/dist/utils/jsonschema/schemaData.d.ts +18 -0
  385. package/dist/utils/jsonschema/schemaData.d.ts.map +1 -0
  386. package/dist/utils/jsonschema/schemaData.js +26 -0
  387. package/dist/utils/jsonschema/schemaData.js.map +1 -0
  388. package/dist/utils/jsonschema/submissionContext.d.ts +5 -0
  389. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -1
  390. package/dist/utils/jsonschema/submissionContext.js +22 -30
  391. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  392. package/package.json +10 -9
  393. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.d.ts.map +0 -1
  394. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js.map +0 -1
  395. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts.map +0 -1
  396. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"submissionContext.js","names":[],"sources":["../../../src/utils/jsonschema/submissionContext.ts"],"sourcesContent":["/**\n * Convention for gating a JSON Schema property to a data access REQUEST or RENEWAL submission.\n *\n * To gate a property to a specific submission context, a client can use conditional logic in\n * the JSON Schema against the 'x-synapse-submissionContext' property.\n *\n * A property that should only appear for a RENEWAL (or only for a REQUEST) is declared inside\n * an `allOf` entry keyed on the reserved `x-synapse-submissionContext` property, e.g.:\n *\n * ```json\n * {\n * \"allOf\": [{\n * \"if\": { \"properties\": { \"x-synapse-submissionContext\": { \"const\": \"RENEWAL\" } } },\n * \"then\": {\n * \"properties\": { \"summaryOfUse\": { \"type\": \"string\" } },\n * \"required\": [\"summaryOfUse\"]\n * }\n * }]\n * }\n * ```\n *\n * The submitted `schemaData` MUST include `x-synapse-submissionContext`; the server validates\n * that it matches the actual submission context. This module resolves the convention client-side\n * so the FormTemplateEditor's field library, step slots, and preview can discover and render such\n * properties, and provides a guided authoring API (`setSchemaProperty`,\n * `setSchemaPropertyContext`, `setSchemaPropertyRequired`, `removeSchemaProperty`,\n * `renameSchemaProperty`) so ACT can author a Request/Renewal-only field from a \"Submission\n * context\" select box, without hand-editing a JSON Schema.\n */\nimport { RJSFSchema } from '@rjsf/utils'\nimport { DataAccessRequestType } from '@sage-bionetworks/synapse-client'\n\nexport const SUBMISSION_CONTEXT_PROPERTY = 'x-synapse-submissionContext'\n\nexport type SchemaPropertyContext = 'ALWAYS' | 'REQUEST_ONLY' | 'RENEWAL_ONLY'\n\nexport type ResolvedSchemaProperty = {\n propertyKey: string\n subSchema: RJSFSchema\n isRequired: boolean\n context: SchemaPropertyContext\n}\n\ntype ConditionalBranch = {\n requestType: DataAccessRequestType\n properties: Record<string, RJSFSchema>\n required: Set<string>\n}\n\nfunction contextForRequestType(\n requestType: DataAccessRequestType,\n): SchemaPropertyContext {\n return requestType === DataAccessRequestType.REQUEST\n ? 'REQUEST_ONLY'\n : 'RENEWAL_ONLY'\n}\n\n/**\n * Parse `schema.allOf` for entries following the `x-synapse-submissionContext` `if`/`then`\n * convention above. Entries that don't match it (an unrelated `if` key, or a missing\n * `then.properties`) are left alone.\n */\nfunction readConditionalBranches(schema: RJSFSchema): ConditionalBranch[] {\n const branches: ConditionalBranch[] = []\n for (const entry of schema.allOf ?? []) {\n if (typeof entry === 'boolean') continue\n const ifClause = (entry as RJSFSchema).if\n const thenClause = (entry as RJSFSchema).then\n if (\n !ifClause ||\n typeof ifClause === 'boolean' ||\n !thenClause ||\n typeof thenClause === 'boolean'\n ) {\n continue\n }\n const contextConst = (\n ifClause.properties?.[SUBMISSION_CONTEXT_PROPERTY] as\n | RJSFSchema\n | undefined\n )?.const as DataAccessRequestType | undefined\n if (\n contextConst !== DataAccessRequestType.REQUEST &&\n contextConst !== DataAccessRequestType.RENEWAL\n ) {\n continue\n }\n branches.push({\n requestType: contextConst,\n properties: (thenClause.properties ?? {}) as Record<string, RJSFSchema>,\n required: new Set(thenClause.required ?? []),\n })\n }\n return branches\n}\n\n/**\n * Enumerate every leaf property the schema declares along with which submission\n * context applies to each. The reserved `x-synapse-submissionContext`\n * property itself is never included; it isn't a bindable field.\n */\nexport function listResolvedSchemaProperties(\n schema: RJSFSchema,\n): ResolvedSchemaProperty[] {\n const required = new Set(schema.required ?? [])\n const result: ResolvedSchemaProperty[] = []\n const seen = new Set<string>([SUBMISSION_CONTEXT_PROPERTY])\n\n for (const [propertyKey, subSchema] of Object.entries(\n (schema.properties ?? {}) as Record<string, RJSFSchema>,\n )) {\n if (seen.has(propertyKey)) continue\n seen.add(propertyKey)\n result.push({\n propertyKey,\n subSchema,\n isRequired: required.has(propertyKey),\n context: 'ALWAYS',\n })\n }\n\n for (const branch of readConditionalBranches(schema)) {\n for (const [propertyKey, subSchema] of Object.entries(branch.properties)) {\n // An unconditional definition of the same key wins; conditional branches only add\n // properties that aren't already declared at the top level.\n if (seen.has(propertyKey)) continue\n seen.add(propertyKey)\n result.push({\n propertyKey,\n subSchema,\n isRequired: branch.required.has(propertyKey),\n context: contextForRequestType(branch.requestType),\n })\n }\n }\n\n return result\n}\n\n/** The property key addressed by a single-segment JSON Pointer (e.g. `/institution` -> `institution`). */\nexport function pointerToPropertyKey(pointer: string): string | null {\n if (!pointer.startsWith('/')) return null\n const segment = pointer.slice(1)\n if (!segment || segment.includes('/')) return null\n return segment.replace(/~1/g, '/').replace(/~0/g, '~')\n}\n\n/** The single-segment JSON Pointer addressing a property key (e.g. `institution` -> `/institution`),\n * the inverse of `pointerToPropertyKey`. */\nexport function propertyKeyToPointer(propertyKey: string): string {\n return `/${propertyKey.replace(/~/g, '~0').replace(/\\//g, '~1')}`\n}\n\n/** Resolve a `FormTemplateField.schemaPath`-style JSON Pointer, applying the same rules as\n * `listResolvedSchemaProperties`. */\nexport function resolveSchemaPropertyAtPointer(\n schema: RJSFSchema,\n pointer: string,\n): ResolvedSchemaProperty | undefined {\n const propertyKey = pointerToPropertyKey(pointer)\n if (!propertyKey) return undefined\n return listResolvedSchemaProperties(schema).find(\n p => p.propertyKey === propertyKey,\n )\n}\n\n/** Whether a property's context applies for the given requestType (`ALWAYS` always applies). */\nexport function contextAppliesForRequestType(\n context: SchemaPropertyContext,\n requestType: DataAccessRequestType,\n): boolean {\n if (context === 'ALWAYS') return true\n return context === contextForRequestType(requestType)\n}\n\n/** Human label for display, e.g. a field library row or step slot badge. */\nexport function submissionContextLabel(context: SchemaPropertyContext): string {\n switch (context) {\n case 'ALWAYS':\n return 'Always'\n case 'REQUEST_ONLY':\n return 'Request only'\n case 'RENEWAL_ONLY':\n return 'Renewal only'\n }\n}\n\nfunction requestTypeForContext(\n context: SchemaPropertyContext,\n): DataAccessRequestType | undefined {\n if (context === 'REQUEST_ONLY') return DataAccessRequestType.REQUEST\n if (context === 'RENEWAL_ONLY') return DataAccessRequestType.RENEWAL\n return undefined\n}\n\n/** Index of the `allOf` entry gating on `requestType` per the convention above, or -1. */\nfunction findBranchIndex(\n allOf: (RJSFSchema | boolean)[],\n requestType: DataAccessRequestType,\n): number {\n return allOf.findIndex(entry => {\n if (typeof entry === 'boolean') return false\n const ifClause = entry.if\n if (!ifClause || typeof ifClause === 'boolean') return false\n const contextConst = (\n ifClause.properties?.[SUBMISSION_CONTEXT_PROPERTY] as\n | RJSFSchema\n | undefined\n )?.const\n return contextConst === requestType\n })\n}\n\n/** Ensure the schema declares `x-synapse-submissionContext` as a required top-level property,\n * so a schema with at least one conditional field is self-describing and matches what the\n * submitted `schemaData` is required to include. A no-op if already declared. */\nfunction ensureSubmissionContextDeclared(schema: RJSFSchema): RJSFSchema {\n const properties = (schema.properties ?? {}) as Record<string, RJSFSchema>\n if (SUBMISSION_CONTEXT_PROPERTY in properties) return schema\n return {\n ...schema,\n properties: {\n ...properties,\n [SUBMISSION_CONTEXT_PROPERTY]: {\n type: 'string',\n enum: [DataAccessRequestType.REQUEST, DataAccessRequestType.RENEWAL],\n },\n },\n required: [...(schema.required ?? []), SUBMISSION_CONTEXT_PROPERTY],\n }\n}\n\n/**\n * Remove `propertyKey` from wherever it's currently defined. Drops now-empty\n * `then.properties`/branches/the `allOf` array itself so relocating or deleting\n * a property never leaves extra schema components behind.\n */\nexport function removeSchemaProperty(\n schema: RJSFSchema,\n propertyKey: string,\n): RJSFSchema {\n const properties = {\n ...((schema.properties ?? {}) as Record<string, RJSFSchema>),\n }\n let changed = propertyKey in properties\n delete properties[propertyKey]\n const required = (schema.required ?? []).filter(k => k !== propertyKey)\n\n const allOf = (schema.allOf ?? [])\n .map(entry => {\n if (typeof entry === 'boolean') return entry\n const thenClause = entry.then\n if (!thenClause || typeof thenClause === 'boolean') return entry\n const thenProps = {\n ...((thenClause.properties ?? {}) as Record<string, RJSFSchema>),\n }\n if (!(propertyKey in thenProps)) return entry\n changed = true\n delete thenProps[propertyKey]\n if (Object.keys(thenProps).length === 0) return null\n return {\n ...entry,\n then: {\n ...thenClause,\n properties: thenProps,\n required: (thenClause.required ?? []).filter(k => k !== propertyKey),\n },\n }\n })\n .filter((entry): entry is RJSFSchema | boolean => entry !== null)\n\n if (!changed) return schema\n\n const next: RJSFSchema = { ...schema, properties, required }\n if (allOf.length > 0) {\n next.allOf = allOf\n } else {\n delete next.allOf\n }\n return next\n}\n\n/**\n * Insert or replace a property's definition at the given submission context, relocating it there\n * from wherever it previously lived.\n *\n * Does not modify the property's requiredness behind at its old location. Callers that need to\n * preserve it (e.g. changing a property's context) should follow up with `setSchemaPropertyRequired`.\n */\nexport function setSchemaProperty(\n schema: RJSFSchema,\n propertyKey: string,\n subSchema: RJSFSchema,\n context: SchemaPropertyContext,\n): RJSFSchema {\n const withoutProperty = removeSchemaProperty(schema, propertyKey)\n const requestType = requestTypeForContext(context)\n\n if (!requestType) {\n return {\n ...withoutProperty,\n properties: {\n ...((withoutProperty.properties ?? {}) as Record<string, RJSFSchema>),\n [propertyKey]: subSchema,\n },\n }\n }\n\n const base = ensureSubmissionContextDeclared(withoutProperty)\n const allOf = [...(base.allOf ?? [])]\n const branchIndex = findBranchIndex(allOf, requestType)\n if (branchIndex === -1) {\n allOf.push({\n if: {\n properties: { [SUBMISSION_CONTEXT_PROPERTY]: { const: requestType } },\n },\n then: { properties: { [propertyKey]: subSchema }, required: [] },\n })\n } else {\n const entry = allOf[branchIndex] as RJSFSchema\n const thenClause = entry.then as RJSFSchema\n allOf[branchIndex] = {\n ...entry,\n then: {\n ...thenClause,\n properties: {\n ...((thenClause.properties ?? {}) as Record<string, RJSFSchema>),\n [propertyKey]: subSchema,\n },\n },\n }\n }\n return { ...base, allOf }\n}\n\n/** Set whether a property is required within its current context's branch (top-level `required`\n * for `ALWAYS`, or the matching `allOf` branch's `then.required` otherwise). A no-op if the\n * property isn't actually defined at that context. */\nexport function setSchemaPropertyRequired(\n schema: RJSFSchema,\n propertyKey: string,\n context: SchemaPropertyContext,\n isRequired: boolean,\n): RJSFSchema {\n const requestType = requestTypeForContext(context)\n if (!requestType) {\n const properties = (schema.properties ?? {}) as Record<string, RJSFSchema>\n if (!(propertyKey in properties)) return schema\n const required = (schema.required ?? []).filter(k => k !== propertyKey)\n if (isRequired) required.push(propertyKey)\n return { ...schema, required }\n }\n const allOf = [...(schema.allOf ?? [])]\n const branchIndex = findBranchIndex(allOf, requestType)\n if (branchIndex === -1) return schema\n const entry = allOf[branchIndex] as RJSFSchema\n const thenClause = entry.then as RJSFSchema\n const thenProperties = (thenClause.properties ?? {}) as Record<\n string,\n RJSFSchema\n >\n if (!(propertyKey in thenProperties)) return schema\n const required = (thenClause.required ?? []).filter(k => k !== propertyKey)\n if (isRequired) required.push(propertyKey)\n allOf[branchIndex] = { ...entry, then: { ...thenClause, required } }\n return { ...schema, allOf }\n}\n\n/**\n * Move a property to a different submission context, preserving its definition and\n * requiredness. A no-op if the property doesn't resolve, or is already at that context.\n */\nexport function setSchemaPropertyContext(\n schema: RJSFSchema,\n propertyKey: string,\n context: SchemaPropertyContext,\n): RJSFSchema {\n const resolved = resolveSchemaPropertyAtPointer(schema, `/${propertyKey}`)\n if (!resolved || resolved.context === context) return schema\n const next = setSchemaProperty(\n schema,\n propertyKey,\n resolved.subSchema,\n context,\n )\n return resolved.isRequired\n ? setSchemaPropertyRequired(next, propertyKey, context, true)\n : next\n}\n\n/**\n * Rename a property's key wherever it's defined (top-level or an `allOf` branch), preserving its\n * definition, context, and required-ness. A no-op if `oldKey` doesn't resolve.\n */\nexport function renameSchemaProperty(\n schema: RJSFSchema,\n oldKey: string,\n newKey: string,\n): RJSFSchema {\n const resolved = resolveSchemaPropertyAtPointer(schema, `/${oldKey}`)\n if (!resolved) return schema\n const withoutOld = removeSchemaProperty(schema, oldKey)\n const withNew = setSchemaProperty(\n withoutOld,\n newKey,\n resolved.subSchema,\n resolved.context,\n )\n return resolved.isRequired\n ? setSchemaPropertyRequired(withNew, newKey, resolved.context, true)\n : withNew\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"submissionContext.js","names":[],"sources":["../../../src/utils/jsonschema/submissionContext.ts"],"sourcesContent":["/**\n * Convention for gating a JSON Schema property to a data access REQUEST or RENEWAL submission.\n *\n * To gate a property to a specific submission context, a client can use conditional logic in\n * the JSON Schema against the 'x-synapse-submissionContext' property.\n *\n * A property that should only appear for a RENEWAL (or only for a REQUEST) is declared inside\n * an `allOf` entry keyed on the reserved `x-synapse-submissionContext` property, e.g.:\n *\n * ```json\n * {\n * \"allOf\": [{\n * \"if\": { \"properties\": { \"x-synapse-submissionContext\": { \"const\": \"RENEWAL\" } } },\n * \"then\": {\n * \"properties\": { \"summaryOfUse\": { \"type\": \"string\" } },\n * \"required\": [\"summaryOfUse\"]\n * }\n * }]\n * }\n * ```\n *\n * The submitted `schemaData` MUST include `x-synapse-submissionContext`; the server validates\n * that it matches the actual submission context. This module resolves the convention client-side\n * so the FormTemplateEditor's field library, step slots, and preview can discover and render such\n * properties, and provides a guided authoring API (`setSchemaProperty`,\n * `setSchemaPropertyContext`, `setSchemaPropertyRequired`, `removeSchemaProperty`,\n * `renameSchemaProperty`) so ACT can author a Request/Renewal-only field from a \"Submission\n * context\" select box, without hand-editing a JSON Schema.\n */\nimport { RJSFSchema } from '@rjsf/utils'\nimport { DataAccessRequestType } from '@sage-bionetworks/synapse-client'\n\nexport const SUBMISSION_CONTEXT_PROPERTY = 'x-synapse-submissionContext'\n\nexport type SchemaPropertyContext = 'ALWAYS' | 'REQUEST_ONLY' | 'RENEWAL_ONLY'\n\nexport type ResolvedSchemaProperty = {\n propertyKey: string\n subSchema: RJSFSchema\n isRequired: boolean\n context: SchemaPropertyContext\n}\n\ntype ConditionalBranch = {\n requestType: DataAccessRequestType\n properties: Record<string, RJSFSchema>\n required: Set<string>\n}\n\nfunction contextForRequestType(\n requestType: DataAccessRequestType,\n): SchemaPropertyContext {\n return requestType === DataAccessRequestType.REQUEST\n ? 'REQUEST_ONLY'\n : 'RENEWAL_ONLY'\n}\n\n/**\n * Parse `schema.allOf` for entries following the `x-synapse-submissionContext` `if`/`then`\n * convention above. Entries that don't match it (an unrelated `if` key, or a missing\n * `then.properties`) are left alone.\n */\nfunction readConditionalBranches(schema: RJSFSchema): ConditionalBranch[] {\n const branches: ConditionalBranch[] = []\n for (const entry of schema.allOf ?? []) {\n if (typeof entry === 'boolean') continue\n const ifClause = (entry as RJSFSchema).if\n const thenClause = (entry as RJSFSchema).then\n if (\n !ifClause ||\n typeof ifClause === 'boolean' ||\n !thenClause ||\n typeof thenClause === 'boolean'\n ) {\n continue\n }\n const contextConst = (\n ifClause.properties?.[SUBMISSION_CONTEXT_PROPERTY] as\n | RJSFSchema\n | undefined\n )?.const as DataAccessRequestType | undefined\n if (\n contextConst !== DataAccessRequestType.REQUEST &&\n contextConst !== DataAccessRequestType.RENEWAL\n ) {\n continue\n }\n branches.push({\n requestType: contextConst,\n properties: (thenClause.properties ?? {}) as Record<string, RJSFSchema>,\n required: new Set(thenClause.required ?? []),\n })\n }\n return branches\n}\n\n/**\n * Enumerate every leaf property the schema declares along with which submission\n * context applies to each. The reserved `x-synapse-submissionContext`\n * property itself is never included; it isn't a bindable field.\n */\nexport function listResolvedSchemaProperties(\n schema: RJSFSchema,\n): ResolvedSchemaProperty[] {\n const required = new Set(schema.required ?? [])\n const result: ResolvedSchemaProperty[] = []\n const seen = new Set<string>([SUBMISSION_CONTEXT_PROPERTY])\n\n for (const [propertyKey, subSchema] of Object.entries(\n (schema.properties ?? {}) as Record<string, RJSFSchema>,\n )) {\n if (seen.has(propertyKey)) continue\n seen.add(propertyKey)\n result.push({\n propertyKey,\n subSchema,\n isRequired: required.has(propertyKey),\n context: 'ALWAYS',\n })\n }\n\n for (const branch of readConditionalBranches(schema)) {\n for (const [propertyKey, subSchema] of Object.entries(branch.properties)) {\n // An unconditional definition of the same key wins; conditional branches only add\n // properties that aren't already declared at the top level.\n if (seen.has(propertyKey)) continue\n seen.add(propertyKey)\n result.push({\n propertyKey,\n subSchema,\n isRequired: branch.required.has(propertyKey),\n context: contextForRequestType(branch.requestType),\n })\n }\n }\n\n return result\n}\n\n/** The property key addressed by a single-segment JSON Pointer (e.g. `/institution` -> `institution`). */\nexport function pointerToPropertyKey(pointer: string): string | null {\n if (!pointer.startsWith('/')) return null\n const segment = pointer.slice(1)\n if (!segment || segment.includes('/')) return null\n return segment.replace(/~1/g, '/').replace(/~0/g, '~')\n}\n\n/** The single-segment JSON Pointer addressing a property key (e.g. `institution` -> `/institution`),\n * the inverse of `pointerToPropertyKey`. */\nexport function propertyKeyToPointer(propertyKey: string): string {\n return `/${propertyKey.replace(/~/g, '~0').replace(/\\//g, '~1')}`\n}\n\n/** Resolve a `FormTemplateField.schemaPath`-style JSON Pointer, applying the same rules as\n * `listResolvedSchemaProperties`. */\nexport function resolveSchemaPropertyAtPointer(\n schema: RJSFSchema,\n pointer: string,\n): ResolvedSchemaProperty | undefined {\n const propertyKey = pointerToPropertyKey(pointer)\n if (!propertyKey) return undefined\n return listResolvedSchemaProperties(schema).find(\n p => p.propertyKey === propertyKey,\n )\n}\n\n/** Whether a property's context applies for the given requestType (`ALWAYS` always applies). */\nexport function contextAppliesForRequestType(\n context: SchemaPropertyContext,\n requestType: DataAccessRequestType,\n): boolean {\n if (context === 'ALWAYS') return true\n return context === contextForRequestType(requestType)\n}\n\n/** Human label for display, e.g. a field library row or step slot badge. */\nexport function submissionContextLabel(context: SchemaPropertyContext): string {\n switch (context) {\n case 'ALWAYS':\n return 'Always'\n case 'REQUEST_ONLY':\n return 'Request only'\n case 'RENEWAL_ONLY':\n return 'Renewal only'\n }\n}\n\nfunction requestTypeForContext(\n context: SchemaPropertyContext,\n): DataAccessRequestType | undefined {\n if (context === 'REQUEST_ONLY') return DataAccessRequestType.REQUEST\n if (context === 'RENEWAL_ONLY') return DataAccessRequestType.RENEWAL\n return undefined\n}\n\n/** Index of the `allOf` entry gating on `requestType` per the convention above, or -1. */\nfunction findBranchIndex(\n allOf: (RJSFSchema | boolean)[],\n requestType: DataAccessRequestType,\n): number {\n return allOf.findIndex(entry => {\n if (typeof entry === 'boolean') return false\n const ifClause = entry.if\n if (!ifClause || typeof ifClause === 'boolean') return false\n const contextConst = (\n ifClause.properties?.[SUBMISSION_CONTEXT_PROPERTY] as\n | RJSFSchema\n | undefined\n )?.const\n return contextConst === requestType\n })\n}\n\n/**\n * Remove `propertyKey` from wherever it's currently defined. Drops now-empty\n * `then.properties`/branches/the `allOf` array itself so relocating or deleting\n * a property never leaves extra schema components behind.\n */\nexport function removeSchemaProperty(\n schema: RJSFSchema,\n propertyKey: string,\n): RJSFSchema {\n const properties = {\n ...((schema.properties ?? {}) as Record<string, RJSFSchema>),\n }\n let changed = propertyKey in properties\n delete properties[propertyKey]\n const required = (schema.required ?? []).filter(k => k !== propertyKey)\n\n const allOf = (schema.allOf ?? [])\n .map(entry => {\n if (typeof entry === 'boolean') return entry\n const thenClause = entry.then\n if (!thenClause || typeof thenClause === 'boolean') return entry\n const thenProps = {\n ...((thenClause.properties ?? {}) as Record<string, RJSFSchema>),\n }\n if (!(propertyKey in thenProps)) return entry\n changed = true\n delete thenProps[propertyKey]\n if (Object.keys(thenProps).length === 0) return null\n return {\n ...entry,\n then: {\n ...thenClause,\n properties: thenProps,\n required: (thenClause.required ?? []).filter(k => k !== propertyKey),\n },\n }\n })\n .filter((entry): entry is RJSFSchema | boolean => entry !== null)\n\n if (!changed) return schema\n\n const next: RJSFSchema = { ...schema, properties, required }\n if (allOf.length > 0) {\n next.allOf = allOf\n } else {\n delete next.allOf\n }\n return next\n}\n\n/**\n * Insert or replace a property's definition at the given submission context, relocating it there\n * from wherever it previously lived.\n *\n * Does not modify the property's requiredness behind at its old location. Callers that need to\n * preserve it (e.g. changing a property's context) should follow up with `setSchemaPropertyRequired`.\n */\nexport function setSchemaProperty(\n schema: RJSFSchema,\n propertyKey: string,\n subSchema: RJSFSchema,\n context: SchemaPropertyContext,\n): RJSFSchema {\n const withoutProperty = removeSchemaProperty(schema, propertyKey)\n const requestType = requestTypeForContext(context)\n\n if (!requestType) {\n return {\n ...withoutProperty,\n properties: {\n ...((withoutProperty.properties ?? {}) as Record<string, RJSFSchema>),\n [propertyKey]: subSchema,\n },\n }\n }\n\n const allOf = [...(withoutProperty.allOf ?? [])]\n const branchIndex = findBranchIndex(allOf, requestType)\n if (branchIndex === -1) {\n allOf.push({\n if: {\n properties: { [SUBMISSION_CONTEXT_PROPERTY]: { const: requestType } },\n },\n then: { properties: { [propertyKey]: subSchema }, required: [] },\n })\n } else {\n const entry = allOf[branchIndex] as RJSFSchema\n const thenClause = entry.then as RJSFSchema\n allOf[branchIndex] = {\n ...entry,\n then: {\n ...thenClause,\n properties: {\n ...((thenClause.properties ?? {}) as Record<string, RJSFSchema>),\n [propertyKey]: subSchema,\n },\n },\n }\n }\n return { ...withoutProperty, allOf }\n}\n\n/** Set whether a property is required within its current context's branch (top-level `required`\n * for `ALWAYS`, or the matching `allOf` branch's `then.required` otherwise). A no-op if the\n * property isn't actually defined at that context. */\nexport function setSchemaPropertyRequired(\n schema: RJSFSchema,\n propertyKey: string,\n context: SchemaPropertyContext,\n isRequired: boolean,\n): RJSFSchema {\n const requestType = requestTypeForContext(context)\n if (!requestType) {\n const properties = (schema.properties ?? {}) as Record<string, RJSFSchema>\n if (!(propertyKey in properties)) return schema\n const required = (schema.required ?? []).filter(k => k !== propertyKey)\n if (isRequired) required.push(propertyKey)\n return { ...schema, required }\n }\n const allOf = [...(schema.allOf ?? [])]\n const branchIndex = findBranchIndex(allOf, requestType)\n if (branchIndex === -1) return schema\n const entry = allOf[branchIndex] as RJSFSchema\n const thenClause = entry.then as RJSFSchema\n const thenProperties = (thenClause.properties ?? {}) as Record<\n string,\n RJSFSchema\n >\n if (!(propertyKey in thenProperties)) return schema\n const required = (thenClause.required ?? []).filter(k => k !== propertyKey)\n if (isRequired) required.push(propertyKey)\n allOf[branchIndex] = { ...entry, then: { ...thenClause, required } }\n return { ...schema, allOf }\n}\n\n/**\n * Move a property to a different submission context, preserving its definition and\n * requiredness. A no-op if the property doesn't resolve, or is already at that context.\n */\nexport function setSchemaPropertyContext(\n schema: RJSFSchema,\n propertyKey: string,\n context: SchemaPropertyContext,\n): RJSFSchema {\n const resolved = resolveSchemaPropertyAtPointer(schema, `/${propertyKey}`)\n if (!resolved || resolved.context === context) return schema\n const next = setSchemaProperty(\n schema,\n propertyKey,\n resolved.subSchema,\n context,\n )\n return resolved.isRequired\n ? setSchemaPropertyRequired(next, propertyKey, context, true)\n : next\n}\n\n/**\n * Replace a property's definition wherever it's defined (top-level or an `allOf` branch),\n * preserving its context and required-ness. A no-op if the property doesn't resolve.\n */\nexport function replaceSchemaPropertyDefinition(\n schema: RJSFSchema,\n propertyKey: string,\n subSchema: RJSFSchema,\n): RJSFSchema {\n const resolved = resolveSchemaPropertyAtPointer(\n schema,\n propertyKeyToPointer(propertyKey),\n )\n if (!resolved) return schema\n const next = setSchemaProperty(\n schema,\n propertyKey,\n subSchema,\n resolved.context,\n )\n return resolved.isRequired\n ? setSchemaPropertyRequired(next, propertyKey, resolved.context, true)\n : next\n}\n\n/**\n * Rename a property's key wherever it's defined (top-level or an `allOf` branch), preserving its\n * definition, context, and required-ness. A no-op if `oldKey` doesn't resolve.\n */\nexport function renameSchemaProperty(\n schema: RJSFSchema,\n oldKey: string,\n newKey: string,\n): RJSFSchema {\n const resolved = resolveSchemaPropertyAtPointer(schema, `/${oldKey}`)\n if (!resolved) return schema\n const withoutOld = removeSchemaProperty(schema, oldKey)\n const withNew = setSchemaProperty(\n withoutOld,\n newKey,\n resolved.subSchema,\n resolved.context,\n )\n return resolved.isRequired\n ? setSchemaPropertyRequired(withNew, newKey, resolved.context, true)\n : withNew\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synapse-react-client",
3
- "version": "4.0.41",
3
+ "version": "4.0.43",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -75,7 +75,7 @@
75
75
  "jsonpath-plus": "^10.4.0",
76
76
  "katex": "^0.16.47",
77
77
  "lodash-es": "^4.18.1",
78
- "markdown-it": "^14.2.0",
78
+ "markdown-it": "^14.3.2",
79
79
  "markdown-it-br": "^1.0.0",
80
80
  "markdown-it-center-text": "^1.0.4",
81
81
  "markdown-it-inline-comments": "^1.0.1",
@@ -122,9 +122,9 @@
122
122
  "xss": "^1.0.15",
123
123
  "zod": "^4.4.3",
124
124
  "@sage-bionetworks/markdown-it-container": "4.0.1",
125
- "@sage-bionetworks/synapse-client": "0.0.24",
126
125
  "@sage-bionetworks/react-datasheet-grid": "4.11.5-sage.10",
127
- "@sage-bionetworks/synapse-types": "0.0.10",
126
+ "@sage-bionetworks/synapse-client": "0.0.24",
127
+ "@sage-bionetworks/synapse-types": "0.0.11",
128
128
  "markdown-it-synapse": "2.0.0",
129
129
  "markdown-it-synapse-table": "1.0.8"
130
130
  },
@@ -142,11 +142,11 @@
142
142
  "@faker-js/faker": "^10.5.0",
143
143
  "@googlemaps/jest-mocks": "^2.22.8",
144
144
  "@open-draft/deferred-promise": "^2.2.0",
145
- "@storybook/addon-a11y": "10.3.4",
145
+ "@storybook/addon-a11y": "10.6.1",
146
146
  "@storybook/addon-designs": "^11.1.3",
147
- "@storybook/addon-links": "10.3.4",
148
- "@storybook/addon-themes": "10.3.4",
149
- "@storybook/react-vite": "10.3.4",
147
+ "@storybook/addon-links": "10.6.1",
148
+ "@storybook/addon-themes": "10.6.1",
149
+ "@storybook/react-vite": "10.6.1",
150
150
  "@svgr/plugin-jsx": "^8.1.0",
151
151
  "@testing-library/dom": "^10.4.1",
152
152
  "@testing-library/jest-dom": "^6.9.1",
@@ -197,6 +197,7 @@
197
197
  "jest-environment-jsdom": "^29.7.0",
198
198
  "jsdom": "^26.1.0",
199
199
  "memfs": "^3.5.3",
200
+ "moment": "^2.31.0",
200
201
  "msw": "^2.14.6",
201
202
  "msw-storybook-addon": "^2.0.7",
202
203
  "p-limit": "^6.2.0",
@@ -207,7 +208,7 @@
207
208
  "react-dom": "^19.2.7",
208
209
  "react-select-event": "^5.5.1",
209
210
  "react-test-renderer": "^19.2.7",
210
- "storybook": "10.3.4",
211
+ "storybook": "10.6.1",
211
212
  "stream-browserify": "^3.0.0",
212
213
  "stream-http": "^3.2.0",
213
214
  "timers-browserify": "^2.0.12",
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManagedACTAccessRequirementItem.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,2BAA2B,EAE3B,sBAAsB,EACvB,MAAM,iCAAiC,CAAA;AAMxC,MAAM,MAAM,oCAAoC,GAAG;IACjD;;OAEG;IACH,iBAAiB,EAAE,2BAA2B,CAAA;IAC9C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAA;IACpC;;OAEG;IACH,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAA;CAC5B,CAAA;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,oCAAoC,2CAqG5C;AAED,eAAe,+BAA+B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManagedACTAccessRequirementItem.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.tsx"],"sourcesContent":["import {\n useCancelDataAccessRequest,\n useGetAccessRequirementStatus,\n useGetAccessRequirementWikiPageKey,\n useGetRestrictionInformation,\n} from '@/synapse-queries'\nimport { Alert } from '@mui/material'\nimport {\n ManagedACTAccessRequirement,\n ManagedACTAccessRequirementStatus,\n RestrictableObjectType,\n} from '@sage-bionetworks/synapse-types'\nimport { ReactNode, useCallback } from 'react'\nimport MarkdownSynapse from '../../Markdown/MarkdownSynapse'\nimport RequirementItem from '../RequirementItem/RequirementItem'\nimport ManagedACTAccessRequirementItemView from './ManagedACTAccessRequirementItemView'\n\nexport type ManagedACTAccessRequirementItemProps = {\n /**\n * The ManagedACTAccessRequirement to be displayed.\n */\n accessRequirement: ManagedACTAccessRequirement\n /**\n * If available, the ID of the object that this access requirement is being displayed for.\n */\n subjectId?: string\n /**\n * If available, the type of the object that this access requirement is being displayed for.\n */\n subjectType?: RestrictableObjectType\n /**\n * Invoked when the user clicks the \"I do not accept\" button.\n */\n onRejectTerms: () => void\n /**\n * Invoked when the user clicks the \"Request access\" button.\n */\n onRequestAccess: () => void\n}\n\n/**\n * Renders a {@link RequirementItem} for a ManagedACTAccessRequirement, which allows a user to see if they have met the\n * requirement, and if not, complete a data access request to apply for access.\n */\nexport function ManagedACTAccessRequirementItem(\n props: ManagedACTAccessRequirementItemProps,\n) {\n const {\n accessRequirement,\n subjectId,\n subjectType,\n onRejectTerms,\n onRequestAccess,\n } = props\n const {\n data: wikiPageKey,\n isLoading: isLoadingWikiPageKey,\n error: getWikiPageError,\n } = useGetAccessRequirementWikiPageKey(accessRequirement.id.toString())\n\n const {\n data: accessRequirementStatus,\n isLoading: isLoadingArStatus,\n error: getArStatusError,\n } = useGetAccessRequirementStatus<ManagedACTAccessRequirementStatus>(\n String(accessRequirement.id),\n )\n\n const {\n data: restrictionInformation,\n isLoading: isLoadingRestrictionInfo,\n error: getRestrictionInfoError,\n } = useGetRestrictionInformation(\n {\n objectId: subjectId!,\n restrictableObjectType: subjectType!,\n },\n { enabled: !!subjectId && !!subjectType },\n )\n\n const {\n mutate: cancelDataAccessRequest,\n error: cancelRequestError,\n isPending: cancelRequestIsPending,\n } = useCancelDataAccessRequest()\n\n const onCancelDataAccessRequest = useCallback(() => {\n if (!accessRequirementStatus) {\n // no-op; the component is still loading, so this will never happen\n return\n }\n cancelDataAccessRequest({\n submissionId:\n accessRequirementStatus.currentSubmissionStatus!.submissionId,\n accessRequirementId: String(accessRequirement.id),\n })\n }, [accessRequirement.id, accessRequirementStatus, cancelDataAccessRequest])\n\n const isLoading =\n isLoadingWikiPageKey || isLoadingArStatus || isLoadingRestrictionInfo\n\n let error: ReactNode = null\n if (\n getWikiPageError ||\n getArStatusError ||\n getRestrictionInfoError ||\n cancelRequestError\n ) {\n error = (\n <Alert className={'access-requirement-list-alert'} severity={'error'}>\n {getWikiPageError && getWikiPageError.reason}\n {getArStatusError && getArStatusError.reason}\n {getRestrictionInfoError && getRestrictionInfoError.reason}\n {cancelRequestError && (\n <>\n <strong>Error canceling your data access request:</strong>\n <br />\n {cancelRequestError.reason}\n </>\n )}\n </Alert>\n )\n }\n\n return (\n <ManagedACTAccessRequirementItemView\n isLoading={isLoading}\n accessRequirement={accessRequirement}\n accessRequirementStatus={accessRequirementStatus}\n restrictionInformation={restrictionInformation}\n wikiPage={\n wikiPageKey && (\n <MarkdownSynapse\n wikiId={wikiPageKey.wikiPageId}\n ownerId={wikiPageKey.ownerObjectId}\n objectType={wikiPageKey.ownerObjectType}\n />\n )\n }\n error={error}\n onCancelDataAccessRequest={onCancelDataAccessRequest}\n onRejectTerms={onRejectTerms}\n onRequestAccess={onRequestAccess}\n cancelRequestIsPending={cancelRequestIsPending}\n />\n )\n}\n\nexport default ManagedACTAccessRequirementItem\n"],"mappings":";;;;;;;;;AA4CA,SAAgB,EACd,GACA;CACA,IAAM,EACJ,sBACA,cACA,gBACA,kBACA,uBACE,GACE,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EAAmC,EAAkB,GAAG,SAAS,CAAC,GAEhE,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF,OAAO,EAAkB,EAAE,CAC7B,GAEM,EACJ,MAAM,GACN,WAAW,GACX,OAAO,MACL,EACF;EACE,UAAU;EACV,wBAAwB;CAC1B,GACA,EAAE,SAAS,CAAC,CAAC,KAAa,CAAC,CAAC,EAAY,CAC1C,GAEM,EACJ,QAAQ,GACR,OAAO,GACP,WAAW,MACT,EAA2B,GAEzB,IAA4B,QAAkB;EAC7C,KAIL,EAAwB;GACtB,cACE,EAAwB,wBAAyB;GACnD,qBAAqB,OAAO,EAAkB,EAAE;EAClD,CAAC;CACH,GAAG;EAAC,EAAkB;EAAI;EAAyB;CAAuB,CAAC,GAErE,IACJ,KAAwB,KAAqB,GAE3C,IAAmB;CAuBvB,QArBE,KACA,KACA,KACA,OAEA,IACE,kBAAC,GAAD;EAAO,WAAW;EAAiC,UAAU;YAA7D;GACG,KAAoB,EAAiB;GACrC,KAAoB,EAAiB;GACrC,KAA2B,EAAwB;GACnD,KACC,kBAAA,GAAA,EAAA,UAAA;IACE,kBAAC,UAAD,EAAA,UAAQ,4CAAiD,CAAA;IACzD,kBAAC,MAAD,CAAK,CAAA;IACJ,EAAmB;GACpB,EAAA,CAAA;EAEC;MAKT,kBAAC,GAAD;EACa;EACQ;EACM;EACD;EACxB,UACE,KACE,kBAAC,GAAD;GACE,QAAQ,EAAY;GACpB,SAAS,EAAY;GACrB,YAAY,EAAY;EACzB,CAAA;EAGE;EACoB;EACZ;EACE;EACO;CACzB,CAAA;AAEL"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManagedACTAccessRequirementItemView.d.ts","sourceRoot":"","sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,8BAA8B,EAE/B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAI3C,MAAM,MAAM,wCAAwC,GAAG;IACrD;;OAEG;IACH,iBAAiB,EAAE,2BAA2B,CAAA;IAC9C;;OAEG;IACH,uBAAuB,CAAC,EAAE,iCAAiC,CAAA;IAC3D;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,8BAA8B,CAAA;IACvD;;OAEG;IACH,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B;;OAEG;IACH,yBAAyB,EAAE,MAAM,IAAI,CAAA;IACrC;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;CAChC,CAAA;AA2GD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,wCAAwC,2CA6IhD;AAED,eAAe,mCAAmC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManagedACTAccessRequirementItemView.js","names":[],"sources":["../../../../src/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.tsx"],"sourcesContent":["import { formatDate } from '@/utils/functions/DateFormatter'\nimport { Alert, Box, ButtonProps, Link, Typography } from '@mui/material'\nimport Stack from '@mui/material/Stack'\nimport {\n ManagedACTAccessRequirement,\n ManagedACTAccessRequirementStatus,\n RestrictionInformationResponse,\n SubmissionState,\n} from '@sage-bionetworks/synapse-types'\nimport dayjs from 'dayjs'\nimport { ReactNode, useState } from 'react'\nimport { RequirementItemStatus } from '../AccessApprovalCheckMark'\nimport RequirementItem from '../RequirementItem/RequirementItem'\n\nexport type ManagedACTAccessRequirementItemViewProps = {\n /**\n * The ManagedACTAccessRequirement to be displayed.\n */\n accessRequirement: ManagedACTAccessRequirement\n /**\n * The user's status for this access requirement.\n */\n accessRequirementStatus?: ManagedACTAccessRequirementStatus\n /**\n * A ReactNode that contains the wiki page content for this access requirement.\n */\n wikiPage?: ReactNode\n /**\n * Whether the component is currently loading data.\n */\n isLoading: boolean\n /**\n * If available, the restriction information relevant to the subject that this\n * access requirement is being displayed for.\n *\n * This is used to determine if the user is exempt from meeting this requirement.\n */\n restrictionInformation?: RestrictionInformationResponse\n /**\n * Invoked when the user clicks the \"I do not accept\" button.\n */\n onRejectTerms: () => void\n /**\n * Invoked when the user clicks the \"Request access\" button.\n */\n onRequestAccess: () => void\n /**\n * Invoked when the user clicks the \"Cancel Request\" button (only shown if a request is active).\n */\n onCancelDataAccessRequest: () => void\n /**\n * ReactNode to display if there is an error in the component.\n */\n error?: ReactNode\n /**\n * Whether the a request to cancel the data access request is currently pending.\n */\n cancelRequestIsPending: boolean\n}\n\nconst APPROVED_TEXT = 'Your data access request has been approved.'\nconst EXEMPT_TEXT =\n 'This data access requirement is fulfilled by your team membership and permissions.'\n\n/**\n * Translate the ManagedACTAccessRequirementStatus and exemption status into a the\n * RequirementItemStatus displayed by the UI\n * @param status\n * @param isExempt\n */\nfunction getRequirementItemUiState(\n status: ManagedACTAccessRequirementStatus,\n isExempt: boolean,\n): RequirementItemStatus {\n if (isExempt) {\n return RequirementItemStatus.COMPLETE\n }\n\n // If there's no current submission, check the isApproved flag directly\n if (!status.currentSubmissionStatus) {\n return status.isApproved\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n }\n\n switch (status.currentSubmissionStatus.state) {\n case SubmissionState.APPROVED:\n return status.isApproved\n ? RequirementItemStatus.COMPLETE\n : RequirementItemStatus.LOCKED\n case SubmissionState.SUBMITTED:\n return RequirementItemStatus.PENDING\n case SubmissionState.REJECTED:\n case SubmissionState.CANCELLED:\n default:\n return RequirementItemStatus.LOCKED\n }\n}\n\n/**\n * Gets the action buttons to display for a ManagedACTAccessRequirement based on the current state of the requirement.\n * @param accessRequirementStatus - the user's status for the access requirement\n * @param isExempt - whether the user is exempt from submitting a request for this access requirement\n * @param cancelRequestIsPending - whether a request to cancel the data access request is currently pending\n * @param callbacks - callbacks to invoke when the user clicks the action buttons\n */\nfunction getActionButtonProps(\n accessRequirementStatus: ManagedACTAccessRequirementStatus,\n isExempt: boolean,\n cancelRequestIsPending: boolean,\n callbacks: {\n onRequestAccess: () => void\n onRejectTerms: () => void\n onCancelDataAccessRequest: () => void\n },\n): ButtonProps[] {\n const { onRequestAccess, onRejectTerms, onCancelDataAccessRequest } =\n callbacks\n\n const actions: ButtonProps[] = []\n\n if (accessRequirementStatus) {\n if (accessRequirementStatus.currentSubmissionStatus == null) {\n actions.push({\n variant: 'outlined',\n onClick: onRequestAccess,\n // Show \"Update Request\" if approved, \"Request access\" otherwise\n children: accessRequirementStatus.isApproved\n ? 'Update Request'\n : 'Request access',\n })\n if (!isExempt && !accessRequirementStatus.isApproved) {\n actions.push({\n variant: 'text',\n onClick: onRejectTerms,\n children: 'I do not accept',\n })\n }\n } else if (\n [\n SubmissionState.APPROVED,\n SubmissionState.REJECTED,\n SubmissionState.CANCELLED,\n ].includes(accessRequirementStatus.currentSubmissionStatus.state)\n ) {\n actions.push({\n variant: 'outlined',\n onClick: onRequestAccess,\n children: 'Update Request',\n })\n } else if (\n accessRequirementStatus.currentSubmissionStatus.state ===\n SubmissionState.SUBMITTED\n ) {\n actions.push({\n variant: 'outlined',\n onClick: onCancelDataAccessRequest,\n children: 'Cancel Request',\n loading: cancelRequestIsPending,\n })\n }\n }\n return actions\n}\n\n/**\n * Renders a {@link RequirementItem} for a ManagedACTAccessRequirement, which allows a user to see if they have met the\n * requirement, and if not, complete a data access request to apply for access.\n *\n * This is a UI-only component that does not make any requests to external stores, and is exported for testing/Storybook only.\n */\nexport function ManagedACTAccessRequirementItemView(\n props: ManagedACTAccessRequirementItemViewProps,\n) {\n const {\n accessRequirement,\n accessRequirementStatus,\n isLoading,\n wikiPage,\n restrictionInformation,\n onRejectTerms,\n onRequestAccess,\n error,\n onCancelDataAccessRequest,\n cancelRequestIsPending,\n } = props\n const restrictionFulfillment =\n restrictionInformation?.restrictionDetails?.find(\n ar => ar.accessRequirementId === accessRequirement.id,\n )\n\n const [collapseWikiContent, setCollapseWikiContent] = useState<boolean>(true)\n\n const isApproved = accessRequirementStatus?.isApproved\n const isExempt = Boolean(restrictionFulfillment?.isExempt)\n\n const requirementTermsWikiContent = (\n <Stack gap={2}>\n {wikiPage}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.SUBMITTED && (\n <Alert className={'access-requirement-list-alert'} severity={'info'}>\n <strong>You have submitted a data access request.</strong>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.APPROVED &&\n isApproved && (\n <Alert\n className={'access-requirement-list-alert'}\n severity={'success'}\n >\n <strong>Your data access request has been approved.</strong>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.APPROVED &&\n !isApproved && (\n <Alert\n className={'access-requirement-list-alert'}\n severity={'warning'}\n >\n <Typography variant={'smallText1'} gutterBottom>\n <strong>Your data access has been revoked.</strong>\n </Typography>\n {accessRequirementStatus.expiredOn &&\n dayjs(accessRequirementStatus.expiredOn).isBefore(dayjs()) && (\n <Typography variant={'smallText1'} gutterBottom>\n Your access expired on{' '}\n {formatDate(dayjs(accessRequirementStatus.expiredOn))}.\n </Typography>\n )}\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.REJECTED && (\n <Alert className={'access-requirement-list-alert'} severity={'error'}>\n <Typography variant={'body1'} gutterBottom>\n <strong>Your data access request has been rejected.</strong>\n </Typography>\n <Typography\n variant={'body1'}\n gutterBottom\n sx={{ whiteSpace: 'pre-line' }}\n >\n {accessRequirementStatus?.currentSubmissionStatus.rejectedReason ||\n ''}\n </Typography>\n </Alert>\n )}\n {accessRequirementStatus?.currentSubmissionStatus?.state ===\n SubmissionState.CANCELLED && (\n <Alert className={'access-requirement-list-alert'} severity={'info'}>\n <Typography variant={'body1'}>\n Your data access request has been canceled.\n </Typography>\n </Alert>\n )}\n </Stack>\n )\n\n let actions: ButtonProps[] = []\n if (!isLoading && accessRequirementStatus) {\n actions = getActionButtonProps(\n accessRequirementStatus,\n isExempt,\n cancelRequestIsPending,\n {\n onRequestAccess,\n onRejectTerms,\n onCancelDataAccessRequest,\n },\n )\n }\n\n let requirementItemState: RequirementItemStatus =\n RequirementItemStatus.LOADING\n if (!isLoading && accessRequirementStatus) {\n requirementItemState = getRequirementItemUiState(\n accessRequirementStatus,\n isExempt,\n )\n }\n\n return (\n <RequirementItem\n data-testid=\"ManagedACTAccessRequirementItem\"\n status={requirementItemState}\n actions={actions}\n >\n {/* If not approved/exempt, show the terms */}\n {!isApproved && !isExempt && <>{requirementTermsWikiContent}</>}\n {(isApproved || isExempt) && (\n <>\n <Typography variant={'body1'}>\n {isApproved && APPROVED_TEXT} {isExempt && EXEMPT_TEXT}{' '}\n <Link\n role={'button'}\n onClick={() => {\n setCollapseWikiContent(!collapseWikiContent)\n }}\n >\n {collapseWikiContent ? 'View Terms' : 'Hide Terms'}\n </Link>\n </Typography>\n {!collapseWikiContent && (\n <Box sx={{ my: 1 }}>{requirementTermsWikiContent}</Box>\n )}\n </>\n )}\n {error}\n </RequirementItem>\n )\n}\n\nexport default ManagedACTAccessRequirementItemView\n"],"mappings":"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"}