synapse-react-client 4.0.46 → 4.0.48

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 (559) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/aridhia-queries/useSubmitAridhiaDar.js +2 -2
  3. package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
  4. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
  5. package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
  6. package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
  7. package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
  8. package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
  9. package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
  10. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  11. package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
  12. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  13. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
  14. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
  15. package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
  16. package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
  17. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
  18. package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
  19. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
  20. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  21. package/dist/components/Authentication/LastLoginInfo.js +2 -2
  22. package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
  23. package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
  24. package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
  25. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  26. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  27. package/dist/components/Authentication/TOTPForm.js +3 -3
  28. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  29. package/dist/components/Authentication/index.d.ts +6 -6
  30. package/dist/components/Authentication/index.d.ts.map +1 -1
  31. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
  32. package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
  33. package/dist/components/CardContainer/CardContainer.js +7 -7
  34. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  35. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
  36. package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
  37. package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
  38. package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
  39. package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
  40. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +1 -1
  41. package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
  42. package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
  43. package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
  44. package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
  45. package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
  46. package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
  47. package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
  48. package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
  49. package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
  50. package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
  51. package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
  52. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
  53. package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
  54. package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
  55. package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
  56. package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
  57. package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
  58. package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
  59. package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
  60. package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
  61. package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
  62. package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
  63. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  64. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  65. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
  66. package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
  67. package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
  68. package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
  69. package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
  70. package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
  71. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
  72. package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
  73. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
  74. package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
  75. package/dist/components/DataGrid/components/contextMenu.js +3 -3
  76. package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
  77. package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
  78. package/dist/components/DataGrid/hooks/useGridUndoRedo.js +9 -7
  79. package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
  80. package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
  81. package/dist/components/DataGrid/hooks/useStack.js +2 -2
  82. package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
  83. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  84. package/dist/components/DataGrid/utils/columnFactory.js +47 -42
  85. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  86. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
  87. package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
  88. package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
  89. package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
  90. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +1 -1
  91. package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
  92. package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
  93. package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
  94. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
  95. package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
  96. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  97. package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
  98. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  99. package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
  100. package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
  101. package/dist/components/EntityHeaderTable/Filter.js +1 -1
  102. package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
  103. package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
  104. package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
  105. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
  106. package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
  107. package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
  108. package/dist/components/FormTemplateEditor/StepCard.js +9 -9
  109. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
  110. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
  111. package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
  112. package/dist/components/GenericCard/CardUtils.js.map +1 -1
  113. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +1 -1
  114. package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
  115. package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
  116. package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
  117. package/dist/components/GenericCard/TableRowGenericCard.js +37 -37
  118. package/dist/components/GoalsV3/GoalsV3.js +1 -1
  119. package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
  120. package/dist/components/HexGrid/HexGrid.d.ts +3 -1
  121. package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
  122. package/dist/components/HexGrid/HexGrid.js +14 -13
  123. package/dist/components/HexGrid/HexGrid.js.map +1 -1
  124. package/dist/components/IconSvg/index.d.ts +1 -1
  125. package/dist/components/IconSvg/index.d.ts.map +1 -1
  126. package/dist/components/IconSvg/index.js.map +1 -1
  127. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
  128. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
  129. package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
  130. package/dist/components/Markdown/MarkdownEditor.js +1 -1
  131. package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
  132. package/dist/components/Markdown/widget/index.d.ts +1 -1
  133. package/dist/components/Markdown/widget/index.d.ts.map +1 -1
  134. package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
  135. package/dist/components/ModalDownload/ModalDownload.js +2 -1
  136. package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
  137. package/dist/components/Plot/BarPlot.js +1 -1
  138. package/dist/components/Plot/BarPlot.js.map +1 -1
  139. package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
  140. package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
  141. package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
  142. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
  143. package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
  144. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
  145. package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
  146. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  147. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
  148. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  149. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  150. package/dist/components/QueryBuilder/FilterConditionRow.js +28 -27
  151. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  152. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  153. package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
  154. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  155. package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
  156. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  157. package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
  158. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  159. package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
  160. package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
  161. package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
  162. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
  163. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
  164. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
  165. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
  166. package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
  167. package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
  168. package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
  169. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
  170. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
  171. package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
  172. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
  173. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
  174. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
  175. package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
  176. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
  177. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
  178. package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
  179. package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
  180. package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
  181. package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
  182. package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
  183. package/dist/components/QuerySortSelector.js +5 -5
  184. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
  185. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  186. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
  187. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
  188. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
  189. package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
  190. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
  191. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
  192. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
  193. package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
  194. package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
  195. package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
  196. package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
  197. package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
  198. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
  199. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
  200. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
  201. package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
  202. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
  203. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
  204. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
  205. package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
  206. package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
  207. package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
  208. package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
  209. package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
  210. package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
  211. package/dist/components/QueryWrapperErrorBoundary.js +26 -21
  212. package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
  213. package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
  214. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
  215. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  216. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
  217. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  218. package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
  219. package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
  220. package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
  221. package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
  222. package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
  223. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
  224. package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
  225. package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
  226. package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
  227. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
  228. package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
  229. package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
  230. package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
  231. package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
  232. package/dist/components/RowDataTable/RowDataTable.js +25 -8
  233. package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
  234. package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
  235. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  236. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
  237. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
  238. package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
  239. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
  240. package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
  241. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
  242. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  243. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
  244. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  245. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
  246. package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
  247. package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
  248. package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
  249. package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
  250. package/dist/components/SynapseForm/NavButtons.js.map +1 -1
  251. package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
  252. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
  253. package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
  254. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
  255. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
  256. package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
  257. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
  258. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
  259. package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
  260. package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
  261. package/dist/components/SynapseTable/SqlEditor.js +7 -7
  262. package/dist/components/SynapseTable/SynapseTable.js +8 -8
  263. package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
  264. package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
  265. package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
  266. package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
  267. package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
  268. package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
  269. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  270. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
  271. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  272. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
  273. package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
  274. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
  275. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +142 -142
  276. package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
  277. package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
  278. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
  279. package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
  280. package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
  281. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
  282. package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
  283. package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
  284. package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
  285. package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
  286. package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
  287. package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
  288. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
  289. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  290. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
  291. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
  292. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
  293. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  294. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +60 -60
  295. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  296. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
  297. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
  298. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
  299. package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
  300. package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
  301. package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
  302. package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
  303. package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
  304. package/dist/components/TotalQueryResults.js +14 -14
  305. package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
  306. package/dist/components/Webhook/WebhookDashboard.js +2 -2
  307. package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
  308. package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
  309. package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
  310. package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
  311. package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
  312. package/dist/components/error/ErrorBanner.d.ts.map +1 -1
  313. package/dist/components/error/ErrorBanner.js +49 -46
  314. package/dist/components/error/ErrorBanner.js.map +1 -1
  315. package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
  316. package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
  317. package/dist/components/row_renderers/Dataset.js +6 -6
  318. package/dist/components/row_renderers/Dataset.js.map +1 -1
  319. package/dist/components/row_renderers/Funder.js +1 -1
  320. package/dist/components/row_renderers/Funder.js.map +1 -1
  321. package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
  322. package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
  323. package/dist/components/widgets/ElementWithTooltip.js +22 -14
  324. package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
  325. package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
  326. package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
  327. package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
  328. package/dist/components/widgets/SynapseImage.js +1 -1
  329. package/dist/components/widgets/SynapseImage.js.map +1 -1
  330. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
  331. package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
  332. package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
  333. package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  334. package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
  335. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
  336. package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
  337. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
  338. package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
  339. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
  340. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
  341. package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
  342. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
  343. package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
  344. package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
  345. package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
  346. package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
  347. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
  348. package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
  349. package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
  350. package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
  351. package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
  352. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
  353. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
  354. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
  355. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
  356. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
  357. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
  358. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
  359. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
  360. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
  361. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
  362. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
  363. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
  364. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
  365. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
  366. package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
  367. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
  368. package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
  369. package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
  370. package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
  371. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
  372. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
  373. package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
  374. package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
  375. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
  376. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
  377. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
  378. package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
  379. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
  380. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
  381. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
  382. package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
  383. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
  384. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
  385. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
  386. package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
  387. package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
  388. package/dist/mocks/mockAnnotationColumns.js +1 -1
  389. package/dist/mocks/mockAnnotationColumns.js.map +1 -1
  390. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +9 -0
  391. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  392. package/dist/mocks/msw/handlers/aridhiaHandlers.js +24 -15
  393. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  394. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
  395. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  396. package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
  397. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  398. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
  399. package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
  400. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
  401. package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
  402. package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
  403. package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
  404. package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
  405. package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
  406. package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
  407. package/dist/mocks/query/mockColumnCategoryTable.d.ts +19 -0
  408. package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
  409. package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
  410. package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
  411. package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
  412. package/dist/stories/ColorPaletteInspector.js +2 -2
  413. package/dist/stories/ColorPaletteInspector.js.map +1 -1
  414. package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
  415. package/dist/style/main.css +1 -1
  416. package/dist/synapse-queries/auth/useOIDC.js +2 -2
  417. package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
  418. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
  419. package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
  420. package/dist/synapse-queries/challenge/useChallenge.js +2 -2
  421. package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
  422. package/dist/synapse-queries/chat/useChat.js +8 -8
  423. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  424. package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
  425. package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
  426. package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
  427. package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
  428. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
  429. package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
  430. package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
  431. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  432. package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
  433. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
  434. package/dist/synapse-queries/download/index.js +2 -2
  435. package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
  436. package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
  437. package/dist/synapse-queries/download/useDownloadList.js +14 -13
  438. package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
  439. package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
  440. package/dist/synapse-queries/entity/useEntity.js +20 -20
  441. package/dist/synapse-queries/entity/useEntity.js.map +1 -1
  442. package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
  443. package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
  444. package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
  445. package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
  446. package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
  447. package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
  448. package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
  449. package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
  450. package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
  451. package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
  452. package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
  453. package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
  454. package/dist/synapse-queries/forum/useReply.js +6 -6
  455. package/dist/synapse-queries/forum/useReply.js.map +1 -1
  456. package/dist/synapse-queries/forum/useThread.js +14 -14
  457. package/dist/synapse-queries/forum/useThread.js.map +1 -1
  458. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
  459. package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
  460. package/dist/synapse-queries/grid/useGridSession.js +4 -4
  461. package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
  462. package/dist/synapse-queries/index.js +177 -176
  463. package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
  464. package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
  465. package/dist/synapse-queries/portal/usePortal.js +7 -7
  466. package/dist/synapse-queries/portal/usePortal.js.map +1 -1
  467. package/dist/synapse-queries/subscription/useSubscription.js +4 -4
  468. package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
  469. package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
  470. package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
  471. package/dist/synapse-queries/team/useTeam.js +2 -2
  472. package/dist/synapse-queries/team/useTeam.js.map +1 -1
  473. package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
  474. package/dist/synapse-queries/team/useTeamList.js +3 -3
  475. package/dist/synapse-queries/team/useTeamList.js.map +1 -1
  476. package/dist/synapse-queries/team/useTeamMembers.js +8 -8
  477. package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
  478. package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
  479. package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
  480. package/dist/synapse-queries/trash/useTrashCan.js +4 -4
  481. package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
  482. package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
  483. package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
  484. package/dist/synapse-queries/user/useFavorites.js +4 -4
  485. package/dist/synapse-queries/user/useFavorites.js.map +1 -1
  486. package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
  487. package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
  488. package/dist/synapse-queries/wiki/useWiki.js +10 -10
  489. package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
  490. package/dist/tsconfig.build.tsbuildinfo +1 -1
  491. package/dist/utils/ContentTypeUtils.js +4 -4
  492. package/dist/utils/ContentTypeUtils.js.map +1 -1
  493. package/dist/utils/PermissionLevelToAccessType.js +1 -1
  494. package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
  495. package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
  496. package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
  497. package/dist/utils/context/DocumentMetadataContext.js +1 -1
  498. package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
  499. package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
  500. package/dist/utils/functions/AccessControlListUtils.js +3 -3
  501. package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
  502. package/dist/utils/functions/ArrayUtils.js +2 -2
  503. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  504. package/dist/utils/functions/FileHandleUtils.js +1 -1
  505. package/dist/utils/functions/FileHandleUtils.js.map +1 -1
  506. package/dist/utils/functions/RegularExpressions.js +1 -1
  507. package/dist/utils/functions/RegularExpressions.js.map +1 -1
  508. package/dist/utils/functions/StringUtils.d.ts.map +1 -1
  509. package/dist/utils/functions/StringUtils.js +1 -2
  510. package/dist/utils/functions/StringUtils.js.map +1 -1
  511. package/dist/utils/functions/deepLinkingUtils.js +2 -2
  512. package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
  513. package/dist/utils/functions/enumerationFacet.d.ts +26 -0
  514. package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
  515. package/dist/utils/functions/enumerationFacet.js +27 -0
  516. package/dist/utils/functions/enumerationFacet.js.map +1 -0
  517. package/dist/utils/functions/facetCountUtils.d.ts +12 -0
  518. package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
  519. package/dist/utils/functions/facetCountUtils.js +9 -0
  520. package/dist/utils/functions/facetCountUtils.js.map +1 -0
  521. package/dist/utils/functions/getEndpoint.js.map +1 -1
  522. package/dist/utils/functions/getUserData.js +1 -1
  523. package/dist/utils/functions/getUserData.js.map +1 -1
  524. package/dist/utils/functions/queryUtils.d.ts +1 -1
  525. package/dist/utils/functions/queryUtils.d.ts.map +1 -1
  526. package/dist/utils/functions/queryUtils.js +26 -22
  527. package/dist/utils/functions/queryUtils.js.map +1 -1
  528. package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
  529. package/dist/utils/functions/testDownloadSpeed.js +17 -26
  530. package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
  531. package/dist/utils/functions/unCamelCase.js +1 -1
  532. package/dist/utils/functions/unCamelCase.js.map +1 -1
  533. package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
  534. package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
  535. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
  536. package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
  537. package/dist/utils/hooks/useLogin.d.ts.map +1 -1
  538. package/dist/utils/hooks/useLogin.js +5 -5
  539. package/dist/utils/hooks/useLogin.js.map +1 -1
  540. package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
  541. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
  542. package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
  543. package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
  544. package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
  545. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
  546. package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
  547. package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
  548. package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
  549. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
  550. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
  551. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
  552. package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
  553. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
  554. package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
  555. package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
  556. package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
  557. package/dist/utils/jsonschema/submissionContext.js +2 -2
  558. package/dist/utils/jsonschema/submissionContext.js.map +1 -1
  559. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"useGridUndoRedo.js","names":["GridMenuButton","KeyboardArrowDownIcon","Menu","MenuItem","useCallback","useEffect","useState","DataGridRow","Operation","ModelChange","convertActionToModelChange","useStack","SingleGridAction","type","rowIndex","previousValue","newValue","CompositeGridAction","actions","GridAction","batchGridActions","MAX_UNDO_STEPS","MAX_REDO_STEPS","useGridUndoRedo","onApplyModelChange","$","_c","t0","Symbol","for","undoStack","t1","redoStack","undoAnchorEl","setUndoAnchorEl","redoAnchorEl","setRedoAnchorEl","undoOpen","Boolean","redoOpen","t2","event","currentTarget","handleUndoClick","t3","event_0","handleRedoClick","t4","handleUndoClose","t5","handleRedoClose","t6","isEmpty","lastAction","peek","lastType","sameTypeCount","i","stack","length","i_0","totalActions","size","getUndoPreview","t7","lastAction_0","sameTypeCount_0","i_1","getRedoPreview","t8","undoPreview","t9","redoPreview","t10","actionToUndo","pop","i_2","child","inverseOp","push","inverseOperation","handleUndo","t11","actionToRedo","i_3","child_0","originalOp","originalOperation","handleRedo","t12","t13","handleKeyDown","event_1","ctrlKey","key","shiftKey","metaKey","preventDefault","window","addEventListener","removeEventListener","t14","action","addToUndoStack","t15","clear","clearUndoStack","t16","clearRedoStack","t17","operations","rowValues","batch","operation","start","fromRowIndex","end","toRowIndex","i_4","newRow","oldVal","slice","newVal","forEach","newRow_0","idx","oldRow","deletedRows","row","idx_0","addOperationsToUndoStack","t18","undefined","t19","t20","t21","t22","t23","toLowerCase","t24","t25","undoUI","t26","t27","t28","t29","t30","t31","t32","t33","redoUI","t34","t35","t36","undoTotalActions","redoTotalActions"],"sources":["../../../../src/components/DataGrid/hooks/useGridUndoRedo.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { Menu, MenuItem } from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\nimport { DataGridRow, Operation } from '../DataGridTypes'\nimport { ModelChange } from '../utils/applyModelChange'\nimport { convertActionToModelChange } from '../utils/convertActionToModelChange'\nimport { useStack } from './useStack'\n\n/**\n * Represents a single action in the grid that can be undone or redone\n */\nexport type SingleGridAction = {\n type: 'CREATE' | 'DELETE' | 'UPDATE'\n rowIndex: number\n previousValue?: DataGridRow\n newValue?: DataGridRow\n}\n\n/**\n * Composite action for batch undo/redo\n */\nexport type CompositeGridAction = {\n type: 'COMPOSITE'\n actions: SingleGridAction[]\n}\n\n/**\n * GridAction can be a single or composite action\n */\nexport type GridAction = SingleGridAction | CompositeGridAction\n\n/**\n * Helper to batch multiple single actions into a composite action\n */\nexport function batchGridActions(\n actions: SingleGridAction[],\n): CompositeGridAction {\n return {\n type: 'COMPOSITE',\n actions,\n }\n}\n\nconst MAX_UNDO_STEPS = 100\nconst MAX_REDO_STEPS = 100\n\n/**\n * Hook to manage undo/redo functionality for a grid backed by a CRDT model.\n *\n * @param onApplyModelChange - Function to apply model changes and commit\n */\nexport function useGridUndoRedo(\n onApplyModelChange: (change: ModelChange) => void,\n) {\n // Tracks the stack of undoable actions in LIFO order\n const undoStack = useStack<GridAction>([], MAX_UNDO_STEPS)\n const redoStack = useStack<GridAction>([], MAX_REDO_STEPS)\n\n // Separate state for undo and redo menus\n const [undoAnchorEl, setUndoAnchorEl] = useState<null | HTMLElement>(null)\n const [redoAnchorEl, setRedoAnchorEl] = useState<null | HTMLElement>(null)\n const undoOpen = Boolean(undoAnchorEl)\n const redoOpen = Boolean(redoAnchorEl)\n\n const handleUndoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setUndoAnchorEl(event.currentTarget)\n }\n\n const handleRedoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setRedoAnchorEl(event.currentTarget)\n }\n\n const handleUndoClose = () => setUndoAnchorEl(null)\n const handleRedoClose = () => setRedoAnchorEl(null)\n\n // Generate preview information for the undo menu\n const getUndoPreview = useCallback(() => {\n if (undoStack.isEmpty()) return null\n\n const lastAction = undoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Count consecutive composites from the end\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === 'COMPOSITE') {\n sameTypeCount++\n } else {\n break\n }\n }\n } else {\n lastType = lastAction.type\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: undoStack.size,\n }\n }, [undoStack])\n\n // Generate preview information for the redo menu\n const getRedoPreview = useCallback(() => {\n if (redoStack.isEmpty()) return null\n\n const lastAction = redoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Always treat composite as a single atomic action for preview\n sameTypeCount = 1\n } else {\n lastType = lastAction.type\n for (let i = redoStack.stack.length - 1; i >= 0; i--) {\n if (redoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: redoStack.size,\n }\n }, [redoStack])\n\n const undoPreview = getUndoPreview()\n const redoPreview = getRedoPreview()\n\n /**\n * Undo the most recent action\n */\n const handleUndo = useCallback(() => {\n if (undoStack.isEmpty()) return\n const actionToUndo = undoStack.pop()\n if (actionToUndo) {\n // If composite, undo all child actions in reverse order\n if (actionToUndo.type === 'COMPOSITE') {\n for (let i = actionToUndo.actions.length - 1; i >= 0; i--) {\n const child = actionToUndo.actions[i]\n const inverseOp = convertActionToModelChange(child, 'undo')\n if (inverseOp) {\n onApplyModelChange(inverseOp)\n }\n }\n // Push the composite action itself to the redo stack\n redoStack.push(actionToUndo)\n } else {\n const inverseOperation = convertActionToModelChange(\n actionToUndo,\n 'undo',\n )\n if (!inverseOperation) return\n onApplyModelChange(inverseOperation)\n // Push the single action to the redo stack\n redoStack.push(actionToUndo)\n }\n }\n handleUndoClose()\n }, [onApplyModelChange, undoStack, redoStack])\n\n /**\n * Redo the most recent undone action\n */\n const handleRedo = useCallback(() => {\n if (redoStack.isEmpty()) return\n\n const actionToRedo = redoStack.pop()\n\n if (actionToRedo) {\n // If composite, redo all child actions in order\n if (actionToRedo.type === 'COMPOSITE') {\n for (let i = 0; i < actionToRedo.actions.length; i++) {\n const child = actionToRedo.actions[i]\n const originalOp = convertActionToModelChange(child, 'redo')\n if (originalOp) {\n onApplyModelChange(originalOp)\n }\n }\n // Push the composite action itself back to the undo stack\n undoStack.push(actionToRedo)\n } else {\n const originalOperation = convertActionToModelChange(\n actionToRedo,\n 'redo',\n )\n if (!originalOperation) return\n onApplyModelChange(originalOperation)\n // Push the single action back to the undo stack\n undoStack.push(actionToRedo)\n }\n }\n handleRedoClose()\n }, [redoStack, undoStack, onApplyModelChange])\n\n // Keyboard shortcuts for both undo and redo\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n (event.ctrlKey && event.key === 'z' && !event.shiftKey) ||\n (event.metaKey && event.key === 'z' && !event.shiftKey)\n ) {\n event.preventDefault()\n handleUndo()\n } else if (\n (event.ctrlKey && event.key === 'y') ||\n (event.ctrlKey && event.shiftKey && event.key === 'z') ||\n (event.metaKey && event.shiftKey && event.key === 'z')\n ) {\n event.preventDefault()\n handleRedo()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleUndo, handleRedo])\n\n const addToUndoStack = (action: GridAction) => {\n undoStack.push(action)\n }\n\n const clearUndoStack = () => undoStack.clear()\n\n const clearRedoStack = () => redoStack.clear()\n\n const addOperationsToUndoStack = (\n operations: Operation[],\n rowValues: DataGridRow[],\n newValue: DataGridRow[],\n ) => {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n const batch: SingleGridAction[] = []\n\n for (const operation of operations) {\n const start = operation.fromRowIndex\n const end = operation.toRowIndex\n\n if (operation.type === 'CREATE') {\n for (let i = start; i < end; i++) {\n const newRow = newValue[i]\n batch.push({\n type: 'CREATE',\n rowIndex: i,\n newValue: newRow,\n })\n }\n }\n\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(start, end)\n const newVal = newValue.slice(start, end)\n\n newVal.forEach((newRow: DataGridRow, idx: number) => {\n const oldRow = oldVal[idx]\n const rowIndex = start + idx\n batch.push({\n type: 'UPDATE',\n rowIndex,\n previousValue: oldRow,\n newValue: newRow,\n })\n })\n }\n\n if (operation.type === 'DELETE') {\n const deletedRows = rowValues.slice(start, end)\n deletedRows.forEach((row, idx) => {\n batch.push({\n type: 'DELETE',\n rowIndex: start + idx,\n previousValue: row,\n })\n })\n }\n }\n if (batch.length === 1) {\n addToUndoStack(batch[0])\n } else if (batch.length > 1) {\n addToUndoStack(batchGridActions(batch))\n }\n }\n\n const undoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={undoOpen ? 'undo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleUndoClick}\n disabled={!undoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Undo {undoPreview && `(${undoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"undo-menu\"\n anchorEl={undoAnchorEl}\n open={undoOpen}\n onClose={handleUndoClose}\n >\n {undoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleUndo}>\n Undo last {undoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to undo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n const redoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={redoOpen ? 'redo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleRedoClick}\n disabled={!redoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Redo {redoPreview && `(${redoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"redo-menu\"\n anchorEl={redoAnchorEl}\n open={redoOpen}\n onClose={handleRedoClose}\n >\n {redoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleRedo}>\n Redo last {redoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to redo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n return {\n // Undo\n undoPreview,\n handleUndo,\n addToUndoStack,\n clearUndoStack,\n addOperationsToUndoStack,\n undoUI,\n undoTotalActions: undoPreview ? undoPreview.totalActions : 0,\n\n // Redo\n redoPreview,\n redoUI,\n redoTotalActions: redoPreview ? redoPreview.totalActions : 0,\n handleRedo,\n clearRedoStack,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useGridUndoRedo.js","names":["GridMenuButton","KeyboardArrowDownIcon","Menu","MenuItem","useCallback","useEffect","useState","DataGridRow","Operation","ModelChange","convertActionToModelChange","useStack","SingleGridAction","type","rowIndex","previousValue","newValue","CompositeGridAction","actions","GridAction","batchGridActions","MAX_UNDO_STEPS","MAX_REDO_STEPS","useGridUndoRedo","onApplyModelChange","$","_c","t0","Symbol","for","undoStack","t1","redoStack","undoAnchorEl","setUndoAnchorEl","redoAnchorEl","setRedoAnchorEl","undoOpen","Boolean","redoOpen","t2","event","currentTarget","handleUndoClick","t3","event_0","handleRedoClick","t4","handleUndoClose","t5","handleRedoClose","t6","lastAction","peek","undefined","lastType","sameTypeCount","i","stack","length","i_0","totalActions","size","getUndoPreview","t7","lastAction_0","sameTypeCount_0","i_1","getRedoPreview","t8","undoPreview","t9","redoPreview","t10","isEmpty","actionToUndo","pop","i_2","child","inverseOp","push","inverseOperation","handleUndo","t11","actionToRedo","child_0","originalOp","originalOperation","handleRedo","t12","t13","handleKeyDown","event_1","ctrlKey","key","shiftKey","metaKey","preventDefault","window","addEventListener","removeEventListener","t14","action","addToUndoStack","t15","clear","clearUndoStack","t16","clearRedoStack","t17","operations","rowValues","batch","operation","start","fromRowIndex","end","toRowIndex","i_3","newRow","oldVal","slice","newVal","forEach","newRow_0","idx","oldRow","deletedRows","row","idx_0","addOperationsToUndoStack","t18","t19","t20","t21","t22","t23","toLowerCase","t24","t25","undoUI","t26","t27","t28","t29","t30","t31","t32","t33","redoUI","t34","t35","t36","undoTotalActions","redoTotalActions"],"sources":["../../../../src/components/DataGrid/hooks/useGridUndoRedo.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { Menu, MenuItem } from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\nimport { DataGridRow, Operation } from '../DataGridTypes'\nimport { ModelChange } from '../utils/applyModelChange'\nimport { convertActionToModelChange } from '../utils/convertActionToModelChange'\nimport { useStack } from './useStack'\n\n/**\n * Represents a single action in the grid that can be undone or redone\n */\nexport type SingleGridAction = {\n type: 'CREATE' | 'DELETE' | 'UPDATE'\n rowIndex: number\n previousValue?: DataGridRow\n newValue?: DataGridRow\n}\n\n/**\n * Composite action for batch undo/redo\n */\nexport type CompositeGridAction = {\n type: 'COMPOSITE'\n actions: SingleGridAction[]\n}\n\n/**\n * GridAction can be a single or composite action\n */\nexport type GridAction = SingleGridAction | CompositeGridAction\n\n/**\n * Helper to batch multiple single actions into a composite action\n */\nexport function batchGridActions(\n actions: SingleGridAction[],\n): CompositeGridAction {\n return {\n type: 'COMPOSITE',\n actions,\n }\n}\n\nconst MAX_UNDO_STEPS = 100\nconst MAX_REDO_STEPS = 100\n\n/**\n * Hook to manage undo/redo functionality for a grid backed by a CRDT model.\n *\n * @param onApplyModelChange - Function to apply model changes and commit\n */\nexport function useGridUndoRedo(\n onApplyModelChange: (change: ModelChange) => void,\n) {\n // Tracks the stack of undoable actions in LIFO order\n const undoStack = useStack<GridAction>([], MAX_UNDO_STEPS)\n const redoStack = useStack<GridAction>([], MAX_REDO_STEPS)\n\n // Separate state for undo and redo menus\n const [undoAnchorEl, setUndoAnchorEl] = useState<null | HTMLElement>(null)\n const [redoAnchorEl, setRedoAnchorEl] = useState<null | HTMLElement>(null)\n const undoOpen = Boolean(undoAnchorEl)\n const redoOpen = Boolean(redoAnchorEl)\n\n const handleUndoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setUndoAnchorEl(event.currentTarget)\n }\n\n const handleRedoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setRedoAnchorEl(event.currentTarget)\n }\n\n const handleUndoClose = () => setUndoAnchorEl(null)\n const handleRedoClose = () => setRedoAnchorEl(null)\n\n // Generate preview information for the undo menu\n const getUndoPreview = useCallback(() => {\n const lastAction = undoStack.peek()\n if (lastAction === undefined) return null\n\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Count consecutive composites from the end\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === 'COMPOSITE') {\n sameTypeCount++\n } else {\n break\n }\n }\n } else {\n lastType = lastAction.type\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: undoStack.size,\n }\n }, [undoStack])\n\n // Generate preview information for the redo menu\n const getRedoPreview = useCallback(() => {\n const lastAction = redoStack.peek()\n if (lastAction === undefined) return null\n\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Always treat composite as a single atomic action for preview\n sameTypeCount = 1\n } else {\n lastType = lastAction.type\n for (let i = redoStack.stack.length - 1; i >= 0; i--) {\n if (redoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: redoStack.size,\n }\n }, [redoStack])\n\n const undoPreview = getUndoPreview()\n const redoPreview = getRedoPreview()\n\n /**\n * Undo the most recent action\n */\n const handleUndo = useCallback(() => {\n if (undoStack.isEmpty()) return\n const actionToUndo = undoStack.pop()\n if (actionToUndo) {\n // If composite, undo all child actions in reverse order\n if (actionToUndo.type === 'COMPOSITE') {\n for (let i = actionToUndo.actions.length - 1; i >= 0; i--) {\n const child = actionToUndo.actions[i]\n const inverseOp = convertActionToModelChange(child, 'undo')\n if (inverseOp) {\n onApplyModelChange(inverseOp)\n }\n }\n // Push the composite action itself to the redo stack\n redoStack.push(actionToUndo)\n } else {\n const inverseOperation = convertActionToModelChange(\n actionToUndo,\n 'undo',\n )\n if (!inverseOperation) return\n onApplyModelChange(inverseOperation)\n // Push the single action to the redo stack\n redoStack.push(actionToUndo)\n }\n }\n handleUndoClose()\n }, [onApplyModelChange, undoStack, redoStack])\n\n /**\n * Redo the most recent undone action\n */\n const handleRedo = useCallback(() => {\n if (redoStack.isEmpty()) return\n\n const actionToRedo = redoStack.pop()\n\n if (actionToRedo) {\n // If composite, redo all child actions in order\n if (actionToRedo.type === 'COMPOSITE') {\n for (const child of actionToRedo.actions) {\n const originalOp = convertActionToModelChange(child, 'redo')\n if (originalOp) {\n onApplyModelChange(originalOp)\n }\n }\n // Push the composite action itself back to the undo stack\n undoStack.push(actionToRedo)\n } else {\n const originalOperation = convertActionToModelChange(\n actionToRedo,\n 'redo',\n )\n if (!originalOperation) return\n onApplyModelChange(originalOperation)\n // Push the single action back to the undo stack\n undoStack.push(actionToRedo)\n }\n }\n handleRedoClose()\n }, [redoStack, undoStack, onApplyModelChange])\n\n // Keyboard shortcuts for both undo and redo\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n (event.ctrlKey && event.key === 'z' && !event.shiftKey) ||\n (event.metaKey && event.key === 'z' && !event.shiftKey)\n ) {\n event.preventDefault()\n handleUndo()\n } else if (\n (event.ctrlKey && event.key === 'y') ||\n (event.ctrlKey && event.shiftKey && event.key === 'z') ||\n (event.metaKey && event.shiftKey && event.key === 'z')\n ) {\n event.preventDefault()\n handleRedo()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleUndo, handleRedo])\n\n const addToUndoStack = (action: GridAction) => {\n undoStack.push(action)\n }\n\n const clearUndoStack = () => undoStack.clear()\n\n const clearRedoStack = () => redoStack.clear()\n\n const addOperationsToUndoStack = (\n operations: Operation[],\n rowValues: DataGridRow[],\n newValue: DataGridRow[],\n ) => {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n const batch: SingleGridAction[] = []\n\n for (const operation of operations) {\n const start = operation.fromRowIndex\n const end = operation.toRowIndex\n\n if (operation.type === 'CREATE') {\n for (let i = start; i < end; i++) {\n const newRow = newValue[i]\n batch.push({\n type: 'CREATE',\n rowIndex: i,\n newValue: newRow,\n })\n }\n }\n\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(start, end)\n const newVal = newValue.slice(start, end)\n\n newVal.forEach((newRow: DataGridRow, idx: number) => {\n const oldRow = oldVal[idx]\n const rowIndex = start + idx\n batch.push({\n type: 'UPDATE',\n rowIndex,\n previousValue: oldRow,\n newValue: newRow,\n })\n })\n }\n\n if (operation.type === 'DELETE') {\n const deletedRows = rowValues.slice(start, end)\n deletedRows.forEach((row, idx) => {\n batch.push({\n type: 'DELETE',\n rowIndex: start + idx,\n previousValue: row,\n })\n })\n }\n }\n if (batch.length === 1) {\n addToUndoStack(batch[0])\n } else if (batch.length > 1) {\n addToUndoStack(batchGridActions(batch))\n }\n }\n\n const undoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={undoOpen ? 'undo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleUndoClick}\n disabled={!undoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Undo {undoPreview && `(${undoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"undo-menu\"\n anchorEl={undoAnchorEl}\n open={undoOpen}\n onClose={handleUndoClose}\n >\n {undoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleUndo}>\n Undo last {undoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to undo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n const redoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={redoOpen ? 'redo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleRedoClick}\n disabled={!redoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Redo {redoPreview && `(${redoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"redo-menu\"\n anchorEl={redoAnchorEl}\n open={redoOpen}\n onClose={handleRedoClose}\n >\n {redoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleRedo}>\n Redo last {redoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to redo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n return {\n // Undo\n undoPreview,\n handleUndo,\n addToUndoStack,\n clearUndoStack,\n addOperationsToUndoStack,\n undoUI,\n undoTotalActions: undoPreview ? undoPreview.totalActions : 0,\n\n // Redo\n redoPreview,\n redoUI,\n redoTotalActions: redoPreview ? redoPreview.totalActions : 0,\n handleRedo,\n clearRedoStack,\n }\n}\n"],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  push: (item: T) => void;
8
8
  pop: () => T | undefined;
9
9
  clear: () => void;
10
- peek: () => T;
10
+ peek: () => T | undefined;
11
11
  size: number;
12
12
  isEmpty: () => boolean;
13
13
  };
