synapse-react-client 4.0.40 → 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 (195) 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/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
  6. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
  7. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
  8. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  9. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  10. package/dist/components/Aridhia/AridhiaAccessStatus.js +51 -48
  11. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  12. package/dist/components/Authentication/Constants.d.ts +4 -0
  13. package/dist/components/Authentication/Constants.d.ts.map +1 -1
  14. package/dist/components/Authentication/Constants.js +5 -2
  15. package/dist/components/Authentication/Constants.js.map +1 -1
  16. package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
  17. package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
  18. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  19. package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
  20. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  21. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  22. package/dist/components/Authentication/TOTPForm.js +20 -18
  23. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  24. package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
  25. package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
  26. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  27. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  28. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
  29. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  30. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  31. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
  32. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  33. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
  34. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
  35. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
  36. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
  37. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
  38. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
  39. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
  40. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
  41. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
  42. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
  43. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
  44. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
  45. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
  46. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
  47. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
  48. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
  49. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
  50. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
  51. package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
  52. package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
  53. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
  54. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
  55. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
  56. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
  57. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
  58. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
  59. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
  60. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
  61. package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
  62. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
  63. package/dist/components/FormTemplateEditor/utils.js +27 -0
  64. package/dist/components/FormTemplateEditor/utils.js.map +1 -0
  65. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
  66. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
  67. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
  68. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
  69. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
  70. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
  71. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  72. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
  73. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  74. package/dist/components/QueryBuilder/FilterConditionRow.css +1 -1
  75. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +2 -0
  76. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  77. package/dist/components/QueryBuilder/FilterConditionRow.js +112 -109
  78. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  79. package/dist/components/QueryBuilder/FilterConditionRow.module.js +10 -11
  80. package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -1
  81. package/dist/components/QueryBuilder/FilterConditionRow.module.scss +0 -5
  82. package/dist/components/QueryBuilder/FilterGroupNode.css +1 -1
  83. package/dist/components/QueryBuilder/FilterGroupNode.d.ts +4 -0
  84. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  85. package/dist/components/QueryBuilder/FilterGroupNode.js +85 -51
  86. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  87. package/dist/components/QueryBuilder/FilterGroupNode.module.js +10 -9
  88. package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -1
  89. package/dist/components/QueryBuilder/FilterGroupNode.module.scss +9 -0
  90. package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
  91. package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
  92. package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
  93. package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
  94. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  95. package/dist/components/QueryBuilder/QueryBuilderControls.js +112 -107
  96. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  97. package/dist/components/QueryBuilder/qbTreeToReadable.js +11 -11
  98. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
  99. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
  100. package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
  101. package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
  102. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
  103. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
  104. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
  105. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
  106. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +13 -0
  107. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -1
  108. package/dist/components/QueryBuilder/queryBuilderOperations.js +39 -36
  109. package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -1
  110. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  111. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +46 -47
  112. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  113. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  114. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  115. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +35 -36
  116. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  117. package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
  118. package/dist/components/styled/LeftRightPanel.js +19 -2
  119. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  120. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -2
  121. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
  122. package/dist/mocks/accessRequirement/mockFormTemplates.js +7 -14
  123. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
  124. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +4 -1
  125. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
  126. package/dist/mocks/accessRequirement/mockJsonSchemas.js +36 -15
  127. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
  128. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
  129. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  130. package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
  131. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  132. package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
  133. package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
  134. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  135. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
  136. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  137. package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
  138. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  139. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  140. package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
  141. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  142. package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
  143. package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
  144. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  145. package/dist/synapse-queries/KeyFactory.d.ts +1 -2
  146. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  147. package/dist/synapse-queries/KeyFactory.js +2 -5
  148. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  149. package/dist/synapse-queries/dataaccess/index.d.ts +0 -1
  150. package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
  151. package/dist/synapse-queries/dataaccess/index.js +3 -4
  152. package/dist/synapse-queries/index.js +180 -184
  153. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
  154. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
  155. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
  156. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
  157. package/dist/testutils/vitest.setup.js +18 -9
  158. package/dist/testutils/vitest.setup.js.map +1 -1
  159. package/dist/tsconfig.build.tsbuildinfo +1 -1
  160. package/dist/utils/APIConstants.d.ts +1 -0
  161. package/dist/utils/APIConstants.d.ts.map +1 -1
  162. package/dist/utils/APIConstants.js +2 -2
  163. package/dist/utils/APIConstants.js.map +1 -1
  164. package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
  165. package/dist/utils/appendFinalQueryParamKey.js +4 -1
  166. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  167. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  168. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  169. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  170. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  171. package/dist/utils/functions/ArrayUtils.d.ts +3 -0
  172. package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
  173. package/dist/utils/functions/ArrayUtils.js +7 -1
  174. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  175. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
  176. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
  177. package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
  178. package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
  179. package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
  180. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
  181. package/dist/utils/jsonschema/submissionContext.js +186 -0
  182. package/dist/utils/jsonschema/submissionContext.js.map +1 -0
  183. package/package.json +5 -3
  184. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
  185. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
  186. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
  187. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
  188. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
  189. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
  190. package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
  191. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
  192. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts +0 -21
  193. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts.map +0 -1
  194. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js +0 -34
  195. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js.map +0 -1
