@quillsql/react 2.13.42 → 2.13.44

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 (257) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +2 -2
  3. package/dist/cjs/ChartBuilder.d.ts +1 -0
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +48 -14
  6. package/dist/cjs/ChartEditor.d.ts +1 -1
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +2 -2
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +37 -26
  11. package/dist/cjs/Dashboard.d.ts +2 -2
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +115 -99
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +871 -1574
  16. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  17. package/dist/cjs/SQLEditor.js +23 -4
  18. package/dist/cjs/Table.d.ts.map +1 -1
  19. package/dist/cjs/components/Chart/CustomReferenceLine.js +1 -1
  20. package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/GaugeChart.js +64 -12
  22. package/dist/cjs/components/Chart/InternalChart.js +1 -1
  23. package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/MapChart.js +65 -7
  25. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  26. package/dist/cjs/components/Dashboard/DashboardFilter.js +3 -3
  27. package/dist/cjs/components/Dashboard/DashboardSection.d.ts +1 -1
  28. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
  29. package/dist/cjs/components/Dashboard/DashboardSection.js +20 -19
  30. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  31. package/dist/cjs/components/Dashboard/MetricComponent.js +1 -0
  32. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  33. package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
  34. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  35. package/dist/cjs/components/QuillMultiSelectWithCombo.js +58 -8
  36. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  37. package/dist/cjs/components/QuillSelect.js +91 -14
  38. package/dist/cjs/components/QuillSelectWithCombo.js +6 -6
  39. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +6 -16
  40. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  41. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +172 -75
  42. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +1 -5
  43. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  44. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -9
  45. package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts +17 -0
  46. package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
  47. package/dist/cjs/components/ReportBuilder/DraggableColumns.js +52 -0
  48. package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts +17 -0
  49. package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
  50. package/dist/cjs/components/ReportBuilder/DraggableItem.js +17 -0
  51. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +6 -12
  52. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  53. package/dist/cjs/components/ReportBuilder/FilterModal.js +29 -20
  54. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +8 -17
  55. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  56. package/dist/cjs/components/ReportBuilder/FilterStack.js +20 -86
  57. package/dist/cjs/components/ReportBuilder/convert.js +6 -6
  58. package/dist/cjs/components/ReportBuilder/ui.d.ts +8 -9
  59. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  60. package/dist/cjs/components/ReportBuilder/ui.js +30 -8
  61. package/dist/cjs/components/ReportBuilder/util.d.ts +2 -5
  62. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  63. package/dist/cjs/components/ReportBuilder/util.js +1 -1
  64. package/dist/cjs/components/UiComponents.d.ts +3 -2
  65. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  66. package/dist/cjs/components/UiComponents.js +13 -13
  67. package/dist/cjs/hooks/useAskQuill.d.ts +1 -1
  68. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  69. package/dist/cjs/hooks/useAskQuill.js +14 -12
  70. package/dist/cjs/hooks/useDashboard.d.ts +5 -3
  71. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  72. package/dist/cjs/hooks/useDashboard.js +8 -6
  73. package/dist/cjs/hooks/useOnClickOutside.d.ts +1 -0
  74. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  75. package/dist/cjs/hooks/useOnClickOutside.js +33 -0
  76. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +2 -1
  77. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  78. package/dist/cjs/internals/ReportBuilder/PivotForm.js +22 -15
  79. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +7 -5
  80. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  81. package/dist/cjs/internals/ReportBuilder/PivotModal.js +100 -48
  82. package/dist/cjs/models/Client.d.ts +4 -0
  83. package/dist/cjs/models/Client.d.ts.map +1 -1
  84. package/dist/cjs/models/Dashboard.d.ts +1 -0
  85. package/dist/cjs/models/Dashboard.d.ts.map +1 -1
  86. package/dist/cjs/models/Report.d.ts +2 -0
  87. package/dist/cjs/models/Report.d.ts.map +1 -1
  88. package/dist/cjs/models/ReportBuilder.d.ts +46 -0
  89. package/dist/cjs/models/ReportBuilder.d.ts.map +1 -0
  90. package/dist/cjs/models/ReportBuilder.js +19 -0
  91. package/dist/cjs/models/Tables.d.ts +5 -5
  92. package/dist/cjs/models/Tables.d.ts.map +1 -1
  93. package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
  94. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/astFilterProcessing.js +301 -97
  96. package/dist/cjs/utils/astProcessing.d.ts +14 -4
  97. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  98. package/dist/cjs/utils/astProcessing.js +38 -4
  99. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  100. package/dist/cjs/utils/dashboard.js +18 -3
  101. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  102. package/dist/cjs/utils/dataFetcher.js +4 -3
  103. package/dist/cjs/utils/filterProcessing.d.ts +2 -11
  104. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  105. package/dist/cjs/utils/filterProcessing.js +4 -16
  106. package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
  107. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  108. package/dist/cjs/utils/pivotConstructor.js +4 -2
  109. package/dist/cjs/utils/pivotProcessing.d.ts +17 -7
  110. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  111. package/dist/cjs/utils/pivotProcessing.js +60 -51
  112. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  113. package/dist/cjs/utils/queryConstructor.js +15 -2
  114. package/dist/cjs/utils/report.d.ts +12 -9
  115. package/dist/cjs/utils/report.d.ts.map +1 -1
  116. package/dist/cjs/utils/report.js +114 -47
  117. package/dist/cjs/utils/reportBuilder.d.ts +88 -0
  118. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -0
  119. package/dist/cjs/utils/reportBuilder.js +395 -0
  120. package/dist/cjs/utils/schema.d.ts +7 -0
  121. package/dist/cjs/utils/schema.d.ts.map +1 -1
  122. package/dist/cjs/utils/schema.js +36 -2
  123. package/dist/cjs/utils/tableProcessing.d.ts +59 -29
  124. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  125. package/dist/cjs/utils/tableProcessing.js +75 -90
  126. package/dist/cjs/utils/ui.d.ts +2 -0
  127. package/dist/cjs/utils/ui.d.ts.map +1 -0
  128. package/dist/cjs/utils/ui.js +18 -0
  129. package/dist/esm/Chart.d.ts.map +1 -1
  130. package/dist/esm/Chart.js +2 -2
  131. package/dist/esm/ChartBuilder.d.ts +1 -0
  132. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  133. package/dist/esm/ChartBuilder.js +49 -15
  134. package/dist/esm/ChartEditor.d.ts +1 -1
  135. package/dist/esm/ChartEditor.d.ts.map +1 -1
  136. package/dist/esm/ChartEditor.js +2 -2
  137. package/dist/esm/Context.d.ts.map +1 -1
  138. package/dist/esm/Context.js +37 -26
  139. package/dist/esm/Dashboard.d.ts +2 -2
  140. package/dist/esm/Dashboard.d.ts.map +1 -1
  141. package/dist/esm/Dashboard.js +119 -103
  142. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  143. package/dist/esm/ReportBuilder.js +878 -1581
  144. package/dist/esm/SQLEditor.d.ts.map +1 -1
  145. package/dist/esm/SQLEditor.js +23 -4
  146. package/dist/esm/Table.d.ts.map +1 -1
  147. package/dist/esm/components/Chart/CustomReferenceLine.js +1 -1
  148. package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -1
  149. package/dist/esm/components/Chart/GaugeChart.js +27 -8
  150. package/dist/esm/components/Chart/InternalChart.js +1 -1
  151. package/dist/esm/components/Chart/MapChart.d.ts.map +1 -1
  152. package/dist/esm/components/Chart/MapChart.js +30 -5
  153. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  154. package/dist/esm/components/Dashboard/DashboardFilter.js +3 -3
  155. package/dist/esm/components/Dashboard/DashboardSection.d.ts +1 -1
  156. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
  157. package/dist/esm/components/Dashboard/DashboardSection.js +21 -20
  158. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  159. package/dist/esm/components/Dashboard/MetricComponent.js +1 -0
  160. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  161. package/dist/esm/components/Dashboard/TableComponent.js +5 -1
  162. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  163. package/dist/esm/components/QuillMultiSelectWithCombo.js +57 -7
  164. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  165. package/dist/esm/components/QuillSelect.js +58 -14
  166. package/dist/esm/components/QuillSelectWithCombo.js +6 -6
  167. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +6 -16
  168. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  169. package/dist/esm/components/ReportBuilder/AddColumnModal.js +173 -76
  170. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +1 -5
  171. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  172. package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -9
  173. package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts +17 -0
  174. package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
  175. package/dist/esm/components/ReportBuilder/DraggableColumns.js +46 -0
  176. package/dist/esm/components/ReportBuilder/DraggableItem.d.ts +17 -0
  177. package/dist/esm/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
  178. package/dist/esm/components/ReportBuilder/DraggableItem.js +14 -0
  179. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +6 -12
  180. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/FilterModal.js +29 -20
  182. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +8 -17
  183. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  184. package/dist/esm/components/ReportBuilder/FilterStack.js +21 -87
  185. package/dist/esm/components/ReportBuilder/convert.js +6 -6
  186. package/dist/esm/components/ReportBuilder/ui.d.ts +8 -9
  187. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  188. package/dist/esm/components/ReportBuilder/ui.js +33 -11
  189. package/dist/esm/components/ReportBuilder/util.d.ts +2 -5
  190. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  191. package/dist/esm/components/ReportBuilder/util.js +1 -1
  192. package/dist/esm/components/UiComponents.d.ts +3 -2
  193. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  194. package/dist/esm/components/UiComponents.js +13 -13
  195. package/dist/esm/hooks/useAskQuill.d.ts +1 -1
  196. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  197. package/dist/esm/hooks/useAskQuill.js +14 -12
  198. package/dist/esm/hooks/useDashboard.d.ts +5 -3
  199. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  200. package/dist/esm/hooks/useDashboard.js +8 -6
  201. package/dist/esm/hooks/useOnClickOutside.d.ts +1 -0
  202. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  203. package/dist/esm/hooks/useOnClickOutside.js +31 -0
  204. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +2 -1
  205. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  206. package/dist/esm/internals/ReportBuilder/PivotForm.js +23 -16
  207. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +7 -5
  208. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  209. package/dist/esm/internals/ReportBuilder/PivotModal.js +101 -49
  210. package/dist/esm/models/Client.d.ts +4 -0
  211. package/dist/esm/models/Client.d.ts.map +1 -1
  212. package/dist/esm/models/Dashboard.d.ts +1 -0
  213. package/dist/esm/models/Dashboard.d.ts.map +1 -1
  214. package/dist/esm/models/Report.d.ts +2 -0
  215. package/dist/esm/models/Report.d.ts.map +1 -1
  216. package/dist/esm/models/ReportBuilder.d.ts +46 -0
  217. package/dist/esm/models/ReportBuilder.d.ts.map +1 -0
  218. package/dist/esm/models/ReportBuilder.js +16 -0
  219. package/dist/esm/models/Tables.d.ts +5 -5
  220. package/dist/esm/models/Tables.d.ts.map +1 -1
  221. package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
  222. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
  223. package/dist/esm/utils/astFilterProcessing.js +300 -97
  224. package/dist/esm/utils/astProcessing.d.ts +14 -4
  225. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  226. package/dist/esm/utils/astProcessing.js +38 -5
  227. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  228. package/dist/esm/utils/dashboard.js +18 -3
  229. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  230. package/dist/esm/utils/dataFetcher.js +4 -3
  231. package/dist/esm/utils/filterProcessing.d.ts +2 -11
  232. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  233. package/dist/esm/utils/filterProcessing.js +4 -15
  234. package/dist/esm/utils/pivotConstructor.d.ts +2 -1
  235. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  236. package/dist/esm/utils/pivotConstructor.js +4 -2
  237. package/dist/esm/utils/pivotProcessing.d.ts +17 -7
  238. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  239. package/dist/esm/utils/pivotProcessing.js +58 -49
  240. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  241. package/dist/esm/utils/queryConstructor.js +15 -2
  242. package/dist/esm/utils/report.d.ts +12 -9
  243. package/dist/esm/utils/report.d.ts.map +1 -1
  244. package/dist/esm/utils/report.js +116 -46
  245. package/dist/esm/utils/reportBuilder.d.ts +88 -0
  246. package/dist/esm/utils/reportBuilder.d.ts.map +1 -0
  247. package/dist/esm/utils/reportBuilder.js +386 -0
  248. package/dist/esm/utils/schema.d.ts +7 -0
  249. package/dist/esm/utils/schema.d.ts.map +1 -1
  250. package/dist/esm/utils/schema.js +34 -1
  251. package/dist/esm/utils/tableProcessing.d.ts +59 -29
  252. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  253. package/dist/esm/utils/tableProcessing.js +71 -86
  254. package/dist/esm/utils/ui.d.ts +2 -0
  255. package/dist/esm/utils/ui.d.ts.map +1 -0
  256. package/dist/esm/utils/ui.js +14 -0
  257. package/package.json +5 -2
