@quillsql/react 2.12.3 → 2.12.5

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 (103) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +192 -72
  3. package/dist/cjs/ChartBuilder.d.ts +24 -1
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +43 -36
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +97 -41
  8. package/dist/cjs/Context.d.ts +1 -0
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +59 -30
  11. package/dist/cjs/Dashboard.d.ts +22 -1
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +2 -2
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +47 -80
  16. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  17. package/dist/cjs/SQLEditor.js +13 -27
  18. package/dist/cjs/Table.d.ts.map +1 -1
  19. package/dist/cjs/Table.js +3 -3
  20. package/dist/cjs/components/Dashboard/DataLoader.d.ts +9 -1
  21. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  22. package/dist/cjs/components/Dashboard/DataLoader.js +146 -112
  23. package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
  24. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  25. package/dist/cjs/components/Dashboard/TableComponent.js +29 -11
  26. package/dist/cjs/components/QuillTable.d.ts +15 -2
  27. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  28. package/dist/cjs/components/QuillTable.js +58 -29
  29. package/dist/cjs/components/UiComponents.d.ts +11 -1
  30. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  31. package/dist/cjs/components/UiComponents.js +48 -4
  32. package/dist/cjs/hooks/useExport.d.ts +2 -1
  33. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  34. package/dist/cjs/hooks/useExport.js +44 -9
  35. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  36. package/dist/cjs/hooks/useQuill.js +2 -0
  37. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  38. package/dist/cjs/internals/ReportBuilder/PivotModal.js +2 -1
  39. package/dist/cjs/utils/csv.d.ts.map +1 -1
  40. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  41. package/dist/cjs/utils/dashboard.js +2 -0
  42. package/dist/cjs/utils/pivotProcessing.d.ts +2 -6
  43. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  44. package/dist/cjs/utils/pivotProcessing.js +31 -28
  45. package/dist/cjs/utils/schema.d.ts +6 -0
  46. package/dist/cjs/utils/schema.d.ts.map +1 -0
  47. package/dist/cjs/utils/schema.js +122 -0
  48. package/dist/cjs/utils/tableProcessing.d.ts +1 -1
  49. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  50. package/dist/cjs/utils/tableProcessing.js +5 -3
  51. package/dist/cjs/utils/valueFormatter.js +1 -1
  52. package/dist/esm/Chart.d.ts.map +1 -1
  53. package/dist/esm/Chart.js +193 -73
  54. package/dist/esm/ChartBuilder.d.ts +24 -1
  55. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  56. package/dist/esm/ChartBuilder.js +43 -36
  57. package/dist/esm/ChartEditor.d.ts.map +1 -1
  58. package/dist/esm/ChartEditor.js +98 -42
  59. package/dist/esm/Context.d.ts +1 -0
  60. package/dist/esm/Context.d.ts.map +1 -1
  61. package/dist/esm/Context.js +58 -29
  62. package/dist/esm/Dashboard.d.ts +22 -1
  63. package/dist/esm/Dashboard.d.ts.map +1 -1
  64. package/dist/esm/Dashboard.js +2 -2
  65. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  66. package/dist/esm/ReportBuilder.js +50 -83
  67. package/dist/esm/SQLEditor.d.ts.map +1 -1
  68. package/dist/esm/SQLEditor.js +15 -29
  69. package/dist/esm/Table.d.ts.map +1 -1
  70. package/dist/esm/Table.js +4 -4
  71. package/dist/esm/components/Dashboard/DataLoader.d.ts +9 -1
  72. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  73. package/dist/esm/components/Dashboard/DataLoader.js +147 -113
  74. package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
  75. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  76. package/dist/esm/components/Dashboard/TableComponent.js +30 -12
  77. package/dist/esm/components/QuillTable.d.ts +15 -2
  78. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  79. package/dist/esm/components/QuillTable.js +58 -26
  80. package/dist/esm/components/UiComponents.d.ts +11 -1
  81. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  82. package/dist/esm/components/UiComponents.js +47 -4
  83. package/dist/esm/hooks/useExport.d.ts +2 -1
  84. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  85. package/dist/esm/hooks/useExport.js +44 -9
  86. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  87. package/dist/esm/hooks/useQuill.js +3 -1
  88. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  89. package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -2
  90. package/dist/esm/utils/csv.d.ts.map +1 -1
  91. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  92. package/dist/esm/utils/dashboard.js +2 -0
  93. package/dist/esm/utils/pivotProcessing.d.ts +2 -6
  94. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  95. package/dist/esm/utils/pivotProcessing.js +31 -28
  96. package/dist/esm/utils/schema.d.ts +6 -0
  97. package/dist/esm/utils/schema.d.ts.map +1 -0
  98. package/dist/esm/utils/schema.js +117 -0
  99. package/dist/esm/utils/tableProcessing.d.ts +1 -1
  100. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  101. package/dist/esm/utils/tableProcessing.js +5 -3
  102. package/dist/esm/utils/valueFormatter.js +1 -1
  103. package/package.json +1 -1
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.QuillLoadingComponent = exports.QuillColumnSearchEmptyState = exports.QuillErrorMessageComponent = exports.QuillChartBuilderFormContainer = exports.QuillFilterContainerComponent = exports.QuillPivotColumnContainer = exports.QuillPivotRowContainer = exports.QuillChartBuilderInputColumnContainer = exports.QuillChartBuilderInputRowContainer = exports.QuillEmptyDashboardComponent = exports.QuillTableComponent = exports.LoadingSpinner = exports.MemoizedDeleteButton = exports.MemoizedModal = exports.MemoizedPopover = exports.MemoizedText = exports.QuillTabs = exports.DEFAULT_TAB_OPTIONS = exports.MemoizedCheckbox = exports.MemoizedLabel = exports.MemoizedSubHeader = exports.MemoizedHeader = exports.MemoizedSecondaryButton = exports.MemoizedButton = exports.QuillTextInput = void 0;
6
+ exports.QuillLoadingComponent = exports.QuillColumnSearchEmptyState = exports.QuillErrorMessageComponent = exports.QuillChartBuilderFormContainer = exports.QuillFilterContainerComponent = exports.QuillPivotColumnContainer = exports.QuillPivotRowContainer = exports.QuillChartBuilderInputColumnContainer = exports.QuillChartBuilderInputRowContainer = exports.QuillEmptyDashboardComponent = exports.QuillTableComponent = exports.QuillTableSQLEditorComponent = exports.LoadingSpinner = exports.MemoizedDeleteButton = exports.MemoizedModal = exports.MemoizedPopover = exports.MemoizedText = exports.QuillTabs = exports.DEFAULT_TAB_OPTIONS = exports.MemoizedCheckbox = exports.MemoizedLabel = exports.MemoizedSubHeader = exports.MemoizedHeader = exports.MemoizedSecondaryButton = exports.MemoizedButton = exports.QuillTextInput = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_1 = require("react");
9
9
  const assets_1 = require("../assets");
