synapse-react-client 4.0.41 → 4.0.42

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 (313) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts +7 -0
  3. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.d.ts.map +1 -0
  4. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js +30 -0
  5. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/AccessorRequirementHelpText.js.map +1 -0
  6. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +138 -244
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts +13 -0
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.d.ts.map +1 -0
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js +60 -0
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DucUploadSection.js.map +1 -0
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts +8 -2
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +179 -63
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts +2 -0
  18. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.d.ts.map +1 -1
  19. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +13 -13
  20. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js.map +1 -1
  21. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts +3 -2
  22. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.d.ts.map +1 -1
  23. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItemView.js.map +1 -1
  24. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts +3 -2
  25. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
  26. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
  27. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts +12 -0
  28. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.d.ts.map +1 -0
  29. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js +50 -0
  30. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/PrincipalInvestigatorFields.js.map +1 -0
  31. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  32. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +112 -143
  33. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  34. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts +4 -2
  35. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.d.ts.map +1 -1
  36. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js +8 -7
  37. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ReviewDucStep/ReviewDucStep.js.map +1 -1
  38. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +3 -2
  39. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
  40. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +79 -47
  41. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
  42. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts +12 -0
  43. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.d.ts.map +1 -0
  44. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js +51 -0
  45. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SigningOfficialFields.js.map +1 -0
  46. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts +12 -0
  47. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.d.ts.map +1 -0
  48. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js +24 -0
  49. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/eDucSignatureUtils.js.map +1 -0
  50. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts +11 -0
  51. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.d.ts.map +1 -0
  52. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/requestFlowTypes.js +0 -0
  53. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts +22 -0
  54. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.d.ts.map +1 -0
  55. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js +32 -0
  56. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/useInitializeRequestAccessors.js.map +1 -0
  57. package/dist/components/AclEditor/AclEditor.js +20 -20
  58. package/dist/components/Authentication/TwoFactorBackupCodes.js +1 -1
  59. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  60. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  61. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +79 -69
  62. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  63. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  64. package/dist/components/DataGrid/SynapseGrid.js +244 -246
  65. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  66. package/dist/components/DataGrid/components/GridLoadingState.d.ts +23 -0
  67. package/dist/components/DataGrid/components/GridLoadingState.d.ts.map +1 -0
  68. package/dist/components/DataGrid/components/GridLoadingState.js +64 -0
  69. package/dist/components/DataGrid/components/GridLoadingState.js.map +1 -0
  70. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  71. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +30 -29
  72. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  73. package/dist/components/DataGrid/useDataGridWebsocket.d.ts +60 -6
  74. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  75. package/dist/components/DataGrid/useDataGridWebsocket.js +71 -60
  76. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  77. package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts +11 -0
  78. package/dist/components/DataGrid/utils/getNamedColumnIndices.d.ts.map +1 -0
  79. package/dist/components/DataGrid/utils/getNamedColumnIndices.js +8 -0
  80. package/dist/components/DataGrid/utils/getNamedColumnIndices.js.map +1 -0
  81. package/dist/components/FilePreview/FileHandleContentRenderer.d.ts +6 -2
  82. package/dist/components/FilePreview/FileHandleContentRenderer.d.ts.map +1 -1
  83. package/dist/components/FilePreview/FileHandleContentRenderer.js +27 -14
  84. package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
  85. package/dist/components/FilePreview/PdfPreview.d.ts +1 -1
  86. package/dist/components/FilePreview/PdfPreview.d.ts.map +1 -1
  87. package/dist/components/FilePreview/PdfPreview.js +15 -16
  88. package/dist/components/FilePreview/PdfPreview.js.map +1 -1
  89. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -1
  90. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +71 -68
  91. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -1
  92. package/dist/components/FormTemplateEditor/FieldLibrary.css +1 -0
  93. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts +17 -0
  94. package/dist/components/FormTemplateEditor/FieldLibrary.d.ts.map +1 -0
  95. package/dist/components/FormTemplateEditor/FieldLibrary.js +88 -0
  96. package/dist/components/FormTemplateEditor/FieldLibrary.js.map +1 -0
  97. package/dist/components/FormTemplateEditor/FieldLibrary.module.js +5 -0
  98. package/dist/components/FormTemplateEditor/FieldLibrary.module.js.map +1 -0
  99. package/dist/components/FormTemplateEditor/FieldLibrary.module.scss +12 -0
  100. package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts +19 -0
  101. package/dist/components/FormTemplateEditor/FieldLibraryRow.d.ts.map +1 -0
  102. package/dist/components/FormTemplateEditor/FieldLibraryRow.js +115 -0
  103. package/dist/components/FormTemplateEditor/FieldLibraryRow.js.map +1 -0
  104. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.css +1 -0
  105. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts +9 -0
  106. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.d.ts.map +1 -0
  107. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js +18 -0
  108. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.js.map +1 -0
  109. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js +5 -0
  110. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.js.map +1 -0
  111. package/dist/components/FormTemplateEditor/FieldValidationErrorAlert.module.scss +4 -0
  112. package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts +21 -0
  113. package/dist/components/FormTemplateEditor/FormStructurePanel.d.ts.map +1 -0
  114. package/dist/components/FormTemplateEditor/FormStructurePanel.js +108 -0
  115. package/dist/components/FormTemplateEditor/FormStructurePanel.js.map +1 -0
  116. package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts +10 -0
  117. package/dist/components/FormTemplateEditor/FormTemplateEditor.d.ts.map +1 -0
  118. package/dist/components/FormTemplateEditor/FormTemplateEditor.js +31 -0
  119. package/dist/components/FormTemplateEditor/FormTemplateEditor.js.map +1 -0
  120. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts +15 -0
  121. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.d.ts.map +1 -0
  122. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js +234 -0
  123. package/dist/components/FormTemplateEditor/FormTemplateEditorForm.js.map +1 -0
  124. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -1
  125. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +1 -12
  126. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -1
  127. package/dist/components/FormTemplateEditor/StepCard.d.ts +25 -0
  128. package/dist/components/FormTemplateEditor/StepCard.d.ts.map +1 -0
  129. package/dist/components/FormTemplateEditor/StepCard.js +203 -0
  130. package/dist/components/FormTemplateEditor/StepCard.js.map +1 -0
  131. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts +34 -0
  132. package/dist/components/FormTemplateEditor/StepFieldRow.d.ts.map +1 -0
  133. package/dist/components/FormTemplateEditor/StepFieldRow.js +128 -0
  134. package/dist/components/FormTemplateEditor/StepFieldRow.js.map +1 -0
  135. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts +19 -0
  136. package/dist/components/FormTemplateEditor/TemplateFileHandleField.d.ts.map +1 -0
  137. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js +78 -0
  138. package/dist/components/FormTemplateEditor/TemplateFileHandleField.js.map +1 -0
  139. package/dist/components/FormTemplateEditor/dragHandle.css +1 -0
  140. package/dist/components/FormTemplateEditor/dragHandle.module.js +8 -0
  141. package/dist/components/FormTemplateEditor/dragHandle.module.js.map +1 -0
  142. package/dist/components/FormTemplateEditor/dragHandle.module.scss +22 -0
  143. package/dist/components/FormTemplateEditor/dropTarget.css +1 -0
  144. package/dist/components/FormTemplateEditor/dropTarget.module.js +5 -0
  145. package/dist/components/FormTemplateEditor/dropTarget.module.js.map +1 -0
  146. package/dist/components/FormTemplateEditor/dropTarget.module.scss +14 -0
  147. package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts +48 -0
  148. package/dist/components/FormTemplateEditor/formTemplateDraftState.d.ts.map +1 -0
  149. package/dist/components/FormTemplateEditor/formTemplateDraftState.js +126 -0
  150. package/dist/components/FormTemplateEditor/formTemplateDraftState.js.map +1 -0
  151. package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts +35 -0
  152. package/dist/components/FormTemplateEditor/formTemplateSchema.d.ts.map +1 -0
  153. package/dist/components/FormTemplateEditor/formTemplateSchema.js +35 -0
  154. package/dist/components/FormTemplateEditor/formTemplateSchema.js.map +1 -0
  155. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +3 -1
  156. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -1
  157. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +26 -8
  158. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  159. package/dist/components/FormTemplateEditor/sortableIds.d.ts +23 -0
  160. package/dist/components/FormTemplateEditor/sortableIds.d.ts.map +1 -0
  161. package/dist/components/FormTemplateEditor/sortableIds.js +24 -0
  162. package/dist/components/FormTemplateEditor/sortableIds.js.map +1 -0
  163. package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts +33 -0
  164. package/dist/components/FormTemplateEditor/useFormTemplateDraft.d.ts.map +1 -0
  165. package/dist/components/FormTemplateEditor/useFormTemplateDraft.js +59 -0
  166. package/dist/components/FormTemplateEditor/useFormTemplateDraft.js.map +1 -0
  167. package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts +9 -0
  168. package/dist/components/FormTemplateEditor/useFormTemplateDrag.d.ts.map +1 -0
  169. package/dist/components/FormTemplateEditor/useFormTemplateDrag.js +66 -0
  170. package/dist/components/FormTemplateEditor/useFormTemplateDrag.js.map +1 -0
  171. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -1
  172. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +34 -19
  173. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -1
  174. package/dist/components/FormTemplateEditor/utils.d.ts +2 -2
  175. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -1
  176. package/dist/components/FormTemplateEditor/utils.js +7 -10
  177. package/dist/components/FormTemplateEditor/utils.js.map +1 -1
  178. package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts +11 -0
  179. package/dist/components/JsonSchemaForm/widgets/SelectWidget.d.ts.map +1 -1
  180. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js +28 -19
  181. package/dist/components/JsonSchemaForm/widgets/SelectWidget.js.map +1 -1
  182. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +1 -0
  183. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  184. package/dist/components/QueryBuilder/FilterConditionRow.js +102 -105
  185. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  186. package/dist/components/QueryBuilder/FilterGroupNode.js +6 -6
  187. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  188. package/dist/components/QueryBuilder/QueryBuilderControls.js +88 -81
  189. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  190. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +7 -0
  191. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  192. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  193. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +2 -1
  194. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -1
  195. package/dist/components/QueryBuilder/qbTreeToReadable.js +24 -20
  196. package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -1
  197. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -1
  198. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +2 -2
  199. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -1
  200. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +1 -1
  201. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +16 -0
  202. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  203. package/dist/components/QueryBuilder/queryBuilderMetadata.js +13 -5
  204. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  205. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts +18 -0
  206. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -0
  207. package/dist/components/QueryBuilder/useQBValueDisplayName.js +64 -0
  208. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -0
  209. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +6 -6
  210. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts +1 -0
  211. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.d.ts.map +1 -1
  212. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +13 -11
  213. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js.map +1 -1
  214. package/dist/components/SynapseTable/SearchV2.js +4 -4
  215. package/dist/components/ToastMessage/ToastMessage.d.ts.map +1 -1
  216. package/dist/components/ToastMessage/ToastMessage.js +25 -22
  217. package/dist/components/ToastMessage/ToastMessage.js.map +1 -1
  218. package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts +7 -0
  219. package/dist/components/dataaccess/FormTemplateEditorRoute.d.ts.map +1 -0
  220. package/dist/components/dataaccess/FormTemplateEditorRoute.js +26 -0
  221. package/dist/components/dataaccess/FormTemplateEditorRoute.js.map +1 -0
  222. package/dist/components/dataaccess/FormTemplateTable.d.ts +10 -0
  223. package/dist/components/dataaccess/FormTemplateTable.d.ts.map +1 -0
  224. package/dist/components/dataaccess/FormTemplateTable.js +124 -0
  225. package/dist/components/dataaccess/FormTemplateTable.js.map +1 -0
  226. package/dist/components/dataaccess/ReviewerDashboard.d.ts.map +1 -1
  227. package/dist/components/dataaccess/ReviewerDashboard.js +80 -50
  228. package/dist/components/dataaccess/ReviewerDashboard.js.map +1 -1
  229. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  230. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -0
  231. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  232. package/dist/components/widgets/FileHandleLink.d.ts +12 -2
  233. package/dist/components/widgets/FileHandleLink.d.ts.map +1 -1
  234. package/dist/components/widgets/FileHandleLink.js +25 -29
  235. package/dist/components/widgets/FileHandleLink.js.map +1 -1
  236. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -0
  237. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
  238. package/dist/mocks/accessRequirement/mockFormTemplates.js +8 -2
  239. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
  240. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
  241. package/dist/mocks/accessRequirement/mockJsonSchemas.js +17 -31
  242. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
  243. package/dist/mocks/msw/handlers/authHandlers.d.ts +1 -0
  244. package/dist/mocks/msw/handlers/authHandlers.d.ts.map +1 -1
  245. package/dist/mocks/msw/handlers/authHandlers.js +6 -2
  246. package/dist/mocks/msw/handlers/authHandlers.js.map +1 -1
  247. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts +2 -0
  248. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
  249. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +52 -46
  250. package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
  251. package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
  252. package/dist/mocks/msw/handlers/fileHandlers.js +25 -21
  253. package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
  254. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +2 -1
  255. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -1
  256. package/dist/mocks/msw/handlers/formTemplateHandlers.js +18 -18
  257. package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -1
  258. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +8 -0
  259. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  260. package/dist/mocks/msw/handlers/schemaHandlers.js +20 -3
  261. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  262. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts +8 -0
  263. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.d.ts.map +1 -0
  264. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js +19 -0
  265. package/dist/mocks/msw/handlers/twoFactorEnrollmentHandlers.js.map +1 -0
  266. package/dist/style/abstracts/_cssVariables.scss +13 -0
  267. package/dist/style/components/_toasts.scss +10 -1
  268. package/dist/style/main.css +1 -1
  269. package/dist/synapse-queries/KeyFactory.d.ts +8 -1
  270. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  271. package/dist/synapse-queries/KeyFactory.js +17 -4
  272. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  273. package/dist/synapse-queries/auth/index.d.ts +1 -0
  274. package/dist/synapse-queries/auth/index.d.ts.map +1 -1
  275. package/dist/synapse-queries/auth/index.js +2 -1
  276. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts +11 -0
  277. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.d.ts.map +1 -0
  278. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +19 -0
  279. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -0
  280. package/dist/synapse-queries/dataaccess/index.js +5 -5
  281. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +18 -0
  282. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  283. package/dist/synapse-queries/dataaccess/useEDuc.js +33 -1
  284. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  285. package/dist/synapse-queries/file/useDirectUploadToS3.js +6 -6
  286. package/dist/synapse-queries/file/useFileHandle.d.ts +8 -0
  287. package/dist/synapse-queries/file/useFileHandle.d.ts.map +1 -1
  288. package/dist/synapse-queries/file/useFileHandle.js +15 -6
  289. package/dist/synapse-queries/file/useFileHandle.js.map +1 -1
  290. package/dist/synapse-queries/index.js +260 -253
  291. package/dist/synapse-queries/jsonschema/index.js +2 -2
  292. package/dist/synapse-queries/jsonschema/useSchema.d.ts +5 -0
  293. package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -1
  294. package/dist/synapse-queries/jsonschema/useSchema.js +9 -1
  295. package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -1
  296. package/dist/tsconfig.build.tsbuildinfo +1 -1
  297. package/dist/utils/APIConstants.d.ts +1 -0
  298. package/dist/utils/APIConstants.d.ts.map +1 -1
  299. package/dist/utils/APIConstants.js +2 -2
  300. package/dist/utils/APIConstants.js.map +1 -1
  301. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  302. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  303. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  304. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  305. package/dist/utils/functions/toPascalCase.d.ts +6 -0
  306. package/dist/utils/functions/toPascalCase.d.ts.map +1 -0
  307. package/dist/utils/functions/toPascalCase.js +8 -0
  308. package/dist/utils/functions/toPascalCase.js.map +1 -0
  309. package/dist/utils/jsonschema/submissionContext.d.ts +5 -0
  310. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -1
  311. package/dist/utils/jsonschema/submissionContext.js +22 -30
  312. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  313. package/package.json +10 -9
