@quillsql/react 2.11.17 → 2.11.19

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 (105) hide show
  1. package/dist/cjs/Chart.d.ts +0 -8
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/ChartBuilder.d.ts +11 -1
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +6 -5
  6. package/dist/cjs/ChartEditor.d.ts +11 -3
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +3 -3
  9. package/dist/cjs/Dashboard.d.ts.map +1 -1
  10. package/dist/cjs/Dashboard.js +7 -9
  11. package/dist/cjs/ReportBuilder.d.ts +7 -1
  12. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  13. package/dist/cjs/ReportBuilder.js +112 -37
  14. package/dist/cjs/SQLEditor.d.ts +7 -5
  15. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  16. package/dist/cjs/SQLEditor.js +3 -2
  17. package/dist/cjs/Table.d.ts +2 -2
  18. package/dist/cjs/Table.d.ts.map +1 -1
  19. package/dist/cjs/components/Dashboard/DashboardFilter.js +2 -2
  20. package/dist/cjs/components/QuillCard.d.ts +2 -7
  21. package/dist/cjs/components/QuillCard.d.ts.map +1 -1
  22. package/dist/cjs/components/QuillCard.js +15 -9
  23. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  24. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +2 -0
  25. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +1 -1
  26. package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -0
  27. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  28. package/dist/cjs/components/ReportBuilder/convert.js +20 -1
  29. package/dist/cjs/components/ReportBuilder/operators.d.ts +15 -10
  30. package/dist/cjs/components/ReportBuilder/operators.d.ts.map +1 -1
  31. package/dist/cjs/components/ReportBuilder/operators.js +23 -10
  32. package/dist/cjs/components/ReportBuilder/ui.d.ts +1 -2
  33. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  34. package/dist/cjs/components/ReportBuilder/ui.js +4 -4
  35. package/dist/cjs/components/ReportBuilder/util.d.ts +8 -3
  36. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  37. package/dist/cjs/components/ReportBuilder/util.js +110 -64
  38. package/dist/cjs/components/UiComponents.d.ts +0 -6
  39. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  40. package/dist/cjs/components/UiComponents.js +2 -44
  41. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +5 -2
  42. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  43. package/dist/cjs/internals/ReportBuilder/PivotList.js +11 -11
  44. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
  45. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  46. package/dist/cjs/internals/ReportBuilder/PivotModal.js +4 -3
  47. package/dist/cjs/utils/parserBigQuery.d.ts +6 -0
  48. package/dist/cjs/utils/parserBigQuery.d.ts.map +1 -0
  49. package/dist/cjs/utils/parserBigQuery.js +60 -0
  50. package/dist/cjs/utils/parserPostgres.d.ts +3 -0
  51. package/dist/cjs/utils/parserPostgres.d.ts.map +1 -0
  52. package/dist/cjs/utils/parserPostgres.js +42 -0
  53. package/dist/esm/Chart.d.ts +0 -8
  54. package/dist/esm/Chart.d.ts.map +1 -1
  55. package/dist/esm/ChartBuilder.d.ts +11 -1
  56. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  57. package/dist/esm/ChartBuilder.js +6 -5
  58. package/dist/esm/ChartEditor.d.ts +11 -3
  59. package/dist/esm/ChartEditor.d.ts.map +1 -1
  60. package/dist/esm/ChartEditor.js +3 -3
  61. package/dist/esm/Dashboard.d.ts.map +1 -1
  62. package/dist/esm/Dashboard.js +8 -10
  63. package/dist/esm/ReportBuilder.d.ts +7 -1
  64. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  65. package/dist/esm/ReportBuilder.js +113 -38
  66. package/dist/esm/SQLEditor.d.ts +7 -5
  67. package/dist/esm/SQLEditor.d.ts.map +1 -1
  68. package/dist/esm/SQLEditor.js +3 -2
  69. package/dist/esm/Table.d.ts +2 -2
  70. package/dist/esm/Table.d.ts.map +1 -1
  71. package/dist/esm/components/Dashboard/DashboardFilter.js +2 -2
  72. package/dist/esm/components/QuillCard.d.ts +2 -7
  73. package/dist/esm/components/QuillCard.d.ts.map +1 -1
  74. package/dist/esm/components/QuillCard.js +15 -9
  75. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -1
  76. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +2 -0
  77. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +1 -1
  78. package/dist/esm/components/ReportBuilder/convert.d.ts +1 -0
  79. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  80. package/dist/esm/components/ReportBuilder/convert.js +18 -0
  81. package/dist/esm/components/ReportBuilder/operators.d.ts +15 -10
  82. package/dist/esm/components/ReportBuilder/operators.d.ts.map +1 -1
  83. package/dist/esm/components/ReportBuilder/operators.js +23 -10
  84. package/dist/esm/components/ReportBuilder/ui.d.ts +1 -2
  85. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  86. package/dist/esm/components/ReportBuilder/ui.js +4 -4
  87. package/dist/esm/components/ReportBuilder/util.d.ts +8 -3
  88. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  89. package/dist/esm/components/ReportBuilder/util.js +101 -60
  90. package/dist/esm/components/UiComponents.d.ts +0 -6
  91. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  92. package/dist/esm/components/UiComponents.js +3 -44
  93. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +5 -2
  94. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  95. package/dist/esm/internals/ReportBuilder/PivotList.js +11 -11
  96. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
  97. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  98. package/dist/esm/internals/ReportBuilder/PivotModal.js +4 -3
  99. package/dist/esm/utils/parserBigQuery.d.ts +6 -0
  100. package/dist/esm/utils/parserBigQuery.d.ts.map +1 -0
  101. package/dist/esm/utils/parserBigQuery.js +52 -0
  102. package/dist/esm/utils/parserPostgres.d.ts +3 -0
  103. package/dist/esm/utils/parserPostgres.d.ts.map +1 -0
  104. package/dist/esm/utils/parserPostgres.js +37 -0
  105. package/package.json +1 -1
