synapse-react-client 4.0.38 → 4.0.41

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 (350) hide show
  1. package/dist/SWC.index.d.ts +1 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +2 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/aridhia-queries/useAridhiaQuery.d.ts +6 -2
  6. package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -1
  7. package/dist/aridhia-queries/useAridhiaQuery.js +3 -0
  8. package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -1
  9. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
  10. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
  11. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
  12. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  13. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts +2 -1
  14. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  15. package/dist/components/Aridhia/AridhiaAccessStatus.js +57 -31
  16. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  17. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +12 -0
  18. package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -0
  19. package/dist/components/Aridhia/AridhiaDarStatusPopover.js +56 -0
  20. package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -0
  21. package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.d.ts.map +1 -1
  22. package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js +38 -30
  23. package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js.map +1 -1
  24. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +15 -14
  25. package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
  26. package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts +11 -0
  27. package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts.map +1 -0
  28. package/dist/components/Aridhia/RdcaDapEligibilityDialog.js +37 -0
  29. package/dist/components/Aridhia/RdcaDapEligibilityDialog.js.map +1 -0
  30. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +2 -2
  31. package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
  32. package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts +10 -0
  33. package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts.map +1 -0
  34. package/dist/components/Aridhia/aridhiaFairPortalUrls.js +11 -0
  35. package/dist/components/Aridhia/aridhiaFairPortalUrls.js.map +1 -0
  36. package/dist/components/Aridhia/rdcaDapConstants.d.ts +3 -0
  37. package/dist/components/Aridhia/rdcaDapConstants.d.ts.map +1 -0
  38. package/dist/components/Aridhia/rdcaDapConstants.js +6 -0
  39. package/dist/components/Aridhia/rdcaDapConstants.js.map +1 -0
  40. package/dist/components/Authentication/Constants.d.ts +4 -0
  41. package/dist/components/Authentication/Constants.d.ts.map +1 -1
  42. package/dist/components/Authentication/Constants.js +5 -2
  43. package/dist/components/Authentication/Constants.js.map +1 -1
  44. package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
  45. package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
  46. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  47. package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
  48. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  49. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  50. package/dist/components/Authentication/TOTPForm.js +20 -18
  51. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  52. package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
  53. package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
  54. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  55. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  56. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
  57. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  58. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  59. package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
  60. package/dist/components/DataExplorer/DataExplorer.js +50 -50
  61. package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
  62. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  63. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  64. package/dist/components/DataExplorer/DataExplorer.module.scss +29 -6
  65. package/dist/components/DataGrid/columns/DateTimeColumn.d.ts +16 -7
  66. package/dist/components/DataGrid/columns/DateTimeColumn.d.ts.map +1 -1
  67. package/dist/components/DataGrid/columns/DateTimeColumn.js +79 -57
  68. package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
  69. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  70. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
  71. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  72. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  73. package/dist/components/DataGrid/utils/columnFactory.js +11 -8
  74. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  75. package/dist/components/DatePicker/DatePicker.d.ts +10 -0
  76. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  77. package/dist/components/DatePicker/DatePicker.js +18 -0
  78. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  79. package/dist/components/EntityCitation/EntityCitation.d.ts.map +1 -1
  80. package/dist/components/EntityCitation/EntityCitation.js +8 -5
  81. package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
  82. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
  83. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
  84. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
  85. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
  86. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
  87. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
  88. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
  89. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
  90. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
  91. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
  92. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
  93. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
  94. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
  95. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
  96. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
  97. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
  98. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
  99. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
  100. package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
  101. package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
  102. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
  103. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
  104. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
  105. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
  106. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
  107. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
  108. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
  109. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
  110. package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
  111. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
  112. package/dist/components/FormTemplateEditor/utils.js +27 -0
  113. package/dist/components/FormTemplateEditor/utils.js.map +1 -0
  114. package/dist/components/HasAccess/AccessIcon.d.ts +3 -1
  115. package/dist/components/HasAccess/AccessIcon.d.ts.map +1 -1
  116. package/dist/components/HasAccess/AccessIcon.js +11 -1
  117. package/dist/components/HasAccess/AccessIcon.js.map +1 -1
  118. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
  119. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
  120. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
  121. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
  122. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
  123. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
  124. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  125. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
  126. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  127. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts +2 -1
  128. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts.map +1 -1
  129. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js +81 -53
  130. package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
  131. package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -1
  132. package/dist/components/ProjectInfo/ProjectInfo.js +3 -2
  133. package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -1
  134. package/dist/components/QueryBuilder/FilterConditionRow.css +1 -0
  135. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +8 -0
  136. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -0
  137. package/dist/components/QueryBuilder/FilterConditionRow.js +260 -0
  138. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -0
  139. package/dist/components/QueryBuilder/FilterConditionRow.module.js +16 -0
  140. package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -0
  141. package/dist/components/QueryBuilder/FilterConditionRow.module.scss +101 -0
  142. package/dist/components/QueryBuilder/FilterGroupNode.css +1 -0
  143. package/dist/components/QueryBuilder/FilterGroupNode.d.ts +11 -0
  144. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -0
  145. package/dist/components/QueryBuilder/FilterGroupNode.js +134 -0
  146. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -0
  147. package/dist/components/QueryBuilder/FilterGroupNode.module.js +16 -0
  148. package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -0
  149. package/dist/components/QueryBuilder/FilterGroupNode.module.scss +92 -0
  150. package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
  151. package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
  152. package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
  153. package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
  154. package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -0
  155. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts +21 -0
  156. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -0
  157. package/dist/components/QueryBuilder/QueryBuilderControls.js +143 -0
  158. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -0
  159. package/dist/components/QueryBuilder/QueryBuilderControls.module.js +17 -0
  160. package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -0
  161. package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +79 -0
  162. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +39 -0
  163. package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -0
  164. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js +19 -0
  165. package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -0
  166. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +14 -0
  167. package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -0
  168. package/dist/components/QueryBuilder/qbTreeToReadable.js +89 -0
  169. package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -0
  170. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
  171. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
  172. package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
  173. package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
  174. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
  175. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
  176. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
  177. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
  178. package/dist/components/QueryBuilder/queryBuilderId.d.ts +2 -0
  179. package/dist/components/QueryBuilder/queryBuilderId.d.ts.map +1 -0
  180. package/dist/components/QueryBuilder/queryBuilderId.js +9 -0
  181. package/dist/components/QueryBuilder/queryBuilderId.js.map +1 -0
  182. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +24 -0
  183. package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -0
  184. package/dist/components/QueryBuilder/queryBuilderMetadata.js +91 -0
  185. package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -0
  186. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +71 -0
  187. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -0
  188. package/dist/components/QueryBuilder/queryBuilderOperations.js +203 -0
  189. package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -0
  190. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +3 -2
  191. package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
  192. package/dist/components/QueryBuilder/queryBuilderTranslation.js +82 -84
  193. package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
  194. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts +11 -0
  195. package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -0
  196. package/dist/components/QueryBuilder/useQBCombinedSql.js +29 -0
  197. package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -0
  198. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts +18 -0
  199. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts.map +1 -0
  200. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js +27 -0
  201. package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js.map +1 -0
  202. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +14 -1
  203. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  204. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +183 -119
  205. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  206. package/dist/components/RssFeedCards/RssFeedCards.d.ts +1 -0
  207. package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
  208. package/dist/components/RssFeedCards/RssFeedCards.js +11 -11
  209. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  210. package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
  211. package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
  212. package/dist/components/SynapseChat/SynapseChat.js +76 -71
  213. package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
  214. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +3 -1
  215. package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
  216. package/dist/components/SynapseChat/SynapsePortalChatDialog.js +24 -13
  217. package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
  218. package/dist/components/SynapseChat/portalChatSessionStorage.d.ts +23 -0
  219. package/dist/components/SynapseChat/portalChatSessionStorage.d.ts.map +1 -0
  220. package/dist/components/SynapseChat/portalChatSessionStorage.js +29 -0
  221. package/dist/components/SynapseChat/portalChatSessionStorage.js.map +1 -0
  222. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts +6 -0
  223. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  224. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +92 -79
  225. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  226. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +3 -4
  227. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
  228. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -2
  229. package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
  230. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +1 -1
  231. package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
  232. package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
  233. package/dist/components/entity/page/action_menu/EntityActionMenu.js +9 -2
  234. package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
  235. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  236. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  237. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +36 -37
  238. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  239. package/dist/components/menu/ComplexMenu.js +1 -1
  240. package/dist/components/menu/ComplexMenu.js.map +1 -1
  241. package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
  242. package/dist/components/menu/DropdownMenu.js +4 -0
  243. package/dist/components/menu/DropdownMenu.js.map +1 -1
  244. package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
  245. package/dist/components/styled/LeftRightPanel.js +19 -2
  246. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  247. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts +10 -0
  248. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts.map +1 -0
  249. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js +20 -0
  250. package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js.map +1 -0
  251. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
  252. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +29 -20
  253. package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
  254. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +16 -0
  255. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -0
  256. package/dist/mocks/accessRequirement/mockFormTemplates.js +63 -0
  257. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -0
  258. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
  259. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -0
  260. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +47 -0
  261. package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -0
  262. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +27 -0
  263. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -0
  264. package/dist/mocks/accessRequirement/mockJsonSchemas.js +83 -0
  265. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -0
  266. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +18 -1
  267. package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
  268. package/dist/mocks/msw/handlers/aridhiaHandlers.js +39 -33
  269. package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
  270. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
  271. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  272. package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
  273. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  274. package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
  275. package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
  276. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  277. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +5 -0
  278. package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -0
  279. package/dist/mocks/msw/handlers/formTemplateHandlers.js +65 -0
  280. package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -0
  281. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
  282. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  283. package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
  284. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  285. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  286. package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
  287. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  288. package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
  289. package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
  290. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  291. package/dist/mocks/msw/handlers.d.ts.map +1 -1
  292. package/dist/mocks/msw/handlers.js +49 -47
  293. package/dist/mocks/msw/handlers.js.map +1 -1
  294. package/dist/style/abstracts/_cssVariables.scss +7 -0
  295. package/dist/style/components/_query-wrapper-plot-nav.scss +9 -0
  296. package/dist/style/main.css +1 -1
  297. package/dist/synapse-queries/KeyFactory.d.ts +5 -1
  298. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  299. package/dist/synapse-queries/KeyFactory.js +14 -2
  300. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  301. package/dist/synapse-queries/chat/useChat.d.ts.map +1 -1
  302. package/dist/synapse-queries/chat/useChat.js +2 -4
  303. package/dist/synapse-queries/chat/useChat.js.map +1 -1
  304. package/dist/synapse-queries/dataaccess/index.d.ts +1 -0
  305. package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
  306. package/dist/synapse-queries/dataaccess/index.js +4 -3
  307. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +41 -0
  308. package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -0
  309. package/dist/synapse-queries/dataaccess/useFormTemplate.js +63 -0
  310. package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -0
  311. package/dist/synapse-queries/index.js +186 -180
  312. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
  313. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
  314. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
  315. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
  316. package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
  317. package/dist/testutils/vitest.setup.js +18 -9
  318. package/dist/testutils/vitest.setup.js.map +1 -1
  319. package/dist/tsconfig.build.tsbuildinfo +1 -1
  320. package/dist/utils/APIConstants.d.ts +1 -0
  321. package/dist/utils/APIConstants.d.ts.map +1 -1
  322. package/dist/utils/APIConstants.js +2 -2
  323. package/dist/utils/APIConstants.js.map +1 -1
  324. package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
  325. package/dist/utils/appendFinalQueryParamKey.js +4 -1
  326. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  327. package/dist/utils/functions/ArrayUtils.d.ts +3 -0
  328. package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
  329. package/dist/utils/functions/ArrayUtils.js +7 -1
  330. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  331. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
  332. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
  333. package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
  334. package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
  335. package/dist/utils/jsonschema/getType.d.ts.map +1 -1
  336. package/dist/utils/jsonschema/getType.js +4 -1
  337. package/dist/utils/jsonschema/getType.js.map +1 -1
  338. package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
  339. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
  340. package/dist/utils/jsonschema/submissionContext.js +186 -0
  341. package/dist/utils/jsonschema/submissionContext.js.map +1 -0
  342. package/package.json +10 -8
  343. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
  344. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
  345. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
  346. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
  347. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
  348. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
  349. package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
  350. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilderControls.module.js","names":[],"sources":["../../../src/components/QueryBuilder/QueryBuilderControls.module.scss"],"sourcesContent":[".root {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n background: var(--synapse-background-color-gray-light);\n border: 1px solid var(--synapse-border-color-gray);\n border-radius: 4px;\n}\n\n.applyRow {\n display: flex;\n justify-content: flex-end;\n}\n\n.applyButton {\n text-transform: none;\n}\n\n.summaryBar {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: 6px;\n padding: 8px 12px;\n background: white;\n border: 1px solid var(--synapse-border-color-gray);\n border-radius: 4px;\n}\n\n.summaryHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n.summaryLabel {\n font-weight: 700;\n text-transform: uppercase;\n font-size: 11px;\n letter-spacing: 0.5px;\n color: var(--synapse-gray-regular);\n}\n\n.summaryContent {\n font-size: 14px;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.summaryModeToggle {\n flex-shrink: 0;\n\n :global(.MuiToggleButton-root) {\n text-transform: none;\n padding: 2px 12px;\n font-size: 12px;\n }\n}\n\n.sqlPlaceholder {\n color: var(--synapse-gray-deemphasized);\n font-style: italic;\n}\n\n.sqlText {\n display: block;\n font-family: var(--synapse-font-family-mono, monospace);\n font-size: 12px;\n white-space: pre-wrap;\n word-break: break-word;\n color: var(--synapse-gray-1000);\n}\n\n.sqlError {\n color: var(--synapse-error);\n font-size: 13px;\n}\n"],"mappings":""}
@@ -0,0 +1,79 @@
1
+ .root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 12px;
5
+ padding: 12px;
6
+ background: var(--synapse-background-color-gray-light);
7
+ border: 1px solid var(--synapse-border-color-gray);
8
+ border-radius: 4px;
9
+ }
10
+
11
+ .applyRow {
12
+ display: flex;
13
+ justify-content: flex-end;
14
+ }
15
+
16
+ .applyButton {
17
+ text-transform: none;
18
+ }
19
+
20
+ .summaryBar {
21
+ display: flex;
22
+ flex-direction: column;
23
+ align-items: stretch;
24
+ gap: 6px;
25
+ padding: 8px 12px;
26
+ background: white;
27
+ border: 1px solid var(--synapse-border-color-gray);
28
+ border-radius: 4px;
29
+ }
30
+
31
+ .summaryHeader {
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: space-between;
35
+ gap: 12px;
36
+ }
37
+
38
+ .summaryLabel {
39
+ font-weight: 700;
40
+ text-transform: uppercase;
41
+ font-size: 11px;
42
+ letter-spacing: 0.5px;
43
+ color: var(--synapse-gray-regular);
44
+ }
45
+
46
+ .summaryContent {
47
+ font-size: 14px;
48
+ line-height: 1.5;
49
+ word-break: break-word;
50
+ }
51
+
52
+ .summaryModeToggle {
53
+ flex-shrink: 0;
54
+
55
+ :global(.MuiToggleButton-root) {
56
+ text-transform: none;
57
+ padding: 2px 12px;
58
+ font-size: 12px;
59
+ }
60
+ }
61
+
62
+ .sqlPlaceholder {
63
+ color: var(--synapse-gray-deemphasized);
64
+ font-style: italic;
65
+ }
66
+
67
+ .sqlText {
68
+ display: block;
69
+ font-family: var(--synapse-font-family-mono, monospace);
70
+ font-size: 12px;
71
+ white-space: pre-wrap;
72
+ word-break: break-word;
73
+ color: var(--synapse-gray-1000);
74
+ }
75
+
76
+ .sqlError {
77
+ color: var(--synapse-error);
78
+ font-size: 13px;
79
+ }
@@ -0,0 +1,39 @@
1
+ import { ColumnModel, FacetColumnResult } from '@sage-bionetworks/synapse-types';
2
+ import { PropsWithChildren } from 'react';
3
+ import { QBCondition, QBGroup } from './QueryBuilderTypes';
4
+ /**
5
+ * Internal-only context shared between `QueryBuilderControls`,
6
+ * `FilterGroupNode`, and `FilterConditionRow`. Exposes the dispatch surface
7
+ * for tree edits + the query metadata each row needs (column models, facet
8
+ * results, and the Cohort Builder `onlyFacetedColumns` toggle).
9
+ */
10
+ export type QueryBuilderInternalContextType = {
11
+ /** All columns available in the query (unfiltered by faceting). */
12
+ columnModels: ColumnModel[];
13
+ /** Facet results keyed by column name (used to populate pill choices). */
14
+ facetResults: readonly FacetColumnResult[];
15
+ /**
16
+ * When true, the property picker only offers columns that have facet
17
+ * metadata. Cohort Builder sets this true.
18
+ */
19
+ onlyFacetedColumns: boolean;
20
+ /**
21
+ * Returns the user-facing label for a column — resolves `columnAliases`
22
+ * first, then falls back to `unCamelCase(name)`. Wired from
23
+ * `QueryVisualizationContext.getColumnDisplayName` when available.
24
+ */
25
+ getColumnDisplayName: (columnName: string) => string;
26
+ addConditionAt: (groupId: string) => void;
27
+ addChildGroupAt: (groupId: string) => void;
28
+ clearGroupAt: (groupId: string) => void;
29
+ updateGroupAt: (groupId: string, patch: Partial<Omit<QBGroup, 'kind' | 'id' | 'children'>>) => void;
30
+ removeGroupAt: (groupId: string) => void;
31
+ updateConditionAt: (conditionId: string, patch: Partial<Omit<QBCondition, 'kind' | 'id'>>) => void;
32
+ removeConditionAt: (conditionId: string) => void;
33
+ };
34
+ export type QueryBuilderInternalContextProviderProps = PropsWithChildren<{
35
+ value: QueryBuilderInternalContextType;
36
+ }>;
37
+ export declare function QueryBuilderInternalContextProvider(props: QueryBuilderInternalContextProviderProps): import("react/jsx-runtime").JSX.Element;
38
+ export declare function useQueryBuilderInternalContext(): QueryBuilderInternalContextType;
39
+ //# sourceMappingURL=QueryBuilderInternalContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilderInternalContext.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/QueryBuilderInternalContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAChF,OAAO,EAAiB,iBAAiB,EAAc,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,mEAAmE;IACnE,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,0EAA0E;IAC1E,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC1C;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAA;IAC3B;;;;OAIG;IACH,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IAGpD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,KACtD,IAAI,CAAA;IACT,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAGxC,iBAAiB,EAAE,CACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,KAC7C,IAAI,CAAA;IACT,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,CAAA;AAKD,MAAM,MAAM,wCAAwC,GAAG,iBAAiB,CAAC;IACvE,KAAK,EAAE,+BAA+B,CAAA;CACvC,CAAC,CAAA;AAEF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,wCAAwC,2CAOhD;AAED,wBAAgB,8BAA8B,IAAI,+BAA+B,CAQhF"}
@@ -0,0 +1,19 @@
1
+ import { createContext as e, useContext as t } from "react";
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ //#region src/components/QueryBuilder/QueryBuilderInternalContext.tsx
4
+ var r = e(null);
5
+ function i(e) {
6
+ return /* @__PURE__ */ n(r.Provider, {
7
+ value: e.value,
8
+ children: e.children
9
+ });
10
+ }
11
+ function a() {
12
+ let e = t(r);
13
+ if (e == null) throw Error("QueryBuilderInternalContext missing — must be rendered inside QueryBuilderControls");
14
+ return e;
15
+ }
16
+ //#endregion
17
+ export { i as QueryBuilderInternalContextProvider, a as useQueryBuilderInternalContext };
18
+
19
+ //# sourceMappingURL=QueryBuilderInternalContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilderInternalContext.js","names":[],"sources":["../../../src/components/QueryBuilder/QueryBuilderInternalContext.tsx"],"sourcesContent":["import { ColumnModel, FacetColumnResult } from '@sage-bionetworks/synapse-types'\nimport { createContext, PropsWithChildren, useContext } from 'react'\nimport { QBCondition, QBGroup } from './QueryBuilderTypes'\n\n/**\n * Internal-only context shared between `QueryBuilderControls`,\n * `FilterGroupNode`, and `FilterConditionRow`. Exposes the dispatch surface\n * for tree edits + the query metadata each row needs (column models, facet\n * results, and the Cohort Builder `onlyFacetedColumns` toggle).\n */\nexport type QueryBuilderInternalContextType = {\n /** All columns available in the query (unfiltered by faceting). */\n columnModels: ColumnModel[]\n /** Facet results keyed by column name (used to populate pill choices). */\n facetResults: readonly FacetColumnResult[]\n /**\n * When true, the property picker only offers columns that have facet\n * metadata. Cohort Builder sets this true.\n */\n onlyFacetedColumns: boolean\n /**\n * Returns the user-facing label for a column — resolves `columnAliases`\n * first, then falls back to `unCamelCase(name)`. Wired from\n * `QueryVisualizationContext.getColumnDisplayName` when available.\n */\n getColumnDisplayName: (columnName: string) => string\n\n // -- Group operations --\n addConditionAt: (groupId: string) => void\n addChildGroupAt: (groupId: string) => void\n clearGroupAt: (groupId: string) => void\n updateGroupAt: (\n groupId: string,\n patch: Partial<Omit<QBGroup, 'kind' | 'id' | 'children'>>,\n ) => void\n removeGroupAt: (groupId: string) => void\n\n // -- Condition operations --\n updateConditionAt: (\n conditionId: string,\n patch: Partial<Omit<QBCondition, 'kind' | 'id'>>,\n ) => void\n removeConditionAt: (conditionId: string) => void\n}\n\nconst QueryBuilderInternalContext =\n createContext<QueryBuilderInternalContextType | null>(null)\n\nexport type QueryBuilderInternalContextProviderProps = PropsWithChildren<{\n value: QueryBuilderInternalContextType\n}>\n\nexport function QueryBuilderInternalContextProvider(\n props: QueryBuilderInternalContextProviderProps,\n) {\n return (\n <QueryBuilderInternalContext.Provider value={props.value}>\n {props.children}\n </QueryBuilderInternalContext.Provider>\n )\n}\n\nexport function useQueryBuilderInternalContext(): QueryBuilderInternalContextType {\n const context = useContext(QueryBuilderInternalContext)\n if (context == null) {\n throw new Error(\n 'QueryBuilderInternalContext missing — must be rendered inside QueryBuilderControls',\n )\n }\n return context\n}\n"],"mappings":";;;AA6CA,IAAM,IACJ,EAAsD,IAAI;AAM5D,SAAgB,EACd,GACA;CACA,OACE,kBAAC,EAA4B,UAA7B;EAAsC,OAAO,EAAM;YAChD,EAAM;CAC6B,CAAA;AAE1C;AAEA,SAAgB,IAAkE;CAChF,IAAM,IAAU,EAAW,CAA2B;CACtD,IAAI,KAAW,MACb,MAAU,MACR,oFACF;CAEF,OAAO;AACT"}
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ import { QBGroup } from './QueryBuilderTypes';
3
+ /**
4
+ * Render a QB tree as a plain-English React node with the AND / OR / NOT
5
+ * connectives styled inline. Used by the QB's Reads-As summary bar.
6
+ *
7
+ * Rules (per the design's plain-English summary spec):
8
+ * - The root group reads without outer parentheses.
9
+ * - Nested groups retain parentheses.
10
+ * - Excluded (NOT) groups are always parenthesized and prefixed with NOT.
11
+ * - Incomplete conditions render as `(unset)`.
12
+ */
13
+ export declare function qbTreeToReadable(root: QBGroup, getColumnDisplayName?: (columnName: string) => string): ReactNode;
14
+ //# sourceMappingURL=qbTreeToReadable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qbTreeToReadable.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/qbTreeToReadable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAA0B,OAAO,EAAU,MAAM,qBAAqB,CAAA;AAG7E;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,oBAAoB,GAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAqB,GAClE,SAAS,CAIX"}
@@ -0,0 +1,89 @@
1
+ import { isQBGroup as e } from "./QueryBuilderTypes.js";
2
+ import { labelForFacetValue as t, labelForOp as n } from "./queryBuilderMetadata.js";
3
+ import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
4
+ //#region src/components/QueryBuilder/qbTreeToReadable.tsx
5
+ function o(e, t = (e) => e) {
6
+ return s(e, !0, t) ?? /* @__PURE__ */ i("span", { children: "(no filters)" });
7
+ }
8
+ function s(t, n, r) {
9
+ return e(t) ? c(t, n, r) : l(t, r);
10
+ }
11
+ function c(e, t, n) {
12
+ let o = e.children.map((e, t) => ({
13
+ key: e.id,
14
+ node: s(e, !1, n),
15
+ index: t
16
+ })).filter((e) => e.node != null);
17
+ if (o.length === 0) return null;
18
+ let c = e.combinator, l = /* @__PURE__ */ i("span", { children: o.map((e, t) => /* @__PURE__ */ a("span", { children: [t > 0 && /* @__PURE__ */ a(r, { children: [
19
+ " ",
20
+ /* @__PURE__ */ i(d, { combinator: c }),
21
+ " "
22
+ ] }), e.node] }, e.key)) });
23
+ return e.not ? /* @__PURE__ */ a("span", { children: [
24
+ /* @__PURE__ */ i(f, {}),
25
+ " (",
26
+ l,
27
+ ")"
28
+ ] }) : t ? l : /* @__PURE__ */ a("span", { children: [
29
+ "(",
30
+ l,
31
+ ")"
32
+ ] });
33
+ }
34
+ function l(e, t) {
35
+ let r = u(e);
36
+ if (e.columnName == null && r == null) return null;
37
+ let o = e.columnName ? t(e.columnName) : "(unset)";
38
+ return r == null ? /* @__PURE__ */ a("span", { children: [/* @__PURE__ */ i("strong", { children: o }), " (unset)"] }) : /* @__PURE__ */ a("span", { children: [
39
+ /* @__PURE__ */ i("strong", { children: o }),
40
+ " ",
41
+ n(e.op),
42
+ " ",
43
+ r
44
+ ] });
45
+ }
46
+ function u(e) {
47
+ let { op: n, values: r, rangeMin: i, rangeMax: a, text: o } = e;
48
+ switch (n) {
49
+ case "has_value":
50
+ case "no_value": return "";
51
+ case "is_any_of":
52
+ case "is_all_of": return r.length === 0 ? null : r.map(t).join(", ");
53
+ case "equal":
54
+ case "not_equal": return r.length === 0 ? null : t(r[0]);
55
+ case "between": return !i || !a ? null : `${i} and ${a}`;
56
+ case "gt":
57
+ case "gte": return i || null;
58
+ case "lt":
59
+ case "lte": return a || null;
60
+ case "contains":
61
+ case "starts_with":
62
+ case "ends_with":
63
+ case "is_exactly": return o ? `"${o}"` : null;
64
+ default: return null;
65
+ }
66
+ }
67
+ function d({ combinator: e }) {
68
+ return /* @__PURE__ */ i("span", {
69
+ style: {
70
+ color: e === "OR" ? "var(--synapse-warning)" : "var(--synapse-primary-action-color)",
71
+ fontWeight: 700
72
+ },
73
+ "aria-hidden": "false",
74
+ children: e
75
+ });
76
+ }
77
+ function f() {
78
+ return /* @__PURE__ */ i("span", {
79
+ style: {
80
+ color: "var(--synapse-error)",
81
+ fontWeight: 700
82
+ },
83
+ children: "NOT"
84
+ });
85
+ }
86
+ //#endregion
87
+ export { o as qbTreeToReadable };
88
+
89
+ //# sourceMappingURL=qbTreeToReadable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qbTreeToReadable.js","names":[],"sources":["../../../src/components/QueryBuilder/qbTreeToReadable.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { isQBGroup, QBCondition, QBGroup, QBNode } from './QueryBuilderTypes'\nimport { labelForFacetValue, labelForOp } from './queryBuilderMetadata'\n\n/**\n * Render a QB tree as a plain-English React node with the AND / OR / NOT\n * connectives styled inline. Used by the QB's Reads-As summary bar.\n *\n * Rules (per the design's plain-English summary spec):\n * - The root group reads without outer parentheses.\n * - Nested groups retain parentheses.\n * - Excluded (NOT) groups are always parenthesized and prefixed with NOT.\n * - Incomplete conditions render as `(unset)`.\n */\nexport function qbTreeToReadable(\n root: QBGroup,\n getColumnDisplayName: (columnName: string) => string = name => name,\n): ReactNode {\n const rendered = renderNode(root, true, getColumnDisplayName)\n if (rendered == null) return <span>(no filters)</span>\n return rendered\n}\n\nfunction renderNode(\n node: QBNode,\n isRoot: boolean,\n getColumnDisplayName: (columnName: string) => string,\n): ReactNode | null {\n if (isQBGroup(node)) return renderGroup(node, isRoot, getColumnDisplayName)\n return renderCondition(node, getColumnDisplayName)\n}\n\nfunction renderGroup(\n group: QBGroup,\n isRoot: boolean,\n getColumnDisplayName: (columnName: string) => string,\n): ReactNode | null {\n const parts = group.children\n .map((child, index) => ({\n key: child.id,\n node: renderNode(child, false, getColumnDisplayName),\n index,\n }))\n .filter(part => part.node != null)\n\n if (parts.length === 0) return null\n\n const combinator = group.combinator\n const inner = parts.map((part, index) => (\n <span key={part.key}>\n {index > 0 && (\n <>\n {' '}\n <ConnectiveSpan combinator={combinator} />{' '}\n </>\n )}\n {part.node}\n </span>\n ))\n\n const body = <span>{inner}</span>\n\n if (group.not) {\n return (\n <span>\n <NotSpan /> ({body})\n </span>\n )\n }\n if (isRoot) return body\n return <span>({body})</span>\n}\n\nfunction renderCondition(\n condition: QBCondition,\n getColumnDisplayName: (columnName: string) => string,\n): ReactNode | null {\n const valueSummary = summarizeConditionValue(condition)\n // Skip fully-blank rows so they don't clutter the summary bar. A row is\n // fully blank when the user hasn't picked a column AND hasn't entered any\n // value yet — that's an in-progress row we don't want to narrate.\n if (condition.columnName == null && valueSummary == null) return null\n const columnName = condition.columnName\n ? getColumnDisplayName(condition.columnName)\n : '(unset)'\n if (valueSummary == null) {\n return (\n <span>\n <strong>{columnName}</strong> (unset)\n </span>\n )\n }\n return (\n <span>\n <strong>{columnName}</strong> {labelForOp(condition.op)} {valueSummary}\n </span>\n )\n}\n\nfunction summarizeConditionValue(condition: QBCondition): string | null {\n const { op, values, rangeMin, rangeMax, text } = condition\n switch (op) {\n case 'has_value':\n case 'no_value':\n return ''\n case 'is_any_of':\n case 'is_all_of':\n return values.length === 0\n ? null\n : values.map(labelForFacetValue).join(', ')\n case 'equal':\n case 'not_equal':\n return values.length === 0 ? null : labelForFacetValue(values[0])\n case 'between':\n if (!rangeMin || !rangeMax) return null\n return `${rangeMin} and ${rangeMax}`\n case 'gt':\n case 'gte':\n return rangeMin ? rangeMin : null\n case 'lt':\n case 'lte':\n return rangeMax ? rangeMax : null\n case 'contains':\n case 'starts_with':\n case 'ends_with':\n case 'is_exactly':\n return text ? `\"${text}\"` : null\n default:\n op satisfies never\n return null\n }\n}\n\nfunction ConnectiveSpan({ combinator }: { combinator: 'AND' | 'OR' }) {\n const color =\n combinator === 'OR'\n ? 'var(--synapse-warning)'\n : 'var(--synapse-primary-action-color)'\n return (\n <span style={{ color, fontWeight: 700 }} aria-hidden=\"false\">\n {combinator}\n </span>\n )\n}\n\nfunction NotSpan() {\n return (\n <span style={{ color: 'var(--synapse-error)', fontWeight: 700 }}>NOT</span>\n )\n}\n"],"mappings":";;;;AAcA,SAAgB,EACd,GACA,KAAuD,MAAQ,GACpD;CAGX,OAFiB,EAAW,GAAM,IAAM,CACpC,KAAyB,kBAAC,QAAD,EAAA,UAAM,eAAkB,CAAA;AAEvD;AAEA,SAAS,EACP,GACA,GACA,GACkB;CAElB,OADI,EAAU,CAAI,IAAU,EAAY,GAAM,GAAQ,CAAoB,IACnE,EAAgB,GAAM,CAAoB;AACnD;AAEA,SAAS,EACP,GACA,GACA,GACkB;CAClB,IAAM,IAAQ,EAAM,SACjB,KAAK,GAAO,OAAW;EACtB,KAAK,EAAM;EACX,MAAM,EAAW,GAAO,IAAO,CAAoB;EACnD;CACF,EAAE,EACD,QAAO,MAAQ,EAAK,QAAQ,IAAI;CAEnC,IAAI,EAAM,WAAW,GAAG,OAAO;CAE/B,IAAM,IAAa,EAAM,YAanB,IAAO,kBAAC,QAAD,EAAA,UAZC,EAAM,KAAK,GAAM,MAC7B,kBAAC,QAAD,EAAA,UAAA,CACG,IAAQ,KACP,kBAAA,GAAA,EAAA,UAAA;EACG;EACD,kBAAC,GAAD,EAA4B,cAAa,CAAA;EAAE;CAC3C,EAAA,CAAA,GAEH,EAAK,IACF,EAAA,GARK,EAAK,GAQV,CAGY,EAAY,CAAA;CAUhC,OARI,EAAM,MAEN,kBAAC,QAAD,EAAA,UAAA;EACE,kBAAC,GAAD,CAAU,CAAA;EAAC;EAAG;EAAK;CACf,EAAA,CAAA,IAGN,IAAe,IACZ,kBAAC,QAAD,EAAA,UAAA;EAAM;EAAE;EAAK;CAAO,EAAA,CAAA;AAC7B;AAEA,SAAS,EACP,GACA,GACkB;CAClB,IAAM,IAAe,EAAwB,CAAS;CAItD,IAAI,EAAU,cAAc,QAAQ,KAAgB,MAAM,OAAO;CACjE,IAAM,IAAa,EAAU,aACzB,EAAqB,EAAU,UAAU,IACzC;CAQJ,OAPI,KAAgB,OAEhB,kBAAC,QAAD,EAAA,UAAA,CACE,kBAAC,UAAD,EAAA,UAAS,EAAmB,CAAA,GAAC,UACzB,EAAA,CAAA,IAIR,kBAAC,QAAD,EAAA,UAAA;EACE,kBAAC,UAAD,EAAA,UAAS,EAAmB,CAAA;EAAC;EAAE,EAAW,EAAU,EAAE;EAAE;EAAE;CACtD,EAAA,CAAA;AAEV;AAEA,SAAS,EAAwB,GAAuC;CACtE,IAAM,EAAE,OAAI,WAAQ,aAAU,aAAU,YAAS;CACjD,QAAQ,GAAR;EACE,KAAK;EACL,KAAK,YACH,OAAO;EACT,KAAK;EACL,KAAK,aACH,OAAO,EAAO,WAAW,IACrB,OACA,EAAO,IAAI,CAAkB,EAAE,KAAK,IAAI;EAC9C,KAAK;EACL,KAAK,aACH,OAAO,EAAO,WAAW,IAAI,OAAO,EAAmB,EAAO,EAAE;EAClE,KAAK,WAEH,OADI,CAAC,KAAY,CAAC,IAAiB,OAC5B,GAAG,EAAS,OAAO;EAC5B,KAAK;EACL,KAAK,OACH,OAAO,KAAsB;EAC/B,KAAK;EACL,KAAK,OACH,OAAO,KAAsB;EAC/B,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,cACH,OAAO,IAAO,IAAI,EAAK,KAAK;EAC9B,SAEE,OAAO;CACX;AACF;AAEA,SAAS,EAAe,EAAE,iBAA4C;CAKpE,OACE,kBAAC,QAAD;EAAM,OAAO;GAAE,OAJf,MAAe,OACX,2BACA;GAEkB,YAAY;EAAI;EAAG,eAAY;YAClD;CACG,CAAA;AAEV;AAEA,SAAS,IAAU;CACjB,OACE,kBAAC,QAAD;EAAM,OAAO;GAAE,OAAO;GAAwB,YAAY;EAAI;YAAG;CAAS,CAAA;AAE9E"}
@@ -0,0 +1,27 @@
1
+ import { DragEndEvent, DragOverEvent } from '@dnd-kit/react';
2
+ import { QBGroup } from './QueryBuilderTypes';
3
+ /** Droppable id for a group's drop zone, kept distinct from the group's own id. */
4
+ export declare function groupDropZoneId(groupId: string): string;
5
+ /** `data` a group's drop zone carries so a drop can name its destination. */
6
+ export declare function groupDropZoneData(groupId: string): {
7
+ groupId: string;
8
+ };
9
+ /**
10
+ * The group a drop zone belongs to, or null when the drop landed on a
11
+ * droppable that is not one — nothing else in the tree registers a zone, so
12
+ * that is the signal to leave the tree alone.
13
+ */
14
+ export declare function readGroupDropZoneTarget(data: unknown): string | null;
15
+ export type QueryBuilderDragHandlers = {
16
+ onDragStart: () => void;
17
+ onDragOver: (event: DragOverEvent) => void;
18
+ onDragEnd: (event: DragEndEvent) => void;
19
+ };
20
+ /**
21
+ * Drag-and-drop for the Query Builder tree, as handlers for `DragDropProvider`.
22
+ *
23
+ * Every drag means "put this node in that group": groups register the only
24
+ * drop zones, and a dropped node joins the group it was released over.
25
+ */
26
+ export declare function useQueryBuilderDrag(tree: QBGroup, onTreeChange: (next: QBGroup) => void): QueryBuilderDragHandlers;
27
+ //# sourceMappingURL=queryBuilderDnd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderDnd.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/queryBuilderDnd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG5D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAID,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM;;EAEhD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIpE;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;CACzC,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GACpC,wBAAwB,CA+C1B"}
@@ -0,0 +1,41 @@
1
+ import { moveNodeIntoGroup as e } from "./queryBuilderOperations.js";
2
+ import { useCallback as t, useMemo as n, useRef as r } from "react";
3
+ //#region src/components/QueryBuilder/queryBuilderDnd.ts
4
+ function i(e) {
5
+ return `${e}::dropzone`;
6
+ }
7
+ var a = "groupId";
8
+ function o(e) {
9
+ return { [a]: e };
10
+ }
11
+ function s(e) {
12
+ if (typeof e != "object" || !e) return null;
13
+ let t = e[a];
14
+ return typeof t == "string" ? t : null;
15
+ }
16
+ function c(i, a) {
17
+ let o = t((t) => {
18
+ let { source: n, target: r } = t;
19
+ if (n == null || r == null) return;
20
+ let o = s(r.data);
21
+ o != null && a(e(i, String(n.id), o));
22
+ }, [i, a]), c = r(null), l = t(() => {
23
+ c.current = i;
24
+ }, [i]), u = t((e) => o(e.operation), [o]), d = t((e) => {
25
+ let t = c.current;
26
+ c.current = null, e.operation.canceled && t != null && a(t);
27
+ }, [a]);
28
+ return n(() => ({
29
+ onDragStart: l,
30
+ onDragOver: u,
31
+ onDragEnd: d
32
+ }), [
33
+ l,
34
+ u,
35
+ d
36
+ ]);
37
+ }
38
+ //#endregion
39
+ export { o as groupDropZoneData, i as groupDropZoneId, s as readGroupDropZoneTarget, c as useQueryBuilderDrag };
40
+
41
+ //# sourceMappingURL=queryBuilderDnd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderDnd.js","names":[],"sources":["../../../src/components/QueryBuilder/queryBuilderDnd.ts"],"sourcesContent":["import { DragEndEvent, DragOverEvent } from '@dnd-kit/react'\nimport { useCallback, useMemo, useRef } from 'react'\nimport { moveNodeIntoGroup } from './queryBuilderOperations'\nimport { QBGroup } from './QueryBuilderTypes'\n\n/** Droppable id for a group's drop zone, kept distinct from the group's own id. */\nexport function groupDropZoneId(groupId: string): string {\n return `${groupId}::dropzone`\n}\n\nconst GROUP_ID_KEY = 'groupId'\n\n/** `data` a group's drop zone carries so a drop can name its destination. */\nexport function groupDropZoneData(groupId: string) {\n return { [GROUP_ID_KEY]: groupId }\n}\n\n/**\n * The group a drop zone belongs to, or null when the drop landed on a\n * droppable that is not one — nothing else in the tree registers a zone, so\n * that is the signal to leave the tree alone.\n */\nexport function readGroupDropZoneTarget(data: unknown): string | null {\n if (data == null || typeof data !== 'object') return null\n const groupId: unknown = (data as Record<string, unknown>)[GROUP_ID_KEY]\n return typeof groupId === 'string' ? groupId : null\n}\n\nexport type QueryBuilderDragHandlers = {\n onDragStart: () => void\n onDragOver: (event: DragOverEvent) => void\n onDragEnd: (event: DragEndEvent) => void\n}\n\n/**\n * Drag-and-drop for the Query Builder tree, as handlers for `DragDropProvider`.\n *\n * Every drag means \"put this node in that group\": groups register the only\n * drop zones, and a dropped node joins the group it was released over.\n */\nexport function useQueryBuilderDrag(\n tree: QBGroup,\n onTreeChange: (next: QBGroup) => void,\n): QueryBuilderDragHandlers {\n const dropIntoHoveredGroup = useCallback(\n (operation: DragOverEvent['operation']) => {\n const { source, target } = operation\n if (source == null || target == null) return\n const groupId = readGroupDropZoneTarget(target.data)\n if (groupId == null) return\n onTreeChange(moveNodeIntoGroup(tree, String(source.id), groupId))\n },\n [tree, onTreeChange],\n )\n\n // The tree as it stood before the in-flight drag. `onDragOver` rewrites the\n // tree as the pointer moves, so this snapshot is the only way back if the\n // gesture is canceled — dnd-kit reverts its own state, never ours.\n const treeBeforeDrag = useRef<QBGroup | null>(null)\n\n const onDragStart = useCallback(() => {\n treeBeforeDrag.current = tree\n }, [tree])\n\n // Moving the node as the pointer crosses into a group is what keeps React\n // state and the DOM in step within the gesture, which is the contract\n // dnd-kit's sortables expect: rows animate to their new positions, and any\n // optimistic sorting stands down on seeing the indices already updated\n // rather than reordering the DOM behind React's back.\n const onDragOver = useCallback(\n (event: DragOverEvent) => dropIntoHoveredGroup(event.operation),\n [dropIntoHoveredGroup],\n )\n\n // The destination depends only on which group is under the pointer, and\n // `dragover` already fired for that group, so a release has nothing left to\n // apply — the tree already shows the result.\n const onDragEnd = useCallback(\n (event: DragEndEvent) => {\n const snapshot = treeBeforeDrag.current\n treeBeforeDrag.current = null\n if (event.operation.canceled && snapshot != null) onTreeChange(snapshot)\n },\n [onTreeChange],\n )\n\n return useMemo(\n () => ({ onDragStart, onDragOver, onDragEnd }),\n [onDragStart, onDragOver, onDragEnd],\n )\n}\n"],"mappings":";;;AAMA,SAAgB,EAAgB,GAAyB;CACvD,OAAO,GAAG,EAAQ;AACpB;AAEA,IAAM,IAAe;AAGrB,SAAgB,EAAkB,GAAiB;CACjD,OAAO,GAAG,IAAe,EAAQ;AACnC;AAOA,SAAgB,EAAwB,GAA8B;CACpE,IAAoB,OAAO,KAAS,aAAhC,GAA0C,OAAO;CACrD,IAAM,IAAoB,EAAiC;CAC3D,OAAO,OAAO,KAAY,WAAW,IAAU;AACjD;AAcA,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAuB,GAC1B,MAA0C;EACzC,IAAM,EAAE,WAAQ,cAAW;EAC3B,IAAI,KAAU,QAAQ,KAAU,MAAM;EACtC,IAAM,IAAU,EAAwB,EAAO,IAAI;EAC/C,KAAW,QACf,EAAa,EAAkB,GAAM,OAAO,EAAO,EAAE,GAAG,CAAO,CAAC;CAClE,GACA,CAAC,GAAM,CAAY,CACrB,GAKM,IAAiB,EAAuB,IAAI,GAE5C,IAAc,QAAkB;EACpC,EAAe,UAAU;CAC3B,GAAG,CAAC,CAAI,CAAC,GAOH,IAAa,GAChB,MAAyB,EAAqB,EAAM,SAAS,GAC9D,CAAC,CAAoB,CACvB,GAKM,IAAY,GACf,MAAwB;EACvB,IAAM,IAAW,EAAe;EAEhC,AADA,EAAe,UAAU,MACrB,EAAM,UAAU,YAAY,KAAY,QAAM,EAAa,CAAQ;CACzE,GACA,CAAC,CAAY,CACf;CAEA,OAAO,SACE;EAAE;EAAa;EAAY;CAAU,IAC5C;EAAC;EAAa;EAAY;CAAS,CACrC;AACF"}
@@ -0,0 +1 @@
1
+ ._dragHandle_1a118_1{cursor:grab;color:var(--synapse-gray-deemphasized)}._dragSource_1a118_6{opacity:.4}
@@ -0,0 +1,8 @@
1
+ import './queryBuilderDrag.css';var e = {
2
+ dragHandle: "_dragHandle_1a118_1",
3
+ dragSource: "_dragSource_1a118_6"
4
+ };
5
+ //#endregion
6
+ export { e as default };
7
+
8
+ //# sourceMappingURL=queryBuilderDrag.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderDrag.module.js","names":[],"sources":["../../../src/components/QueryBuilder/queryBuilderDrag.module.scss"],"sourcesContent":["// Styles shared by both draggable node types in the tree.\n\n.dragHandle {\n cursor: grab;\n color: var(--synapse-gray-deemphasized);\n}\n\n// The node the pointer is carrying. It stays in the tree and moves between\n// groups as the drag goes, so it is dimmed to read as in-flight.\n.dragSource {\n opacity: 0.4;\n}\n"],"mappings":""}
@@ -0,0 +1,12 @@
1
+ // Styles shared by both draggable node types in the tree.
2
+
3
+ .dragHandle {
4
+ cursor: grab;
5
+ color: var(--synapse-gray-deemphasized);
6
+ }
7
+
8
+ // The node the pointer is carrying. It stays in the tree and moves between
9
+ // groups as the drag goes, so it is dimmed to read as in-flight.
10
+ .dragSource {
11
+ opacity: 0.4;
12
+ }
@@ -0,0 +1,2 @@
1
+ export declare function newQBNodeId(): string;
2
+ //# sourceMappingURL=queryBuilderId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderId.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/queryBuilderId.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,IAAI,MAAM,CAUpC"}
@@ -0,0 +1,9 @@
1
+ //#region src/components/QueryBuilder/queryBuilderId.ts
2
+ var e = 0;
3
+ function t() {
4
+ return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : (e += 1, `qb-${e}`);
5
+ }
6
+ //#endregion
7
+ export { t as newQBNodeId };
8
+
9
+ //# sourceMappingURL=queryBuilderId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderId.js","names":[],"sources":["../../../src/components/QueryBuilder/queryBuilderId.ts"],"sourcesContent":["let idCounter = 0\n\nexport function newQBNodeId(): string {\n if (\n typeof crypto !== 'undefined' &&\n typeof crypto.randomUUID === 'function'\n ) {\n return crypto.randomUUID()\n }\n // Monotonic counter is sufficient — QB ids are client-only React keys, not secrets.\n idCounter += 1\n return `qb-${idCounter}`\n}\n"],"mappings":";AAAA,IAAI,IAAY;AAEhB,SAAgB,IAAsB;CASpC,OAPE,OAAO,SAAW,OAClB,OAAO,OAAO,cAAe,aAEtB,OAAO,WAAW,KAG3B,KAAa,GACN,MAAM;AACf"}
@@ -0,0 +1,24 @@
1
+ import { QBConditionOp } from './QueryBuilderTypes';
2
+ /** Categorization of columns for the QB UI. Not a synapse-types concept. */
3
+ export type QBColumnKind = 'enum' | 'list' | 'range' | 'boolean' | 'text' | 'unknown';
4
+ /**
5
+ * Classify a column into a QB kind based on its `ColumnTypeEnum` string and
6
+ * whether the column has a facet in the query result. `hasFacet` distinguishes
7
+ * a faceted single-value column (`enum`) from a plain single-value column
8
+ * (`text`).
9
+ */
10
+ export declare function classifyColumn(columnType: string | null, hasFacet: boolean): QBColumnKind;
11
+ /**
12
+ * Ordered list of operators offered for a given column kind. Order controls
13
+ * the operator picker dropdown ordering.
14
+ */
15
+ export declare function availableOpsForKind(kind: QBColumnKind): QBConditionOp[];
16
+ /** Human-readable label for an operator, shown in the operator picker. */
17
+ export declare function labelForOp(op: QBConditionOp): string;
18
+ /**
19
+ * Returns the user-facing label for a raw facet value. Backend sentinels like
20
+ * `VALUE_NOT_SET` display as `Not Assigned`; every other value renders as-is.
21
+ * The underlying value stored on the QB condition is unchanged.
22
+ */
23
+ export declare function labelForFacetValue(value: string): string;
24
+ //# sourceMappingURL=queryBuilderMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderMetadata.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/queryBuilderMetadata.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,4EAA4E;AAC5E,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,MAAM,GACN,SAAS,CAAA;AAEb;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,QAAQ,EAAE,OAAO,GAChB,YAAY,CA4Bd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,EAAE,CAoCvE;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAoCpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,91 @@
1
+ import { FRIENDLY_VALUE_NOT_SET as e } from "../../utils/SynapseConstants.js";
2
+ //#region src/components/QueryBuilder/queryBuilderMetadata.ts
3
+ function t(e, t) {
4
+ if (e?.endsWith("_LIST")) return "list";
5
+ if (t) return "enum";
6
+ if (e == null) return "unknown";
7
+ switch (e) {
8
+ case "BOOLEAN": return "boolean";
9
+ case "INTEGER":
10
+ case "DOUBLE":
11
+ case "DATE":
12
+ case "DATE_TIME": return "range";
13
+ case "STRING":
14
+ case "LARGETEXT":
15
+ case "LINK":
16
+ case "MEDIUMTEXT":
17
+ case "USERID":
18
+ case "ENTITYID":
19
+ case "EVALUATIONID":
20
+ case "SUBMISSIONID": return "text";
21
+ default: return "text";
22
+ }
23
+ }
24
+ function n(e) {
25
+ switch (e) {
26
+ case "enum": return [
27
+ "is_any_of",
28
+ "has_value",
29
+ "no_value"
30
+ ];
31
+ case "list": return [
32
+ "is_any_of",
33
+ "is_all_of",
34
+ "has_value",
35
+ "no_value"
36
+ ];
37
+ case "range": return [
38
+ "between",
39
+ "gt",
40
+ "gte",
41
+ "lt",
42
+ "lte",
43
+ "equal",
44
+ "not_equal",
45
+ "has_value",
46
+ "no_value"
47
+ ];
48
+ case "boolean": return [
49
+ "equal",
50
+ "has_value",
51
+ "no_value"
52
+ ];
53
+ case "text": return [
54
+ "contains",
55
+ "starts_with",
56
+ "ends_with",
57
+ "is_exactly",
58
+ "has_value",
59
+ "no_value"
60
+ ];
61
+ case "unknown": return [];
62
+ default: return [];
63
+ }
64
+ }
65
+ function r(e) {
66
+ switch (e) {
67
+ case "is_any_of": return "is any of";
68
+ case "is_all_of": return "is all of";
69
+ case "between": return "between";
70
+ case "gt": return ">";
71
+ case "gte": return "≥";
72
+ case "lt": return "<";
73
+ case "lte": return "≤";
74
+ case "equal": return "equals";
75
+ case "not_equal": return "does not equal";
76
+ case "has_value": return "has value";
77
+ case "no_value": return "has no value";
78
+ case "contains": return "contains";
79
+ case "starts_with": return "starts with";
80
+ case "ends_with": return "ends with";
81
+ case "is_exactly": return "is exactly";
82
+ default: return e;
83
+ }
84
+ }
85
+ function i(t) {
86
+ return t === "org.sagebionetworks.UNDEFINED_NULL_NOTSET" ? e : t;
87
+ }
88
+ //#endregion
89
+ export { n as availableOpsForKind, t as classifyColumn, i as labelForFacetValue, r as labelForOp };
90
+
91
+ //# sourceMappingURL=queryBuilderMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderMetadata.js","names":[],"sources":["../../../src/components/QueryBuilder/queryBuilderMetadata.ts"],"sourcesContent":["/**\n * Column-kind classification and operator availability per kind. The QB uses\n * this both to populate the operator picker dropdown and to decide what shape\n * of value input to render.\n */\nimport {\n FRIENDLY_VALUE_NOT_SET,\n VALUE_NOT_SET,\n} from '../../utils/SynapseConstants'\nimport { QBConditionOp } from './QueryBuilderTypes'\n\n/** Categorization of columns for the QB UI. Not a synapse-types concept. */\nexport type QBColumnKind =\n | 'enum'\n | 'list'\n | 'range'\n | 'boolean'\n | 'text'\n | 'unknown'\n\n/**\n * Classify a column into a QB kind based on its `ColumnTypeEnum` string and\n * whether the column has a facet in the query result. `hasFacet` distinguishes\n * a faceted single-value column (`enum`) from a plain single-value column\n * (`text`).\n */\nexport function classifyColumn(\n columnType: string | null,\n hasFacet: boolean,\n): QBColumnKind {\n // `_LIST` columns keep the `list` kind so `is_all_of` remains available.\n if (columnType?.endsWith('_LIST')) return 'list'\n // Any faceted column becomes an enum picker regardless of the raw column\n // type (even when the type is unknown, e.g. when the QB tree was hydrated\n // from `selectedFacets` without column-model context).\n if (hasFacet) return 'enum'\n if (columnType == null) return 'unknown'\n switch (columnType) {\n case 'BOOLEAN':\n return 'boolean'\n case 'INTEGER':\n case 'DOUBLE':\n case 'DATE':\n case 'DATE_TIME':\n return 'range'\n case 'STRING':\n case 'LARGETEXT':\n case 'LINK':\n case 'MEDIUMTEXT':\n case 'USERID':\n case 'ENTITYID':\n case 'EVALUATIONID':\n case 'SUBMISSIONID':\n return 'text'\n default:\n return 'text'\n }\n}\n\n/**\n * Ordered list of operators offered for a given column kind. Order controls\n * the operator picker dropdown ordering.\n */\nexport function availableOpsForKind(kind: QBColumnKind): QBConditionOp[] {\n switch (kind) {\n case 'enum':\n return ['is_any_of', 'has_value', 'no_value']\n case 'list':\n return ['is_any_of', 'is_all_of', 'has_value', 'no_value']\n case 'range':\n return [\n 'between',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'equal',\n 'not_equal',\n 'has_value',\n 'no_value',\n ]\n case 'boolean':\n return ['equal', 'has_value', 'no_value']\n case 'text':\n return [\n 'contains',\n 'starts_with',\n 'ends_with',\n 'is_exactly',\n 'has_value',\n 'no_value',\n ]\n case 'unknown':\n // No column picked yet; offer nothing until one is selected.\n return []\n default:\n kind satisfies never\n return []\n }\n}\n\n/** Human-readable label for an operator, shown in the operator picker. */\nexport function labelForOp(op: QBConditionOp): string {\n switch (op) {\n case 'is_any_of':\n return 'is any of'\n case 'is_all_of':\n return 'is all of'\n case 'between':\n return 'between'\n case 'gt':\n return '>'\n case 'gte':\n return '≥'\n case 'lt':\n return '<'\n case 'lte':\n return '≤'\n case 'equal':\n return 'equals'\n case 'not_equal':\n return 'does not equal'\n case 'has_value':\n return 'has value'\n case 'no_value':\n return 'has no value'\n case 'contains':\n return 'contains'\n case 'starts_with':\n return 'starts with'\n case 'ends_with':\n return 'ends with'\n case 'is_exactly':\n return 'is exactly'\n default:\n op satisfies never\n return op\n }\n}\n\n/**\n * Returns the user-facing label for a raw facet value. Backend sentinels like\n * `VALUE_NOT_SET` display as `Not Assigned`; every other value renders as-is.\n * The underlying value stored on the QB condition is unchanged.\n */\nexport function labelForFacetValue(value: string): string {\n return value === VALUE_NOT_SET ? FRIENDLY_VALUE_NOT_SET : value\n}\n"],"mappings":";;AA0BA,SAAgB,EACd,GACA,GACc;CAEd,IAAI,GAAY,SAAS,OAAO,GAAG,OAAO;CAI1C,IAAI,GAAU,OAAO;CACrB,IAAI,KAAc,MAAM,OAAO;CAC/B,QAAQ,GAAR;EACE,KAAK,WACH,OAAO;EACT,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,aACH,OAAO;EACT,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,gBACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAMA,SAAgB,EAAoB,GAAqC;CACvE,QAAQ,GAAR;EACE,KAAK,QACH,OAAO;GAAC;GAAa;GAAa;EAAU;EAC9C,KAAK,QACH,OAAO;GAAC;GAAa;GAAa;GAAa;EAAU;EAC3D,KAAK,SACH,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACF,KAAK,WACH,OAAO;GAAC;GAAS;GAAa;EAAU;EAC1C,KAAK,QACH,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;EACF;EACF,KAAK,WAEH,OAAO,CAAC;EACV,SAEE,OAAO,CAAC;CACZ;AACF;AAGA,SAAgB,EAAW,GAA2B;CACpD,QAAQ,GAAR;EACE,KAAK,aACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,OACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,OACH,OAAO;EACT,KAAK,SACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,YACH,OAAO;EACT,KAAK,YACH,OAAO;EACT,KAAK,eACH,OAAO;EACT,KAAK,aACH,OAAO;EACT,KAAK,cACH,OAAO;EACT,SAEE,OAAO;CACX;AACF;AAOA,SAAgB,EAAmB,GAAuB;CACxD,OAAO,MAAA,8CAA0B,IAAyB;AAC5D"}
@@ -0,0 +1,71 @@
1
+ import { QBCombinator, QBCondition, QBConditionOp, QBGroup, QBNode } from './QueryBuilderTypes';
2
+ /**
3
+ * The initial `op` for a brand-new condition. When the user hasn't picked a
4
+ * column yet the choice is arbitrary — the row's operator picker replaces it
5
+ * as soon as the column is chosen — but we still need a valid discriminant
6
+ * so the UI can render. `is_any_of` renders as a pill-based value input, which
7
+ * degrades gracefully for a blank row.
8
+ */
9
+ export declare function defaultOpForColumnType(columnType: string | null): QBConditionOp;
10
+ export declare function newBlankCondition(columnName: string | null, columnType: string | null): QBCondition;
11
+ export declare function newEmptyGroup(combinator?: QBCombinator): QBGroup;
12
+ /** Root group with a single blank condition — the QB's default startup state. */
13
+ export declare function defaultQBGroup(): QBGroup;
14
+ export declare function addConditionToGroup(root: QBGroup, targetGroupId: string, columnName: string | null, columnType: string | null): QBGroup;
15
+ export declare function addChildGroup(root: QBGroup, targetGroupId: string): QBGroup;
16
+ /**
17
+ * Insert `node` into the group identified by `targetGroupId` at
18
+ * `targetIndex`. Semantics match `Array.prototype.splice(targetIndex, 0, node)`.
19
+ * If the group can't be found, returns the tree unchanged.
20
+ */
21
+ export declare function insertNodeAt(root: QBGroup, targetGroupId: string, targetIndex: number, node: QBNode): QBGroup;
22
+ /**
23
+ * Empty the children of the group identified by `nodeId`. If the id doesn't
24
+ * match any group, returns the tree unchanged.
25
+ */
26
+ export declare function clearGroup(root: QBGroup, nodeId: string): QBGroup;
27
+ export declare function updateCondition(root: QBGroup, nodeId: string, patch: Partial<Omit<QBCondition, 'kind' | 'id'>>): QBGroup;
28
+ export declare function updateGroup(root: QBGroup, nodeId: string, patch: Partial<Omit<QBGroup, 'kind' | 'id' | 'children'>>): QBGroup;
29
+ /**
30
+ * Remove the node identified by `nodeId` from the tree. The root cannot be
31
+ * removed — a request to remove the root returns the tree unchanged.
32
+ */
33
+ export declare function removeNode(root: QBGroup, nodeId: string): QBGroup;
34
+ /**
35
+ * Move the node identified by `nodeId` to `targetIndex` of the group
36
+ * identified by `targetGroupId`. `targetIndex` is the insertion index in the
37
+ * target group's children *after* the node has been removed from its current
38
+ * position — same semantics as `Array.prototype.splice(targetIndex, 0, node)`.
39
+ *
40
+ * Returns the tree unchanged if any of the following invariants would be
41
+ * violated:
42
+ * - `nodeId` is the root (root cannot be moved).
43
+ * - `targetGroupId` is `nodeId` (a node can't be dropped into itself).
44
+ * - `targetGroupId` is a descendant of `nodeId` (would create a cycle).
45
+ * - The move is a no-op (target group + index equals current group + index).
46
+ */
47
+ export declare function moveNode(root: QBGroup, nodeId: string, targetGroupId: string, targetIndex: number): QBGroup;
48
+ /**
49
+ * Move the node identified by `nodeId` to the front of the group identified
50
+ * by `groupId`.
51
+ *
52
+ * This is the operation behind drag-and-drop: only groups are drop targets,
53
+ * so every drag resolves to "put this node in that group". The node always
54
+ * lands first, matching where `addConditionToGroup` puts a new row — within
55
+ * an AND/OR group the order carries no meaning, so there is nothing for a
56
+ * drop position to express. Enforces the same invariants as `moveNode`, and
57
+ * additionally returns the tree unchanged when `groupId` names something that
58
+ * is not a group.
59
+ */
60
+ export declare function moveNodeIntoGroup(root: QBGroup, nodeId: string, groupId: string): QBGroup;
61
+ /**
62
+ * Find every node in the tree matching a predicate. Root is included.
63
+ */
64
+ export declare function findNodes(root: QBGroup, predicate: (node: QBNode) => boolean): QBNode[];
65
+ /**
66
+ * Whether `root` (or any descendant) contains a condition with a resolvable,
67
+ * complete filter — matches the design's "at least one complete condition"
68
+ * requirement for `hasResettableFilters`.
69
+ */
70
+ export declare function hasCompleteCondition(root: QBGroup): boolean;
71
+ //# sourceMappingURL=queryBuilderOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilderOperations.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/queryBuilderOperations.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,EACP,MAAM,EACP,MAAM,qBAAqB,CAAA;AAM5B;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,aAAa,CAgBf;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,WAAW,CAYb;AAED,wBAAgB,aAAa,CAAC,UAAU,GAAE,YAAoB,GAAG,OAAO,CAQvE;AAED,iFAAiF;AACjF,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAMD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAGT;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjE;AAMD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,GAC/C,OAAO,CAIT;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,GACxD,OAAO,CAET;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAQjE;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAiCT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAGT;AAMD;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACnC,MAAM,EAAE,CAQV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAI3D"}