synapse-react-client 4.0.32 → 4.0.33

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 (266) hide show
  1. package/dist/SWC.index.js +1 -1
  2. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
  3. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +48 -36
  4. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
  5. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
  6. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +217 -143
  7. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
  8. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.d.ts.map +1 -1
  9. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js +28 -24
  10. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DocumentTemplate.js.map +1 -1
  11. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.d.ts.map +1 -1
  12. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js +180 -94
  13. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ResearchProjectForm/ResearchProjectForm.js.map +1 -1
  14. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts +3 -0
  15. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.d.ts.map +1 -0
  16. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js +9 -0
  17. package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/styles.js.map +1 -0
  18. package/dist/components/CopyToClipboardIcon.d.ts +2 -1
  19. package/dist/components/CopyToClipboardIcon.d.ts.map +1 -1
  20. package/dist/components/CopyToClipboardIcon.js +6 -6
  21. package/dist/components/CopyToClipboardIcon.js.map +1 -1
  22. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  23. package/dist/components/DataGrid/SynapseGrid.js +230 -215
  24. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  25. package/dist/components/DataGrid/SyncGridWithSourceButton.js +3 -3
  26. package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
  27. package/dist/components/DataGrid/columns/DateTimeColumn.js +1 -1
  28. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  29. package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts +10 -0
  30. package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts.map +1 -0
  31. package/dist/components/DataGrid/components/ReorderColumnsButton.js +37 -0
  32. package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -0
  33. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts +12 -0
  34. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -0
  35. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +93 -0
  36. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -0
  37. package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js +1 -1
  38. package/dist/components/DataGrid/utils/applyModelChange.d.ts +3 -0
  39. package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
  40. package/dist/components/DataGrid/utils/applyModelChange.js +5 -0
  41. package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
  42. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts +8 -0
  43. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts.map +1 -0
  44. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js +14 -0
  45. package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js.map +1 -0
  46. package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +1 -1
  47. package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
  48. package/dist/components/EntityFinder/details/view/DetailsView.js +119 -122
  49. package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
  50. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts +5 -1
  51. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.d.ts.map +1 -1
  52. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +7 -7
  53. package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js.map +1 -1
  54. package/dist/components/EntityLink.d.ts +2 -0
  55. package/dist/components/EntityLink.d.ts.map +1 -1
  56. package/dist/components/EntityLink.js +15 -11
  57. package/dist/components/EntityLink.js.map +1 -1
  58. package/dist/components/EntitySidebar/AccessAndPermissions.css +1 -0
  59. package/dist/components/EntitySidebar/AccessAndPermissions.d.ts +7 -0
  60. package/dist/components/EntitySidebar/AccessAndPermissions.d.ts.map +1 -0
  61. package/dist/components/EntitySidebar/AccessAndPermissions.js +75 -0
  62. package/dist/components/EntitySidebar/AccessAndPermissions.js.map +1 -0
  63. package/dist/components/EntitySidebar/AccessAndPermissions.module.js +15 -0
  64. package/dist/components/EntitySidebar/AccessAndPermissions.module.js.map +1 -0
  65. package/dist/components/EntitySidebar/AccessAndPermissions.module.scss +58 -0
  66. package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
  67. package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
  68. package/dist/components/EntitySidebar/EntitySidebar.js +54 -42
  69. package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
  70. package/dist/components/EntitySidebar/EntitySidebar.module.js +10 -11
  71. package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
  72. package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -13
  73. package/dist/components/EntityTreeTable/EntityTreeTable.css +1 -1
  74. package/dist/components/EntityTreeTable/EntityTreeTable.module.js +1 -1
  75. package/dist/components/EntityTreeTable/EntityTreeTable.module.js.map +1 -1
  76. package/dist/components/EntityTreeTable/EntityTreeTable.module.scss +18 -0
  77. package/dist/components/EntityTreeTable/components/ColumnHeaders.d.ts.map +1 -1
  78. package/dist/components/EntityTreeTable/components/ColumnHeaders.js +20 -7
  79. package/dist/components/EntityTreeTable/components/ColumnHeaders.js.map +1 -1
  80. package/dist/components/EntityTreeTable/components/EntityNameCell.d.ts.map +1 -1
  81. package/dist/components/EntityTreeTable/components/EntityNameCell.js +3 -1
  82. package/dist/components/EntityTreeTable/components/EntityNameCell.js.map +1 -1
  83. package/dist/components/EntityTreeTable/components/EntityTreeTableView.d.ts.map +1 -1
  84. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js +4 -1
  85. package/dist/components/EntityTreeTable/components/EntityTreeTableView.js.map +1 -1
  86. package/dist/components/EntityTreeTable/components/IdColumnHeader.d.ts.map +1 -1
  87. package/dist/components/EntityTreeTable/components/IdColumnHeader.js +3 -1
  88. package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
  89. package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
  90. package/dist/components/EntityTreeTable/hooks/useTableColumns.js +24 -19
  91. package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
  92. package/dist/components/Forum/DiscussionEmpty.css +1 -1
  93. package/dist/components/Forum/DiscussionEmpty.module.js +4 -4
  94. package/dist/components/Forum/DiscussionEmpty.module.js.map +1 -1
  95. package/dist/components/Forum/DiscussionEmpty.module.scss +3 -6
  96. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.css +1 -0
  97. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts +29 -0
  98. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.d.ts.map +1 -0
  99. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js +229 -0
  100. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.js.map +1 -0
  101. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js +9 -0
  102. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.js.map +1 -0
  103. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.scss +19 -0
  104. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts +23 -0
  105. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.d.ts.map +1 -0
  106. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js +39 -0
  107. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.js.map +1 -0
  108. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts +14 -0
  109. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.d.ts.map +1 -0
  110. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js +12 -0
  111. package/dist/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.js.map +1 -0
  112. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts +17 -0
  113. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.d.ts.map +1 -0
  114. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js +8 -0
  115. package/dist/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.js.map +1 -0
  116. package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts +6 -0
  117. package/dist/components/JsonSchema/JsonSchemaPicker/index.d.ts.map +1 -0
  118. package/dist/components/JsonSchema/JsonSchemaPicker/index.js +4 -0
  119. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts +20 -0
  120. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.d.ts.map +1 -0
  121. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js +25 -0
  122. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.js.map +1 -0
  123. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts +35 -0
  124. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.d.ts.map +1 -0
  125. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js +60 -0
  126. package/dist/components/JsonSchema/JsonSchemaPicker/useJsonSchemaSelection.js.map +1 -0
  127. package/dist/components/ProjectInfo/ProjectInfo.css +1 -1
  128. package/dist/components/ProjectInfo/ProjectInfo.module.js +5 -5
  129. package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -1
  130. package/dist/components/ProjectInfo/ProjectInfo.module.scss +2 -4
  131. package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -1
  132. package/dist/components/ProjectInfo/ProjectInfoPopover.js +17 -16
  133. package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -1
  134. package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
  135. package/dist/components/ProjectStorage/ProjectDataAvailability.js +16 -16
  136. package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
  137. package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
  138. package/dist/components/ProvenanceGraph/ProvenanceGraph.js +95 -95
  139. package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
  140. package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +2 -2
  141. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.d.ts.map +1 -1
  142. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js +116 -91
  143. package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
  144. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  145. package/dist/components/SynapseChat/SynapseChat.js +40 -40
  146. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  147. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -2
  148. package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
  149. package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
  150. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.css +1 -1
  151. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.d.ts.map +1 -1
  152. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js +0 -7
  153. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.js.map +1 -1
  154. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js +2 -2
  155. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.js.map +1 -1
  156. package/dist/components/SynapseChat/components/AttachmentChip/AttachmentChip.module.scss +12 -2
  157. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.css +1 -1
  158. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js +3 -3
  159. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.js.map +1 -1
  160. package/dist/components/SynapseChat/components/ChatAttachmentStrip/ChatAttachmentStrip.module.scss +5 -1
  161. package/dist/components/TanStackTable/ColumnHeader.d.ts +7 -0
  162. package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
  163. package/dist/components/TanStackTable/ColumnHeader.js +10 -9
  164. package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
  165. package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts +8 -0
  166. package/dist/components/TanStackTable/StyledVirtualTanStackTable.d.ts.map +1 -1
  167. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js +31 -22
  168. package/dist/components/TanStackTable/StyledVirtualTanStackTable.js.map +1 -1
  169. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts +21 -0
  170. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.d.ts.map +1 -0
  171. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js +22 -0
  172. package/dist/components/TanStackTable/useFetchNextPageOnScrollToBottom.js.map +1 -0
  173. package/dist/components/entity/metadata/AnnotationsTable.js +2 -2
  174. package/dist/components/entity/metadata/AnnotationsTable.js.map +1 -1
  175. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.d.ts.map +1 -1
  176. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js +8 -8
  177. package/dist/components/entity/page/breadcrumbs/EntityPageBreadcrumbs.js.map +1 -1
  178. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  179. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  180. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +22 -22
  181. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  182. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
  183. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +62 -68
  184. package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
  185. package/dist/components/styled/StyledTableContainer.d.ts +1 -0
  186. package/dist/components/styled/StyledTableContainer.d.ts.map +1 -1
  187. package/dist/components/styled/StyledTableContainer.js +3 -3
  188. package/dist/components/styled/StyledTableContainer.js.map +1 -1
  189. package/dist/mocks/eDuc/mockEDucTemplates.d.ts +7 -0
  190. package/dist/mocks/eDuc/mockEDucTemplates.d.ts.map +1 -0
  191. package/dist/mocks/eDuc/mockEDucTemplates.js +18 -0
  192. package/dist/mocks/eDuc/mockEDucTemplates.js.map +1 -0
  193. package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts +31 -0
  194. package/dist/mocks/jsonschema/mockJsonSchemaListing.d.ts.map +1 -0
  195. package/dist/mocks/jsonschema/mockJsonSchemaListing.js +101 -0
  196. package/dist/mocks/jsonschema/mockJsonSchemaListing.js.map +1 -0
  197. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts +2 -0
  198. package/dist/mocks/msw/handlers/eDucTemplateHandlers.d.ts.map +1 -0
  199. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js +14 -0
  200. package/dist/mocks/msw/handlers/eDucTemplateHandlers.js.map +1 -0
  201. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts +8 -0
  202. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.d.ts.map +1 -0
  203. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js +30 -0
  204. package/dist/mocks/msw/handlers/jsonSchemaListingHandlers.js.map +1 -0
  205. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  206. package/dist/mocks/msw/handlers.js +55 -51
  207. package/dist/mocks/msw/handlers.js.map +1 -1
  208. package/dist/style/abstracts/_cssVariables.scss +13 -0
  209. package/dist/style/components/entity_finder/_details-view.scss +0 -10
  210. package/dist/style/main.css +1 -1
  211. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  212. package/dist/synapse-client/SynapseClient.js +2 -6
  213. package/dist/synapse-client/SynapseClient.js.map +1 -1
  214. package/dist/synapse-queries/KeyFactory.d.ts +3 -0
  215. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  216. package/dist/synapse-queries/KeyFactory.js +9 -0
  217. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  218. package/dist/synapse-queries/dataaccess/useEDuc.d.ts +3 -3
  219. package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
  220. package/dist/synapse-queries/dataaccess/useEDuc.js +40 -35
  221. package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
  222. package/dist/synapse-queries/entity/index.d.ts +0 -2
  223. package/dist/synapse-queries/entity/index.d.ts.map +1 -1
  224. package/dist/synapse-queries/entity/index.js +8 -10
  225. package/dist/synapse-queries/index.d.ts +1 -0
  226. package/dist/synapse-queries/index.d.ts.map +1 -1
  227. package/dist/synapse-queries/index.js +136 -128
  228. package/dist/synapse-queries/index.js.map +1 -1
  229. package/dist/synapse-queries/jsonschema/index.d.ts +6 -0
  230. package/dist/synapse-queries/jsonschema/index.d.ts.map +1 -0
  231. package/dist/synapse-queries/jsonschema/index.js +6 -0
  232. package/dist/synapse-queries/jsonschema/useEntityBoundSchema.d.ts.map +1 -0
  233. package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.js +1 -1
  234. package/dist/synapse-queries/jsonschema/useEntityBoundSchema.js.map +1 -0
  235. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts +26 -0
  236. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.d.ts.map +1 -0
  237. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js +36 -0
  238. package/dist/synapse-queries/jsonschema/useListJsonSchemaVersions.js.map +1 -0
  239. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts +8 -0
  240. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.d.ts.map +1 -0
  241. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js +21 -0
  242. package/dist/synapse-queries/jsonschema/useListJsonSchemasInfinite.js.map +1 -0
  243. package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts +8 -0
  244. package/dist/synapse-queries/jsonschema/useListOrganizations.d.ts.map +1 -0
  245. package/dist/synapse-queries/jsonschema/useListOrganizations.js +22 -0
  246. package/dist/synapse-queries/jsonschema/useListOrganizations.js.map +1 -0
  247. package/dist/synapse-queries/jsonschema/useSchema.d.ts.map +1 -0
  248. package/dist/synapse-queries/{entity → jsonschema}/useSchema.js +1 -1
  249. package/dist/synapse-queries/jsonschema/useSchema.js.map +1 -0
  250. package/dist/testutils/VirtualizedTableTestUtils.js +17 -0
  251. package/dist/testutils/VirtualizedTableTestUtils.js.map +1 -0
  252. package/dist/theme/palette/Palettes.d.ts.map +1 -1
  253. package/dist/theme/palette/Palettes.js +13 -0
  254. package/dist/theme/palette/Palettes.js.map +1 -1
  255. package/dist/tsconfig.build.tsbuildinfo +1 -1
  256. package/dist/utils/APIConstants.d.ts +1 -0
  257. package/dist/utils/APIConstants.d.ts.map +1 -1
  258. package/dist/utils/APIConstants.js +2 -2
  259. package/dist/utils/APIConstants.js.map +1 -1
  260. package/package.json +4 -4
  261. package/dist/synapse-queries/entity/useEntityBoundSchema.d.ts.map +0 -1
  262. package/dist/synapse-queries/entity/useEntityBoundSchema.js.map +0 -1
  263. package/dist/synapse-queries/entity/useSchema.d.ts.map +0 -1
  264. package/dist/synapse-queries/entity/useSchema.js.map +0 -1
  265. /package/dist/synapse-queries/{entity → jsonschema}/useEntityBoundSchema.d.ts +0 -0
  266. /package/dist/synapse-queries/{entity → jsonschema}/useSchema.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DiscussionEmpty.module.js","names":[],"sources":["../../../src/components/Forum/DiscussionEmpty.module.scss"],"sourcesContent":["$text-color: #3b4046;\n$button-text-color: #4d535a;\n\n.title:global(.MuiTypography-root) {\n color: $text-color;\n font-size: 16px;\n font-weight: 540;\n line-height: 24px; /* 150% */\n letter-spacing: -0.16px;\n margin-bottom: 4px;\n}\n\n.subtitle:global(.MuiTypography-root) {\n color: $text-color;\n font-size: 14px;\n font-weight: 440;\n line-height: 20px; /* 142.857% */\n letter-spacing: -0.07px;\n}\n\n.button:global(.MuiButton-root) {\n color: $button-text-color;\n font-size: 12px;\n font-weight: 540;\n line-height: 12px; /* 100% */\n letter-spacing: -0.24px;\n padding: 8px;\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.6);\n}\n\n.container {\n align-items: center;\n text-align: center;\n gap: 24px;\n padding: 40px 16px;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"DiscussionEmpty.module.js","names":[],"sources":["../../../src/components/Forum/DiscussionEmpty.module.scss"],"sourcesContent":[".title:global(.MuiTypography-root) {\n color: var(--synapse-v2-gray-900);\n font-size: 16px;\n font-weight: 540;\n line-height: 24px; /* 150% */\n letter-spacing: -0.16px;\n margin-bottom: 4px;\n}\n\n.subtitle:global(.MuiTypography-root) {\n color: var(--synapse-v2-gray-900);\n font-size: 14px;\n font-weight: 440;\n line-height: 20px; /* 142.857% */\n letter-spacing: -0.07px;\n}\n\n.button:global(.MuiButton-root) {\n color: var(--synapse-v2-gray-800);\n font-size: 12px;\n font-weight: 540;\n line-height: 12px; /* 100% */\n letter-spacing: -0.24px;\n padding: 8px;\n border-radius: 6px;\n background: rgba(255, 255, 255, 0.6);\n}\n\n.container {\n align-items: center;\n text-align: center;\n gap: 24px;\n padding: 40px 16px;\n}\n"],"mappings":""}
