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":"SynapseGrid.js","names":["CertificationRequirement","ExportCsvFromGridButton","GridMenuButton","ReorderColumnsButton","UploadCsvToGridButton","useGetSchemaForGrid","SyncGridWithSourceButton","computeReplicaSelectionModel","modelRowsToGrid","SynapseErrorBoundary","SkeletonTable","useGetCurrentUserBundle","useListGridReplicas","useGetEntity","getSchemaPropertiesInfo","HelpOutline","Box","Stack","Tooltip","Typography","Grid","DataSheetGridRef","SelectionWithId","CreateGridRequest","GridSession","instanceOfRecordSet","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useErrorHandler","SynapseSpinner","GridAgentChat","ValidationAlert","DataGrid","DataGridRow","GridModel","Operation","useGridReplicaUsers","useGridUndoRedo","useRemoteSelections","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","enrichRowsWithChangeInfo","mapOperationsToModelChanges","CurieAvatarHead","SynapseGridProps","agentRegistrationId","showDebugInfo","ref","SynapseGridHandle","initializeGrid","request","loadExistingSession","sessionId","SynapseGridInner","t0","$","_c","t1","undefined","session","setSession","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","gridRef","data","userBundle","isLoading","t2","refetch","refetchReplicas","t3","replicas","t4","handleReplicaConnectionChange","currentUserId","userId","String","replicaUserMap","t5","t6","Symbol","for","current","handleStartSession","handleLoadSession","t7","onGridReady","onReplicaConnected","onReplicaDisconnected","isConnected","websocketInstance","hasCompletedInitialSync","isSyncing","model","modelSnapshot","connect","presignedUrl","hasSufficientData","websocketError","websocketInstanceRef","t8","t9","lastConnectParamsRef","t10","nextParams","prevParams","t11","t12","t13","t14","setActiveCell","jsonSchema","t15","sourceEntityId","t16","enabled","entityData","entityIsView","concreteType","t17","isRecordSet","t18","upsertKey","t19","t20","schemaPropertiesInfo","connectionStatus","remoteSelections","t21","rowValues","t22","enrichedRowValues","t23","sendPatch","commit","t24","t25","t26","model_0","modelChanges","forEach","change","applyAndCommitChanges","t27","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t28","newValue","operations","length","modelChanges_0","handleChange","t29","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t30","rowIndex","colIndex","col","row","handleNavigateToCell","t31","newColumnOrder","handleReorderColumns","isCertified","t32","xs","xl","t33","t34","t35","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t36","t37","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t38","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport ReorderColumnsButton from '@/components/DataGrid/components/ReorderColumnsButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport SyncGridWithSourceButton from '@/components/DataGrid/SyncGridWithSourceButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { HelpOutline } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport {\n DataSheetGridRef,\n SelectionWithId,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport {\n CreateGridRequest,\n GridSession,\n instanceOfRecordSet,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport CurieAvatarHead from '@/assets/mui_components/CurieAvatarHead'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n ref?: Ref<SynapseGridHandle>\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nfunction SynapseGridInner({\n agentRegistrationId,\n showDebugInfo = false,\n ref,\n}: SynapseGridProps) {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const { data: replicas = [], refetch: refetchReplicas } = useListGridReplicas(\n session?.sessionId,\n )\n\n const handleReplicaConnectionChange = useCallback(() => {\n void refetchReplicas()\n }, [refetchReplicas])\n\n // ── Attribution infrastructure ─────────────────────────────────────────\n const currentUserId =\n userBundle?.userId != null ? String(userBundle.userId) : undefined\n\n const replicaUserMap = useGridReplicaUsers(replicas, replicaId, currentUserId)\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n isSyncing,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n websocketError,\n } = useDataGridWebSocket({\n onGridReady: handleReplicaConnectionChange,\n onReplicaConnected: handleReplicaConnectionChange,\n onReplicaDisconnected: handleReplicaConnectionChange,\n })\n\n useErrorHandler(websocketError)\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (replicaId === null || replicaId === undefined || !session?.sessionId) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n const isRecordSet = !!entityData && instanceOfRecordSet(entityData)\n\n // If grid source entity is a recordSet, get its upsert key(s)\n // from the entity bundle\n const upsertKey = !entityIsView\n ? (entityData as { upsertKey?: string[] } | undefined)?.upsertKey\n : []\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n const remoteSelections = useRemoteSelections(\n modelSnapshot,\n model,\n replicas,\n replicaId,\n )\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n // Enrich rows with per-cell change attribution for CSS indicators and tooltips\n const enrichedRowValues = useMemo(\n () =>\n enrichRowsWithChangeInfo(rowValues, model, modelSnapshot, replicaUserMap),\n [rowValues, model, modelSnapshot, replicaUserMap],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n const handleNavigateToCell = useCallback(\n (rowIndex: number, colIndex: number) => {\n gridRef.current?.setActiveCell({ col: colIndex, row: rowIndex })\n },\n [],\n )\n\n const handleReorderColumns = useCallback(\n (newColumnOrder: number[]) => {\n if (!model) return\n applyAndCommitChanges(model, [\n { type: 'REORDER_COLUMNS', newColumnOrder },\n ])\n },\n [model, applyAndCommitChanges],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id || 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n <p>\n {(() => {\n const connectedReplicas = replicas.filter(r => r.isConnected)\n return (\n <>\n Connected Replicas ({connectedReplicas.length} /{' '}\n {replicas.length} total):{' '}\n {connectedReplicas.length === 0\n ? 'none'\n : connectedReplicas.map((r, i) => (\n <Tooltip\n key={r.replicaId}\n title={\n <pre style={{ margin: 0, fontSize: '11px' }}>\n {JSON.stringify(r, null, 2)}\n </pre>\n }\n >\n <span\n style={{\n cursor: 'pointer',\n textDecoration: 'underline dotted',\n }}\n >\n {r.replicaId}\n {i < connectedReplicas.length - 1 ? ', ' : ''}\n </span>\n </Tooltip>\n ))}\n </>\n )\n })()}\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && <p>Setting up real-time sync...</p>}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <ValidationAlert\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n onNavigateToCell={handleNavigateToCell}\n isLoading={!hasCompletedInitialSync}\n />\n </Grid>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {/* Keep this sync indicator first in the stack, otherwise it will cause other buttons to shift */}\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {hasCompletedInitialSync ? 'Syncing…' : 'Loading…'}\n </Typography>\n </Box>\n )}\n <GridMenuButton\n variant=\"outlined\"\n startIcon={<HelpOutline />}\n href=\"https://docs.synapse.org/synapse-docs/managing-metadata-with-curator\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n sx={{ mr: 'auto' }}\n >\n Help and Instructions\n </GridMenuButton>\n {undoUI}\n {redoUI}\n <ReorderColumnsButton\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n jsonSchema={jsonSchema}\n upsertKey={upsertKey}\n canRemoveColumns={isRecordSet}\n onReorder={handleReorderColumns}\n />\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<CurieAvatarHead />}\n >\n Open Curie\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Curie\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <SyncGridWithSourceButton gridSession={session} />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={enrichedRowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n remoteSelections={remoteSelections}\n upsertKey={upsertKey}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n}\n\nfunction SynapseGrid(props: SynapseGridProps) {\n return (\n <SynapseErrorBoundary>\n <SynapseGridInner {...props} />\n </SynapseErrorBoundary>\n )\n}\n\nexport default SynapseGrid\n"],"mappings":"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"}
1
+ {"version":3,"file":"SynapseGrid.js","names":["CertificationRequirement","ExportCsvFromGridButton","GridLoadingState","GridMenuButton","ReorderColumnsButton","UploadCsvToGridButton","useGetSchemaForGrid","SyncGridWithSourceButton","computeReplicaSelectionModel","getNamedColumnIndices","modelRowsToGrid","SynapseErrorBoundary","useGetCurrentUserBundle","useListGridReplicas","useGetEntity","getSchemaPropertiesInfo","HelpOutline","Box","Stack","Tooltip","Typography","Grid","DataSheetGridRef","SelectionWithId","CreateGridRequest","GridSession","instanceOfRecordSet","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useErrorHandler","SynapseSpinner","GridAgentChat","ValidationAlert","DataGrid","DataGridRow","GridModel","Operation","useGridReplicaUsers","useGridUndoRedo","useRemoteSelections","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","enrichRowsWithChangeInfo","mapOperationsToModelChanges","CurieAvatarHead","EMPTY_COLUMN_NAMES","SynapseGridProps","agentRegistrationId","showDebugInfo","ref","SynapseGridHandle","initializeGrid","request","loadExistingSession","sessionId","SynapseGridInner","t0","$","_c","t1","undefined","session","setSession","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","gridRef","data","userBundle","isLoading","t2","refetch","refetchReplicas","t3","replicas","t4","handleReplicaConnectionChange","currentUserId","userId","String","replicaUserMap","t5","t6","Symbol","for","current","handleStartSession","handleLoadSession","t7","onGridReady","onReplicaConnected","onReplicaDisconnected","isConnected","websocketInstance","hasCompletedInitialSync","hasCompletedInitialLoad","isSyncing","model","modelSnapshot","connect","presignedUrl","websocketError","websocketInstanceRef","t8","t9","lastConnectParamsRef","t10","nextParams","prevParams","t11","t12","t13","t14","setActiveCell","jsonSchema","t15","sourceEntityId","t16","enabled","entityData","entityIsView","concreteType","t17","isRecordSet","t18","upsertKey","t19","t20","schemaPropertiesInfo","connectionStatus","remoteSelections","columnNames","columnOrder","t21","t22","t23","rowValues","t24","enrichedRowValues","t25","sendPatch","commit","t26","t27","t28","model_0","modelChanges","forEach","change","applyAndCommitChanges","t29","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t30","newValue","operations","length","modelChanges_0","handleChange","t31","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t32","rowIndex","colIndex","col","row","handleNavigateToCell","t33","newColumnOrder","handleReorderColumns","isCertified","t34","xs","xl","t35","t36","t37","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t38","t39","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t40","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport GridLoadingState from '@/components/DataGrid/components/GridLoadingState'\nimport GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport ReorderColumnsButton from '@/components/DataGrid/components/ReorderColumnsButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport SyncGridWithSourceButton from '@/components/DataGrid/SyncGridWithSourceButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport { getNamedColumnIndices } from '@/components/DataGrid/utils/getNamedColumnIndices'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { HelpOutline } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport {\n DataSheetGridRef,\n SelectionWithId,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport {\n CreateGridRequest,\n GridSession,\n instanceOfRecordSet,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { useErrorHandler } from 'react-error-boundary'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport CurieAvatarHead from '@/assets/mui_components/CurieAvatarHead'\n\n// Stable reference for renders with no model snapshot, so column memos don't recompute\nconst EMPTY_COLUMN_NAMES: string[] = []\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n ref?: Ref<SynapseGridHandle>\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nfunction SynapseGridInner({\n agentRegistrationId,\n showDebugInfo = false,\n ref,\n}: SynapseGridProps) {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const { data: replicas = [], refetch: refetchReplicas } = useListGridReplicas(\n session?.sessionId,\n )\n\n const handleReplicaConnectionChange = useCallback(() => {\n void refetchReplicas()\n }, [refetchReplicas])\n\n // ── Attribution infrastructure ─────────────────────────────────────────\n const currentUserId =\n userBundle?.userId != null ? String(userBundle.userId) : undefined\n\n const replicaUserMap = useGridReplicaUsers(replicas, replicaId, currentUserId)\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n hasCompletedInitialLoad,\n isSyncing,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n websocketError,\n } = useDataGridWebSocket({\n onGridReady: handleReplicaConnectionChange,\n onReplicaConnected: handleReplicaConnectionChange,\n onReplicaDisconnected: handleReplicaConnectionChange,\n })\n\n useErrorHandler(websocketError)\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (replicaId === null || replicaId === undefined || !session?.sessionId) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n const isRecordSet = !!entityData && instanceOfRecordSet(entityData)\n\n // If grid source entity is a recordSet, get its upsert key(s)\n // from the entity bundle\n const upsertKey = !entityIsView\n ? (entityData as { upsertKey?: string[] } | undefined)?.upsertKey\n : []\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n const remoteSelections = useRemoteSelections(\n modelSnapshot,\n model,\n replicas,\n replicaId,\n )\n\n const columnNames = modelSnapshot?.columnNames ?? EMPTY_COLUMN_NAMES\n\n // Reconcile the two column fields once here rather than in each consumer: the hub can patch\n // `columnOrder` and `columnNames` separately, so a render can land on an order that references a\n // column whose name is not in the snapshot yet.\n const columnOrder = useMemo(\n () => getNamedColumnIndices(columnNames, modelSnapshot?.columnOrder ?? []),\n [columnNames, modelSnapshot?.columnOrder],\n )\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n // Enrich rows with per-cell change attribution for CSS indicators and tooltips\n const enrichedRowValues = useMemo(\n () =>\n enrichRowsWithChangeInfo(rowValues, model, modelSnapshot, replicaUserMap),\n [rowValues, model, modelSnapshot, replicaUserMap],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n const handleNavigateToCell = useCallback(\n (rowIndex: number, colIndex: number) => {\n gridRef.current?.setActiveCell({ col: colIndex, row: rowIndex })\n },\n [],\n )\n\n const handleReorderColumns = useCallback(\n (newColumnOrder: number[]) => {\n if (!model) return\n applyAndCommitChanges(model, [\n { type: 'REORDER_COLUMNS', newColumnOrder },\n ])\n },\n [model, applyAndCommitChanges],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id || 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n <p>\n {(() => {\n const connectedReplicas = replicas.filter(r => r.isConnected)\n return (\n <>\n Connected Replicas ({connectedReplicas.length} /{' '}\n {replicas.length} total):{' '}\n {connectedReplicas.length === 0\n ? 'none'\n : connectedReplicas.map((r, i) => (\n <Tooltip\n key={r.replicaId}\n title={\n <pre style={{ margin: 0, fontSize: '11px' }}>\n {JSON.stringify(r, null, 2)}\n </pre>\n }\n >\n <span\n style={{\n cursor: 'pointer',\n textDecoration: 'underline dotted',\n }}\n >\n {r.replicaId}\n {i < connectedReplicas.length - 1 ? ', ' : ''}\n </span>\n </Tooltip>\n ))}\n </>\n )\n })()}\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasCompletedInitialLoad && (\n <Grid size={12}>\n <GridLoadingState\n hasReplicaId={replicaId != null}\n hasPresignedUrl={!!presignedUrl}\n isConnected={isConnected}\n />\n </Grid>\n )}\n {/* Grid */}\n {hasCompletedInitialLoad && (\n <>\n <Grid size={12}>\n <ValidationAlert\n rowValues={rowValues}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={handleNavigateToCell}\n isLoading={!hasCompletedInitialSync}\n />\n </Grid>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {/* Keep this sync indicator first in the stack, otherwise it will cause other buttons to shift */}\n {isSyncing && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n Syncing…\n </Typography>\n </Box>\n )}\n <GridMenuButton\n variant=\"outlined\"\n startIcon={<HelpOutline />}\n href=\"https://docs.synapse.org/synapse-docs/managing-metadata-with-curator\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n sx={{ mr: 'auto' }}\n >\n Help and Instructions\n </GridMenuButton>\n {undoUI}\n {redoUI}\n <ReorderColumnsButton\n columnNames={columnNames}\n columnOrder={columnOrder}\n jsonSchema={jsonSchema}\n upsertKey={upsertKey}\n canRemoveColumns={isRecordSet}\n onReorder={handleReorderColumns}\n />\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<CurieAvatarHead />}\n >\n Open Curie\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Curie\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <SyncGridWithSourceButton gridSession={session} />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={enrichedRowValues}\n columnNames={columnNames}\n columnOrder={columnOrder}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n remoteSelections={remoteSelections}\n upsertKey={upsertKey}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n}\n\nfunction SynapseGrid(props: SynapseGridProps) {\n return (\n <SynapseErrorBoundary>\n <SynapseGridInner {...props} />\n </SynapseErrorBoundary>\n )\n}\n\nexport default SynapseGrid\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type GridLoadingStateProps = {
2
+ hasReplicaId: boolean;
3
+ hasPresignedUrl: boolean;
4
+ isConnected: boolean;
5
+ };
6
+ export declare const GRID_LOADING_MESSAGES: {
7
+ readonly heading: "Setting up grid";
8
+ readonly awaitingReplica: "Setting up real-time sync…";
9
+ readonly awaitingPresignedUrl: "Establishing secure connection…";
10
+ readonly awaitingConnection: "Connecting to server…";
11
+ readonly awaitingData: "Loading table data…";
12
+ };
13
+ /**
14
+ * Describes how far along the grid is in establishing its first connection.
15
+ */
16
+ export declare function getGridLoadingMessage({ hasReplicaId, hasPresignedUrl, isConnected, }: GridLoadingStateProps): string;
17
+ /**
18
+ * Placeholder shown in place of the grid until its first connection has finished
19
+ * loading data. Rendering this instead of the grid keeps users from editing cells
20
+ * or watching rows stream in while the initial data is still being replayed.
21
+ */
22
+ export default function GridLoadingState(props: GridLoadingStateProps): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=GridLoadingState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLoadingState.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/GridLoadingState.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;CAMxB,CAAA;AAEV;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,EAAE,qBAAqB,GAAG,MAAM,CAWhC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAepE"}
@@ -0,0 +1,64 @@
1
+ import { SynapseSpinner as e } from "../../LoadingScreen/LoadingScreen.js";
2
+ import { SkeletonTable as t } from "../../Skeleton/SkeletonTable.js";
3
+ import { Stack as n, Typography as r } from "@mui/material";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { c as o } from "react/compiler-runtime";
6
+ //#region src/components/DataGrid/components/GridLoadingState.tsx
7
+ var s = {
8
+ heading: "Setting up grid",
9
+ awaitingReplica: "Setting up real-time sync…",
10
+ awaitingPresignedUrl: "Establishing secure connection…",
11
+ awaitingConnection: "Connecting to server…",
12
+ awaitingData: "Loading table data…"
13
+ };
14
+ function c({ hasReplicaId: e, hasPresignedUrl: t, isConnected: n }) {
15
+ return e ? t ? n ? s.awaitingData : s.awaitingConnection : s.awaitingPresignedUrl : s.awaitingReplica;
16
+ }
17
+ function l(l) {
18
+ let u = o(10), d, f;
19
+ u[0] === Symbol.for("react.memo_cache_sentinel") ? (d = { mb: 1.25 }, f = /* @__PURE__ */ i(r, {
20
+ variant: "sectionTitle",
21
+ component: "h2",
22
+ children: s.heading
23
+ }), u[0] = d, u[1] = f) : (d = u[0], f = u[1]);
24
+ let p;
25
+ u[2] === Symbol.for("react.memo_cache_sentinel") ? (p = /* @__PURE__ */ i(e, {
26
+ size: 16,
27
+ margin: "0"
28
+ }), u[2] = p) : p = u[2];
29
+ let m;
30
+ u[3] === l ? m = u[4] : (m = c(l), u[3] = l, u[4] = m);
31
+ let h;
32
+ u[5] === m ? h = u[6] : (h = /* @__PURE__ */ a(n, {
33
+ direction: "row",
34
+ spacing: 1,
35
+ role: "status",
36
+ alignItems: "center",
37
+ children: [p, /* @__PURE__ */ i(r, {
38
+ variant: "caption",
39
+ color: "text.secondary",
40
+ children: m
41
+ })]
42
+ }), u[5] = m, u[6] = h);
43
+ let g;
44
+ u[7] === Symbol.for("react.memo_cache_sentinel") ? (g = /* @__PURE__ */ i(t, {
45
+ "aria-hidden": !0,
46
+ numRows: 4,
47
+ numCols: 1
48
+ }), u[7] = g) : g = u[7];
49
+ let _;
50
+ return u[8] === h ? _ = u[9] : (_ = /* @__PURE__ */ a(n, {
51
+ spacing: 1,
52
+ "aria-busy": "true",
53
+ sx: d,
54
+ children: [
55
+ f,
56
+ h,
57
+ g
58
+ ]
59
+ }), u[8] = h, u[9] = _), _;
60
+ }
61
+ //#endregion
62
+ export { s as GRID_LOADING_MESSAGES, l as default, c as getGridLoadingMessage };
63
+
64
+ //# sourceMappingURL=GridLoadingState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLoadingState.js","names":["SkeletonTable","Stack","Typography","SynapseSpinner","GridLoadingStateProps","hasReplicaId","hasPresignedUrl","isConnected","GRID_LOADING_MESSAGES","heading","awaitingReplica","awaitingPresignedUrl","awaitingConnection","awaitingData","const","getGridLoadingMessage","GridLoadingState","props","$","_c","t0","t1","Symbol","for","mb","t2","t3","t4","t5","t6"],"sources":["../../../../src/components/DataGrid/components/GridLoadingState.tsx"],"sourcesContent":["import { SkeletonTable } from '@/components/Skeleton/SkeletonTable'\nimport { Stack, Typography } from '@mui/material'\nimport { SynapseSpinner } from '../../LoadingScreen/LoadingScreen'\n\nexport type GridLoadingStateProps = {\n hasReplicaId: boolean\n hasPresignedUrl: boolean\n isConnected: boolean\n}\n\nexport const GRID_LOADING_MESSAGES = {\n heading: 'Setting up grid',\n awaitingReplica: 'Setting up real-time sync…',\n awaitingPresignedUrl: 'Establishing secure connection…',\n awaitingConnection: 'Connecting to server…',\n awaitingData: 'Loading table data…',\n} as const\n\n/**\n * Describes how far along the grid is in establishing its first connection.\n */\nexport function getGridLoadingMessage({\n hasReplicaId,\n hasPresignedUrl,\n isConnected,\n}: GridLoadingStateProps): string {\n if (!hasReplicaId) {\n return GRID_LOADING_MESSAGES.awaitingReplica\n }\n if (!hasPresignedUrl) {\n return GRID_LOADING_MESSAGES.awaitingPresignedUrl\n }\n if (!isConnected) {\n return GRID_LOADING_MESSAGES.awaitingConnection\n }\n return GRID_LOADING_MESSAGES.awaitingData\n}\n\n/**\n * Placeholder shown in place of the grid until its first connection has finished\n * loading data. Rendering this instead of the grid keeps users from editing cells\n * or watching rows stream in while the initial data is still being replayed.\n */\nexport default function GridLoadingState(props: GridLoadingStateProps) {\n return (\n <Stack spacing={1} aria-busy=\"true\" sx={{ mb: 1.25 }}>\n <Typography variant=\"sectionTitle\" component=\"h2\">\n {GRID_LOADING_MESSAGES.heading}\n </Typography>\n <Stack direction=\"row\" spacing={1} role=\"status\" alignItems=\"center\">\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {getGridLoadingMessage(props)}\n </Typography>\n </Stack>\n <SkeletonTable aria-hidden numRows={4} numCols={1} />\n </Stack>\n )\n}\n"],"mappings":";;;;;;AAUA,IAAaQ,IAAwB;CACnCC,SAAS;CACTC,iBAAiB;CACjBC,sBAAsB;CACtBC,oBAAoB;CACpBC,cAAc;AAChB;AAKA,SAAgBE,EAAsB,EACpCV,iBACAC,oBACAC,kBACgC;CAUhC,OATKF,IAGAC,IAGAC,IAGEC,EAAsBK,eAFpBL,EAAsBI,qBAHtBJ,EAAsBG,uBAHtBH,EAAsBE;AASjC;AAOA,SAAeM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,GAAAC;CAAA,AAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAE6BH,IAAA,EAAAI,IAAM,KAAK,GACjDH,IAAA,kBAAC,GAAD;EAAoB,SAAA;EAAyB,WAAA;YAC1Cb,EAAqBC;CADb,CAAA,GAEES,EAAA,KAAAE,GAAAF,EAAA,KAAAG,MAAAD,IAAAF,EAAA,IAAAG,IAAAH,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KAEXE,IAAA,kBAAC,GAAD;EAAsB,MAAA;EAAW,QAAA;CAAG,CAAA,GAAGP,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,OAAAD,IAERS,IAAAR,EAAA,MAA5BQ,IAAAX,EAAsBE,CAAK,GAACC,EAAA,KAAAD,GAAAC,EAAA,KAAAQ;CAAA,IAAAC;CAAA,AAAAT,EAAA,OAAAQ,IAEzBC,IAAAT,EAAA,MALRS,IAAA,kBAAC,GAAD;EAAiB,WAAA;EAAe,SAAA;EAAQ,MAAA;EAAoB,YAAA;YAA5D,CACEF,GACA,kBAAC,GAAD;GAAoB,SAAA;GAAgB,OAAA;aACjCC;EADQ,CAAA,CAFP;KAKER,EAAA,KAAAQ,GAAAR,EAAA,KAAAS;CAAA,IAAAC;CAAA,AAAAV,EAAA,OAAAI,OAAAC,IAAA,2BAAA,KACRK,IAAA,kBAAC,GAAD;EAAe,eAAA;EAAqB,SAAA;EAAY,SAAA;CAAC,CAAA,GAAIV,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CAAA,IAAAW;CAC/C,OAD+CX,EAAA,OAAAS,IAC/CE,IAAAX,EAAA,MAXRW,IAAA,kBAAC,GAAD;EAAgB,SAAA;EAAa,aAAA;EAAW,IAAAT;YAAxC;GACEC;GAGAM;GAMAC;EAVI;KAWEV,EAAA,KAAAS,GAAAT,EAAA,KAAAW,IAXRA;AAWQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReorderColumnsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA8J5E"}
1
+ {"version":3,"file":"ReorderColumnsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAgK5E"}
@@ -3,26 +3,27 @@ import { ConfirmationDialog as t } from "../../ConfirmationDialog/ConfirmationDi
3
3
  import "../../ConfirmationDialog/index.js";
4
4
  import { collectTopLevelProperties as n } from "../../../utils/jsonschema/collectTopLevelProperties.js";
5
5
  import { computeDefaultColumnOrder as r } from "../utils/computeDefaultColumnOrder.js";
6
- import { useState as i } from "react";
7
- import { Box as a, Button as ee, IconButton as o, List as te, ListItem as s, ListItemText as c, Stack as l, Typography as ne } from "@mui/material";
8
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
9
- import re from "lodash-es/isEqual";
10
- import { DeleteOutline as f, North as p, RestartAlt as m, RestoreFromTrash as h, South as ie } from "@mui/icons-material";
11
- import { c as ae } from "react/compiler-runtime";
6
+ import { getNamedColumnIndices as i } from "../utils/getNamedColumnIndices.js";
7
+ import { useState as a } from "react";
8
+ import { Box as o, Button as ee, IconButton as s, List as te, ListItem as c, ListItemText as l, Stack as u, Typography as d } from "@mui/material";
9
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
+ import m from "lodash-es/isEqual";
11
+ import { DeleteOutline as h, North as ne, RestartAlt as re, RestoreFromTrash as ie, South as ae } from "@mui/icons-material";
12
+ import { c as oe } from "react/compiler-runtime";
12
13
  //#region src/components/DataGrid/components/ReorderColumnsDialog.tsx
13
14
  function g(g) {
14
- let _ = ae(57), { open: v, columnNames: y, columnOrder: b, jsonSchema: x, upsertKey: S, canRemoveColumns: C, onSave: w, onCancel: T } = g, E = C === void 0 ? !1 : C, D, O, k;
15
- _[0] !== E || _[1] !== y || _[2] !== b ? (D = E ? y.map(oe).filter((e) => !b.includes(e)) : [], O = i, k = [...b, ...D], _[0] = E, _[1] = y, _[2] = b, _[3] = D, _[4] = O, _[5] = k) : (D = _[3], O = _[4], k = _[5]);
16
- let [A, j] = O(k), [M, N] = i(D), P;
15
+ let _ = oe(57), { open: v, columnNames: y, columnOrder: b, jsonSchema: x, upsertKey: S, canRemoveColumns: C, onSave: w, onCancel: T } = g, E = C === void 0 ? !1 : C, D, O, k;
16
+ _[0] !== E || _[1] !== y || _[2] !== b ? (D = E ? i(y, y.map(se)).filter((e) => !b.includes(e)) : [], O = a, k = [...b, ...D], _[0] = E, _[1] = y, _[2] = b, _[3] = D, _[4] = O, _[5] = k) : (D = _[3], O = _[4], k = _[5]);
17
+ let [A, j] = O(k), [M, N] = a(D), P;
17
18
  _[6] !== y || _[7] !== x || _[8] !== S ? (P = r(y, x, S), _[6] = y, _[7] = x, _[8] = S, _[9] = P) : P = _[9];
18
19
  let F = P, I = A.length - M.length, L;
19
- _[10] !== F || _[11] !== M.length || _[12] !== A ? (L = re(A, F) && M.length === 0, _[10] = F, _[11] = M.length, _[12] = A, _[13] = L) : L = _[13];
20
+ _[10] !== F || _[11] !== M.length || _[12] !== A ? (L = m(A, F) && M.length === 0, _[10] = F, _[11] = M.length, _[12] = A, _[13] = L) : L = _[13];
20
21
  let R = L, z;
21
22
  _[14] === x ? z = _[15] : (z = n(x), _[14] = x, _[15] = z);
22
23
  let B = z, V;
23
24
  _[16] === B ? V = _[17] : (V = (e) => Object.hasOwn(B, e), _[16] = B, _[17] = V);
24
25
  let H = V, U;
25
- _[18] === E ? U = _[19] : (U = E && /* @__PURE__ */ u(ne, {
26
+ _[18] === E ? U = _[19] : (U = E && /* @__PURE__ */ f(d, {
26
27
  variant: "body2",
27
28
  color: "text.secondary",
28
29
  sx: { mb: 1 },
@@ -35,15 +36,15 @@ function g(g) {
35
36
  mb: 1
36
37
  }, _[20] = W) : W = _[20];
37
38
  let G;
38
- _[21] === Symbol.for("react.memo_cache_sentinel") ? (G = /* @__PURE__ */ u(m, {}), _[21] = G) : G = _[21];
39
+ _[21] === Symbol.for("react.memo_cache_sentinel") ? (G = /* @__PURE__ */ f(re, {}), _[21] = G) : G = _[21];
39
40
  let K;
40
41
  _[22] === F ? K = _[23] : (K = () => {
41
42
  j(F), N([]);
42
43
  }, _[22] = F, _[23] = K);
43
44
  let q;
44
- _[24] !== R || _[25] !== K ? (q = /* @__PURE__ */ u(a, {
45
+ _[24] !== R || _[25] !== K ? (q = /* @__PURE__ */ f(o, {
45
46
  sx: W,
46
- children: /* @__PURE__ */ u(ee, {
47
+ children: /* @__PURE__ */ f(ee, {
47
48
  variant: "text",
48
49
  startIcon: G,
49
50
  onClick: K,
@@ -56,52 +57,52 @@ function g(g) {
56
57
  let t;
57
58
  _[34] !== I || _[35] !== E || _[36] !== y || _[37] !== H || _[38] !== M || _[39] !== A.length ? (t = (t, n) => {
58
59
  let r = y[t], i = M.includes(t);
59
- return /* @__PURE__ */ u(s, {
60
+ return /* @__PURE__ */ f(c, {
60
61
  divider: !0,
61
62
  sx: i ? { opacity: .5 } : void 0,
62
- secondaryAction: /* @__PURE__ */ d(l, {
63
+ secondaryAction: /* @__PURE__ */ p(u, {
63
64
  direction: "row",
64
65
  spacing: .5,
65
66
  children: [
66
- E && (i ? /* @__PURE__ */ u(o, {
67
+ E && (i ? /* @__PURE__ */ f(s, {
67
68
  "aria-label": `Restore ${r}`,
68
69
  size: "small",
69
70
  onClick: () => N((e) => e.filter((e) => e !== t)),
70
- children: /* @__PURE__ */ u(h, { fontSize: "small" })
71
- }) : !H(r) && /* @__PURE__ */ u(o, {
71
+ children: /* @__PURE__ */ f(ie, { fontSize: "small" })
72
+ }) : !H(r) && /* @__PURE__ */ f(s, {
72
73
  "aria-label": `Remove ${r}`,
73
74
  size: "small",
74
75
  disabled: I <= 1,
75
76
  onClick: () => N((e) => [...e, t]),
76
- children: /* @__PURE__ */ u(f, { fontSize: "small" })
77
+ children: /* @__PURE__ */ f(h, { fontSize: "small" })
77
78
  })),
78
- /* @__PURE__ */ u(o, {
79
+ /* @__PURE__ */ f(s, {
79
80
  "aria-label": `Move ${r} up`,
80
81
  size: "small",
81
82
  disabled: i || n === 0,
82
83
  onClick: () => j((t) => e(t, n, -1)),
83
- children: /* @__PURE__ */ u(p, { fontSize: "small" })
84
+ children: /* @__PURE__ */ f(ne, { fontSize: "small" })
84
85
  }),
85
- /* @__PURE__ */ u(o, {
86
+ /* @__PURE__ */ f(s, {
86
87
  "aria-label": `Move ${r} down`,
87
88
  size: "small",
88
89
  disabled: i || n === A.length - 1,
89
90
  onClick: () => j((t) => e(t, n, 1)),
90
- children: /* @__PURE__ */ u(ie, { fontSize: "small" })
91
+ children: /* @__PURE__ */ f(ae, { fontSize: "small" })
91
92
  })
92
93
  ]
93
94
  }),
94
- children: /* @__PURE__ */ u(c, { primary: r })
95
+ children: /* @__PURE__ */ f(l, { primary: r })
95
96
  }, t);
96
97
  }, _[34] = I, _[35] = E, _[36] = y, _[37] = H, _[38] = M, _[39] = A.length, _[40] = t) : t = _[40], J = A.map(t), _[27] = I, _[28] = E, _[29] = y, _[30] = H, _[31] = M, _[32] = A, _[33] = J;
97
98
  } else J = _[33];
98
99
  let Y;
99
- _[41] === J ? Y = _[42] : (Y = /* @__PURE__ */ u(te, {
100
+ _[41] === J ? Y = _[42] : (Y = /* @__PURE__ */ f(te, {
100
101
  disablePadding: !0,
101
102
  children: J
102
103
  }), _[41] = J, _[42] = Y);
103
104
  let X;
104
- _[43] !== q || _[44] !== Y || _[45] !== U ? (X = /* @__PURE__ */ d(a, { children: [
105
+ _[43] !== q || _[44] !== Y || _[45] !== U ? (X = /* @__PURE__ */ p(o, { children: [
105
106
  U,
106
107
  q,
107
108
  Y
@@ -111,7 +112,7 @@ function g(g) {
111
112
  let Q;
112
113
  _[48] !== w || _[49] !== M || _[50] !== A ? (Q = () => w(A.filter((e) => !M.includes(e))), _[48] = w, _[49] = M, _[50] = A, _[51] = Q) : Q = _[51];
113
114
  let $;
114
- return _[52] !== T || _[53] !== v || _[54] !== X || _[55] !== Q ? ($ = /* @__PURE__ */ u(t, {
115
+ return _[52] !== T || _[53] !== v || _[54] !== X || _[55] !== Q ? ($ = /* @__PURE__ */ f(t, {
115
116
  open: v,
116
117
  title: "Reorder Columns",
117
118
  content: X,
@@ -120,7 +121,7 @@ function g(g) {
120
121
  onCancel: T
121
122
  }), _[52] = T, _[53] = v, _[54] = X, _[55] = Q, _[56] = $) : $ = _[56], $;
122
123
  }
123
- function oe(e, t) {
124
+ function se(e, t) {
124
125
  return t;
125
126
  }
126
127
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ReorderColumnsDialog.js","names":["ConfirmationDialog","computeDefaultColumnOrder","moveItem","collectTopLevelProperties","DeleteOutline","North","RestartAlt","RestoreFromTrash","South","Box","Button","IconButton","List","ListItem","ListItemText","Stack","Typography","JSONSchema7","isEqual","useMemo","useState","ReorderColumnsDialogProps","open","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onSave","newColumnOrder","onCancel","ReorderColumnsDialog","props","$","_c","t0","undefined","previouslyRemovedColumnIndices","t1","t2","map","_temp","filter","index_0","includes","index","workingOrder","setWorkingOrder","removedColumnIndices","setRemovedColumnIndices","t3","defaultOrder","activeColumnCount","length","t4","isAtDefault","t5","schemaProperties","t6","columnName","Object","hasOwn","isSchemaColumn","t7","mb","t8","Symbol","for","display","justifyContent","t9","t10","t11","t12","t13","colIndex","displayIndex","columnName_0","isRemoved","opacity","indices","index_1","indices_0","order","order_0","t14","t15","children","t16","index_2","t17","_"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { computeDefaultColumnOrder } from '@/components/DataGrid/utils/computeDefaultColumnOrder'\nimport { moveItem } from '@/utils/functions/ArrayUtils'\nimport { collectTopLevelProperties } from '@/utils/jsonschema/collectTopLevelProperties'\nimport {\n DeleteOutline,\n North,\n RestartAlt,\n RestoreFromTrash,\n South,\n} from '@mui/icons-material'\nimport {\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemText,\n Stack,\n Typography,\n} from '@mui/material'\nimport { JSONSchema7 } from 'json-schema'\nimport isEqual from 'lodash-es/isEqual'\nimport { useMemo, useState } from 'react'\n\nexport type ReorderColumnsDialogProps = {\n open: boolean\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n /** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */\n canRemoveColumns?: boolean\n onSave: (newColumnOrder: number[]) => void\n onCancel: () => void\n}\n\nexport default function ReorderColumnsDialog(props: ReorderColumnsDialogProps) {\n const {\n open,\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns = false,\n onSave,\n onCancel,\n } = props\n\n // Columns previously removed (and saved) are absent from columnOrder entirely, but their\n // identity index still exists in columnNames -- surface them so they can be restored.\n const previouslyRemovedColumnIndices = canRemoveColumns\n ? columnNames\n .map((_, index) => index)\n .filter(index => !columnOrder.includes(index))\n : []\n\n const [workingOrder, setWorkingOrder] = useState<number[]>([\n ...columnOrder,\n ...previouslyRemovedColumnIndices,\n ])\n const [removedColumnIndices, setRemovedColumnIndices] = useState<number[]>(\n previouslyRemovedColumnIndices,\n )\n\n const defaultOrder = useMemo(\n () => computeDefaultColumnOrder(columnNames, jsonSchema, upsertKey),\n [columnNames, jsonSchema, upsertKey],\n )\n\n const activeColumnCount = workingOrder.length - removedColumnIndices.length\n const isAtDefault =\n isEqual(workingOrder, defaultOrder) && removedColumnIndices.length === 0\n\n // Only columns that aren't part of the JSON schema can be removed -- schema-defined\n // columns are required for validation/upsert and shouldn't be hidden from the grid.\n // Properties inherited through $ref/allOf/etc. count, matching how the backend resolves\n // a RecordSet's schema columns.\n const schemaProperties = useMemo(\n () => collectTopLevelProperties(jsonSchema),\n [jsonSchema],\n )\n const isSchemaColumn = (columnName: string) =>\n Object.hasOwn(schemaProperties, columnName)\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Reorder Columns\"\n content={\n <Box>\n {canRemoveColumns && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Only columns that are not part of the schema can be removed.\n </Typography>\n )}\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1 }}>\n <Button\n variant=\"text\"\n startIcon={<RestartAlt />}\n onClick={() => {\n setWorkingOrder(defaultOrder)\n setRemovedColumnIndices([])\n }}\n disabled={isAtDefault}\n >\n Reset to Default Order\n </Button>\n </Box>\n <List disablePadding>\n {workingOrder.map((colIndex, displayIndex) => {\n const columnName = columnNames[colIndex]\n const isRemoved = removedColumnIndices.includes(colIndex)\n return (\n <ListItem\n key={colIndex}\n divider\n sx={isRemoved ? { opacity: 0.5 } : undefined}\n secondaryAction={\n <Stack direction=\"row\" spacing={0.5}>\n {canRemoveColumns &&\n (isRemoved ? (\n <IconButton\n aria-label={`Restore ${columnName}`}\n size=\"small\"\n onClick={() =>\n setRemovedColumnIndices(indices =>\n indices.filter(index => index !== colIndex),\n )\n }\n >\n <RestoreFromTrash fontSize=\"small\" />\n </IconButton>\n ) : (\n !isSchemaColumn(columnName) && (\n <IconButton\n aria-label={`Remove ${columnName}`}\n size=\"small\"\n disabled={activeColumnCount <= 1}\n onClick={() =>\n setRemovedColumnIndices(indices => [\n ...indices,\n colIndex,\n ])\n }\n >\n <DeleteOutline fontSize=\"small\" />\n </IconButton>\n )\n ))}\n <IconButton\n aria-label={`Move ${columnName} up`}\n size=\"small\"\n disabled={isRemoved || displayIndex === 0}\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, -1),\n )\n }\n >\n <North fontSize=\"small\" />\n </IconButton>\n <IconButton\n aria-label={`Move ${columnName} down`}\n size=\"small\"\n disabled={\n isRemoved || displayIndex === workingOrder.length - 1\n }\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, 1),\n )\n }\n >\n <South fontSize=\"small\" />\n </IconButton>\n </Stack>\n }\n >\n <ListItemText primary={columnName} />\n </ListItem>\n )\n })}\n </List>\n </Box>\n }\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() =>\n onSave(\n workingOrder.filter(index => !removedColumnIndices.includes(index)),\n )\n }\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReorderColumnsDialog.js","names":["ConfirmationDialog","computeDefaultColumnOrder","getNamedColumnIndices","moveItem","collectTopLevelProperties","DeleteOutline","North","RestartAlt","RestoreFromTrash","South","Box","Button","IconButton","List","ListItem","ListItemText","Stack","Typography","JSONSchema7","isEqual","useMemo","useState","ReorderColumnsDialogProps","open","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onSave","newColumnOrder","onCancel","ReorderColumnsDialog","props","$","_c","t0","undefined","previouslyRemovedColumnIndices","t1","t2","map","_temp","filter","index_0","includes","index","workingOrder","setWorkingOrder","removedColumnIndices","setRemovedColumnIndices","t3","defaultOrder","activeColumnCount","length","t4","isAtDefault","t5","schemaProperties","t6","columnName","Object","hasOwn","isSchemaColumn","t7","mb","t8","Symbol","for","display","justifyContent","t9","t10","t11","t12","t13","colIndex","displayIndex","columnName_0","isRemoved","opacity","indices","index_1","indices_0","order","order_0","t14","t15","children","t16","index_2","t17","_"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { computeDefaultColumnOrder } from '@/components/DataGrid/utils/computeDefaultColumnOrder'\nimport { getNamedColumnIndices } from '@/components/DataGrid/utils/getNamedColumnIndices'\nimport { moveItem } from '@/utils/functions/ArrayUtils'\nimport { collectTopLevelProperties } from '@/utils/jsonschema/collectTopLevelProperties'\nimport {\n DeleteOutline,\n North,\n RestartAlt,\n RestoreFromTrash,\n South,\n} from '@mui/icons-material'\nimport {\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemText,\n Stack,\n Typography,\n} from '@mui/material'\nimport { JSONSchema7 } from 'json-schema'\nimport isEqual from 'lodash-es/isEqual'\nimport { useMemo, useState } from 'react'\n\nexport type ReorderColumnsDialogProps = {\n open: boolean\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n /** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */\n canRemoveColumns?: boolean\n onSave: (newColumnOrder: number[]) => void\n onCancel: () => void\n}\n\nexport default function ReorderColumnsDialog(props: ReorderColumnsDialogProps) {\n const {\n open,\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns = false,\n onSave,\n onCancel,\n } = props\n\n // Columns previously removed (and saved) are absent from columnOrder entirely, but their\n // identity index still exists in columnNames -- surface them so they can be restored. Indices\n // without a name are skipped: there is nothing to label them with in the list.\n const previouslyRemovedColumnIndices = canRemoveColumns\n ? getNamedColumnIndices(\n columnNames,\n columnNames.map((_, index) => index),\n ).filter(index => !columnOrder.includes(index))\n : []\n\n const [workingOrder, setWorkingOrder] = useState<number[]>([\n ...columnOrder,\n ...previouslyRemovedColumnIndices,\n ])\n const [removedColumnIndices, setRemovedColumnIndices] = useState<number[]>(\n previouslyRemovedColumnIndices,\n )\n\n const defaultOrder = useMemo(\n () => computeDefaultColumnOrder(columnNames, jsonSchema, upsertKey),\n [columnNames, jsonSchema, upsertKey],\n )\n\n const activeColumnCount = workingOrder.length - removedColumnIndices.length\n const isAtDefault =\n isEqual(workingOrder, defaultOrder) && removedColumnIndices.length === 0\n\n // Only columns that aren't part of the JSON schema can be removed -- schema-defined\n // columns are required for validation/upsert and shouldn't be hidden from the grid.\n // Properties inherited through $ref/allOf/etc. count, matching how the backend resolves\n // a RecordSet's schema columns.\n const schemaProperties = useMemo(\n () => collectTopLevelProperties(jsonSchema),\n [jsonSchema],\n )\n const isSchemaColumn = (columnName: string) =>\n Object.hasOwn(schemaProperties, columnName)\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Reorder Columns\"\n content={\n <Box>\n {canRemoveColumns && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Only columns that are not part of the schema can be removed.\n </Typography>\n )}\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1 }}>\n <Button\n variant=\"text\"\n startIcon={<RestartAlt />}\n onClick={() => {\n setWorkingOrder(defaultOrder)\n setRemovedColumnIndices([])\n }}\n disabled={isAtDefault}\n >\n Reset to Default Order\n </Button>\n </Box>\n <List disablePadding>\n {workingOrder.map((colIndex, displayIndex) => {\n const columnName = columnNames[colIndex]\n const isRemoved = removedColumnIndices.includes(colIndex)\n return (\n <ListItem\n key={colIndex}\n divider\n sx={isRemoved ? { opacity: 0.5 } : undefined}\n secondaryAction={\n <Stack direction=\"row\" spacing={0.5}>\n {canRemoveColumns &&\n (isRemoved ? (\n <IconButton\n aria-label={`Restore ${columnName}`}\n size=\"small\"\n onClick={() =>\n setRemovedColumnIndices(indices =>\n indices.filter(index => index !== colIndex),\n )\n }\n >\n <RestoreFromTrash fontSize=\"small\" />\n </IconButton>\n ) : (\n !isSchemaColumn(columnName) && (\n <IconButton\n aria-label={`Remove ${columnName}`}\n size=\"small\"\n disabled={activeColumnCount <= 1}\n onClick={() =>\n setRemovedColumnIndices(indices => [\n ...indices,\n colIndex,\n ])\n }\n >\n <DeleteOutline fontSize=\"small\" />\n </IconButton>\n )\n ))}\n <IconButton\n aria-label={`Move ${columnName} up`}\n size=\"small\"\n disabled={isRemoved || displayIndex === 0}\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, -1),\n )\n }\n >\n <North fontSize=\"small\" />\n </IconButton>\n <IconButton\n aria-label={`Move ${columnName} down`}\n size=\"small\"\n disabled={\n isRemoved || displayIndex === workingOrder.length - 1\n }\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, 1),\n )\n }\n >\n <South fontSize=\"small\" />\n </IconButton>\n </Stack>\n }\n >\n <ListItemText primary={columnName} />\n </ListItem>\n )\n })}\n </List>\n </Box>\n }\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() =>\n onSave(\n workingOrder.filter(index => !removedColumnIndices.includes(index)),\n )\n }\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":"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"}
@@ -1,12 +1,21 @@
1
- import { GridModel } from '@/components/DataGrid/DataGridTypes';
1
+ import { GridModel, GridModelSnapshot } from '@/components/DataGrid/DataGridTypes';
2
2
  import { DataGridWebSocket } from './DataGridWebSocket';
3
- interface WebSocketState {
3
+ export interface WebSocketState {
4
4
  model: GridModel | null;
5
5
  /**
6
- * True if the WebSocket has finished the initial sync and can process CRDT updates.
7
- * Corresponds to the `GRID_READY` action.
6
+ * True if the WebSocket has finished a sync exchange on the current connection
7
+ * and can process CRDT updates. Set by `GRID_READY`; cleared on disconnect until
8
+ * `hasCompletedInitialLoad` is set, since a drop mid-replay leaves the model
9
+ * holding only part of the server's data.
8
10
  */
9
11
  hasCompletedInitialSync: boolean;
12
+ /**
13
+ * True once the first connection for the current session has finished replaying
14
+ * the server's data into the model. A one-way transition: later sync activity
15
+ * never takes it back to false, and only connecting to a different
16
+ * session/replica resets it.
17
+ */
18
+ hasCompletedInitialLoad: boolean;
10
19
  /**
11
20
  * True while a clock-sync exchange is in progress. Set on every outgoing
12
21
  * `synchronize-clock` and cleared on `ResponseComplete`, which the server
@@ -24,7 +33,53 @@ interface WebSocketState {
24
33
  connectionError: unknown;
25
34
  websocketError: unknown;
26
35
  }
36
+ export type WebSocketAction = {
37
+ type: 'CONNECT_REQUESTED';
38
+ payload: {
39
+ replicaId: number;
40
+ sessionId: string;
41
+ attemptId: number;
42
+ };
43
+ } | {
44
+ type: 'CONNECTION_ESTABLISHED';
45
+ payload: DataGridWebSocket;
46
+ } | {
47
+ type: 'CONNECTION_OPENED';
48
+ } | {
49
+ type: 'CONNECTION_CLOSED';
50
+ } | {
51
+ type: 'GRID_READY';
52
+ } | {
53
+ type: 'INITIAL_LOAD_COMPLETE';
54
+ } | {
55
+ type: 'SYNC_STARTED';
56
+ } | {
57
+ type: 'SYNC_ENDED';
58
+ } | {
59
+ type: 'MODEL_CREATED';
60
+ payload: GridModel;
61
+ } | {
62
+ type: 'CONNECTION_ERROR';
63
+ payload: unknown;
64
+ } | {
65
+ type: 'WEBSOCKET_ERROR';
66
+ payload: unknown;
67
+ };
68
+ export declare function websocketReducer(state: WebSocketState, action: WebSocketAction): WebSocketState;
27
69
  export declare const initialWebSocketState: WebSocketState;
70
+ /**
71
+ * Whether the server has finished replaying its data into the model, so the grid
72
+ * can be shown and edited. Drives the one-way `INITIAL_LOAD_COMPLETE` transition.
73
+ *
74
+ * Returns false once `hasCompletedInitialLoad` is set, so callers can dispatch
75
+ * unconditionally on a true result without re-entering the transition.
76
+ *
77
+ * `hasCompletedInitialSync` alone is not sufficient: the server may complete the
78
+ * snapshot request before the client has fetched and decoded the snapshot, which
79
+ * leaves that flag true while the rows are still arriving. Requiring an idle sync
80
+ * exchange holds the transition until the replay drains.
81
+ */
82
+ export declare function isInitialLoadReady(state: WebSocketState, modelSnapshot: GridModelSnapshot | null | undefined): boolean;
28
83
  /**
29
84
  * Custom hook to manage a DataGrid WebSocket connection.
30
85
  * Handles:
@@ -43,6 +98,7 @@ export declare function useDataGridWebSocket(options?: UseDataGridWebSocketOptio
43
98
  isConnected: boolean;
44
99
  websocketInstance: DataGridWebSocket | null;
45
100
  hasCompletedInitialSync: boolean;
101
+ hasCompletedInitialLoad: boolean;
46
102
  isSyncing: boolean;
47
103
  model: import("json-joy").Model<import("json-joy").ObjNode<{
48
104
  doc_version: import("json-joy").ConNode<string>;
@@ -86,7 +142,5 @@ export declare function useDataGridWebSocket(options?: UseDataGridWebSocketOptio
86
142
  presignedUrl: string | null;
87
143
  errorEstablishingWebsocketConnection: unknown;
88
144
  websocketError: unknown;
89
- hasSufficientData: boolean;
90
145
  };
91
- export {};
92
146
  //# sourceMappingURL=useDataGridWebsocket.d.ts.map