@quillsql/react 2.13.44 → 2.13.46

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 (145) hide show
  1. package/dist/cjs/Chart.d.ts +3 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +27 -30
  4. package/dist/cjs/ChartBuilder.d.ts +1 -2
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +46 -26
  7. package/dist/cjs/ChartEditor.d.ts +1 -1
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +6 -8
  10. package/dist/cjs/Context.d.ts +18 -6
  11. package/dist/cjs/Context.d.ts.map +1 -1
  12. package/dist/cjs/Context.js +98 -54
  13. package/dist/cjs/Dashboard.d.ts +7 -1
  14. package/dist/cjs/Dashboard.d.ts.map +1 -1
  15. package/dist/cjs/Dashboard.js +74 -24
  16. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  17. package/dist/cjs/ReportBuilder.js +201 -76
  18. package/dist/cjs/Table.d.ts.map +1 -1
  19. package/dist/cjs/Table.js +3 -3
  20. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/BarChart.js +1 -2
  22. package/dist/cjs/components/Chart/GaugeChart.js +1 -1
  23. package/dist/cjs/components/Chart/LineChart.js +1 -1
  24. package/dist/cjs/components/Chart/MapChart.js +1 -1
  25. package/dist/cjs/components/Chart/PieChart.js +1 -1
  26. package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -4
  27. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
  28. package/dist/cjs/components/Dashboard/DashboardSection.js +0 -1
  29. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
  30. package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +0 -1
  31. package/dist/cjs/components/Dashboard/DataLoader.d.ts +6 -4
  32. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  33. package/dist/cjs/components/Dashboard/DataLoader.js +108 -139
  34. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  35. package/dist/cjs/components/QuillTable.js +61 -59
  36. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +4 -1
  37. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  38. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +59 -63
  39. package/dist/cjs/components/ReportBuilder/schema.d.ts +7 -0
  40. package/dist/cjs/components/ReportBuilder/schema.d.ts.map +1 -1
  41. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  42. package/dist/cjs/components/UiComponents.js +11 -3
  43. package/dist/cjs/hooks/useDashboard.d.ts +23 -2
  44. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  45. package/dist/cjs/hooks/useDashboard.js +133 -3
  46. package/dist/cjs/hooks/useExport.js +3 -3
  47. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  48. package/dist/cjs/hooks/useQuill.js +8 -7
  49. package/dist/cjs/hooks/useReport.d.ts.map +1 -1
  50. package/dist/cjs/hooks/useReport.js +13 -12
  51. package/dist/cjs/index.d.ts +1 -1
  52. package/dist/cjs/index.d.ts.map +1 -1
  53. package/dist/cjs/index.js +2 -1
  54. package/dist/cjs/models/Client.d.ts +1 -0
  55. package/dist/cjs/models/Client.d.ts.map +1 -1
  56. package/dist/cjs/models/Dashboard.d.ts +5 -1
  57. package/dist/cjs/models/Dashboard.d.ts.map +1 -1
  58. package/dist/cjs/models/Filter.d.ts.map +1 -1
  59. package/dist/cjs/models/Filter.js +0 -2
  60. package/dist/cjs/models/Report.d.ts +1 -2
  61. package/dist/cjs/models/Report.d.ts.map +1 -1
  62. package/dist/cjs/utils/client.d.ts.map +1 -1
  63. package/dist/cjs/utils/client.js +1 -0
  64. package/dist/cjs/utils/dashboard.js +1 -1
  65. package/dist/cjs/utils/report.d.ts.map +1 -1
  66. package/dist/cjs/utils/report.js +2 -2
  67. package/dist/cjs/utils/reportBuilder.d.ts +11 -2
  68. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
  69. package/dist/cjs/utils/reportBuilder.js +127 -1
  70. package/dist/cjs/utils/schema.d.ts +2 -7
  71. package/dist/cjs/utils/schema.d.ts.map +1 -1
  72. package/dist/cjs/utils/schema.js +4 -0
  73. package/dist/esm/Chart.d.ts +3 -1
  74. package/dist/esm/Chart.d.ts.map +1 -1
  75. package/dist/esm/Chart.js +28 -31
  76. package/dist/esm/ChartBuilder.d.ts +1 -2
  77. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  78. package/dist/esm/ChartBuilder.js +47 -27
  79. package/dist/esm/ChartEditor.d.ts +1 -1
  80. package/dist/esm/ChartEditor.d.ts.map +1 -1
  81. package/dist/esm/ChartEditor.js +7 -9
  82. package/dist/esm/Context.d.ts +18 -6
  83. package/dist/esm/Context.d.ts.map +1 -1
  84. package/dist/esm/Context.js +100 -56
  85. package/dist/esm/Dashboard.d.ts +7 -1
  86. package/dist/esm/Dashboard.d.ts.map +1 -1
  87. package/dist/esm/Dashboard.js +74 -24
  88. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  89. package/dist/esm/ReportBuilder.js +206 -81
  90. package/dist/esm/Table.d.ts.map +1 -1
  91. package/dist/esm/Table.js +3 -3
  92. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  93. package/dist/esm/components/Chart/BarChart.js +1 -2
  94. package/dist/esm/components/Chart/GaugeChart.js +1 -1
  95. package/dist/esm/components/Chart/LineChart.js +1 -1
  96. package/dist/esm/components/Chart/MapChart.js +1 -1
  97. package/dist/esm/components/Chart/PieChart.js +1 -1
  98. package/dist/esm/components/Dashboard/DashboardFilter.js +6 -4
  99. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
  100. package/dist/esm/components/Dashboard/DashboardSection.js +0 -1
  101. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
  102. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -1
  103. package/dist/esm/components/Dashboard/DataLoader.d.ts +6 -4
  104. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  105. package/dist/esm/components/Dashboard/DataLoader.js +109 -140
  106. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  107. package/dist/esm/components/QuillTable.js +61 -59
  108. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +4 -1
  109. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  110. package/dist/esm/components/ReportBuilder/AddColumnModal.js +59 -63
  111. package/dist/esm/components/ReportBuilder/schema.d.ts +7 -0
  112. package/dist/esm/components/ReportBuilder/schema.d.ts.map +1 -1
  113. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  114. package/dist/esm/components/UiComponents.js +11 -3
  115. package/dist/esm/hooks/useDashboard.d.ts +23 -2
  116. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  117. package/dist/esm/hooks/useDashboard.js +131 -3
  118. package/dist/esm/hooks/useExport.js +4 -4
  119. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  120. package/dist/esm/hooks/useQuill.js +9 -8
  121. package/dist/esm/hooks/useReport.d.ts.map +1 -1
  122. package/dist/esm/hooks/useReport.js +14 -13
  123. package/dist/esm/index.d.ts +1 -1
  124. package/dist/esm/index.d.ts.map +1 -1
  125. package/dist/esm/index.js +1 -1
  126. package/dist/esm/models/Client.d.ts +1 -0
  127. package/dist/esm/models/Client.d.ts.map +1 -1
  128. package/dist/esm/models/Dashboard.d.ts +5 -1
  129. package/dist/esm/models/Dashboard.d.ts.map +1 -1
  130. package/dist/esm/models/Filter.d.ts.map +1 -1
  131. package/dist/esm/models/Filter.js +0 -2
  132. package/dist/esm/models/Report.d.ts +1 -2
  133. package/dist/esm/models/Report.d.ts.map +1 -1
  134. package/dist/esm/utils/client.d.ts.map +1 -1
  135. package/dist/esm/utils/client.js +1 -0
  136. package/dist/esm/utils/dashboard.js +1 -1
  137. package/dist/esm/utils/report.d.ts.map +1 -1
  138. package/dist/esm/utils/report.js +2 -2
  139. package/dist/esm/utils/reportBuilder.d.ts +11 -2
  140. package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
  141. package/dist/esm/utils/reportBuilder.js +124 -0
  142. package/dist/esm/utils/schema.d.ts +2 -7
  143. package/dist/esm/utils/schema.d.ts.map +1 -1
  144. package/dist/esm/utils/schema.js +4 -0
  145. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardSectionContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardSectionContainer.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAenB"}