@@ -14,11 +14,11 @@ function n(n, i) {
14
14
  let u = l, d;
15
15
  a[4] === s ? d = a[5] : (d = () => {
16
16
  if (s.length === 0) return;
17
- let e = s[s.length - 1];
17
+ let e = s.at(-1);
18
18
  return c(r), e;
19
19
  }, a[4] = s, a[5] = d);
20
20
  let f = d, p;
21
- a[6] === s ? p = a[7] : (p = () => s[s.length - 1], a[6] = s, a[7] = p);
21
+ a[6] === s ? p = a[7] : (p = () => s.at(-1), a[6] = s, a[7] = p);
22
22
  let m = p, h;
23
23
  a[8] === Symbol.for("react.memo_cache_sentinel") ? (h = () => {
24
24
  c([]);
@@ -1 +1 @@
1
- {"version":3,"file":"useStack.js","names":["useCallback","useState","useStack","t0","maxSize","$","_c","t1","undefined","stack","currentStack","setCurrentStack","t2","item","prev","newStack","length","shift","push","t3","popped","_temp","pop","t4","peek","t5","Symbol","for","clear","t6","isEmpty","t7","size","prev_0","slice"],"sources":["../../../../src/components/DataGrid/hooks/useStack.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing a stack data structure\n * @param stack - Initial stack items\n * @param maxSize - Optional maximum stack size. When exceeded, oldest items are removed\n */ export function useStack<T>(stack: T[] = [], maxSize?: number) {\n const [currentStack, setCurrentStack] = useState<T[]>(stack)\n\n const push = useCallback(\n (item: T) => {\n setCurrentStack(prev => {\n // Push a new item onto the top of the stack\n const newStack = [...prev, item]\n\n // Enforce maximum stack size by removing oldest element (bottom of stack)\n if (maxSize && newStack.length > maxSize) {\n newStack.shift()\n }\n\n return newStack\n })\n },\n [maxSize],\n )\n\n const pop = useCallback(() => {\n if (currentStack.length === 0) return undefined\n\n const popped = currentStack[currentStack.length - 1]\n setCurrentStack(prev => prev.slice(0, -1))\n return popped\n }, [currentStack])\n\n const peek = useCallback(() => {\n return currentStack[currentStack.length - 1]\n }, [currentStack])\n\n const clear = useCallback(() => {\n setCurrentStack([])\n }, [])\n\n const isEmpty = useCallback(() => currentStack.length === 0, [currentStack])\n\n return {\n stack: currentStack,\n push,\n pop,\n clear,\n peek,\n size: currentStack.length,\n isEmpty,\n }\n}\n"],"mappings":";;;AAMI,SAAOE,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAF,IAAoCI,IAAAF,EAAA,MAAfE,IAAAJ,MAAAK,KAAAA,IAAA,CAAA,IAAAL,GAAeE,EAAA,KAAAF,GAAAE,EAAA,KAAAE;CAC7C,IAAA,CAAAG,GAAAC,KAAwCV,EAAcQ,CAAK,GAACG;CAAA,AAAAP,EAAA,OAAAD,IAezDQ,IAAAP,EAAA,MAZDO,KAAAC,MAAA;EACEF,GAAgBG,MAAA;GAEd,IAAAC,IAAiB,CAAA,GAAID,GAAMD,CAAI;GAK9B,OAFGT,KAAWW,EAAQC,SAAUZ,KAC/BW,EAAQE,MAAO,GAGVF;EAAQ,CAChB;CAAC,GACHV,EAAA,KAAAD,GAAAC,EAAA,KAAAO;CAbH,IAAAM,IAAaN,GAeZO;CAAA,AAAAd,EAAA,OAAAK,IAQAS,IAAAd,EAAA,MANuBc,UAAA;EACtB,IAAIT,EAAYM,WAAY,GAAC;EAE7B,IAAAI,IAAeV,EAAaA,EAAYM,SAAU;EACR,OAA1CL,EAAgBU,CAAyB,GAClCD;CAAM,GACdf,EAAA,KAAAK,GAAAL,EAAA,KAAAc;CAND,IAAAG,IAAYH,GAMMI;CAAA,AAAAlB,EAAA,OAAAK,IAIjBa,IAAAlB,EAAA,MAFwBkB,UAChBb,EAAaA,EAAYM,SAAU,IAC3CX,EAAA,KAAAK,GAAAL,EAAA,KAAAkB;CAFD,IAAAC,IAAaD,GAEKE;CAAA,AAAApB,EAAA,OAAAqB,OAAAC,IAAA,2BAAA,KAEQF,UAAA;EACxBd,EAAgB,CAAA,CAAE;CAAC,GACpBN,EAAA,KAAAoB,KAAAA,IAAApB,EAAA;CAFD,IAAAuB,IAAcH,GAERI;CAAA,AAAAxB,EAAA,OAAAK,EAAAM,SAEqDa,IAAAxB,EAAA,OAA/BwB,UAAMnB,EAAYM,WAAY,GAACX,EAAA,KAAAK,EAAAM,QAAAX,EAAA,MAAAwB;CAA3D,IAAAC,IAAgBD,GAA4DE;CAU3E,OAV2E1B,EAAA,QAAAK,KAAAL,EAAA,QAAAyB,KAAAzB,EAAA,QAAAmB,KAAAnB,EAAA,QAAAiB,KAAAjB,EAAA,QAAAa,KAErEa,IAAA;EAAAtB,OACEC;EAAYQ;EAAAI;EAAAM;EAAAJ;EAAAQ,MAKbtB,EAAYM;EAAOc;CAE3B,GAACzB,EAAA,MAAAK,GAAAL,EAAA,MAAAyB,GAAAzB,EAAA,MAAAmB,GAAAnB,EAAA,MAAAiB,GAAAjB,EAAA,MAAAa,GAAAb,EAAA,MAAA0B,KAAAA,IAAA1B,EAAA,KARM0B;AAQN;AA9CQ,SAAAV,EAAAY,GAAA;CAAA,OAwBiBnB,EAAIoB,MAAO,GAAG,EAAE;AAAC"}
1
+ {"version":3,"file":"useStack.js","names":["useCallback","useState","useStack","t0","maxSize","$","_c","t1","undefined","stack","currentStack","setCurrentStack","t2","item","prev","newStack","length","shift","push","t3","popped","at","_temp","pop","t4","peek","t5","Symbol","for","clear","t6","isEmpty","t7","size","prev_0","slice"],"sources":["../../../../src/components/DataGrid/hooks/useStack.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing a stack data structure\n * @param stack - Initial stack items\n * @param maxSize - Optional maximum stack size. When exceeded, oldest items are removed\n */ export function useStack<T>(stack: T[] = [], maxSize?: number) {\n const [currentStack, setCurrentStack] = useState<T[]>(stack)\n\n const push = useCallback(\n (item: T) => {\n setCurrentStack(prev => {\n // Push a new item onto the top of the stack\n const newStack = [...prev, item]\n\n // Enforce maximum stack size by removing oldest element (bottom of stack)\n if (maxSize && newStack.length > maxSize) {\n newStack.shift()\n }\n\n return newStack\n })\n },\n [maxSize],\n )\n\n const pop = useCallback(() => {\n if (currentStack.length === 0) return undefined\n\n const popped = currentStack.at(-1)\n setCurrentStack(prev => prev.slice(0, -1))\n return popped\n }, [currentStack])\n\n const peek = useCallback(() => {\n return currentStack.at(-1)\n }, [currentStack])\n\n const clear = useCallback(() => {\n setCurrentStack([])\n }, [])\n\n const isEmpty = useCallback(() => currentStack.length === 0, [currentStack])\n\n return {\n stack: currentStack,\n push,\n pop,\n clear,\n peek,\n size: currentStack.length,\n isEmpty,\n }\n}\n"],"mappings":";;;AAMI,SAAOE,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAF,IAAoCI,IAAAF,EAAA,MAAfE,IAAAJ,MAAAK,KAAAA,IAAA,CAAA,IAAAL,GAAeE,EAAA,KAAAF,GAAAE,EAAA,KAAAE;CAC7C,IAAA,CAAAG,GAAAC,KAAwCV,EAAcQ,CAAK,GAACG;CAAA,AAAAP,EAAA,OAAAD,IAezDQ,IAAAP,EAAA,MAZDO,KAAAC,MAAA;EACEF,GAAgBG,MAAA;GAEd,IAAAC,IAAiB,CAAA,GAAID,GAAMD,CAAI;GAK9B,OAFGT,KAAWW,EAAQC,SAAUZ,KAC/BW,EAAQE,MAAO,GAGVF;EAAQ,CAChB;CAAC,GACHV,EAAA,KAAAD,GAAAC,EAAA,KAAAO;CAbH,IAAAM,IAAaN,GAeZO;CAAA,AAAAd,EAAA,OAAAK,IAQAS,IAAAd,EAAA,MANuBc,UAAA;EACtB,IAAIT,EAAYM,WAAY,GAAC;EAE7B,IAAAI,IAAeV,EAAYW,GAAI,EAAE;EACS,OAA1CV,EAAgBW,CAAyB,GAClCF;CAAM,GACdf,EAAA,KAAAK,GAAAL,EAAA,KAAAc;CAND,IAAAI,IAAYJ,GAMMK;CAAA,AAAAnB,EAAA,OAAAK,IAIjBc,IAAAnB,EAAA,MAFwBmB,UAChBd,EAAYW,GAAI,EAAE,GAC1BhB,EAAA,KAAAK,GAAAL,EAAA,KAAAmB;CAFD,IAAAC,IAAaD,GAEKE;CAAA,AAAArB,EAAA,OAAAsB,OAAAC,IAAA,2BAAA,KAEQF,UAAA;EACxBf,EAAgB,CAAA,CAAE;CAAC,GACpBN,EAAA,KAAAqB,KAAAA,IAAArB,EAAA;CAFD,IAAAwB,IAAcH,GAERI;CAAA,AAAAzB,EAAA,OAAAK,EAAAM,SAEqDc,IAAAzB,EAAA,OAA/ByB,UAAMpB,EAAYM,WAAY,GAACX,EAAA,KAAAK,EAAAM,QAAAX,EAAA,MAAAyB;CAA3D,IAAAC,IAAgBD,GAA4DE;CAU3E,OAV2E3B,EAAA,QAAAK,KAAAL,EAAA,QAAA0B,KAAA1B,EAAA,QAAAoB,KAAApB,EAAA,QAAAkB,KAAAlB,EAAA,QAAAa,KAErEc,IAAA;EAAAvB,OACEC;EAAYQ;EAAAK;EAAAM;EAAAJ;EAAAQ,MAKbvB,EAAYM;EAAOe;CAE3B,GAAC1B,EAAA,MAAAK,GAAAL,EAAA,MAAA0B,GAAA1B,EAAA,MAAAoB,GAAApB,EAAA,MAAAkB,GAAAlB,EAAA,MAAAa,GAAAb,EAAA,MAAA2B,KAAAA,IAAA3B,EAAA,KARM2B;AAQN;AA9CQ,SAAAV,EAAAY,GAAA;CAAA,OAwBiBpB,EAAIqB,MAAO,GAAG,EAAE;AAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"columnFactory.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAGL,MAAM,EAGP,MAAM,wCAAwC,CAAA;AAwE/C,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IACrD,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC,CAAA;AA+LD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGzD"}
1
+ {"version":3,"file":"columnFactory.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAGL,MAAM,EAGP,MAAM,wCAAwC,CAAA;AAyE/C,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IACrD,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC,CAAA;AAgND,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAOzD"}
@@ -3,24 +3,25 @@ import { dateTimeColumn as t } from "../columns/DateTimeColumn.js";
3
3
  import { autocompleteMultipleEnumColumn as n } from "../columns/AutocompleteMultipleEnumColumn.js";
4
4
  import { getEmptyValue as r } from "./getEmptyValue.js";
5
5
  import { numberColumn as i } from "../columns/NumberColumn.js";
6
- import { calculateDefaultColumnWidth as a } from "./calculateColumnWidth.js";
7
- import { ColumnHeaderWithTooltip as o } from "../components/ColumnHeaderWithTooltip.js";
8
- import { wrapPasteValueWithSchemaCoercion as s } from "./schemaAwarePasteValue.js";
9
- import { Tooltip as c } from "@mui/material";
10
- import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
11
- import f from "@mui/icons-material/SmartToyTwoTone";
12
- import { c as p } from "react/compiler-runtime";
13
- import { createTextColumn as m, keyColumn as h } from "@sage-bionetworks/react-datasheet-grid";
6
+ import { numberOrEnumColumn as a } from "../columns/NumberOrEnumColumn.js";
7
+ import { calculateDefaultColumnWidth as o } from "./calculateColumnWidth.js";
8
+ import { ColumnHeaderWithTooltip as s } from "../components/ColumnHeaderWithTooltip.js";
9
+ import { wrapPasteValueWithSchemaCoercion as c } from "./schemaAwarePasteValue.js";
10
+ import { Tooltip as l } from "@mui/material";
11
+ import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
12
+ import p from "@mui/icons-material/SmartToyTwoTone";
13
+ import { c as m } from "react/compiler-runtime";
14
+ import { createTextColumn as h, keyColumn as g } from "@sage-bionetworks/react-datasheet-grid";
14
15
  //#region src/components/DataGrid/utils/columnFactory.tsx
15
- function g(e, t) {
16
+ function _(e, t) {
16
17
  function n(n) {
17
- let r = p(13), i = n.rowData.__cellChangeInfo?.[t], a = i?.category === "own-agent" || i?.category === "other-agent", o;
18
- r[0] === n ? o = r[1] : (o = /* @__PURE__ */ u(e, { ...n }), r[0] = n, r[1] = o);
18
+ let r = m(13), i = n.rowData.__cellChangeInfo?.[t], a = i?.category === "own-agent" || i?.category === "other-agent", o;
19
+ r[0] === n ? o = r[1] : (o = /* @__PURE__ */ d(e, { ...n }), r[0] = n, r[1] = o);
19
20
  let s;
20
- r[2] !== i || r[3] !== a ? (s = i && !a && /* @__PURE__ */ u(c, {
21
+ r[2] !== i || r[3] !== a ? (s = i && !a && /* @__PURE__ */ d(l, {
21
22
  title: i.tooltipText,
22
23
  placement: "top-end",
23
- children: /* @__PURE__ */ u("div", { style: {
24
+ children: /* @__PURE__ */ d("div", { style: {
24
25
  position: "absolute",
25
26
  top: 0,
26
27
  right: 0,
@@ -30,11 +31,11 @@ function g(e, t) {
30
31
  pointerEvents: "auto"
31
32
  } })
32
33
  }), r[2] = i, r[3] = a, r[4] = s) : s = r[4];
33
- let m;
34
- r[5] !== i || r[6] !== a || r[7] !== n.focus ? (m = a && !n.focus && /* @__PURE__ */ u(c, {
34
+ let c;
35
+ r[5] !== i || r[6] !== a || r[7] !== n.focus ? (c = a && !n.focus && /* @__PURE__ */ d(l, {
35
36
  title: i.tooltipText,
36
37
  placement: "left",
37
- children: /* @__PURE__ */ u(f, { sx: {
38
+ children: /* @__PURE__ */ d(p, { sx: {
38
39
  fontSize: "1em",
39
40
  alignSelf: "center",
40
41
  flexShrink: 0,
@@ -44,37 +45,37 @@ function g(e, t) {
44
45
  color: "grey.400",
45
46
  backgroundColor: "transparent"
46
47
  } })
47
- }), r[5] = i, r[6] = a, r[7] = n.focus, r[8] = m) : m = r[8];
48
+ }), r[5] = i, r[6] = a, r[7] = n.focus, r[8] = c) : c = r[8];
48
49
  let h;
49
- return r[9] !== o || r[10] !== s || r[11] !== m ? (h = /* @__PURE__ */ d(l, { children: [
50
+ return r[9] !== o || r[10] !== s || r[11] !== c ? (h = /* @__PURE__ */ f(u, { children: [
50
51
  o,
51
52
  s,
52
- m
53
- ] }), r[9] = o, r[10] = s, r[11] = m, r[12] = h) : h = r[12], h;
53
+ c
54
+ ] }), r[9] = o, r[10] = s, r[11] = c, r[12] = h) : h = r[12], h;
54
55
  }
55
56
  return n.displayName = `CellWithTooltip(${t})`, n;
56
57
  }
57
- function _(e, t) {
58
+ function v(e, t) {
58
59
  return ({ rowData: n }) => ({
59
60
  ...n,
60
61
  [e]: r(t)
61
62
  });
62
63
  }
63
- function v(e) {
64
+ function y(e) {
64
65
  return (t) => {
65
66
  let n = t.trim();
66
67
  return n === "" ? r(e) : n;
67
68
  };
68
69
  }
69
- function y(e, t) {
70
+ function b(e, t) {
70
71
  let n = {
71
72
  showPinIcon: e.showPinIcon,
72
73
  hasDescription: !!e.description
73
- }, r = e.customWidth ?? a(e.columnName, void 0, n), i = h(e.columnName, t);
74
+ }, r = e.customWidth ?? o(e.columnName, void 0, n), i = g(e.columnName, t);
74
75
  return {
75
76
  ...i,
76
- component: g(i.component, e.columnName),
77
- title: /* @__PURE__ */ u(o, {
77
+ component: _(i.component, e.columnName),
78
+ title: /* @__PURE__ */ d(s, {
78
79
  name: e.columnName,
79
80
  description: e.description,
80
81
  isRequired: e.isRequired,
@@ -88,32 +89,36 @@ function y(e, t) {
88
89
  grow: 0,
89
90
  shrink: 0,
90
91
  disabled: e.disabled,
91
- deleteValue: _(e.columnName, e.isRequired),
92
- pasteValue: s(i.pasteValue, e.columnName, e.schemaPropertyInfo),
92
+ deleteValue: v(e.columnName, e.isRequired),
93
+ pasteValue: c(i.pasteValue, e.columnName, e.schemaPropertyInfo),
93
94
  stickyLeft: e.isPinned
94
95
  };
95
96
  }
96
- var b = new Set(["date", "date-time"]), x = {
97
- multipleEnum: (e) => y(e, n({
97
+ var x = new Set(["date", "date-time"]), S = {
98
+ multipleEnum: (e) => b(e, n({
98
99
  choices: e.enumeratedValues ?? [],
99
100
  colType: e.typeInfo?.type || null,
100
101
  limitTags: 3,
101
102
  clearValue: r(e.isRequired)
102
103
  })),
103
- boolean: (t) => y(t, e({
104
+ boolean: (t) => b(t, e({
104
105
  choices: [!0, !1],
105
106
  colType: "boolean",
106
107
  clearValue: r(t.isRequired)
107
108
  })),
108
- number: (e) => y(e, i({
109
+ number: (e) => b(e, i({
109
110
  colType: e.typeInfo?.type,
110
111
  isRequired: e.isRequired
111
112
  })),
112
- enumerated: (t) => y(t, e({
113
+ enumerated: (t) => b(t, e({
113
114
  choices: t.enumeratedValues ?? [],
114
115
  colType: t.typeInfo?.type || null,
115
116
  clearValue: r(t.isRequired)
116
117
  })),
118
+ numberOrEnum: (e) => b(e, a({
119
+ enumValues: e.enumeratedValues ?? [],
120
+ clearValue: r(e.isRequired)
121
+ })),
117
122
  dateOrDateTime: (e) => {
118
123
  let n = t({
119
124
  colType: e.typeInfo?.type || null,
@@ -121,33 +126,33 @@ var b = new Set(["date", "date-time"]), x = {
121
126
  }), r = {
122
127
  showPinIcon: e.showPinIcon,
123
128
  hasDescription: !!e.description
124
- }, i = e.customWidth ?? a(e.columnName, {
129
+ }, i = e.customWidth ?? o(e.columnName, {
125
130
  type: e.typeInfo ?? void 0,
126
131
  isRequired: e.isRequired,
127
132
  enumeratedValues: null
128
133
  }, r);
129
134
  return {
130
- ...y(e, n),
135
+ ...b(e, n),
131
136
  minWidth: i,
132
137
  basis: i
133
138
  };
134
139
  },
135
140
  text: (e) => ({
136
- ...y(e, m({
141
+ ...b(e, h({
137
142
  continuousUpdates: !1,
138
143
  deletedValue: void 0,
139
- parseUserInput: v(e.isRequired)
144
+ parseUserInput: y(e.isRequired)
140
145
  })),
141
146
  cellClassName: "MuiInputBase-input"
142
147
  })
143
148
  };
144
- function S(e, t) {
145
- return e ? e.format && b.has(e.format) ? "dateOrDateTime" : e.isArray ? "multipleEnum" : e.type === "boolean" ? "boolean" : e.type === "number" || e.type === "integer" ? "number" : t && t.length > 0 ? "enumerated" : "text" : t && t.length > 0 ? "enumerated" : "text";
149
+ function C(e, t, n) {
150
+ return n ? "numberOrEnum" : e ? e.format && x.has(e.format) ? "dateOrDateTime" : e.isArray ? "multipleEnum" : e.type === "boolean" ? "boolean" : e.type === "number" || e.type === "integer" ? "number" : t && t.length > 0 ? "enumerated" : "text" : t && t.length > 0 ? "enumerated" : "text";
146
151
  }
147
- function C(e) {
148
- return x[S(e.typeInfo, e.enumeratedValues)](e);
152
+ function w(e) {
153
+ return S[C(e.typeInfo, e.enumeratedValues, e.schemaPropertyInfo?.isNumberOrEnum)](e);
149
154
  }
150
155
  //#endregion
151
- export { C as createColumn };
156
+ export { w as createColumn };
152
157
 
153
158
  //# sourceMappingURL=columnFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columnFactory.js","names":["dateTimeColumn","EnumeratedValue","FlatTypeInfo","SchemaPropertyInfo","CellComponent","CellProps","Column","createTextColumn","keyColumn","autocompleteColumn","autocompleteMultipleEnumColumn","numberColumn","calculateDefaultColumnWidth","HeaderOptions","ColumnHeaderWithTooltip","Tooltip","SmartToyTwoTone","DataGridRow","wrapPasteValueWithSchemaCoercion","getEmptyValue","withChangeIndicatorTooltip","OriginalComponent","T","C","colName","CellWithTooltip","props","$","_c","changeInfo","rowData","__cellChangeInfo","isAgent","category","t0","t1","tooltipText","position","top","right","width","height","zIndex","pointerEvents","t2","focus","fontSize","alignSelf","flexShrink","mr","color","backgroundColor","t3","displayName","ColumnConfig","columnName","description","disabled","typeInfo","enumeratedValues","isRequired","customWidth","showPinIcon","isPinned","onTogglePin","isUpsertKey","schemaPropertyInfo","createDeleteValue","Record","createParseUserInput","value","trimmedValue","trim","createBaseColumn","config","columnImpl","headerOptions","hasDescription","undefined","keyed","component","title","minWidth","basis","grow","shrink","deleteValue","pasteValue","stickyLeft","DATE_COLUMN_FORMATS","ReadonlySet","Set","COLUMN_FACTORIES","multipleEnum","choices","colType","type","limitTags","clearValue","boolean","number","enumerated","dateOrDateTime","format","text","continuousUpdates","deletedValue","parseUserInput","cellClassName","getColumnType","length","has","isArray","createColumn","columnType"],"sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"sourcesContent":["import { dateTimeColumn } from '@/components/DataGrid/columns/DateTimeColumn'\nimport { EnumeratedValue } from '@/utils/jsonschema/getEnumeratedValues'\nimport { FlatTypeInfo } from '@/utils/jsonschema/getType'\nimport { SchemaPropertyInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport {\n CellComponent,\n CellProps,\n Column,\n createTextColumn,\n keyColumn,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { autocompleteColumn } from '../columns/AutocompleteColumn'\nimport { autocompleteMultipleEnumColumn } from '../columns/AutocompleteMultipleEnumColumn'\nimport { numberColumn } from '../columns/NumberColumn'\nimport {\n calculateDefaultColumnWidth,\n HeaderOptions,\n} from './calculateColumnWidth'\nimport { ColumnHeaderWithTooltip } from '../components/ColumnHeaderWithTooltip'\nimport { Tooltip } from '@mui/material'\nimport SmartToyTwoTone from '@mui/icons-material/SmartToyTwoTone'\nimport type { DataGridRow } from '../DataGridTypes'\nimport { wrapPasteValueWithSchemaCoercion } from './schemaAwarePasteValue'\nimport { getEmptyValue } from './getEmptyValue'\n\n/**\n * Wraps a column cell component to overlay change-attribution indicators:\n * - Non-agent changes: invisible 7×7px tooltip trigger over the CSS triangle (top-right).\n * - Agent changes: robot icon (1em, vertically centered on the right) with no triangle.\n */\nfunction withChangeIndicatorTooltip<T, C>(\n OriginalComponent: CellComponent<T, C>,\n colName: string,\n): CellComponent<T, C> {\n function CellWithTooltip(props: CellProps<T, C>) {\n const changeInfo = (props.rowData as DataGridRow).__cellChangeInfo?.[\n colName\n ]\n const isAgent =\n changeInfo?.category === 'own-agent' ||\n changeInfo?.category === 'other-agent'\n return (\n <>\n <OriginalComponent {...props} />\n {changeInfo && !isAgent && (\n <Tooltip title={changeInfo.tooltipText} placement=\"top-end\">\n <div\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n width: 7,\n height: 7,\n zIndex: 21,\n pointerEvents: 'auto',\n }}\n />\n </Tooltip>\n )}\n {isAgent && !props.focus && (\n <Tooltip title={changeInfo.tooltipText} placement=\"left\">\n <SmartToyTwoTone\n sx={{\n fontSize: '1em',\n alignSelf: 'center',\n flexShrink: 0,\n mr: 0.5,\n zIndex: 21,\n pointerEvents: 'auto',\n color: 'grey.400',\n backgroundColor: 'transparent',\n }}\n />\n </Tooltip>\n )}\n </>\n )\n }\n CellWithTooltip.displayName = `CellWithTooltip(${colName})`\n return CellWithTooltip\n}\n\ntype ColumnConfig = {\n columnName: string\n description?: string\n disabled?: boolean\n typeInfo: FlatTypeInfo | null\n enumeratedValues: EnumeratedValue[] | string[] | null\n isRequired: boolean\n customWidth?: number\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n isUpsertKey?: boolean\n /**\n * Optional column-level schema info. When provided, paste behavior coerces\n * empty pasted cells to the schema-correct blank (undefined for optional\n * columns, null for required columns). Omit to preserve the column impl's\n * default paste behavior.\n */\n schemaPropertyInfo?: SchemaPropertyInfo\n}\n\nfunction createDeleteValue(columnName: string, isRequired?: boolean) {\n return ({ rowData }: { rowData: Record<string, unknown> }) => ({\n ...rowData,\n [columnName]: getEmptyValue(isRequired),\n })\n}\n\nfunction createParseUserInput(isRequired?: boolean) {\n return (value: string) => {\n const trimmedValue = value.trim()\n if (trimmedValue === '') {\n return getEmptyValue(isRequired)\n }\n return trimmedValue\n }\n}\n\nfunction createBaseColumn(config: ColumnConfig, columnImpl: any) {\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n undefined, // propertyInfo is not available here, passed from higher level\n headerOptions,\n )\n\n const keyed = keyColumn(config.columnName, columnImpl)\n return {\n ...keyed,\n component: withChangeIndicatorTooltip(keyed.component!, config.columnName),\n title: (\n <ColumnHeaderWithTooltip\n name={config.columnName}\n description={config.description}\n isRequired={config.isRequired}\n isUpsertKey={config.isUpsertKey}\n showPinIcon={config.showPinIcon}\n isPinned={config.isPinned}\n onTogglePin={config.onTogglePin}\n />\n ),\n minWidth: width,\n basis: width,\n grow: 0,\n shrink: 0,\n disabled: config.disabled,\n deleteValue: createDeleteValue(config.columnName, config.isRequired),\n pasteValue: wrapPasteValueWithSchemaCoercion(\n keyed.pasteValue,\n config.columnName,\n config.schemaPropertyInfo,\n ),\n stickyLeft: config.isPinned,\n }\n}\n\n// JSON Schema formats handled by the date column: `date-time` collects a time of\n// day alongside the date, `date` a calendar date on its own.\nconst DATE_COLUMN_FORMATS: ReadonlySet<string> = new Set(['date', 'date-time'])\n\nconst COLUMN_FACTORIES = {\n multipleEnum: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteMultipleEnumColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n limitTags: 3,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n boolean: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: [true, false],\n colType: 'boolean',\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n number: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n numberColumn({\n colType: config.typeInfo?.type,\n isRequired: config.isRequired,\n }),\n )\n },\n\n enumerated: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n dateOrDateTime: (config: ColumnConfig) => {\n const columnImpl = dateTimeColumn({\n colType: config.typeInfo?.type || null,\n format: config.typeInfo?.format,\n })\n\n // Date-time needs special width calculation\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n {\n type: config.typeInfo ?? undefined,\n isRequired: config.isRequired,\n enumeratedValues: null,\n },\n headerOptions,\n )\n\n return {\n ...createBaseColumn(config, columnImpl),\n minWidth: width,\n basis: width,\n }\n },\n\n text: (config: ColumnConfig) => {\n const columnImpl = createTextColumn({\n continuousUpdates: false,\n deletedValue: undefined,\n parseUserInput: createParseUserInput(config.isRequired),\n })\n\n return {\n ...createBaseColumn(config, columnImpl),\n cellClassName: 'MuiInputBase-input',\n }\n },\n}\n\nfunction getColumnType(\n typeInfo: FlatTypeInfo | null,\n enumeratedValues?: EnumeratedValue[] | string[] | null,\n): keyof typeof COLUMN_FACTORIES {\n if (!typeInfo) {\n return enumeratedValues && enumeratedValues.length > 0\n ? 'enumerated'\n : 'text'\n }\n\n if (typeInfo.format && DATE_COLUMN_FORMATS.has(typeInfo.format)) {\n return 'dateOrDateTime'\n }\n\n // Handle arrays - check if it's an array of enums\n if (typeInfo.isArray) {\n return 'multipleEnum'\n }\n\n if (typeInfo.type === 'boolean') {\n return 'boolean'\n }\n\n if (typeInfo.type === 'number' || typeInfo.type === 'integer') {\n return 'number'\n }\n\n if (enumeratedValues && enumeratedValues.length > 0) {\n return 'enumerated'\n }\n\n return 'text'\n}\n\nexport function createColumn(config: ColumnConfig): Column {\n const columnType = getColumnType(config.typeInfo, config.enumeratedValues)\n return COLUMN_FACTORIES[columnType](config)\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,SAASoB,EACPC,GACAG,GACqB;CACrB,SAAAC,EAAAC,GAAA;EAAA,IAAAC,IAAAC,EAAA,EAAA,GACEC,IAAoBH,EAAKI,QAAuBC,mBAC9CP,IAEFQ,IACEH,GAAUI,aAAe,eACzBJ,GAAUI,aAAe,eAAaC;EAAA,AAAAP,EAAA,OAAAD,IAGJQ,IAAAP,EAAA,MAAhCO,IAAA,kBAAC,GAAD,EAAkB,GAAKR,EAAK,CAAA,GAAIC,EAAA,KAAAD,GAAAC,EAAA,KAAAO;EAAA,IAAAC;EAAA,AAAAR,EAAA,OAAAE,KAAAF,EAAA,OAAAK,KAC/BG,IAAAN,KAAA,CAAeG,KACd,kBAAC,GAAD;GAAgB,OAAAH,EAAUO;GAAwB,WAAA;aAChD,kBAAA,OAAA,EACS,OAAA;IAAAC,UACK;IAAUC,KACf;IAACC,OACC;IAACC,OACD;IAACC,QACA;IAACC,QACD;IAAEC,eACK;GACjB,EAAC,CAAA;EAVG,CAAA,GAaThB,EAAA,KAAAE,GAAAF,EAAA,KAAAK,GAAAL,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;EAAA,IAAAiB;EAAA,AAAAjB,EAAA,OAAAE,KAAAF,EAAA,OAAAK,KAAAL,EAAA,OAAAD,EAAAmB,SACAD,IAAAZ,KAAA,CAAYN,EAAKmB,SAChB,kBAAC,GAAD;GAAgB,OAAAhB,EAAUO;GAAwB,WAAA;aAChD,kBAAC,GAAD,EACM,IAAA;IAAAU,UACQ;IAAKC,WACJ;IAAQC,YACP;IAACC,IACT;IAAGP,QACC;IAAEC,eACK;IAAMO,OACd;IAAUC,iBACA;GACnB,EAAC,CAAA;EAXG,CAAA,GAcTxB,EAAA,KAAAE,GAAAF,EAAA,KAAAK,GAAAL,EAAA,KAAAD,EAAAmB,OAAAlB,EAAA,KAAAiB,KAAAA,IAAAjB,EAAA;EAAA,IAAAyB;EACA,OADAzB,EAAA,OAAAO,KAAAP,EAAA,QAAAQ,KAAAR,EAAA,QAAAiB,KAhCHQ,IAAA,kBAAA,GAAA,EAAA,UAAA;GACElB;GACCC;GAeAS;EAeA,EAAA,CAAA,GACAjB,EAAA,KAAAO,GAAAP,EAAA,MAAAQ,GAAAR,EAAA,MAAAiB,GAAAjB,EAAA,MAAAyB,KAAAA,IAAAzB,EAAA,KAjCHyB;CAiCG;CAIP,OADA3B,EAAgB4B,cAAc,mBAAmB7B,EAAO,IACjDC;AACT;AAuBA,SAAS0C,EAAkBZ,GAAoBK,GAAsB;CACnE,QAAQ,EAAE9B,kBAAqD;EAC7D,GAAGA;GACFyB,IAAapC,EAAcyC,CAAU;CACxC;AACF;AAEA,SAASS,EAAqBT,GAAsB;CAClD,QAAQU,MAAkB;EACxB,IAAMC,IAAeD,EAAME,KAAK;EAIhC,OAHID,MAAiB,KACZpD,EAAcyC,CAAU,IAE1BW;CACT;AACF;AAEA,SAASE,EAAiBC,GAAsBC,GAAiB;CAC/D,IAAMC,IAA+B;EACnCd,aAAaY,EAAOZ;EACpBe,gBAAgB,CAAC,CAACH,EAAOlB;CAC3B,GAEMhB,IACJkC,EAAOb,eACPjD,EACE8D,EAAOnB,YACPuB,KAAAA,GACAF,CACF,GAEIG,IAAQvE,EAAUkE,EAAOnB,YAAYoB,CAAU;CACrD,OAAO;EACL,GAAGI;EACHC,WAAW5D,EAA2B2D,EAAMC,WAAYN,EAAOnB,UAAU;EACzE0B,OACE,kBAAC,GAAD;GACE,MAAMP,EAAOnB;GACb,aAAamB,EAAOlB;GACpB,YAAYkB,EAAOd;GACnB,aAAac,EAAOT;GACpB,aAAaS,EAAOZ;GACpB,UAAUY,EAAOX;GACjB,aAAaW,EAAOV;EAAY,CAAA;EAGpCkB,UAAU1C;EACV2C,OAAO3C;EACP4C,MAAM;EACNC,QAAQ;EACR5B,UAAUiB,EAAOjB;EACjB6B,aAAanB,EAAkBO,EAAOnB,YAAYmB,EAAOd,UAAU;EACnE2B,YAAYrE,EACV6D,EAAMQ,YACNb,EAAOnB,YACPmB,EAAOR,kBACT;EACAsB,YAAYd,EAAOX;CACrB;AACF;AAIA,IAAM0B,IAA2C,IAAIE,IAAI,CAAC,QAAQ,WAAW,CAAC,GAExEC,IAAmB;CACvBC,eAAenB,MACND,EACLC,GACAhE,EAA+B;EAC7BoF,SAASpB,EAAOf,oBAAoB,CAAA;EACpCoC,SAASrB,EAAOhB,UAAUsC,QAAQ;EAClCC,WAAW;EACXC,YAAY/E,EAAcuD,EAAOd,UAAU;CAC7C,CAAC,CACH;CAGFuC,UAAUzB,MACDD,EACLC,GACAjE,EAAmB;EACjBqF,SAAS,CAAC,IAAM,EAAK;EACrBC,SAAS;EACTG,YAAY/E,EAAcuD,EAAOd,UAAU;CAC7C,CAAC,CACH;CAGFwC,SAAS1B,MACAD,EACLC,GACA/D,EAAa;EACXoF,SAASrB,EAAOhB,UAAUsC;EAC1BpC,YAAYc,EAAOd;CACrB,CAAC,CACH;CAGFyC,aAAa3B,MACJD,EACLC,GACAjE,EAAmB;EACjBqF,SAASpB,EAAOf,oBAAoB,CAAA;EACpCoC,SAASrB,EAAOhB,UAAUsC,QAAQ;EAClCE,YAAY/E,EAAcuD,EAAOd,UAAU;CAC7C,CAAC,CACH;CAGF0C,iBAAiB5B,MAAyB;EACxC,IAAMC,IAAa3E,EAAe;GAChC+F,SAASrB,EAAOhB,UAAUsC,QAAQ;GAClCO,QAAQ7B,EAAOhB,UAAU6C;EAC3B,CAAC,GAGK3B,IAA+B;GACnCd,aAAaY,EAAOZ;GACpBe,gBAAgB,CAAC,CAACH,EAAOlB;EAC3B,GAEMhB,IACJkC,EAAOb,eACPjD,EACE8D,EAAOnB,YACP;GACEyC,MAAMtB,EAAOhB,YAAYoB,KAAAA;GACzBlB,YAAYc,EAAOd;GACnBD,kBAAkB;EACpB,GACAiB,CACF;EAEF,OAAO;GACL,GAAGH,EAAiBC,GAAQC,CAAU;GACtCO,UAAU1C;GACV2C,OAAO3C;EACT;CACF;CAEAgE,OAAO9B,OAOE;EACL,GAAGD,EAAiBC,GAPHnE,EAAiB;GAClCkG,mBAAmB;GACnBC,cAAc5B,KAAAA;GACd6B,gBAAgBtC,EAAqBK,EAAOd,UAAU;EACxD,CAG8Be,CAAU;EACtCiC,eAAe;CACjB;AAEJ;AAEA,SAASC,EACPnD,GACAC,GAC+B;CA4B/B,OA3BKD,IAMDA,EAAS6C,UAAUd,EAAoBsB,IAAIrD,EAAS6C,MAAM,IACrD,mBAIL7C,EAASsD,UACJ,iBAGLtD,EAASsC,SAAS,YACb,YAGLtC,EAASsC,SAAS,YAAYtC,EAASsC,SAAS,YAC3C,WAGLrC,KAAoBA,EAAiBmD,SAAS,IACzC,eAGF,SA1BEnD,KAAoBA,EAAiBmD,SAAS,IACjD,eACA;AAyBR;AAEA,SAAgBG,EAAavC,GAA8B;CAEzD,OAAOkB,EADYiB,EAAcnC,EAAOhB,UAAUgB,EAAOf,gBACjCuD,GAAYxC,CAAM;AAC5C"}
1
+ {"version":3,"file":"columnFactory.js","names":["dateTimeColumn","EnumeratedValue","FlatTypeInfo","SchemaPropertyInfo","CellComponent","CellProps","Column","createTextColumn","keyColumn","autocompleteColumn","autocompleteMultipleEnumColumn","numberColumn","numberOrEnumColumn","calculateDefaultColumnWidth","HeaderOptions","ColumnHeaderWithTooltip","Tooltip","SmartToyTwoTone","DataGridRow","wrapPasteValueWithSchemaCoercion","getEmptyValue","withChangeIndicatorTooltip","OriginalComponent","T","C","colName","CellWithTooltip","props","$","_c","changeInfo","rowData","__cellChangeInfo","isAgent","category","t0","t1","tooltipText","position","top","right","width","height","zIndex","pointerEvents","t2","focus","fontSize","alignSelf","flexShrink","mr","color","backgroundColor","t3","displayName","ColumnConfig","columnName","description","disabled","typeInfo","enumeratedValues","isRequired","customWidth","showPinIcon","isPinned","onTogglePin","isUpsertKey","schemaPropertyInfo","createDeleteValue","Record","createParseUserInput","value","trimmedValue","trim","createBaseColumn","config","columnImpl","headerOptions","hasDescription","undefined","keyed","component","title","minWidth","basis","grow","shrink","deleteValue","pasteValue","stickyLeft","DATE_COLUMN_FORMATS","ReadonlySet","Set","COLUMN_FACTORIES","multipleEnum","choices","colType","type","limitTags","clearValue","boolean","number","enumerated","numberOrEnum","enumValues","dateOrDateTime","format","text","continuousUpdates","deletedValue","parseUserInput","cellClassName","getColumnType","isNumberOrEnum","length","has","isArray","createColumn","columnType"],"sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"sourcesContent":["import { dateTimeColumn } from '@/components/DataGrid/columns/DateTimeColumn'\nimport { EnumeratedValue } from '@/utils/jsonschema/getEnumeratedValues'\nimport { FlatTypeInfo } from '@/utils/jsonschema/getType'\nimport { SchemaPropertyInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport {\n CellComponent,\n CellProps,\n Column,\n createTextColumn,\n keyColumn,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { autocompleteColumn } from '../columns/AutocompleteColumn'\nimport { autocompleteMultipleEnumColumn } from '../columns/AutocompleteMultipleEnumColumn'\nimport { numberColumn } from '../columns/NumberColumn'\nimport { numberOrEnumColumn } from '../columns/NumberOrEnumColumn'\nimport {\n calculateDefaultColumnWidth,\n HeaderOptions,\n} from './calculateColumnWidth'\nimport { ColumnHeaderWithTooltip } from '../components/ColumnHeaderWithTooltip'\nimport { Tooltip } from '@mui/material'\nimport SmartToyTwoTone from '@mui/icons-material/SmartToyTwoTone'\nimport type { DataGridRow } from '../DataGridTypes'\nimport { wrapPasteValueWithSchemaCoercion } from './schemaAwarePasteValue'\nimport { getEmptyValue } from './getEmptyValue'\n\n/**\n * Wraps a column cell component to overlay change-attribution indicators:\n * - Non-agent changes: invisible 7×7px tooltip trigger over the CSS triangle (top-right).\n * - Agent changes: robot icon (1em, vertically centered on the right) with no triangle.\n */\nfunction withChangeIndicatorTooltip<T, C>(\n OriginalComponent: CellComponent<T, C>,\n colName: string,\n): CellComponent<T, C> {\n function CellWithTooltip(props: CellProps<T, C>) {\n const changeInfo = (props.rowData as DataGridRow).__cellChangeInfo?.[\n colName\n ]\n const isAgent =\n changeInfo?.category === 'own-agent' ||\n changeInfo?.category === 'other-agent'\n return (\n <>\n <OriginalComponent {...props} />\n {changeInfo && !isAgent && (\n <Tooltip title={changeInfo.tooltipText} placement=\"top-end\">\n <div\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n width: 7,\n height: 7,\n zIndex: 21,\n pointerEvents: 'auto',\n }}\n />\n </Tooltip>\n )}\n {isAgent && !props.focus && (\n <Tooltip title={changeInfo.tooltipText} placement=\"left\">\n <SmartToyTwoTone\n sx={{\n fontSize: '1em',\n alignSelf: 'center',\n flexShrink: 0,\n mr: 0.5,\n zIndex: 21,\n pointerEvents: 'auto',\n color: 'grey.400',\n backgroundColor: 'transparent',\n }}\n />\n </Tooltip>\n )}\n </>\n )\n }\n CellWithTooltip.displayName = `CellWithTooltip(${colName})`\n return CellWithTooltip\n}\n\ntype ColumnConfig = {\n columnName: string\n description?: string\n disabled?: boolean\n typeInfo: FlatTypeInfo | null\n enumeratedValues: EnumeratedValue[] | string[] | null\n isRequired: boolean\n customWidth?: number\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n isUpsertKey?: boolean\n /**\n * Optional column-level schema info. When provided, paste behavior coerces\n * empty pasted cells to the schema-correct blank (undefined for optional\n * columns, null for required columns). Omit to preserve the column impl's\n * default paste behavior.\n */\n schemaPropertyInfo?: SchemaPropertyInfo\n}\n\nfunction createDeleteValue(columnName: string, isRequired?: boolean) {\n return ({ rowData }: { rowData: Record<string, unknown> }) => ({\n ...rowData,\n [columnName]: getEmptyValue(isRequired),\n })\n}\n\nfunction createParseUserInput(isRequired?: boolean) {\n return (value: string) => {\n const trimmedValue = value.trim()\n if (trimmedValue === '') {\n return getEmptyValue(isRequired)\n }\n return trimmedValue\n }\n}\n\nfunction createBaseColumn(config: ColumnConfig, columnImpl: any) {\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n undefined, // propertyInfo is not available here, passed from higher level\n headerOptions,\n )\n\n const keyed = keyColumn(config.columnName, columnImpl)\n return {\n ...keyed,\n component: withChangeIndicatorTooltip(keyed.component!, config.columnName),\n title: (\n <ColumnHeaderWithTooltip\n name={config.columnName}\n description={config.description}\n isRequired={config.isRequired}\n isUpsertKey={config.isUpsertKey}\n showPinIcon={config.showPinIcon}\n isPinned={config.isPinned}\n onTogglePin={config.onTogglePin}\n />\n ),\n minWidth: width,\n basis: width,\n grow: 0,\n shrink: 0,\n disabled: config.disabled,\n deleteValue: createDeleteValue(config.columnName, config.isRequired),\n pasteValue: wrapPasteValueWithSchemaCoercion(\n keyed.pasteValue,\n config.columnName,\n config.schemaPropertyInfo,\n ),\n stickyLeft: config.isPinned,\n }\n}\n\n// JSON Schema formats handled by the date column: `date-time` collects a time of\n// day alongside the date, `date` a calendar date on its own.\nconst DATE_COLUMN_FORMATS: ReadonlySet<string> = new Set(['date', 'date-time'])\n\nconst COLUMN_FACTORIES = {\n multipleEnum: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteMultipleEnumColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n limitTags: 3,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n boolean: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: [true, false],\n colType: 'boolean',\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n number: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n numberColumn({\n colType: config.typeInfo?.type,\n isRequired: config.isRequired,\n }),\n )\n },\n\n enumerated: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n numberOrEnum: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n numberOrEnumColumn({\n enumValues: config.enumeratedValues ?? [],\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n dateOrDateTime: (config: ColumnConfig) => {\n const columnImpl = dateTimeColumn({\n colType: config.typeInfo?.type || null,\n format: config.typeInfo?.format,\n })\n\n // Date-time needs special width calculation\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n {\n type: config.typeInfo ?? undefined,\n isRequired: config.isRequired,\n enumeratedValues: null,\n },\n headerOptions,\n )\n\n return {\n ...createBaseColumn(config, columnImpl),\n minWidth: width,\n basis: width,\n }\n },\n\n text: (config: ColumnConfig) => {\n const columnImpl = createTextColumn({\n continuousUpdates: false,\n deletedValue: undefined,\n parseUserInput: createParseUserInput(config.isRequired),\n })\n\n return {\n ...createBaseColumn(config, columnImpl),\n cellClassName: 'MuiInputBase-input',\n }\n },\n}\n\nfunction getColumnType(\n typeInfo: FlatTypeInfo | null,\n enumeratedValues?: EnumeratedValue[] | string[] | null,\n isNumberOrEnum?: boolean,\n): keyof typeof COLUMN_FACTORIES {\n // A number-or-enum union reports its numeric branch as its type, so it must\n // be matched before the number check claims it\n if (isNumberOrEnum) {\n return 'numberOrEnum'\n }\n\n if (!typeInfo) {\n return enumeratedValues && enumeratedValues.length > 0\n ? 'enumerated'\n : 'text'\n }\n\n if (typeInfo.format && DATE_COLUMN_FORMATS.has(typeInfo.format)) {\n return 'dateOrDateTime'\n }\n\n // Handle arrays - check if it's an array of enums\n if (typeInfo.isArray) {\n return 'multipleEnum'\n }\n\n if (typeInfo.type === 'boolean') {\n return 'boolean'\n }\n\n if (typeInfo.type === 'number' || typeInfo.type === 'integer') {\n return 'number'\n }\n\n if (enumeratedValues && enumeratedValues.length > 0) {\n return 'enumerated'\n }\n\n return 'text'\n}\n\nexport function createColumn(config: ColumnConfig): Column {\n const columnType = getColumnType(\n config.typeInfo,\n config.enumeratedValues,\n config.schemaPropertyInfo?.isNumberOrEnum,\n )\n return COLUMN_FACTORIES[columnType](config)\n}\n"],"mappings":"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"}
@@ -3,14 +3,14 @@ function e(e) {
3
3
  let t = /* @__PURE__ */ new Map(), n = /^#(?:\/([^/:]+)(?:\/\d+)?)?:\s*(.*)$/;
4
4
  for (let r of e) {
5
5
  if (typeof r != "string") continue;
6
- let e = r.trimStart().match(n);
7
- if (e) {
8
- let n = e[1]?.trim() ?? "_row", r = e[2].trim();
9
- if (n === "_row") {
10
- let e = r.match(/^required key \[([^\]]+)\] not found$/i);
11
- e && (n = e[1]);
6
+ let e = r.trimStart(), i = n.exec(e);
7
+ if (i) {
8
+ let e = i[1]?.trim() ?? "_row", n = i[2].trim();
9
+ if (e === "_row") {
10
+ let t = /^required key \[([^\]]+)\] not found$/i.exec(n);
11
+ t && (e = t[1]);
12
12
  }
13
- t.has(n) || t.set(n, []), t.get(n).push(r);
13
+ t.has(e) || t.set(e, []), t.get(e).push(n);
14
14
  }
15
15
  }
16
16
  return t;
@@ -1 +1 @@
1
- {"version":3,"file":"extractColumnValidationMessages.js","names":["extractColumnValidationMessages","messages","Map","columnMap","regex","raw","str","trimStart","match","columnName","trim","message","requiredKeyMatch","has","set","get","push"],"sources":["../../../../src/components/DataGrid/utils/extractColumnValidationMessages.ts"],"sourcesContent":["/**\n * Extracts column name and validation message from validation message strings.\n *\n * Example:\n * extractColumnValidationMessages([\"#/platform: null is not a valid enum value\"])\n * -> Map { \"platform\" => [\"null is not a valid enum value\"] }\n *\n * extractColumnValidationMessages([\"#/requiredNumberArrayColumn/0: some error\"])\n * -> Map { \"requiredNumberArrayColumn\" => [\"some error\"] }\n *\n * extractColumnValidationMessages([\"#: row-level error\"])\n * -> Map { \"_row\" => [\"row-level error\"] }\n *\n * extractColumnValidationMessages([\"#: required key [missingColumn] not found\"])\n * -> Map { \"missingColumn\" => [\"required key [missingColumn] not found\"] }\n */\nexport function extractColumnValidationMessages(\n messages: string[],\n): Map<string, string[]> {\n const columnMap = new Map<string, string[]>()\n // Validation message format: \"#/columnName: message\"\n // or for array items: \"#/columnName/0: message\"\n // or for object (row) level: \"#: message\"\n const regex = /^#(?:\\/([^/:]+)(?:\\/\\d+)?)?:\\s*(.*)$/\n\n for (const raw of messages) {\n if (typeof raw !== 'string') continue\n const str = raw.trimStart()\n const match = str.match(regex)\n if (match) {\n let columnName = match[1]?.trim() ?? '_row'\n const message = match[2].trim()\n if (columnName === '_row') {\n const requiredKeyMatch = message.match(\n /^required key \\[([^\\]]+)\\] not found$/i,\n )\n if (requiredKeyMatch) {\n columnName = requiredKeyMatch[1]\n }\n }\n\n if (!columnMap.has(columnName)) {\n columnMap.set(columnName, [])\n }\n columnMap.get(columnName)!.push(message)\n }\n }\n\n return columnMap\n}\n"],"mappings":";AAgBA,SAAgBA,EACdC,GACuB;CACvB,IAAME,oBAAY,IAAID,IAAsB,GAItCE,IAAQ;CAEd,KAAK,IAAMC,KAAOJ,GAAU;EAC1B,IAAI,OAAOI,KAAQ,UAAU;EAE7B,IAAMG,IADMH,EAAIE,UACFD,EAAIE,MAAMJ,CAAK;EAC7B,IAAII,GAAO;GACT,IAAIC,IAAaD,EAAM,IAAIE,KAAK,KAAK,QAC/BC,IAAUH,EAAM,GAAGE,KAAK;GAC9B,IAAID,MAAe,QAAQ;IACzB,IAAMG,IAAmBD,EAAQH,MAC/B,wCACF;IACA,AAAII,MACFH,IAAaG,EAAiB;GAElC;GAKAT,AAHKA,EAAUU,IAAIJ,CAAU,KAC3BN,EAAUW,IAAIL,GAAY,CAAA,CAAE,GAE9BN,EAAUY,IAAIN,CAAU,EAAGO,KAAKL,CAAO;EACzC;CACF;CAEA,OAAOR;AACT"}
1
+ {"version":3,"file":"extractColumnValidationMessages.js","names":["extractColumnValidationMessages","messages","Map","columnMap","regex","raw","str","trimStart","match","exec","columnName","trim","message","requiredKeyMatch","has","set","get","push"],"sources":["../../../../src/components/DataGrid/utils/extractColumnValidationMessages.ts"],"sourcesContent":["/**\n * Extracts column name and validation message from validation message strings.\n *\n * Example:\n * extractColumnValidationMessages([\"#/platform: null is not a valid enum value\"])\n * -> Map { \"platform\" => [\"null is not a valid enum value\"] }\n *\n * extractColumnValidationMessages([\"#/requiredNumberArrayColumn/0: some error\"])\n * -> Map { \"requiredNumberArrayColumn\" => [\"some error\"] }\n *\n * extractColumnValidationMessages([\"#: row-level error\"])\n * -> Map { \"_row\" => [\"row-level error\"] }\n *\n * extractColumnValidationMessages([\"#: required key [missingColumn] not found\"])\n * -> Map { \"missingColumn\" => [\"required key [missingColumn] not found\"] }\n */\nexport function extractColumnValidationMessages(\n messages: string[],\n): Map<string, string[]> {\n const columnMap = new Map<string, string[]>()\n // Validation message format: \"#/columnName: message\"\n // or for array items: \"#/columnName/0: message\"\n // or for object (row) level: \"#: message\"\n const regex = /^#(?:\\/([^/:]+)(?:\\/\\d+)?)?:\\s*(.*)$/\n\n for (const raw of messages) {\n if (typeof raw !== 'string') continue\n const str = raw.trimStart()\n const match = regex.exec(str)\n if (match) {\n let columnName = match[1]?.trim() ?? '_row'\n const message = match[2].trim()\n if (columnName === '_row') {\n const requiredKeyMatch = /^required key \\[([^\\]]+)\\] not found$/i.exec(\n message,\n )\n if (requiredKeyMatch) {\n columnName = requiredKeyMatch[1]\n }\n }\n\n if (!columnMap.has(columnName)) {\n columnMap.set(columnName, [])\n }\n columnMap.get(columnName)!.push(message)\n }\n }\n\n return columnMap\n}\n"],"mappings":";AAgBA,SAAgBA,EACdC,GACuB;CACvB,IAAME,oBAAY,IAAID,IAAsB,GAItCE,IAAQ;CAEd,KAAK,IAAMC,KAAOJ,GAAU;EAC1B,IAAI,OAAOI,KAAQ,UAAU;EAC7B,IAAMC,IAAMD,EAAIE,UAAU,GACpBC,IAAQJ,EAAMK,KAAKH,CAAG;EAC5B,IAAIE,GAAO;GACT,IAAIE,IAAaF,EAAM,IAAIG,KAAK,KAAK,QAC/BC,IAAUJ,EAAM,GAAGG,KAAK;GAC9B,IAAID,MAAe,QAAQ;IACzB,IAAMG,IAAmB,yCAAyCJ,KAChEG,CACF;IACA,AAAIC,MACFH,IAAaG,EAAiB;GAElC;GAKAV,AAHKA,EAAUW,IAAIJ,CAAU,KAC3BP,EAAUY,IAAIL,GAAY,CAAA,CAAE,GAE9BP,EAAUa,IAAIN,CAAU,EAAGO,KAAKL,CAAO;EACzC;CACF;CAEA,OAAOT;AACT"}
@@ -6,9 +6,9 @@ import i from "./JsonRxRequestComplete.js";
6
6
  //#region src/components/DataGrid/utils/json-rx/JsonRx.ts
7
7
  var a = class {
8
8
  static fromJson(a) {
9
- if (!Array.isArray(a)) throw Error("Invalid JSON-Rx message: not an array");
9
+ if (!Array.isArray(a)) throw TypeError("Invalid JSON-Rx message: not an array");
10
10
  let o = a[0];
11
- if (typeof o != "number") throw Error(`Invalid JSON-Rx message: type code is not a number, received ${o}`);
11
+ if (typeof o != "number") throw TypeError(`Invalid JSON-Rx message: type code is not a number, received ${o}`);
12
12
  switch (o) {
13
13
  case 0: {
14
14
  let [e, n, r, i] = a;
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRx.js","names":["JsonRxMessage","JsonRxNotification","NOTIFICATION_TYPE_CODE","JsonRxRequest","REQUEST_TYPE_CODE","JsonRxResponse","RESPONSE_TYPE_CODE","JsonRxResponseComplete","RESPONSE_COMPLETE_TYPE_CODE","JsonRxRequestComplete","REQUEST_COMPLETE_TYPE_CODE","JsonRx","fromJson","json","Array","isArray","Error","typeCode","_","requestId","methodName","payload","message"],"sources":["../../../../../src/components/DataGrid/utils/json-rx/JsonRx.ts"],"sourcesContent":["import JsonRxMessage from '@/components/DataGrid/utils/json-rx/JsonRxMessage'\nimport JsonRxNotification, {\n NOTIFICATION_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxNotification'\nimport JsonRxRequest, {\n REQUEST_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxRequest'\nimport JsonRxResponse, {\n RESPONSE_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxResponse'\nimport JsonRxResponseComplete, {\n RESPONSE_COMPLETE_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxResponseComplete'\nimport JsonRxRequestComplete, {\n REQUEST_COMPLETE_TYPE_CODE,\n} from './JsonRxRequestComplete'\n\n/**\n * Static utility methods intended to implement the JSON-Rx communication protocol\n * Spec: https://jsonjoy.com/specs/json-rx\n */\nexport default class JsonRx {\n /**\n * Converts a JSON-encoded JSON-Rx message (which is always an array) into the appropriate JsonRxMessage subclass\n *\n * For more information, see the JSON-Rx specification: https://jsonjoy.com/specs/json-rx\n * @param json\n */\n static fromJson(json: unknown): JsonRxMessage {\n if (!Array.isArray(json)) {\n throw new Error('Invalid JSON-Rx message: not an array')\n }\n const typeCode = json[0]\n\n if (typeof typeCode !== 'number') {\n throw new Error(\n `Invalid JSON-Rx message: type code is not a number, received ${typeCode}`,\n )\n }\n\n switch (typeCode) {\n case REQUEST_TYPE_CODE: {\n // Request\n const [_, requestId, methodName, payload] = json\n return new JsonRxRequest(requestId, methodName, payload)\n }\n case REQUEST_COMPLETE_TYPE_CODE: {\n const [_, requestId, methodName, payload] = json\n const message = new JsonRxRequestComplete(\n requestId,\n methodName,\n payload,\n )\n return message\n }\n case RESPONSE_TYPE_CODE: {\n // Response\n const [_, requestId, payload] = json\n return new JsonRxResponse(requestId, payload)\n }\n case RESPONSE_COMPLETE_TYPE_CODE: {\n // ResponseComplete\n const [_, requestId, payload] = json\n return new JsonRxResponseComplete(requestId, payload)\n }\n case NOTIFICATION_TYPE_CODE: {\n // Notification\n const [_, methodName, payload] = json\n return new JsonRxNotification(methodName, payload)\n }\n default:\n throw new Error(\n `Invalid JSON-Rx message: unknown type code ${typeCode}`,\n )\n }\n }\n}\n"],"mappings":";;;;;;AAqBA,IAAqBW,IAArB,MAA4B;CAO1B,OAAOC,SAASC,GAA8B;EAC5C,IAAI,CAACC,MAAMC,QAAQF,CAAI,GACrB,MAAUG,MAAM,uCAAuC;EAEzD,IAAMC,IAAWJ,EAAK;EAEtB,IAAI,OAAOI,KAAa,UACtB,MAAUD,MACR,gEAAgEC,GAClE;EAGF,QAAQA,GAAR;GACE,KAAA,GAAwB;IAEtB,IAAM,CAACC,GAAGC,GAAWC,GAAYC,KAAWR;IAC5C,OAAO,IAAIV,EAAcgB,GAAWC,GAAYC,CAAO;GACzD;GACA,KAAA,GAAiC;IAC/B,IAAM,CAACH,GAAGC,GAAWC,GAAYC,KAAWR;IAM5C,OAAOS,IALab,EAClBU,GACAC,GACAC,CAEKC;GACT;GACA,KAAA,GAAyB;IAEvB,IAAM,CAACJ,GAAGC,GAAWE,KAAWR;IAChC,OAAO,IAAIR,EAAec,GAAWE,CAAO;GAC9C;GACA,KAAA,GAAkC;IAEhC,IAAM,CAACH,GAAGC,GAAWE,KAAWR;IAChC,OAAO,IAAIN,EAAuBY,GAAWE,CAAO;GACtD;GACA,KAAA,GAA6B;IAE3B,IAAM,CAACH,GAAGE,GAAYC,KAAWR;IACjC,OAAO,IAAIZ,EAAmBmB,GAAYC,CAAO;GACnD;GACA,SACE,MAAUL,MACR,8CAA8CC,GAChD;EACJ;CACF;AACF"}
1
+ {"version":3,"file":"JsonRx.js","names":["JsonRxMessage","JsonRxNotification","NOTIFICATION_TYPE_CODE","JsonRxRequest","REQUEST_TYPE_CODE","JsonRxResponse","RESPONSE_TYPE_CODE","JsonRxResponseComplete","RESPONSE_COMPLETE_TYPE_CODE","JsonRxRequestComplete","REQUEST_COMPLETE_TYPE_CODE","JsonRx","fromJson","json","Array","isArray","TypeError","typeCode","_","requestId","methodName","payload","message","Error"],"sources":["../../../../../src/components/DataGrid/utils/json-rx/JsonRx.ts"],"sourcesContent":["import JsonRxMessage from '@/components/DataGrid/utils/json-rx/JsonRxMessage'\nimport JsonRxNotification, {\n NOTIFICATION_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxNotification'\nimport JsonRxRequest, {\n REQUEST_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxRequest'\nimport JsonRxResponse, {\n RESPONSE_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxResponse'\nimport JsonRxResponseComplete, {\n RESPONSE_COMPLETE_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxResponseComplete'\nimport JsonRxRequestComplete, {\n REQUEST_COMPLETE_TYPE_CODE,\n} from './JsonRxRequestComplete'\n\n/**\n * Static utility methods intended to implement the JSON-Rx communication protocol\n * Spec: https://jsonjoy.com/specs/json-rx\n */\nexport default class JsonRx {\n /**\n * Converts a JSON-encoded JSON-Rx message (which is always an array) into the appropriate JsonRxMessage subclass\n *\n * For more information, see the JSON-Rx specification: https://jsonjoy.com/specs/json-rx\n * @param json\n */\n static fromJson(json: unknown): JsonRxMessage {\n if (!Array.isArray(json)) {\n throw new TypeError('Invalid JSON-Rx message: not an array')\n }\n const typeCode = json[0]\n\n if (typeof typeCode !== 'number') {\n throw new TypeError(\n `Invalid JSON-Rx message: type code is not a number, received ${typeCode}`,\n )\n }\n\n switch (typeCode) {\n case REQUEST_TYPE_CODE: {\n // Request\n const [_, requestId, methodName, payload] = json\n return new JsonRxRequest(requestId, methodName, payload)\n }\n case REQUEST_COMPLETE_TYPE_CODE: {\n const [_, requestId, methodName, payload] = json\n const message = new JsonRxRequestComplete(\n requestId,\n methodName,\n payload,\n )\n return message\n }\n case RESPONSE_TYPE_CODE: {\n // Response\n const [_, requestId, payload] = json\n return new JsonRxResponse(requestId, payload)\n }\n case RESPONSE_COMPLETE_TYPE_CODE: {\n // ResponseComplete\n const [_, requestId, payload] = json\n return new JsonRxResponseComplete(requestId, payload)\n }\n case NOTIFICATION_TYPE_CODE: {\n // Notification\n const [_, methodName, payload] = json\n return new JsonRxNotification(methodName, payload)\n }\n default:\n throw new Error(\n `Invalid JSON-Rx message: unknown type code ${typeCode}`,\n )\n }\n }\n}\n"],"mappings":";;;;;;AAqBA,IAAqBW,IAArB,MAA4B;CAO1B,OAAOC,SAASC,GAA8B;EAC5C,IAAI,CAACC,MAAMC,QAAQF,CAAI,GACrB,MAAUG,UAAU,uCAAuC;EAE7D,IAAMC,IAAWJ,EAAK;EAEtB,IAAI,OAAOI,KAAa,UACtB,MAAUD,UACR,gEAAgEC,GAClE;EAGF,QAAQA,GAAR;GACE,KAAA,GAAwB;IAEtB,IAAM,CAACC,GAAGC,GAAWC,GAAYC,KAAWR;IAC5C,OAAO,IAAIV,EAAcgB,GAAWC,GAAYC,CAAO;GACzD;GACA,KAAA,GAAiC;IAC/B,IAAM,CAACH,GAAGC,GAAWC,GAAYC,KAAWR;IAM5C,OAAOS,IALab,EAClBU,GACAC,GACAC,CAEKC;GACT;GACA,KAAA,GAAyB;IAEvB,IAAM,CAACJ,GAAGC,GAAWE,KAAWR;IAChC,OAAO,IAAIR,EAAec,GAAWE,CAAO;GAC9C;GACA,KAAA,GAAkC;IAEhC,IAAM,CAACH,GAAGC,GAAWE,KAAWR;IAChC,OAAO,IAAIN,EAAuBY,GAAWE,CAAO;GACtD;GACA,KAAA,GAA6B;IAE3B,IAAM,CAACH,GAAGE,GAAYC,KAAWR;IACjC,OAAO,IAAIZ,EAAmBmB,GAAYC,CAAO;GACnD;GACA,SACE,MAAUE,MACR,8CAA8CN,GAChD;EACJ;CACF;AACF"}
@@ -104,7 +104,7 @@ function A(E) {
104
104
  let n = await fetch(e);
105
105
  if (!n.ok) throw Error(`HTTP error! status: ${n.status}`);
106
106
  let r = await n.blob(), i = URL.createObjectURL(r), a = document.createElement("a");
107
- return a.href = i, a.download = t, a.style.display = "none", document.body.appendChild(a), a.click(), document.body.removeChild(a), setTimeout(() => URL.revokeObjectURL(i), 1e3), !0;
107
+ return a.href = i, a.download = t, a.style.display = "none", document.body.appendChild(a), a.click(), a.remove(), setTimeout(() => URL.revokeObjectURL(i), 1e3), !0;
108
108
  } catch (n) {
109
109
  console.error(`Failed to download file ${t}:`, n);
110
110
  try {