10
10
  const Context_1 = require("../Context");
11
11
  const hooks_1 = require("../hooks");
12
12
  const QuillTable_1 = __importDefault(require("./QuillTable"));
13
+ const ChartSkeleton_1 = __importDefault(require("./Chart/ChartSkeleton"));
13
14
  /**
14
15
  * The fallback TextInput element for Quill.
15
16
  */
@@ -349,11 +350,54 @@ const LoadingSpinner = () => ((0, jsx_runtime_1.jsx)("div", { style: {
349
350
  alignItems: 'center',
350
351
  }, children: (0, jsx_runtime_1.jsxs)("svg", { width: "24", height: "24", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 6)", stroke: "#364153", fill: "none", transform: "rotate(-90 12 12)", children: (0, jsx_runtime_1.jsx)("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "-180 12 12", to: "180 12 12", dur: "0.8s", repeatCount: "indefinite" }) }), (0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 1 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", stroke: '#ADB1B9', fill: "none", transform: "rotate(90 12 12)", children: (0, jsx_runtime_1.jsx)("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "0 12 12", to: "360 12 12", dur: "0.8s", repeatCount: "indefinite" }) })] }) }));
351
352
  exports.LoadingSpinner = LoadingSpinner;
352
- const QuillTableComponent = ({ rows, columns, isLoading = false, }) => {
353
+ const QuillTableSQLEditorComponent = ({ rows, columns, isLoading = false, numberOfRows, onPageChange, onSortChange, }) => {
354
+ const [sort, setSort] = (0, react_1.useState)({ field: '', direction: '' });
355
+ const [page, setPage] = (0, react_1.useState)(0);
353
356
  if (isLoading) {
354
- return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column', margin: 'auto' }, children: (0, jsx_runtime_1.jsx)(exports.LoadingSpinner, {}) }));
357
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
358
+ display: 'flex',
359
+ flexDirection: 'column',
360
+ margin: 'auto',
361
+ width: '100%',
362
+ height: '100%',
363
+ }, children: (0, jsx_runtime_1.jsx)(exports.LoadingSpinner, {}) }));
355
364
  }
356
- return (0, jsx_runtime_1.jsx)(QuillTable_1.default, { rows: rows, columns: columns, rowsPerPage: 20 });
365
+ return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { rows: rows, columns: columns, rowsPerPage: 20, numberOfRows: numberOfRows, onPageChange: (page) => {
366
+ setPage(page.currentPage);
367
+ onPageChange && onPageChange(page);
368
+ }, onSortChange: (sort) => {
369
+ setSort(sort);
370
+ setPage(0);
371
+ onSortChange && onSortChange(sort);
372
+ }, sort: sort, currentPage: page, isLoading: isLoading }));
373
+ };
374
+ exports.QuillTableSQLEditorComponent = QuillTableSQLEditorComponent;
375
+ const QuillTableComponent = ({ rows, columns, isLoading = false, numberOfRows, onPageChange, onSortChange, }) => {
376
+ const [sort, setSort] = (0, react_1.useState)({ field: '', direction: '' });
377
+ const [page, setPage] = (0, react_1.useState)(0);
378
+ const [initialLoad, setInitialLoad] = (0, react_1.useState)(true);
379
+ (0, react_1.useEffect)(() => {
380
+ if (initialLoad && !isLoading) {
381
+ setInitialLoad(false);
382
+ }
383
+ }, [isLoading]);
384
+ if (initialLoad) {
385
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
386
+ display: 'flex',
387
+ flexDirection: 'column',
388
+ margin: 'auto',
389
+ width: '100%',
390
+ height: '100%',
391
+ }, children: (0, jsx_runtime_1.jsx)(ChartSkeleton_1.default, {}) }));
392
+ }
393
+ return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { rows: rows, columns: columns, rowsPerPage: 20, numberOfRows: numberOfRows, onPageChange: (page) => {
394
+ setPage(page.currentPage);
395
+ onPageChange && onPageChange(page);
396
+ }, onSortChange: (sort) => {
397
+ setSort(sort);
398
+ setPage(0);
399
+ onSortChange && onSortChange(sort);
400
+ }, sort: sort, currentPage: page, isLoading: isLoading }));
357
401
  };
