@quillsql/react 2.11.15 → 2.11.17

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 (209) hide show
  1. package/dist/cjs/Chart.d.ts +117 -42
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +44 -18
  4. package/dist/cjs/ChartBuilder.d.ts +195 -28
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +124 -63
  7. package/dist/cjs/ChartEditor.d.ts +114 -18
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +47 -15
  10. package/dist/cjs/Dashboard.d.ts +148 -90
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +46 -152
  13. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  14. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +5 -2
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
  17. package/dist/cjs/QuillProvider.d.ts +105 -2
  18. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  19. package/dist/cjs/QuillProvider.js +59 -0
  20. package/dist/cjs/ReportBuilder.d.ts +188 -34
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +551 -426
  23. package/dist/cjs/SQLEditor.d.ts +158 -29
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +52 -32
  26. package/dist/cjs/Table.d.ts +119 -15
  27. package/dist/cjs/Table.d.ts.map +1 -1
  28. package/dist/cjs/Table.js +37 -6
  29. package/dist/cjs/TableChart.d.ts.map +1 -1
  30. package/dist/cjs/TableChart.js +0 -194
  31. package/dist/cjs/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  32. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -0
  33. package/dist/cjs/{BarList.js → components/Chart/BarList.js} +1 -1
  34. package/dist/cjs/components/Chart/LineChart.d.ts +2 -3
  35. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  36. package/dist/cjs/components/Chart/LineChart.js +3 -3
  37. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -0
  38. package/dist/cjs/{PieChart.js → components/Chart/PieChart.js} +1 -1
  39. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +2 -1
  40. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  41. package/dist/cjs/components/Dashboard/ChartComponent.js +6 -7
  42. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +22 -0
  43. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  44. package/dist/cjs/components/Dashboard/DashboardFilter.js +75 -0
  45. package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
  46. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  47. package/dist/cjs/components/Dashboard/DataLoader.js +1 -1
  48. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +2 -12
  49. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  50. package/dist/cjs/components/Dashboard/MetricComponent.js +39 -17
  51. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  52. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  53. package/dist/cjs/components/Dashboard/TableComponent.js +6 -9
  54. package/dist/cjs/components/QuillSelect.d.ts +4 -1
  55. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  56. package/dist/cjs/components/QuillSelect.js +13 -8
  57. package/dist/cjs/components/QuillTable.d.ts +16 -2
  58. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  59. package/dist/cjs/components/QuillTable.js +4 -4
  60. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +30 -1
  61. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  62. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +33 -14
  63. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +25 -2
  64. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  65. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +19 -19
  66. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +22 -2
  67. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  68. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +18 -20
  69. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  70. package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -1
  71. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  72. package/dist/cjs/components/ReportBuilder/convert.js +40 -20
  73. package/dist/cjs/components/ReportBuilder/pivot.d.ts +2 -1
  74. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -1
  75. package/dist/cjs/components/ReportBuilder/ui.d.ts +83 -19
  76. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  77. package/dist/cjs/components/ReportBuilder/ui.js +68 -121
  78. package/dist/cjs/components/ReportBuilder/util.d.ts +3 -1
  79. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  80. package/dist/cjs/components/ReportBuilder/util.js +34 -8
  81. package/dist/cjs/components/UiComponents.d.ts +98 -97
  82. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  83. package/dist/cjs/components/UiComponents.js +132 -112
  84. package/dist/cjs/hooks/index.d.ts +1 -0
  85. package/dist/cjs/hooks/index.d.ts.map +1 -1
  86. package/dist/cjs/hooks/index.js +3 -1
  87. package/dist/cjs/hooks/useTheme.d.ts +7 -0
  88. package/dist/cjs/hooks/useTheme.d.ts.map +1 -0
  89. package/dist/cjs/hooks/useTheme.js +12 -0
  90. package/dist/cjs/index.d.ts +10 -2
  91. package/dist/cjs/index.d.ts.map +1 -1
  92. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  93. package/dist/cjs/internals/ReportBuilder/PivotList.js +10 -10
  94. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +29 -14
  95. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  96. package/dist/cjs/internals/ReportBuilder/PivotModal.js +73 -49
  97. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  98. package/dist/cjs/utils/dataFetcher.js +2 -0
  99. package/dist/cjs/utils/width.d.ts +12 -0
  100. package/dist/cjs/utils/width.d.ts.map +1 -0
  101. package/dist/cjs/utils/width.js +25 -0
  102. package/dist/esm/Chart.d.ts +117 -42
  103. package/dist/esm/Chart.d.ts.map +1 -1
  104. package/dist/esm/Chart.js +45 -19
  105. package/dist/esm/ChartBuilder.d.ts +195 -28
  106. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  107. package/dist/esm/ChartBuilder.js +124 -63
  108. package/dist/esm/ChartEditor.d.ts +114 -18
  109. package/dist/esm/ChartEditor.d.ts.map +1 -1
  110. package/dist/esm/ChartEditor.js +51 -19
  111. package/dist/esm/Dashboard.d.ts +148 -90
  112. package/dist/esm/Dashboard.d.ts.map +1 -1
  113. package/dist/esm/Dashboard.js +49 -153
  114. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +21 -1
  115. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  116. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +6 -3
  117. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  118. package/dist/esm/QuillProvider.d.ts +105 -2
  119. package/dist/esm/QuillProvider.d.ts.map +1 -1
  120. package/dist/esm/QuillProvider.js +59 -0
  121. package/dist/esm/ReportBuilder.d.ts +188 -34
  122. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  123. package/dist/esm/ReportBuilder.js +553 -428
  124. package/dist/esm/SQLEditor.d.ts +158 -29
  125. package/dist/esm/SQLEditor.d.ts.map +1 -1
  126. package/dist/esm/SQLEditor.js +53 -33
  127. package/dist/esm/Table.d.ts +119 -15
  128. package/dist/esm/Table.d.ts.map +1 -1
  129. package/dist/esm/Table.js +38 -7
  130. package/dist/esm/TableChart.d.ts.map +1 -1
  131. package/dist/esm/TableChart.js +0 -194
  132. package/dist/esm/{BarList.d.ts → components/Chart/BarList.d.ts} +1 -1
  133. package/dist/esm/components/Chart/BarList.d.ts.map +1 -0
  134. package/dist/esm/{BarList.js → components/Chart/BarList.js} +1 -1
  135. package/dist/esm/components/Chart/LineChart.d.ts +2 -3
  136. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  137. package/dist/esm/components/Chart/LineChart.js +3 -3
  138. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -0
  139. package/dist/esm/{PieChart.js → components/Chart/PieChart.js} +1 -1
  140. package/dist/esm/components/Dashboard/ChartComponent.d.ts +2 -1
  141. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  142. package/dist/esm/components/Dashboard/ChartComponent.js +5 -6
  143. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +22 -0
  144. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -0
  145. package/dist/esm/components/Dashboard/DashboardFilter.js +71 -0
  146. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  147. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  148. package/dist/esm/components/Dashboard/DataLoader.js +1 -1
  149. package/dist/esm/components/Dashboard/MetricComponent.d.ts +2 -12
  150. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/MetricComponent.js +39 -17
  152. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  153. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  154. package/dist/esm/components/Dashboard/TableComponent.js +6 -9
  155. package/dist/esm/components/QuillSelect.d.ts +4 -1
  156. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  157. package/dist/esm/components/QuillSelect.js +14 -9
  158. package/dist/esm/components/QuillTable.d.ts +16 -2
  159. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  160. package/dist/esm/components/QuillTable.js +4 -4
  161. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +30 -1
  162. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  163. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +34 -15
  164. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +25 -2
  165. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  166. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +20 -20
  167. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +22 -2
  168. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  169. package/dist/esm/components/ReportBuilder/AddSortPopover.js +20 -22
  170. package/dist/esm/components/ReportBuilder/bigDateMap.js +1 -1
  171. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -1
  172. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  173. package/dist/esm/components/ReportBuilder/convert.js +33 -13
  174. package/dist/esm/components/ReportBuilder/pivot.d.ts +2 -1
  175. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -1
  176. package/dist/esm/components/ReportBuilder/ui.d.ts +83 -19
  177. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  178. package/dist/esm/components/ReportBuilder/ui.js +67 -119
  179. package/dist/esm/components/ReportBuilder/util.d.ts +3 -1
  180. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/util.js +31 -7
  182. package/dist/esm/components/UiComponents.d.ts +98 -97
  183. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  184. package/dist/esm/components/UiComponents.js +125 -110
  185. package/dist/esm/hooks/index.d.ts +1 -0
  186. package/dist/esm/hooks/index.d.ts.map +1 -1
  187. package/dist/esm/hooks/index.js +1 -0
  188. package/dist/esm/hooks/useTheme.d.ts +7 -0
  189. package/dist/esm/hooks/useTheme.d.ts.map +1 -0
  190. package/dist/esm/hooks/useTheme.js +10 -0
  191. package/dist/esm/index.d.ts +10 -2
  192. package/dist/esm/index.d.ts.map +1 -1
  193. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  194. package/dist/esm/internals/ReportBuilder/PivotList.js +10 -10
  195. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +29 -14
  196. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  197. package/dist/esm/internals/ReportBuilder/PivotModal.js +73 -49
  198. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  199. package/dist/esm/utils/dataFetcher.js +2 -0
  200. package/dist/esm/utils/width.d.ts +12 -0
  201. package/dist/esm/utils/width.d.ts.map +1 -0
  202. package/dist/esm/utils/width.js +21 -0
  203. package/package.json +1 -1
  204. package/dist/cjs/BarList.d.ts.map +0 -1
  205. package/dist/cjs/PieChart.d.ts.map +0 -1
  206. package/dist/esm/BarList.d.ts.map +0 -1
  207. package/dist/esm/PieChart.d.ts.map +0 -1
  208. /package/dist/cjs/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
  209. /package/dist/esm/{PieChart.d.ts → components/Chart/PieChart.d.ts} +0 -0
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DashboardFilterModal = exports.ChartBuilderWithModal = exports.dateFormatOptions = exports.numberFormatOptions = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
+ /* eslint-disable no-unused-vars */
8
9
  const react_1 = require("react");