@@ -30,6 +30,7 @@ const textProcessing_1 = require("./utils/textProcessing");
30
30
  const AddLimitPopover_1 = require("./components/ReportBuilder/AddLimitPopover");
31
31
  const width_1 = require("./utils/width");
32
32
  const QuillSelect_1 = require("./components/QuillSelect");
33
+ const QuillCard_1 = require("./components/QuillCard");
33
34
  /**
34
35
  * Quill Report Builder
35
36
  *
@@ -61,13 +62,14 @@ const QuillSelect_1 = require("./components/QuillSelect");
61
62
  * ### Report Builder API
62
63
  * @see https://docs.quillsql.com/components/report-builder
63
64
  */
64
- function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => void null, destinationDashboard = undefined, organizationName = '', ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, ModalComponent = UiComponents_1.MemoizedModal, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, TableComponent = UiComponents_1.QuillTableComponent, PopoverComponent = UiComponents_1.MemoizedPopover, TabsComponent = UiComponents_1.QuillTabs, CheckboxComponent = UiComponents_1.MemoizedCheckbox, SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer, SelectColumnComponent = ui_1.QuillSelectColumn, DraggableColumnComponent = ui_1.QuillDraggableColumn, SidebarHeadingComponent = ui_1.QuillSidebarHeading, FilterPopoverComponent = ui_1.QuillFilterPopover, SortPopoverComponent = ui_1.QuillSortPopover, LimitPopoverComponent = ui_1.QuillLimitPopover, LabelComponent = UiComponents_1.MemoizedLabel, HeaderComponent = UiComponents_1.MemoizedHeader, TextComponent = UiComponents_1.MemoizedText, isAdminEnabled = false, isAIEnabled = true, containerStyle, }) {
65
+ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => void null, destinationDashboard = undefined, organizationName = '', ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, DeleteButtonComponent = UiComponents_1.MemoizedDeleteButton, ModalComponent = UiComponents_1.MemoizedModal, TextInputComponent = UiComponents_2.QuillTextInput, SelectComponent = QuillSelect_1.QuillSelectComponent, TableComponent = UiComponents_1.QuillTableComponent, PopoverComponent = UiComponents_1.MemoizedPopover, TabsComponent = UiComponents_1.QuillTabs, CheckboxComponent = UiComponents_1.MemoizedCheckbox, SidebarComponent = ui_1.QuillSidebar, ContainerComponent = ui_1.CustomContainer, SelectColumnComponent = ui_1.QuillSelectColumn, DraggableColumnComponent = ui_1.QuillDraggableColumn, SidebarHeadingComponent = ui_1.QuillSidebarHeading, FilterPopoverComponent = ui_1.QuillFilterPopover, SortPopoverComponent = ui_1.QuillSortPopover, LimitPopoverComponent = ui_1.QuillLimitPopover, CardComponent = QuillCard_1.QuillCard, LabelComponent = UiComponents_1.MemoizedLabel, HeaderComponent = UiComponents_1.MemoizedHeader, TextComponent = UiComponents_1.MemoizedText, isAdminEnabled = false, isAIEnabled = true, containerStyle, }) {
65
66
  const [aiPrompt, setAiPrompt] = (0, react_1.useState)('');
66
67
  const [errorMessage, setErrorMessage] = (0, react_1.useState)('');
67
68
  const [baseAst, setBaseAst] = (0, react_1.useState)(null);
68
69
  const [formData, setFormData] = (0, react_1.useState)(null);
69
70
  const [orderedColumnNames, setOrderedColumnNames] = (0, react_1.useState)([]);
70
71
  const [selectedColumns, setSelectedColumns] = (0, react_1.useState)([]);
72
+ const [selectedOrderedColumns, setSelectedOrderedColumns] = (0, react_1.useState)([]);
71
73
  const [schemaTables, setSchemaTables] = (0, react_1.useState)([]);
72
74
  const [activeQuery, setActiveQuery] = (0, react_1.useState)('');
73
75
  const [activeEditItem, setActiveEditItem] = (0, react_1.useState)(null);
@@ -127,7 +129,9 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
127
129
  .sort(sortFn)
128
130
  .filter((c) => columnsInPivot.includes(c));
129
131
  }
130
- return columnNames;
132
+ // make the columnNames match the order of the selectedOrderedColumns
133
+ return columnNames.sort((a, b) => selectedOrderedColumns.indexOf(a) - selectedOrderedColumns.indexOf(b));
134
+ // return columnNames;
131
135
  };