@@ -1 +1 @@
1
- {"version":3,"file":"useDataGridWebsocket.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAI/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKvD,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAA;IAChC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAA;IACR,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC3C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAgHD,eAAO,MAAM,qBAAqB,EAAE,cAWnC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;CACnC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAyD1D,MAAM,aAAa,MAAM;;;;;EA+IxC"}
1
+ {"version":3,"file":"useDataGridWebsocket.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,iBAAiB,EAClB,MAAM,qCAAqC,CAAA;AAI5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAKvD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB;;;;;OAKG;IACH,uBAAuB,EAAE,OAAO,CAAA;IAChC;;;;;OAKG;IACH,uBAAuB,EAAE,OAAO,CAAA;IAChC;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAA;IACR,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC3C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,EAAE,OAAO,CAAA;CACxB;AAGD,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,mBAAmB,CAAA;IACzB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CACrE,GACD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAA;AAGjD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,eAAe,GACtB,cAAc,CAyGhB;AAED,eAAO,MAAM,qBAAqB,EAAE,cAYnC,CAAA;AAmBD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAClD,OAAO,CAOT;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAA;CACnC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAyD1D,MAAM,aAAa,MAAM;;;;EAuIxC"}
@@ -15,6 +15,7 @@ function l(e, t) {
15
15
  sessionId: t.payload.sessionId
16
16
  },
17
17
  hasCompletedInitialSync: n ? e.hasCompletedInitialSync : !1,
18
+ hasCompletedInitialLoad: n ? e.hasCompletedInitialLoad : !1,
18
19
  isSyncing: !1,
19
20
  model: n ? e.model : null,
20
21
  isConnected: !1,
@@ -37,12 +38,17 @@ function l(e, t) {
37
38
  ...e,
38
39
  isConnected: !1,
39
40
  isConnecting: !1,
40
- isSyncing: !1
41
+ isSyncing: !1,
42
+ hasCompletedInitialSync: e.hasCompletedInitialLoad ? e.hasCompletedInitialSync : !1
41
43
  };
42
44
  case "GRID_READY": return {
43
45
  ...e,
44
46
  hasCompletedInitialSync: !0
45
47
  };