@@ -36,10 +36,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ListboxTextInput = void 0;
37
37
  exports.QuillMultiSelectComponentWithCombo = QuillMultiSelectComponentWithCombo;
38
38
  const jsx_runtime_1 = require("react/jsx-runtime");
39
- const hooks_1 = require("../hooks");
39
+ const useOnClickOutside_1 = __importStar(require("../hooks/useOnClickOutside"));
40
40
  const UiComponents_1 = require("./UiComponents");
41
41
  const react_1 = __importStar(require("react"));
42
42
  const Context_1 = require("../Context");
43
+ const react_dom_1 = require("react-dom");
44
+ const ui_1 = require("../utils/ui");
43
45
  /**
44
46
  * A robust select component that implements the new minimal Select interface.
45
47
  */
@@ -52,6 +54,9 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
52
54
  const debounceTimeoutId = (0, react_1.useRef)(null);
53
55
  const [searchQuery, setSearchQuery] = react_1.default.useState('');
54
56
  const [exceedsLimit, setExceedsLimit] = (0, react_1.useState)(false);
57
+ const [popoverPosition, setPopoverPosition] = (0, react_1.useState)(undefined);
58
+ const [z, setZ] = (0, react_1.useState)(10);
59
+ const scrollableParentRef = (0, react_1.useRef)(document.body);
55
60
  const selectAllRef = (0, react_1.useRef)(null);