@@ -1,8 +1,5 @@
1
- $text-color: #3b4046;
2
- $button-text-color: #4d535a;
3
-
4
1
  .title:global(.MuiTypography-root) {
5
- color: $text-color;
2
+ color: var(--synapse-v2-gray-900);
6
3
  font-size: 16px;
7
4
  font-weight: 540;
8
5
  line-height: 24px; /* 150% */
@@ -11,7 +8,7 @@ $button-text-color: #4d535a;
11
8
  }
12
9
 
13
10
  .subtitle:global(.MuiTypography-root) {
14
- color: $text-color;
11
+ color: var(--synapse-v2-gray-900);
15
12
  font-size: 14px;
16
13
  font-weight: 440;
17
14
  line-height: 20px; /* 142.857% */
@@ -19,7 +16,7 @@ $button-text-color: #4d535a;
19
16
  }
20
17
 
21
18
  .button:global(.MuiButton-root) {
22
- color: $button-text-color;
19
+ color: var(--synapse-v2-gray-800);
23
20
  font-size: 12px;
24
21
  font-weight: 540;
25
22
  line-height: 12px; /* 100% */
@@ -0,0 +1 @@
1
+ ._jsonSchemaPicker_1b47n_1{flex-direction:column;gap:16px;display:flex}._organizationAutocomplete_1b47n_7{margin-bottom:8px}._schemaTableContainer_1b47n_11{height:400px}._schemaTableContainer_1b47n_11 tr[aria-selected=true]{background-color:var(--synapse-primary-action-color-alpha-10)}
@@ -0,0 +1,29 @@
1
+ import { JsonSchemaSelection } from './useJsonSchemaSelection';
2
+ import { VersionSelectionType } from './VersionSelectionType';
3
+ export type { JsonSchemaSelection } from './useJsonSchemaSelection';
4
+ export type JsonSchemaPickerProps = {
5
+ /**
6
+ * Invoked whenever the selected schema and/or version changes. `undefined` when nothing is
7
+ * selected, or when a version selection is required but has not yet resolved.
8
+ */
9
+ onSelectionChange: (selection: JsonSchemaSelection | undefined) => void;
10
+ /** If provided, and a matching Organization is found, it will be preselected. */
11
+ defaultOrganizationName?: string;
12
+ /**
13
+ * Controls whether a concrete numbered version must be selected, or if "Latest" is an
14
+ * option. Defaults to {@link VersionSelectionType.REQUIRED}. Assumed to be fixed for the
15
+ * lifetime of a single JsonSchemaPicker instance -- to change it, remount the component (e.g.
16
+ * with a new `key`) rather than changing this prop in place.
17
+ */
18
+ versionSelectionType?: VersionSelectionType;
19
+ /**
20
+ * The initially-selected schema/version, e.g. when editing an existing selection.
21
+ * Note: only `versionInfo` (not a bare `$id`) can be used to resolve the initially selected
22
+ * row, since the row lookup requires the schema's organization and schema name.
23
+ */
24
+ initialSelected?: JsonSchemaSelection;
25
+ };
26
+ export declare const LATEST_OPTION_VALUE = "__LATEST__";
27
+ export declare function JsonSchemaPicker(props: JsonSchemaPickerProps): import("react/jsx-runtime").JSX.Element;
28
+ export default JsonSchemaPicker;
29
+ //# sourceMappingURL=JsonSchemaPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaPicker.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.tsx"],"names":[],"mappings":"AAyCA,OAAO,EAEL,mBAAmB,EAEpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,iBAAiB,EAAE,CAAC,SAAS,EAAE,mBAAmB,GAAG,SAAS,KAAK,IAAI,CAAA;IACvE,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;;;;OAIG;IACH,eAAe,CAAC,EAAE,mBAAmB,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,mBAAmB,eAAe,CAAA;AA4L/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CAwL5D;AAED,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1,229 @@
1
+ import { useListJsonSchemasInfinite as e } from "../../../synapse-queries/jsonschema/useListJsonSchemasInfinite.js";
2
+ import { useListJsonSchemaVersions as t } from "../../../synapse-queries/jsonschema/useListJsonSchemaVersions.js";
3
+ import "../../../synapse-queries/index.js";
4
+ import { formatDate as n } from "../../../utils/functions/DateFormatter.js";
5
+ import r from "../../TanStackTable/ColumnHeader.js";
6
+ import i from "../../TanStackTable/StyledVirtualTanStackTable.js";
7
+ import { useFetchNextPageOnScrollToBottom as a } from "../../TanStackTable/useFetchNextPageOnScrollToBottom.js";
8
+ import { JsonSchemaVersionSelectionContext as o, useJsonSchemaVersionSelectionContext as s } from "./JsonSchemaVersionSelectionContext.js";
9
+ import { VersionSelectionType as c } from "./VersionSelectionType.js";
10
+ import l from "./JsonSchemaPicker.module.js";
11
+ import { LOADING_ORGANIZATIONS_OPTION as u, useJsonSchemaOrganizations as d } from "./useJsonSchemaOrganizations.js";
12
+ import { getSchemaId as f, useJsonSchemaSelection as p } from "./useJsonSchemaSelection.js";
13
+ import { useMemo as m, useRef as h } from "react";
14
+ import { Alert as g, Autocomplete as _, Checkbox as v, CircularProgress as y, Select as b, TextField as x, Typography as S } from "@mui/material";
15
+ import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
16
+ import E from "dayjs";
17
+ import { createFilterOptions as D } from "@mui/material/Autocomplete";
18
+ import { createColumnHelper as O, getCoreRowModel as k, useReactTable as A } from "@tanstack/react-table";
19
+ import { useVirtualizer as j } from "@tanstack/react-virtual";
20
+ //#region src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.tsx
21
+ var M = "__LATEST__", N = 48, P = 5, F = D();
22
+ function I(e) {
23
+ return e.versionId ?? e.$id ?? "";
24
+ }
25
+ function L(e) {
26
+ return e.semanticVersion ?? `Version ${e.versionId ?? ""}`;
27
+ }
28
+ function R(e) {
29
+ let { schema: n, isSelected: r, versionSelectionType: i, selectedVersionInfo: a, onVersionChange: o } = e, { data: s, isLoading: l, isError: u, error: d } = t(n.organizationName ?? "", n.schemaName ?? "", { enabled: r }), f = m(() => [...s ?? []].reverse(), [s]);
30
+ if (!r) return null;
31
+ if (u) return /* @__PURE__ */ w(g, {
32
+ severity: "error",
33
+ children: d?.reason ?? "An error occurred while loading versions."
34
+ });
35
+ if (l) return /* @__PURE__ */ w(y, {
36
+ size: 16,
37
+ "aria-label": "Loading versions"
38
+ });
39
+ if (f.length === 0) return null;
40
+ let p = i === c.LATEST_ALLOWED;
41
+ return /* @__PURE__ */ T(b, {
42
+ native: !0,
43
+ fullWidth: !0,
44
+ size: "small",
45
+ value: a ? I(a) : p ? M : "",
46
+ inputProps: { "aria-label": `Version for ${n.schemaName}` },
47
+ onClick: (e) => {
48
+ e.stopPropagation();
49
+ },
50
+ onChange: (e) => {
51
+ e.stopPropagation();
52
+ let t = e.target.value;
53
+ o(t === "__LATEST__" ? void 0 : f.find((e) => I(e) === t));
54
+ },
55
+ children: [
56
+ i === c.REQUIRED && !a && /* @__PURE__ */ w("option", {
57
+ value: "",
58
+ disabled: !0
59
+ }),
60
+ p && /* @__PURE__ */ w("option", {
61
+ value: "__LATEST__",
62
+ children: "Latest"
63
+ }),
64
+ f.map((e) => /* @__PURE__ */ w("option", {
65
+ value: I(e),
66
+ children: L(e)
67
+ }, I(e)))
68
+ ]
69
+ });
70
+ }
71
+ function z(e) {
72
+ let { row: t } = e;
73
+ return /* @__PURE__ */ w(v, {
74
+ checked: t.getIsSelected(),
75
+ disabled: !t.getCanSelect(),
76
+ indeterminate: t.getIsSomeSelected(),
77
+ onClick: t.getToggleSelectedHandler(),
78
+ slotProps: { input: { "aria-label": `Select ${t.original.schemaName}` } }
79
+ });
80
+ }
81
+ function B(e) {
82
+ let t = s(), n = e.row.getIsSelected();
83
+ return /* @__PURE__ */ w(R, {
84
+ schema: e.row.original,
85
+ isSelected: n,
86
+ versionSelectionType: t.versionSelectionType,
87
+ selectedVersionInfo: n ? t.selectedVersionInfo : void 0,
88
+ onVersionChange: t.onVersionChange
89
+ });
90
+ }
91
+ var V = O(), H = [
92
+ V.display({
93
+ id: "select",
94
+ header: "",
95
+ cell: z,
96
+ maxSize: 50
97
+ }),
98
+ V.accessor("schemaName", {
99
+ header: (e) => /* @__PURE__ */ w(r, {
100
+ ...e,
101
+ title: "Schema Name"
102
+ }),
103
+ enableColumnFilter: !1,
104
+ enableSorting: !1
105
+ }),
106
+ V.display({
107
+ id: "version",
108
+ header: (e) => /* @__PURE__ */ w(r, {
109
+ ...e,
110
+ title: "Version"
111
+ }),
112
+ cell: B
113
+ }),
114
+ V.accessor("createdOn", {
115
+ header: (e) => /* @__PURE__ */ w(r, {
116
+ ...e,
117
+ title: "Created on"
118
+ }),
119
+ enableColumnFilter: !1,
120
+ enableSorting: !1,
121
+ cell: (e) => {
122
+ let t = e.getValue();
123
+ return t ? n(E(t)) : "";
124
+ }
125
+ })
126
+ ];
127
+ function U(t) {
128
+ let { onSelectionChange: n, defaultOrganizationName: r, versionSelectionType: s = c.REQUIRED, initialSelected: v } = t, { selectedOrganization: b, setSelectedOrganization: E, organizationOptions: D, isLoadingAllOrganizations: O, isError: M, error: I } = d(r), L = b?.name, { data: R, isLoading: z, isError: B, error: V, hasNextPage: U, isFetchingNextPage: W, fetchNextPage: G } = e(L ?? ""), K = m(() => R?.pages.flatMap((e) => e.page ?? []) ?? [], [R]), { rowSelection: q, selectedVersionInfo: J, handleRowSelectionChange: Y, handleVersionChange: X } = p({
129
+ schemas: K,
130
+ versionSelectionType: s,
131
+ onSelectionChange: n,
132
+ initialSelected: v
133
+ }), Z = m(() => ({
134
+ versionSelectionType: s,
135
+ selectedVersionInfo: J,
136
+ onVersionChange: X
137
+ }), [
138
+ s,
139
+ J,
140
+ X
141
+ ]), Q = A({
142
+ data: K,
143
+ columns: H,
144
+ state: { rowSelection: q },
145
+ getRowId: f,
146
+ enableRowSelection: !0,
147
+ enableMultiRowSelection: !1,
148
+ onRowSelectionChange: Y,
149
+ getCoreRowModel: k()
150
+ }), $ = h(null), ee = j({
151
+ count: K.length,
152
+ estimateSize: () => N,
153
+ getScrollElement: () => $.current,
154
+ overscan: P
155
+ }), te = a({
156
+ containerRef: $,
157
+ hasNextPage: U,
158
+ isFetchingNextPage: W,
159
+ fetchNextPage: G,
160
+ data: K
161
+ });
162
+ return /* @__PURE__ */ T("div", {
163
+ className: l.jsonSchemaPicker,
164
+ children: [
165
+ /* @__PURE__ */ w(_, {
166
+ className: l.organizationAutocomplete,
167
+ options: D,
168
+ value: b,
169
+ loading: O,
170
+ getOptionLabel: (e) => e === u ? "Loading organizations…" : e.name ?? "",
171
+ getOptionDisabled: (e) => e === u,
172
+ filterOptions: (e, t) => {
173
+ let n = F(e.filter((e) => e !== u), t);
174
+ return O ? [u, ...n] : n;
175
+ },
176
+ isOptionEqualToValue: (e, t) => e.id === t.id,
177
+ onChange: (e, t) => E(t),
178
+ renderInput: (e) => /* @__PURE__ */ w(x, {
179
+ ...e,
180
+ label: "Organization",
181
+ placeholder: "Select an organization",
182
+ slotProps: { input: {
183
+ ...e.InputProps,
184
+ endAdornment: /* @__PURE__ */ T(C, { children: [O && /* @__PURE__ */ w(y, {
185
+ color: "inherit",
186
+ size: 16,
187
+ "aria-label": "Loading organizations"
188
+ }), e.InputProps.endAdornment] })
189
+ } }
190
+ })
191
+ }),
192
+ M && /* @__PURE__ */ w(g, {
193
+ severity: "error",
194
+ children: I?.reason ?? "An error occurred while loading organizations."
195
+ }),
196
+ !M && !b && /* @__PURE__ */ w(S, {
197
+ variant: "body1",
198
+ children: "Select an organization to see its schemas."
199
+ }),
200
+ b && z && /* @__PURE__ */ w(y, { "aria-label": "Loading schemas" }),
201
+ b && B && /* @__PURE__ */ w(g, {
202
+ severity: "error",
203
+ children: V?.reason ?? "An error occurred while loading schemas."
204
+ }),
205
+ b && !z && !B && K.length === 0 && /* @__PURE__ */ w(g, {
206
+ severity: "info",
207
+ children: "No schemas found for this organization."
208
+ }),
209
+ b && !z && !B && K.length > 0 && /* @__PURE__ */ w(o.Provider, {
210
+ value: Z,
211
+ children: /* @__PURE__ */ w(i, {
212
+ table: Q,
213
+ rowVirtualizer: ee,
214
+ striped: !0,
215
+ styledTableContainerProps: {
216
+ ref: $,
217
+ className: l.schemaTableContainer
218
+ },
219
+ onTableContainerScroll: (e) => te(e),
220
+ slotProps: { Tr: ({ tableRow: e }) => ({ "aria-selected": e?.getIsSelected() ?? !1 }) }
221
+ })
222
+ })
223
+ ]
224
+ });
225
+ }
226
+ //#endregion
227
+ export { U as JsonSchemaPicker, U as default, M as LATEST_OPTION_VALUE };
228
+
229
+ //# sourceMappingURL=JsonSchemaPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaPicker.js","names":[],"sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.tsx"],"sourcesContent":["import StyledVirtualTanStackTable from '@/components/TanStackTable/StyledVirtualTanStackTable'\nimport ColumnHeader from '@/components/TanStackTable/ColumnHeader'\nimport { useFetchNextPageOnScrollToBottom } from '@/components/TanStackTable/useFetchNextPageOnScrollToBottom'\nimport {\n useListJsonSchemasInfinite,\n useListJsonSchemaVersions,\n} from '@/synapse-queries'\nimport { formatDate } from '@/utils/functions/DateFormatter'\nimport {\n Alert,\n Autocomplete,\n Checkbox,\n CircularProgress,\n Select,\n TextField,\n Typography,\n} from '@mui/material'\nimport { createFilterOptions } from '@mui/material/Autocomplete'\nimport {\n JsonSchemaInfo,\n JsonSchemaVersionInfo,\n Organization,\n} from '@sage-bionetworks/synapse-client'\nimport {\n CellContext,\n createColumnHelper,\n getCoreRowModel,\n useReactTable,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport dayjs from 'dayjs'\nimport { useMemo, useRef } from 'react'\nimport styles from './JsonSchemaPicker.module.scss'\nimport {\n JsonSchemaVersionSelectionContext,\n useJsonSchemaVersionSelectionContext,\n} from './JsonSchemaVersionSelectionContext'\nimport {\n LOADING_ORGANIZATIONS_OPTION,\n useJsonSchemaOrganizations,\n} from './useJsonSchemaOrganizations'\nimport {\n getSchemaId,\n JsonSchemaSelection,\n useJsonSchemaSelection,\n} from './useJsonSchemaSelection'\nimport { VersionSelectionType } from './VersionSelectionType'\n\nexport type { JsonSchemaSelection } from './useJsonSchemaSelection'\n\nexport type JsonSchemaPickerProps = {\n /**\n * Invoked whenever the selected schema and/or version changes. `undefined` when nothing is\n * selected, or when a version selection is required but has not yet resolved.\n */\n onSelectionChange: (selection: JsonSchemaSelection | undefined) => void\n /** If provided, and a matching Organization is found, it will be preselected. */\n defaultOrganizationName?: string\n /**\n * Controls whether a concrete numbered version must be selected, or if \"Latest\" is an\n * option. Defaults to {@link VersionSelectionType.REQUIRED}. Assumed to be fixed for the\n * lifetime of a single JsonSchemaPicker instance -- to change it, remount the component (e.g.\n * with a new `key`) rather than changing this prop in place.\n */\n versionSelectionType?: VersionSelectionType\n /**\n * The initially-selected schema/version, e.g. when editing an existing selection.\n * Note: only `versionInfo` (not a bare `$id`) can be used to resolve the initially selected\n * row, since the row lookup requires the schema's organization and schema name.\n */\n initialSelected?: JsonSchemaSelection\n}\n\nexport const LATEST_OPTION_VALUE = '__LATEST__'\n\n// Estimated row height (px) for the virtualizer, used before a row has actually been measured.\nconst ESTIMATED_ROW_HEIGHT_PX = 48\n// Number of rows to render outside the visible viewport, above and below, so scrolling doesn't\n// momentarily show blank space before the virtualizer catches up.\nconst VIRTUALIZER_OVERSCAN = 5\n\nconst filterOrganizationOptions = createFilterOptions<Organization>()\n\nfunction getVersionOptionValue(version: JsonSchemaVersionInfo): string {\n return version.versionId ?? version.$id ?? ''\n}\n\nfunction getVersionOptionLabel(version: JsonSchemaVersionInfo): string {\n return version.semanticVersion ?? `Version ${version.versionId ?? ''}`\n}\n\ntype JsonSchemaVersionSelectProps = {\n schema: JsonSchemaInfo\n isSelected: boolean\n versionSelectionType: VersionSelectionType\n selectedVersionInfo: JsonSchemaVersionInfo | undefined\n onVersionChange: (versionInfo: JsonSchemaVersionInfo | undefined) => void\n}\n\n/**\n * Renders the version <Select> for the currently-selected row.\n */\nfunction JsonSchemaVersionSelect(props: JsonSchemaVersionSelectProps) {\n const {\n schema,\n isSelected,\n versionSelectionType,\n selectedVersionInfo,\n onVersionChange,\n } = props\n\n const { data, isLoading, isError, error } = useListJsonSchemaVersions(\n schema.organizationName ?? '',\n schema.schemaName ?? '',\n { enabled: isSelected },\n )\n\n const versions = useMemo(\n // The API returns versions lowest-to-highest semantic version; reverse so the highest\n // (latest) version is displayed first.\n () => [...(data ?? [])].reverse(),\n [data],\n )\n\n if (!isSelected) {\n return null\n }\n\n if (isError) {\n return (\n <Alert severity=\"error\">\n {error?.reason ?? 'An error occurred while loading versions.'}\n </Alert>\n )\n }\n\n if (isLoading) {\n return <CircularProgress size={16} aria-label=\"Loading versions\" />\n }\n\n if (versions.length === 0) {\n return null\n }\n\n const showLatestOption =\n versionSelectionType === VersionSelectionType.LATEST_ALLOWED\n const value = selectedVersionInfo\n ? getVersionOptionValue(selectedVersionInfo)\n : showLatestOption\n ? LATEST_OPTION_VALUE\n : ''\n\n return (\n <Select\n native\n fullWidth\n size=\"small\"\n value={value}\n inputProps={{ 'aria-label': `Version for ${schema.schemaName}` }}\n onClick={event => {\n event.stopPropagation()\n }}\n onChange={event => {\n event.stopPropagation()\n const newValue = event.target.value\n if (newValue === LATEST_OPTION_VALUE) {\n onVersionChange(undefined)\n } else {\n onVersionChange(\n versions.find(\n version => getVersionOptionValue(version) === newValue,\n ),\n )\n }\n }}\n >\n {versionSelectionType === VersionSelectionType.REQUIRED &&\n !selectedVersionInfo && (\n // A version is required but none has resolved yet (the auto-select-latest fetch\n // above is still in flight)\n <option value=\"\" disabled />\n )}\n {showLatestOption && <option value={LATEST_OPTION_VALUE}>Latest</option>}\n {versions.map(version => (\n <option\n key={getVersionOptionValue(version)}\n value={getVersionOptionValue(version)}\n >\n {getVersionOptionLabel(version)}\n </option>\n ))}\n </Select>\n )\n}\n\n/**\n * Renders the row-selection checkbox for a schema row. Unlike the shared `CheckBoxCell`\n * (`EntityHeaderTableCellRenderers`), this gives the checkbox an accessible name, since there's\n * no visible label identifying which row a bare checkbox belongs to.\n */\nfunction SchemaSelectCell(context: CellContext<JsonSchemaInfo, unknown>) {\n const { row } = context\n return (\n <Checkbox\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n indeterminate={row.getIsSomeSelected()}\n onClick={row.getToggleSelectedHandler()}\n slotProps={{\n input: {\n 'aria-label': `Select ${row.original.schemaName}`,\n },\n }}\n />\n )\n}\n\nfunction VersionColumnCell(context: CellContext<JsonSchemaInfo, unknown>) {\n const meta = useJsonSchemaVersionSelectionContext()\n const isSelected = context.row.getIsSelected()\n return (\n <JsonSchemaVersionSelect\n schema={context.row.original}\n isSelected={isSelected}\n versionSelectionType={meta.versionSelectionType}\n selectedVersionInfo={isSelected ? meta.selectedVersionInfo : undefined}\n onVersionChange={meta.onVersionChange}\n />\n )\n}\n\nconst columnHelper = createColumnHelper<JsonSchemaInfo>()\n\nconst STATIC_COLUMNS = [\n columnHelper.display({\n id: 'select',\n header: '',\n cell: SchemaSelectCell,\n maxSize: 50,\n }),\n columnHelper.accessor('schemaName', {\n header: props => <ColumnHeader {...props} title=\"Schema Name\" />,\n enableColumnFilter: false,\n enableSorting: false,\n }),\n columnHelper.display({\n id: 'version',\n header: props => <ColumnHeader {...props} title=\"Version\" />,\n cell: VersionColumnCell,\n }),\n columnHelper.accessor('createdOn', {\n header: props => <ColumnHeader {...props} title=\"Created on\" />,\n enableColumnFilter: false,\n enableSorting: false,\n cell: info => {\n const value = info.getValue()\n return value ? formatDate(dayjs(value)) : ''\n },\n }),\n]\n\nexport function JsonSchemaPicker(props: JsonSchemaPickerProps) {\n const {\n onSelectionChange,\n defaultOrganizationName,\n versionSelectionType = VersionSelectionType.REQUIRED,\n initialSelected,\n } = props\n\n const {\n selectedOrganization,\n setSelectedOrganization,\n organizationOptions,\n isLoadingAllOrganizations,\n isError: isOrganizationsError,\n error: organizationsError,\n } = useJsonSchemaOrganizations(defaultOrganizationName)\n\n const organizationName = selectedOrganization?.name\n\n const {\n data: schemasData,\n isLoading: isLoadingSchemas,\n isError: isSchemasError,\n error: schemasError,\n hasNextPage: hasNextSchemasPage,\n isFetchingNextPage: isFetchingNextSchemasPage,\n fetchNextPage: fetchNextSchemasPage,\n } = useListJsonSchemasInfinite(organizationName ?? '')\n\n const schemas = useMemo(\n () => schemasData?.pages.flatMap(page => page.page ?? []) ?? [],\n [schemasData],\n )\n\n const {\n rowSelection,\n selectedVersionInfo,\n handleRowSelectionChange,\n handleVersionChange,\n } = useJsonSchemaSelection({\n schemas,\n versionSelectionType,\n onSelectionChange,\n initialSelected,\n })\n\n const versionSelectionContextValue = useMemo(\n () => ({\n versionSelectionType,\n selectedVersionInfo,\n onVersionChange: handleVersionChange,\n }),\n [versionSelectionType, selectedVersionInfo, handleVersionChange],\n )\n\n const table = useReactTable<JsonSchemaInfo>({\n data: schemas,\n columns: STATIC_COLUMNS,\n state: { rowSelection },\n getRowId: getSchemaId,\n enableRowSelection: true,\n enableMultiRowSelection: false,\n onRowSelectionChange: handleRowSelectionChange,\n getCoreRowModel: getCoreRowModel(),\n })\n\n const tableContainerRef = useRef<HTMLDivElement>(null)\n const rowVirtualizer = useVirtualizer({\n count: schemas.length,\n estimateSize: () => ESTIMATED_ROW_HEIGHT_PX,\n getScrollElement: () => tableContainerRef.current,\n overscan: VIRTUALIZER_OVERSCAN,\n })\n\n const fetchMoreOnBottomReached = useFetchNextPageOnScrollToBottom({\n containerRef: tableContainerRef,\n hasNextPage: hasNextSchemasPage,\n isFetchingNextPage: isFetchingNextSchemasPage,\n fetchNextPage: fetchNextSchemasPage,\n data: schemas,\n })\n\n return (\n <div className={styles.jsonSchemaPicker}>\n <Autocomplete<Organization, false, false, false>\n className={styles.organizationAutocomplete}\n options={organizationOptions}\n value={selectedOrganization}\n loading={isLoadingAllOrganizations}\n getOptionLabel={org =>\n org === LOADING_ORGANIZATIONS_OPTION\n ? 'Loading organizations…'\n : (org.name ?? '')\n }\n getOptionDisabled={org => org === LOADING_ORGANIZATIONS_OPTION}\n filterOptions={(options, params) => {\n const filtered = filterOrganizationOptions(\n options.filter(org => org !== LOADING_ORGANIZATIONS_OPTION),\n params,\n )\n return isLoadingAllOrganizations\n ? [LOADING_ORGANIZATIONS_OPTION, ...filtered]\n : filtered\n }}\n isOptionEqualToValue={(option, value) => option.id === value.id}\n onChange={(_event, newValue) => setSelectedOrganization(newValue)}\n renderInput={params => (\n <TextField\n {...params}\n label=\"Organization\"\n placeholder=\"Select an organization\"\n slotProps={{\n input: {\n ...params.InputProps,\n endAdornment: (\n <>\n {isLoadingAllOrganizations && (\n <CircularProgress\n color=\"inherit\"\n size={16}\n aria-label=\"Loading organizations\"\n />\n )}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n />\n )}\n />\n {isOrganizationsError && (\n <Alert severity=\"error\">\n {organizationsError?.reason ??\n 'An error occurred while loading organizations.'}\n </Alert>\n )}\n {!isOrganizationsError && !selectedOrganization && (\n <Typography variant=\"body1\">\n Select an organization to see its schemas.\n </Typography>\n )}\n {selectedOrganization && isLoadingSchemas && (\n <CircularProgress aria-label=\"Loading schemas\" />\n )}\n {selectedOrganization && isSchemasError && (\n <Alert severity=\"error\">\n {schemasError?.reason ?? 'An error occurred while loading schemas.'}\n </Alert>\n )}\n {selectedOrganization &&\n !isLoadingSchemas &&\n !isSchemasError &&\n schemas.length === 0 && (\n <Alert severity=\"info\">No schemas found for this organization.</Alert>\n )}\n {selectedOrganization &&\n !isLoadingSchemas &&\n !isSchemasError &&\n schemas.length > 0 && (\n <JsonSchemaVersionSelectionContext.Provider\n value={versionSelectionContextValue}\n >\n <StyledVirtualTanStackTable<JsonSchemaInfo>\n table={table}\n rowVirtualizer={rowVirtualizer}\n striped\n styledTableContainerProps={{\n ref: tableContainerRef,\n className: styles.schemaTableContainer,\n }}\n onTableContainerScroll={target =>\n fetchMoreOnBottomReached(target as HTMLDivElement)\n }\n slotProps={{\n Tr: ({ tableRow }) => ({\n 'aria-selected': tableRow?.getIsSelected() ?? false,\n }),\n }}\n />\n </JsonSchemaVersionSelectionContext.Provider>\n )}\n </div>\n )\n}\n\nexport default JsonSchemaPicker\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import './JsonSchemaPicker.css';var e = {
2
+ jsonSchemaPicker: "_jsonSchemaPicker_1b47n_1",
3
+ organizationAutocomplete: "_organizationAutocomplete_1b47n_7",
4
+ schemaTableContainer: "_schemaTableContainer_1b47n_11"
5
+ };
6
+ //#endregion
7
+ export { e as default };
8
+
9
+ //# sourceMappingURL=JsonSchemaPicker.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaPicker.module.js","names":[],"sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPicker.module.scss"],"sourcesContent":["$schema-table-container-height: 400px;\n\n.jsonSchemaPicker {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.organizationAutocomplete {\n margin-bottom: 8px;\n}\n\n.schemaTableContainer {\n height: $schema-table-container-height;\n\n tr[aria-selected='true'] {\n background-color: var(--synapse-primary-action-color-alpha-10);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,19 @@
1
+ $schema-table-container-height: 400px;
2
+
3
+ .jsonSchemaPicker {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: 16px;
7
+ }
8
+
9
+ .organizationAutocomplete {
10
+ margin-bottom: 8px;
11
+ }
12
+
13
+ .schemaTableContainer {
14
+ height: $schema-table-container-height;
15
+
16
+ tr[aria-selected='true'] {
17
+ background-color: var(--synapse-primary-action-color-alpha-10);
18
+ }
19
+ }
@@ -0,0 +1,23 @@
1
+ import { JsonSchemaSelection } from './JsonSchemaPicker';
2
+ import { VersionSelectionType } from './VersionSelectionType';
3
+ export type JsonSchemaPickerModalProps = {
4
+ open: boolean;
5
+ /** Called with the confirmed schema selection when the user clicks the confirm button. */
6
+ onConfirm: (result: JsonSchemaSelection) => void;
7
+ onCancel: () => void;
8
+ /** If provided, and a matching Organization is found, it will be preselected. */
9
+ defaultOrganizationName?: string;
10
+ /** Controls whether a concrete numbered version must be selected, or if "Latest" is an option. */
11
+ versionSelectionType?: VersionSelectionType;
12
+ /** The initially-selected schema/version, e.g. when editing an existing selection. */
13
+ initialSelected?: JsonSchemaSelection;
14
+ title?: string;
15
+ confirmButtonCopy?: string;
16
+ };
17
+ /**
18
+ * A modal dialog for selecting a single JSON Schema (and, depending on
19
+ * {@link VersionSelectionType}, a version of that schema).
20
+ */
21
+ export declare function JsonSchemaPickerModal(props: JsonSchemaPickerModalProps): import("react/jsx-runtime").JSX.Element;
22
+ export default JsonSchemaPickerModal;
23
+ //# sourceMappingURL=JsonSchemaPickerModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaPickerModal.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAA;IACb,0FAA0F;IAC1F,SAAS,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kGAAkG;IAClG,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,sFAAsF;IACtF,eAAe,CAAC,EAAE,mBAAmB,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,2CAYtE;AA0CD,eAAe,qBAAqB,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { ConfirmationDialog as e } from "../../ConfirmationDialog/ConfirmationDialog.js";
2
+ import "../../ConfirmationDialog/index.js";
3
+ import { JsonSchemaPicker as t } from "./JsonSchemaPicker.js";
4
+ import { useState as n } from "react";
5
+ import { jsx as r } from "react/jsx-runtime";
6
+ //#region src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.tsx
7
+ function i(e) {
8
+ let { open: t, ...n } = e;
9
+ return /* @__PURE__ */ r(a, {
10
+ open: t,
11
+ ...n
12
+ }, t ? "open" : "closed");
13
+ }
14
+ function a(i) {
15
+ let { open: a, onConfirm: o, onCancel: s, defaultOrganizationName: c, versionSelectionType: l, initialSelected: u, title: d = "Select a Schema", confirmButtonCopy: f = "Add Selected Schema" } = i, [p, m] = n(u);
16
+ return /* @__PURE__ */ r(e, {
17
+ open: a,
18
+ title: d,
19
+ maxWidth: "xl",
20
+ confirmButtonProps: {
21
+ children: f,
22
+ disabled: !p
23
+ },
24
+ onConfirm: () => {
25
+ p && o(p);
26
+ },
27
+ onCancel: s,
28
+ content: /* @__PURE__ */ r(t, {
29
+ defaultOrganizationName: c,
30
+ versionSelectionType: l,
31
+ initialSelected: u,
32
+ onSelectionChange: m
33
+ })
34
+ });
35
+ }
36
+ //#endregion
37
+ export { i as JsonSchemaPickerModal, i as default };
38
+
39
+ //# sourceMappingURL=JsonSchemaPickerModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaPickerModal.js","names":[],"sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaPickerModal.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { useState } from 'react'\nimport { JsonSchemaPicker, JsonSchemaSelection } from './JsonSchemaPicker'\nimport { VersionSelectionType } from './VersionSelectionType'\n\nexport type JsonSchemaPickerModalProps = {\n open: boolean\n /** Called with the confirmed schema selection when the user clicks the confirm button. */\n onConfirm: (result: JsonSchemaSelection) => void\n onCancel: () => void\n /** If provided, and a matching Organization is found, it will be preselected. */\n defaultOrganizationName?: string\n /** Controls whether a concrete numbered version must be selected, or if \"Latest\" is an option. */\n versionSelectionType?: VersionSelectionType\n /** The initially-selected schema/version, e.g. when editing an existing selection. */\n initialSelected?: JsonSchemaSelection\n title?: string\n confirmButtonCopy?: string\n}\n\n/**\n * A modal dialog for selecting a single JSON Schema (and, depending on\n * {@link VersionSelectionType}, a version of that schema).\n */\nexport function JsonSchemaPickerModal(props: JsonSchemaPickerModalProps) {\n const { open, ...rest } = props\n\n // Keyed by `open` so that `selected` (declared below) is discarded whenever the dialog\n // transitions between open and closed, rather than surviving a cancel-then-reopen.\n return (\n <JsonSchemaPickerModalDialog\n key={open ? 'open' : 'closed'}\n open={open}\n {...rest}\n />\n )\n}\n\nfunction JsonSchemaPickerModalDialog(props: JsonSchemaPickerModalProps) {\n const {\n open,\n onConfirm,\n onCancel,\n defaultOrganizationName,\n versionSelectionType,\n initialSelected,\n title = 'Select a Schema',\n confirmButtonCopy = 'Add Selected Schema',\n } = props\n\n const [selected, setSelected] = useState<JsonSchemaSelection | undefined>(\n initialSelected,\n )\n\n return (\n <ConfirmationDialog\n open={open}\n title={title}\n maxWidth=\"xl\"\n confirmButtonProps={{ children: confirmButtonCopy, disabled: !selected }}\n onConfirm={() => {\n if (selected) {\n onConfirm(selected)\n }\n }}\n onCancel={onCancel}\n content={\n <JsonSchemaPicker\n defaultOrganizationName={defaultOrganizationName}\n versionSelectionType={versionSelectionType}\n initialSelected={initialSelected}\n onSelectionChange={setSelected}\n />\n }\n />\n )\n}\n\nexport default JsonSchemaPickerModal\n"],"mappings":";;;;;;AAwBA,SAAgB,EAAsB,GAAmC;CACvE,IAAM,EAAE,SAAM,GAAG,MAAS;CAI1B,OACE,kBAAC,GAAD;EAEQ;EACN,GAAI;CACL,GAHM,IAAO,SAAS,QAGtB;AAEL;AAEA,SAAS,EAA4B,GAAmC;CACtE,IAAM,EACJ,SACA,cACA,aACA,4BACA,yBACA,oBACA,WAAQ,mBACR,uBAAoB,0BAClB,GAEE,CAAC,GAAU,KAAe,EAC9B,CACF;CAEA,OACE,kBAAC,GAAD;EACQ;EACC;EACP,UAAS;EACT,oBAAoB;GAAE,UAAU;GAAmB,UAAU,CAAC;EAAS;EACvE,iBAAiB;GACf,AAAI,KACF,EAAU,CAAQ;EAEtB;EACU;EACV,SACE,kBAAC,GAAD;GAC2B;GACH;GACL;GACjB,mBAAmB;EACpB,CAAA;CAEJ,CAAA;AAEL"}
@@ -0,0 +1,14 @@
1
+ import { JsonSchemaVersionInfo } from '@sage-bionetworks/synapse-client';
2
+ import { VersionSelectionType } from './VersionSelectionType';
3
+ export type JsonSchemaVersionSelectionContextValue = {
4
+ versionSelectionType: VersionSelectionType;
5
+ selectedVersionInfo: JsonSchemaVersionInfo | undefined;
6
+ onVersionChange: (versionInfo: JsonSchemaVersionInfo | undefined) => void;
7
+ };
8
+ /**
9
+ * Carries the currently selected schema version (and how to change it) down to the version
10
+ * column's cell renderer
11
+ */
12
+ export declare const JsonSchemaVersionSelectionContext: import("react").Context<JsonSchemaVersionSelectionContextValue | undefined>;
13
+ export declare function useJsonSchemaVersionSelectionContext(): JsonSchemaVersionSelectionContextValue;
14
+ //# sourceMappingURL=JsonSchemaVersionSelectionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaVersionSelectionContext.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,MAAM,sCAAsC,GAAG;IACnD,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,mBAAmB,EAAE,qBAAqB,GAAG,SAAS,CAAA;IACtD,eAAe,EAAE,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,KAAK,IAAI,CAAA;CAC1E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC,6EAElC,CAAA;AAEZ,wBAAgB,oCAAoC,IAAI,sCAAsC,CAQ7F"}
@@ -0,0 +1,12 @@
1
+ import { createContext as e, useContext as t } from "react";
2
+ //#region src/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.ts
3
+ var n = e(void 0);
4
+ function r() {
5
+ let e = t(n);
6
+ if (!e) throw Error("useJsonSchemaVersionSelectionContext must be used within a JsonSchemaVersionSelectionContext.Provider");
7
+ return e;
8
+ }
9
+ //#endregion
10
+ export { n as JsonSchemaVersionSelectionContext, r as useJsonSchemaVersionSelectionContext };
11
+
12
+ //# sourceMappingURL=JsonSchemaVersionSelectionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonSchemaVersionSelectionContext.js","names":[],"sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/JsonSchemaVersionSelectionContext.ts"],"sourcesContent":["import { JsonSchemaVersionInfo } from '@sage-bionetworks/synapse-client'\nimport { createContext, useContext } from 'react'\nimport { VersionSelectionType } from './VersionSelectionType'\n\nexport type JsonSchemaVersionSelectionContextValue = {\n versionSelectionType: VersionSelectionType\n selectedVersionInfo: JsonSchemaVersionInfo | undefined\n onVersionChange: (versionInfo: JsonSchemaVersionInfo | undefined) => void\n}\n\n/**\n * Carries the currently selected schema version (and how to change it) down to the version\n * column's cell renderer\n */\nexport const JsonSchemaVersionSelectionContext = createContext<\n JsonSchemaVersionSelectionContextValue | undefined\n>(undefined)\n\nexport function useJsonSchemaVersionSelectionContext(): JsonSchemaVersionSelectionContextValue {\n const context = useContext(JsonSchemaVersionSelectionContext)\n if (!context) {\n throw new Error(\n 'useJsonSchemaVersionSelectionContext must be used within a JsonSchemaVersionSelectionContext.Provider',\n )\n }\n return context\n}\n"],"mappings":";;AAcA,IAAa,IAAoC,EAE/C,KAAA,CAAS;AAEX,SAAgB,IAA+E;CAC7F,IAAM,IAAU,EAAW,CAAiC;CAC5D,IAAI,CAAC,GACH,MAAU,MACR,uGACF;CAEF,OAAO;AACT"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Documents the possible JsonSchemaPicker version selection configurations.
3
+ */
4
+ export declare enum VersionSelectionType {
5
+ /**
6
+ * A specific, numbered semantic version must be selected. This is the default. Use this when
7
+ * the consumer needs a reference to a specific version of the schema, rather than "whichever
8
+ * version is newest."
9
+ */
10
+ REQUIRED = "REQUIRED",
11
+ /**
12
+ * A specific numbered version may be selected, or the user may choose "Latest" to always
13
+ * reference whichever version of the schema is newest at the time of use.
14
+ */
15
+ LATEST_ALLOWED = "LATEST_ALLOWED"
16
+ }
17
+ //# sourceMappingURL=VersionSelectionType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionSelectionType.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,oBAAoB;IAC9B;;;;OAIG;IACH,QAAQ,aAAa;IACrB;;;OAGG;IACH,cAAc,mBAAmB;CAClC"}
@@ -0,0 +1,8 @@
1
+ //#region src/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.ts
2
+ var e = /* @__PURE__ */ function(e) {
3
+ return e.REQUIRED = "REQUIRED", e.LATEST_ALLOWED = "LATEST_ALLOWED", e;
4
+ }({});
5
+ //#endregion
6
+ export { e as VersionSelectionType };
7
+
8
+ //# sourceMappingURL=VersionSelectionType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionSelectionType.js","names":[],"sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/VersionSelectionType.ts"],"sourcesContent":["/**\n * Documents the possible JsonSchemaPicker version selection configurations.\n */\nexport enum VersionSelectionType {\n /**\n * A specific, numbered semantic version must be selected. This is the default. Use this when\n * the consumer needs a reference to a specific version of the schema, rather than \"whichever\n * version is newest.\"\n */\n REQUIRED = 'REQUIRED',\n /**\n * A specific numbered version may be selected, or the user may choose \"Latest\" to always\n * reference whichever version of the schema is newest at the time of use.\n */\n LATEST_ALLOWED = 'LATEST_ALLOWED',\n}\n"],"mappings":";AAGA,IAAY,IAAL,yBAAA,GAAA;QAML,EAAA,WAAA,YAKA,EAAA,iBAAA;AACF,EAAA,CAAA,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { JsonSchemaPicker } from './JsonSchemaPicker';
2
+ export type { JsonSchemaPickerProps, JsonSchemaSelection, } from './JsonSchemaPicker';
3
+ export { JsonSchemaPickerModal } from './JsonSchemaPickerModal';
4
+ export type { JsonSchemaPickerModalProps } from './JsonSchemaPickerModal';
5
+ export { VersionSelectionType } from './VersionSelectionType';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { VersionSelectionType as e } from "./VersionSelectionType.js";
2
+ import { JsonSchemaPicker as t } from "./JsonSchemaPicker.js";
3
+ import { JsonSchemaPickerModal as n } from "./JsonSchemaPickerModal.js";
4
+ export { t as JsonSchemaPicker, n as JsonSchemaPickerModal, e as VersionSelectionType };
@@ -0,0 +1,20 @@
1
+ import { Organization } from '@sage-bionetworks/synapse-client';
2
+ /**
3
+ * Option displayed as a disabled placeholder row while Organizations are still being fetched,
4
+ * so the loading state is reflected within the option list itself. This avoids relying on the
5
+ * Autocomplete's `loading` prop, which blocks the list from use while loading.
6
+ */
7
+ export declare const LOADING_ORGANIZATIONS_OPTION: Organization;
8
+ /**
9
+ * Lists every JSON Schema Organization, and optionally preselects one matching
10
+ * `defaultOrganizationName` once it becomes available.
11
+ */
12
+ export declare function useJsonSchemaOrganizations(defaultOrganizationName?: string): {
13
+ selectedOrganization: Organization | null;
14
+ setSelectedOrganization: import("react").Dispatch<import("react").SetStateAction<Organization | null>>;
15
+ organizationOptions: Organization[];
16
+ isLoadingAllOrganizations: boolean;
17
+ isError: boolean;
18
+ error: import("@sage-bionetworks/synapse-client").SynapseClientError | null;
19
+ };
20
+ //# sourceMappingURL=useJsonSchemaOrganizations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useJsonSchemaOrganizations.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAG/D;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,YAAiB,CAAA;AAE5D;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,uBAAuB,CAAC,EAAE,MAAM;;;;;;;EAsC1E"}
@@ -0,0 +1,25 @@
1
+ import { useListOrganizations as e } from "../../../synapse-queries/jsonschema/useListOrganizations.js";
2
+ import "../../../synapse-queries/index.js";
3
+ import { useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
4
+ //#region src/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.ts
5
+ var a = {};
6
+ function o(o) {
7
+ let [s, c] = i(null), { data: l, isLoading: u, isError: d, error: f } = e(), p = n(() => l ?? [], [l]), m = n(() => u ? [a, ...p] : p, [p, u]), h = r(!1);
8
+ return t(() => {
9
+ if (!h.current && o) {
10
+ let e = p.find((e) => e.name === o);
11
+ e && (c(e), h.current = !0);
12
+ }
13
+ }, [p, o]), {
14
+ selectedOrganization: s,
15
+ setSelectedOrganization: c,
16
+ organizationOptions: m,
17
+ isLoadingAllOrganizations: u,
18
+ isError: d,
19
+ error: f
20
+ };
21
+ }
22
+ //#endregion
23
+ export { a as LOADING_ORGANIZATIONS_OPTION, o as useJsonSchemaOrganizations };
24
+
25
+ //# sourceMappingURL=useJsonSchemaOrganizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useJsonSchemaOrganizations.js","names":[],"sources":["../../../../src/components/JsonSchema/JsonSchemaPicker/useJsonSchemaOrganizations.ts"],"sourcesContent":["import { useListOrganizations } from '@/synapse-queries'\nimport { Organization } from '@sage-bionetworks/synapse-client'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\n/**\n * Option displayed as a disabled placeholder row while Organizations are still being fetched,\n * so the loading state is reflected within the option list itself. This avoids relying on the\n * Autocomplete's `loading` prop, which blocks the list from use while loading.\n */\nexport const LOADING_ORGANIZATIONS_OPTION: Organization = {}\n\n/**\n * Lists every JSON Schema Organization, and optionally preselects one matching\n * `defaultOrganizationName` once it becomes available.\n */\nexport function useJsonSchemaOrganizations(defaultOrganizationName?: string) {\n const [selectedOrganization, setSelectedOrganization] =\n useState<Organization | null>(null)\n\n const { data, isLoading, isError, error } = useListOrganizations()\n\n const organizations = useMemo(() => data ?? [], [data])\n\n const organizationOptions = useMemo(\n () =>\n isLoading\n ? [LOADING_ORGANIZATIONS_OPTION, ...organizations]\n : organizations,\n [organizations, isLoading],\n )\n\n // If a default organization name is provided, apply the selection once all organizations have been loaded.\n const hasAppliedDefaultOrganizationRef = useRef(false)\n useEffect(() => {\n if (!hasAppliedDefaultOrganizationRef.current && defaultOrganizationName) {\n const match = organizations.find(\n org => org.name === defaultOrganizationName,\n )\n if (match) {\n setSelectedOrganization(match)\n hasAppliedDefaultOrganizationRef.current = true\n }\n }\n }, [organizations, defaultOrganizationName])\n\n return {\n selectedOrganization,\n setSelectedOrganization,\n organizationOptions,\n isLoadingAllOrganizations: isLoading,\n isError,\n error,\n }\n}\n"],"mappings":";;;;AASA,IAAa,IAA6C,CAAC;AAM3D,SAAgB,EAA2B,GAAkC;CAC3E,IAAM,CAAC,GAAsB,KAC3B,EAA8B,IAAI,GAE9B,EAAE,SAAM,cAAW,YAAS,aAAU,EAAqB,GAE3D,IAAgB,QAAc,KAAQ,CAAC,GAAG,CAAC,CAAI,CAAC,GAEhD,IAAsB,QAExB,IACI,CAAC,GAA8B,GAAG,CAAa,IAC/C,GACN,CAAC,GAAe,CAAS,CAC3B,GAGM,IAAmC,EAAO,EAAK;CAarD,OAZA,QAAgB;EACd,IAAI,CAAC,EAAiC,WAAW,GAAyB;GACxE,IAAM,IAAQ,EAAc,MAC1B,MAAO,EAAI,SAAS,CACtB;GACA,AAAI,MACF,EAAwB,CAAK,GAC7B,EAAiC,UAAU;EAE/C;CACF,GAAG,CAAC,GAAe,CAAuB,CAAC,GAEpC;EACL;EACA;EACA;EACA,2BAA2B;EAC3B;EACA;CACF;AACF"}