9
10
  const Context_1 = require("./Context");
10
11
  const dataFetcher_1 = require("./utils/dataFetcher");
@@ -14,8 +15,8 @@ const PivotList_1 = require("./internals/ReportBuilder/PivotList");
14
15
  const Chart_1 = __importDefault(require("./Chart"));
15
16
  const UiComponents_1 = require("./components/UiComponents");
16
17
  const merge_1 = require("./utils/merge");
17
- const QuillSelect_1 = require("./components/QuillSelect");
18
18
  const textProcessing_1 = require("./utils/textProcessing");
19
+ const QuillSelect_1 = require("./components/QuillSelect");
19
20
  const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
20
21
  const POSTGRES_DATE_TYPES = [
21
22
  'timestamp',
@@ -143,18 +144,77 @@ const formatOptions = [
143
144
  { value: 'percent', label: 'percent' },
144
145
  { value: 'string', label: 'string' },
145
146
  ];
147
+ /**
148
+ * ### Quill Chart Builder with Modal
149
+ *
150
+ * Renders a ChartBuilder component with a modal.
151
+ *
152
+ * @example
153
+ * ```js
154
+ * // Usage without custom components
155
+ * <ChartBuilder />
156
+ * ```
157
+ *
158
+ * @example
159
+ * ```js
160
+ * // You can also pass your own components
161
+ * <ChartBuilder
162
+ * ButtonComponent={MyButton}
163
+ * SecondaryButtonComponent={MySecondaryButton}
164
+ * />
165
+ * ```
166
+ *
167
+ * ### Chart Builder API
168
+ * @see https://docs.quillsql.com/components/chart-builder#with-modal
169
+ */
146
170
  function ChartBuilderWithModal(props) {
147
- const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
148
- const Modal = props.Modal ?? UiComponents_1.MemoizedModal;
149
- return ((0, jsx_runtime_1.jsx)(Modal, { isOpen: props.isOpen, setIsOpen: props.setIsOpen, onClose: () => props.setIsOpen(false), title: props.title || 'Add to dashboard', style: props.horizontalView
150
- ? {
151
- width: 'calc(100vw - 80px)',
152
- height: 'calc(100vh - 80px)',
153
- }
154
- : {}, theme: theme, children: (0, jsx_runtime_1.jsx)(ChartBuilder, { ...props }) }));
171
+ const parentRef = (0, react_1.useRef)(null);
172
+ const [modalWidth, setModalWidth] = (0, react_1.useState)(200);
173
+ const [modalHeight, setModalHeight] = (0, react_1.useState)(200);
174
+ const { isOpen, setIsOpen, title, isHorizontalView } = props;
175
+ const Modal = props.ModalComponent ?? UiComponents_1.MemoizedModal;
176
+ (0, react_1.useEffect)(() => {
177
+ function handleResize() {
178
+ setModalWidth(window.innerWidth - 80);
179
+ setModalHeight(window.innerHeight - 80);
180
+ }
181
+ handleResize();
182
+ window.addEventListener('resize', handleResize);
183
+ return () => {
184
+ window.removeEventListener('resize', handleResize);
185
+ };
186
+ }, []);
187
+ return ((0, jsx_runtime_1.jsx)("div", { ref: parentRef, children: (0, jsx_runtime_1.jsx)(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
188
+ // For isHorizontalView, use full viewport size minus 80px for padding,
189
+ // otherwise use the default layout method of the modal (contents).
190
+ width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (0, jsx_runtime_1.jsx)(ChartBuilder, { ...props }) }) }));
155
191
  }