56
61
  let CheckboxState;
57
62
  (function (CheckboxState) {
@@ -107,7 +112,7 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
107
112
  setExceedsLimit(false);
108
113
  }
109
114
  }, [options]);
110
- (0, hooks_1.useOnClickOutside)(modalRef, (event) => {
115
+ (0, useOnClickOutside_1.default)(modalRef, (event) => {
111
116
  if (!buttonRef.current?.contains(event.target))
112
117
  setShowModal(false);
113
118
  }, showModal);
@@ -176,6 +181,47 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
176
181
  const nullLabel = (0, react_1.useMemo)(() => {
177
182
  return filteredItems.some((item) => item.value === '-') ? 'None' : '-';
178
183
  }, [filteredItems]);
184
+ const updatePosition = () => {
185
+ if (buttonRef.current) {
186
+ requestAnimationFrame(() => {
187
+ const rect = buttonRef?.current?.getBoundingClientRect();
188
+ if (rect) {
189
+ const viewportHeight = window.innerHeight;
190
+ // Calculate available space below the element with a 64px bottom margin
191
+ const availableHeight = viewportHeight - rect.bottom - 64;
192
+ setPopoverPosition({
193
+ top: rect.bottom + window.scrollY,
194
+ left: rect.left + window.scrollX,
195
+ width: rect.width,
196
+ maxHeight: availableHeight,
197
+ });
198
+ }
199
+ });
200
+ }
201
+ };
202
+ (0, react_1.useEffect)(() => {
203
+ let resizeObserver;
204
+ let mutationObserver;
205
+ if (showModal && buttonRef.current) {
206
+ updatePosition();
207
+ setZ((0, useOnClickOutside_1.getEffectiveZIndex)(buttonRef.current));
208
+ resizeObserver = new ResizeObserver(() => updatePosition());
209
+ resizeObserver.observe(buttonRef.current);
210
+ mutationObserver = new MutationObserver(() => updatePosition());
211
+ mutationObserver.observe(buttonRef.current, { attributes: true, subtree: true });
212
+ // Track scrolling of the nearest scrollable ancestor
213
+ scrollableParentRef.current = (0, ui_1.getScrollableParent)(buttonRef.current);
214
+ scrollableParentRef.current.addEventListener('scroll', updatePosition, { passive: true });
215
+ const handleResize = () => requestAnimationFrame(updatePosition);
216
+ window.addEventListener('resize', handleResize, { passive: true });
217
+ return () => {
218
+ resizeObserver.disconnect();
219
+ mutationObserver.disconnect();
220
+ scrollableParentRef.current.removeEventListener('scroll', updatePosition);
221
+ window.removeEventListener('resize', handleResize);
222
+ };
223
+ }
224
+ }, [showModal]);
179
225
  return ((0, jsx_runtime_1.jsxs)("div", { style: {
180
226
  position: 'relative',
181
227
  borderRadius: '6px',
@@ -223,9 +269,14 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
223
269
  width: '100%',
224
270
  textAlign: 'left',
225
271
  zIndex: 1,
226
- }, children: selectedOptionsLabel }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && ((0, jsx_runtime_1.jsxs)("div", { style: {
272
+ }, children: selectedOptionsLabel }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && (0, react_dom_1.createPortal)((0, jsx_runtime_1.jsxs)("div", { style: {
227
273
  position: 'absolute',
228
- width: '100%',
274
+ top: `${popoverPosition?.top ?? 0}px`,
275
+ left: `${popoverPosition?.left ?? 0}px`,
276
+ width: `${popoverPosition?.width ?? 0}px`,
277
+ maxHeight: `${Math.max(popoverPosition?.maxHeight ?? 0, 100)}px`,
278
+ minHeight: options.length > 2 ? 120 : options.length * 40,
279
+ visibility: popoverPosition ? 'visible' : 'hidden',
229
280
  display: 'flex',
230
281
  flexDirection: 'column',
231
282
  boxSizing: 'border-box',
@@ -235,13 +286,12 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
235
286
  borderRadius: 6,
236
287
  background: 'white',
237
288
  marginTop: 12,
238
- zIndex: 100,
289
+ zIndex: z,
239
290
  padding: 6,
240
291
  fontFamily: theme?.fontFamily,
241
- maxHeight: '50vh',
242
292
  overflow: 'scroll',
243
293
  fontSize: 14,
244
- }, ref: modalRef, children: [!exceedsLimit && options && options.length > 20 && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(exports.ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
294
+ }, ref: modalRef, "data-portal-ignore": "true", children: [!exceedsLimit && options && options.length > 20 && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(exports.ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
245
295
  setSearchQuery(value);
246
296
  } }), (0, jsx_runtime_1.jsx)("div", { style: {
247
297
  height: 9,
@@ -393,7 +443,7 @@ function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, v
393
443
  textOverflow: 'ellipsis',
394
444
  whiteSpace: 'nowrap',
395
445
  overflow: 'hidden',
396
- }, children: option.label ?? nullLabel })] }, option.value)))] })) : isLoading ? ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(UiComponents_1.LoadingSpinner, {}) })) : null] }))] }));
446
+ }, children: option.label ?? nullLabel })] }, option.value)))] })) : isLoading ? ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(UiComponents_1.LoadingSpinner, {}) })) : null] }), document.body)] }));
397
447
  }