132
136
  /**
133
137
  * Transforms an array of column names into an array of columnInfo objects
@@ -231,23 +235,28 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
231
235
  }
232
236
  setUniqueValues(newValues);
233
237
  };
234
- const fetchSqlQuery = async (ast, formData) => {
235
- setLoading(true);
238
+ const fetchSqlQuery = async (ast, formData, fetchData = true) => {
239
+ if (fetchData) {
240
+ setLoading(true);
241
+ }
236
242
  setErrorMessage('');
237
243
  try {
244
+ const where = formData ? formData : ast?.where || null;
238
245
  const response = await fetch(`https://quill-344421.uc.r.appspot.com/sqlify`, {
239
246
  method: 'POST',
240
247
  headers: {
241
248
  'Content-Type': 'application/json',
242
249
  },
243
250
  body: JSON.stringify({
244
- ast: { ...ast, where: formData },
251
+ ast: { ...ast, where },
245
252
  publicKey: client.publicKey,
246
253
  }),
247
254
  });
248
255
  const data = await response.json();
249
256
  setActiveQuery(data.query);
250
- fetchUponChange(ast, formData);
257
+ if (fetchData) {
258
+ fetchUponChange(ast, formData);
259
+ }
251
260
  }
252
261
  catch (error) {
253
262
  setLoading(false);
@@ -315,8 +324,14 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
315
324
  .find((t) => t.name === initialTableName)
316
325
  ?.columns.map((c) => c.name)
317
326
  .sort((a, b) => {
318
- const aIsId = a.endsWith('.id') || a.endsWith('_id') || a.endsWith('Id');
319
- const bIsId = b.endsWith('.id') || b.endsWith('_id') || b.endsWith('Id');
327
+ const aIsId = a.endsWith('.id') ||
328
+ a.endsWith('_id') ||
329
+ a.endsWith('Id') ||
330
+ a === 'id';
331
+ const bIsId = b.endsWith('.id') ||
332
+ b.endsWith('_id') ||
333
+ b.endsWith('Id') ||
334
+ b === 'id';
320
335
  if (aIsId && !bIsId)
321
336
  return 1;
322
337
  if (bIsId && !aIsId)
@@ -351,8 +366,14 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
351
366
  setOrderedColumnNames((tables ?? []).flatMap((table) => table.columns
352
367
  .map((c) => `${table.name}.${c.name}`)
353
368
  .sort((a, b) => {
354
- const aIsId = a.endsWith('.id') || a.endsWith('_id') || a.endsWith('Id');
355
- const bIsId = b.endsWith('.id') || b.endsWith('_id') || b.endsWith('Id');
369
+ const aIsId = a.endsWith('.id') ||
370
+ a.endsWith('_id') ||
371
+ a.endsWith('Id') ||
372
+ a === 'id';
373
+ const bIsId = b.endsWith('.id') ||
374
+ b.endsWith('_id') ||
375
+ b.endsWith('Id') ||
376
+ b === 'id';
356
377
  if (aIsId && !bIsId)
357
378
  return 1;
358
379
  if (bIsId && !aIsId)
@@ -370,9 +391,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
370
391
  };
371
392
  if (schemaTables.length === 0) {
372
393
  fetchSchema();
373
- }
374
- else if (initialLoad && initialTableName) {
375
- loadTable(schemaTables);
394
+ setInitialLoad(false);
376
395
  }
377
396
  }, [schemaTables, initialTableName]);
378
397
  const updateFormData = (updates, { isDeletion = false, isInsertion = false, isReplaceSubtree = false, isAddVariant = false, isDeleteVariant = false, topLevelBinOp = 'OR', isCondition = undefined, }) => {
@@ -939,6 +958,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
939
958
  { label: 'in the last', value: 'IN_THE_LAST' },
940
959
  { label: 'in the previous', value: 'IN_THE_PREVIOUS' },
941
960
  { label: 'in the current', value: 'IN_THE_CURRENT' },
961
+ { label: 'equals', value: 'EQUALS' },
942
962
  { label: 'is not null', value: 'IS NOT' },
943
963
  { label: 'is null', value: 'IS' },
944
964
  // { label: 'equals', value: 'equals' },
@@ -994,6 +1014,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
994
1014
  { label: 'in the last', value: 'IN_THE_LAST' },
995
1015
  { label: 'in the previous', value: 'IN_THE_PREVIOUS' },
996
1016
  { label: 'in the current', value: 'IN_THE_CURRENT' },
1017
+ { label: 'equals', value: 'EQUALS' },
997
1018
  { label: 'is not null', value: 'IS NOT' },
998
1019
  { label: 'is null', value: 'IS' },
999
1020
  // { label: 'equals', value: 'equals' },
@@ -1047,6 +1068,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1047
1068
  { label: 'in the last', value: 'IN_THE_LAST' },
1048
1069
  { label: 'in the previous', value: 'IN_THE_PREVIOUS' },
1049
1070
  { label: 'in the current', value: 'IN_THE_CURRENT' },
1071
+ { label: 'equals', value: 'EQUALS' },
1050
1072
  { label: 'is not null', value: 'IS NOT' },
1051
1073
  { label: 'is null', value: 'IS' },
1052
1074
  // { label: 'equals', value: 'equals' },
@@ -1078,6 +1100,65 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1078
1100
  { label: `week`, value: 'WEEK' },
1079
1101
  ] })] }));
1080
1102
  }
1103
+ else if ((0, util_1.isEquals)(node, client.databaseType)) {
1104
+ const options = getAllPossibleColumns().map((column) => ({
1105
+ label: (0, textProcessing_1.snakeCaseToTitleCase)(column.displayName),
1106
+ value: column.name,
1107
+ }));
1108
+ return ((0, jsx_runtime_1.jsxs)("div", { style: {
1109
+ display: 'flex',
1110
+ flexDirection: 'row',
1111
+ alignItems: 'center',
1112
+ gap: 20,
1113
+ }, children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: node.left.column, onChange: (event) => {
1114
+ const columnType = getColumnTypeByName(event.target.value);
1115
+ if ((0, ast_1.isDateishColumnType)(columnType)) {
1116
+ // handleChange(value, keyPrefix + dateColumnPath, "text");
1117
+ handleOperatorChange('IN_THE_LAST', node, keyPrefix, event.target.value);
1118
+ }
1119
+ else if ((0, ast_1.isNumericColumnType)(columnType)) {
1120
+ const newSubtree = (0, util_1.deepCopy)(constants_1.defaultNumericComparison);
1121
+ newSubtree.left.column = event.target.value;
1122
+ handleReplaceSubtree(keyPrefix, newSubtree);
1123
+ }
1124
+ else {
1125
+ const newSubtree = (0, util_1.deepCopy)(constants_1.defaultEntry);
1126
+ newSubtree.left.args.value[0].column = event.target.value;
1127
+ handleReplaceSubtree(keyPrefix, newSubtree);
1128
+ }
1129
+ }, options: options }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: 'EQUALS', onChange: (event) => {
1130
+ handleOperatorChange(event.target.value, node, keyPrefix, node.left.column);
1131
+ }, options: [
1132
+ { label: 'in the last', value: 'IN_THE_LAST' },
1133
+ { label: 'in the previous', value: 'IN_THE_PREVIOUS' },
1134
+ { label: 'in the current', value: 'IN_THE_CURRENT' },
1135
+ { label: 'equals', value: 'EQUALS' },
1136
+ { label: 'is not null', value: 'IS NOT' },
1137
+ { label: 'is null', value: 'IS' },
1138
+ // { label: 'equals', value: 'equals' },
1139
+ ] }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: node.right.args.value[1].column, onChange: (event) => {
1140
+ handleChange([
1141
+ {
1142
+ value: event.target.value,
1143
+ path: 'right.args.value||1.column',
1144
+ },
1145
+ {
1146
+ value: event.target.value,
1147
+ path: 'left.args.value||1.column',
1148
+ },
1149
+ ]);
1150
+ }, options: [
1151
+ { label: `year`, value: 'YEAR' },
1152
+ { label: `quarter`, value: 'QUARTER' },
1153
+ { label: `month`, value: 'MONTH' },
1154
+ { label: `week`, value: 'WEEK' },
1155
+ ] }), (0, jsx_runtime_1.jsx)(TextInputComponent, { id: 'quoted_string', value: node.right.args.value[0].value, width: 120, onChange: (e) => handleChange([
1156
+ {
1157
+ value: e.target.value,
1158
+ path: 'right.args.value||0.value',
1159
+ },
1160
+ ]) })] }));
1161
+ }
1081
1162
  else if ((0, util_1.isColumnComparison)(node)) {
1082
1163
  const options = getAllPossibleColumns().map((column) => ({
1083
1164
  label: (0, textProcessing_1.snakeCaseToTitleCase)(column.displayName),
@@ -1129,10 +1210,6 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1129
1210
  ]
1130
1211
  : []),
1131
1212
  ];
1132
- if (client.databaseType === 'BigQuery' &&
1133
- (0, ast_1.isDateishColumnType)(columnType)) {
1134
- operatorOptions = operatorOptions.filter((option) => option.value !== 'equals');
1135
- }
1136
1213
  return ((0, jsx_runtime_1.jsxs)("div", { style: {
1137
1214
  display: 'flex',
1138
1215
  gap: 12,
@@ -1172,7 +1249,8 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1172
1249
  }, children: uniqueValues[table] &&
1173
1250
  Object.keys(uniqueValues[table][leftChildValue] ?? {}).map((key) => ((0, jsx_runtime_1.jsxs)("label", { style: { display: 'flex', gap: 4 }, children: [(0, jsx_runtime_1.jsx)(CheckboxComponent, { isChecked: uniqueValues[table][leftChildValue][key], onChange: (event) => {
1174
1251
  const newValues = (0, util_1.deepCopy)(uniqueValues);
1175
- newValues[table][leftChildValue][key] = event.target.checked;
1252
+ newValues[table][leftChildValue][key] =
1253
+ event.target.checked;
1176
1254
  setUniqueValues(newValues);
1177
1255
  if (event.target.checked) {
1178
1256
  handleInsertVariant(keyPrefix + 'right.' + 'value', key);
@@ -1227,6 +1305,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1227
1305
  { label: 'in the last', value: 'IN_THE_LAST' },
1228
1306
  { label: 'in the previous', value: 'IN_THE_PREVIOUS' },
1229
1307
  { label: 'in the current', value: 'IN_THE_CURRENT' },
1308
+ { label: 'equals', value: 'EQUALS' },
1230
1309
  { label: 'is not null', value: 'IS NOT' },
1231
1310
  { label: 'is null', value: 'IS' },
1232
1311
  ]
@@ -1324,15 +1403,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1324
1403
  // @depreciated TODO: remove next update
1325
1404
  // eslint-disable-next-line no-unused-vars
1326
1405
  isTopLevelAnd = false, isParentRow = false) => {
1327
- const isInTheCurrentIntervalSentence = (0, util_1.isTheCurrentInterval)(node, client.databaseType)
1328
- ? (0, util_1.getInTheCurrentIntervalSentence)(node, client.databaseType)
1329
- : null;
1330
- const isInTheLastIntervalSentence = (0, util_1.isInTheLastInterval)(node, client.databaseType)
1331
- ? (0, util_1.getInTheLastIntervalSentence)(node, client.databaseType)
1332
- : null;
1333
- const isInThePreviousIntervalSentence = (0, util_1.isThePreviousInterval)(node, client.databaseType)
1334
- ? (0, util_1.getInThePreviousIntervalSentence)(node, client.databaseType)
1335
- : null;
1406
+ const uniqueSentence = (0, util_1.getCustomSentence)(node, client.databaseType);
1336
1407
  let dateComparisonPartialMatch = null;
1337
1408
  let dateEqualityPartialMatch = null;
1338
1409
  if (client.databaseType !== 'BigQuery') {
@@ -1362,11 +1433,9 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1362
1433
  };
1363
1434
  switch (node.type) {
1364
1435
  case 'binary_expr':
1365
- return ((0, jsx_runtime_1.jsx)(ui_1.TagWrapper, { keyPrefix: keyPrefix, formData: formData, activeEditItem: activeEditItem, setEditPopoverKey: setEditPopoverKey, setActiveEditItem: setActiveEditItem, setCheckboxes: setCheckboxes, handleReplaceSubtree: handleReplaceSubtree, FilterPopover: FilterPopoverComponent, setActivePath: setActivePath, setOpenPopover: setOpenPopover, setIsPending: setIsPending, clearCheckboxes: clearCheckboxes, fetchSqlQuery: fetchSqlQuery, handleDelete: handleDelete, editPopoverKey: editPopoverKey, isCard: isCard, isRow: isRow, getByKey: getByKey, EditPopover: ui_1.EditPopover, Button: ButtonComponent, renderNode: renderNode, children: dateComparisonPartialMatch ??
1436
+ return ((0, jsx_runtime_1.jsx)(ui_1.TagWrapper, { keyPrefix: keyPrefix, formData: formData, activeEditItem: activeEditItem, setEditPopoverKey: setEditPopoverKey, setActiveEditItem: setActiveEditItem, setCheckboxes: setCheckboxes, handleReplaceSubtree: handleReplaceSubtree, FilterPopover: FilterPopoverComponent, setActivePath: setActivePath, setOpenPopover: setOpenPopover, setIsPending: setIsPending, clearCheckboxes: clearCheckboxes, handleDelete: handleDelete, editPopoverKey: editPopoverKey, isCard: isCard, isRow: isRow, getByKey: getByKey, EditPopover: ui_1.EditPopover, Button: ButtonComponent, renderNode: renderNode, children: dateComparisonPartialMatch ??
1366
1437
  dateEqualityPartialMatch ??
1367
- isInTheCurrentIntervalSentence ??
1368
- isInTheLastIntervalSentence ??
1369
- isInThePreviousIntervalSentence ?? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [node.left &&
1438
+ uniqueSentence ?? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [node.left &&
1370
1439
  renderSentence(formData, node.left, keyPrefix + 'left.', false, false, isRow), isRow ? (' ' + OPS[node.operator] + ' ') : isTopLevel || topLevelBinaryOperator === 'OR' ? ((0, jsx_runtime_1.jsx)(TopLevelBooleanSwitch, { node: node, keyPrefix: keyPrefix, handleOperatorChange: handleOperatorChange, Select: SelectComponent })) : null, node.right &&
1371
1440
  renderSentence(formData, node.right, keyPrefix + 'right.', false, false, isRow)] })) }));
1372
1441
  case 'column_ref':
@@ -1895,6 +1964,8 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1895
1964
  // When a drag event ends, switch the item order.
1896
1965
  function handleDragEnd(event) {
1897
1966
  const { active, over } = event;
1967
+ if (!active || !over)
1968
+ return;
1898
1969
  if (active.id !== over.id) {
1899
1970
  const oldIndex = orderedColumnNames.findIndex((c) => c.endsWith(`${currentTable}.${active.id}`));
1900
1971
  const newIndex = orderedColumnNames.findIndex((c) => c.endsWith(`${currentTable}.${over.id}`));
@@ -1907,6 +1978,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1907
1978
  orderedSelectedColumns.push(column);
1908
1979
  }
1909
1980
  }
1981
+ setSelectedOrderedColumns(orderedSelectedColumns);
1910
1982
  // If there is already an AST saved in state, only update the columns
1911
1983
  // otherwise fill in the defaultAST shape and also update columns.
1912
1984
  const fallbackAST = {
@@ -1922,7 +1994,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
1922
1994
  };
1923
1995
  const newAst = baseAst ? newBaseAst : fallbackAST;
1924
1996
  setBaseAst(newAst);
1925
- fetchSqlQuery(newAst);
1997
+ fetchSqlQuery(newAst, undefined, false);
1926
1998
  }
1927
1999
  }
1928
2000
  const columnNamesInAst = baseAst?.columns.map((col) => {
@@ -2075,7 +2147,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
2075
2147
  setOpenPopover(null);
2076
2148
  clearCheckboxes();
2077
2149
  }
2078
- } }) })] }))] }), (0, jsx_runtime_1.jsx)("div", { style: { height: 28, width: '100%' } }), (0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)("div", { style: { height: 4, width: '100%' } }), (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: initialTableName, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processColumnsForChartBuilder(Object.keys(rows[0] ?? {})), triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
2150
+ } }) })] }))] }), (0, jsx_runtime_1.jsx)("div", { style: { height: 28, width: '100%' } }), (0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)("div", { style: { height: 4, width: '100%' } }), (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: initialTableName, CardComponent: CardComponent, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processColumnsForChartBuilder(Object.keys(rows[0] ?? {})), triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
2079
2151
  setPivot(null);
2080
2152
  setPivotData(null);
2081
2153
  },
@@ -2101,7 +2173,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
2101
2173
  setPivotValueField(pivot?.valueField);
2102
2174
  setPivotAggregation(pivot?.aggregationType);
2103
2175
  setPivotPopUpTitle('Edit Pivot');
2104
- }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: () => {
2176
+ }, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: () => {
2105
2177
  setPivot(null);
2106
2178
  setPivotData(null);
2107
2179
  setBaseAst((0, util_1.deepCopy)(baseAst)); // trigger refetch
@@ -2230,6 +2302,9 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
2230
2302
  boxSizing: 'border-box',
2231
2303
  ...containerStyle,
2232
2304
  }, children: [(0, jsx_runtime_1.jsxs)(SidebarComponent, { children: [(0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Columns" }), (0, jsx_runtime_1.jsx)("div", { style: { height: 4, width: '100%' } }), (0, jsx_runtime_1.jsx)(DraggableColumns, {}), (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
2305
+ if (!orderedColumnNames) {
2306
+ return;
2307
+ }
2233
2308
  if (!openPopover) {
2234
2309
  setOpenPopover('AddColumnPopover');
2235
2310
  }
@@ -2353,7 +2428,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
2353
2428
  setOpenPopover(null);
2354
2429
  clearCheckboxes();
2355
2430
  }
2356
- } }) })] }))] }), (0, jsx_runtime_1.jsx)("div", { style: { height: 28, width: '100%' } }), (0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)("div", { style: { height: 4, width: '100%' } }), (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: initialTableName, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processColumnsForChartBuilder(Object.keys(rows[0] ?? {})), triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
2431
+ } }) })] }))] }), (0, jsx_runtime_1.jsx)("div", { style: { height: 28, width: '100%' } }), (0, jsx_runtime_1.jsx)(SidebarHeadingComponent, { label: "Pivot" }), (0, jsx_runtime_1.jsx)("div", { style: { height: 4, width: '100%' } }), (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: initialTableName, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processColumnsForChartBuilder(Object.keys(rows[0] ?? {})), triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
2357
2432
  setPivot(null);
2358
2433
  setPivotData(null);
2359
2434
  }, selectPivot: (pivot) => {
@@ -2381,7 +2456,7 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
2381
2456
  setPivotValueField(pivot?.valueField);
2382
2457
  setPivotAggregation(pivot?.aggregationType);
2383
2458
  setPivotPopUpTitle('Edit Pivot');
2384
- }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: () => {
2459
+ }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, CardComponent: CardComponent, showEdit: false, onClose: () => {
2385
2460
  setPivot(null);
2386
2461
  setPivotData(null);
2387
2462
  setBaseAst((0, util_1.deepCopy)(baseAst));
@@ -2573,6 +2648,6 @@ function ReportBuilder({ initialTableName = '', onSubmitChartBuilder = () => voi
2573
2648
  whiteSpace: 'nowrap',
2574
2649
  }, children: errorMessage })), (0, jsx_runtime_1.jsx)("div", { style: { width: '100%' } }), baseAst && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { label: isCopying ? '✅ Copied' : 'Copy SQL', onClick: () => copyToClipboard(activeQuery) }), (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
2575
2650
  setIsChartBuilderOpen(true);
2576
- }, label: 'Add to dashboard' })] }))] })] }), (0, jsx_runtime_1.jsx)("style", { children: `body{margin:0;}` }), (0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { rows: rows, columns: processColumnsForChartBuilder(Object.keys(rows[0] ?? {})), fields: fields, pivot: pivot, query: activeQuery, showTableFormatOptions: isAdminEnabled, showDateFieldOptions: isAdminEnabled, showAccessControlOptions: isAdminEnabled, title: "Add to dashboard", isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onSubmitChartBuilder, destinationDashboard: destinationDashboard, organizationName: organizationName, pivotData: pivotData, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, ModalComponent: ModalComponent, PopoverComponent: PopoverComponent, DeleteButtonComponent: DeleteButtonComponent })] }));
2651
+ }, label: 'Add to dashboard' })] }))] })] }), (0, jsx_runtime_1.jsx)("style", { children: `body{margin:0;}` }), (0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { rows: rows, columns: processColumnsForChartBuilder(Object.keys(rows[0] ?? {})), fields: fields, pivot: pivot, query: activeQuery, showTableFormatOptions: isAdminEnabled, showDateFieldOptions: isAdminEnabled, showAccessControlOptions: isAdminEnabled, title: "Add to dashboard", isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onSubmitChartBuilder, destinationDashboard: destinationDashboard, organizationName: organizationName, pivotData: pivotData, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, CardComponent: CardComponent, ModalComponent: ModalComponent, PopoverComponent: PopoverComponent, DeleteButtonComponent: DeleteButtonComponent })] }));
2577
2652
  }
2578
2653
  exports.default = ReportBuilder;
@@ -51,6 +51,12 @@ export interface SQLEditorProps {
51
51
  * A component to show while the query results are loading.
52
52
  */