156
192
  exports.ChartBuilderWithModal = ChartBuilderWithModal;
157
- function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = QuillSelect_1.QuillSelectComponent, Button = UiComponents_1.MemoizedButton, SecondaryButton = UiComponents_1.MemoizedSecondaryButton, Header = UiComponents_1.MemoizedHeader, Label = UiComponents_1.MemoizedLabel, DeleteButton = UiComponents_1.MemoizedDeleteButton, Text = UiComponents_1.MemoizedText, Popover = UiComponents_1.MemoizedPopover, isOpen, isEditMode = false, horizontalView = false, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, formHeaderStyle, formLabelStyle, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, fields: fieldsProp, dashboardItem = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, }) {
193
+ /**
194
+ * ### Quill Chart Builder
195
+ *
196
+ * A simple form that lets users turn a SQL query into a chart, metric, or table
197
+ * and then add that dashboard item into one of their dashboards.
198
+ *
199
+ * @example
200
+ * ```js
201
+ * // Usage without custom components
202
+ * <ChartBuilder />
203
+ * ```
204
+ *
205
+ * @example
206
+ * ```js
207
+ * // You can also pass your own components
208
+ * <ChartBuilder
209
+ * ButtonComponent={MyButton}
210
+ * SecondaryButtonComponent={MySecondaryButton}
211
+ * />
212
+ * ```
213
+ *
214
+ * ### Chart Builder API
215
+ * @see https://docs.quillsql.com/components/chart-builder
216
+ */
217
+ function ChartBuilder({ TextInputComponent = UiComponents_1.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, HeaderComponent = UiComponents_1.MemoizedHeader, LabelComponent = UiComponents_1.MemoizedLabel, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, TextComponent = UiComponents_1.MemoizedText, PopoverComponent = UiComponents_1.MemoizedPopover, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, fields: fieldsProp, dashboardItem = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, }) {
158
218
  const dateRange = dr || [null, null, null];
159
219
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
160
220
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
@@ -374,6 +434,12 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
374
434
  }
375
435
  const result = await getReferencedTables(client, query, schema, true);
376
436
  setDateFieldOptions(result);
437
+ if (result[0] && result[0].columns[0]) {
438
+ setDefaultDateField({
439
+ table: result[0].name,
440
+ field: result[0].columns[0].name,
441
+ });
442
+ }
377
443
  const allReferencedFields = await getReferencedTables(client, query, schema, false);
378
444
  setAllTables(allReferencedFields.map((table) => table.name));
379
445
  setTableName(result[0]?.name);
@@ -577,7 +643,7 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
577
643
  dashboardDiscrepancyIssues.push(`The ${formData.dashboardName} dashboard is used for comparing date fields. This feature is not applicable to pie charts. We recommend switching to a column or bar chart instead.`);
578
644
  }