398
448
  const ListboxTextInput = ({ value, onChange, placeholder, }) => {
399
449
  return ((0, jsx_runtime_1.jsxs)("div", { style: {
@@ -1 +1 @@
1
- {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,EAAE,oBAAoB,2CAqPtB"}
1
+ {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,EAAE,oBAAoB,2CA0StB"}
@@ -1,11 +1,46 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.QuillSelectComponent = QuillSelectComponent;
4
37
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const hooks_1 = require("../hooks");
38
+ const useOnClickOutside_1 = __importStar(require("../hooks/useOnClickOutside"));
6
39
  const UiComponents_1 = require("./UiComponents");
7
40
  const react_1 = require("react");
8
41
  const Context_1 = require("../Context");
42
+ const react_dom_1 = require("react-dom");
43
+ const ui_1 = require("../utils/ui");
9
44
  /**
10
45
  * A robust select component that implements the new minimal Select interface.
11
46
  */
@@ -14,7 +49,7 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
14
49
  const [showModal, setShowModal] = (0, react_1.useState)(false);
15
50
  const modalRef = (0, react_1.useRef)(null);
16
51
  const buttonRef = (0, react_1.useRef)(null);
17
- (0, hooks_1.useOnClickOutside)(modalRef, (event) => {
52
+ (0, useOnClickOutside_1.default)(modalRef, (event) => {
18
53
  if (!buttonRef.current?.contains(event.target))
19
54
  setShowModal(false);
20
55
  }, showModal);
@@ -33,6 +68,48 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
33
68
  const nullLabel = (0, react_1.useMemo)(() => {
34
69
  return sortedItems.some((item) => item.value === '-') ? 'None' : '-';
35
70
  }, [sortedItems]);
71
+ const [popoverPosition, setPopoverPosition] = (0, react_1.useState)(undefined);
72
+ const [z, setZ] = (0, react_1.useState)(10);
73
+ const scrollableParentRef = (0, react_1.useRef)(document.body);
74
+ const updatePosition = () => {
75
+ if (buttonRef.current) {
76
+ requestAnimationFrame(() => {
77
+ const rect = buttonRef?.current?.getBoundingClientRect();
78
+ if (rect) {
79
+ const viewportHeight = window.innerHeight;
80
+ const availableHeight = viewportHeight - rect.bottom - 64;
81
+ setPopoverPosition({
82
+ top: rect.bottom + window.scrollY,
83
+ left: rect.left + window.scrollX,
84
+ width: rect.width,
85
+ maxHeight: availableHeight,
86
+ });
87
+ }
88
+ });
89
+ }
90
+ };
91
+ (0, react_1.useEffect)(() => {
92
+ let resizeObserver;
93
+ let mutationObserver;
94
+ if (showModal && buttonRef.current) {
95
+ updatePosition();
96
+ setZ((0, useOnClickOutside_1.getEffectiveZIndex)(buttonRef.current));
97
+ resizeObserver = new ResizeObserver(() => updatePosition());
98
+ resizeObserver.observe(buttonRef.current);
99
+ mutationObserver = new MutationObserver(() => updatePosition());
100
+ mutationObserver.observe(buttonRef.current, { attributes: true, subtree: true });
101
+ scrollableParentRef.current = (0, ui_1.getScrollableParent)(buttonRef.current);
102
+ scrollableParentRef.current.addEventListener('scroll', updatePosition, { passive: true });
103
+ const handleResize = () => requestAnimationFrame(updatePosition);
104
+ window.addEventListener('resize', handleResize, { passive: true });
105
+ return () => {
106
+ resizeObserver.disconnect();
107
+ mutationObserver.disconnect();
108
+ scrollableParentRef.current.removeEventListener('scroll', updatePosition);
109
+ window.removeEventListener('resize', handleResize);
110
+ };
111
+ }
112
+ }, [showModal]);
36
113
  return ((0, jsx_runtime_1.jsxs)("div", { style: {
37
114
  position: 'relative',
38
115
  borderRadius: '6px',
@@ -76,9 +153,14 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
76
153
  textOverflow: 'ellipsis',
77
154
  whiteSpace: 'nowrap',
78
155
  overflow: 'hidden',
79
- }, children: options.find((elem) => elem.value === value)?.label || 'Select' }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && ((0, jsx_runtime_1.jsxs)("div", { style: {
156
+ }, children: options.find((elem) => elem.value === value)?.label || 'Select' }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && (0, react_dom_1.createPortal)((0, jsx_runtime_1.jsxs)("div", { style: {
80
157
  position: 'absolute',
81
- width: '100%',
158
+ top: `${popoverPosition?.top ?? 0}px`,
159
+ left: `${popoverPosition?.left ?? 0}px`,
160
+ width: `${popoverPosition?.width ?? 0}px`,
161
+ maxHeight: `${Math.max(popoverPosition?.maxHeight ?? 0, 100)}px`,
162
+ minHeight: options.length > 2 ? 120 : options.length * 40,
163
+ visibility: popoverPosition ? 'visible' : 'hidden',
82
164
  display: 'flex',
83
165
  flexDirection: 'column',
84
166
  boxSizing: 'border-box',
@@ -88,15 +170,12 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
88
170
  borderRadius: 6,
89
171
  background: 'white',
90
172
  marginTop: 12,
91
- zIndex: 100,
92
- paddingTop: 6,
93
- paddingBottom: 6,
94
- paddingLeft: 6,
95
- paddingRight: 6,
173
+ zIndex: z,
174
+ padding: 6,
96
175
  fontFamily: theme?.fontFamily,
97
- maxHeight: '50vh',
98
176
  overflow: 'scroll',
99
- }, ref: modalRef, children: [!isLoading && (!hideEmptyOption || !options.length) && ((0, jsx_runtime_1.jsxs)("button", { style: {
177
+ fontSize: 14,
178
+ }, ref: modalRef, "data-portal-ignore": "true", children: [!isLoading && (!hideEmptyOption || !options.length) && ((0, jsx_runtime_1.jsxs)("button", { style: {
100
179
  display: 'flex',
101
180
  alignItems: 'center',
102
181
  justifyContent: 'space-between',
@@ -115,7 +194,6 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
115
194
  height: 34,
116
195
  minHeight: 34,
117
196
  }, className: "quill-option", onClick: () => {
118
- // Manually create a synthetic ChangeEvent and pass it to callback
119
197
  const changeEvent = { target: { value: '' } };
120
198
  onChange(changeEvent);
121
199
  setShowModal(false);
@@ -145,7 +223,6 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
145
223
  minHeight: 34,
146
224
  overflow: 'hidden',
147
225
  }, className: "quill-option", onClick: () => {
148
- // Manually create a synthetic ChangeEvent and pass it to callback
149
226
  const changeEvent = { target: { value: option.value } };
150
227
  onChange(changeEvent);
151
228
  setShowModal(false);
@@ -160,5 +237,5 @@ function QuillSelectComponent({ options, value, width, onChange, label, isLoadin
160
237
  textOverflow: 'ellipsis',
161
238
  whiteSpace: 'nowrap',
162
239
  overflow: 'hidden',
163
- }, children: option.label ?? '-' })] }, option.label)))) : ((0, jsx_runtime_1.jsx)(UiComponents_1.LoadingSpinner, {}))] }))] }));
240
+ }, children: option.label ?? '-' })] }, option.label)))) : ((0, jsx_runtime_1.jsx)(UiComponents_1.LoadingSpinner, {}))] }), document.body)] }));
164
241
  }