@@ -1,100 +1,134 @@
1
- import { useQueryBuilderInternalContext as e } from "./QueryBuilderInternalContext.js";
2
- import { isQBGroup as t } from "./QueryBuilderTypes.js";
3
- import { FilterConditionRow as n } from "./FilterConditionRow.js";
4
- import r from "./FilterGroupNode.module.js";
5
- import { Button as i, ToggleButton as a, ToggleButtonGroup as o } from "@mui/material";
6
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
1
+ import { isQBGroup as e } from "./QueryBuilderTypes.js";
2
+ import { groupDropZoneData as t, groupDropZoneId as n } from "./queryBuilderDnd.js";
3
+ import { useQueryBuilderInternalContext as r } from "./QueryBuilderInternalContext.js";
4
+ import i from "./queryBuilderDrag.module.js";
5
+ import { QBDragHandle as a } from "./QBDragHandle.js";
6
+ import { FilterConditionRow as o } from "./FilterConditionRow.js";
7
+ import s from "./FilterGroupNode.module.js";
8
+ import { Button as c, ToggleButton as l, ToggleButtonGroup as u } from "@mui/material";
9
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
10
+ import { useForkRef as p } from "@mui/material/utils";
11
+ import { useSortable as m } from "@dnd-kit/react/sortable";
12
+ import { pointerIntersection as h } from "@dnd-kit/collision";
13
+ import { useDroppable as g } from "@dnd-kit/react";
7
14
  //#region src/components/QueryBuilder/FilterGroupNode.tsx