579
645
  if (dashboardHasDateFilter &&
580
- (!defaultDateField ||
646
+ ((!defaultDateField.table && !defaultDateField.field) ||
581
647
  (!formData.dateField.field && !formData.dateField.table))) {
582
648
  dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" has a global date filter but this chart doesn't reference any tables with a date field. It is not recommended to add this chart because the global filter cannot be applied.`);
583
649
  }
@@ -661,7 +727,7 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
661
727
  }
662
728
  };
663
729
  if (!schema) {
664
- return;
730
+ return null;
665
731
  }
666
732
  return ((0, jsx_runtime_1.jsxs)("div", { style: { width: '100%', height: '100%', flexGrow: 1 }, children: [(0, jsx_runtime_1.jsxs)("div", { id: "quill-chart-modal", style: {
667
733
  width: '100%',
@@ -670,79 +736,79 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
670
736
  display: 'flex',
671
737
  padding: modalPadding,
672
738
  gap: '20px',
673
- flexDirection: horizontalView ? 'row' : 'column',
739
+ flexDirection: isHorizontalView ? 'row' : 'column',
674
740
  boxSizing: 'border-box',
675
741
  }, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
676
742
  display: 'flex',
677
743
  flexDirection: 'column',
678
744
  gap: '20px',
679
- ...(horizontalView && {
745
+ ...(isHorizontalView && {
680
746
  flexGrow: 1,
681
747
  maxWidth: !isOpen ? '100%' : 'calc(100% - 665px - 20px)', // width of left sidebar plus gap
682
748
  }),
683
- }, children: [(!horizontalView || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsx)(Chart_1.default, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
749
+ }, children: [(!isHorizontalView || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsx)(Chart_1.default, { colors: theme.chartColors, config: { ...formData, rows }, containerStyle: {
684
750
  width: '100%',
685
751
  height: formData.chartType === 'metric'
686
752
  ? 100
687
- : horizontalView
753
+ : isHorizontalView
688
754
  ? '100%'
689
755
  : 400,
690
- ...(horizontalView && { flexGrow: 1 }),
756
+ ...(isHorizontalView && { flexGrow: 1 }),
691
757
  } })),
692
758
  // Make sure to display non-pivoted table when using pivot chart
693
- horizontalView && formData.chartType !== 'table' ? ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
759
+ isHorizontalView && formData.chartType !== 'table' ? ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
694
760
  ...formData,
695
761
  pivot: undefined,
696
762
  chartType: 'table',
697
763
  rows,
698
- rowsPerPage: 20,
764
+ rowsPerPage: 10,
699
765
  }, containerStyle: {
700
766
  height: '100%',
701
767
  width: '100%',
702
768
  flexGrow: 1,
703
- } })) : (horizontalView && ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
769
+ } })) : (isHorizontalView && ((0, jsx_runtime_1.jsx)(Chart_1.default, { config: {
704
770
  ...formData,
705
771
  chartType: 'table',
706
772
  rows,
707
- rowsPerPage: 20,
773
+ rowsPerPage: 10,
708
774
  }, containerStyle: {
709
775
  height: '100%',
710
776
  width: '100%',
711
777
  flexGrow: 1,
712
- } })))] }), (isOpen || !horizontalView) && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
778
+ } })))] }), (isOpen || !isHorizontalView) && ((0, jsx_runtime_1.jsxs)("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
713
779
  display: 'flex',
714
780
  flexDirection: 'column',
715
781
  height: '100%',
716
- ...(horizontalView && {
782
+ ...(isHorizontalView && {
717
783
  minWidth: 665,
718
784
  maxWidth: 665,
719
785
  width: 665,
720
786
  gap: 20,
721
787
  }),
722
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { overflow: 'auto' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Name" }), (0, jsx_runtime_1.jsx)(TextInput, { id: "chart-builder-name", value: formData.name, onChange: (e) => handleChange(e, 'name'), placeholder: "Name", theme: theme })] }), showDashboardDropdown && !destinationDashboard && ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Dashboard" }), (0, jsx_runtime_1.jsx)(Select, { value: formData.dashboardName || '', onChange: async (e) => {
723
- await updateDashboardFilters(e);
724
- handleChange(e, 'dashboardName');
788
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { overflow: 'auto' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'row', gap: 12 }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Name" }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" })] }), showDashboardDropdown && !destinationDashboard && ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Dashboard" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.dashboardName || '', onChange: async (e) => {
789
+ handleChange(e.target.value, 'dashboardName');
790
+ await updateDashboardFilters(e.target.value);
725
791
  }, options: dashboardOptions.map((elem) => ({
726
792
  label: elem.label,
727
793
  value: elem.label,
728
- })), theme: theme })] })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Chart type" }), (0, jsx_runtime_1.jsx)(Select, { value: formData.chartType, onChange: (e) => handleChange(e, 'chartType'),
794
+ })) })] })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Chart type" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
729
795
  // filter out metric for all pivots