@@ -55,7 +55,7 @@ function QuillSelectComponentWithCombo({ options, value, width, onChange, label,
55
55
  // Sort null to top
56
56
  if (searchQuery === '') {
57
57
  return options
58
- .sort((a, b) => {
58
+ ?.sort((a, b) => {
59
59
  if (a.value === null) {
60
60
  return -1;
61
61
  }
@@ -64,13 +64,13 @@ function QuillSelectComponentWithCombo({ options, value, width, onChange, label,
64
64
  }
65
65
  return 0;
66
66
  })
67
- .slice(0, 20);
67
+ ?.slice(0, 20) ?? [];
68
68
  }
69
69
  const uuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
70
70
  const isUuid = options?.[0]?.value?.toString()?.match(uuidRegex);
71
71
  const isNumber = typeof options?.[0]?.value === 'number';
72
72
  return options
73
- .filter((option) => {
73
+ ?.filter((option) => {
74
74
  if (!option) {
75
75
  return false;
76
76
  }
@@ -84,7 +84,7 @@ function QuillSelectComponentWithCombo({ options, value, width, onChange, label,
84
84
  .replace(/\s+/g, '')
85
85
  .includes(searchQuery.toLowerCase().replace(/\s+/g, '')) : false);
86
86
  })
87
- .sort((a, b) => {
87
+ ?.sort((a, b) => {
88
88
  if (a.value === null) {
89
89
  return -1;
90
90
  }
@@ -93,13 +93,13 @@ function QuillSelectComponentWithCombo({ options, value, width, onChange, label,
93
93
  }
94
94
  return 0;
95
95
  })
96
- .slice(0, 20);
96
+ ?.slice(0, 20) ?? [];
97
97
  }, [options, searchQuery]);
98
98
  const nullLabel = (0, react_1.useMemo)(() => {
99
99
  return filteredItems.some((item) => item.value === '-') ? 'None' : '-';
100
100
  }, [filteredItems]);
101
101
  const selectedLabel = (0, react_1.useMemo)(() => {
102
- const selectedOption = options.find((elem) => elem.value === value);
102
+ const selectedOption = options?.find((elem) => elem.value === value);
103
103
  return selectedOption && selectedOption.label == '-'
104
104
  ? nullLabel
105
105
  : (selectedOption?.label ?? 'Select');
@@ -1,21 +1,11 @@
1
1
  import React from 'react';
2
2
  import { TextInputComponentProps } from '../UiComponents';
3
- export default function AddColumnModal({ onSave, orderedColumnNames, setOrderedColumnNames, selectedColumns, setSelectedColumns, isSelectedAllColumns, clearAllState, nameToColumn, baseAst, setBaseAst, pivot, initialTableName, defaultAST, defaultTable, setPivot, schemaLoading, TextInputComponent, SelectColumn, SecondaryButton, Button, ColumnSearchEmptyState, LoadingComponent, }: {
4
- onSave: any;
5
- orderedColumnNames: any;
6
- setOrderedColumnNames: any;
7
- selectedColumns: any;
8
- setSelectedColumns: any;
9
- isSelectedAllColumns: any;
10
- clearAllState: any;
11
- nameToColumn: any;
12
- baseAst: any;
13
- setBaseAst: any;
14
- pivot: any;
15
- initialTableName: any;
16
- defaultAST: any;
17
- defaultTable: any;
18
- setPivot: any;
3
+ import { Table } from '../../models/Tables';
4
+ import { ReportBuilderColumn, ReportBuilderTable } from '../../models/ReportBuilder';
5
+ export default function AddColumnModal({ onSave, selectedColumns, schema, schemaLoading, TextInputComponent, SelectColumn, SecondaryButton, Button, ColumnSearchEmptyState, LoadingComponent, }: {
6
+ onSave: (newTables: ReportBuilderTable[], newColumns: ReportBuilderColumn[]) => void;
7
+ selectedColumns: ReportBuilderColumn[];
8
+ schema: Table[];
19
9
  schemaLoading?: boolean;
20
10
  TextInputComponent: ((props: TextInputComponentProps) => JSX.Element) | React.ForwardRefExoticComponent<TextInputComponentProps & React.RefAttributes<HTMLInputElement>>;
21
11
  SelectColumn: (props: {
@@ -1 +1 @@
1
- {"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAiB3D,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,oBAAoB,EAAE,GAAG,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CAsNA"}
1
+ {"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAiBpE,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EAEN,eAAe,EACf,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,CACN,SAAS,EAAE,kBAAkB,EAAE,EAC/B,UAAU,EAAE,mBAAmB,EAAE,KAC9B,IAAI,CAAC;IAEV,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CA0UA"}