48
+ case "INITIAL_LOAD_COMPLETE": return {
49
+ ...e,
50
+ hasCompletedInitialLoad: !0
51
+ };
46
52
  case "SYNC_STARTED": return {
47
53
  ...e,
48
54
  isSyncing: !0
@@ -70,6 +76,7 @@ function l(e, t) {
70
76
  var u = {
71
77
  model: null,
72
78
  hasCompletedInitialSync: !1,
79
+ hasCompletedInitialLoad: !1,
73
80
  isSyncing: !1,
74
81
  isConnected: !1,
75
82
  isConnecting: !1,
@@ -79,35 +86,43 @@ var u = {
79
86
  connectionError: null,
80
87
  websocketError: null
81
88
  };
82
- function d(d) {
83
- let [f, p] = o(l, u), m = s(0), h = s(null), g = t(f.model), _ = c(), { mutateAsync: v, isPending: y, error: b, presignedUrl: x, reset: S, clearPresignedUrl: C } = e(), w = r((e) => {
84
- p({
89
+ function d(e, t) {
90
+ if (!e?.api.getSnapshot() || !t) return !1;
91
+ let { columnNames: n, columnOrder: r, rows: i } = t, a = n.length >= 1, o = r.length >= 1, s = i.length >= 0;
92
+ return a && o && s;
93
+ }
94
+ function f(e, t) {
95
+ return !e.hasCompletedInitialLoad && e.hasCompletedInitialSync && !e.isSyncing && d(e.model, t);
96
+ }
97
+ function p(d) {
98
+ let [p, m] = o(l, u), h = s(0), g = s(null), _ = t(p.model), v = c(), { mutateAsync: y, isPending: b, error: x, presignedUrl: S, reset: C, clearPresignedUrl: w } = e(), T = r((e) => {
99
+ m({
85
100
  type: "MODEL_CREATED",
86
101
  payload: e
87
102
  });
88
- }, [p]), T = a(() => ({
103
+ }, [m]), E = a(() => ({
89
104
  onGridReady: () => {
90
- p({ type: "GRID_READY" }), d?.onGridReady?.();
105
+ m({ type: "GRID_READY" }), d?.onGridReady?.();
91
106
  },
92
- onStatusChange: (e) => p({ type: e ? "CONNECTION_OPENED" : "CONNECTION_CLOSED" }),
93
- onModelCreate: w,
107
+ onStatusChange: (e) => m({ type: e ? "CONNECTION_OPENED" : "CONNECTION_CLOSED" }),
108
+ onModelCreate: T,
94
109
  onReplicaConnected: d?.onReplicaConnected,
95
110
  onReplicaDisconnected: d?.onReplicaDisconnected,
96
- onSyncStart: () => p({ type: "SYNC_STARTED" }),
97
- onSyncEnd: () => p({ type: "SYNC_ENDED" }),
98
- onError: (e) => p({
111
+ onSyncStart: () => m({ type: "SYNC_STARTED" }),
112
+ onSyncEnd: () => m({ type: "SYNC_ENDED" }),
113
+ onError: (e) => m({
99
114
  type: "WEBSOCKET_ERROR",
100
115
  payload: n(e)
101
116
  })
102
117
  }), [
103
- w,
118
+ T,
104
119
  d?.onGridReady,
105
120
  d?.onReplicaConnected,
106
121
  d?.onReplicaDisconnected
107
- ]), E = r((e, t) => {
108
- S(), (!f.connectionParams || f.connectionParams.replicaId !== e || f.connectionParams.sessionId !== t) && C(), m.current += 1;
109
- let n = m.current;
110
- p({
122
+ ]), D = r((e, t) => {
123
+ C(), (!p.connectionParams || p.connectionParams.replicaId !== e || p.connectionParams.sessionId !== t) && w(), h.current += 1;
124
+ let n = h.current;
125
+ m({
111
126
  type: "CONNECT_REQUESTED",
112
127
  payload: {
113
128
  replicaId: e,
@@ -116,75 +131,71 @@ function d(d) {
116
131
  }
117
132
  });
118
133
  }, [
119
- p,
120
- f.connectionParams,
121
- S,
134
+ m,
135
+ p.connectionParams,
122
136
  C,
123
- m
137
+ w,
138
+ h
124
139
  ]);
125
140
  i(() => {
126
- let { connectionParams: e, connectionAttemptId: t } = f;
127
- !e || t === null || f.isConnected || f.isConnecting || y || b || f.connectionError || !_ || (h.current = t, v({
141
+ let { connectionParams: e, connectionAttemptId: t } = p;
142
+ !e || t === null || p.isConnected || p.isConnecting || b || x || p.connectionError || !v || (g.current = t, y({
128
143
  replicaId: e.replicaId,
129
144
  sessionId: e.sessionId,
130
145
  websocketOptions: {
131
- ...T,
132
- model: f.model
146
+ ...E,
147
+ model: p.model
133
148
  }
134
149
  }).then((e) => {
135
- if (h.current !== t) {
150
+ if (g.current !== t) {
136
151
  e.disconnect();
137
152
  return;
138
153
  }
139
- p({
154
+ m({
140
155
  type: "CONNECTION_ESTABLISHED",
141
156
  payload: e
142
157
  });
143
158
  }).catch((e) => {
144
- p({
159
+ m({
145
160
  type: "CONNECTION_ERROR",
146
161
  payload: e
147
162
  }), console.error("Failed to establish WebSocket", e);
148
163
  }));
149
164
  }, [
150
- f,
151
- f.connectionParams,
152
- f.connectionAttemptId,
153
- f.isConnected,
154
- f.isConnecting,
155
- y,
165
+ p,
166
+ p.connectionParams,
167
+ p.connectionAttemptId,
168
+ p.isConnected,
169
+ p.isConnecting,
156
170
  b,
157
- _,
171
+ x,
158
172
  v,
159
- T
173
+ y,
174
+ E
160
175
  ]);
161
- let D = s(null);
162
- i(() => {
163
- let e = D.current, t = f.connectionParams;
164
- e && t && (e.replicaId !== t.replicaId || e.sessionId !== t.sessionId) && f.websocketInstance?.disconnect(), D.current = t;
165
- }, [f.connectionParams, f.websocketInstance]), i(() => () => {
166
- f.websocketInstance?.disconnect(), h.current = null;
167
- }, [f.websocketInstance]);
168
- function O(e) {
169
- if (!e?.api.getSnapshot() || !g) return !1;
170
- let { columnNames: t, columnOrder: n, rows: r } = g, i = t.length >= 1, a = n.length >= 1, o = r.length >= 0;
171
- return i && a && o;
172
- }
173
- return {
174
- isConnected: f.isConnected,
175
- websocketInstance: f.websocketInstance,
176
- hasCompletedInitialSync: f.hasCompletedInitialSync,
177
- isSyncing: f.isSyncing,
178
- model: f.model,
179
- modelSnapshot: g,
180
- connect: E,
181
- presignedUrl: x,
182
- errorEstablishingWebsocketConnection: f.connectionError ?? b,
183
- websocketError: f.websocketError,
184
- hasSufficientData: O(f.model)
176
+ let O = s(null);
177
+ return i(() => {
178
+ let e = O.current, t = p.connectionParams;
179
+ e && t && (e.replicaId !== t.replicaId || e.sessionId !== t.sessionId) && p.websocketInstance?.disconnect(), O.current = t;
180
+ }, [p.connectionParams, p.websocketInstance]), i(() => () => {
181
+ p.websocketInstance?.disconnect(), g.current = null;
182
+ }, [p.websocketInstance]), i(() => {
183
+ f(p, _) && m({ type: "INITIAL_LOAD_COMPLETE" });
184
+ }, [p, _]), {
185
+ isConnected: p.isConnected,
186
+ websocketInstance: p.websocketInstance,
187
+ hasCompletedInitialSync: p.hasCompletedInitialSync,
188
+ hasCompletedInitialLoad: p.hasCompletedInitialLoad,
189
+ isSyncing: p.isSyncing,
190
+ model: p.model,
191
+ modelSnapshot: _,
192
+ connect: D,
193
+ presignedUrl: S,
194
+ errorEstablishingWebsocketConnection: p.connectionError ?? x,
195
+ websocketError: p.websocketError
185
196
  };
186
197
  }
187
198
  //#endregion
188
- export { u as initialWebSocketState, d as useDataGridWebSocket };
199
+ export { u as initialWebSocketState, f as isInitialLoadReady, p as useDataGridWebSocket, l as websocketReducer };
189
200
 
190
201
  //# sourceMappingURL=useDataGridWebsocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDataGridWebsocket.js","names":["GridModel","useCRDTModelView","normalizeWebsocketError","useCallback","useEffect","useMemo","useReducer","useRef","DataGridWebSocket","useEstablishWebsocketConnection","useDocumentVisibility","WebSocketState","model","hasCompletedInitialSync","isSyncing","isConnected","isConnecting","connectionParams","replicaId","sessionId","websocketInstance","connectionAttemptId","connectionError","websocketError","WebSocketAction","type","payload","attemptId","websocketReducer","state","action","isSameConnection","initialWebSocketState","UseDataGridWebSocketOptions","onGridReady","onReplicaConnected","onReplicaDisconnected","useDataGridWebSocket","options","dispatch","connectionAttemptCounter","activeConnectionAttemptIdRef","modelSnapshot","isDocumentVisible","mutateAsync","establishWebsocketConnection","isPending","isEstablishingWebsocketConnection","error","errorEstablishingWebsocketConnection","presignedUrl","reset","resetEstablishWebsocketConnection","clearPresignedUrl","handleModelCreate","newModel","websocketOptionsWithoutModel","onStatusChange","open","onModelCreate","onSyncStart","onSyncEnd","onError","connect","isDifferentConnection","current","websocketOptions","then","ws","disconnect","catch","err","console","previousConnectionParams","previous","isModelRenderable","api","getSnapshot","columnNames","columnOrder","rows","columnsReady","length","orderReady","rowsReady","hasSufficientData"],"sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"sourcesContent":["import { GridModel } from '@/components/DataGrid/DataGridTypes'\nimport { useCRDTModelView } from '@/components/DataGrid/useCRDTModelView'\nimport { normalizeWebsocketError } from '@/components/DataGrid/utils/normalizeWebsocketError'\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { DataGridWebSocket } from './DataGridWebSocket'\nimport { useEstablishWebsocketConnection } from '@/synapse-queries/grid/useEstablishWebsocketConnection'\nimport { useDocumentVisibility } from '@react-hookz/web'\n\n// State type\ninterface WebSocketState {\n model: GridModel | null\n /**\n * True if the WebSocket has finished the initial sync and can process CRDT updates.\n * Corresponds to the `GRID_READY` action.\n */\n hasCompletedInitialSync: boolean\n /**\n * True while a clock-sync exchange is in progress. Set on every outgoing\n * `synchronize-clock` and cleared on `ResponseComplete`, which the server\n * sends once per exchange to signal \"we're synchronized\" — not per request.\n */\n isSyncing: boolean\n isConnected: boolean\n isConnecting: boolean\n connectionParams: {\n replicaId: number\n sessionId: string\n } | null\n websocketInstance: DataGridWebSocket | null\n connectionAttemptId: number | null\n connectionError: unknown\n websocketError: unknown\n}\n\n// Action types\ntype WebSocketAction =\n | {\n type: 'CONNECT_REQUESTED'\n payload: { replicaId: number; sessionId: string; attemptId: number }\n }\n | { type: 'CONNECTION_ESTABLISHED'; payload: DataGridWebSocket }\n | { type: 'CONNECTION_OPENED' }\n | { type: 'CONNECTION_CLOSED' }\n | { type: 'GRID_READY' }\n | { type: 'SYNC_STARTED' }\n | { type: 'SYNC_ENDED' }\n | { type: 'MODEL_CREATED'; payload: GridModel }\n | { type: 'CONNECTION_ERROR'; payload: unknown }\n | { type: 'WEBSOCKET_ERROR'; payload: unknown }\n\n// Reducer function\nfunction websocketReducer(\n state: WebSocketState,\n action: WebSocketAction,\n): WebSocketState {\n switch (action.type) {\n case 'CONNECT_REQUESTED': {\n const isSameConnection =\n state.connectionParams &&\n state.connectionParams.replicaId === action.payload.replicaId &&\n state.connectionParams.sessionId === action.payload.sessionId\n\n return {\n ...state,\n connectionParams: {\n replicaId: action.payload.replicaId,\n sessionId: action.payload.sessionId,\n },\n hasCompletedInitialSync: isSameConnection\n ? state.hasCompletedInitialSync\n : false,\n isSyncing: false,\n model: isSameConnection ? state.model : null,\n isConnected: false,\n isConnecting: false,\n connectionAttemptId: action.payload.attemptId,\n connectionError: null,\n }\n }\n\n case 'CONNECTION_ESTABLISHED':\n return {\n ...state,\n websocketInstance: action.payload,\n isConnecting: true,\n }\n\n case 'CONNECTION_OPENED':\n return {\n ...state,\n isConnected: true,\n isConnecting: false,\n }\n\n case 'CONNECTION_CLOSED':\n return {\n ...state,\n isConnected: false,\n isConnecting: false,\n isSyncing: false,\n }\n\n case 'GRID_READY':\n return {\n ...state,\n hasCompletedInitialSync: true,\n }\n\n case 'SYNC_STARTED':\n return {\n ...state,\n isSyncing: true,\n }\n\n case 'SYNC_ENDED':\n return {\n ...state,\n isSyncing: false,\n }\n\n case 'MODEL_CREATED':\n return {\n ...state,\n model: action.payload,\n }\n\n case 'CONNECTION_ERROR':\n return {\n ...state,\n connectionError: action.payload,\n isConnecting: false,\n }\n\n case 'WEBSOCKET_ERROR':\n return {\n ...state,\n websocketError: action.payload,\n }\n\n default:\n return state\n }\n}\n\nexport const initialWebSocketState: WebSocketState = {\n model: null,\n hasCompletedInitialSync: false,\n isSyncing: false,\n isConnected: false,\n isConnecting: false,\n connectionParams: null,\n websocketInstance: null,\n connectionAttemptId: null,\n connectionError: null,\n websocketError: null,\n}\n\n/**\n * Custom hook to manage a DataGrid WebSocket connection.\n * Handles:\n * - Fetching presigned URLs via a mutation hook\n * - Instantiating the DataGridWebSocket\n * - Connection status tracking\n * - Reconnection on disconnect\n * - Grid model updates and snapshot tracking\n */\nexport interface UseDataGridWebSocketOptions {\n onGridReady?: () => void\n onReplicaConnected?: () => void\n onReplicaDisconnected?: () => void\n}\n\nexport function useDataGridWebSocket(options?: UseDataGridWebSocketOptions) {\n const [state, dispatch] = useReducer(websocketReducer, initialWebSocketState)\n\n const connectionAttemptCounter = useRef(0)\n const activeConnectionAttemptIdRef = useRef<number | null>(null)\n\n const modelSnapshot = useCRDTModelView(state.model)\n\n const isDocumentVisible = useDocumentVisibility()\n\n const {\n mutateAsync: establishWebsocketConnection,\n isPending: isEstablishingWebsocketConnection,\n error: errorEstablishingWebsocketConnection,\n presignedUrl,\n reset: resetEstablishWebsocketConnection,\n clearPresignedUrl,\n } = useEstablishWebsocketConnection()\n\n // Update model creation handler - only set model, don't reset to null on disconnect\n const handleModelCreate = useCallback(\n (newModel: GridModel) => {\n dispatch({ type: 'MODEL_CREATED', payload: newModel })\n },\n [dispatch],\n )\n\n // Memoize websocket options to prevent unnecessary re-renders (excluding model to avoid circular deps)\n const websocketOptionsWithoutModel = useMemo(\n () => ({\n onGridReady: () => {\n dispatch({ type: 'GRID_READY' })\n options?.onGridReady?.()\n },\n onStatusChange: (open: boolean) =>\n dispatch({ type: open ? 'CONNECTION_OPENED' : 'CONNECTION_CLOSED' }),\n onModelCreate: handleModelCreate,\n onReplicaConnected: options?.onReplicaConnected,\n onReplicaDisconnected: options?.onReplicaDisconnected,\n onSyncStart: () => dispatch({ type: 'SYNC_STARTED' }),\n onSyncEnd: () => dispatch({ type: 'SYNC_ENDED' }),\n onError: (error: unknown) =>\n dispatch({\n type: 'WEBSOCKET_ERROR',\n payload: normalizeWebsocketError(error),\n }),\n }),\n [\n handleModelCreate,\n options?.onGridReady,\n options?.onReplicaConnected,\n options?.onReplicaDisconnected,\n ],\n )\n\n // Initiate (or re-initiate) a connection\n const connect = useCallback(\n (replicaId: number, sessionId: string) => {\n resetEstablishWebsocketConnection()\n\n const isDifferentConnection =\n !state.connectionParams ||\n state.connectionParams.replicaId !== replicaId ||\n state.connectionParams.sessionId !== sessionId\n\n if (isDifferentConnection) {\n clearPresignedUrl()\n }\n\n connectionAttemptCounter.current += 1\n const attemptId = connectionAttemptCounter.current\n\n dispatch({\n type: 'CONNECT_REQUESTED',\n payload: { replicaId, sessionId, attemptId },\n })\n },\n [\n dispatch,\n state.connectionParams,\n resetEstablishWebsocketConnection,\n clearPresignedUrl,\n connectionAttemptCounter,\n ],\n )\n\n /**\n * Establish the WebSocket connection when conditions are met.\n * Uses the current model state at connection time for reconnections to the same session.\n * Note: Changes to `model` alone do NOT trigger reconnection - only changes to connection\n * params, visibility, or connection status will trigger a new connection attempt.\n */\n useEffect(() => {\n // Don't attempt connection if conditions aren't met\n const { connectionParams, connectionAttemptId } = state\n\n if (\n !connectionParams ||\n connectionAttemptId === null ||\n state.isConnected ||\n state.isConnecting ||\n isEstablishingWebsocketConnection ||\n errorEstablishingWebsocketConnection ||\n state.connectionError ||\n !isDocumentVisible\n ) {\n return\n }\n\n activeConnectionAttemptIdRef.current = connectionAttemptId\n\n // Use current model state for reconnections to same session\n // (model may have been created by a previous connection)\n establishWebsocketConnection({\n replicaId: connectionParams.replicaId,\n sessionId: connectionParams.sessionId,\n websocketOptions: {\n ...websocketOptionsWithoutModel,\n model: state.model, // Current model at connection time\n },\n })\n .then(ws => {\n if (activeConnectionAttemptIdRef.current !== connectionAttemptId) {\n ws.disconnect()\n return\n }\n\n dispatch({ type: 'CONNECTION_ESTABLISHED', payload: ws })\n })\n .catch(err => {\n dispatch({ type: 'CONNECTION_ERROR', payload: err })\n console.error('Failed to establish WebSocket', err)\n })\n }, [\n state,\n state.connectionParams,\n state.connectionAttemptId,\n state.isConnected,\n state.isConnecting,\n isEstablishingWebsocketConnection,\n errorEstablishingWebsocketConnection,\n isDocumentVisible,\n establishWebsocketConnection,\n websocketOptionsWithoutModel,\n ])\n\n const previousConnectionParams =\n useRef<WebSocketState['connectionParams']>(null)\n\n useEffect(() => {\n const previous = previousConnectionParams.current\n const current = state.connectionParams\n\n if (\n previous &&\n current &&\n (previous.replicaId !== current.replicaId ||\n previous.sessionId !== current.sessionId)\n ) {\n state.websocketInstance?.disconnect()\n }\n\n previousConnectionParams.current = current\n }, [state.connectionParams, state.websocketInstance])\n\n useEffect(() => {\n return () => {\n state.websocketInstance?.disconnect()\n activeConnectionAttemptIdRef.current = null\n }\n }, [state.websocketInstance])\n\n /**\n * Checks if the model snapshot contains the minimum data required for rendering (columns and rows).\n */\n function isModelRenderable(model: GridModel | null) {\n if (!model?.api.getSnapshot() || !modelSnapshot) {\n return false\n }\n const { columnNames, columnOrder, rows } = modelSnapshot\n const columnsReady = columnNames.length >= 1\n const orderReady = columnOrder.length >= 1\n const rowsReady = rows.length >= 0\n return columnsReady && orderReady && rowsReady\n }\n\n return {\n isConnected: state.isConnected,\n websocketInstance: state.websocketInstance,\n hasCompletedInitialSync: state.hasCompletedInitialSync,\n isSyncing: state.isSyncing,\n model: state.model,\n modelSnapshot,\n connect,\n presignedUrl,\n errorEstablishingWebsocketConnection:\n state.connectionError ?? errorEstablishingWebsocketConnection,\n websocketError: state.websocketError,\n hasSufficientData: isModelRenderable(state.model),\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useDataGridWebsocket.js","names":["GridModel","GridModelSnapshot","useCRDTModelView","normalizeWebsocketError","useCallback","useEffect","useMemo","useReducer","useRef","DataGridWebSocket","useEstablishWebsocketConnection","useDocumentVisibility","WebSocketState","model","hasCompletedInitialSync","hasCompletedInitialLoad","isSyncing","isConnected","isConnecting","connectionParams","replicaId","sessionId","websocketInstance","connectionAttemptId","connectionError","websocketError","WebSocketAction","type","payload","attemptId","websocketReducer","state","action","isSameConnection","initialWebSocketState","isModelRenderable","modelSnapshot","api","getSnapshot","columnNames","columnOrder","rows","columnsReady","length","orderReady","rowsReady","isInitialLoadReady","UseDataGridWebSocketOptions","onGridReady","onReplicaConnected","onReplicaDisconnected","useDataGridWebSocket","options","dispatch","connectionAttemptCounter","activeConnectionAttemptIdRef","isDocumentVisible","mutateAsync","establishWebsocketConnection","isPending","isEstablishingWebsocketConnection","error","errorEstablishingWebsocketConnection","presignedUrl","reset","resetEstablishWebsocketConnection","clearPresignedUrl","handleModelCreate","newModel","websocketOptionsWithoutModel","onStatusChange","open","onModelCreate","onSyncStart","onSyncEnd","onError","connect","isDifferentConnection","current","websocketOptions","then","ws","disconnect","catch","err","console","previousConnectionParams","previous"],"sources":["../../../src/components/DataGrid/useDataGridWebsocket.ts"],"sourcesContent":["import {\n GridModel,\n GridModelSnapshot,\n} from '@/components/DataGrid/DataGridTypes'\nimport { useCRDTModelView } from '@/components/DataGrid/useCRDTModelView'\nimport { normalizeWebsocketError } from '@/components/DataGrid/utils/normalizeWebsocketError'\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { DataGridWebSocket } from './DataGridWebSocket'\nimport { useEstablishWebsocketConnection } from '@/synapse-queries/grid/useEstablishWebsocketConnection'\nimport { useDocumentVisibility } from '@react-hookz/web'\n\n// State type\nexport interface WebSocketState {\n model: GridModel | null\n /**\n * True if the WebSocket has finished a sync exchange on the current connection\n * and can process CRDT updates. Set by `GRID_READY`; cleared on disconnect until\n * `hasCompletedInitialLoad` is set, since a drop mid-replay leaves the model\n * holding only part of the server's data.\n */\n hasCompletedInitialSync: boolean\n /**\n * True once the first connection for the current session has finished replaying\n * the server's data into the model. A one-way transition: later sync activity\n * never takes it back to false, and only connecting to a different\n * session/replica resets it.\n */\n hasCompletedInitialLoad: boolean\n /**\n * True while a clock-sync exchange is in progress. Set on every outgoing\n * `synchronize-clock` and cleared on `ResponseComplete`, which the server\n * sends once per exchange to signal \"we're synchronized\" — not per request.\n */\n isSyncing: boolean\n isConnected: boolean\n isConnecting: boolean\n connectionParams: {\n replicaId: number\n sessionId: string\n } | null\n websocketInstance: DataGridWebSocket | null\n connectionAttemptId: number | null\n connectionError: unknown\n websocketError: unknown\n}\n\n// Action types\nexport type WebSocketAction =\n | {\n type: 'CONNECT_REQUESTED'\n payload: { replicaId: number; sessionId: string; attemptId: number }\n }\n | { type: 'CONNECTION_ESTABLISHED'; payload: DataGridWebSocket }\n | { type: 'CONNECTION_OPENED' }\n | { type: 'CONNECTION_CLOSED' }\n | { type: 'GRID_READY' }\n | { type: 'INITIAL_LOAD_COMPLETE' }\n | { type: 'SYNC_STARTED' }\n | { type: 'SYNC_ENDED' }\n | { type: 'MODEL_CREATED'; payload: GridModel }\n | { type: 'CONNECTION_ERROR'; payload: unknown }\n | { type: 'WEBSOCKET_ERROR'; payload: unknown }\n\n// Reducer function\nexport function websocketReducer(\n state: WebSocketState,\n action: WebSocketAction,\n): WebSocketState {\n switch (action.type) {\n case 'CONNECT_REQUESTED': {\n const isSameConnection =\n state.connectionParams &&\n state.connectionParams.replicaId === action.payload.replicaId &&\n state.connectionParams.sessionId === action.payload.sessionId\n\n return {\n ...state,\n connectionParams: {\n replicaId: action.payload.replicaId,\n sessionId: action.payload.sessionId,\n },\n hasCompletedInitialSync: isSameConnection\n ? state.hasCompletedInitialSync\n : false,\n hasCompletedInitialLoad: isSameConnection\n ? state.hasCompletedInitialLoad\n : false,\n isSyncing: false,\n model: isSameConnection ? state.model : null,\n isConnected: false,\n isConnecting: false,\n connectionAttemptId: action.payload.attemptId,\n connectionError: null,\n }\n }\n\n case 'CONNECTION_ESTABLISHED':\n return {\n ...state,\n websocketInstance: action.payload,\n isConnecting: true,\n }\n\n case 'CONNECTION_OPENED':\n return {\n ...state,\n isConnected: true,\n isConnecting: false,\n }\n\n case 'CONNECTION_CLOSED':\n return {\n ...state,\n isConnected: false,\n isConnecting: false,\n isSyncing: false,\n // A drop before the initial load finishes invalidates the completed-exchange\n // signal: the model may hold only the part of the data that arrived so far.\n // Clearing it makes the readiness gate wait for the reconnect's replay\n // instead of latching onto a partially loaded model. Once the load is done,\n // drops are ordinary reconnects and the signal must survive them.\n hasCompletedInitialSync: state.hasCompletedInitialLoad\n ? state.hasCompletedInitialSync\n : false,\n }\n\n case 'GRID_READY':\n return {\n ...state,\n hasCompletedInitialSync: true,\n }\n\n case 'INITIAL_LOAD_COMPLETE':\n return {\n ...state,\n hasCompletedInitialLoad: true,\n }\n\n case 'SYNC_STARTED':\n return {\n ...state,\n isSyncing: true,\n }\n\n case 'SYNC_ENDED':\n return {\n ...state,\n isSyncing: false,\n }\n\n case 'MODEL_CREATED':\n return {\n ...state,\n model: action.payload,\n }\n\n case 'CONNECTION_ERROR':\n return {\n ...state,\n connectionError: action.payload,\n isConnecting: false,\n }\n\n case 'WEBSOCKET_ERROR':\n return {\n ...state,\n websocketError: action.payload,\n }\n\n default:\n return state\n }\n}\n\nexport const initialWebSocketState: WebSocketState = {\n model: null,\n hasCompletedInitialSync: false,\n hasCompletedInitialLoad: false,\n isSyncing: false,\n isConnected: false,\n isConnecting: false,\n connectionParams: null,\n websocketInstance: null,\n connectionAttemptId: null,\n connectionError: null,\n websocketError: null,\n}\n\n/**\n * Checks if the model snapshot contains the minimum data required for rendering (columns and rows).\n */\nfunction isModelRenderable(\n model: GridModel | null,\n modelSnapshot: GridModelSnapshot | null | undefined,\n) {\n if (!model?.api.getSnapshot() || !modelSnapshot) {\n return false\n }\n const { columnNames, columnOrder, rows } = modelSnapshot\n const columnsReady = columnNames.length >= 1\n const orderReady = columnOrder.length >= 1\n const rowsReady = rows.length >= 0\n return columnsReady && orderReady && rowsReady\n}\n\n/**\n * Whether the server has finished replaying its data into the model, so the grid\n * can be shown and edited. Drives the one-way `INITIAL_LOAD_COMPLETE` transition.\n *\n * Returns false once `hasCompletedInitialLoad` is set, so callers can dispatch\n * unconditionally on a true result without re-entering the transition.\n *\n * `hasCompletedInitialSync` alone is not sufficient: the server may complete the\n * snapshot request before the client has fetched and decoded the snapshot, which\n * leaves that flag true while the rows are still arriving. Requiring an idle sync\n * exchange holds the transition until the replay drains.\n */\nexport function isInitialLoadReady(\n state: WebSocketState,\n modelSnapshot: GridModelSnapshot | null | undefined,\n): boolean {\n return (\n !state.hasCompletedInitialLoad &&\n state.hasCompletedInitialSync &&\n !state.isSyncing &&\n isModelRenderable(state.model, modelSnapshot)\n )\n}\n\n/**\n * Custom hook to manage a DataGrid WebSocket connection.\n * Handles:\n * - Fetching presigned URLs via a mutation hook\n * - Instantiating the DataGridWebSocket\n * - Connection status tracking\n * - Reconnection on disconnect\n * - Grid model updates and snapshot tracking\n */\nexport interface UseDataGridWebSocketOptions {\n onGridReady?: () => void\n onReplicaConnected?: () => void\n onReplicaDisconnected?: () => void\n}\n\nexport function useDataGridWebSocket(options?: UseDataGridWebSocketOptions) {\n const [state, dispatch] = useReducer(websocketReducer, initialWebSocketState)\n\n const connectionAttemptCounter = useRef(0)\n const activeConnectionAttemptIdRef = useRef<number | null>(null)\n\n const modelSnapshot = useCRDTModelView(state.model)\n\n const isDocumentVisible = useDocumentVisibility()\n\n const {\n mutateAsync: establishWebsocketConnection,\n isPending: isEstablishingWebsocketConnection,\n error: errorEstablishingWebsocketConnection,\n presignedUrl,\n reset: resetEstablishWebsocketConnection,\n clearPresignedUrl,\n } = useEstablishWebsocketConnection()\n\n // Update model creation handler - only set model, don't reset to null on disconnect\n const handleModelCreate = useCallback(\n (newModel: GridModel) => {\n dispatch({ type: 'MODEL_CREATED', payload: newModel })\n },\n [dispatch],\n )\n\n // Memoize websocket options to prevent unnecessary re-renders (excluding model to avoid circular deps)\n const websocketOptionsWithoutModel = useMemo(\n () => ({\n onGridReady: () => {\n dispatch({ type: 'GRID_READY' })\n options?.onGridReady?.()\n },\n onStatusChange: (open: boolean) =>\n dispatch({ type: open ? 'CONNECTION_OPENED' : 'CONNECTION_CLOSED' }),\n onModelCreate: handleModelCreate,\n onReplicaConnected: options?.onReplicaConnected,\n onReplicaDisconnected: options?.onReplicaDisconnected,\n onSyncStart: () => dispatch({ type: 'SYNC_STARTED' }),\n onSyncEnd: () => dispatch({ type: 'SYNC_ENDED' }),\n onError: (error: unknown) =>\n dispatch({\n type: 'WEBSOCKET_ERROR',\n payload: normalizeWebsocketError(error),\n }),\n }),\n [\n handleModelCreate,\n options?.onGridReady,\n options?.onReplicaConnected,\n options?.onReplicaDisconnected,\n ],\n )\n\n // Initiate (or re-initiate) a connection\n const connect = useCallback(\n (replicaId: number, sessionId: string) => {\n resetEstablishWebsocketConnection()\n\n const isDifferentConnection =\n !state.connectionParams ||\n state.connectionParams.replicaId !== replicaId ||\n state.connectionParams.sessionId !== sessionId\n\n if (isDifferentConnection) {\n clearPresignedUrl()\n }\n\n connectionAttemptCounter.current += 1\n const attemptId = connectionAttemptCounter.current\n\n dispatch({\n type: 'CONNECT_REQUESTED',\n payload: { replicaId, sessionId, attemptId },\n })\n },\n [\n dispatch,\n state.connectionParams,\n resetEstablishWebsocketConnection,\n clearPresignedUrl,\n connectionAttemptCounter,\n ],\n )\n\n /**\n * Establish the WebSocket connection when conditions are met.\n * Uses the current model state at connection time for reconnections to the same session.\n * Note: Changes to `model` alone do NOT trigger reconnection - only changes to connection\n * params, visibility, or connection status will trigger a new connection attempt.\n */\n useEffect(() => {\n // Don't attempt connection if conditions aren't met\n const { connectionParams, connectionAttemptId } = state\n\n if (\n !connectionParams ||\n connectionAttemptId === null ||\n state.isConnected ||\n state.isConnecting ||\n isEstablishingWebsocketConnection ||\n errorEstablishingWebsocketConnection ||\n state.connectionError ||\n !isDocumentVisible\n ) {\n return\n }\n\n activeConnectionAttemptIdRef.current = connectionAttemptId\n\n // Use current model state for reconnections to same session\n // (model may have been created by a previous connection)\n establishWebsocketConnection({\n replicaId: connectionParams.replicaId,\n sessionId: connectionParams.sessionId,\n websocketOptions: {\n ...websocketOptionsWithoutModel,\n model: state.model, // Current model at connection time\n },\n })\n .then(ws => {\n if (activeConnectionAttemptIdRef.current !== connectionAttemptId) {\n ws.disconnect()\n return\n }\n\n dispatch({ type: 'CONNECTION_ESTABLISHED', payload: ws })\n })\n .catch(err => {\n dispatch({ type: 'CONNECTION_ERROR', payload: err })\n console.error('Failed to establish WebSocket', err)\n })\n }, [\n state,\n state.connectionParams,\n state.connectionAttemptId,\n state.isConnected,\n state.isConnecting,\n isEstablishingWebsocketConnection,\n errorEstablishingWebsocketConnection,\n isDocumentVisible,\n establishWebsocketConnection,\n websocketOptionsWithoutModel,\n ])\n\n const previousConnectionParams =\n useRef<WebSocketState['connectionParams']>(null)\n\n useEffect(() => {\n const previous = previousConnectionParams.current\n const current = state.connectionParams\n\n if (\n previous &&\n current &&\n (previous.replicaId !== current.replicaId ||\n previous.sessionId !== current.sessionId)\n ) {\n state.websocketInstance?.disconnect()\n }\n\n previousConnectionParams.current = current\n }, [state.connectionParams, state.websocketInstance])\n\n useEffect(() => {\n return () => {\n state.websocketInstance?.disconnect()\n activeConnectionAttemptIdRef.current = null\n }\n }, [state.websocketInstance])\n\n useEffect(() => {\n if (isInitialLoadReady(state, modelSnapshot)) {\n dispatch({ type: 'INITIAL_LOAD_COMPLETE' })\n }\n }, [state, modelSnapshot])\n\n return {\n isConnected: state.isConnected,\n websocketInstance: state.websocketInstance,\n hasCompletedInitialSync: state.hasCompletedInitialSync,\n hasCompletedInitialLoad: state.hasCompletedInitialLoad,\n isSyncing: state.isSyncing,\n model: state.model,\n modelSnapshot,\n connect,\n presignedUrl,\n errorEstablishingWebsocketConnection:\n state.connectionError ?? errorEstablishingWebsocketConnection,\n websocketError: state.websocketError,\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Filters column identity indices down to those that resolve to a name in `columnNames`.
3
+ *
4
+ * A column's header, width, and row data are all resolved through its name, so an index without
5
+ * one cannot be rendered. The hub patches `columnNames` and `columnOrder` independently, and a
6
+ * render can observe the state between those patches: an index whose name has not arrived yet, or
7
+ * one whose name slot has been unset (a json-joy vector reports an unset slot as `undefined`
8
+ * rather than shortening itself).
9
+ */
10
+ export declare function getNamedColumnIndices(columnNames: string[], columnIndices: number[]): number[];
11
+ //# sourceMappingURL=getNamedColumnIndices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNamedColumnIndices.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/utils/getNamedColumnIndices.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,EAAE,CAEV"}
@@ -0,0 +1,8 @@
1
+ //#region src/components/DataGrid/utils/getNamedColumnIndices.ts
2
+ function e(e, t) {
3
+ return t.filter((t) => !!e[t]);
4
+ }
5
+ //#endregion
6
+ export { e as getNamedColumnIndices };
7
+
8
+ //# sourceMappingURL=getNamedColumnIndices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNamedColumnIndices.js","names":["getNamedColumnIndices","columnNames","columnIndices","filter","index","Boolean"],"sources":["../../../../src/components/DataGrid/utils/getNamedColumnIndices.ts"],"sourcesContent":["/**\n * Filters column identity indices down to those that resolve to a name in `columnNames`.\n *\n * A column's header, width, and row data are all resolved through its name, so an index without\n * one cannot be rendered. The hub patches `columnNames` and `columnOrder` independently, and a\n * render can observe the state between those patches: an index whose name has not arrived yet, or\n * one whose name slot has been unset (a json-joy vector reports an unset slot as `undefined`\n * rather than shortening itself).\n */\nexport function getNamedColumnIndices(\n columnNames: string[],\n columnIndices: number[],\n): number[] {\n return columnIndices.filter(index => Boolean(columnNames[index]))\n}\n"],"mappings":";AASA,SAAgBA,EACdC,GACAC,GACU;CACV,OAAOA,EAAcC,QAAOC,MAASC,EAAQJ,EAAYG,EAAO;AAClE"}
@@ -1,17 +1,21 @@
1
1
  import { FileHandle, FileHandleAssociation } from '@sage-bionetworks/synapse-types';
2
2
  import { PreviewRendererType } from './PreviewRendererType';
3
- export type FileHandleContentRendererProps = {
3
+ type FileHandleContentProps = {
4
4
  /** The file handle whose contents should be downloaded and rendered */
5
5
  fileHandle: FileHandle;
6
6
  /** The association between the file handle and an object which will give the user permission to access the file data */
7
7
  fileHandleAssociation: FileHandleAssociation;
8
+ };
9
+ export type FileHandleContentRendererProps = FileHandleContentProps & {
8
10
  /** Informs how to render the file data */
9
11
  previewType: PreviewRendererType;
10
12
  };
11
13
  /**
12
- * Fetches the content for and renders the contents of a file handle.
14
+ * Renders the contents of a file handle. Each supported preview type is responsible for retrieving the file data in
15
+ * whichever form it needs.
13
16
  * @param props
14
17
  * @returns
15
18
  */
16
19
  export default function FileHandleContentRenderer(props: FileHandleContentRendererProps): import("react/jsx-runtime").JSX.Element;
20
+ export {};
17
21
  //# sourceMappingURL=FileHandleContentRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileHandleContentRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/FilePreview/FileHandleContentRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EACV,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AAIxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAI3D,MAAM,MAAM,8BAA8B,GAAG;IAC3C,uEAAuE;IACvE,UAAU,EAAE,UAAU,CAAA;IACtB,wHAAwH;IACxH,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,0CAA0C;IAC1C,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,KAAK,EAAE,8BAA8B,2CAwCtC"}
1
+ {"version":3,"file":"FileHandleContentRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/FilePreview/FileHandleContentRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EACV,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAI3D,KAAK,sBAAsB,GAAG;IAC5B,uEAAuE;IACvE,UAAU,EAAE,UAAU,CAAA;IACtB,wHAAwH;IACxH,qBAAqB,EAAE,qBAAqB,CAAA;CAC7C,CAAA;AAkCD,MAAM,MAAM,8BAA8B,GAAG,sBAAsB,GAAG;IACpE,0CAA0C;IAC1C,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,KAAK,EAAE,8BAA8B,2CA2BtC"}
@@ -4,25 +4,38 @@ import { useGetPresignedUrlContent as n } from "../../synapse-queries/file/useFi
4
4
  import r from "./HtmlPreview/HtmlPreview.js";
5
5
  import i from "./PdfPreview.js";
6
6
  import { PreviewRendererType as a } from "./PreviewRendererType.js";
7
- import { Fragment as o, jsx as s } from "react/jsx-runtime";
7
+ import { useMemo as o } from "react";
8
+ import { Fragment as s, jsx as c } from "react/jsx-runtime";
8
9
  //#region src/components/FilePreview/FileHandleContentRenderer.tsx
9
- var c = 30 * e;
10
- function l(e) {
11
- let { fileHandle: l, fileHandleAssociation: u, previewType: d } = e, { data: f, isLoading: p } = n(l, {
12
- requestedFiles: [u],
10
+ var l = 30 * e;
11
+ function u(e) {
12
+ let { fileHandle: i, fileHandleAssociation: a } = e, { data: s, isLoading: u } = n(i, o(() => ({
13
+ requestedFiles: [a],
13
14
  includePreSignedURLs: !0,
14
15
  includeFileHandles: !1,
15
16
  includePreviewPreSignedURLs: !1
16
- }, c, { throwOnError: !0 });
17
- return p ? /* @__PURE__ */ s(t, {}) : d === a.HTML ? /* @__PURE__ */ s(r, {
18
- rawHtml: f,
19
- createdByUserId: l.createdBy
20
- }) : d === a.PDF ? /* @__PURE__ */ s(i, {
21
- fileHandle: l,
22
- fileHandleAssociation: u
23
- }) : (d !== a.NONE && console.warn(`Rendering a preview of type ${d} is not supported in Portals`), /* @__PURE__ */ s(o, {}));
17
+ }), [a]), l, { throwOnError: !0 });
18
+ return u ? /* @__PURE__ */ c(t, {}) : /* @__PURE__ */ c(r, {
19
+ rawHtml: s,
20
+ createdByUserId: i.createdBy
21
+ });
22
+ }
23
+ function d(e) {
24
+ let { fileHandle: t, fileHandleAssociation: n, previewType: r } = e;
25
+ switch (r) {
26
+ case a.HTML: return /* @__PURE__ */ c(u, {
27
+ fileHandle: t,
28
+ fileHandleAssociation: n
29
+ });
30
+ case a.PDF: return /* @__PURE__ */ c(i, {
31
+ fileHandle: t,
32
+ fileHandleAssociation: n
33
+ });
34
+ case a.NONE: return /* @__PURE__ */ c(s, {});
35
+ default: return console.warn(`Rendering a preview of type ${r} is not supported in Portals`), /* @__PURE__ */ c(s, {});
36
+ }
24
37
  }
25
38
  //#endregion
26
- export { l as default };
39
+ export { d as default };
27
40
 
28
41
  //# sourceMappingURL=FileHandleContentRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileHandleContentRenderer.js","names":[],"sources":["../../../src/components/FilePreview/FileHandleContentRenderer.tsx"],"sourcesContent":["import { useGetPresignedUrlContent } from '@/synapse-queries/file/useFiles'\nimport { MB } from '@/utils/SynapseConstants'\nimport {\n BatchFileRequest,\n FileHandle,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport HtmlPreview from './HtmlPreview/HtmlPreview'\nimport PdfPreview from './PdfPreview'\nimport { PreviewRendererType } from './PreviewRendererType'\n\nconst MAX_FILE_SIZE = 30 * MB\n\nexport type FileHandleContentRendererProps = {\n /** The file handle whose contents should be downloaded and rendered */\n fileHandle: FileHandle\n /** The association between the file handle and an object which will give the user permission to access the file data */\n fileHandleAssociation: FileHandleAssociation\n /** Informs how to render the file data */\n previewType: PreviewRendererType\n}\n\n/**\n * Fetches the content for and renders the contents of a file handle.\n * @param props\n * @returns\n */\nexport default function FileHandleContentRenderer(\n props: FileHandleContentRendererProps,\n) {\n const { fileHandle, fileHandleAssociation, previewType } = props\n\n const batchFileRequest: BatchFileRequest = {\n requestedFiles: [fileHandleAssociation],\n includePreSignedURLs: true,\n includeFileHandles: false,\n includePreviewPreSignedURLs: false,\n }\n\n const { data: content, isLoading } = useGetPresignedUrlContent(\n fileHandle,\n batchFileRequest,\n MAX_FILE_SIZE,\n { throwOnError: true },\n )\n\n if (isLoading) {\n return <SynapseSpinner />\n }\n if (previewType === PreviewRendererType.HTML) {\n return (\n <HtmlPreview rawHtml={content!} createdByUserId={fileHandle.createdBy} />\n )\n } else if (previewType === PreviewRendererType.PDF) {\n return (\n <PdfPreview\n fileHandle={fileHandle}\n fileHandleAssociation={fileHandleAssociation}\n />\n )\n } else {\n if (previewType !== PreviewRendererType.NONE) {\n console.warn(\n `Rendering a preview of type ${previewType} is not supported in Portals`,\n )\n }\n return <></>\n }\n}\n"],"mappings":";;;;;;;;AAYA,IAAM,IAAgB,KAAK;AAgB3B,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,0BAAuB,mBAAgB,GASrD,EAAE,MAAM,GAAS,iBAAc,EACnC,GACA;EARA,gBAAgB,CAAC,CAAqB;EACtC,sBAAsB;EACtB,oBAAoB;EACpB,6BAA6B;CAK7B,GACA,GACA,EAAE,cAAc,GAAK,CACvB;CAsBE,OApBE,IACK,kBAAC,GAAD,CAAiB,CAAA,IAEtB,MAAgB,EAAoB,OAEpC,kBAAC,GAAD;EAAa,SAAS;EAAU,iBAAiB,EAAW;CAAY,CAAA,IAEjE,MAAgB,EAAoB,MAE3C,kBAAC,GAAD;EACc;EACW;CACxB,CAAA,KAGC,MAAgB,EAAoB,QACtC,QAAQ,KACN,+BAA+B,EAAY,6BAC7C,GAEK,kBAAA,GAAA,CAAI,CAAA;AAEf"}
1
+ {"version":3,"file":"FileHandleContentRenderer.js","names":[],"sources":["../../../src/components/FilePreview/FileHandleContentRenderer.tsx"],"sourcesContent":["import { useGetPresignedUrlContent } from '@/synapse-queries/file/useFiles'\nimport { MB } from '@/utils/SynapseConstants'\nimport {\n BatchFileRequest,\n FileHandle,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport HtmlPreview from './HtmlPreview/HtmlPreview'\nimport PdfPreview from './PdfPreview'\nimport { PreviewRendererType } from './PreviewRendererType'\n\nconst MAX_FILE_SIZE = 30 * MB\n\ntype FileHandleContentProps = {\n /** The file handle whose contents should be downloaded and rendered */\n fileHandle: FileHandle\n /** The association between the file handle and an object which will give the user permission to access the file data */\n fileHandleAssociation: FileHandleAssociation\n}\n\n/**\n * Downloads a file handle's contents as text and renders it as sanitized HTML.\n */\nfunction HtmlPreviewLoader(props: FileHandleContentProps) {\n const { fileHandle, fileHandleAssociation } = props\n\n const batchFileRequest: BatchFileRequest = useMemo(\n () => ({\n requestedFiles: [fileHandleAssociation],\n includePreSignedURLs: true,\n includeFileHandles: false,\n includePreviewPreSignedURLs: false,\n }),\n [fileHandleAssociation],\n )\n\n const { data: content, isLoading } = useGetPresignedUrlContent(\n fileHandle,\n batchFileRequest,\n MAX_FILE_SIZE,\n { throwOnError: true },\n )\n\n if (isLoading) {\n return <SynapseSpinner />\n }\n\n return (\n <HtmlPreview rawHtml={content!} createdByUserId={fileHandle.createdBy} />\n )\n}\n\nexport type FileHandleContentRendererProps = FileHandleContentProps & {\n /** Informs how to render the file data */\n previewType: PreviewRendererType\n}\n\n/**\n * Renders the contents of a file handle. Each supported preview type is responsible for retrieving the file data in\n * whichever form it needs.\n * @param props\n * @returns\n */\nexport default function FileHandleContentRenderer(\n props: FileHandleContentRendererProps,\n) {\n const { fileHandle, fileHandleAssociation, previewType } = props\n\n switch (previewType) {\n case PreviewRendererType.HTML:\n return (\n <HtmlPreviewLoader\n fileHandle={fileHandle}\n fileHandleAssociation={fileHandleAssociation}\n />\n )\n case PreviewRendererType.PDF:\n return (\n <PdfPreview\n fileHandle={fileHandle}\n fileHandleAssociation={fileHandleAssociation}\n />\n )\n case PreviewRendererType.NONE:\n return <></>\n default:\n console.warn(\n `Rendering a preview of type ${previewType} is not supported in Portals`,\n )\n return <></>\n }\n}\n"],"mappings":";;;;;;;;;AAaA,IAAM,IAAgB,KAAK;AAY3B,SAAS,EAAkB,GAA+B;CACxD,IAAM,EAAE,eAAY,6BAA0B,GAYxC,EAAE,MAAM,GAAS,iBAAc,EACnC,GAXyC,SAClC;EACL,gBAAgB,CAAC,CAAqB;EACtC,sBAAsB;EACtB,oBAAoB;EACpB,6BAA6B;CAC/B,IACA,CAAC,CAAqB,CAKtB,GACA,GACA,EAAE,cAAc,GAAK,CACvB;CAMA,OAJI,IACK,kBAAC,GAAD,CAAiB,CAAA,IAIxB,kBAAC,GAAD;EAAa,SAAS;EAAU,iBAAiB,EAAW;CAAY,CAAA;AAE5E;AAaA,SAAwB,EACtB,GACA;CACA,IAAM,EAAE,eAAY,0BAAuB,mBAAgB;CAE3D,QAAQ,GAAR;EACE,KAAK,EAAoB,MACvB,OACE,kBAAC,GAAD;GACc;GACW;EACxB,CAAA;EAEL,KAAK,EAAoB,KACvB,OACE,kBAAC,GAAD;GACc;GACW;EACxB,CAAA;EAEL,KAAK,EAAoB,MACvB,OAAO,kBAAA,GAAA,CAAI,CAAA;EACb,SAIE,OAHA,QAAQ,KACN,+BAA+B,EAAY,6BAC7C,GACO,kBAAA,GAAA,CAAI,CAAA;CACf;AACF"}
@@ -5,7 +5,7 @@ export type PdfPreviewProps = {
5
5
  };
6
6
  export declare const maxPdfSize: number;
7
7
  /**
8
- * Renders raw HTML. Uses file handle data to determine if the content should be sanitized.
8
+ * Renders a PDF file handle in an iframe.
9
9
  * @param props
10
10
  * @returns
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PdfPreview.d.ts","sourceRoot":"","sources":["../../../src/components/FilePreview/PdfPreview.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AAGxC,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,qBAAqB,EAAE,qBAAqB,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,UAAU,QAAyB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,eAAe,2CAsCxD"}
1
+ {"version":3,"file":"PdfPreview.d.ts","sourceRoot":"","sources":["../../../src/components/FilePreview/PdfPreview.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,qBAAqB,EACtB,MAAM,iCAAiC,CAAA;AAExC,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,qBAAqB,EAAE,qBAAqB,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,UAAU,QAAyB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,eAAe,2CAwCxD"}
@@ -1,40 +1,39 @@
1
1
  import { calculateFriendlyFileSize as e } from "../../utils/functions/calculateFriendlyFileSize.js";
2
- import t from "../../synapse-client/index.js";
3
- import { useFetchBlobUrl as n } from "../../utils/hooks/useFetchBlobUrl.js";
4
- import { Alert as r, Skeleton as i } from "@mui/material";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
2
+ import { useGetStablePresignedUrl as t } from "../../synapse-queries/file/useFiles.js";
3
+ import { Alert as n, Skeleton as r } from "@mui/material";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
5
  //#region src/components/FilePreview/PdfPreview.tsx
7
- var s = 1024 ** 2 * 30, c = e(s);
8
- function l(l) {
9
- let { fileHandle: u, fileHandleAssociation: d } = l, { blobUrl: f, error: p } = n(u.contentSize > s ? void 0 : t.getPortalFileHandleServletUrl(d.fileHandleId, d.associateObjectId, d.associateObjectType)), m = e(u.contentSize);
10
- return u.contentSize > s ? /* @__PURE__ */ o(r, {
6
+ var o = 1024 ** 2 * 30, s = e(o);
7
+ function c(c) {
8
+ let { fileHandle: l, fileHandleAssociation: u } = c, d = l.contentSize > o, f = t(u, !1, { enabled: !d }), p = f?.dataUrl, m = f?.queryResult.error, h = e(l.contentSize);
9
+ return d ? /* @__PURE__ */ a(n, {
11
10
  severity: "error",
12
11
  sx: { marginBottom: "20px" },
13
12
  children: [
14
13
  "The PDF preview was not shown because the file size (",
15
- m,
14
+ h,
16
15
  ") exceeds the maximum preview size (",
17
- c,
16
+ s,
18
17
  ")"
19
18
  ]
20
- }) : p ? /* @__PURE__ */ o(r, {
19
+ }) : m ? /* @__PURE__ */ a(n, {
21
20
  severity: "error",
22
21
  sx: { marginBottom: "20px" },
23
- children: ["The PDF preview could not be loaded: ", p.message]
24
- }) : f ? /* @__PURE__ */ a("iframe", {
25
- src: f,
22
+ children: ["The PDF preview could not be loaded: ", m.message]
23
+ }) : p ? /* @__PURE__ */ i("iframe", {
24
+ src: p,
26
25
  height: "800px",
27
26
  style: {
28
27
  border: 0,
29
28
  width: "100%"
30
29
  }
31
- }) : /* @__PURE__ */ a(i, {
30
+ }) : /* @__PURE__ */ i(r, {
32
31
  variant: "rectangular",
33
32
  width: "100%",
34
33
  height: "800px"
35
34
  });
36
35
  }
37
36
  //#endregion
38
- export { l as default, s as maxPdfSize };
37
+ export { c as default, o as maxPdfSize };
39
38
 
40
39
  //# sourceMappingURL=PdfPreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PdfPreview.js","names":[],"sources":["../../../src/components/FilePreview/PdfPreview.tsx"],"sourcesContent":["import SynapseClient from '@/synapse-client'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { Alert, Skeleton } from '@mui/material'\nimport {\n FileHandle,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\nimport { useFetchBlobUrl } from '@/utils/hooks/useFetchBlobUrl'\n\nexport type PdfPreviewProps = {\n fileHandle: FileHandle\n fileHandleAssociation: FileHandleAssociation\n}\n\nexport const maxPdfSize = Math.pow(1024, 2) * 30 // 30MB\nconst friendlyMaxPdfSize = calculateFriendlyFileSize(maxPdfSize) // 30MB\n\n/**\n * Renders raw HTML. Uses file handle data to determine if the content should be sanitized.\n * @param props\n * @returns\n */\nexport default function PdfPreview(props: PdfPreviewProps) {\n const { fileHandle, fileHandleAssociation: fha } = props\n\n const { blobUrl, error: blobError } = useFetchBlobUrl(\n fileHandle.contentSize > maxPdfSize\n ? undefined\n : SynapseClient.getPortalFileHandleServletUrl(\n fha.fileHandleId,\n fha.associateObjectId,\n fha.associateObjectType,\n ),\n )\n\n const friendlyFileSize = calculateFriendlyFileSize(fileHandle.contentSize)\n if (fileHandle.contentSize > maxPdfSize) {\n return (\n <Alert severity=\"error\" sx={{ marginBottom: '20px' }}>\n The PDF preview was not shown because the file size ({friendlyFileSize})\n exceeds the maximum preview size ({friendlyMaxPdfSize})\n </Alert>\n )\n }\n\n if (blobError) {\n return (\n <Alert severity=\"error\" sx={{ marginBottom: '20px' }}>\n The PDF preview could not be loaded: {blobError.message}\n </Alert>\n )\n }\n\n if (!blobUrl) {\n return <Skeleton variant=\"rectangular\" width=\"100%\" height=\"800px\" />\n }\n\n return (\n <iframe src={blobUrl} height=\"800px\" style={{ border: 0, width: '100%' }} />\n )\n}\n"],"mappings":";;;;;;AAcA,IAAa,IAAsB,QAAM,IAAK,IACxC,IAAqB,EAA0B,CAAU;AAO/D,SAAwB,EAAW,GAAwB;CACzD,IAAM,EAAE,eAAY,uBAAuB,MAAQ,GAE7C,EAAE,YAAS,OAAO,MAAc,EACpC,EAAW,cAAc,IACrB,KAAA,IACA,EAAc,8BACZ,EAAI,cACJ,EAAI,mBACJ,EAAI,mBACN,CACN,GAEM,IAAmB,EAA0B,EAAW,WAAW;CAsBzE,OArBI,EAAW,cAAc,IAEzB,kBAAC,GAAD;EAAO,UAAS;EAAQ,IAAI,EAAE,cAAc,OAAO;YAAnD;GAAsD;GACE;GAAiB;GACpC;GAAmB;EACjD;MAIP,IAEA,kBAAC,GAAD;EAAO,UAAS;EAAQ,IAAI,EAAE,cAAc,OAAO;YAAnD,CAAsD,yCACd,EAAU,OAC3C;MAIN,IAKH,kBAAC,UAAD;EAAQ,KAAK;EAAS,QAAO;EAAQ,OAAO;GAAE,QAAQ;GAAG,OAAO;EAAO;CAAI,CAAA,IAJpE,kBAAC,GAAD;EAAU,SAAQ;EAAc,OAAM;EAAO,QAAO;CAAS,CAAA;AAMxE"}
1
+ {"version":3,"file":"PdfPreview.js","names":[],"sources":["../../../src/components/FilePreview/PdfPreview.tsx"],"sourcesContent":["import { useGetStablePresignedUrl } from '@/synapse-queries/file/useFiles'\nimport { calculateFriendlyFileSize } from '@/utils/functions/calculateFriendlyFileSize'\nimport { Alert, Skeleton } from '@mui/material'\nimport {\n FileHandle,\n FileHandleAssociation,\n} from '@sage-bionetworks/synapse-types'\n\nexport type PdfPreviewProps = {\n fileHandle: FileHandle\n fileHandleAssociation: FileHandleAssociation\n}\n\nexport const maxPdfSize = Math.pow(1024, 2) * 30 // 30MB\nconst friendlyMaxPdfSize = calculateFriendlyFileSize(maxPdfSize) // 30MB\n\n/**\n * Renders a PDF file handle in an iframe.\n * @param props\n * @returns\n */\nexport default function PdfPreview(props: PdfPreviewProps) {\n const { fileHandle, fileHandleAssociation } = props\n\n const exceedsMaxSize = fileHandle.contentSize > maxPdfSize\n\n // The presigned URL is fetched into a blob rather than used as the iframe src directly: Synapse signs the URL with\n // `response-content-disposition=attachment`, which would make the browser download the file instead of rendering it.\n const stablePresignedUrl = useGetStablePresignedUrl(\n fileHandleAssociation,\n false,\n { enabled: !exceedsMaxSize },\n )\n const blobUrl = stablePresignedUrl?.dataUrl\n const blobError = stablePresignedUrl?.queryResult.error\n\n const friendlyFileSize = calculateFriendlyFileSize(fileHandle.contentSize)\n if (exceedsMaxSize) {\n return (\n <Alert severity=\"error\" sx={{ marginBottom: '20px' }}>\n The PDF preview was not shown because the file size ({friendlyFileSize})\n exceeds the maximum preview size ({friendlyMaxPdfSize})\n </Alert>\n )\n }\n\n if (blobError) {\n return (\n <Alert severity=\"error\" sx={{ marginBottom: '20px' }}>\n The PDF preview could not be loaded: {blobError.message}\n </Alert>\n )\n }\n\n if (!blobUrl) {\n return <Skeleton variant=\"rectangular\" width=\"100%\" height=\"800px\" />\n }\n\n return (\n <iframe src={blobUrl} height=\"800px\" style={{ border: 0, width: '100%' }} />\n )\n}\n"],"mappings":";;;;;AAaA,IAAa,IAAsB,QAAM,IAAK,IACxC,IAAqB,EAA0B,CAAU;AAO/D,SAAwB,EAAW,GAAwB;CACzD,IAAM,EAAE,eAAY,6BAA0B,GAExC,IAAiB,EAAW,cAAc,GAI1C,IAAqB,EACzB,GACA,IACA,EAAE,SAAS,CAAC,EAAe,CAC7B,GACM,IAAU,GAAoB,SAC9B,IAAY,GAAoB,YAAY,OAE5C,IAAmB,EAA0B,EAAW,WAAW;CAsBzE,OArBI,IAEA,kBAAC,GAAD;EAAO,UAAS;EAAQ,IAAI,EAAE,cAAc,OAAO;YAAnD;GAAsD;GACE;GAAiB;GACpC;GAAmB;EACjD;MAIP,IAEA,kBAAC,GAAD;EAAO,UAAS;EAAQ,IAAI,EAAE,cAAc,OAAO;YAAnD,CAAsD,yCACd,EAAU,OAC3C;MAIN,IAKH,kBAAC,UAAD;EAAQ,KAAK;EAAS,QAAO;EAAQ,OAAO;GAAE,QAAQ;GAAG,OAAO;EAAO;CAAI,CAAA,IAJpE,kBAAC,GAAD;EAAU,SAAQ;EAAc,OAAM;EAAO,QAAO;CAAS,CAAA;AAMxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldDefinitionDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/FormTemplateEditor/FieldDefinitionDrawer.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAmB5E,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,6EAA6E;IAC7E,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,OAAO,EAAE,qBAAqB,CAAA;IAC9B,qFAAqF;IACrF,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,gBAAgB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,eAAe,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACT,EAAE,0BAA0B,2CAqM5B"}
1
+ {"version":3,"file":"FieldDefinitionDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/FormTemplateEditor/FieldDefinitionDrawer.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAoB5E,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,6EAA6E;IAC7E,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,OAAO,EAAE,qBAAqB,CAAA;IAC9B,qFAAqF;IACrF,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,gBAAgB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,eAAe,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,OAAO,EACP,aAAa,EACb,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACT,EAAE,0BAA0B,2CA8M5B"}