730
796
  // filter out bar and pie for row and column pivot
731
- options: getChartTypeOptions(formData), theme: theme })] })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
797
+ options: getChartTypeOptions(formData) })] })] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
732
798
  display: 'flex',
733
799
  flexDirection: 'column',
734
800
  gap: 12,
735
801
  marginTop: 6,
736
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Pivot" }), (0, jsx_runtime_1.jsxs)("div", { style: { fontFamily: theme?.fontFamily }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
802
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsxs)("div", { style: { fontFamily: theme?.fontFamily }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
737
803
  maxWidth: 200,
738
804
  // marginTop: 6,
739
805
  display: 'flex',
740
806
  flexDirection: 'column',
741
- }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: Select, ButtonComponent: Button, SecondaryButtonComponent: SecondaryButton, PopoverComponent: Popover, LabelComponent: Label, TextComponent: Text, HeaderComponent: Header, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot }) }), formData.pivot && ((0, jsx_runtime_1.jsx)("div", { style: {
807
+ }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot }) }), formData.pivot && ((0, jsx_runtime_1.jsx)("div", { style: {
742
808
  // width: 592,
743
809
  paddingRight: 42,
744
810
  maxWidth: 750,
745
- }, children: (0, jsx_runtime_1.jsx)("div", { style: { width: !horizontalView ? divWidth : 'auto' }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: {
811
+ }, children: (0, jsx_runtime_1.jsx)("div", { style: { width: !isHorizontalView ? divWidth : 'auto' }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: {
746
812
  pivot: formData.pivot,
747
813
  rows: selectedPivotTable?.rows,
748
814
  columns: selectedPivotTable?.columns,
@@ -754,29 +820,29 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
754
820
  setPivotValueField(formData.pivot?.valueField);
755
821
  setPivotAggregation(formData.pivot?.aggregationType);
756
822
  setPivotPopUpTitle('Edit Pivot');
757
- }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: Button, HeaderComponent: Header, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: Label, TextComponent: Text }) }) }))] })] }), (0, jsx_runtime_1.jsx)("br", {}), (formData.pivot || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsx)("div", { style: {
823
+ }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), (0, jsx_runtime_1.jsx)("br", {}), (formData.pivot || formData.chartType !== 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsx)("div", { style: {
758
824
  display: 'flex',
759
825
  flexDirection: 'column',
760
826
  gap: 6,
761
827
  marginTop: 6,
762
- }, children: (0, jsx_runtime_1.jsx)(Header, { children: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(Label, { children: CHART_TO_LABELS[formData.chartType]?.xAxisLabel }), (0, jsx_runtime_1.jsxs)("div", { style: {
828
+ }, children: (0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), (0, jsx_runtime_1.jsxs)("div", { style: {
763
829
  display: 'flex',
764
830
  flexDirection: 'row',
765
831
  gap: 12,
766
- }, children: [(0, jsx_runtime_1.jsx)(Select, { value: formData.xAxisField, onChange: (e) => handleChange(e, 'xAxisField'), options: formData.pivot
832
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
767
833
  ? getPivotMetricOptions(formData.pivot)
768
834
  : fieldOptions.map((elem) => ({
769
835
  label: elem.field,
770
836
  value: elem.field,
771
- })), theme: theme }), (0, jsx_runtime_1.jsx)(TextInput, { id: "chart-builder-x-axis-label", value: formData.pivot
837
+ })) }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.pivot
772
838
  ? formData.pivot.rowField
773
- : formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e, 'xAxisLabel'), theme: theme }), (0, jsx_runtime_1.jsx)(Select, { value: formData.pivot &&
839
+ : formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot &&
774
840
  (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
775
841
  ? 'pivot_date'
776
- : formData.xAxisFormat, onChange: (e) => handleChange(e, 'xAxisFormat'), options: formData.pivot &&
842
+ : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
777
843
  (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
778
844
  ? [{ value: 'pivot_date', label: 'date' }]
779
- : formatOptions, theme: theme })] }, 'xAxisField'), (0, jsx_runtime_1.jsx)("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(Label, { children: CHART_TO_LABELS[formData.chartType]?.yAxisLabel }), (0, jsx_runtime_1.jsx)("div", { style: {
845
+ : formatOptions })] }, 'xAxisField'), (0, jsx_runtime_1.jsx)("br", {})] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), (0, jsx_runtime_1.jsx)("div", { style: {
780
846
  display: 'flex',
781
847
  flexDirection: 'column',
782
848
  gap: 10,
@@ -784,9 +850,9 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
784
850
  display: 'flex',
785
851
  flexDirection: 'row',
786
852
  gap: 12,
787
- }, children: [(0, jsx_runtime_1.jsx)(Select, { value: formData.pivot
853
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
788
854
  ? formData.pivot.valueField
789
- : yAxisField.field, onChange: (e) => handleChange(e, 'yAxisFields.field', index), theme: theme, options: formData.pivot
855
+ : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
790
856
  ? [
791
857
  {
792
858
  label: `Pivot Column (${formData.pivot.valueField})`,
@@ -800,21 +866,21 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
800
866
  .map((elem) => ({
801
867
  label: elem.field,
802
868
  value: elem.field,
803
- })) }), (0, jsx_runtime_1.jsx)(TextInput, { id: "chart-builder-y-axis-label", value: formData.pivot?.valueField || yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e, 'yAxisFields.label', index), theme: theme }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: formData.pivot
804
- ? !!NUMBER_OPTIONS.find((option) => {
869
+ })) }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: formData.pivot?.valueField || yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.pivot
870
+ ? NUMBER_OPTIONS.find((option) => {
805
871
  return (option.value === yAxisField.format);
806
872
  })
807
873
  ? // @ts-ignore
808
874
  NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
809
875
  : 'whole_number'
810
- : yAxisField.format, onChange: (e) => handleChange(e, 'yAxisFields.format', index), options: formData.pivot
876
+ : yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
811
877
  ? NUMBER_OPTIONS
812
- : formatOptions }), formData.pivot === null && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, children: (0, jsx_runtime_1.jsx)(DeleteButton, { style: { marginLeft: deleteButtonMargin }, onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButton, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), (0, jsx_runtime_1.jsx)("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
878
+ : formatOptions }), formData.pivot === null && ((0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))) }), formData.pivot === null && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" })] }))] })), (0, jsx_runtime_1.jsx)("br", {})] })), (showTableFormatOptions || formData.chartType === 'table') && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { style: {
813
879
  display: 'flex',