53
53
  LoadingComponent?: () => JSX.Element;
54
+ /** A card component used as a dismissable container of pivot information. */
55
+ CardComponent?: (props: {
56
+ children: ReactNode;
57
+ onClick?: () => void;
58
+ onDelete?: () => void;
59
+ }) => JSX.Element;
54
60
  /**
55
61
  * A modal component to use to open the add to dashboard dialog.
56
62
  */
@@ -98,10 +104,6 @@ export interface SQLEditorProps {
98
104
  * Whether the "new query" button is enabled.
99
105
  */
100
106
  isNewQueryEnabled?: boolean;
101
- /**
102
- * Whether the SQLEditor is in edit mode.
103
- */
104
- isEditMode?: boolean;
105
107
  /**
106
108
  * Whether to show table format options.
107
109
  */
@@ -174,7 +176,7 @@ export interface SQLEditorProps {
174
176
  * ### SQLEditor API
175
177
  * @see https://docs.quillsql.com/components/sql-editor
176
178
  */
177
- export default function SQLEditor({ ButtonComponent, SecondaryButtonComponent, TextInputComponent, TableComponent, isNewQueryEnabled, LoadingComponent, ModalComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode, isChartBuilderEnabled, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel, dashboardItem, organizationName, isChartBuilderHorizontalView, containerStyle, }: SQLEditorProps): import("react/jsx-runtime").JSX.Element;
179
+ export default function SQLEditor({ ButtonComponent, SecondaryButtonComponent, TextInputComponent, TableComponent, isNewQueryEnabled, LoadingComponent, ModalComponent, CardComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isChartBuilderEnabled, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel, dashboardItem, organizationName, isChartBuilderHorizontalView, containerStyle, }: SQLEditorProps): import("react/jsx-runtime").JSX.Element;
178
180
  export declare const SchemaListComponent: ({ schema, theme, loading, LoadingComponent, width, onClick, }: {
179
181
  schema: any;
180
182
  theme: any;
@@ -1 +1 @@
1
- {"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ const ChartBuilder_1 = require("./ChartBuilder");
16
16
  const UiComponents_1 = require("./components/UiComponents");
17
17
  const UiComponents_2 = require("./components/UiComponents");
18
18
  const width_1 = require("./utils/width");
19
+ const QuillCard_1 = require("./components/QuillCard");
19
20
  function convertPostgresColumn(column) {
20
21
  let format;
21
22
  let fieldType;
@@ -137,7 +138,7 @@ function setEditorTheme(editor, monaco) {
137
138
  * ### SQLEditor API
138
139
  * @see https://docs.quillsql.com/components/sql-editor
139
140
  */
140
- function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, TextInputComponent = UiComponents_2.QuillTextInput, TableComponent = UiComponents_1.QuillTableComponent, isNewQueryEnabled = false, LoadingComponent, ModalComponent = UiComponents_1.MemoizedModal, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode = false, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, }) {
141
+ function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, TextInputComponent = UiComponents_2.QuillTextInput, TableComponent = UiComponents_1.QuillTableComponent, isNewQueryEnabled = false, LoadingComponent, ModalComponent = UiComponents_1.MemoizedModal, CardComponent = QuillCard_1.QuillCard, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, }) {
141
142
  const [sqlPrompt, setSqlPrompt] = (0, react_1.useState)('');
142
143
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
143
144
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
@@ -356,7 +357,7 @@ function SQLEditor({ ButtonComponent = UiComponents_1.MemoizedButton, SecondaryB
356
357
  justifyContent: 'flex-end',
357
358
  width: '100%',
358
359
  height: '70px',
359
- }, children: (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel }) }))] })] }) }) })), (0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { rows: rows, columns: columns, fields: fields, query: query, horizontalView: isChartBuilderHorizontalView, isEditMode: isEditMode, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, destinationDashboard: destinationDashboard, title: chartBuilderTitle, button: chartBuilderButtonLabel, buttonLabel: addToDashboardButtonLabel, dashboardItem: dashboardItem, organizationName: organizationName, Modal: ModalComponent, Button: ButtonComponent })] }));
360
+ }, children: (0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel }) }))] })] }) }) })), (0, jsx_runtime_1.jsx)(ChartBuilder_1.ChartBuilderWithModal, { rows: rows, columns: columns, fields: fields, query: query, horizontalView: isChartBuilderHorizontalView, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, destinationDashboard: destinationDashboard, title: chartBuilderTitle, button: chartBuilderButtonLabel, buttonLabel: addToDashboardButtonLabel, dashboardItem: dashboardItem, organizationName: organizationName, CardComponent: CardComponent, Modal: ModalComponent, Button: ButtonComponent })] }));
360
361
  }