358
402
  exports.QuillTableComponent = QuillTableComponent;
359
403
  const QuillEmptyDashboardComponent = () => (0, jsx_runtime_1.jsx)("div", {});
@@ -1,5 +1,6 @@
1
- export declare const useExport: (reportId: string) => {
1
+ export declare const useExport: (reportId?: string) => {
2
2
  downloadCSV: () => void;
3
3
  downloadPDF: () => void;
4
+ isLoading: boolean;
4
5
  };
5
6
  //# sourceMappingURL=useExport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,SAAS,aAAc,MAAM;;;CAYzC,CAAC"}
1
+ {"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS,cAAe,MAAM;;;;CAmD1C,CAAC"}
@@ -2,18 +2,53 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useExport = void 0;
4
4
  const csv_1 = require("../utils/csv");
5
- const useQuill_1 = require("../hooks/useQuill");
5
+ const react_1 = require("react");
6
+ const dataFetcher_1 = require("../utils/dataFetcher");
7
+ const Context_1 = require("../Context");
6
8
  const useExport = (reportId) => {
7
- const chartData = (0, useQuill_1.useQuill)(reportId).data;
8
- if (!chartData)
9
- return { downloadCSV: () => { }, downloadPDF: () => { } };
9
+ const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
10
+ const [client] = (0, react_1.useContext)(Context_1.ClientContext);
11
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
12
+ if (!reportId) {
13
+ return { downloadCSV: () => { }, downloadPDF: () => { }, isLoading: false };
14
+ }
10
15
  return {
11
- downloadCSV: () => (0, csv_1.downloadCSV)({
12
- rows: chartData.rows,
13
- fields: chartData.columns,
14
- name: chartData.name,
15
- }),
16
+ downloadCSV: async () => {
17
+ setIsLoading(true);
18
+ const minimalFilters = Object.values(dashboardFilters).length
19
+ ? Object.values(dashboardFilters).map((filter) => {
20
+ const newFilter = { ...filter };
21
+ if (newFilter.filterType === 'date_range') {
22
+ delete newFilter['field'];
23
+ delete newFilter['options'];
24
+ delete newFilter['selectedValue'];
25
+ }
26
+ return newFilter;
27
+ })
28
+ : [];
29
+ const hostedBody = {
30
+ metadata: {
31
+ dashboardItemId: reportId,
32
+ orgId: client.customerId || '*',
33
+ clientId: client.publicKey,
34
+ task: 'item',
35
+ databaseType: client?.databaseType,
36
+ filters: minimalFilters,
37
+ },
38
+ };
39
+ const cloudBody = {
40
+ id: reportId,
41
+ };
42
+ const resp = await (0, dataFetcher_1.getData)(client, 'itempost', 'same-origin', hostedBody, cloudBody);
43
+ (0, csv_1.downloadCSV)({
44
+ rows: resp.rows,
45
+ fields: resp.columns,
46
+ name: resp.name,
47
+ });
48
+ setIsLoading(false);
49
+ },
16
50
  downloadPDF: () => { },
51
+ isLoading,
17
52
  };
18
53
  };
19
54
  exports.useExport = useExport;
@@ -1 +1 @@
1
- {"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"AAUA,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,aACT,MAAM;UAEV,WAAW,GAAG,IAAI;aACf,OAAO;WACT,MAAM,GAAG,IAAI;CAkFrB,CAAC"}
1
+ {"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"AAWA,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,aACT,MAAM;UAEV,WAAW,GAAG,IAAI;aACf,OAAO;WACT,MAAM,GAAG,IAAI;CAoFrB,CAAC"}
@@ -9,6 +9,7 @@ const errorProcessing_1 = require("../utils/errorProcessing");
9
9
  const useQuill = (reportId) => {
10
10
  const { dashboard, dispatch } = (0, react_1.useContext)(Context_1.DashboardContext);
11
11
  const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
12
+ const [customFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
12
13
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
13
14
  const [data, setData] = (0, react_1.useState)(null);
14
15
  const [loading, setLoading] = (0, react_1.useState)(true);
@@ -35,6 +36,7 @@ const useQuill = (reportId) => {
35
36
  task: 'item',
36
37
  filters: [...Object.values(dashboardFilters)],
37
38
  databaseType: client?.databaseType,
39
+ customFields,
38
40
  },
39
41
  };
40
42
  const cloudBody = {
@@ -1 +1 @@
1
- {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
34
34
  const [selectedPivotType, setSelectedPivotType] = (0, react_1.useState)('recommended');
35
35
  const [errors, setErrors] = (0, react_1.useState)([]);
36
36
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
37
+ const [customFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
37
38
  const rowFieldRef = (0, react_1.useRef)(null);
38
39
  const colFieldRef = (0, react_1.useRef)(null);
39
40
  const [pivotCardWidth, setPivotCardWidth] = (0, react_1.useState)(420);
@@ -55,7 +56,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
55
56
  setAllowedValueFields(possibleColumns.valueFields);
56
57
  return possibleColumns;
57
58
  }
58
- const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(stringColumns, query || '', data.rows || [], client);
59
+ const newUniqueValues = await (0, tableProcessing_1.getUniqueValuesByColumns)(stringColumns, query || '', data.rows || [], client, customFields);
59
60
  if (!uniqueValues ||
60
61
  (0, crypto_1.hashCode)(uniqueValues) !== (0, crypto_1.hashCode)(newUniqueValues)) {
61
62
  const possibleColumns = (0, pivotProcessing_1.getPossiblePivotFieldOptions)(columns, newUniqueValues || {});
@@ -1 +1 @@
1
- {"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/utils/csv.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,SAAU;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,SA2FA,CAAC"}
1
+ {"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/utils/csv.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,SAAU;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,SA2FA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6B3C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,GACpB,WAAW,CAmCb"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6B3C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,GACpB,WAAW,CAqCb"}
@@ -61,6 +61,8 @@ function cleanDashboardItem(item, dashboardFilters) {
61
61
  xAxisFormat: item.xAxisFormat,
62
62
  order: item.order,
63
63
  filtersApplied: item.filtersApplied,
64
+ sort: item.sort,
65
+ page: item.page,
64
66
  };
65
67
  }
66
68
  exports.cleanDashboardItem = cleanDashboardItem;
@@ -1,10 +1,6 @@
1
1
  import { Pivot } from '../internals/ReportBuilder/PivotModal';
2
- import { Column } from '../models/Columns';
3
- export declare function pivotToSql(pivot: Pivot, query: string, client: any): {
4
- query: string;
5
- preQueries?: string[];
6
- runQueryConfig?: any;
7
- } | undefined;
2
+ import { Column, ColumnInternal } from '../models/Columns';
3
+ export declare function pivotToSql(pivot: Pivot, query: string, columns: ColumnInternal[]): string;
8
4
  export declare function isValidPivot(pivot: Pivot): boolean;
9
5
  export declare function getPossiblePivotFieldOptions(columns: Column[], uniqueValues: {
10
6
  [field: string]: any;
@@ -1 +1 @@
1
- {"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,GAAG,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,CAgD5E;AAmDD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WAgBxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;;;EAsCvC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAqCP"}
1
+ {"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAsCR;AAmED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WAgBxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;;;EAsCvC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAqCP"}
@@ -3,55 +3,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cleanPivot = exports.getPossiblePivotFieldOptions = exports.isValidPivot = exports.pivotToSql = void 0;
4
4
  const util_1 = require("../components/ReportBuilder/util");
5
5
  const valueFormatter_1 = require("./valueFormatter");
6
- function pivotToSql(pivot, query, client) {
6
+ function pivotToSql(pivot, query, columns) {
7
7
  const processedAggType = pivot.aggregationType?.toLowerCase() === 'average'
8
8
  ? 'avg'
9
9
  : pivot.aggregationType?.toLowerCase();
10
10
  if ((!pivot.rowField && pivot.valueField && processedAggType) ||
11
11
  (!pivot.valueField && pivot.rowField && processedAggType === 'count')) {
12
12
  // table aggregation
13
- return {
14
- query: `with
15
- prePivotQuery as (${query})
16
- SELECT ${processedAggType}(${pivot.valueField ?? pivot.rowField}) FROM prePivotQuery`,
17
- };
13
+ return `with
14
+ original_query as (${query})
15
+ SELECT ${processedAggType}(${pivot.valueField ?? pivot.rowField}) FROM original_query`;
18
16
  }
19
17
  else if (!pivot.columnField &&
20
18
  processedAggType &&
21
19
  pivot.rowField &&
22
20
  pivot.valueField) {
23
21
  // 1-d pivot
24
- return {
25
- query: `with
26
- prePivotQuery as (${query})
27
- SELECT ${pivot.rowField}, ${processedAggType}(${pivot.valueField}) FROM prePivotQuery GROUP BY ${pivot.rowField}`,
28
- };
22
+ return `with
23
+ original_query as (${query})
24
+ SELECT ${pivot.rowField}, ${processedAggType}(${pivot.valueField}) FROM original_query GROUP BY ${pivot.rowField}`;
29
25
  }
30
26
  else if (pivot.columnField &&
31
27
  pivot.rowField &&
32
28
  pivot.valueField &&
33
29
  processedAggType) {
34
30
  // 2-d pivot
35
- const sqlQuery = createPivotSqlQuery(pivot.rowField, pivot.columnField, pivot.valueField, processedAggType, query);
36
- return {
37
- preQueries: [sqlQuery],
38
- query: '',
39
- runQueryConfig: { getPivotQuery: true },
40
- };
31
+ const sqlQuery = generateTwoDPivotQuery({ ...pivot, aggregationType: processedAggType }, query, columns);
32
+ return sqlQuery;
41
33
  }
42
- return undefined;
34
+ return query;
43
35
  }
44
36
  exports.pivotToSql = pivotToSql;
45
37
  function createPivotSqlQuery(rowField, columnField, valueField, aggregationType, query) {
46
38
  // const sqlAggregationType = convertToSqlAggregationType(aggregationType);
47
- return `with querytable as (${query}),
48
- DistinctProducts as (
39
+ return `with query_table as (${query}),
40
+ distinct_column_fields as (
49
41
  select distinct
50
42
  ${columnField}
51
43
  from
52
- querytable
44
+ query_table
53
45
  ),
54
- DynamicSQL as (
46
+ case_when_query as (
55
47
  select
56
48
  string_agg(
57
49
  concat(
@@ -64,25 +56,36 @@ function createPivotSqlQuery(rowField, columnField, valueField, aggregationType,
64
56
  '
65
57
  ) as sql_part
66
58
  from
67
- DistinctProducts
59
+ distinct_column_fields
68
60
  ),
69
- FinalQuery as (
61
+ joined_queries as (
70
62
  select
71
63
  concat(
72
- 'WITH querytable as (${query}) SELECT ${rowField}, ',
64
+ 'WITH query_table as (${query}) SELECT ${rowField}, ',
73
65
  sql_part,
74
66
  '
75
- FROM querytable
67
+ FROM query_table
76
68
  GROUP BY ${rowField}
77
69
  ORDER BY ${rowField}'
78
70
  ) as query
79
71
  from
80
- DynamicSQL
72
+ case_when_query
81
73
  )
82
74
  select
83
75
  query
84
76
  from
85
- FinalQuery;`;
77
+ joined_queries;`;
78
+ }
79
+ function generateTwoDPivotQuery(pivot, query, columns) {
80
+ const caseWhens = columns.map((column) => {
81
+ return `${pivot.aggregationType}(
82
+ CASE WHEN ${pivot.columnField} = '${column.field}' THEN ${pivot.valueField} ELSE 0 END
83
+ ) AS "${column.field}"`;
84
+ });
85
+ return `WITH
86
+ original_query as (${query})
87
+ SELECT ${pivot.rowField}, ${caseWhens.join(', ')}
88
+ FROM original_query GROUP BY ${pivot.rowField}`;
86
89
  }
87
90
  function isValidPivot(pivot) {
88
91
  if (pivot.rowField && pivot.aggregationType === 'count') {
@@ -0,0 +1,6 @@
1
+ export declare const getCustomFieldInfo: (client: any, caller?: string) => Promise<any[]>;
2
+ export declare const getSchemaInfoWithCustomFields: (client: any, caller?: string) => Promise<{
3
+ schemaData: any;
4
+ customFieldsByTable: any[];
5
+ }>;
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,kBAAkB,WAAkB,GAAG,oCAqEnD,CAAC;AAEF,eAAO,MAAM,6BAA6B,WAChC,GAAG;;;EA2CZ,CAAC"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSchemaInfoWithCustomFields = exports.getCustomFieldInfo = void 0;
4
+ const parseResponse = (results) => {
5
+ if (results.data?.data) {
6
+ if (results.data.data.queries &&
7
+ results.data.data.queries.queryResults.length > 0) {
8
+ return results.data.data.queries.queryResults;
9
+ }
10
+ else {
11
+ return results.data.data.tables;
12
+ }
13
+ }
14
+ else {
15
+ if (results.queries &&
16
+ results.queries.queryResults &&
17
+ results.queries.queryResults.length > 0) {
18
+ return results.queries.queryResults;
19
+ }
20
+ else {
21
+ return results.data.tables;
22
+ }
23
+ }
24
+ };
25
+ const getCustomFieldInfo = async (client, caller = 'se') => {
26
+ let customFieldsByTableUnique = [];
27
+ try {
28
+ const { queryEndpoint, queryHeaders, publicKey, databaseType, customerId } = client;
29
+ if (databaseType.toLowerCase() !== 'postgresql' ||
30
+ !['65d65b57cdd8ae70a5648d9c', '665610862cf7a3000be66453'].includes(publicKey)) {
31
+ throw new Error('CUSTOM FIELDS IS ONLY ALLOWED FOR POSTGRESQL DATABASES');
32
+ }
33
+ let response = await fetch(`${queryEndpoint}?cfr-${caller}`, {
34
+ method: 'POST',
35
+ headers: {
36
+ ...queryHeaders,
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ body: JSON.stringify({
40
+ metadata: {
41
+ clientId: publicKey,
42
+ publicKey,
43
+ task: 'custom-field-records',
44
+ databaseType: databaseType,
45
+ orgId: customerId,
46
+ },
47
+ }),
48
+ });
49
+ let result = await response.json();
50
+ const extractedData = parseResponse(result);
51
+ const customFieldsByTable = [];
52
+ extractedData.forEach((table) => {
53
+ if (!table.rows) {
54
+ return;
55
+ }
56
+ table.rows.forEach((row) => {
57
+ customFieldsByTable.push({
58
+ ref_table: row.ref_table,
59
+ field: row.field,
60
+ ref_column: row.ref_column,
61
+ type: row.type,
62
+ });
63
+ });
64
+ });
65
+ // make sure the are no duplicate records in extractedData
66
+ const customFieldsByTableSet = new Set();
67
+ customFieldsByTableUnique = customFieldsByTable.filter((item) => {
68
+ if (customFieldsByTableSet.has(item.ref_table + item.field + item.ref_column + item.type)) {
69
+ return false;
70
+ }
71
+ customFieldsByTableSet.add(item.ref_table + item.field + item.ref_column + item.type);
72
+ return true;
73
+ });
74
+ }
75
+ catch (e) {
76
+ console.error('CUSTOM FIELDS DISABLED');
77
+ }
78
+ return customFieldsByTableUnique;
79
+ };
80
+ exports.getCustomFieldInfo = getCustomFieldInfo;
81
+ const getSchemaInfoWithCustomFields = async (client, caller = 'se') => {
82
+ const { queryEndpoint, queryHeaders, publicKey, databaseType, customerId } = client;
83
+ let customFieldsByTableUnique = [];
84
+ let getCustomFields = true;
85
+ if (!customerId || customerId !== '*') {
86
+ try {
87
+ customFieldsByTableUnique = await (0, exports.getCustomFieldInfo)(client, caller);
88
+ }
89
+ catch (e) {
90
+ getCustomFields = false;
91
+ }
92
+ }
93
+ const response = await fetch(`${queryEndpoint}?schema-${caller}`, {
94
+ method: 'POST',
95
+ headers: {
96
+ ...queryHeaders,
97
+ 'Content-Type': 'application/json',
98
+ },
99
+ body: JSON.stringify({
100
+ metadata: {
101
+ clientId: publicKey,
102
+ publicKey: publicKey,
103
+ task: 'schema',
104
+ removeCustomerField: true,
105
+ getCustomFields: !client.customerId ||
106
+ client.customerId === '*' ||
107
+ (customFieldsByTableUnique.length === 0 && !getCustomFields)
108
+ ? false
109
+ : true,
110
+ orgId: client.customerId || '*',
111
+ customFieldsByTable: customFieldsByTableUnique,
112
+ gatherSchemaData: true,
113
+ },
114
+ }),
115
+ });
116
+ const result = await response.json();
117
+ return {
118
+ schemaData: parseResponse(result),
119
+ customFieldsByTable: customFieldsByTableUnique,
120
+ };
121
+ };
122
+ exports.getSchemaInfoWithCustomFields = getSchemaInfoWithCustomFields;
@@ -1,6 +1,6 @@
1
1
  import { Column } from '../models/Columns';
2
2
  export declare const hasColumnAlias: (columns: Column[], referencedColumns: string[]) => boolean;
3
- export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any) => Promise<{
3
+ export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any, customFields: any[]) => Promise<{
4
4
  [column: string]: {
5
5
  [value: string]: boolean;
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG;;;;SA2DZ,CAAC"}
1
+ {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG,gBACG,GAAG,EAAE;;;;SA6DpB,CAAC"}
@@ -15,7 +15,7 @@ const hasColumnAlias = (columns, referencedColumns) => {
15
15
  return false;
16
16
  };
17
17
  exports.hasColumnAlias = hasColumnAlias;
18
- const getUniqueValuesByColumns = async (columns, query, rows, client) => {
18
+ const getUniqueValuesByColumns = async (columns, query, rows, client, customFields) => {
19
19
  const stringNames = columns.map((column) => column.field);
20
20
  const uniqueValues = {};
21
21
  if (!client.databaseType ||
@@ -28,6 +28,7 @@ const getUniqueValuesByColumns = async (columns, query, rows, client) => {
28
28
  orgId: client.customerId || '*',
29
29
  clientId: client.publicKey,
30
30
  databaseType: client?.databaseType,
31
+ customFieldsByTable: customFields,
31
32
  },
32
33
  };
33
34
  const cloudBody = { query };
@@ -50,7 +51,7 @@ const getUniqueValuesByColumns = async (columns, query, rows, client) => {
50
51
  }
51
52
  else {
52
53
  const distinctValueQuery = (0, queryConstructor_1.generateDistinctQuery)(stringNames, query);
53
- const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client);
54
+ const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, customFields);
54
55
  if (!distinctStrings) {
55
56
  return {};
56
57
  }
@@ -61,7 +62,7 @@ const getUniqueValuesByColumns = async (columns, query, rows, client) => {
61
62
  return uniqueValues;
62
63
  };
63
64
  exports.getUniqueValuesByColumns = getUniqueValuesByColumns;
64
- const fetchDistinctStrings = async (query, client) => {
65
+ const fetchDistinctStrings = async (query, client, customFields) => {
65
66
  try {
66
67
  const hostedBody = {
67
68
  metadata: {
@@ -70,6 +71,7 @@ const fetchDistinctStrings = async (query, client) => {
70
71
  orgId: client.customerId || '*',
71
72
  clientId: client.publicKey,
72
73
  databaseType: client?.databaseType,
74
+ customFieldsByTable: customFields,
73
75
  },
74
76
  };
75
77
  const cloudBody = { query };
@@ -105,7 +105,7 @@ exports.quillFormat = quillFormat;
105
105
  */
106
106
  const formatString = (value) => {
107
107
  if (value === null || value === undefined) {
108
- return 'null';
108
+ return '-';
109
109
  }
110
110
  if (typeof value === 'object') {
111
111
  return JSON.stringify(value);
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgB7C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA0GzC,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAQhE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAeF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE5C;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,KACd,YAAY,CAAC;IAElB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAErC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CA8C/B,CAAC;AAynBF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAe7C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA0GzC,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAQhE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAeF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE5C;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,KAAK,YAAY,CAAC;IAE7E;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAErC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CA8C/B,CAAC;AA4wBF,eAAe,KAAK,CAAC"}