814
880
  flexDirection: 'column',
815
881
  gap: 6,
816
882
  marginTop: 6,
817
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Table" }), (0, jsx_runtime_1.jsx)(Label, { children: "Columns" })] }), (0, jsx_runtime_1.jsx)("div", { style: {
883
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Table" }), (0, jsx_runtime_1.jsx)(LabelComponent, { label: "Columns" })] }), (0, jsx_runtime_1.jsx)("div", { style: {
818
884
  display: 'flex',
819
885
  flexDirection: 'column',
820
886
  gap: 10,
@@ -827,10 +893,10 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
827
893
  display: 'flex',
828
894
  flexDirection: 'row',
829
895
  gap: 12,
830
- }, children: [(0, jsx_runtime_1.jsx)(Select, { theme: theme, value: column.label, onChange: (e) => handleChange(e, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
896
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
831
897
  label: elem.label,
832
898
  value: elem.label,
833
- })) }), (0, jsx_runtime_1.jsx)(TextInput, { id: `chart-builder-column-label-${index}`, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e, 'columns.label', index), theme: theme }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value:
899
+ })) }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value:
834
900
  // The first index use rowField for the rest of them use value fields
835
901
  formData.pivot &&
836
902
  column.field === formData.pivot.rowField
@@ -839,7 +905,7 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
839
905
  ? 'pivot_date'
840
906
  : 'string'
841
907
  : formData.pivot?.valueFieldType ||
842
- 'whole_number', onChange: (e) => handleChange(e, 'pivotColumn', index), options: formData.pivot && index === 0
908
+ 'whole_number', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
843
909
  ? (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType)
844
910
  ? [{ label: 'date', value: 'pivot_date' }]
845
911
  : [{ label: 'string', value: 'string' }]
@@ -848,22 +914,22 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
848
914
  display: 'flex',
849
915
  flexDirection: 'row',
850
916
  gap: 12,
851
- }, children: [(0, jsx_runtime_1.jsx)(Select, { theme: theme, value: column.field, onChange: (e) => handleChange(e, 'columns.field', index), options: fields.map((elem) => ({
917
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: fields.map((elem) => ({
852
918
  label: elem.field,
853
919
  value: elem.field,
854
- })) }), (0, jsx_runtime_1.jsx)(TextInput, { id: `chart-builder-column-label-${index}`, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e, 'columns.label', index), theme: theme }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: column.format, onChange: (e) => handleChange(e, 'columns.format', index), options: formatOptions }), (0, jsx_runtime_1.jsx)("div", { ref: deleteRef, children: (0, jsx_runtime_1.jsx)(DeleteButton, { style: { marginLeft: deleteButtonMargin }, onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButton, { onClick: () => handleAddField('columns'), label: "Add column +" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {})] })), showDateFieldOptions && formData.dateField && ((0, jsx_runtime_1.jsxs)("div", { style: {
920
+ })) }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: formatOptions }), (0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))) }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {})] })), showDateFieldOptions && formData.dateField && ((0, jsx_runtime_1.jsxs)("div", { style: {
855
921
  display: 'flex',
856
922
  flexDirection: 'column',
857
923
  gap: 6,
858
924
  marginTop: 6,
859
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Date field" }), (0, jsx_runtime_1.jsxs)("div", { style: {
925
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Date field" }), (0, jsx_runtime_1.jsxs)("div", { style: {
860
926
  display: 'flex',
861
927
  flexDirection: 'row',
862
928
  gap: 12,
863
- }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Table" }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: formData.dateField?.table, onChange: (e) => handleChange(e, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
929
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Table" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
864
930
  label: elem.name,
865
931
  value: elem.name,
866
- })) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(Label, { children: "Field" }), (0, jsx_runtime_1.jsx)(Select, { theme: theme, value: (0, textProcessing_1.removeDoubleQuotes)(formData.dateField?.field), onChange: (e) => handleChange(e, 'dateField.field'), options: dateFieldOptions
932
+ })) })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column' }, children: [(0, jsx_runtime_1.jsx)(LabelComponent, { label: "Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: (0, textProcessing_1.removeDoubleQuotes)(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
867
933
  ?.find((elem) => elem.name === formData.dateField?.table)