361
362
  exports.default = SQLEditor;
362
363
  const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI, handleClearQuery, defineEditorTheme, setEditorTheme, ButtonComponent, SecondaryButtonComponent, isNewQueryEnabled, theme, loading, LoadingComponent, }) => {
@@ -40,7 +40,7 @@ export interface TableProps {
40
40
  * ]}'
41
41
  * ```
42
42
  */
43
- rows: {
43
+ rows?: {
44
44
  [key: string]: any;
45
45
  }[];
46
46
  /**
@@ -66,7 +66,7 @@ export interface TableProps {
66
66
  * ]}'
67
67
  * ```
68
68
  */
69
- columns: {
69
+ columns?: {
70
70
  label: string;
71
71
  field: string;
72
72
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CAiC/B,CAAC;AA8FF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IAEJ;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CAiC/B,CAAC;AA8FF,eAAe,KAAK,CAAC"}
@@ -44,8 +44,8 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePic
44
44
  startDate: value.startDate,
45
45
  endDate: value.endDate,
46
46
  });
47
- }, onChangePreset: (value) => {
48
- onChangeFilter(filter, { preset: value });
47
+ }, onChangePreset: (e) => {
48
+ onChangeFilter(filter, { preset: e.target.value });
49
49
  }, presetOptions: filter.options.map((option) => {
50
50
  return { label: option.label, value: option.label };
51
51
  }) }), comparisonRange && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsxs)("div", { style: {
@@ -1,14 +1,9 @@
1
1
  import { ReactNode } from 'react';
2
- import { QuillTheme } from '../QuillProvider';
3
2
  interface QuillCardProps {
4
3
  children: ReactNode;
5
- theme: QuillTheme;
6
4
  onClick?: () => void;
7
- onClose?: () => void;
8
- isSelected?: boolean;
9
- clickable?: boolean;
10
- minHeight?: number;
5
+ onDelete?: () => void;
11
6
  }
12
- export declare function QuillCard({ children, theme, onClick, isSelected, clickable, onClose, minHeight, style, }: QuillCardProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function QuillCard({ children, onClick, onDelete, }: QuillCardProps): import("react/jsx-runtime").JSX.Element;
13
8
  export {};
14
9
  //# sourceMappingURL=QuillCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillCard.d.ts","sourceRoot":"","sources":["../../../src/components/QuillCard.tsx"],"names":[],"mappings":"AACA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,UAAU,cAAc;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,KAAK,EACL,OAAO,EACP,UAAkB,EAClB,SAAgB,EAChB,OAAO,EACP,SAAa,EACb,KAAU,GACX,EAAE,cAAc,2CAmEhB"}
1
+ {"version":3,"file":"QuillCard.d.ts","sourceRoot":"","sources":["../../../src/components/QuillCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,UAAU,cAAc;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,cAAc,2CA4EhB"}
@@ -3,20 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.QuillCard = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const assets_1 = require("../assets");
6
- function QuillCard({ children, theme, onClick, isSelected = false, clickable = true, onClose, minHeight = 0, style = {}, }) {
7
- return ((0, jsx_runtime_1.jsxs)("div", { className: clickable ? 'quill-card-hover' : '', style: {
6
+ const hooks_1 = require("../hooks");
7
+ function QuillCard({ children, onClick, onDelete, }) {
8
+ const theme = (0, hooks_1.useTheme)();
9
+ return ((0, jsx_runtime_1.jsxs)("div", { className: onClick ? 'quill-card-hover' : '', style: {
8
10
  backgroundColor: theme.backgroundColor || 'white',
9
- cursor: clickable ? 'pointer' : 'default',
11
+ cursor: onClick ? 'pointer' : 'default',
10
12
  padding: 16,
11
13
  borderRadius: 8,
12
14
  boxShadow: '0 1px 4px 0 rgba(56, 65, 81, 0.07)',
13
15
  borderWidth: theme.borderWidth,
14
16
  borderStyle: 'solid',
15
- borderColor: isSelected ? '#aaaaaa' : theme.borderColor,
17
+ borderColor: theme.borderColor,
16
18
  overflowX: 'hidden',
17
19
  position: 'relative',
18
- minHeight: minHeight,
19
- ...style,
20
20
  }, onClick: onClick, children: [(0, jsx_runtime_1.jsx)("style", { children: `
21
21
  .quill-card-hover:hover {
22
22
  background-color: #f9f9f9 !important;
@@ -27,9 +27,11 @@ function QuillCard({ children, theme, onClick, isSelected = false, clickable = t
27
27
  background-color: #f5f5f5;
28
28
  }
29
29
  }
30
- ` }), onClose && ((0, jsx_runtime_1.jsxs)("button", { className: "quill-delete-button", type: "button", onClick: e => {
30
+ ` }), onDelete && ((0, jsx_runtime_1.jsxs)("button", { className: "quill-delete-button", type: "button", onClick: (e) => {
31
+ onDelete();
32
+ // Since this button is inside of the card, we do not want to fire
33
+ // the onClick callback as well, if we fire the onDelete callback.
31
34
  e.stopPropagation();
32
- onClose();
33
35
  }, style: {
34
36
  height: 40,
35
37
  width: 40,
@@ -49,6 +51,10 @@ function QuillCard({ children, theme, onClick, isSelected = false, clickable = t
49
51
  }
50
52
  .quill-delete-button:hover {
51
53
  background-color: rgba(56, 65, 81, 0.03);
52
- }` }), (0, jsx_runtime_1.jsx)(assets_1.XIcon, { height: "20", width: "20", fill: "#6C727F" })] })), (0, jsx_runtime_1.jsx)("div", { style: { overflowX: 'scroll' }, children: children })] }));
54
+ }` }), (0, jsx_runtime_1.jsx)(assets_1.XIcon, { height: "20", width: "20", fill: "#6C727F" })] })), (0, jsx_runtime_1.jsx)("div", { style: {
55
+ overflowX: 'scroll',
56
+ display: 'flex',
57
+ height: '100%',
58
+ }, children: children })] }));
53
59
  }
54
60
  exports.QuillCard = QuillCard;
@@ -1 +1 @@
1
- {"version":3,"file":"AddColumnPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnPopover.tsx"],"names":[],"mappings":";AAoBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,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,SAAS,EACT,YAAY,EACZ,eAAe,EACf,MAAM,GACP,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,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3D,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;CACb,2CAoNA"}
1
+ {"version":3,"file":"AddColumnPopover.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnPopover.tsx"],"names":[],"mappings":";AAoBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,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,SAAS,EACT,YAAY,EACZ,eAAe,EACf,MAAM,GACP,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,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3D,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;CACb,2CAqNA"}
@@ -26,6 +26,8 @@ function AddColumnPopover({ onSave, orderedColumnNames, setOrderedColumnNames, s
26
26
  // When a drag event ends, switch the item order.
27
27
  function handleDragEnd(event) {
28
28
  const { active, over } = event;
29
+ if (!active || !over)
30
+ return;
29
31
  if (active.id !== over.id) {
30
32
  setOrderedColumnNames((orderedColumnNames) => {
31
33
  const oldIndex = orderedColumnNames.indexOf(active.id);
@@ -17,7 +17,7 @@ const LimitSentence = ({ limit, handleDelete, setOpenPopover, onSave, popoverTit
17
17
  }, isEdit: true, onDelete: handleClickDelete, initialLimit: limit.value[0].value, TextInput: TextInput, Button: Button, SecondaryButton: SecondaryButton }) }) }));
18
18
  };
19
19
  exports.LimitSentence = LimitSentence;
20
- const AddLimitPopover = ({ onSave, initialLimit = 0, isEdit = false, onDelete = () => { }, TextInput = UiComponents_1.QuillTextInput, Button = UiComponents_1.MemoizedButton, SecondaryButton = UiComponents_1.MemoizedSecondaryButton, }) => {
20
+ const AddLimitPopover = ({ onSave, initialLimit = 10, isEdit = false, onDelete = () => { }, TextInput = UiComponents_1.QuillTextInput, Button = UiComponents_1.MemoizedButton, SecondaryButton = UiComponents_1.MemoizedSecondaryButton, }) => {
21
21
  const [limit, setLimit] = (0, react_1.useState)(initialLimit);
22
22
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
23
23
  return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: 12 }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
@@ -3,6 +3,7 @@ import { Pivot } from './pivot';
3
3
  import { TableInfo } from './schema';
4
4
  export declare function convertDateComparison(node: NSP.Select): NSP.Select;
5
5
  export declare function recursiveSearchAndReplace(node: any, search: string, replace: string): void;
6
+ export declare function recursiveSearchAndReplaceByKey(node: any, search: string, replace: string, searchKey: string): void;
6
7
  /**
7
8
  * Takes a bigquery AST as input, cleans it, and returns a Select AST.
8
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAMJ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AASjD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAuCpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,SAAS,EAAE,GACxB,GAAG,CAAC,MAAM,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,SAAS,mBAAc,EACvB,YAAY,EAAE,SAAS,EAAE;;;;;;;;;;;;;;;EAwd1B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;EA6G5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyJtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,GAAG,EACpB,GAAG,EAMJ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAc,SAAS,EAAE,MAAM,UAAU,CAAC;AASjD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAuBlE;AAGD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,QAahB;AAGD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,QAalB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CA2CpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,YAAY,EAAE,SAAS,EAAE,GACxB,GAAG,CAAC,MAAM,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,SAAS,mBAAc,EACvB,YAAY,EAAE,SAAS,EAAE;;;;;;;;;;;;;;;EAwd1B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;EA6G5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,OAyJtE;AAID,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAY1E"}