1
+ {"version":3,"file":"DashboardSectionContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardSectionContainer.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAcnB"}
@@ -7,7 +7,6 @@ function DashboardSectionContainer({ style, children, ...props }) {
7
7
  width: '100%',
8
8
  display: 'flex',
9
9
  flexDirection: 'column',
10
- gap: 40,
11
10
  ...style,
12
11
  }, ...props, children: children }));
13
12
  }
@@ -14,12 +14,13 @@ export type DataLoaderChildProps = {
14
14
  rowCount?: number;
15
15
  rowCountIsLoading?: boolean;
16
16
  };
17
- export default function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, reportMode, }: {
17
+ export default function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, dashboardName, propogateChanges, }: {
18
18
  item: QuillReportInternal;
19
19
  filters: DashboardFilter[];
20
20
  userFilters?: InternalFilter[];
21
21
  additionalProcessing: AdditionalProcessing;
22
- reportMode?: boolean;
22
+ dashboardName?: string;
23
+ propogateChanges?: boolean;
23
24
  children: ({ isLoading, error, onPageChange, onSortChange, data, }: DataLoaderChildProps) => JSX.Element;
24
25
  }): JSX.Element;
25
26
  type ColorMapType = {
@@ -40,14 +41,15 @@ export type ChartDataLoaderChildProps = {
40
41
  rowCount?: number;
41
42
  rowCountIsLoading?: boolean;
42
43
  };
43
- export declare const ChartDataLoader: ({ item, children, dateBucket, additionalProcessing, filters, userFilters, reportMode, }: {
44
+ export declare const ChartDataLoader: ({ item, children, dateBucket, additionalProcessing, filters, userFilters, dashboardName, propogateChanges, }: {
44
45
  item: QuillReportInternal;
45
46
  dateBucket?: string;
46
47
  mapColorsToFields?: (_report: QuillReport, _theme: QuillTheme) => ColorMapType;
47
48
  additionalProcessing: AdditionalProcessing;
48
49
  filters: DashboardFilter[];
49
50
  userFilters?: InternalFilter[];
50
- reportMode?: boolean;
51
+ dashboardName?: string;
52
+ propogateChanges?: boolean;
51
53
  children: ({ isLoading, error, data, dateBucket, rowCount, rowCountIsLoading, }: ChartDataLoaderChildProps) => JSX.Element;
52
54
  }) => JSX.Element;
53
55
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA2BtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAyKF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,oBAAoB,EAAE,2BAA2B,EACjD,UAAkB,GACnB,EAAE;IACD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CA6Xd;AAED,KAAK,YAAY,GAAG;IAClB,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,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe,4FAQzB;IACD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,KACf,YAAY,CAAC;IAClB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,iBAAiB,GAClB,EAAE,yBAAyB,KAAK,GAAG,CAAC,OAAO,CAAC;CAC9C,KAAG,GAAG,CAAC,OAoLP,CAAC"}
1
+ {"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,OAAO,EACL,oBAAoB,EAErB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA4BtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AA+KF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,oBAAoB,EAAE,2BAA2B,EACjD,aAAa,EACb,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CA8Vd;AAED,KAAK,YAAY,GAAG;IAClB,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,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe,iHASzB;IACD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,KACf,YAAY,CAAC;IAClB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,iBAAiB,GAClB,EAAE,yBAAyB,KAAK,GAAG,CAAC,OAAO,CAAC;CAC9C,KAAG,GAAG,CAAC,OAiLP,CAAC"}
@@ -14,6 +14,7 @@ const tableProcessing_1 = require("../../utils/tableProcessing");
14
14
  // import { didFiltersChange } from '../../Chart';
15
15
  const merge_1 = require("../../utils/merge");
16
16
  const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
17
+ const useDashboard_1 = require("../../hooks/useDashboard");
17
18
  const constructReportFromItem = (item) => {
18
19
  return {
19
20
  ...report_1.EMPTY_INTERNAL_REPORT,
@@ -36,13 +37,13 @@ const constructReportFromItem = (item) => {
36
37
  };
37
38
  function filterValuesEquivalent(filters1, filters2) {
38
39
  if (filters1.length !== filters2.length) {
39
- // Find the odd filters out and return false ONLY if they have a selected value
40
+ // Find the odd filters out and return false ONLY if they have a selected value or are a date filter
40
41
  const filters1Labels = filters1.map((f) => f.label);
41
42
  const filters2Labels = filters2.map((f) => f.label);
42
- const oddFilters = filters1Labels.filter((label) => !filters2Labels.includes(label));
43
+ const oddFilters = filters1Labels.length > filters2Labels.length ? filters1Labels.filter((label) => !filters2Labels.includes(label)) : filters2Labels.filter((label) => !filters1Labels.includes(label));
43
44
  for (const filter of oddFilters) {
44
- const filter1 = filters1.find((f) => f.label === filter);
45
- if (filter1?.selectedValue) {
45
+ const filter1 = filters1Labels.length > filters2Labels.length ? filters1.find((f) => f.label === filter) : filters2.find((f) => f.label === filter);
46
+ if (filter1?.selectedValue || filter1?.startDate || filter1?.endDate) {
46
47
  return false;
47
48
  }
48
49
  }
@@ -142,33 +143,33 @@ function tenantsEquivalent(tenants1, tenants2) {
142
143
  function customFieldsEquivalent(customFields1, customFields2) {
143
144
  return (0, fast_deep_equal_1.default)(customFields1, customFields2);
144
145
  }
145
- function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, reportMode = false, }) {
146
+ function DataLoader({ item, children, filters, userFilters, additionalProcessing: defaultAdditionalProcessing, dashboardName, propogateChanges, }) {
146
147
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
147
- const [dashboard, dispatch] = (0, react_1.useContext)(Context_1.DashboardContext);
148
+ const { dashboardReports: dashboard, addReport, updateReport } = (0, useDashboard_1.useDashboardReports)(dashboardName);
148
149
  const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
149
150
  const { tenants, flags } = (0, react_1.useContext)(Context_1.TenantContext);
150
151
  const { reports, reportsDispatch, fetchIndividualReport } = (0, react_1.useContext)(Context_1.ReportsContext);
151
152
  const { reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
152
- const contextFilters = () => {
153
- return reportMode
154
- ? Object.values(reportFilters[item.id] ?? {}).map((f) => f.filter)
155
- : Object.values(dashboardFilters[item.dashboardName] ?? {}).map((f) => f.filter);
156
- };
153
+ const contextFilters = (0, react_1.useMemo)(() => {
154
+ return dashboardName
155
+ ? Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter)
156
+ : Object.values(reportFilters[item.id] ?? {}).map((f) => f.filter);
157
+ }, [dashboardFilters, reportFilters, dashboardName, item.id]);
157
158
  const [schemaData] = (0, react_1.useContext)(Context_1.SchemaDataContext);
158
159
  const [loading, setLoading] = (0, react_1.useState)(true);
159
160
  const [error, setError] = (0, react_1.useState)(undefined);
160
161
  const [previousPage, setPreviousPage] = (0, react_1.useState)(0);
161
162
  const [additionalProcessing, setAdditionalProcessing] = (0, react_1.useState)(defaultAdditionalProcessing);
162
163
  const chartReport = (0, react_1.useMemo)(() => {
163
- const report = (reportMode ? reports : dashboard)[item.id];
164
+ const report = (dashboardName ? dashboard : reports)[item.id];
164
165
  if (report) {
165
- return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters());
166
+ return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters);
166
167
  }
167
168
  else {
168
169
  return constructReportFromItem(item);
169
170
  }
170
171
  }, [
171
- (reportMode ? reports : dashboard)[item.id],
172
+ (dashboardName ? dashboard : reports)[item.id],
172
173
  reportFilters,
173
174
  dashboardFilters,
174
175
  ]);
@@ -198,16 +199,12 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
198
199
  const rowCount = await (0, report_1.fetchReportRowCount)(item.id, client, tenants, flags, true, filters.concat(userFilters ?? []), processing, schemaData.customFields, rowCountAbortController.current.signal);
199
200
  rowCountAbortController.current = null;
200
201
  if (rowCount) {
201
- if (reportMode) {
202
- reportsDispatch({
203
- type: 'UPDATE_REPORT',
204
- id: item.id,
205
- data: { rowCount },
206
- });
202
+ if (dashboardName) {
203
+ updateReport({ id: item.id, rowCount });
207
204
  }
208
205
  else {
209
- dispatch({
210
- type: 'UPDATE_DASHBOARD_ITEM',
206
+ reportsDispatch({
207
+ type: 'UPDATE_REPORT',
211
208
  id: item.id,
212
209
  data: { rowCount },
213
210
  });
@@ -243,7 +240,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
243
240
  }
244
241
  };
245
242
  const onSortChange = (sort) => {
246
- const report = (reportMode ? reports : dashboard)[item.id];
243
+ const report = (dashboardName ? dashboard : reports)[item.id];
247
244
  if ((0, paginationProcessing_1.shouldSortInMemory)(additionalProcessing.page ?? paginationProcessing_1.DEFAULT_PAGINATION, report?.rowCount)) {
248
245
  return;
249
246
  }
@@ -268,9 +265,9 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
268
265
  updateTableRowsAbortController.current?.abort();
269
266
  updateTableRowsAbortController.current = new AbortController();
270
267
  const updatedProcessing = { ...additionalProcessing, ...processing };
271
- const pivotQuery = (reportMode ? reports : dashboard)[item.id]
268
+ const pivotQuery = (dashboardName ? dashboard : reports)[item.id]
272
269
  ?.pivotQuery;
273
- const comparisonPivotQuery = (reportMode ? reports : dashboard)[item.id]
270
+ const comparisonPivotQuery = (dashboardName ? dashboard : reports)[item.id]
274
271
  ?.comparisonPivotQuery;
275
272
  const paginatedRows = await (0, tableProcessing_1.fetchResultsByReport)({
276
273
  reportId: item.id,
@@ -292,54 +289,27 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
292
289
  }
293
290
  const isPivotPagination = !!(item.pivot && pivotQuery);
294
291
  const prevRows = isPivotPagination
295
- ? (reportMode ? reports : dashboard)[item.id]?.pivotRows
296
- : (reportMode ? reports : dashboard)[item.id]?.rows;
292
+ ? (dashboardName ? dashboard : reports)[item.id]?.pivotRows
293
+ : (dashboardName ? dashboard : reports)[item.id]?.rows;
297
294
  let updatedRows = [...(prevRows ?? []), ...paginatedRows.rows];
298
295
  if (resetRows) {
299
296
  updatedRows = paginatedRows.rows;
300
297
  }
301
- if (reportMode) {
302
- if (isPivotPagination) {
303
- reportsDispatch({
304
- type: 'UPDATE_REPORT',
305
- id: item.id,
306
- data: {
307
- pivotRows: updatedRows,
308
- loadingRows: false,
309
- filtersApplied: userFilters,
310
- },
311
- });
312
- }
313
- else {
314
- reportsDispatch({
315
- type: 'UPDATE_REPORT',
316
- id: item.id,
317
- data: {
318
- rows: updatedRows,
319
- loadingRows: false,
320
- filtersApplied: userFilters,
321
- },
322
- });
323
- }
298
+ if (dashboardName) {
299
+ updateReport({
300
+ id: item.id,
301
+ [isPivotPagination ? 'pivotRows' : 'rows']: updatedRows,
302
+ loadingRows: false,
303
+ filtersApplied: userFilters,
304
+ });
324
305
  }
325
306
  else {
326
307
  if (isPivotPagination) {
327
- dispatch({
328
- type: 'UPDATE_DASHBOARD_ITEM',
329
- id: item.id,
330
- data: {
331
- pivotRows: updatedRows,
332
- loadingRows: false,
333
- filtersApplied: userFilters,
334
- },
335
- });
336
- }
337
- else {
338
- dispatch({
339
- type: 'UPDATE_DASHBOARD_ITEM',
308
+ reportsDispatch({
309
+ type: 'UPDATE_REPORT',
340
310
  id: item.id,
341
311
  data: {
342
- rows: updatedRows,
312
+ [isPivotPagination ? 'pivotRows' : 'rows']: updatedRows,
343
313
  loadingRows: false,
344
314
  filtersApplied: userFilters,
345
315
  },
@@ -372,7 +342,32 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
372
342
  rowsAbortController.current?.abort();
373
343
  rowsAbortController.current = new AbortController();
374
344
  try {
375
- if (reportMode) {
345
+ if (dashboardName) {
346
+ const { report: fetchedReport, error } = await (0, report_1.fetchReport)({
347
+ reportId: item.id,
348
+ client,
349
+ tenants,
350
+ flags,
351
+ useReportTask: true,
352
+ filters: filters.concat(userFilters ?? []),
353
+ additionalProcessing: processing,
354
+ customFields: schemaData.customFields,
355
+ rowsOnly: true,
356
+ rowCountOnly: false,
357
+ abortSignal: rowsAbortController.current.signal,
358
+ });
359
+ addReport({
360
+ ...fetchedReport,
361
+ id: item.id,
362
+ triggerReload: false,
363
+ rowCount: fetchedReport.pivot ? fetchedReport.rowCount : 0,
364
+ filtersApplied: userFilters,
365
+ loadingRows: false,
366
+ // rowCount 0 indicates it's still loading if row length is nonzero
367
+ });
368
+ setError(error);
369
+ }
370
+ else {
376
371
  try {
377
372
  await fetchIndividualReport({
378
373
  reportId: item.id,
@@ -383,6 +378,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
383
378
  additionalProcessing: processing,
384
379
  reportAbortController: rowsAbortController.current,
385
380
  customFields: schemaData.customFields,
381
+ propogateChanges,
386
382
  });
387
383
  rowsAbortController.current = null;
388
384
  setError(undefined);
@@ -391,33 +387,6 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
391
387
  setError(e.message ?? 'Error fetching report');
392
388
  }
393
389
  }
394
- else {
395
- const { report: fetchedReport, error } = await (0, report_1.fetchReport)({
396
- reportId: item.id,
397
- client,
398
- tenants,
399
- flags,
400
- useReportTask: true,
401
- filters: filters.concat(userFilters ?? []),
402
- additionalProcessing: processing,
403
- customFields: schemaData.customFields,
404
- rowsOnly: true,
405
- rowCountOnly: false,
406
- abortSignal: rowsAbortController.current.signal,
407
- });
408
- dispatch({
409
- type: 'ADD_DASHBOARD_ITEM',
410
- id: item.id,
411
- data: {
412
- ...fetchedReport,
413
- triggerReload: false,
414
- rowCount: fetchedReport.pivot ? fetchedReport.rowCount : 0,
415
- filtersApplied: userFilters,
416
- loadingRows: false,
417
- }, // rowCount 0 indicates it's still loading if row length is nonzero
418
- });
419
- setError(error);
420
- }
421
390
  if (!item.pivot) {
422
391
  fetchRowCount(processing);
423
392
  }
@@ -440,11 +409,11 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
440
409
  // we should be fetching this data directly when mutating filters/tenants rather than using a magical effect
441
410
  (0, react_1.useEffect)(() => {
442
411
  if (schemaData.isSchemaLoading ||
443
- (filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
412
+ (filterValuesEquivalent(previousFilters.current ?? contextFilters, filters) &&
444
413
  userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
445
414
  tenantsEquivalent(previousTenants.current ?? [], tenants ?? []) &&
446
415
  customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
447
- ((reportMode ? reports : dashboard)[item.id]?.rows?.length || rowsAbortController.current))) {
416
+ ((dashboardName ? dashboard : reports)[item.id]?.rows?.length || rowsAbortController.current))) {
448
417
  if (!rowsAbortController.current && !schemaData.isSchemaLoading)
449
418
  setLoading(false);
450
419
  return;
@@ -464,14 +433,14 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
464
433
  schemaData.isSchemaLoading,
465
434
  ]);
466
435
  (0, react_1.useEffect)(() => {
467
- const tempReport = (reportMode ? reports : dashboard)[item.id];
436
+ const tempReport = (dashboardName ? dashboard : reports)[item.id];
468
437
  if (tempReport?.triggerReload) {
469
438
  fetchReportHelper(additionalProcessing);
470
439
  }
471
440
  else if (tempReport?.error) {
472
441
  setError(tempReport.error);
473
442
  }
474
- }, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
443
+ }, [(dashboardName ? dashboard : reports)[item.id]?.triggerReload, (dashboardName ? dashboard : reports)[item.id]?.error]);
475
444
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children({
476
445
  isLoading: loading,
477
446
  error,
@@ -484,17 +453,17 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
484
453
  }
485
454
  // The same data-loader pattern as above, but with special logic for charts
486
455
  // At some point these may be able to get merged into one function.
487
- const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, filters, userFilters, reportMode = false, }) => {
488
- const [dashboard, dispatch] = (0, react_1.useContext)(Context_1.DashboardContext);
456
+ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, filters, userFilters, dashboardName, propogateChanges, }) => {
457
+ const { dashboardReports: dashboard, addReport } = (0, useDashboard_1.useDashboardReports)(dashboardName);
489
458
  const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
490
459
  const { reports, fetchIndividualReport } = (0, react_1.useContext)(Context_1.ReportsContext);
491
460
  const { reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
492
461
  const { tenants, flags } = (0, react_1.useContext)(Context_1.TenantContext);
493
- const contextFilters = () => {
494
- return reportMode
495
- ? Object.values(reportFilters[item.id] ?? {}).map((f) => f.filter)
496
- : Object.values(dashboardFilters[item.dashboardName] ?? {}).map((f) => f.filter);
497
- };
462
+ const contextFilters = (0, react_1.useMemo)(() => {
463
+ return dashboardName
464
+ ? Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter)
465
+ : Object.values(reportFilters[item.id] ?? {}).map((f) => f.filter);
466
+ }, [dashboardFilters, reportFilters, dashboardName, item.id]);
498
467
  const [loading, setLoading] = (0, react_1.useState)(true);
499
468
  const [error, setError] = (0, react_1.useState)(undefined);
500
469
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
@@ -507,13 +476,13 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
507
476
  const fetchReportAbortController = (0, react_1.useRef)(null);
508
477
  const rowsRequestId = (0, react_1.useRef)(0);
509
478
  const chartReport = (0, react_1.useMemo)(() => {
510
- const report = reportMode ? reports[item.id] : dashboard[item.id];
479
+ const report = dashboardName ? dashboard[item.id] : reports[item.id];
511
480
  if (!report) {
512
481
  return constructReportFromItem(item);
513
482
  }
514
- return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters());
483
+ return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters);
515
484
  }, [
516
- (reportMode ? reports : dashboard)[item.id],
485
+ (dashboardName ? dashboard : reports)[item.id],
517
486
  reportFilters,
518
487
  dashboardFilters,
519
488
  ]);
@@ -531,7 +500,32 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
531
500
  fetchReportAbortController.current?.abort();
532
501
  fetchReportAbortController.current = new AbortController();
533
502
  try {
534
- if (reportMode) {
503
+ if (dashboardName) {
504
+ const { report, error } = await (0, report_1.fetchReport)({
505
+ reportId: item.id,
506
+ client,
507
+ tenants,
508
+ flags,
509
+ useReportTask,
510
+ filters: filters.concat(userFilters ?? []),
511
+ additionalProcessing: {
512
+ ...additionalProcessing,
513
+ ...{ page: paginationProcessing_1.DEFAULT_PAGINATION },
514
+ },
515
+ dateBucket,
516
+ customFields: schemaData.customFields,
517
+ abortSignal: fetchReportAbortController.current.signal,
518
+ });
519
+ addReport({
520
+ ...report,
521
+ id: item.id,
522
+ triggerReload: false,
523
+ filtersApplied: userFilters,
524
+ loadingRows: false,
525
+ });
526
+ setError(error);
527
+ }
528
+ else {
535
529
  try {
536
530
  await fetchIndividualReport({
537
531
  reportId: item.id,
@@ -546,6 +540,7 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
546
540
  dateBucket,
547
541
  reportAbortController: fetchReportAbortController.current,
548
542
  customFields: schemaData.customFields,
543
+ propogateChanges,
549
544
  });
550
545
  setError(undefined);
551
546
  }
@@ -553,34 +548,6 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
553
548
  setError(e.message ?? 'Error fetching report');
554
549
  }
555
550
  }
556
- else {
557
- const { report, error } = await (0, report_1.fetchReport)({
558
- reportId: item.id,
559
- client,
560
- tenants,
561
- flags,
562
- useReportTask,
563
- filters: filters.concat(userFilters ?? []),
564
- additionalProcessing: {
565
- ...additionalProcessing,
566
- ...{ page: paginationProcessing_1.DEFAULT_PAGINATION },
567
- },
568
- dateBucket,
569
- customFields: schemaData.customFields,
570
- abortSignal: fetchReportAbortController.current.signal,
571
- });
572
- dispatch({
573
- type: 'ADD_DASHBOARD_ITEM',
574
- id: item.id,
575
- data: {
576
- ...report,
577
- triggerReload: false,
578
- filtersApplied: userFilters,
579
- loadingRows: false,
580
- },
581
- });
582
- setError(error);
583
- }
584
551
  }
585
552
  catch (e) {
586
553
  if (e instanceof Error && e.name === 'AbortError') {
@@ -600,12 +567,14 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
600
567
  return;
601
568
  }
602
569
  if (schemaData.isSchemaLoading ||
603
- (filterValuesEquivalent(previousFilters.current ?? contextFilters(), filters) &&
570
+ (filterValuesEquivalent(
571
+ // previousFilters.current ?? contextFilters,
572
+ previousFilters.current ?? [], filters) &&
604
573
  userFilterValuesEquivalent(previousUserFilters.current ?? [], userFilters ?? []) &&
605
574
  tenantsEquivalent(tenants ?? [], previousTenants.current ?? []) &&
606
575
  previousDateBucket.current === dateBucket &&
607
576
  customFieldsEquivalent(previousCustomFields.current, schemaData.customFields) &&
608
- ((reportMode ? reports : dashboard)[item.id]?.rows?.length || fetchReportAbortController.current))) {
577
+ ((dashboardName ? dashboard : reports)[item.id]?.rows?.length || fetchReportAbortController.current))) {
609
578
  if (!fetchReportAbortController.current && !schemaData.isSchemaLoading)
610
579
  setLoading(false);
611
580
  return;
@@ -626,14 +595,14 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
626
595
  schemaData.isSchemaLoading,
627
596
  ]);
628
597
  (0, react_1.useEffect)(() => {
629
- const tempReport = (reportMode ? reports : dashboard)[item.id];
598
+ const tempReport = (dashboardName ? dashboard : reports)[item.id];
630
599
  if (tempReport && tempReport.triggerReload) {
631
600
  fetchReportHelper();
632
601
  }
633
602
  else if (tempReport?.error) {
634
603
  setError(tempReport.error);
635
604
  }
636
- }, [(reportMode ? reports : dashboard)[item.id]?.triggerReload, (reportMode ? reports : dashboard)[item.id]?.error]);
605
+ }, [(dashboardName ? dashboard : reports)[item.id]?.triggerReload, (dashboardName ? dashboard : reports)[item.id]?.error]);
637
606
  return children({
638
607
  isLoading: !chartReport || loading,
639
608
  data: chartReport,
@@ -1 +1 @@
1
- {"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE;AAED,UAAU,wBAAyB,SAAQ,mBAAmB;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,WAAW,EACX,IAAI,EACJ,qBAA4B,EAC5B,cAAc,EACd,SAAS,EACT,gBAAwC,EACxC,WAAgB,EAChB,eAA8B,EAC9B,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,EAAE,wBAAwB,2CA8e1B"}
1
+ {"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE;AAED,UAAU,wBAAyB,SAAQ,mBAAmB;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,WAAW,EACX,IAAI,EACJ,qBAA4B,EAC5B,cAAc,EACd,SAAS,EACT,gBAAwC,EACxC,WAAgB,EAChB,eAA8B,EAC9B,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,EAAE,wBAAwB,2CAsf1B"}