868
934
  ?.columns?.map((elem) => ({
869
935
  label: elem.name,
@@ -873,13 +939,13 @@ function ChartBuilder({ TextInput = UiComponents_1.QuillTextInput, Select = Quil
873
939
  flexDirection: 'column',
874
940
  gap: 12,
875
941
  marginTop: 6,
876
- }, children: [(0, jsx_runtime_1.jsx)(Header, { children: "Organization access" }), (0, jsx_runtime_1.jsx)(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), (0, jsx_runtime_1.jsxs)("div", { style: {
942
+ }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Organization access" }), (0, jsx_runtime_1.jsx)(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template, theme: theme, organizationName: organizationName })] }))] }), (0, jsx_runtime_1.jsxs)("div", { style: {
877
943
  display: 'flex',
878
944
  flexDirection: 'row',
879
945
  justifyContent: 'flex-end',
880
946
  marginTop: 'auto',
881
947
  gap: 10,
882
- }, children: [!horizontalView && dashboardItem && ((0, jsx_runtime_1.jsx)(SecondaryButton, { onClick: deleteChart, label: 'Delete' })), (0, jsx_runtime_1.jsx)(Button, { onClick: () => editChart(), label: buttonLabel
948
+ }, children: [!isHorizontalView && dashboardItem && ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => editChart(), label: buttonLabel
883
949
  ? buttonLabel
884
950
  : dashboardItem
885
951
  ? 'Save changes'
@@ -949,22 +1015,17 @@ function SegmentedControl({ onChange, value, theme, organizationName, }) {
949
1015
  ` }), organizationName] }))] }));
950
1016
  }
951
1017
  function DashboardFilterModal({ isOpen, setIsOpen, override, theme, issues, }) {
952
- return ((0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedModal, { isOpen: isOpen, onClose: () => {
953
- setIsOpen(false);
954
- }, setIsOpen: setIsOpen, theme: theme, title: 'Chart not compatible with selected dashboard', children: (0, jsx_runtime_1.jsxs)("div", { style: {
1018
+ return ((0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedModal, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', children: (0, jsx_runtime_1.jsxs)("div", { style: {
955
1019
  display: 'flex',
956
1020
  flexDirection: 'column',
957
1021
  width: '600px',
958
1022
  padding: '20px',
959
1023
  boxSizing: 'border-box',
960
- }, children: [issues.map((issue, index) => ((0, jsx_runtime_1.jsx)("span", { style: { paddingTop: '10px' }, children: issue }, issue))), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
1024
+ }, children: [issues.map((issue, index) => ((0, jsx_runtime_1.jsx)("span", { style: { paddingTop: '10px' }, children: issue }, issue))), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("div", { style: {
961
1025
  display: 'flex',
962
1026
  flexDirection: 'row',
963
1027
  gap: '12px',
964
1028
  justifyContent: 'flex-end',
965
- }, children: [(0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }), (0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedSecondaryButton, { label: "Override", onClick: () => {
966
- override();
967
- setIsOpen(false);
968
- } })] })] }) }));
1029
+ }, children: (0, jsx_runtime_1.jsx)(UiComponents_1.MemoizedButton, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
969
1030
  }
970
1031
  exports.DashboardFilterModal = DashboardFilterModal;
@@ -1,29 +1,125 @@
1
- /// <reference types="react" />
2
- import { SelectComponentProps, TextInputComponentProps, ButtonComponentProps, ModalComponentProps, HeaderProps, LabelProps, TextProps, DeleteButtonProps, PopoverComponentProps } from './components/UiComponents';
3
- interface ChartEditorProps {
1
+ import React, { ReactNode } from 'react';
2
+ /**
3
+ * Props for the Quill ChartEditor component.
4
+ */
5
+ export interface ChartEditorProps {
6
+ /** Whether the modal is open. */
4
7
  isOpen: boolean;
8
+ /** A callback that sets the isOpen state. */
9
+ setIsOpen: (isOpen: boolean) => void;
10
+ /** The id of the chart that is being edited. */
5
11
  chartId: string;
6
- admin?: boolean;
12
+ /** Whether the editor has administrative priveleges. */
13
+ isAdmin?: boolean;
14
+ /** Whether the editor is editing an existing query. */
7
15
  isEditMode?: boolean;
16
+ /** The title of the chart builder form. */
8
17
  chartBuilderTitle?: string;
18
+ /** The button label for the chart builder. */
9
19
  chartBuilderButtonLabel?: string;
20
+ /**
21
+ * A callback that is fired when the add to dashboard flow has been completed.
22
+ */
10
23
  onAddToDashboardComplete?: () => void;
24
+ /** A callback that is fired when the item is deleted. */
11
25
  onDelete?: () => void;
12
- setIsOpen: (isOpen: boolean) => void;
13
- Select?: (props: SelectComponentProps) => JSX.Element;
14
- TextInput?: (props: TextInputComponentProps) => JSX.Element;
15
- Button?: (props: ButtonComponentProps) => JSX.Element;
16
- SecondaryButton?: (props: ButtonComponentProps) => JSX.Element;
17
- Header?: (props: HeaderProps) => JSX.Element;
18
- Label?: (props: LabelProps) => JSX.Element;
19
- Text?: (props: TextProps) => JSX.Element;
20
- DeleteButton?: (props: DeleteButtonProps) => JSX.Element;
21
- Modal?: (props: ModalComponentProps) => JSX.Element;
22
- Popover?: (props: PopoverComponentProps) => JSX.Element;
26
+ /** A select component. */
27
+ SelectComponent?: (props: {
28
+ value: string;
29
+ label?: string;
30
+ options: {
31
+ value: string;
32
+ label: string;
33
+ }[];
34
+ onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
35
+ }) => JSX.Element;
36
+ /** An input component to get text from your users. */
37
+ TextInputComponent?: (props: {
38
+ id: string;
39
+ width: number;
40
+ value: string;
41
+ placeholder?: string;
42
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
43
+ }) => JSX.Element;
44
+ /** A button component. */
45
+ ButtonComponent?: (props: {
46
+ onClick: () => void;
47
+ label: string;
48
+ }) => JSX.Element;
49
+ /** A secondary button. */
50
+ SecondaryButtonComponent?: (props: {
51
+ onClick: () => void;
52
+ label: string;
53
+ }) => JSX.Element;
54
+ /**
55
+ * A small delete button used to click out of things. Usually an "X" icon.
56
+ */
57
+ DeleteButtonComponent?: (props: {
58
+ onClick: () => void;
59
+ }) => JSX.Element;
60
+ /** A header component. */
61
+ HeaderComponent?: (props: {
62
+ label: string;
63
+ }) => JSX.Element;
64
+ /** A label component. */
65
+ LabelComponent?: (props: {
66
+ label: string;
67
+ }) => JSX.Element;
68
+ /** A text component. */
69
+ TextComponent?: (props: {
70
+ label: string;
71
+ }) => JSX.Element;
72
+ /**
73
+ * A modal component.
74
+ */
75
+ ModalComponent?: (props: {
76
+ isOpen: boolean;
77
+ setIsOpen: (isOpen: boolean) => void;
78
+ title?: string | undefined;
79
+ children: ReactNode;
80
+ width?: number | undefined;
81
+ height?: number | undefined;
82
+ }) => JSX.Element;
83
+ /** A popover component. */
84
+ PopoverComponent?: (props: {
85
+ isOpen: boolean;
86
+ setIsOpen: (isOpen: boolean) => void;
87
+ triggerLabel?: string;
88
+ popoverTitle?: string;
89
+ popoverChildren: ReactNode;
90
+ }) => JSX.Element;
91
+ /** The default dashboard to add the item to. */
23
92
  destinationDashboard?: string;
93
+ /** The name of the current organization. */
24
94
  organizationName?: string;
25
- horizontalView?: boolean;
95
+ /** Whether the ChartBuilder is in horizontal view mode. */
96
+ isHorizontalView?: boolean;
26
97
  }
27
- export default function ChartEditor({ isOpen, chartId, isEditMode, admin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, horizontalView, onDelete, setIsOpen, Select, TextInput, Button, SecondaryButton, Header, Label, Text, DeleteButton, Modal, Popover, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
28
- export {};
98
+ /**
99
+ * ### Quill Chart Editor
100
+ *
101
+ * Presents the Quill Chart Builder form as a modal.
102
+ *
103
+ * @example
104
+ * ```js
105
+ * // Usage without custom components
106
+ * <ChartEditor isOpen={true} chartId="1234" />
107
+ * ```
108
+ *
109
+ * @example
110
+ * ```js
111
+ * // You can also pass your own components
112
+ * <ChartEditor
113
+ * isOpen={isOpen}
114
+ * setIsOpen={setIsOpen}
115
+ * chartId="1234"
116
+ * Button={MyButton}
117
+ * Modal={MyModal}
118
+ * />
119
+ * ```
120
+ *
121
+ * ### Chart Editor API
122
+ * @see https://docs.quillsql.com/components/chart-editor
123
+ */
124
+ export default function ChartEditor({ isOpen, chartId, isAdmin, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, organizationName, isHorizontalView, onDelete, setIsOpen, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, LabelComponent, TextComponent, DeleteButtonComponent, ModalComponent, PopoverComponent, }: ChartEditorProps): import("react/jsx-runtime").JSX.Element;
29
125
  //# sourceMappingURL=ChartEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":";AASA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AAKnC,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAC,OAAO,CAAC;IACzD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,GAAG,CAAC,OAAO,CAAC;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAa,EACb,oBAAoB,EACpB,iBAAgC,EAChC,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,eAAe,EACf,MAAM,EACN,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,GACR,EAAE,gBAAgB,2CA6LlB"}
1
+ {"version":3,"file":"ChartEditor.d.ts","sourceRoot":"","sources":["../../src/ChartEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAWf;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAEhB,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAEhB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;KACjE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;KAChE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,0BAA0B;IAC1B,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE5D,yBAAyB;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE3D,wBAAwB;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE1D;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,SAAS,CAAC;KAC5B,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,OAAO,EACP,OAAe,EACf,oBAAoB,EACpB,iBAAgC,EAChC,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,cAA8B,EAC9B,gBAAgB,GACjB,EAAE,gBAAgB,2CAgJlB"}