8
- function l(f) {
9
- let { group: p, isRoot: m = !1 } = f, { addConditionAt: h, addChildGroupAt: g, clearGroupAt: _, updateGroupAt: v, removeGroupAt: y } = e(), b = {
10
- "--qb-accent-color": u(p),
11
- "--qb-pill-color": u(p)
15
+ function _(b) {
16
+ let { group: x, isRoot: S = !1, parentGroupId: C, index: w, depth: T = 0 } = b, { addConditionAt: E, addChildGroupAt: D, clearGroupAt: O, updateGroupAt: k, removeGroupAt: A } = r(), { ref: j, handleRef: M, isDragSource: N } = m({
17
+ id: x.id,
18
+ index: w ?? 0,
19
+ group: C ?? x.id,
20
+ disabled: {
21
+ draggable: S,
22
+ droppable: !0
23
+ }
24
+ }), { ref: P, isDropTarget: F } = g({
25
+ id: n(x.id),
26
+ data: t(x.id),
27
+ collisionDetector: h,
28
+ collisionPriority: T
29
+ }), I = p(j, P), L = {
30
+ "--qb-accent-color": v(x),
31
+ "--qb-pill-color": v(x)
12
32
  };
13
- return /* @__PURE__ */ c("div", {
14
- className: `${r.group} ${m ? "" : r.nested}`,
15
- style: b,
33
+ return /* @__PURE__ */ f("div", {
34
+ ref: I,
35
+ className: `${s.group} ${S ? "" : s.nested}${N ? ` ${i.dragSource}` : ""}${F ? ` ${s.dropTarget}` : ""}`,
36
+ style: L,
16
37
  role: "group",
17
- "aria-label": d(p),
18
- "data-qb-node-id": p.id,
19
- children: [/* @__PURE__ */ c("div", {
20
- className: r.header,
38
+ "aria-label": y(x),
39
+ "data-qb-node-id": x.id,
40
+ children: [/* @__PURE__ */ f("div", {
41
+ className: s.header,
21
42
  children: [
22
- /* @__PURE__ */ c(o, {
43
+ !S && /* @__PURE__ */ d(a, {
44
+ handleRef: M,
45
+ label: "Drag condition group into another condition group"
46
+ }),
47
+ /* @__PURE__ */ f(u, {
23
48
  size: "small",
24
- className: r.combinator,
49
+ className: s.combinator,
25
50
  exclusive: !0,
26
- value: p.combinator,
51
+ value: x.combinator,
27
52
  "aria-label": "Boolean combinator",
28
53
  onChange: (e, t) => {
29
- t != null && v(p.id, { combinator: t });
54
+ t != null && k(x.id, { combinator: t });
30
55
  },
31
- children: [/* @__PURE__ */ s(a, {
56
+ children: [/* @__PURE__ */ d(l, {
32
57
  value: "AND",
33
58
  "aria-label": "AND",
34
59
  children: "AND"
35
- }), /* @__PURE__ */ s(a, {
60
+ }), /* @__PURE__ */ d(l, {
36
61
  value: "OR",
37
62
  "aria-label": "OR",
38
63
  children: "OR"
39
64
  })]
40
65
  }),
41
- /* @__PURE__ */ s(a, {
66
+ /* @__PURE__ */ d(l, {
42
67
  size: "small",
43
68
  value: "not",
44
- selected: p.not,
45
- className: r.notToggle,
69
+ selected: x.not,
70
+ className: s.notToggle,
46
71
  "aria-label": "Negate this group",
47
- "aria-pressed": p.not,
48
- onChange: () => v(p.id, { not: !p.not }),
72
+ "aria-pressed": x.not,
73
+ onChange: () => k(x.id, { not: !x.not }),
49
74
  children: "Exclude (NOT)"
50
75
  }),
51
- /* @__PURE__ */ c("div", {
52
- className: r.actions,
76
+ /* @__PURE__ */ f("div", {
77
+ className: s.actions,
53
78
  children: [
54
- /* @__PURE__ */ s(i, {
55
- className: r.actionButton,
79
+ /* @__PURE__ */ d(c, {
80
+ className: s.actionButton,
56
81
  size: "small",
57
- onClick: () => h(p.id),
82
+ onClick: () => E(x.id),
58
83
  children: "+ Condition"
59
84
  }),
60
- /* @__PURE__ */ s(i, {
61
- className: r.actionButton,
85
+ /* @__PURE__ */ d(c, {
86
+ className: s.actionButton,
62
87
  size: "small",
63
- onClick: () => g(p.id),
88
+ onClick: () => D(x.id),
64
89
  children: "+ Condition Group"
65
90
  }),
66
- /* @__PURE__ */ s(i, {
67
- className: r.actionButton,
91
+ /* @__PURE__ */ d(c, {
92
+ className: s.actionButton,
68
93
  size: "small",
69
- onClick: () => _(p.id),
70
- disabled: p.children.length === 0,
94
+ onClick: () => O(x.id),
95
+ disabled: x.children.length === 0,
71
96
  children: "Clear"
72
97
  }),
73
- !m && /* @__PURE__ */ s(i, {
74
- className: r.actionButton,
98
+ !S && /* @__PURE__ */ d(c, {
99
+ className: s.actionButton,
75
100
  size: "small",
76
- onClick: () => y(p.id),
101
+ onClick: () => A(x.id),
77
102
  children: "Delete Condition Group"
78
103
  })
79
104
  ]
80
105
  })
81
106
  ]
82
- }), /* @__PURE__ */ s("div", {
83
- className: r.children,
84
- children: p.children.length === 0 ? /* @__PURE__ */ s("div", {
85
- className: r.emptyState,
107
+ }), /* @__PURE__ */ d("div", {
108
+ className: s.children,
109
+ children: x.children.length === 0 ? /* @__PURE__ */ d("div", {
110
+ className: s.emptyState,
86
111
  children: "No conditions yet, add one above"
87
- }) : p.children.map((e) => t(e) ? /* @__PURE__ */ s(l, { group: e }, e.id) : /* @__PURE__ */ s(n, { condition: e }, e.id))
112
+ }) : x.children.map((t, n) => e(t) ? /* @__PURE__ */ d(_, {
113
+ group: t,
114
+ parentGroupId: x.id,
115
+ index: n,
116
+ depth: T + 1
117
+ }, t.id) : /* @__PURE__ */ d(o, {
118
+ condition: t,
119
+ parentGroupId: x.id,
120
+ index: n
121
+ }, t.id))
88
122
  })]
89
123
  });
90
124
  }
91
- function u(e) {
125
+ function v(e) {
92
126
  return e.not ? "var(--synapse-error)" : e.combinator === "OR" ? "var(--synapse-warning)" : "var(--synapse-primary-action-color)";
93
127
  }
94
- function d(e) {
128
+ function y(e) {
95
129
  return `${e.not ? "excluded " : ""}${e.combinator} filter group`;
96
130
  }
97
131
  //#endregion
98
- export { l as FilterGroupNode };
132
+ export { _ as FilterGroupNode };
99
133
 
100
134
  //# sourceMappingURL=FilterGroupNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterGroupNode.js","names":[],"sources":["../../../src/components/QueryBuilder/FilterGroupNode.tsx"],"sourcesContent":["import { Button, ToggleButton, ToggleButtonGroup } from '@mui/material'\nimport { CSSProperties } from 'react'\nimport { FilterConditionRow } from './FilterConditionRow'\nimport styles from './FilterGroupNode.module.scss'\nimport { useQueryBuilderInternalContext } from './QueryBuilderInternalContext'\nimport { isQBGroup, QBGroup } from './QueryBuilderTypes'\n\nexport type FilterGroupNodeProps = {\n group: QBGroup\n isRoot?: boolean\n}\n\nexport function FilterGroupNode(props: FilterGroupNodeProps) {\n const { group, isRoot = false } = props\n const {\n addConditionAt,\n addChildGroupAt,\n clearGroupAt,\n updateGroupAt,\n removeGroupAt,\n } = useQueryBuilderInternalContext()\n\n const style: CSSProperties = {\n ['--qb-accent-color' as string]: accentColorFor(group),\n ['--qb-pill-color' as string]: accentColorFor(group),\n }\n\n return (\n <div\n className={`${styles.group} ${isRoot ? '' : styles.nested}`}\n style={style}\n role=\"group\"\n aria-label={groupAriaLabel(group)}\n data-qb-node-id={group.id}\n >\n <div className={styles.header}>\n <ToggleButtonGroup\n size=\"small\"\n className={styles.combinator}\n exclusive\n value={group.combinator}\n aria-label=\"Boolean combinator\"\n onChange={(_event, next) => {\n if (next == null) return\n updateGroupAt(group.id, { combinator: next })\n }}\n >\n <ToggleButton value=\"AND\" aria-label=\"AND\">\n AND\n </ToggleButton>\n <ToggleButton value=\"OR\" aria-label=\"OR\">\n OR\n </ToggleButton>\n </ToggleButtonGroup>\n\n <ToggleButton\n size=\"small\"\n value=\"not\"\n selected={group.not}\n className={styles.notToggle}\n aria-label=\"Negate this group\"\n aria-pressed={group.not}\n onChange={() => updateGroupAt(group.id, { not: !group.not })}\n >\n Exclude (NOT)\n </ToggleButton>\n\n <div className={styles.actions}>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => addConditionAt(group.id)}\n >\n + Condition\n </Button>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => addChildGroupAt(group.id)}\n >\n + Condition Group\n </Button>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => clearGroupAt(group.id)}\n disabled={group.children.length === 0}\n >\n Clear\n </Button>\n {!isRoot && (\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => removeGroupAt(group.id)}\n >\n Delete Condition Group\n </Button>\n )}\n </div>\n </div>\n\n <div className={styles.children}>\n {group.children.length === 0 ? (\n <div className={styles.emptyState}>\n No conditions yet, add one above\n </div>\n ) : (\n group.children.map(child => {\n if (isQBGroup(child)) {\n return <FilterGroupNode key={child.id} group={child} />\n }\n return <FilterConditionRow key={child.id} condition={child} />\n })\n )}\n </div>\n </div>\n )\n}\n\nfunction accentColorFor(group: QBGroup): string {\n if (group.not) return 'var(--synapse-error)'\n if (group.combinator === 'OR') return 'var(--synapse-warning)'\n return 'var(--synapse-primary-action-color)'\n}\n\nfunction groupAriaLabel(group: QBGroup): string {\n const modifier = group.not ? 'excluded ' : ''\n return `${modifier}${group.combinator} filter group`\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,EAAgB,GAA6B;CAC3D,IAAM,EAAE,UAAO,YAAS,OAAU,GAC5B,EACJ,mBACA,oBACA,iBACA,kBACA,qBACE,EAA+B,GAE7B,IAAuB;EAC1B,qBAAgC,EAAe,CAAK;EACpD,mBAA8B,EAAe,CAAK;CACrD;CAEA,OACE,kBAAC,OAAD;EACE,WAAW,GAAG,EAAO,MAAM,GAAG,IAAS,KAAK,EAAO;EAC5C;EACP,MAAK;EACL,cAAY,EAAe,CAAK;EAChC,mBAAiB,EAAM;YALzB,CAOE,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB;IACE,kBAAC,GAAD;KACE,MAAK;KACL,WAAW,EAAO;KAClB,WAAA;KACA,OAAO,EAAM;KACb,cAAW;KACX,WAAW,GAAQ,MAAS;MACtB,KAAQ,QACZ,EAAc,EAAM,IAAI,EAAE,YAAY,EAAK,CAAC;KAC9C;eATF,CAWE,kBAAC,GAAD;MAAc,OAAM;MAAM,cAAW;gBAAM;KAE7B,CAAA,GACd,kBAAC,GAAD;MAAc,OAAM;MAAK,cAAW;gBAAK;KAE3B,CAAA,CACG;;IAEnB,kBAAC,GAAD;KACE,MAAK;KACL,OAAM;KACN,UAAU,EAAM;KAChB,WAAW,EAAO;KAClB,cAAW;KACX,gBAAc,EAAM;KACpB,gBAAgB,EAAc,EAAM,IAAI,EAAE,KAAK,CAAC,EAAM,IAAI,CAAC;eAC5D;IAEa,CAAA;IAEd,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAvB;MACE,kBAAC,GAAD;OACE,WAAW,EAAO;OAClB,MAAK;OACL,eAAe,EAAe,EAAM,EAAE;iBACvC;MAEO,CAAA;MACR,kBAAC,GAAD;OACE,WAAW,EAAO;OAClB,MAAK;OACL,eAAe,EAAgB,EAAM,EAAE;iBACxC;MAEO,CAAA;MACR,kBAAC,GAAD;OACE,WAAW,EAAO;OAClB,MAAK;OACL,eAAe,EAAa,EAAM,EAAE;OACpC,UAAU,EAAM,SAAS,WAAW;iBACrC;MAEO,CAAA;MACP,CAAC,KACA,kBAAC,GAAD;OACE,WAAW,EAAO;OAClB,MAAK;OACL,eAAe,EAAc,EAAM,EAAE;iBACtC;MAEO,CAAA;KAEP;;GACF;MAEL,kBAAC,OAAD;GAAK,WAAW,EAAO;aACpB,EAAM,SAAS,WAAW,IACzB,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAY;GAE9B,CAAA,IAEL,EAAM,SAAS,KAAI,MACb,EAAU,CAAK,IACV,kBAAC,GAAD,EAAgC,OAAO,EAAQ,GAAzB,EAAM,EAAmB,IAEjD,kBAAC,GAAD,EAAmC,WAAW,EAAQ,GAA7B,EAAM,EAAuB,CAC9D;EAEA,CAAA,CACF;;AAET;AAEA,SAAS,EAAe,GAAwB;CAG9C,OAFI,EAAM,MAAY,yBAClB,EAAM,eAAe,OAAa,2BAC/B;AACT;AAEA,SAAS,EAAe,GAAwB;CAE9C,OAAO,GADU,EAAM,MAAM,cAAc,KACtB,EAAM,WAAW;AACxC"}
1
+ {"version":3,"file":"FilterGroupNode.js","names":[],"sources":["../../../src/components/QueryBuilder/FilterGroupNode.tsx"],"sourcesContent":["import { Button, ToggleButton, ToggleButtonGroup } from '@mui/material'\nimport { useForkRef } from '@mui/material/utils'\nimport { pointerIntersection } from '@dnd-kit/collision'\nimport { useDroppable } from '@dnd-kit/react'\nimport { useSortable } from '@dnd-kit/react/sortable'\nimport { CSSProperties } from 'react'\nimport { FilterConditionRow } from './FilterConditionRow'\nimport styles from './FilterGroupNode.module.scss'\nimport { QBDragHandle } from './QBDragHandle'\nimport dragStyles from './queryBuilderDrag.module.scss'\nimport { groupDropZoneData, groupDropZoneId } from './queryBuilderDnd'\nimport { useQueryBuilderInternalContext } from './QueryBuilderInternalContext'\nimport { isQBGroup, QBGroup } from './QueryBuilderTypes'\n\nexport type FilterGroupNodeProps = {\n group: QBGroup\n isRoot?: boolean\n parentGroupId?: string\n index?: number\n /** Nesting level, used to resolve drops into the innermost group. */\n depth?: number\n}\n\nexport function FilterGroupNode(props: FilterGroupNodeProps) {\n const { group, isRoot = false, parentGroupId, index, depth = 0 } = props\n const {\n addConditionAt,\n addChildGroupAt,\n clearGroupAt,\n updateGroupAt,\n removeGroupAt,\n } = useQueryBuilderInternalContext()\n\n // Groups become drop targets only through the `useDroppable` zone below.\n // Keep the sortable's droppable half disabled unless `useQueryBuilderDrag`\n // also resolves sortable targets: for any target the app doesn't reposition\n // in `onDragOver`, dnd-kit's OptimisticSortingPlugin moves the DOM node\n // itself, and React's next commit throws `NotFoundError` on `removeChild`.\n const {\n ref: sortableRef,\n handleRef,\n isDragSource,\n } = useSortable({\n id: group.id,\n index: index ?? 0,\n group: parentGroupId ?? group.id,\n disabled: { draggable: isRoot, droppable: true },\n })\n\n // `useQueryBuilderDrag` identifies the target group by `data.groupId`. Zones\n // nest inside their groups, so the pointer is inside every ancestor of the\n // group it is over; hit-testing by pointer and ranking by depth selects the\n // innermost. `collisionPriority` replaces the ranking a detector returns, so\n // the detector has to be one that reports nothing but pointer hits —\n // otherwise a deeper zone the dragged box merely overlaps outranks the zone\n // the pointer is actually in.\n const { ref: dropZoneRef, isDropTarget } = useDroppable({\n id: groupDropZoneId(group.id),\n data: groupDropZoneData(group.id),\n collisionDetector: pointerIntersection,\n collisionPriority: depth,\n })\n\n // The drag source and the drop zone are the same element.\n const groupRef = useForkRef(sortableRef, dropZoneRef)\n\n const style: CSSProperties = {\n ['--qb-accent-color' as string]: accentColorFor(group),\n ['--qb-pill-color' as string]: accentColorFor(group),\n }\n\n return (\n <div\n ref={groupRef}\n className={`${styles.group} ${isRoot ? '' : styles.nested}${\n isDragSource ? ` ${dragStyles.dragSource}` : ''\n }${isDropTarget ? ` ${styles.dropTarget}` : ''}`}\n style={style}\n role=\"group\"\n aria-label={groupAriaLabel(group)}\n data-qb-node-id={group.id}\n >\n <div className={styles.header}>\n {!isRoot && (\n <QBDragHandle\n handleRef={handleRef}\n label=\"Drag condition group into another condition group\"\n />\n )}\n <ToggleButtonGroup\n size=\"small\"\n className={styles.combinator}\n exclusive\n value={group.combinator}\n aria-label=\"Boolean combinator\"\n onChange={(_event, next) => {\n if (next == null) return\n updateGroupAt(group.id, { combinator: next })\n }}\n >\n <ToggleButton value=\"AND\" aria-label=\"AND\">\n AND\n </ToggleButton>\n <ToggleButton value=\"OR\" aria-label=\"OR\">\n OR\n </ToggleButton>\n </ToggleButtonGroup>\n\n <ToggleButton\n size=\"small\"\n value=\"not\"\n selected={group.not}\n className={styles.notToggle}\n aria-label=\"Negate this group\"\n aria-pressed={group.not}\n onChange={() => updateGroupAt(group.id, { not: !group.not })}\n >\n Exclude (NOT)\n </ToggleButton>\n\n <div className={styles.actions}>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => addConditionAt(group.id)}\n >\n + Condition\n </Button>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => addChildGroupAt(group.id)}\n >\n + Condition Group\n </Button>\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => clearGroupAt(group.id)}\n disabled={group.children.length === 0}\n >\n Clear\n </Button>\n {!isRoot && (\n <Button\n className={styles.actionButton}\n size=\"small\"\n onClick={() => removeGroupAt(group.id)}\n >\n Delete Condition Group\n </Button>\n )}\n </div>\n </div>\n\n <div className={styles.children}>\n {group.children.length === 0 ? (\n <div className={styles.emptyState}>\n No conditions yet, add one above\n </div>\n ) : (\n group.children.map((child, childIndex) => {\n if (isQBGroup(child)) {\n return (\n <FilterGroupNode\n key={child.id}\n group={child}\n parentGroupId={group.id}\n index={childIndex}\n depth={depth + 1}\n />\n )\n }\n return (\n <FilterConditionRow\n key={child.id}\n condition={child}\n parentGroupId={group.id}\n index={childIndex}\n />\n )\n })\n )}\n </div>\n </div>\n )\n}\n\nfunction accentColorFor(group: QBGroup): string {\n if (group.not) return 'var(--synapse-error)'\n if (group.combinator === 'OR') return 'var(--synapse-warning)'\n return 'var(--synapse-primary-action-color)'\n}\n\nfunction groupAriaLabel(group: QBGroup): string {\n const modifier = group.not ? 'excluded ' : ''\n return `${modifier}${group.combinator} filter group`\n}\n"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import './FilterGroupNode.css';var e = {
2
- group: "_group_7cqi2_1",
3
- nested: "_nested_7cqi2_7",
4
- header: "_header_7cqi2_12",
5
- combinator: "_combinator_7cqi2_20",
6
- notToggle: "_notToggle_7cqi2_39",
7
- actions: "_actions_7cqi2_53",
8
- actionButton: "_actionButton_7cqi2_60",
9
- children: "_children_7cqi2_68",
10
- emptyState: "_emptyState_7cqi2_74"
2
+ group: "_group_ryxud_1",
3
+ nested: "_nested_ryxud_7",
4
+ dropTarget: "_dropTarget_ryxud_11",
5
+ header: "_header_ryxud_16",
6
+ combinator: "_combinator_ryxud_24",
7
+ notToggle: "_notToggle_ryxud_43",
8
+ actions: "_actions_ryxud_57",
9
+ actionButton: "_actionButton_ryxud_64",
10
+ children: "_children_ryxud_72",
11
+ emptyState: "_emptyState_ryxud_78"
11
12
  };
12
13
  //#endregion
13
14
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"FilterGroupNode.module.js","names":[],"sources":["../../../src/components/QueryBuilder/FilterGroupNode.module.scss"],"sourcesContent":[".group {\n position: relative;\n padding: 8px 0 8px 16px;\n border-left: 2px solid\n var(--qb-accent-color, var(--synapse-primary-action-color));\n border-radius: 2px 0 0 2px;\n\n &.nested {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.combinator :global(.MuiToggleButton-root) {\n text-transform: none;\n padding: 2px 12px;\n min-width: 44px;\n font-weight: 700;\n border-color: var(--synapse-gray-dark);\n color: var(--synapse-gray-regular);\n}\n\n.combinator :global(.MuiToggleButton-root.Mui-selected) {\n background-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n color: white;\n border-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n}\n\n.combinator :global(.MuiToggleButton-root.Mui-selected:hover) {\n background-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n}\n\n.notToggle {\n text-transform: none;\n padding: 2px 12px;\n border-color: var(--synapse-gray-dark);\n color: var(--synapse-gray-regular);\n font-weight: 600;\n font-size: 13px;\n\n &:global(.Mui-selected),\n &:global(.Mui-selected:hover) {\n background-color: var(--synapse-error);\n color: white;\n border-color: var(--synapse-error);\n }\n}\n\n.actions {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n}\n\n.actionButton {\n text-transform: none;\n padding: 2px 8px;\n min-width: 0;\n font-weight: 500;\n color: var(--synapse-primary-action-color);\n}\n\n.children {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.emptyState {\n padding: 8px 4px;\n color: var(--synapse-gray-deemphasized);\n font-style: italic;\n font-size: 13px;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"FilterGroupNode.module.js","names":[],"sources":["../../../src/components/QueryBuilder/FilterGroupNode.module.scss"],"sourcesContent":[".group {\n position: relative;\n padding: 8px 0 8px 16px;\n border-left: 2px solid\n var(--qb-accent-color, var(--synapse-primary-action-color));\n border-radius: 2px 0 0 2px;\n\n &.nested {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n // Groups are the only drop targets, so this marks which one a release\n // would land in. The dragged node has already moved here by the time it\n // shows, so the highlight reads as confirmation rather than a preview.\n &.dropTarget {\n border-radius: 3px;\n box-shadow: inset 0 0 0 2px\n var(--qb-accent-color, var(--synapse-primary-action-color));\n }\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.combinator :global(.MuiToggleButton-root) {\n text-transform: none;\n padding: 2px 12px;\n min-width: 44px;\n font-weight: 700;\n border-color: var(--synapse-gray-dark);\n color: var(--synapse-gray-regular);\n}\n\n.combinator :global(.MuiToggleButton-root.Mui-selected) {\n background-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n color: white;\n border-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n}\n\n.combinator :global(.MuiToggleButton-root.Mui-selected:hover) {\n background-color: var(--qb-accent-color, var(--synapse-primary-action-color));\n}\n\n.notToggle {\n text-transform: none;\n padding: 2px 12px;\n border-color: var(--synapse-gray-dark);\n color: var(--synapse-gray-regular);\n font-weight: 600;\n font-size: 13px;\n\n &:global(.Mui-selected),\n &:global(.Mui-selected:hover) {\n background-color: var(--synapse-error);\n color: white;\n border-color: var(--synapse-error);\n }\n}\n\n.actions {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n}\n\n.actionButton {\n text-transform: none;\n padding: 2px 8px;\n min-width: 0;\n font-weight: 500;\n color: var(--synapse-primary-action-color);\n}\n\n.children {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.emptyState {\n padding: 8px 4px;\n color: var(--synapse-gray-deemphasized);\n font-style: italic;\n font-size: 13px;\n}\n"],"mappings":""}
@@ -9,6 +9,15 @@
9
9
  margin-top: 4px;
10
10
  margin-bottom: 4px;
11
11
  }
12
+
13
+ // Groups are the only drop targets, so this marks which one a release
14
+ // would land in. The dragged node has already moved here by the time it
15
+ // shows, so the highlight reads as confirmation rather than a preview.
16
+ &.dropTarget {
17
+ border-radius: 3px;
18
+ box-shadow: inset 0 0 0 2px
19
+ var(--qb-accent-color, var(--synapse-primary-action-color));
20
+ }
12
21
  }
13
22
 
14
23
  .header {
@@ -0,0 +1,10 @@
1
+ import { Ref } from 'react';
2
+ export type QBDragHandleProps = {
3
+ /** `handleRef` from `useSortable`, which binds the drag sensor here. */
4
+ handleRef: Ref<HTMLButtonElement>;
5
+ /** Names the drag for both the tooltip and the accessible name. */
6
+ label: string;
7
+ };
8
+ /** The grip that starts a drag on a condition or a condition group. */
9
+ export declare function QBDragHandle(props: QBDragHandleProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=QBDragHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QBDragHandle.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/QBDragHandle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAG3B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wEAAwE;IACxE,SAAS,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACjC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAcpD"}
@@ -0,0 +1,22 @@
1
+ import e from "./queryBuilderDrag.module.js";
2
+ import { IconButton as t, Tooltip as n } from "@mui/material";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ import i from "@mui/icons-material/DragIndicator";
5
+ //#region src/components/QueryBuilder/QBDragHandle.tsx
6
+ function a(a) {
7
+ let { handleRef: o, label: s } = a;
8
+ return /* @__PURE__ */ r(n, {
9
+ title: s,
10
+ children: /* @__PURE__ */ r(t, {
11
+ ref: o,
12
+ size: "small",
13
+ className: e.dragHandle,
14
+ "aria-label": s,
15
+ children: /* @__PURE__ */ r(i, { fontSize: "small" })
16
+ })
17
+ });
18
+ }
19
+ //#endregion
20
+ export { a as QBDragHandle };
21
+
22
+ //# sourceMappingURL=QBDragHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QBDragHandle.js","names":[],"sources":["../../../src/components/QueryBuilder/QBDragHandle.tsx"],"sourcesContent":["import DragIndicatorIcon from '@mui/icons-material/DragIndicator'\nimport { IconButton, Tooltip } from '@mui/material'\nimport { Ref } from 'react'\nimport styles from './queryBuilderDrag.module.scss'\n\nexport type QBDragHandleProps = {\n /** `handleRef` from `useSortable`, which binds the drag sensor here. */\n handleRef: Ref<HTMLButtonElement>\n /** Names the drag for both the tooltip and the accessible name. */\n label: string\n}\n\n/** The grip that starts a drag on a condition or a condition group. */\nexport function QBDragHandle(props: QBDragHandleProps) {\n const { handleRef, label } = props\n return (\n <Tooltip title={label}>\n <IconButton\n ref={handleRef}\n size=\"small\"\n className={styles.dragHandle}\n aria-label={label}\n >\n <DragIndicatorIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n )\n}\n"],"mappings":";;;;;AAaA,SAAgB,EAAa,GAA0B;CACrD,IAAM,EAAE,cAAW,aAAU;CAC7B,OACE,kBAAC,GAAD;EAAS,OAAO;YACd,kBAAC,GAAD;GACE,KAAK;GACL,MAAK;GACL,WAAW,EAAO;GAClB,cAAY;aAEZ,kBAAC,GAAD,EAAmB,UAAS,QAAS,CAAA;EAC3B,CAAA;CACL,CAAA;AAEb"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilderControls.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/QueryBuilderControls.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAe,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAI1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,iEAAiE;IACjE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACpB,2DAA2D;IAC3D,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA+KpE"}
1
+ {"version":3,"file":"QueryBuilderControls.d.ts","sourceRoot":"","sources":["../../../src/components/QueryBuilder/QueryBuilderControls.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAe,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAI1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,iEAAiE;IACjE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IACpB,2DAA2D;IAC3D,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAkLpE"}
@@ -3,22 +3,24 @@ import { useQueryContext as t } from "../QueryContext/QueryContext.js";
3
3
  import "../QueryContext/index.js";
4
4
  import { useQueryVisualizationContext as n } from "../QueryVisualizationWrapper/QueryVisualizationContext.js";
5
5
  import "../QueryVisualizationWrapper/index.js";
6
- import { QueryBuilderInternalContextProvider as r } from "./QueryBuilderInternalContext.js";
7
- import { addChildGroup as i, addConditionToGroup as a, clearGroup as o, defaultQBGroup as s, removeNode as c, updateCondition as l, updateGroup as u } from "./queryBuilderOperations.js";
8
- import { FilterGroupNode as d } from "./FilterGroupNode.js";
9
- import { qbNodeToApiFilter as f } from "./queryBuilderTranslation.js";
10
- import { qbTreeToReadable as p } from "./qbTreeToReadable.js";
11
- import m from "./QueryBuilderControls.module.js";
12
- import { useQBCombinedSql as h } from "./useQBCombinedSql.js";
13
- import { useQBFacetSourceMetadata as g } from "./useQBFacetSourceMetadata.js";
14
- import { useCallback as _, useMemo as v, useState as y } from "react";
15
- import { Button as b, ToggleButton as x, ToggleButtonGroup as S } from "@mui/material";
16
- import { jsx as C, jsxs as w } from "react/jsx-runtime";
6
+ import { addChildGroup as r, addConditionToGroup as i, clearGroup as a, defaultQBGroup as o, removeNode as s, updateCondition as c, updateGroup as l } from "./queryBuilderOperations.js";
7
+ import { qbNodeToApiFilter as u } from "./queryBuilderTranslation.js";
8
+ import { useQueryBuilderDrag as d } from "./queryBuilderDnd.js";
9
+ import { useQBCombinedSql as f } from "./useQBCombinedSql.js";
10
+ import { useQBFacetSourceMetadata as p } from "./useQBFacetSourceMetadata.js";
11
+ import { QueryBuilderInternalContextProvider as m } from "./QueryBuilderInternalContext.js";
12
+ import { FilterGroupNode as h } from "./FilterGroupNode.js";
13
+ import { qbTreeToReadable as g } from "./qbTreeToReadable.js";
14
+ import _ from "./QueryBuilderControls.module.js";
15
+ import { useCallback as v, useMemo as y, useState as b } from "react";
16
+ import { Button as x, ToggleButton as S, ToggleButtonGroup as C } from "@mui/material";
17
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
18
+ import { DragDropProvider as E } from "@dnd-kit/react";
17
19
  //#region src/components/QueryBuilder/QueryBuilderControls.tsx
18
- function T(T) {
19
- let { tree: E, onTreeChange: D, onlyFacetedColumns: O = !1 } = T, { columnModels: k, facetResults: A } = g(), { executeQueryRequest: j } = t(), M = E ?? s(), N = _(() => {
20
- let t = f(M);
21
- j((n) => {
20
+ function D(D) {
21
+ let { tree: O, onTreeChange: k, onlyFacetedColumns: A = !1 } = D, { columnModels: j, facetResults: M } = p(), { executeQueryRequest: N } = t(), P = O ?? o(), F = v(() => {
22
+ let t = u(P);
23
+ N((n) => {
22
24
  let r = (n.query.additionalFilters ?? []).filter((t) => !e(t)), i = t ? [...r, t] : r;
23
25
  return {
24
26
  ...n,
@@ -28,111 +30,114 @@ function T(T) {
28
30
  }
29
31
  };
30
32
  });
31
- }, [M, j]), { getColumnDisplayName: P } = n(), [F, I] = y("plain-english"), L = _((e) => {
32
- D(a(M, e, null, null));
33
- }, [M, D]), R = _((e) => {
34
- D(i(M, e));
35
- }, [M, D]), z = _((e) => {
36
- D(o(M, e));
37
- }, [M, D]), B = _((e, t) => {
38
- D(u(M, e, t));
39
- }, [M, D]), V = _((e) => {
40
- D(c(M, e));
41
- }, [M, D]), H = _((e, t) => {
42
- D(l(M, e, t));
43
- }, [M, D]), U = _((e) => {
44
- D(c(M, e));
45
- }, [M, D]), W = v(() => ({
46
- columnModels: k,
47
- facetResults: A,
48
- onlyFacetedColumns: O,
49
- getColumnDisplayName: P,
50
- addConditionAt: L,
51
- addChildGroupAt: R,
52
- clearGroupAt: z,
53
- updateGroupAt: B,
54
- removeGroupAt: V,
55
- updateConditionAt: H,
56
- removeConditionAt: U
33
+ }, [P, N]), { getColumnDisplayName: I } = n(), [L, R] = b("plain-english"), z = v((e) => {
34
+ k(i(P, e, null, null));
35
+ }, [P, k]), B = v((e) => {
36
+ k(r(P, e));
37
+ }, [P, k]), V = v((e) => {
38
+ k(a(P, e));
39
+ }, [P, k]), H = v((e, t) => {
40
+ k(l(P, e, t));
41
+ }, [P, k]), U = v((e) => {
42
+ k(s(P, e));
43
+ }, [P, k]), W = v((e, t) => {
44
+ k(c(P, e, t));
45
+ }, [P, k]), G = v((e) => {
46
+ k(s(P, e));
47
+ }, [P, k]), K = d(P, k), q = y(() => ({
48
+ columnModels: j,
49
+ facetResults: M,
50
+ onlyFacetedColumns: A,
51
+ getColumnDisplayName: I,
52
+ addConditionAt: z,
53
+ addChildGroupAt: B,
54
+ clearGroupAt: V,
55
+ updateGroupAt: H,
56
+ removeGroupAt: U,
57
+ updateConditionAt: W,
58
+ removeConditionAt: G
57
59
  }), [
58
- k,
60
+ j,
61
+ M,
59
62
  A,
60
- O,
61
- P,
62
- L,
63
- R,
63
+ I,
64
64
  z,
65
65
  B,
66
66
  V,
67
67
  H,
68
- U
69
- ]), G = v(() => p(M, P), [M, P]), { data: K, isPending: q, error: J } = h(F === "sql" ? M : null);
70
- return /* @__PURE__ */ C(r, {
71
- value: W,
72
- children: /* @__PURE__ */ w("div", {
73
- className: m.root,
74
- children: [
75
- /* @__PURE__ */ w("div", {
76
- className: m.summaryBar,
77
- children: [/* @__PURE__ */ w("div", {
78
- className: m.summaryHeader,
79
- children: [/* @__PURE__ */ C("span", {
80
- className: m.summaryLabel,
81
- children: "Query Summary"
82
- }), /* @__PURE__ */ w(S, {
83
- className: m.summaryModeToggle,
84
- size: "small",
85
- exclusive: !0,
86
- value: F,
87
- onChange: (e, t) => {
88
- t != null && I(t);
89
- },
90
- "aria-label": "Query summary display mode",
91
- children: [/* @__PURE__ */ C(x, {
92
- value: "plain-english",
93
- "aria-label": "Show summary",
94
- children: "Summary"
95
- }), /* @__PURE__ */ C(x, {
96
- value: "sql",
97
- "aria-label": "Show SQL",
98
- children: "SQL"
68
+ U,
69
+ W,
70
+ G
71
+ ]), J = y(() => g(P, I), [P, I]), { data: Y, isPending: X, error: Z } = f(L === "sql" ? P : null);
72
+ return /* @__PURE__ */ w(m, {
73
+ value: q,
74
+ children: /* @__PURE__ */ w(E, {
75
+ ...K,
76
+ children: /* @__PURE__ */ T("div", {
77
+ className: _.root,
78
+ children: [
79
+ /* @__PURE__ */ T("div", {
80
+ className: _.summaryBar,
81
+ children: [/* @__PURE__ */ T("div", {
82
+ className: _.summaryHeader,
83
+ children: [/* @__PURE__ */ w("span", {
84
+ className: _.summaryLabel,
85
+ children: "Query Summary"
86
+ }), /* @__PURE__ */ T(C, {
87
+ className: _.summaryModeToggle,
88
+ size: "small",
89
+ exclusive: !0,
90
+ value: L,
91
+ onChange: (e, t) => {
92
+ t != null && R(t);
93
+ },
94
+ "aria-label": "Query summary display mode",
95
+ children: [/* @__PURE__ */ w(S, {
96
+ value: "plain-english",
97
+ "aria-label": "Show summary",
98
+ children: "Summary"
99
+ }), /* @__PURE__ */ w(S, {
100
+ value: "sql",
101
+ "aria-label": "Show SQL",
102
+ children: "SQL"
103
+ })]
99
104
  })]
105
+ }), /* @__PURE__ */ w("div", {
106
+ className: _.summaryContent,
107
+ "aria-live": "polite",
108
+ "aria-atomic": "true",
109
+ children: L === "plain-english" ? J : Z ? /* @__PURE__ */ T("span", {
110
+ className: _.sqlError,
111
+ children: ["Could not load SQL preview: ", Z.message]
112
+ }) : X ? /* @__PURE__ */ w("span", {
113
+ className: _.sqlPlaceholder,
114
+ children: "Loading SQL…"
115
+ }) : /* @__PURE__ */ w("code", {
116
+ className: _.sqlText,
117
+ children: Y
118
+ })
100
119
  })]
101
- }), /* @__PURE__ */ C("div", {
102
- className: m.summaryContent,
103
- "aria-live": "polite",
104
- "aria-atomic": "true",
105
- children: F === "plain-english" ? G : J ? /* @__PURE__ */ w("span", {
106
- className: m.sqlError,
107
- children: ["Could not load SQL preview: ", J.message]
108
- }) : q ? /* @__PURE__ */ C("span", {
109
- className: m.sqlPlaceholder,
110
- children: "Loading SQL…"
111
- }) : /* @__PURE__ */ C("code", {
112
- className: m.sqlText,
113
- children: K
120
+ }),
121
+ /* @__PURE__ */ w(h, {
122
+ group: P,
123
+ isRoot: !0
124
+ }),
125
+ /* @__PURE__ */ w("div", {
126
+ className: _.applyRow,
127
+ children: /* @__PURE__ */ w(x, {
128
+ variant: "contained",
129
+ color: "primary",
130
+ onClick: F,
131
+ className: _.applyButton,
132
+ children: "Update Results"
114
133
  })
115
- })]
116
- }),
117
- /* @__PURE__ */ C(d, {
118
- group: M,
119
- isRoot: !0
120
- }),
121
- /* @__PURE__ */ C("div", {
122
- className: m.applyRow,
123
- children: /* @__PURE__ */ C(b, {
124
- variant: "contained",
125
- color: "primary",
126
- onClick: N,
127
- className: m.applyButton,
128
- children: "Update Results"
129
134
  })
130
- })
131
- ]
135
+ ]
136
+ })
132
137
  })
133
138
  });
134
139
  }
135
140
  //#endregion
136
- export { T as QueryBuilderControls };
141
+ export { D as QueryBuilderControls };
137
142
 
138
143
  //# sourceMappingURL=QueryBuilderControls.js.map