@quillsql/react 2.16.67 → 2.16.69

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.
package/dist/index.js CHANGED
@@ -17315,6 +17315,7 @@ async function generatePivotWithSQL({
17315
17315
  sort: pivot.sort,
17316
17316
  sortDirection: pivot.sortDirection,
17317
17317
  sortField: pivot.sortField,
17318
+ sortFieldTable: pivot.sortFieldTable,
17318
17319
  sortFieldType: pivot.sortFieldType,
17319
17320
  rowLimit: pivot.rowLimit,
17320
17321
  dateBucket: resolvedDateBucket
@@ -21037,7 +21038,7 @@ import {
21037
21038
  useContext as useContext21,
21038
21039
  useEffect as useEffect19,
21039
21040
  useState as useState26,
21040
- useMemo as useMemo19,
21041
+ useMemo as useMemo20,
21041
21042
  useRef as useRef15
21042
21043
  } from "react";
21043
21044
 
@@ -21046,7 +21047,7 @@ import {
21046
21047
  useState as useState20,
21047
21048
  useEffect as useEffect16,
21048
21049
  useContext as useContext17,
21049
- useMemo as useMemo16,
21050
+ useMemo as useMemo17,
21050
21051
  useRef as useRef13
21051
21052
  } from "react";
21052
21053
 
@@ -28153,12 +28154,10 @@ var useDashboardReportInternal = (reportId, config) => {
28153
28154
  const { dashboardCustomFilters } = useContext(DashboardFiltersContext);
28154
28155
  const reportState = reports[reportId];
28155
28156
  const reportDashboardName = reportState?.dashboardName;
28157
+ const reportDashboardFilterState = reportDashboardName ? dashboardFilters[reportDashboardName] : void 0;
28156
28158
  const reportDashboardFilters = useMemo2(() => {
28157
- if (!reportDashboardName) return [];
28158
- return Object.values(dashboardFilters[reportDashboardName] ?? {}).map(
28159
- (f) => f.filter
28160
- );
28161
- }, [dashboardFilters, reportDashboardName]);
28159
+ return Object.values(reportDashboardFilterState ?? {}).map((f) => f.filter);
28160
+ }, [reportDashboardFilterState]);
28162
28161
  const {
28163
28162
  data: dashboardData,
28164
28163
  dashboardFilters: dashboardFiltersInternal,
@@ -29108,7 +29107,7 @@ var BarList = React2.forwardRef((props, ref) => {
29108
29107
  var BarList_default = BarList;
29109
29108
 
29110
29109
  // src/components/Chart/PieChart.tsx
29111
- import React4 from "react";
29110
+ import React4, { useMemo as useMemo4 } from "react";
29112
29111
  import { Legend, Pie, PieChart, ResponsiveContainer, Tooltip } from "recharts";
29113
29112
 
29114
29113
  // src/utils/color.ts
@@ -31801,7 +31800,7 @@ import { jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
31801
31800
  var defaultValueFormatter = (value) => (value * 1).toFixed(1) + "%";
31802
31801
  var parseData2 = (data, colors, categoryKey, valueKey) => {
31803
31802
  const maxItems = 20;
31804
- const slicedData = deepCopy(data).slice(0, maxItems);
31803
+ const slicedData = deepCopy(data.slice(0, maxItems));
31805
31804
  const totalValue = slicedData.reduce(
31806
31805
  (acc, dataPoint) => (
31807
31806
  // Big(acc)
@@ -32047,8 +32046,8 @@ var PieChartWrapper = React4.forwardRef(
32047
32046
  category = "pct_of_the_total",
32048
32047
  index = "status",
32049
32048
  data,
32050
- colors = [],
32051
- colorMap = {},
32049
+ colors,
32050
+ colorMap,
32052
32051
  variant = "donut",
32053
32052
  valueFormatter: valueFormatter2 = defaultValueFormatter,
32054
32053
  className,
@@ -32058,10 +32057,24 @@ var PieChartWrapper = React4.forwardRef(
32058
32057
  onClickLegendElement,
32059
32058
  yAxisFields,
32060
32059
  showLegend = false,
32060
+ showAnimation,
32061
+ isAnimationActive,
32061
32062
  ...other
32062
32063
  } = props;
32063
32064
  const isDonut = variant == "donut";
32064
- if (!data || data.length === 0) {
32065
+ const chartData = data ?? [];
32066
+ const parsedData = useMemo4(() => {
32067
+ const palette = colorMap?.[category]?.primary ?? colors ?? [];
32068
+ const containsCssVars = palette.some(
32069
+ (color) => typeof color === "string" && color.includes("var(")
32070
+ );
32071
+ const resolvedColors = containsCssVars ? Array.from({ length: chartData.length }).map(
32072
+ (_, idx) => palette[idx % palette.length] ?? palette[palette.length - 1] ?? "#808080"
32073
+ ) : palette.length >= chartData.length ? palette.slice(0, chartData.length) : generateArrayFromColor(palette, chartData.length);
32074
+ return parseData2(chartData, resolvedColors, index, category);
32075
+ }, [category, colorMap, colors, chartData, index]);
32076
+ const animationActive = isAnimationActive ?? showAnimation ?? true;
32077
+ if (chartData.length === 0) {
32065
32078
  return /* @__PURE__ */ jsx28(
32066
32079
  "div",
32067
32080
  {
@@ -32104,28 +32117,11 @@ var PieChartWrapper = React4.forwardRef(
32104
32117
  height: "100%",
32105
32118
  minWidth: 0,
32106
32119
  minHeight: 0,
32107
- initialDimension: { width: 1, height: 1 },
32108
32120
  children: /* @__PURE__ */ jsxs20(PieChart, { children: [
32109
32121
  /* @__PURE__ */ jsx28(
32110
32122
  Pie,
32111
32123
  {
32112
- data: parseData2(
32113
- data,
32114
- (() => {
32115
- const colorArray = colorMap[category] && colorMap[category]["primary"] && colorMap[category]["primary"] || colors;
32116
- const containsCssVars = colorArray.some(
32117
- (color) => typeof color === "string" && color.includes("var(")
32118
- );
32119
- if (containsCssVars) {
32120
- return Array.from({ length: data.length }).map(
32121
- (_, idx) => colorArray[idx % colorArray.length] ?? colorArray[colorArray.length - 1] ?? "#808080"
32122
- );
32123
- }
32124
- return colorArray.length >= data.length ? colorArray.slice(0, data.length) : generateArrayFromColor(colorArray, data.length);
32125
- })(),
32126
- index,
32127
- category
32128
- ),
32124
+ data: parsedData,
32129
32125
  cx: "50%",
32130
32126
  cy: "50%",
32131
32127
  startAngle: 90,
@@ -32135,7 +32131,7 @@ var PieChartWrapper = React4.forwardRef(
32135
32131
  paddingAngle: 0,
32136
32132
  dataKey: category,
32137
32133
  nameKey: index,
32138
- isAnimationActive: true,
32134
+ isAnimationActive: animationActive,
32139
32135
  onClick: onClickChartElement,
32140
32136
  labelLine: false,
32141
32137
  label: false
@@ -32192,7 +32188,7 @@ var PieChart_default = PieChartWrapper;
32192
32188
 
32193
32189
  // src/components/QuillTable.tsx
32194
32190
  init_valueFormatter();
32195
- import { useContext as useContext6, useEffect as useEffect8, useMemo as useMemo4, useState as useState10 } from "react";
32191
+ import { useContext as useContext6, useEffect as useEffect8, useMemo as useMemo5, useState as useState10 } from "react";
32196
32192
  import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
32197
32193
  var NUMERIC_TABLE_FORMATS = /* @__PURE__ */ new Set([
32198
32194
  "whole_number",
@@ -32251,7 +32247,7 @@ function QuillTable({
32251
32247
  }, [sort]);
32252
32248
  const holdFullPageLoader = rows?.length === 0 && isLoading;
32253
32249
  const pageCountUnknown = manualPagination && pageCount === -1;
32254
- const { activeRows, maxPage } = useMemo4(() => {
32250
+ const { activeRows, maxPage } = useMemo5(() => {
32255
32251
  const start = currentPage * rowsPerPage;
32256
32252
  const end = (currentPage + 1) * rowsPerPage;
32257
32253
  const rowList = rows ?? [];
@@ -33412,7 +33408,7 @@ function hashCode(obj) {
33412
33408
  }
33413
33409
 
33414
33410
  // src/components/Chart/LineChart.tsx
33415
- import { useMemo as useMemo5 } from "react";
33411
+ import { useMemo as useMemo6 } from "react";
33416
33412
 
33417
33413
  // src/components/Chart/CustomReferenceLine.tsx
33418
33414
  init_constants();
@@ -33533,7 +33529,7 @@ function LineChart({
33533
33529
  referenceLines,
33534
33530
  showLegend = false
33535
33531
  }) {
33536
- const formattedData = useMemo5(() => {
33532
+ const formattedData = useMemo6(() => {
33537
33533
  if (!data || data.length === 0) {
33538
33534
  return createLineForEmptyChart(
33539
33535
  yAxisFields,
@@ -33585,7 +33581,7 @@ function LineChart({
33585
33581
  if (x.field?.startsWith("comparison_")) return sum + 1;
33586
33582
  return sum;
33587
33583
  }, 0);
33588
- const allowDecimals = useMemo5(
33584
+ const allowDecimals = useMemo6(
33589
33585
  () => getAllowDecimals(data, yAxisFields, referenceLines),
33590
33586
  [data, yAxisFields, referenceLines]
33591
33587
  );
@@ -33596,7 +33592,6 @@ function LineChart({
33596
33592
  height: "100%",
33597
33593
  minWidth: 0,
33598
33594
  minHeight: 0,
33599
- initialDimension: { width: 1, height: 1 },
33600
33595
  children: /* @__PURE__ */ jsxs26(
33601
33596
  ComposedChart,
33602
33597
  {
@@ -33838,7 +33833,7 @@ import {
33838
33833
  ResponsiveContainer as ResponsiveContainer3,
33839
33834
  Tooltip as Tooltip3
33840
33835
  } from "recharts";
33841
- import { useMemo as useMemo6 } from "react";
33836
+ import { useMemo as useMemo7 } from "react";
33842
33837
  init_textProcessing();
33843
33838
  import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
33844
33839
  function RadarChart({
@@ -33860,7 +33855,7 @@ function RadarChart({
33860
33855
  dateFilter,
33861
33856
  showLegend = false
33862
33857
  }) {
33863
- const formattedData = useMemo6(() => {
33858
+ const formattedData = useMemo7(() => {
33864
33859
  if (!data || data.length === 0) {
33865
33860
  return [];
33866
33861
  }
@@ -33890,7 +33885,7 @@ function RadarChart({
33890
33885
  );
33891
33886
  }
33892
33887
  const getCustomColor = (index, field) => {
33893
- let key = index === 0 ? "comparison" : "primary";
33888
+ const key = index === 0 ? "comparison" : "primary";
33894
33889
  field = field.replace("comparison_", "");
33895
33890
  if (colorMap && colorMap[field]) {
33896
33891
  return colorMap[field][key];
@@ -33914,7 +33909,6 @@ function RadarChart({
33914
33909
  height: "100%",
33915
33910
  minWidth: 0,
33916
33911
  minHeight: 0,
33917
- initialDimension: { width: 1, height: 1 },
33918
33912
  children: /* @__PURE__ */ jsxs27(
33919
33913
  RechartsRadarChart,
33920
33914
  {
@@ -34069,7 +34063,7 @@ import {
34069
34063
  } from "recharts";
34070
34064
 
34071
34065
  // src/components/Chart/CustomBar.tsx
34072
- import { memo, useMemo as useMemo7 } from "react";
34066
+ import { memo, useMemo as useMemo8 } from "react";
34073
34067
  import { jsx as jsx37 } from "react/jsx-runtime";
34074
34068
  function isTopMostBarWithValue(yAxisFields, dataKey, payload) {
34075
34069
  if (!dataKey || !yAxisFields.length) return false;
@@ -34131,17 +34125,17 @@ var CustomBar = memo((props) => {
34131
34125
  }
34132
34126
  const sizeBasis = isHorizontalBars ? height : width;
34133
34127
  const customCornerRadius = theme?.barChartCornerRadius ?? (theme?.barChartCornerRadiusRatio ? theme?.barChartCornerRadiusRatio * sizeBasis : void 0);
34134
- const shouldRoundCorners = useMemo7(() => {
34128
+ const shouldRoundCorners = useMemo8(() => {
34135
34129
  return customCornerRadius !== void 0 ? customCornerRadius > 0 : isTopMostBarWithValue(yAxisFields, dataKey, payload);
34136
34130
  }, [customCornerRadius, yAxisFields, dataKey, payload]);
34137
- const radius = useMemo7(() => {
34131
+ const radius = useMemo8(() => {
34138
34132
  return shouldRoundCorners ? Math.min(
34139
34133
  customCornerRadius || sizeBasis * 0.1,
34140
34134
  width / 2,
34141
34135
  Math.abs(height) / 2
34142
34136
  ) : 0;
34143
34137
  }, [shouldRoundCorners, customCornerRadius, sizeBasis, width, height]);
34144
- const path = useMemo7(() => {
34138
+ const path = useMemo8(() => {
34145
34139
  if (isHorizontalBars) {
34146
34140
  const isNegative2 = rawWidth < 0;
34147
34141
  return radius > 0 ? createHorizontalRoundedPath(x, y, width, height, radius, !isNegative2) : `M ${x} ${y} h ${isNegative2 ? -width : width} v ${height} h ${isNegative2 ? width : -width} z`;
@@ -34183,7 +34177,7 @@ var CustomBar_default = CustomBar;
34183
34177
  // src/components/Chart/BarChart.tsx
34184
34178
  init_columnProcessing();
34185
34179
  init_textProcessing();
34186
- import { useMemo as useMemo8 } from "react";
34180
+ import { useMemo as useMemo9 } from "react";
34187
34181
  import { Fragment as Fragment3, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
34188
34182
  var CATEGORY_AXIS_WIDTH = 120;
34189
34183
  var VALUE_AXIS_WIDTH = 44;
@@ -34278,11 +34272,11 @@ function BarChart({
34278
34272
  }
34279
34273
  return fields;
34280
34274
  };
34281
- const valueDomain = useMemo8(
34275
+ const valueDomain = useMemo9(
34282
34276
  () => stackedMode ? getStackedDomain(data, yAxisFields, comparison) : getDomain(data, yAxisFields, referenceLines),
34283
34277
  [stackedMode, data, yAxisFields, referenceLines, comparison]
34284
34278
  );
34285
- const allowDecimals = useMemo8(
34279
+ const allowDecimals = useMemo9(
34286
34280
  () => getAllowDecimals(data, yAxisFields, referenceLines),
34287
34281
  [data, yAxisFields, referenceLines]
34288
34282
  );
@@ -34300,12 +34294,12 @@ function BarChart({
34300
34294
  fields: [{ field: xAxisField, format: xAxisFormat }]
34301
34295
  })
34302
34296
  );
34303
- const customBarShape = useMemo8(() => {
34297
+ const customBarShape = useMemo9(() => {
34304
34298
  if (!theme?.barChartCornerRadius && !theme?.barChartCornerRadiusRatio)
34305
34299
  return void 0;
34306
34300
  return createCustomBar(sortYAxisFields([...yAxisFields]), theme, layout);
34307
34301
  }, [isStacked, yAxisFields, theme, layout]);
34308
- const customActiveBarShape = useMemo8(() => {
34302
+ const customActiveBarShape = useMemo9(() => {
34309
34303
  if (!theme?.barChartCornerRadius && !theme?.barChartCornerRadiusRatio)
34310
34304
  return void 0;
34311
34305
  return createCustomBar(
@@ -34350,7 +34344,6 @@ function BarChart({
34350
34344
  height: "100%",
34351
34345
  minWidth: 0,
34352
34346
  minHeight: 0,
34353
- initialDimension: { width: 1, height: 1 },
34354
34347
  children: /* @__PURE__ */ jsxs28(
34355
34348
  ReChartsBarChart,
34356
34349
  {
@@ -34733,7 +34726,7 @@ init_filterProcessing();
34733
34726
 
34734
34727
  // src/components/Dashboard/DashboardFilter.tsx
34735
34728
  init_dateRangePickerUtils();
34736
- import { useMemo as useMemo12 } from "react";
34729
+ import { useMemo as useMemo13 } from "react";
34737
34730
 
34738
34731
  // src/DateRangePicker/QuillDateRangePicker.tsx
34739
34732
  import {
@@ -34761,7 +34754,7 @@ import {
34761
34754
  // src/components/QuillSelect.tsx
34762
34755
  import {
34763
34756
  useContext as useContext8,
34764
- useMemo as useMemo9,
34757
+ useMemo as useMemo10,
34765
34758
  useRef as useRef6,
34766
34759
  useState as useState11,
34767
34760
  useEffect as useEffect9
@@ -34791,7 +34784,7 @@ function QuillSelectComponent({
34791
34784
  },
34792
34785
  showModal
34793
34786
  );
34794
- const sortedItems = useMemo9(() => {
34787
+ const sortedItems = useMemo10(() => {
34795
34788
  return options.sort((a, b) => {
34796
34789
  if (a.value === null) {
34797
34790
  return -1;
@@ -34802,7 +34795,7 @@ function QuillSelectComponent({
34802
34795
  return 0;
34803
34796
  });
34804
34797
  }, [options]);
34805
- const nullLabel = useMemo9(() => {
34798
+ const nullLabel = useMemo10(() => {
34806
34799
  return sortedItems.some((item) => item.value === "-") ? "None" : "-";
34807
34800
  }, [sortedItems]);
34808
34801
  const [popoverPosition, setPopoverPosition] = useState11(void 0);
@@ -35648,7 +35641,7 @@ function getAnchorEndDate(startDate, endDate) {
35648
35641
  import React7, {
35649
35642
  useContext as useContext10,
35650
35643
  useEffect as useEffect11,
35651
- useMemo as useMemo10,
35644
+ useMemo as useMemo11,
35652
35645
  useRef as useRef8,
35653
35646
  useState as useState13
35654
35647
  } from "react";
@@ -35684,17 +35677,17 @@ function QuillMultiSelectComponentWithCombo({
35684
35677
  CheckboxState2[CheckboxState2["UNSELECTED"] = 1] = "UNSELECTED";
35685
35678
  CheckboxState2[CheckboxState2["INDETERMINATE"] = 2] = "INDETERMINATE";
35686
35679
  })(CheckboxState || (CheckboxState = {}));
35687
- const optionValues = useMemo10(
35680
+ const optionValues = useMemo11(
35688
35681
  () => new Set(options.map((opt) => opt.value ?? "")),
35689
35682
  [options]
35690
35683
  );
35691
- const potentialOptions = useMemo10(() => {
35684
+ const potentialOptions = useMemo11(() => {
35692
35685
  return value.filter((opt) => !optionValues.has(opt ?? "")).map((opt) => ({
35693
35686
  label: opt === "" ? "-" : opt?.toString() ?? "-",
35694
35687
  value: opt ?? ""
35695
35688
  })).concat(options);
35696
35689
  }, [value, options]);
35697
- const selectedOptionsLabel = useMemo10(() => {
35690
+ const selectedOptionsLabel = useMemo11(() => {
35698
35691
  if (!value || !value.length) {
35699
35692
  return "Select";
35700
35693
  }
@@ -35787,7 +35780,7 @@ function QuillMultiSelectComponentWithCombo({
35787
35780
  return 0;
35788
35781
  }).slice(0, 20);
35789
35782
  }, [potentialOptions, searchQuery]);
35790
- const nullLabel = useMemo10(() => {
35783
+ const nullLabel = useMemo11(() => {
35791
35784
  return filteredItems.some((item) => item.value === "-") ? "None" : "-";
35792
35785
  }, [filteredItems]);
35793
35786
  const updatePosition = () => {
@@ -36313,7 +36306,7 @@ var ListboxTextInput = ({
36313
36306
  // src/components/QuillSelectWithCombo.tsx
36314
36307
  import React8, {
36315
36308
  useContext as useContext11,
36316
- useMemo as useMemo11,
36309
+ useMemo as useMemo12,
36317
36310
  useRef as useRef9,
36318
36311
  useState as useState14
36319
36312
  } from "react";
@@ -36364,10 +36357,10 @@ function QuillSelectComponentWithCombo({
36364
36357
  return 0;
36365
36358
  })?.slice(0, 20) ?? [];
36366
36359
  }, [options, searchQuery]);
36367
- const nullLabel = useMemo11(() => {
36360
+ const nullLabel = useMemo12(() => {
36368
36361
  return filteredItems.some((item) => item.value === "-") ? "None" : "-";
36369
36362
  }, [filteredItems]);
36370
- const selectedLabel = useMemo11(() => {
36363
+ const selectedLabel = useMemo12(() => {
36371
36364
  const selectedOption = options?.find((elem) => elem.value === value);
36372
36365
  return selectedOption && selectedOption.label == "-" ? nullLabel : selectedOption?.label ?? "Select";
36373
36366
  }, [value, options, nullLabel]);
@@ -36635,7 +36628,7 @@ function DashboardFilter2({
36635
36628
  disabled,
36636
36629
  containerStyle
36637
36630
  }) {
36638
- const preset = useMemo12(() => {
36631
+ const preset = useMemo13(() => {
36639
36632
  if (
36640
36633
  /*'preset' in filter && */
36641
36634
  "primaryRange" in filter
@@ -37289,7 +37282,7 @@ var MetricDisplay = ({
37289
37282
  };
37290
37283
 
37291
37284
  // src/components/Dashboard/DataLoader.tsx
37292
- import { useContext as useContext13, useEffect as useEffect12, useMemo as useMemo13, useRef as useRef10, useState as useState15 } from "react";
37285
+ import { useContext as useContext13, useEffect as useEffect12, useMemo as useMemo14, useRef as useRef10, useState as useState15 } from "react";
37293
37286
  init_paginationProcessing();
37294
37287
  init_tableProcessing();
37295
37288
  import equal2 from "fast-deep-equal";
@@ -37403,7 +37396,7 @@ function DataLoader({
37403
37396
  const { reportFilters } = useContext13(ReportFiltersContext);
37404
37397
  const { getToken } = useContext13(FetchContext);
37405
37398
  const { eventTracking } = useContext13(EventTrackingContext);
37406
- const contextFilters = useMemo13(() => {
37399
+ const contextFilters = useMemo14(() => {
37407
37400
  return dashboardName ? Object.values(dashboardFilters[dashboardName] ?? {}).map(
37408
37401
  (f) => f.filter
37409
37402
  ) : Object.values(reportFilters[item.id] ?? {}).map((f) => f.filter);
@@ -37413,7 +37406,7 @@ function DataLoader({
37413
37406
  const [error, setError] = useState15(void 0);
37414
37407
  const [previousPage, setPreviousPage] = useState15(0);
37415
37408
  const [additionalProcessing, setAdditionalProcessing] = useState15(defaultAdditionalProcessing);
37416
- const chartReport = useMemo13(() => {
37409
+ const chartReport = useMemo14(() => {
37417
37410
  const report = (dashboardName ? dashboard : reports)[item.id];
37418
37411
  if (report) {
37419
37412
  return convertInternalReportToReport(
@@ -37830,7 +37823,7 @@ var ChartDataLoader = ({
37830
37823
  const { eventTracking } = useContext13(EventTrackingContext);
37831
37824
  const { reportFilters } = useContext13(ReportFiltersContext);
37832
37825
  const { tenants, flags } = useContext13(TenantContext);
37833
- const contextFilters = useMemo13(() => {
37826
+ const contextFilters = useMemo14(() => {
37834
37827
  return dashboardName ? Object.values(dashboardFilters[dashboardName] ?? {}).map(
37835
37828
  (f) => f.filter
37836
37829
  ) : Object.values(reportFilters[item.id] ?? {}).map((f) => f.filter);
@@ -37846,7 +37839,7 @@ var ChartDataLoader = ({
37846
37839
  const previousCustomFields = useRef10(schemaData.customFields);
37847
37840
  const fetchReportAbortController = useRef10(null);
37848
37841
  const rowsRequestId = useRef10(0);
37849
- const chartReport = useMemo13(() => {
37842
+ const chartReport = useMemo14(() => {
37850
37843
  const report = dashboardName ? dashboard[item.id] : reports[item.id];
37851
37844
  if (!report) {
37852
37845
  return constructReportFromItem(item);
@@ -38120,13 +38113,13 @@ var useReportInternal = (reportId) => {
38120
38113
  import equal3 from "fast-deep-equal";
38121
38114
 
38122
38115
  // src/components/Chart/MapChart.tsx
38123
- import { useEffect as useEffect13, useMemo as useMemo15, useRef as useRef11, useState as useState17 } from "react";
38116
+ import { useEffect as useEffect13, useMemo as useMemo16, useRef as useRef11, useState as useState17 } from "react";
38124
38117
  init_valueFormatter();
38125
38118
  import usStates10m from "us-atlas/states-10m.json";
38126
38119
  import worldCountries50m from "world-atlas/countries-50m.json";
38127
38120
 
38128
38121
  // src/utils/simpleMaps.ts
38129
- import React10, { useContext as useContext15, useMemo as useMemo14, useState as useState16 } from "react";
38122
+ import React10, { useContext as useContext15, useMemo as useMemo15, useState as useState16 } from "react";
38130
38123
  var d3GeoModule;
38131
38124
  var topojsonClientModule;
38132
38125
  var projections = {};
@@ -38161,7 +38154,7 @@ var requireTopojsonClientModule = () => {
38161
38154
  };
38162
38155
  var MapContext = React10.createContext(void 0);
38163
38156
  var MapProvider = ({ width, height, projection, projectionConfig = {}, children }) => {
38164
- const projectionMemo = useMemo14(() => {
38157
+ const projectionMemo = useMemo15(() => {
38165
38158
  if (typeof projection === "function") return projection;
38166
38159
  const projectionFactory = projections[String(projection)];
38167
38160
  if (!projectionFactory) {
@@ -38182,11 +38175,11 @@ var MapProvider = ({ width, height, projection, projectionConfig = {}, children
38182
38175
  }
38183
38176
  return proj;
38184
38177
  }, [width, height, projection, projectionConfig]);
38185
- const pathMemo = useMemo14(() => {
38178
+ const pathMemo = useMemo15(() => {
38186
38179
  const { geoPath } = requireD3GeoModule();
38187
38180
  return geoPath().projection(projectionMemo);
38188
38181
  }, [projectionMemo]);
38189
- const value = useMemo14(() => {
38182
+ const value = useMemo15(() => {
38190
38183
  return {
38191
38184
  width,
38192
38185
  height,
@@ -38285,12 +38278,12 @@ var ComposableMap = ({
38285
38278
  };
38286
38279
  var Geographies = ({ geography, children, parseGeographies, className = "", ...restProps }) => {
38287
38280
  const { path, projection } = useLocalMapContext();
38288
- const prepared = useMemo14(() => {
38281
+ const prepared = useMemo15(() => {
38289
38282
  const raw = getFeatures(geography);
38290
38283
  const parsed = parseGeographies ? parseGeographies(raw) : raw;
38291
38284
  return prepareFeatures(parsed, path);
38292
38285
  }, [geography, parseGeographies, path]);
38293
- const meshData = useMemo14(() => {
38286
+ const meshData = useMemo15(() => {
38294
38287
  return prepareMesh(getMesh(geography), path);
38295
38288
  }, [geography, path]);
38296
38289
  return React10.createElement(
@@ -38324,7 +38317,7 @@ var Geography = ({
38324
38317
  const { path } = useLocalMapContext();
38325
38318
  const [isPressed, setPressed] = useState16(false);
38326
38319
  const [isFocused, setFocused] = useState16(false);
38327
- const geographyEventData = useMemo14(() => {
38320
+ const geographyEventData = useMemo15(() => {
38328
38321
  const { geoCentroid, geoBounds } = requireD3GeoModule();
38329
38322
  const centroid = geography?.geometry ? geoCentroid(geography) : null;
38330
38323
  const bounds = geography?.geometry ? geoBounds(geography) : null;
@@ -38750,7 +38743,7 @@ function USMap({
38750
38743
  setScaleLog(() => scale.scaleLog);
38751
38744
  });
38752
38745
  }, []);
38753
- const colorScale = useMemo15(() => {
38746
+ const colorScale = useMemo16(() => {
38754
38747
  if (!scaleLog) return () => "#FFFFFF";
38755
38748
  const values = Object.values(mappedData).map((d) => parseFloat(d[measureField])).filter((v) => !isNaN(v));
38756
38749
  const minValue = Math.min(...values);
@@ -38776,7 +38769,7 @@ function USMap({
38776
38769
  colors,
38777
38770
  scaleLog
38778
38771
  ]);
38779
- const hoveredValue = useMemo15(() => {
38772
+ const hoveredValue = useMemo16(() => {
38780
38773
  return !hoveredState ? void 0 : mappedData[fipsToNames[hoveredState]?.abbreviation ?? ""]?.[measureField] ?? mappedData[fipsToNames[hoveredState]?.name ?? ""]?.[measureField] ?? mappedData[fipsToNames[hoveredState]?.abbreviation?.toLowerCase() ?? ""]?.[measureField] ?? mappedData[fipsToNames[hoveredState]?.name?.toLowerCase() ?? ""]?.[measureField];
38781
38774
  }, [hoveredState, mappedData, measureField]);
38782
38775
  if (!measureField) {
@@ -38946,7 +38939,7 @@ function WorldMap({
38946
38939
  setScaleLog(() => scale.scaleLog);
38947
38940
  });
38948
38941
  }, []);
38949
- const colorScale = useMemo15(() => {
38942
+ const colorScale = useMemo16(() => {
38950
38943
  if (!scaleLog) return () => "#FFFFFF";
38951
38944
  const values = Object.values(mappedData).map((d) => parseFloat(d[measureField])).filter((v) => !isNaN(v));
38952
38945
  const minValue = Math.min(...values);
@@ -38972,7 +38965,7 @@ function WorldMap({
38972
38965
  colors,
38973
38966
  scaleLog
38974
38967
  ]);
38975
- const hoveredValue = useMemo15(() => {
38968
+ const hoveredValue = useMemo16(() => {
38976
38969
  return !hoveredCountry ? void 0 : mappedData[isoToNames[hoveredCountry]?.abbreviation ?? ""]?.[measureField] ?? mappedData[isoToNames[hoveredCountry]?.name ?? ""]?.[measureField] ?? mappedData[isoToNames[hoveredCountry]?.abbreviation?.toLowerCase() ?? ""]?.[measureField] ?? mappedData[isoToNames[hoveredCountry]?.name?.toLowerCase() ?? ""]?.[measureField];
38977
38970
  }, [hoveredCountry, mappedData, measureField]);
38978
38971
  if (!measureField) {
@@ -39687,12 +39680,6 @@ function QuillTableDashboardComponent({
39687
39680
  init_valueFormatter();
39688
39681
  import { Fragment as Fragment6, jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
39689
39682
  var MAX_ROWS_FOR_GENERIC_TABLE = 500;
39690
- function sumByKey(arr, key) {
39691
- return arr.reduce((acc, cur) => {
39692
- const val = parseInt(cur[key], 10);
39693
- return isNaN(val) ? acc : acc + val;
39694
- }, 0);
39695
- }
39696
39683
  function Chart({
39697
39684
  colors,
39698
39685
  reportId,
@@ -39740,23 +39727,23 @@ function Chart({
39740
39727
  const { dashboardFilters } = useDashboardInternal(
39741
39728
  allReportsById[reportId]?.dashboardName ?? null
39742
39729
  );
39743
- const specificReportFilters = useMemo16(() => {
39730
+ const specificReportFilters = useMemo17(() => {
39744
39731
  const reportFilterValues = reportFilters[reportId];
39745
39732
  if (reportFilterValues && !hideFilters)
39746
39733
  return Object.values(reportFilterValues ?? {}).map((f) => f.filter);
39747
39734
  if (allReportsById[reportId]) return dashboardFilters ?? [];
39748
39735
  return [];
39749
39736
  }, [reportFilters[reportId], allReportsById[reportId], dashboardFilters]);
39750
- const reportDateFilter = useMemo16(() => {
39737
+ const reportDateFilter = useMemo17(() => {
39751
39738
  return specificReportFilters.find((f) => f.filterType === "date_range");
39752
39739
  }, [specificReportFilters]);
39753
- const presetOptions = useMemo16(() => {
39740
+ const presetOptions = useMemo17(() => {
39754
39741
  return reportDateFilter ? convertPresetOptionsToSelectableList(
39755
39742
  reportDateFilter.presetOptions ?? [],
39756
39743
  reportDateFilter.defaultPresetRanges ?? []
39757
39744
  ) : defaultOptionsV2;
39758
39745
  }, [reportDateFilter]);
39759
- const userFilters = useMemo16(() => {
39746
+ const userFilters = useMemo17(() => {
39760
39747
  return filters?.filter((f) => f.filterType !== "date" /* Date */)?.map(convertCustomFilter) ?? dashboardCustomFilters[allReportsById[reportId]?.dashboardName ?? ""];
39761
39748
  }, [
39762
39749
  filters,
@@ -39831,32 +39818,32 @@ function Chart({
39831
39818
  });
39832
39819
  }
39833
39820
  }, [previousFilters.current]);
39834
- const dashboardReport = useMemo16(
39821
+ const dashboardReport = useMemo17(
39835
39822
  () => allReportsById[reportId],
39836
39823
  [reportId, allReportsById]
39837
39824
  );
39838
- const report = useMemo16(() => reports[reportId], [reports, reportId]);
39825
+ const report = useMemo17(() => reports[reportId], [reports, reportId]);
39839
39826
  const [loading, setLoading] = useState20(true);
39840
39827
  const [theme] = useContext17(ThemeContext);
39841
- const colorMap = useMemo16(() => {
39828
+ const colorMap = useMemo17(() => {
39842
39829
  if (mapColorsToFields && report && theme) {
39843
39830
  return mapColorsToFields(report, theme);
39844
39831
  }
39845
39832
  }, [report, theme]);
39846
39833
  const [client, clientLoading] = useContext17(ClientContext);
39847
- const cloudCacheEnabled = useMemo16(() => {
39834
+ const cloudCacheEnabled = useMemo17(() => {
39848
39835
  return !!client?.features?.cloudCache;
39849
39836
  }, [client]);
39850
39837
  const shouldShowCloudCacheValidationErrors = isAdmin && cloudCacheEnabled;
39851
- const isMissingDateField = useMemo16(() => {
39838
+ const isMissingDateField = useMemo17(() => {
39852
39839
  if (!shouldShowCloudCacheValidationErrors) return false;
39853
39840
  return isDateFieldMissingInReport(report);
39854
39841
  }, [report, shouldShowCloudCacheValidationErrors]);
39855
- const usesLimitInQuery = useMemo16(() => {
39842
+ const usesLimitInQuery = useMemo17(() => {
39856
39843
  if (!shouldShowCloudCacheValidationErrors) return false;
39857
39844
  return reportUsesLimitClause(report);
39858
39845
  }, [report, shouldShowCloudCacheValidationErrors]);
39859
- const missingDashboardFilterFields = useMemo16(() => {
39846
+ const missingDashboardFilterFields = useMemo17(() => {
39860
39847
  if (!shouldShowCloudCacheValidationErrors || !report) return [];
39861
39848
  return getMissingDashboardFilterFields({
39862
39849
  rows: report.rows,
@@ -40190,24 +40177,24 @@ var ChartDisplay = ({
40190
40177
  const [theme] = useContext17(ThemeContext);
40191
40178
  const { dashboardFilters } = useContext17(DashboardFiltersContext);
40192
40179
  const { reportFilters } = useContext17(ReportFiltersContext);
40193
- const specificDashboardFilters = useMemo16(() => {
40180
+ const specificDashboardFilters = useMemo17(() => {
40194
40181
  const dashboardName = config?.dashboardName;
40195
40182
  if (!dashboardName) return [];
40196
40183
  return Object.values(dashboardFilters[dashboardName] ?? {}).map(
40197
40184
  (f) => f.filter
40198
40185
  );
40199
40186
  }, [dashboardFilters, config?.dashboardName]);
40200
- const specificReportFilters = useMemo16(() => {
40187
+ const specificReportFilters = useMemo17(() => {
40201
40188
  if (!reportId) return [];
40202
40189
  return Object.values(reportFilters[reportId] ?? []).map((f) => f.filter);
40203
40190
  }, [reportFilters, reportId]);
40204
- const chartColors = useMemo16(() => {
40191
+ const chartColors = useMemo17(() => {
40205
40192
  if (overrideTheme && overrideTheme.chartColors) {
40206
40193
  return colors?.length ? colors : overrideTheme && overrideTheme.chartColors && overrideTheme.chartColors.length ? overrideTheme.chartColors : ["#4E80EE", "#E14F62", "#55B5A6", "#E9A23B", "#6466E9", "#55B685"];
40207
40194
  }
40208
40195
  return colors?.length ? colors : theme && theme.chartColors && theme.chartColors.length ? theme.chartColors : ["#4E80EE", "#E14F62", "#55B5A6", "#E9A23B", "#6466E9", "#55B685"];
40209
40196
  }, [colors]);
40210
- const dateFilter = useMemo16(() => {
40197
+ const dateFilter = useMemo17(() => {
40211
40198
  const filters = specificReportFilters.length > 0 ? specificReportFilters : specificDashboardFilters;
40212
40199
  if (!hideDateRangeFilter && filters) {
40213
40200
  return findAndProcessDateFilter(filters.map((f) => f));
@@ -40217,7 +40204,7 @@ var ChartDisplay = ({
40217
40204
  const resolvedShowLegend = showLegend !== void 0 ? showLegend : config?.showLegend ?? false;
40218
40205
  const [page, setPage] = useState20(0);
40219
40206
  const rowCountForLimit = config?.pivot ? config.pivotRowCount ?? config.pivotRows?.length ?? config.rows?.length : config?.rowCount ?? config?.rows?.length;
40220
- const tableDisplay = useMemo16(() => {
40207
+ const tableDisplay = useMemo17(() => {
40221
40208
  if (!config || config.chartType?.toLowerCase() !== "table") {
40222
40209
  return void 0;
40223
40210
  }
@@ -40231,6 +40218,22 @@ var ChartDisplay = ({
40231
40218
  )
40232
40219
  };
40233
40220
  }, [config]);
40221
+ const pieData = useMemo17(() => {
40222
+ if (!config || config.chartType?.toLowerCase() !== "pie") return [];
40223
+ if (config.pivot) return config.rows ?? [];
40224
+ const rows = config.rows ?? [];
40225
+ const configuredValueField = config.yAxisFields?.[0]?.field;
40226
+ if (!configuredValueField) return rows;
40227
+ const valueField = configuredValueField;
40228
+ const total = rows.reduce((sum, row) => {
40229
+ const value = parseInt(row[valueField] ?? "", 10);
40230
+ return isNaN(value) ? sum : sum + value;
40231
+ }, 0);
40232
+ return rows.map((row) => ({
40233
+ ...row,
40234
+ count: parseInt(row[valueField] ?? "", 10) / total
40235
+ }));
40236
+ }, [config]);
40234
40237
  if (loading) {
40235
40238
  return /* @__PURE__ */ jsx50("div", { className, style: containerStyle, children: /* @__PURE__ */ jsx50(LoadingComponent, {}) });
40236
40239
  } else if (config && !["metric", "table", "gauge", "US map", "World map"].includes(
@@ -40249,15 +40252,7 @@ var ChartDisplay = ({
40249
40252
  {
40250
40253
  className,
40251
40254
  containerStyle,
40252
- data: !config?.pivot ? config?.rows?.map((row) => {
40253
- return {
40254
- ...row,
40255
- count: (
40256
- // @ts-ignore
40257
- parseInt(row[config?.yAxisFields[0]?.field]) / sumByKey(config?.rows, config?.yAxisFields[0]?.field)
40258
- )
40259
- };
40260
- }) || [] : config?.rows || [],
40255
+ data: pieData,
40261
40256
  category: config?.yAxisFields?.[0]?.field,
40262
40257
  index: config?.xAxisField,
40263
40258
  colors: chartColors,
@@ -40266,7 +40261,8 @@ var ChartDisplay = ({
40266
40261
  onClickChartElement,
40267
40262
  onClickLegendElement,
40268
40263
  yAxisFields: config?.yAxisFields,
40269
- showLegend: resolvedShowLegend
40264
+ showLegend: resolvedShowLegend,
40265
+ isAnimationActive
40270
40266
  }
40271
40267
  );
40272
40268
  }
@@ -40316,7 +40312,8 @@ var ChartDisplay = ({
40316
40312
  className,
40317
40313
  colorMap,
40318
40314
  onClickChartElement,
40319
- scrollable
40315
+ scrollable,
40316
+ showAnimation: isAnimationActive
40320
40317
  }
40321
40318
  );
40322
40319
  }
@@ -40821,7 +40818,7 @@ import {
40821
40818
  forwardRef as forwardRef2,
40822
40819
  useContext as useContext20,
40823
40820
  useEffect as useEffect17,
40824
- useMemo as useMemo17,
40821
+ useMemo as useMemo18,
40825
40822
  useRef as useRef14,
40826
40823
  useState as useState22
40827
40824
  } from "react";
@@ -41322,7 +41319,7 @@ var FilterPopoverWrapper = ({
41322
41319
  const [uniqueValues, setUniqueValues] = useState22(void 0);
41323
41320
  const [uniqueValuesIsLoading, setUniqueValuesIsLoading] = useState22(false);
41324
41321
  const prevFiltersRef = useRef14("");
41325
- const columnInternals = useMemo17(() => {
41322
+ const columnInternals = useMemo18(() => {
41326
41323
  if (!tables) {
41327
41324
  return null;
41328
41325
  }
@@ -41406,7 +41403,7 @@ var FilterPopoverWrapper = ({
41406
41403
 
41407
41404
  // src/components/ReportBuilder/FilterModal.tsx
41408
41405
  init_Filter();
41409
- import { useState as useState23, useEffect as useEffect18, useMemo as useMemo18 } from "react";
41406
+ import { useState as useState23, useEffect as useEffect18, useMemo as useMemo19 } from "react";
41410
41407
  init_textProcessing();
41411
41408
  init_filterProcessing();
41412
41409
  import { format as format8, isValid as isValid6, parse as parse4, startOfToday as startOfToday2 } from "date-fns";
@@ -41448,11 +41445,11 @@ function FilterModal({
41448
41445
  );
41449
41446
  const [filterInitialized, setFilterInitialized] = useState23(false);
41450
41447
  const [table, setTable] = useState23(void 0);
41451
- const memoizedFieldValuesMap = useMemo18(
41448
+ const memoizedFieldValuesMap = useMemo19(
41452
41449
  () => fieldValuesMap,
41453
41450
  [JSON.stringify(fieldValuesMap)]
41454
41451
  );
41455
- const memoizedFilter = useMemo18(() => filter, [JSON.stringify(filter)]);
41452
+ const memoizedFilter = useMemo19(() => filter, [JSON.stringify(filter)]);
41456
41453
  useEffect18(() => {
41457
41454
  if (!filter) {
41458
41455
  onFieldChange(field, fieldOptions, table);
@@ -42477,7 +42474,7 @@ function DashboardLegacy({
42477
42474
  }) {
42478
42475
  const [userFilters, setUserFilters] = useState26({});
42479
42476
  const [selectedSection, setSelectedSection] = useState26("");
42480
- const dataLoaderUserFilters = useMemo19(() => {
42477
+ const dataLoaderUserFilters = useMemo20(() => {
42481
42478
  return (filters?.map((f) => convertCustomFilter(f)) ?? []).concat(
42482
42479
  Object.values(userFilters)
42483
42480
  );
@@ -42500,7 +42497,7 @@ function DashboardLegacy({
42500
42497
  const { getToken } = useContext21(FetchContext);
42501
42498
  const { customFilterDispatch } = useContext21(DashboardFiltersContext);
42502
42499
  const { eventTracking } = useContext21(EventTrackingContext);
42503
- const metrics = useMemo19(() => {
42500
+ const metrics = useMemo20(() => {
42504
42501
  const map = {};
42505
42502
  Object.keys(data?.sections ?? {}).forEach((section) => {
42506
42503
  if (!data?.sections?.[section]) return;
@@ -42528,7 +42525,7 @@ function DashboardLegacy({
42528
42525
  });
42529
42526
  return map;
42530
42527
  }, [data?.sections, data?.sectionOrder]);
42531
- const charts = useMemo19(() => {
42528
+ const charts = useMemo20(() => {
42532
42529
  const map = {};
42533
42530
  Object.keys(data?.sections ?? {}).forEach((section) => {
42534
42531
  if (!data?.sections?.[section]) return;
@@ -42554,7 +42551,7 @@ function DashboardLegacy({
42554
42551
  });
42555
42552
  return map;
42556
42553
  }, [data?.sections, data?.sectionOrder]);
42557
- const tables = useMemo19(() => {
42554
+ const tables = useMemo20(() => {
42558
42555
  const map = {};
42559
42556
  Object.keys(data?.sections ?? {}).forEach((section) => {
42560
42557
  if (!data?.sections?.[section]) return;
@@ -42615,7 +42612,7 @@ function DashboardLegacy({
42615
42612
  filterListAddFilterPopoverIsOpen,
42616
42613
  setFilterListAddFilterPopoverIsOpen
42617
42614
  ] = useState26(false);
42618
- const presetOptions = useMemo19(() => {
42615
+ const presetOptions = useMemo20(() => {
42619
42616
  return populatedDashboardFilters?.[0]?.filterType === "date_range" ? convertPresetOptionsToSelectableList(
42620
42617
  populatedDashboardFilters[0].presetOptions ?? [],
42621
42618
  populatedDashboardFilters[0].defaultPresetRanges ?? []
@@ -42632,7 +42629,7 @@ function DashboardLegacy({
42632
42629
  previousFilters.current = filters;
42633
42630
  }
42634
42631
  const isInitialLoadOfDashboardRef = useRef15(false);
42635
- const referencedTables = useMemo19(() => {
42632
+ const referencedTables = useMemo20(() => {
42636
42633
  const sections = data?.sections || {};
42637
42634
  const tables2 = Object.values(sections).flatMap(
42638
42635
  (section) => section.map((chart) => chart.referencedTables)
@@ -43667,11 +43664,11 @@ function QuillDashboardTemplate({
43667
43664
  }
43668
43665
 
43669
43666
  // src/Dashboard.tsx
43670
- import { useContext as useContext22, useMemo as useMemo21 } from "react";
43667
+ import { useContext as useContext22, useMemo as useMemo22 } from "react";
43671
43668
  init_Filter();
43672
43669
 
43673
43670
  // src/StaticChart.tsx
43674
- import { useMemo as useMemo20 } from "react";
43671
+ import { useMemo as useMemo21 } from "react";
43675
43672
  import { jsx as jsx60 } from "react/jsx-runtime";
43676
43673
  var CHART_TYPE_STYLES = {
43677
43674
  metric: { height: "100px", width: "200px" },
@@ -43686,6 +43683,7 @@ function StaticChart(props) {
43686
43683
  onClickLegendElement,
43687
43684
  containerStyle,
43688
43685
  showLegend,
43686
+ showAnimation,
43689
43687
  className,
43690
43688
  hideTableChartOuterBorder = true
43691
43689
  } = props;
@@ -43723,7 +43721,7 @@ function StaticChart(props) {
43723
43721
  });
43724
43722
  };
43725
43723
  const useLocalPivotTablePagination = isDashboardPivotTable(report);
43726
- const config = useMemo20(() => {
43724
+ const config = useMemo21(() => {
43727
43725
  return report ? {
43728
43726
  ...report,
43729
43727
  ...useLocalPivotTablePagination ? { pagination: void 0 } : {},
@@ -43744,6 +43742,7 @@ function StaticChart(props) {
43744
43742
  className,
43745
43743
  containerStyle: safeContainerStyle,
43746
43744
  showLegend,
43745
+ isAnimationActive: showAnimation,
43747
43746
  onPageChange: useLocalPivotTablePagination ? void 0 : onPageChange,
43748
43747
  tableRowsLoading: useLocalPivotTablePagination ? false : pageLoading,
43749
43748
  onSortChange: useLocalPivotTablePagination ? void 0 : onSortChange,
@@ -44094,11 +44093,11 @@ function Dashboard({
44094
44093
  EmptyDashboardComponent
44095
44094
  }) {
44096
44095
  const [themeFromContext] = useContext22(ThemeContext);
44097
- const theme = useMemo21(
44096
+ const theme = useMemo22(
44098
44097
  () => ({ ...defaultQuillTheme, ...themeFromContext ?? {} }),
44099
44098
  [themeFromContext]
44100
44099
  );
44101
- const themedStyles = useMemo21(() => getThemedStyles(theme), [theme]);
44100
+ const themedStyles = useMemo22(() => getThemedStyles(theme), [theme]);
44102
44101
  const { sections, sectionOrder, isLoading, filters, applyFilters } = useDashboard(name2);
44103
44102
  const toValidDate = (value) => {
44104
44103
  if (value === void 0 || value === null || value === "") {
@@ -44300,11 +44299,11 @@ function DashboardContent({
44300
44299
  const capitalized = name2.charAt(0).toUpperCase() + name2.slice(1);
44301
44300
  return sections[capitalized] ?? [];
44302
44301
  };
44303
- const rootSectionReports = useMemo21(
44302
+ const rootSectionReports = useMemo22(
44304
44303
  () => [...getSection("")].sort(sortByOrdering2),
44305
44304
  [sections]
44306
44305
  );
44307
- const { chartReports, metricReports, tableReports } = useMemo21(() => {
44306
+ const { chartReports, metricReports, tableReports } = useMemo22(() => {
44308
44307
  const metricReports2 = rootSectionReports.filter(
44309
44308
  ({ chartType }) => chartType === "metric"
44310
44309
  );
@@ -44316,7 +44315,7 @@ function DashboardContent({
44316
44315
  );
44317
44316
  return { chartReports: chartReports2, metricReports: metricReports2, tableReports: tableReports2 };
44318
44317
  }, [rootSectionReports]);
44319
- const orderedNonRootSectionEntries = useMemo21(() => {
44318
+ const orderedNonRootSectionEntries = useMemo22(() => {
44320
44319
  const sectionEntries = Object.entries(sections ?? {}).filter(
44321
44320
  ([sectionName, reports]) => sectionName !== "" && reports.length > 0
44322
44321
  );
@@ -44513,7 +44512,7 @@ var QuillProvider_default = QuillProvider;
44513
44512
  import {
44514
44513
  useContext as useContext23,
44515
44514
  useEffect as useEffect20,
44516
- useMemo as useMemo22,
44515
+ useMemo as useMemo23,
44517
44516
  useState as useState27
44518
44517
  } from "react";
44519
44518
  init_Filter();
@@ -44533,17 +44532,17 @@ var Table = ({
44533
44532
  const { eventTracking } = useContext23(EventTrackingContext);
44534
44533
  const { allReportsById } = useAllReports();
44535
44534
  const [loading, setLoading] = useState27(false);
44536
- const report = useMemo22(() => {
44535
+ const report = useMemo23(() => {
44537
44536
  return props.reportId ? allReportsById[props.reportId] : null;
44538
44537
  }, [allReportsById[props.reportId ?? ""]]);
44539
44538
  const { reportFilters, customReportFilters, reportFiltersDispatch } = useContext23(ReportFiltersContext);
44540
44539
  const { reports, fetchIndividualReport, reportsDispatch } = useContext23(ReportsContext);
44541
- const specificReportFilters = useMemo22(() => {
44540
+ const specificReportFilters = useMemo23(() => {
44542
44541
  return Object.values(
44543
44542
  reportFilters[props.reportId ?? ""] ?? (dashboard[report?.dashboardName ?? ""]?.[report?.id ?? ""] ? dashboardFilters[report.dashboardName] : null) ?? {}
44544
44543
  ).map((f) => f.filter);
44545
44544
  }, [reportFilters[props.reportId ?? ""]]);
44546
- const userFilters = useMemo22(() => {
44545
+ const userFilters = useMemo23(() => {
44547
44546
  return (props.filters?.filter((f) => f.filterType !== "date" /* Date */)?.map(convertCustomFilter) ?? []).concat(
44548
44547
  customReportFilters[props.reportId ?? ""] ?? dashboardCustomFilters[report?.dashboardName ?? ""] ?? []
44549
44548
  );
@@ -44699,7 +44698,7 @@ import {
44699
44698
  useContext as useContext30,
44700
44699
  useEffect as useEffect25,
44701
44700
  useRef as useRef20,
44702
- useMemo as useMemo27,
44701
+ useMemo as useMemo28,
44703
44702
  useCallback as useCallback4
44704
44703
  } from "react";
44705
44704
  import MonacoEditor from "@monaco-editor/react";
@@ -44710,7 +44709,7 @@ import {
44710
44709
  useRef as useRef19,
44711
44710
  useState as useState31,
44712
44711
  useContext as useContext28,
44713
- useMemo as useMemo26,
44712
+ useMemo as useMemo27,
44714
44713
  useCallback as useCallback3
44715
44714
  } from "react";
44716
44715
  import {
@@ -44734,7 +44733,7 @@ import { CSS as DND_CSS } from "@dnd-kit/utilities";
44734
44733
  import {
44735
44734
  useCallback as useCallback2,
44736
44735
  useContext as useContext25,
44737
- useMemo as useMemo23,
44736
+ useMemo as useMemo24,
44738
44737
  useState as useState28,
44739
44738
  useEffect as useEffect21,
44740
44739
  useRef as useRef16
@@ -45242,13 +45241,13 @@ var PivotModal = ({
45242
45241
  "bottom"
45243
45242
  );
45244
45243
  const popoverRef = useRef16(null);
45245
- const columnsToShow = useMemo23(() => {
45244
+ const columnsToShow = useMemo24(() => {
45246
45245
  return (columns || []).reduce((map, col) => {
45247
45246
  map[col.field] = col.format;
45248
45247
  return map;
45249
45248
  }, {});
45250
45249
  }, [columns]);
45251
- const columnTypes = useMemo23(() => {
45250
+ const columnTypes = useMemo24(() => {
45252
45251
  return (columns || []).reduce((map, col) => {
45253
45252
  map[col.field] = col.jsType;
45254
45253
  return map;
@@ -46981,7 +46980,7 @@ import {
46981
46980
  useState as useState29,
46982
46981
  useEffect as useEffect22,
46983
46982
  useContext as useContext26,
46984
- useMemo as useMemo24,
46983
+ useMemo as useMemo25,
46985
46984
  useRef as useRef17,
46986
46985
  useLayoutEffect as useLayoutEffect3
46987
46986
  } from "react";
@@ -47105,7 +47104,7 @@ function InternalChart({
47105
47104
  const { eventTracking } = useContext26(EventTrackingContext);
47106
47105
  const [filtersPopoverOpen, setFiltersPopoverOpen] = useState29(false);
47107
47106
  const filtersButtonRef = useRef17(null);
47108
- const currentReportFilters = useMemo24(() => {
47107
+ const currentReportFilters = useMemo25(() => {
47109
47108
  const dashFilters = dashboardConfig[report?.dashboardName ?? ""]?.config.filters;
47110
47109
  if (!dashFilters)
47111
47110
  return Object.values(reportFilters[report?.id ?? TEMP_REPORT_ID] ?? {});
@@ -47121,12 +47120,12 @@ function InternalChart({
47121
47120
  }
47122
47121
  });
47123
47122
  }, [reportFilters, report?.id]);
47124
- const reportDateFilter = useMemo24(() => {
47123
+ const reportDateFilter = useMemo25(() => {
47125
47124
  return Object.values(
47126
47125
  reportFilters[report?.id ?? TEMP_REPORT_ID] ?? {}
47127
47126
  ).find((f) => f.filter.filterType === "date_range")?.filter;
47128
47127
  }, [reportFilters, report?.id]);
47129
- const presetOptions = useMemo24(() => {
47128
+ const presetOptions = useMemo25(() => {
47130
47129
  return reportDateFilter ? convertPresetOptionsToSelectableList(
47131
47130
  reportDateFilter.presetOptions ?? [],
47132
47131
  reportDateFilter.defaultPresetRanges ?? []
@@ -47173,7 +47172,7 @@ function InternalChart({
47173
47172
  }
47174
47173
  }, [filters]);
47175
47174
  const [theme] = useContext26(ThemeContext);
47176
- const colorMap = useMemo24(() => {
47175
+ const colorMap = useMemo25(() => {
47177
47176
  if (mapColorsToFields && report && theme) {
47178
47177
  return mapColorsToFields(report, theme);
47179
47178
  }
@@ -47298,7 +47297,7 @@ function InternalChart({
47298
47297
  const [filtersExpanded, setFiltersExpanded] = useState29(false);
47299
47298
  const filtersContainerRef = useRef17(null);
47300
47299
  const [visibleFilters, setVisibleFilters] = useState29([]);
47301
- const filtersOverflowing = useMemo24(() => {
47300
+ const filtersOverflowing = useMemo25(() => {
47302
47301
  return visibleFilters.some((visible) => visible);
47303
47302
  }, [visibleFilters]);
47304
47303
  const measureItems = () => {
@@ -47561,7 +47560,7 @@ init_dates();
47561
47560
  // src/components/QuillMultiSelectSectionList.tsx
47562
47561
  import React16, {
47563
47562
  useContext as useContext27,
47564
- useMemo as useMemo25,
47563
+ useMemo as useMemo26,
47565
47564
  useRef as useRef18,
47566
47565
  useState as useState30
47567
47566
  } from "react";
@@ -47635,7 +47634,7 @@ function QuillMultiSelectSectionList({
47635
47634
  const filteredLength = React16.useMemo(() => {
47636
47635
  return Object.values(filteredItems).reduce((a, b) => a + b.length, 0);
47637
47636
  }, [filteredItems]);
47638
- const selectedOptionsLabel = useMemo25(() => {
47637
+ const selectedOptionsLabel = useMemo26(() => {
47639
47638
  const valuesLength = Object.values(value).reduce((a, b) => a + b.length, 0);
47640
47639
  if (!valuesLength) {
47641
47640
  return "Select";
@@ -48499,11 +48498,11 @@ function ChartBuilder({
48499
48498
  const { dashboardConfig } = useContext28(DashboardConfigContext);
48500
48499
  const { tenants, flags } = useContext28(TenantContext);
48501
48500
  const isReportLoading = reportId && !tempReport && reportsLoadingState[reportId];
48502
- const report = useMemo26(() => {
48501
+ const report = useMemo27(() => {
48503
48502
  const resolvedReport = reportId && !tempReport ? allReportsById[reportId] : tempReport;
48504
48503
  return resolvedReport;
48505
48504
  }, [reportId, tempReport, allReportsById]);
48506
- const reportFieldsByName = useMemo26(() => {
48505
+ const reportFieldsByName = useMemo27(() => {
48507
48506
  const fields = report?.fields;
48508
48507
  if (!fields || fields.length === 0) {
48509
48508
  return {};
@@ -48603,7 +48602,7 @@ function ChartBuilder({
48603
48602
  const modalPadding = 20;
48604
48603
  const deleteButtonMargin = -12;
48605
48604
  const { dashboardFilters } = useContext28(DashboardFiltersContext);
48606
- const specificDashboardFilters = useMemo26(() => {
48605
+ const specificDashboardFilters = useMemo27(() => {
48607
48606
  return Object.values(
48608
48607
  dashboardFilters[report?.dashboardName ?? ""] ?? {}
48609
48608
  ).map((f) => f.filter);
@@ -48654,7 +48653,7 @@ function ChartBuilder({
48654
48653
  const { reportsDispatch } = useContext28(ReportsContext);
48655
48654
  const initialFilters = useRef19(reportFilters[report?.id ?? TEMP_REPORT_ID]);
48656
48655
  const [reportFiltersLoaded, setReportFiltersLoaded] = useState31(!filtersEnabled);
48657
- const hasExistingData = useMemo26(() => {
48656
+ const hasExistingData = useMemo27(() => {
48658
48657
  return report?.rows && report.rows.length > 0 || report?.pivotRows && report.pivotRows.length > 0;
48659
48658
  }, [report?.rows, report?.pivotRows]);
48660
48659
  useEffect23(() => {
@@ -48685,7 +48684,7 @@ function ChartBuilder({
48685
48684
  }
48686
48685
  };
48687
48686
  }, []);
48688
- const currentDashboardFilters = useMemo26(() => {
48687
+ const currentDashboardFilters = useMemo27(() => {
48689
48688
  return Object.values(reportFilters[report?.id ?? TEMP_REPORT_ID] ?? {}).map(
48690
48689
  (f) => f.filter
48691
48690
  );
@@ -48763,14 +48762,14 @@ function ChartBuilder({
48763
48762
  const [referencedColumnsWithoutStar, setReferencedColumnsWithoutStar] = useState31({});
48764
48763
  const [referencedTablesLoaded, setReferencedTablesLoaded] = useState31(false);
48765
48764
  const [filterMap, setFilterMap] = useState31(report?.filterMap ?? {});
48766
- const canonicalFilterMap = useMemo26(() => {
48765
+ const canonicalFilterMap = useMemo27(() => {
48767
48766
  return Object.fromEntries(
48768
48767
  Object.entries(filterMap).filter(
48769
48768
  (f) => f[1].table !== void 0 && f[1].field !== void 0
48770
48769
  )
48771
48770
  );
48772
48771
  }, [filterMap]);
48773
- const validFilter = useMemo26(() => {
48772
+ const validFilter = useMemo27(() => {
48774
48773
  return specificDashboardFilters.reduce(
48775
48774
  (acc, filter) => {
48776
48775
  if (filter.filterType === "date_range" || filter.filterType === "tenant" || !referencedTablesLoaded) {
@@ -48996,12 +48995,12 @@ function ChartBuilder({
48996
48995
  const [formData, setFormData] = useState31(
48997
48996
  formFormDataFromReport(report, destinationSection ?? getCurrentSection())
48998
48997
  );
48999
- const reportCustomFields = useMemo26(() => {
48998
+ const reportCustomFields = useMemo27(() => {
49000
48999
  return report?.columnsWithCustomFields?.filter(
49001
49000
  (col) => !report?.columns?.some((c) => col.field === c.field)
49002
49001
  ) ?? [];
49003
49002
  }, [report?.columnsWithCustomFields, report?.columns]);
49004
- const referenceLineQueryResults = useMemo26(() => {
49003
+ const referenceLineQueryResults = useMemo27(() => {
49005
49004
  return formData?.referenceLines?.map((line) => {
49006
49005
  if (line.label === REFERENCE_LINE) {
49007
49006
  return [Number(line.y1) || 0, Number(line.y2) || 0];
@@ -49015,10 +49014,10 @@ function ChartBuilder({
49015
49014
  );
49016
49015
  });
49017
49016
  }, [formData?.referenceLines]);
49018
- const currentDashboard = useMemo26(() => {
49017
+ const currentDashboard = useMemo27(() => {
49019
49018
  return dashboardConfig[formData.dashboardName ?? report?.dashboardName ?? ""]?.config;
49020
49019
  }, [dashboardConfig, formData.dashboardName, report?.dashboardName]);
49021
- const currentDashboardTenants = useMemo26(() => {
49020
+ const currentDashboardTenants = useMemo27(() => {
49022
49021
  return currentDashboard?.tenantKeys?.map(
49023
49022
  (tenantKey) => client?.allTenantTypes?.find(
49024
49023
  (t) => t.tenantField === tenantKey
@@ -49026,7 +49025,7 @@ function ChartBuilder({
49026
49025
  ) ?? [];
49027
49026
  }, [client?.allTenantTypes, currentDashboard?.tenantKeys]);
49028
49027
  const dashboardOwner = currentDashboardTenants?.[0];
49029
- const currentTenantAsFormFlags = useMemo26(() => {
49028
+ const currentTenantAsFormFlags = useMemo27(() => {
49030
49029
  if (!tenants || !tenants.length) {
49031
49030
  return void 0;
49032
49031
  }
@@ -49037,7 +49036,7 @@ function ChartBuilder({
49037
49036
  const tenantIds = typeof tenants[0] !== "object" ? tenants : tenants[0]?.tenantIds;
49038
49037
  return { [tenantField]: tenantIds };
49039
49038
  }, [tenants, dashboardOwner]);
49040
- const invalidColumns = useMemo26(() => {
49039
+ const invalidColumns = useMemo27(() => {
49041
49040
  if (!rows || !rows.length) {
49042
49041
  return [];
49043
49042
  }
@@ -49059,7 +49058,7 @@ function ChartBuilder({
49059
49058
  );
49060
49059
  })()
49061
49060
  );
49062
- const reportContainsCustomFields = useMemo26(() => {
49061
+ const reportContainsCustomFields = useMemo27(() => {
49063
49062
  const customFieldsMap = schemaData.customFields;
49064
49063
  const reportQueryContainsCustomFields = allTables.some((table) => {
49065
49064
  const tableColumns = referencedColumnsWithoutStar[table] ?? [];
@@ -49070,7 +49069,7 @@ function ChartBuilder({
49070
49069
  });
49071
49070
  return reportQueryContainsCustomFields;
49072
49071
  }, [allTables, referencedColumnsWithoutStar]);
49073
- const chartBuilderFormDataContainsCustomFields = useMemo26(() => {
49072
+ const chartBuilderFormDataContainsCustomFields = useMemo27(() => {
49074
49073
  const customFields = allTables.map((table) => schemaData.customFields?.[table] ?? []).flat();
49075
49074
  const customFieldsMap = schemaData.customFields;
49076
49075
  const pivotContainsCustomFields = customFields.some(
@@ -49103,13 +49102,13 @@ function ChartBuilder({
49103
49102
  formData.dateField,
49104
49103
  canonicalFilterMap
49105
49104
  ]);
49106
- const customFieldsInTabularColumns = useMemo26(() => {
49105
+ const customFieldsInTabularColumns = useMemo27(() => {
49107
49106
  const customFields = allTables.map((table) => schemaData.customFields?.[table] ?? []).flat();
49108
49107
  return formData.columns.some((col) => {
49109
49108
  return customFields.some((field) => field.field === col.field);
49110
49109
  });
49111
49110
  }, [allTables, formData.columns]);
49112
- const containsCustomFields = useMemo26(() => {
49111
+ const containsCustomFields = useMemo27(() => {
49113
49112
  return reportContainsCustomFields || customFieldsInTabularColumns || chartBuilderFormDataContainsCustomFields;
49114
49113
  }, [
49115
49114
  reportContainsCustomFields,
@@ -49282,7 +49281,7 @@ function ChartBuilder({
49282
49281
  handleRunQuery(baseProcessing, currentDashboardFilters);
49283
49282
  }
49284
49283
  }, [runQueryOnMount, reportFiltersLoaded, filtersEnabled]);
49285
- const allTenantMap = useMemo26(() => {
49284
+ const allTenantMap = useMemo27(() => {
49286
49285
  return client?.allTenantTypes?.reduce(
49287
49286
  (acc, tenantType) => {
49288
49287
  if (tenantType.scope === "database") {
@@ -49322,14 +49321,14 @@ function ChartBuilder({
49322
49321
  },
49323
49322
  [columns, selectedPivotTable]
49324
49323
  );
49325
- const pivotCardTable = useMemo26(() => {
49324
+ const pivotCardTable = useMemo27(() => {
49326
49325
  return {
49327
49326
  pivot: formData.pivot,
49328
49327
  rows: selectedPivotTable?.rows ?? [],
49329
49328
  columns: selectedPivotTable?.columns ?? []
49330
49329
  };
49331
49330
  }, [selectedPivotTable, formData.pivot]);
49332
- const chartData = useMemo26(() => {
49331
+ const chartData = useMemo27(() => {
49333
49332
  const data = createReportFromForm(
49334
49333
  formData,
49335
49334
  report ? { ...report, rowCount } : tempReport,
@@ -49351,7 +49350,7 @@ function ChartBuilder({
49351
49350
  rowCount,
49352
49351
  currentDashboardFilters
49353
49352
  ]);
49354
- const xAxisFormatOptions = useMemo26(() => {
49353
+ const xAxisFormatOptions = useMemo27(() => {
49355
49354
  return chartData?.chartType === "gauge" ? [
49356
49355
  { value: "whole_number", label: "whole number" },
49357
49356
  { value: "two_decimal_places", label: "two decimal places" },
@@ -49415,7 +49414,7 @@ function ChartBuilder({
49415
49414
  setSelectedPivotTable(void 0);
49416
49415
  }
49417
49416
  };
49418
- const formattedRows = useMemo26(() => {
49417
+ const formattedRows = useMemo27(() => {
49419
49418
  const shouldUsePivotTableRows = selectedPivotTable && selectedPivotTable.columns && formData.chartType === "table";
49420
49419
  if (shouldUsePivotTableRows) {
49421
49420
  const columns2 = selectedPivotTable.columns;
@@ -50102,7 +50101,7 @@ function ChartBuilder({
50102
50101
  setIsSubmitting(false);
50103
50102
  setTriggeredEditChart(false);
50104
50103
  };
50105
- const memoizedTooltipText = useMemo26(() => {
50104
+ const memoizedTooltipText = useMemo27(() => {
50106
50105
  const getTooltipText = () => {
50107
50106
  if (formData.name === "") {
50108
50107
  return "Please enter a name for the chart";
@@ -52536,7 +52535,7 @@ function SQLEditor({
52536
52535
  const { getToken, quillFetchWithToken } = useContext30(FetchContext);
52537
52536
  const { eventTracking } = useContext30(EventTrackingContext);
52538
52537
  const { allReportsById } = useAllReports();
52539
- const destinationDashboardConfig = useMemo27(() => {
52538
+ const destinationDashboardConfig = useMemo28(() => {
52540
52539
  return dashboards?.find((d) => d.name === destinationDashboard);
52541
52540
  }, [dashboards, destinationDashboard]);
52542
52541
  const [query, setQuery] = useState33(defaultQuery);
@@ -52544,7 +52543,7 @@ function SQLEditor({
52544
52543
  const [columns, setColumns] = useState33([]);
52545
52544
  const [schemaData] = useContext30(SchemaDataContext);
52546
52545
  const { dashboardFilters } = useContext30(DashboardFiltersContext);
52547
- const specificDashboardFilters = useMemo27(() => {
52546
+ const specificDashboardFilters = useMemo28(() => {
52548
52547
  return Object.values(
52549
52548
  dashboardFilters[report?.dashboardName ?? destinationDashboard ?? ""] ?? {}
52550
52549
  ).map((f) => f.filter);
@@ -52582,7 +52581,7 @@ function SQLEditor({
52582
52581
  const DEFAULT_ROWS_PER_PAGE = 5;
52583
52582
  const ROW_HEIGHT = 37;
52584
52583
  const TABLE_TAB_HEIGHT = 75;
52585
- const filteredSchema = useMemo27(() => {
52584
+ const filteredSchema = useMemo28(() => {
52586
52585
  return schemaData.schemaWithCustomFields?.filter((table) => {
52587
52586
  return destinationDashboardConfig?.tenantKeys?.[0] === SINGLE_TENANT || !table.ownerTenantFields || table.ownerTenantFields?.length === 0 || table.ownerTenantFields?.includes(
52588
52587
  destinationDashboardConfig?.tenantKeys?.[0] ?? ""
@@ -52657,7 +52656,7 @@ function SQLEditor({
52657
52656
  };
52658
52657
  const [currentPage, setCurrentPage] = useState33(0);
52659
52658
  const [currentSort, setCurrentSort] = useState33(void 0);
52660
- const currentProcessing = useMemo27(() => {
52659
+ const currentProcessing = useMemo28(() => {
52661
52660
  return {
52662
52661
  page: {
52663
52662
  currentPage,
@@ -52670,7 +52669,7 @@ function SQLEditor({
52670
52669
  sort: currentSort
52671
52670
  };
52672
52671
  }, [currentPage, rowsPerPage, currentSort]);
52673
- const displayedTableData = useMemo27(() => {
52672
+ const displayedTableData = useMemo28(() => {
52674
52673
  return filteredSchema?.filter((table) => {
52675
52674
  return table.name?.toLowerCase()?.includes(tableSearchQuery.toLowerCase().trim()) || table.columns.some(
52676
52675
  (col) => col.field?.toLowerCase()?.includes(tableSearchQuery.toLowerCase().trim())
@@ -54057,7 +54056,7 @@ import {
54057
54056
  init_constants();
54058
54057
 
54059
54058
  // src/hooks/useReportBuilder.tsx
54060
- import { useContext as useContext31, useEffect as useEffect26, useMemo as useMemo28, useState as useState34 } from "react";
54059
+ import { useContext as useContext31, useEffect as useEffect26, useMemo as useMemo29, useState as useState34 } from "react";
54061
54060
  init_tableProcessing();
54062
54061
  init_ReportBuilder();
54063
54062
  init_constants();
@@ -54086,10 +54085,10 @@ var useReportBuilderInternal = ({
54086
54085
  } = useDashboardInternal(destinationDashboard);
54087
54086
  const { getToken, quillFetchWithToken } = useContext31(FetchContext);
54088
54087
  const { eventTracking } = useContext31(EventTrackingContext);
54089
- const destinationDashboardConfig = useMemo28(() => {
54088
+ const destinationDashboardConfig = useMemo29(() => {
54090
54089
  return dashboards?.find((d) => d.name === destinationDashboard);
54091
54090
  }, [dashboards, destinationDashboard]);
54092
- const filteredSchema = useMemo28(() => {
54091
+ const filteredSchema = useMemo29(() => {
54093
54092
  return schemaData.schemaWithCustomFields?.filter((table) => {
54094
54093
  return destinationDashboardConfig?.tenantKeys?.[0] === SINGLE_TENANT || !table.ownerTenantFields || table.ownerTenantFields?.length === 0 || table.ownerTenantFields?.includes(
54095
54094
  destinationDashboardConfig?.tenantKeys?.[0] ?? ""
@@ -54120,7 +54119,7 @@ var useReportBuilderInternal = ({
54120
54119
  const [pivot, setPivot] = useState34(null);
54121
54120
  const [sort, setSort] = useState34([]);
54122
54121
  const [limit, setLimit] = useState34(null);
54123
- const reportBuilderState = useMemo28(() => {
54122
+ const reportBuilderState = useMemo29(() => {
54124
54123
  return {
54125
54124
  tables,
54126
54125
  columns,
@@ -54152,7 +54151,7 @@ var useReportBuilderInternal = ({
54152
54151
  const [pivotData, setPivotData] = useState34(null);
54153
54152
  const [numberOfRows, setNumberOfRows] = useState34(0);
54154
54153
  const [rowCountIsLoading, setRowCountIsLoading] = useState34(false);
54155
- const reportColumnsToStateColumns = useMemo28(() => {
54154
+ const reportColumnsToStateColumns = useMemo29(() => {
54156
54155
  const positionMap = {};
54157
54156
  columns.forEach((column, index) => {
54158
54157
  positionMap[column.field] = index;
@@ -54206,7 +54205,7 @@ var useReportBuilderInternal = ({
54206
54205
  origin: "ReportBuilder",
54207
54206
  loadDescription: "Loading ask AI"
54208
54207
  });
54209
- const isSelectStar = useMemo28(() => {
54208
+ const isSelectStar = useMemo29(() => {
54210
54209
  if (tables.length === 1) {
54211
54210
  const totalColumnLength = tables.reduce((acc, table) => {
54212
54211
  const tableColumns = filteredSchema.find((t) => t.name === table.name)?.columns.length ?? 0;
@@ -54217,14 +54216,14 @@ var useReportBuilderInternal = ({
54217
54216
  return false;
54218
54217
  }
54219
54218
  }, [tables, columns, filteredSchema]);
54220
- const mssqlSortWarning = useMemo28(() => {
54219
+ const mssqlSortWarning = useMemo29(() => {
54221
54220
  if (!client || client?.databaseType !== "mssql") {
54222
54221
  return void 0;
54223
54222
  } else if (!pivot && !limit) {
54224
54223
  return "Please add a limit.";
54225
54224
  }
54226
54225
  }, [client, limit, pivot]);
54227
- const foreignKeyMap = useMemo28(() => {
54226
+ const foreignKeyMap = useMemo29(() => {
54228
54227
  return getSchemaForeignKeyMapping(filteredSchema);
54229
54228
  }, [filteredSchema]);
54230
54229
  const clearAllState = (resetStateStack = true) => {
@@ -55541,7 +55540,7 @@ var useReportBuilder = ({
55541
55540
  reportBuilder.setAiPrompt(prompt);
55542
55541
  await reportBuilder.fetchAstFromPromptHelper(prompt);
55543
55542
  };
55544
- const cleanedSchema = useMemo28(() => {
55543
+ const cleanedSchema = useMemo29(() => {
55545
55544
  return reportBuilder.filteredSchema.reduce(
55546
55545
  (acc, table) => {
55547
55546
  acc[table.name] = table.columns;
@@ -55550,7 +55549,7 @@ var useReportBuilder = ({
55550
55549
  {}
55551
55550
  );
55552
55551
  }, [reportBuilder.filteredSchema]);
55553
- const cleanedFilterStack = useMemo28(() => {
55552
+ const cleanedFilterStack = useMemo29(() => {
55554
55553
  return reportBuilder.filterStack.map((filter) => {
55555
55554
  return filter.value ? convertInternalFilterToFilter(filter.value) : null;
55556
55555
  }).filter((filter) => filter !== null);
@@ -55587,7 +55586,7 @@ var useReportBuilder = ({
55587
55586
  init_ReportBuilder();
55588
55587
 
55589
55588
  // src/components/ReportBuilder/AddColumnModal.tsx
55590
- import { useState as useState35, useRef as useRef21, useMemo as useMemo29, useEffect as useEffect27, useContext as useContext32 } from "react";
55589
+ import { useState as useState35, useRef as useRef21, useMemo as useMemo30, useEffect as useEffect27, useContext as useContext32 } from "react";
55591
55590
  import {
55592
55591
  DndContext as DndContext2,
55593
55592
  closestCenter as closestCenter2,
@@ -55632,7 +55631,7 @@ function AddColumnModal({
55632
55631
  const [modalSelectedColumns, setModalSelectedColumns] = useState35(
55633
55632
  selectedColumns.map((col) => `${col.table}.${col.field}`)
55634
55633
  );
55635
- const columnOptions = useMemo29(() => {
55634
+ const columnOptions = useMemo30(() => {
55636
55635
  return schema.filter((table) => {
55637
55636
  if (!primaryTable) return true;
55638
55637
  return table.name === primaryTable || foreignKeyMap[primaryTable]?.some(
@@ -55658,7 +55657,7 @@ function AddColumnModal({
55658
55657
  }, [schema, primaryTable]);
55659
55658
  const [orderedColumnNames, setOrderedColumnNames] = useState35([]);
55660
55659
  const isSelectedAllColumns = columnOptions.length === modalSelectedColumns.length;
55661
- const searchResults = useMemo29(() => {
55660
+ const searchResults = useMemo30(() => {
55662
55661
  return orderedColumnNames.filter((column) => {
55663
55662
  return columnOptions.includes(column) && (search.length === 0 || column.toLowerCase().includes(search.toLowerCase()) || snakeAndCamelCaseToTitleCase(column).toLowerCase().includes(search.toLowerCase()));
55664
55663
  });
@@ -56034,7 +56033,7 @@ import {
56034
56033
  sortableKeyboardCoordinates as sortableKeyboardCoordinates3,
56035
56034
  verticalListSortingStrategy as verticalListSortingStrategy3
56036
56035
  } from "@dnd-kit/sortable";
56037
- import { useMemo as useMemo30 } from "react";
56036
+ import { useMemo as useMemo31 } from "react";
56038
56037
  import { jsx as jsx73, jsxs as jsxs53 } from "react/jsx-runtime";
56039
56038
  function DraggableColumns({
56040
56039
  columns,
@@ -56048,7 +56047,7 @@ function DraggableColumns({
56048
56047
  coordinateGetter: sortableKeyboardCoordinates3
56049
56048
  })
56050
56049
  );
56051
- const columnNames = useMemo30(() => {
56050
+ const columnNames = useMemo31(() => {
56052
56051
  return columns.map(
56053
56052
  (col) => `${col.table}.${col.alias ?? col.field}`
56054
56053
  );
@@ -58589,7 +58588,7 @@ function ReportBuilder({
58589
58588
  import {
58590
58589
  useContext as useContext35,
58591
58590
  useEffect as useEffect30,
58592
- useMemo as useMemo31,
58591
+ useMemo as useMemo32,
58593
58592
  useRef as useRef23,
58594
58593
  useState as useState40
58595
58594
  } from "react";
@@ -58644,7 +58643,7 @@ function ChartEditor({
58644
58643
  const [modalHeight, setModalHeight] = useState40(200);
58645
58644
  const { allReportsById } = useAllReports();
58646
58645
  const report = allReportsById[reportId];
58647
- const resolvedDashboard = useMemo31(
58646
+ const resolvedDashboard = useMemo32(
58648
58647
  () => destinationDashboard ?? report?.dashboardName ?? null,
58649
58648
  [destinationDashboard, report?.dashboardName]
58650
58649
  );
@@ -58656,7 +58655,7 @@ function ChartEditor({
58656
58655
  const { dashboardFilters } = useContext35(DashboardFiltersContext);
58657
58656
  const { eventTracking } = useContext35(EventTrackingContext);
58658
58657
  const { reload } = useDashboardInternal(resolvedDashboard);
58659
- const specificDashboardFilters = useMemo31(() => {
58658
+ const specificDashboardFilters = useMemo32(() => {
58660
58659
  if (!report) {
58661
58660
  return [];
58662
58661
  }
@@ -58669,7 +58668,7 @@ function ChartEditor({
58669
58668
  const dateFilter = Object.values(specificDashboardFilters).find(
58670
58669
  (filter) => filter.filterType === "date_range"
58671
58670
  );
58672
- const dateRange = useMemo31(() => {
58671
+ const dateRange = useMemo32(() => {
58673
58672
  return dateFilter?.startDate ? { start: dateFilter.startDate, end: dateFilter.endDate } : void 0;
58674
58673
  }, [dateFilter]);
58675
58674
  useEffect30(() => {
@@ -58820,7 +58819,7 @@ function ChartEditor({
58820
58819
  import { useContext as useContext37, useEffect as useEffect32, useRef as useRef25, useState as useState42 } from "react";
58821
58820
 
58822
58821
  // src/ChatChartCard.tsx
58823
- import { useMemo as useMemo33 } from "react";
58822
+ import { useMemo as useMemo34 } from "react";
58824
58823
 
58825
58824
  // src/hooks/useForm.tsx
58826
58825
  init_Filter();
@@ -58830,7 +58829,7 @@ import {
58830
58829
  useContext as useContext36,
58831
58830
  useEffect as useEffect31,
58832
58831
  useLayoutEffect as useLayoutEffect4,
58833
- useMemo as useMemo32,
58832
+ useMemo as useMemo33,
58834
58833
  useReducer as useReducer2,
58835
58834
  useRef as useRef24,
58836
58835
  useState as useState41
@@ -60205,12 +60204,13 @@ var QUERY_BUILDER_MULTI_VALUE_OPERATORS = /* @__PURE__ */ new Set(["in", "notin"
60205
60204
  var TABLE_FORMAT_CACHE_MAX_ENTRIES = 5e3;
60206
60205
  var PIVOT_DATE_BUCKET_FORMAT_OPTIONS = ["date"];
60207
60206
  var PIVOT_DATE_BUCKET_OPTIONS = [
60208
- { label: "Automatic", value: "" },
60207
+ { label: "Dynamic", value: "" },
60209
60208
  { label: "Daily", value: "day" },
60210
60209
  { label: "Weekly", value: "week" },
60211
60210
  { label: "Monthly", value: "month" },
60212
60211
  { label: "Yearly", value: "year" }
60213
60212
  ];
60213
+ var STANDARD_PIVOT_DATE_BUCKET_OPTIONS = PIVOT_DATE_BUCKET_OPTIONS.slice(1);
60214
60214
  var AXIS_FORMAT_OPTIONS = [
60215
60215
  { value: "string", label: "string" },
60216
60216
  { value: "whole_number", label: "whole number" },
@@ -60688,17 +60688,26 @@ function buildPivotAggregationsWithFieldTables({
60688
60688
  columnFieldTable
60689
60689
  };
60690
60690
  }
60691
+ function resolvePivotSortFieldTable(pivot, sortField) {
60692
+ const explicitTable = String(pivot?.sortFieldTable ?? "").trim();
60693
+ if (explicitTable && sortField === pivot?.sortField) return explicitTable;
60694
+ if (sortField === pivot?.rowField) return pivot?.rowFieldTable;
60695
+ if (sortField === pivot?.columnField) return pivot?.columnFieldTable;
60696
+ return void 0;
60697
+ }
60691
60698
  function normalizePivotForRefreshComparison(pivot) {
60692
60699
  if (pivot == null) return pivot;
60693
60700
  const record = pivot;
60694
60701
  const {
60695
60702
  rowFieldTable: _pivotRowTable,
60696
60703
  columnFieldTable: _pivotColumnTable,
60704
+ sortFieldTable: _pivotSortTable,
60697
60705
  rowFilter: _rowFilter,
60698
60706
  columnFilter: _columnFilter,
60699
60707
  aggregations,
60700
60708
  ...pivotRest
60701
60709
  } = record;
60710
+ void _pivotSortTable;
60702
60711
  const next = { ...pivotRest };
60703
60712
  if (Array.isArray(aggregations)) {
60704
60713
  next.aggregations = aggregations.map((entry) => {
@@ -63500,6 +63509,7 @@ function useReport(reportIdArg, options = {}) {
63500
63509
  const { eventTracking } = useContext36(EventTrackingContext);
63501
63510
  const [draftSessionId, setDraftSessionId] = useState41(generateDraftSessionId);
63502
63511
  const useInMemoryEngines = options.useInMemoryEngines ?? false;
63512
+ const dateBucketMode = options.dateBucketMode ?? "dynamic";
63503
63513
  const restrictFieldOptionsToSelectedDatasources = options.restrictFieldOptionsToSelectedDatasources ?? true;
63504
63514
  const reportOverride = options.reportOverride ?? null;
63505
63515
  const initialReportBuilderState = options.initialReportBuilderState ?? null;
@@ -63654,7 +63664,7 @@ function useReport(reportIdArg, options = {}) {
63654
63664
  clientDefaultDashboardName,
63655
63665
  destinationDashboardName
63656
63666
  ].map((entry) => String(entry ?? "").trim()).find((entry) => entry.length > 0) ?? "";
63657
- const initialFormState = useMemo32(
63667
+ const initialFormState = useMemo33(
63658
63668
  () => ({
63659
63669
  reportName: void 0,
63660
63670
  columns: [],
@@ -63704,13 +63714,13 @@ function useReport(reportIdArg, options = {}) {
63704
63714
  schemaDatasourceIds
63705
63715
  } = formState;
63706
63716
  const schemaDatasourceIdsKey = schemaDatasourceIds?.map((id) => String(id ?? "").trim()).join("\0") ?? "";
63707
- const queryColumnsBootstrapKey = useMemo32(
63717
+ const queryColumnsBootstrapKey = useMemo33(
63708
63718
  () => queryColumns.map(
63709
63719
  (c) => `${String(c.table ?? "").trim()}\0${String(c.field ?? "").trim()}`
63710
63720
  ).join("\n"),
63711
63721
  [queryColumns]
63712
63722
  );
63713
- const dashboardNameForNewReport = useMemo32(() => {
63723
+ const dashboardNameForNewReport = useMemo33(() => {
63714
63724
  return [clientDefaultDashboardName, destinationDashboardName].map((entry) => String(entry ?? "").trim()).find((entry) => entry.length > 0) ?? "";
63715
63725
  }, [clientDefaultDashboardName, destinationDashboardName]);
63716
63726
  const { mutate: createReport } = useMutation({
@@ -63784,16 +63794,16 @@ function useReport(reportIdArg, options = {}) {
63784
63794
  );
63785
63795
  schemaScopeInitializedForReportIdRef.current = effectiveReportId;
63786
63796
  };
63787
- const internalFilters = useMemo32(
63797
+ const internalFilters = useMemo33(
63788
63798
  () => internalFiltersFromFilterStack(filterStack),
63789
63799
  [filterStack]
63790
63800
  );
63791
- const customFilters = useMemo32(
63801
+ const customFilters = useMemo33(
63792
63802
  () => customFiltersFromFilterStack(filterStack),
63793
63803
  [filterStack]
63794
63804
  );
63795
- const reloadKey = useMemo32(() => 0, []);
63796
- const schemaForReportBuilderState = useMemo32(() => {
63805
+ const reloadKey = useMemo33(() => 0, []);
63806
+ const schemaForReportBuilderState = useMemo33(() => {
63797
63807
  if (schemaData.schemaWithCustomFields?.length) {
63798
63808
  return schemaData.schemaWithCustomFields;
63799
63809
  }
@@ -63816,19 +63826,19 @@ function useReport(reportIdArg, options = {}) {
63816
63826
  },
63817
63827
  []
63818
63828
  );
63819
- const schemaForeignKeyMap = useMemo32(
63829
+ const schemaForeignKeyMap = useMemo33(
63820
63830
  () => getSchemaForeignKeyMapping(schemaForReportBuilderState),
63821
63831
  [schemaForReportBuilderState]
63822
63832
  );
63823
63833
  const reportBuilderBaseTableNamesKey = (sourceReport?.reportBuilderState?.tables ?? []).map((t) => String(t?.name ?? "").trim()).filter(Boolean).join("\0") ?? "";
63824
- const selectedBaseTableNamesForFieldOptions = useMemo32(() => {
63834
+ const selectedBaseTableNamesForFieldOptions = useMemo33(() => {
63825
63835
  const fromPicker = schemaDatasourceIds?.map((id) => String(id ?? "").trim()).filter(Boolean) ?? [];
63826
63836
  if (fromPicker.length > 0) {
63827
63837
  return fromPicker;
63828
63838
  }
63829
63839
  return (sourceReport?.reportBuilderState?.tables ?? []).map((t) => String(t?.name ?? "").trim()).filter(Boolean);
63830
63840
  }, [schemaDatasourceIdsKey, reportBuilderBaseTableNamesKey]);
63831
- const fieldOptionsAllowedTableNames = useMemo32(() => {
63841
+ const fieldOptionsAllowedTableNames = useMemo33(() => {
63832
63842
  if (!restrictFieldOptionsToSelectedDatasources) {
63833
63843
  return null;
63834
63844
  }
@@ -63905,7 +63915,7 @@ function useReport(reportIdArg, options = {}) {
63905
63915
  schemaForReportBuilderState,
63906
63916
  queryColumnsBootstrapKey
63907
63917
  ]);
63908
- const datasourceOptions = useMemo32(() => {
63918
+ const datasourceOptions = useMemo33(() => {
63909
63919
  const seen = /* @__PURE__ */ new Set();
63910
63920
  const result = [];
63911
63921
  for (const table2 of schemaForReportBuilderState) {
@@ -63916,7 +63926,7 @@ function useReport(reportIdArg, options = {}) {
63916
63926
  }
63917
63927
  return result;
63918
63928
  }, [schemaForReportBuilderState]);
63919
- const queryBuilderFieldConfigByName = useMemo32(() => {
63929
+ const queryBuilderFieldConfigByName = useMemo33(() => {
63920
63930
  const configByName = buildQueryBuilderFieldConfigByName(
63921
63931
  schemaForReportBuilderState
63922
63932
  );
@@ -64050,7 +64060,7 @@ function useReport(reportIdArg, options = {}) {
64050
64060
  sourceReport?.columns,
64051
64061
  sourceReport?.reportBuilderState?.columns
64052
64062
  ]);
64053
- const filterUniqueValuesRequest = useMemo32(() => {
64063
+ const filterUniqueValuesRequest = useMemo33(() => {
64054
64064
  const dashboardName = resolvedSourceDashboardName;
64055
64065
  const reportBuilderStateFromSource = sourceReport?.reportBuilderState;
64056
64066
  const isStringReportBuilderColumn = (column) => {
@@ -64271,13 +64281,13 @@ function useReport(reportIdArg, options = {}) {
64271
64281
  sourceReport?.reportBuilderState,
64272
64282
  resolvedSourceDashboardName
64273
64283
  ]);
64274
- const filterUniqueValuesRequestHash = useMemo32(
64284
+ const filterUniqueValuesRequestHash = useMemo33(
64275
64285
  () => stableSerializeForQueryKey(
64276
64286
  filterUniqueValuesRequestForQueryKey(filterUniqueValuesRequest)
64277
64287
  ),
64278
64288
  [filterUniqueValuesRequest]
64279
64289
  );
64280
- const customFiltersHashForUniqueValues = useMemo32(
64290
+ const customFiltersHashForUniqueValues = useMemo33(
64281
64291
  () => stableSerializeForQueryKey(customFilters),
64282
64292
  [customFilters]
64283
64293
  );
@@ -64354,7 +64364,7 @@ function useReport(reportIdArg, options = {}) {
64354
64364
  enabled: filterUniqueValuesEnabled,
64355
64365
  retry: false
64356
64366
  });
64357
- const backendUniqueValuesByFieldName = useMemo32(() => {
64367
+ const backendUniqueValuesByFieldName = useMemo33(() => {
64358
64368
  const valuesByField = /* @__PURE__ */ new Map();
64359
64369
  const uniqueValuesByColumn = filterUniqueValuesQuery.data?.uniqueValuesByColumn;
64360
64370
  if (!uniqueValuesByColumn || typeof uniqueValuesByColumn !== "object") {
@@ -64387,7 +64397,7 @@ function useReport(reportIdArg, options = {}) {
64387
64397
  filterUniqueValuesQuery.data?.uniqueValuesByColumn,
64388
64398
  filterUniqueValuesRequest?.stringColumnsByTable
64389
64399
  ]);
64390
- const filterValueOptionsByFieldName = useMemo32(() => {
64400
+ const filterValueOptionsByFieldName = useMemo33(() => {
64391
64401
  const optionsByField = /* @__PURE__ */ new Map();
64392
64402
  const selectedMultiselectByField = collectSelectedStringMultiselectValuesByField(queryFilters);
64393
64403
  const collectValuesForField = (fieldName) => {
@@ -64453,7 +64463,7 @@ function useReport(reportIdArg, options = {}) {
64453
64463
  queryBuilderFieldConfigByName,
64454
64464
  queryFilters
64455
64465
  ]);
64456
- const filterFieldsComputed = useMemo32(() => {
64466
+ const filterFieldsComputed = useMemo33(() => {
64457
64467
  const fields = [];
64458
64468
  const seen = /* @__PURE__ */ new Set();
64459
64469
  const addField = (fieldName, fieldType, tableName, rawFieldName) => {
@@ -64556,7 +64566,7 @@ function useReport(reportIdArg, options = {}) {
64556
64566
  ]);
64557
64567
  const filterFieldsStableReportIdRef = useRef24("");
64558
64568
  const filterFieldsStableCacheRef = useRef24([]);
64559
- const filterFields = useMemo32(() => {
64569
+ const filterFields = useMemo33(() => {
64560
64570
  const rid = String(effectiveReportId ?? "");
64561
64571
  if (filterFieldsStableReportIdRef.current !== rid) {
64562
64572
  filterFieldsStableReportIdRef.current = rid;
@@ -64571,14 +64581,14 @@ function useReport(reportIdArg, options = {}) {
64571
64581
  }
64572
64582
  return filterFieldsComputed;
64573
64583
  }, [effectiveReportId, filterFieldsComputed]);
64574
- const getFilterOperators = useMemo32(
64584
+ const getFilterOperators = useMemo33(
64575
64585
  () => (_field, misc) => {
64576
64586
  const fieldType = misc?.fieldData?.quillFieldType ?? queryBuilderFieldConfigByName[String(_field ?? "").trim()]?.fieldType ?? "string";
64577
64587
  return QUERY_BUILDER_OPERATORS_BY_FIELD_TYPE[fieldType] ?? QUERY_BUILDER_OPERATORS_BY_FIELD_TYPE.string;
64578
64588
  },
64579
64589
  [queryBuilderFieldConfigByName]
64580
64590
  );
64581
- const getFilterInputType = useMemo32(
64591
+ const getFilterInputType = useMemo33(
64582
64592
  () => (_field, operator, misc) => {
64583
64593
  const fieldType = misc?.fieldData?.quillFieldType ?? queryBuilderFieldConfigByName[String(_field ?? "").trim()]?.fieldType ?? "string";
64584
64594
  if (fieldType === "date" && isRelativeDateQueryBuilderOperator(operator)) {
@@ -64588,7 +64598,7 @@ function useReport(reportIdArg, options = {}) {
64588
64598
  },
64589
64599
  [queryBuilderFieldConfigByName]
64590
64600
  );
64591
- const getFilterValueEditorType = useMemo32(
64601
+ const getFilterValueEditorType = useMemo33(
64592
64602
  () => (_field, operator, misc) => {
64593
64603
  const fieldType = misc?.fieldData?.quillFieldType ?? queryBuilderFieldConfigByName[String(_field ?? "").trim()]?.fieldType;
64594
64604
  if (fieldType === "string" && isMultiValueOperator(operator)) {
@@ -64601,7 +64611,7 @@ function useReport(reportIdArg, options = {}) {
64601
64611
  },
64602
64612
  [queryBuilderFieldConfigByName]
64603
64613
  );
64604
- const getFilterValues = useMemo32(
64614
+ const getFilterValues = useMemo33(
64605
64615
  () => (_field, operator, misc) => {
64606
64616
  const fieldName = String(_field ?? "").trim();
64607
64617
  if (!fieldName) {
@@ -64631,7 +64641,7 @@ function useReport(reportIdArg, options = {}) {
64631
64641
  },
64632
64642
  [filterValueOptionsByFieldName, queryBuilderFieldConfigByName]
64633
64643
  );
64634
- const filterQueryBuilderProps = useMemo32(
64644
+ const filterQueryBuilderProps = useMemo33(
64635
64645
  () => ({
64636
64646
  fields: filterFields,
64637
64647
  listsAsArrays: true,
@@ -64648,7 +64658,7 @@ function useReport(reportIdArg, options = {}) {
64648
64658
  getFilterValues
64649
64659
  ]
64650
64660
  );
64651
- const filtersForQueryBuilder = useMemo32(
64661
+ const filtersForQueryBuilder = useMemo33(
64652
64662
  () => canonicalizeMultiselectStringRulesToOptionValues(
64653
64663
  queryFilters,
64654
64664
  filterValueOptionsByFieldName,
@@ -64715,12 +64725,12 @@ function useReport(reportIdArg, options = {}) {
64715
64725
  ...table2 ? { table: table2 } : {}
64716
64726
  };
64717
64727
  };
64718
- const tenantHash = useMemo32(
64728
+ const tenantHash = useMemo33(
64719
64729
  () => stableSerializeForQueryKey(tenants),
64720
64730
  [tenants]
64721
64731
  );
64722
- const flagHash = useMemo32(() => stableSerializeForQueryKey(flags), [flags]);
64723
- const clientHash = useMemo32(
64732
+ const flagHash = useMemo33(() => stableSerializeForQueryKey(flags), [flags]);
64733
+ const clientHash = useMemo33(
64724
64734
  () => stableSerializeForQueryKey({
64725
64735
  publicKey: client?.publicKey,
64726
64736
  clientId: client?.clientId,
@@ -64728,7 +64738,7 @@ function useReport(reportIdArg, options = {}) {
64728
64738
  }),
64729
64739
  [client]
64730
64740
  );
64731
- const reloadKeyHash = useMemo32(
64741
+ const reloadKeyHash = useMemo33(
64732
64742
  () => stableSerializeForQueryKey(reloadKey),
64733
64743
  [reloadKey]
64734
64744
  );
@@ -65006,11 +65016,11 @@ function useReport(reportIdArg, options = {}) {
65006
65016
  schemaForReportBuilderState,
65007
65017
  sourceReport
65008
65018
  ]);
65009
- const appliedAggregationState = useMemo32(
65019
+ const appliedAggregationState = useMemo33(
65010
65020
  () => aggregationState.filter(isAppliedAggregation),
65011
65021
  [aggregationState]
65012
65022
  );
65013
- const pivotState = useMemo32(() => {
65023
+ const pivotState = useMemo33(() => {
65014
65024
  if (!resolvedGroupRowsBy && !resolvedGroupColumnsBy && appliedAggregationState.length === 0) {
65015
65025
  return null;
65016
65026
  }
@@ -65048,17 +65058,24 @@ function useReport(reportIdArg, options = {}) {
65048
65058
  rowTableHint,
65049
65059
  columnTableHint
65050
65060
  });
65061
+ const configuredDateBucket = chartPivotHydratedFromSourceRef.current ? dateBucket : dateBucket ?? priorPivot?.dateBucket;
65051
65062
  const built = {
65052
65063
  ...priorPivot ?? {},
65053
65064
  rowField: effectiveRowField,
65054
65065
  rowFieldType,
65055
65066
  columnField: effectiveColumnField,
65056
65067
  columnFieldType,
65057
- dateBucket: chartPivotHydratedFromSourceRef.current ? dateBucket : dateBucket ?? priorPivot?.dateBucket,
65068
+ dateBucket: configuredDateBucket,
65058
65069
  aggregations,
65059
65070
  ...rowFieldTable ? { rowFieldTable } : {},
65060
65071
  ...columnFieldTable ? { columnFieldTable } : {}
65061
65072
  };
65073
+ if (dateBucketMode === "standard" && effectiveRowField && isDateType(String(rowFieldType ?? ""))) {
65074
+ built.dateBucket = resolvePivotDateBucket({
65075
+ pivot: built,
65076
+ filters: internalFilters
65077
+ }) ?? "month";
65078
+ }
65062
65079
  return built;
65063
65080
  }, [
65064
65081
  aggregationState,
@@ -65066,8 +65083,10 @@ function useReport(reportIdArg, options = {}) {
65066
65083
  appliedAggregationState,
65067
65084
  baseReportBuilderTables,
65068
65085
  dateBucket,
65086
+ dateBucketMode,
65069
65087
  groupColumnsBy,
65070
65088
  groupRowsBy,
65089
+ internalFilters,
65071
65090
  schemaForReportBuilderState,
65072
65091
  sourceReport?.columnInternal,
65073
65092
  sourceReport?.columns,
@@ -65088,7 +65107,7 @@ function useReport(reportIdArg, options = {}) {
65088
65107
  }
65089
65108
  prevPivotStateForColumnExpansionRef.current = pivotState;
65090
65109
  }, [pivotState]);
65091
- const effectiveReportBuilderTables = useMemo32(() => {
65110
+ const effectiveReportBuilderTables = useMemo33(() => {
65092
65111
  const explicitBaseFromSchemaPicker = Array.isArray(schemaDatasourceIds) && schemaDatasourceIds.length > 0 ? schemaDatasourceIds.map((tableName) => String(tableName ?? "").trim()).filter(Boolean).map((name2) => ({ name: name2 })) : null;
65093
65112
  const baseTablesForMerge = explicitBaseFromSchemaPicker ?? baseReportBuilderTables;
65094
65113
  return mergeReportBuilderTables(
@@ -65112,18 +65131,18 @@ function useReport(reportIdArg, options = {}) {
65112
65131
  queryColumns,
65113
65132
  schemaDatasourceIds
65114
65133
  ]);
65115
- const datasources = useMemo32(() => {
65134
+ const datasources = useMemo33(() => {
65116
65135
  return effectiveReportBuilderTables.map((table2) => String(table2.name ?? "").trim()).filter((name2) => Boolean(name2));
65117
65136
  }, [effectiveReportBuilderTables]);
65118
- const effectiveReportBuilderTableNames = useMemo32(
65137
+ const effectiveReportBuilderTableNames = useMemo33(
65119
65138
  () => effectiveReportBuilderTables.map((table2) => String(table2.name ?? "").trim()).filter((name2) => Boolean(name2)),
65120
65139
  [effectiveReportBuilderTables]
65121
65140
  );
65122
- const baseReportBuilderTableNames = useMemo32(
65141
+ const baseReportBuilderTableNames = useMemo33(
65123
65142
  () => baseReportBuilderTables.map((table2) => String(table2.name ?? "").trim()).filter((name2) => Boolean(name2)),
65124
65143
  [baseReportBuilderTables]
65125
65144
  );
65126
- const normalizeQueryBuilderFieldNameForConfig = useMemo32(() => {
65145
+ const normalizeQueryBuilderFieldNameForConfig = useMemo33(() => {
65127
65146
  const configEntries = Object.entries(queryBuilderFieldConfigByName);
65128
65147
  const preferredTableNames = /* @__PURE__ */ new Set([
65129
65148
  ...effectiveReportBuilderTableNames,
@@ -65172,7 +65191,7 @@ function useReport(reportIdArg, options = {}) {
65172
65191
  effectiveReportBuilderTableNames,
65173
65192
  queryBuilderFieldConfigByName
65174
65193
  ]);
65175
- const normalizeQueryBuilderFiltersForConfig = useMemo32(() => {
65194
+ const normalizeQueryBuilderFiltersForConfig = useMemo33(() => {
65176
65195
  const normalizeGroup = (group) => {
65177
65196
  const groupRules = Array.isArray(group.rules) ? group.rules : [];
65178
65197
  const nextRules = groupRules.map((entry) => {
@@ -65209,14 +65228,14 @@ function useReport(reportIdArg, options = {}) {
65209
65228
  return normalizeGroup(group);
65210
65229
  };
65211
65230
  }, [normalizeQueryBuilderFieldNameForConfig, queryBuilderFieldConfigByName]);
65212
- const refreshSelectionTables = useMemo32(() => {
65231
+ const refreshSelectionTables = useMemo33(() => {
65213
65232
  return [
65214
65233
  getPivotGroupOptionTable(groupRowsBy),
65215
65234
  getPivotGroupOptionTable(groupColumnsBy),
65216
65235
  ...aggregationTablesByIndex
65217
65236
  ].map((tableName) => String(tableName ?? "").trim()).filter((tableName) => Boolean(tableName));
65218
65237
  }, [aggregationTablesByIndex, groupColumnsBy, groupRowsBy]);
65219
- const refreshSelectionFields = useMemo32(() => {
65238
+ const refreshSelectionFields = useMemo33(() => {
65220
65239
  const resolveFieldTableForSelection = (field, tableHint) => {
65221
65240
  const fieldName = String(field ?? "").trim();
65222
65241
  if (!fieldName) return "";
@@ -65266,7 +65285,7 @@ function useReport(reportIdArg, options = {}) {
65266
65285
  schemaForReportBuilderState,
65267
65286
  sourceReport
65268
65287
  ]);
65269
- const refreshDecision = useMemo32(
65288
+ const refreshDecision = useMemo33(
65270
65289
  () => decideReportBuilderRefresh({
65271
65290
  baseTables: baseReportBuilderTables,
65272
65291
  baseColumns: baseReportBuilderColumns,
@@ -65280,7 +65299,7 @@ function useReport(reportIdArg, options = {}) {
65280
65299
  refreshSelectionTables
65281
65300
  ]
65282
65301
  );
65283
- const effectiveReportBuilderColumns = useMemo32(() => {
65302
+ const effectiveReportBuilderColumns = useMemo33(() => {
65284
65303
  const columnsFromPivot = [];
65285
65304
  const appendPivotColumn = (field, tableHint) => {
65286
65305
  const normalizedField = String(field ?? "").trim();
@@ -65378,7 +65397,7 @@ function useReport(reportIdArg, options = {}) {
65378
65397
  queryBuilderFieldConfigByName,
65379
65398
  queryFilters
65380
65399
  ]);
65381
- const resolvedSortFieldType = useMemo32(() => {
65400
+ const resolvedSortFieldType = useMemo33(() => {
65382
65401
  const sortField = pivotSort?.sortField;
65383
65402
  if (!sortField || !pivotState) return void 0;
65384
65403
  if (sortField === resolvedGroupRowsBy) {
@@ -65399,7 +65418,7 @@ function useReport(reportIdArg, options = {}) {
65399
65418
  resolvedGroupColumnsBy,
65400
65419
  resolvedGroupRowsBy
65401
65420
  ]);
65402
- const effectiveReportBuilderState = useMemo32(() => {
65421
+ const effectiveReportBuilderState = useMemo33(() => {
65403
65422
  if (!sourceReport && effectiveReportBuilderTables.length === 0) {
65404
65423
  return void 0;
65405
65424
  }
@@ -65411,6 +65430,10 @@ function useReport(reportIdArg, options = {}) {
65411
65430
  ...pivotState,
65412
65431
  sort: Boolean(pivotSort?.sortField),
65413
65432
  sortField: pivotSort?.sortField,
65433
+ sortFieldTable: resolvePivotSortFieldTable(
65434
+ pivotState,
65435
+ pivotSort?.sortField
65436
+ ),
65414
65437
  sortDirection: pivotSort?.sortDirection,
65415
65438
  sortFieldType: resolvedSortFieldType,
65416
65439
  rowLimit: limit?.value
@@ -65438,7 +65461,7 @@ function useReport(reportIdArg, options = {}) {
65438
65461
  resolvedSortFieldType,
65439
65462
  sourceReport
65440
65463
  ]);
65441
- const effectiveReportBuilderStateHash = useMemo32(
65464
+ const effectiveReportBuilderStateHash = useMemo33(
65442
65465
  () => stableSerializeForQueryKey(effectiveReportBuilderState),
65443
65466
  [effectiveReportBuilderState]
65444
65467
  );
@@ -65459,7 +65482,7 @@ function useReport(reportIdArg, options = {}) {
65459
65482
  activate: false
65460
65483
  });
65461
65484
  }, [applyPaginationUpdate, effectiveReportBuilderStateHash]);
65462
- const pivotTableDataReportBuilderState = useMemo32(() => {
65485
+ const pivotTableDataReportBuilderState = useMemo33(() => {
65463
65486
  if (!effectiveReportBuilderState?.pivot) {
65464
65487
  return void 0;
65465
65488
  }
@@ -65479,11 +65502,11 @@ function useReport(reportIdArg, options = {}) {
65479
65502
  limit: null
65480
65503
  };
65481
65504
  }, [effectiveReportBuilderState, schemaForReportBuilderState]);
65482
- const pivotTableDataReportBuilderStateHash = useMemo32(
65505
+ const pivotTableDataReportBuilderStateHash = useMemo33(
65483
65506
  () => stableSerializeForQueryKey(pivotTableDataReportBuilderState),
65484
65507
  [pivotTableDataReportBuilderState]
65485
65508
  );
65486
- const sourceReportMatchesEffectiveReportId = useMemo32(() => {
65509
+ const sourceReportMatchesEffectiveReportId = useMemo33(() => {
65487
65510
  const loadTarget = String(effectiveReportId ?? "").trim();
65488
65511
  if (!loadTarget || !sourceReport) {
65489
65512
  return true;
@@ -65493,7 +65516,7 @@ function useReport(reportIdArg, options = {}) {
65493
65516
  ).trim();
65494
65517
  return sid === loadTarget;
65495
65518
  }, [effectiveReportId, sourceReport]);
65496
- const shouldSkipRedundantFlatTableReportBuilderQuery = useMemo32(() => {
65519
+ const shouldSkipRedundantFlatTableReportBuilderQuery = useMemo33(() => {
65497
65520
  if (!sourceReport || pivotState) {
65498
65521
  return false;
65499
65522
  }
@@ -65604,7 +65627,7 @@ function useReport(reportIdArg, options = {}) {
65604
65627
  effectiveReportId,
65605
65628
  sourceReport?.id
65606
65629
  ]);
65607
- const chartTypes = useMemo32(() => {
65630
+ const chartTypes = useMemo33(() => {
65608
65631
  return getChartTypeOptions2({ pivot: pivotState });
65609
65632
  }, [pivotState]);
65610
65633
  const resolvedChartType = chartTypes.find((option) => option.value === chartType)?.value ?? chartTypes.find((option) => option.value === sourceReport?.chartType)?.value ?? chartTypes.find((option) => option.value === DEFAULT_CHART_TYPE)?.value ?? chartTypes[0]?.value ?? DEFAULT_CHART_TYPE;
@@ -65643,7 +65666,7 @@ function useReport(reportIdArg, options = {}) {
65643
65666
  });
65644
65667
  }
65645
65668
  }, [chartType, chartTypes, sourceReport]);
65646
- const schemaScopedTableNames = useMemo32(() => {
65669
+ const schemaScopedTableNames = useMemo33(() => {
65647
65670
  if (preserveSchemaWideOptions) {
65648
65671
  return [];
65649
65672
  }
@@ -65658,7 +65681,7 @@ function useReport(reportIdArg, options = {}) {
65658
65681
  preserveSchemaWideOptions,
65659
65682
  sourceReport?.reportBuilderState?.tables
65660
65683
  ]);
65661
- const joinCompatibleSchemaTableNames = useMemo32(() => {
65684
+ const joinCompatibleSchemaTableNames = useMemo33(() => {
65662
65685
  if (schemaScopedTableNames.length === 0) {
65663
65686
  return [];
65664
65687
  }
@@ -65667,7 +65690,7 @@ function useReport(reportIdArg, options = {}) {
65667
65690
  schemaForeignKeyMap
65668
65691
  );
65669
65692
  }, [schemaForeignKeyMap, schemaScopedTableNames]);
65670
- const aggregationFallbackTarget = useMemo32(() => {
65693
+ const aggregationFallbackTarget = useMemo33(() => {
65671
65694
  const tableNames = effectiveReportBuilderTables.map((table2) => table2.name).filter((name2) => Boolean(name2));
65672
65695
  const referencedTableNames = (sourceReport?.referencedTables ?? []).filter(
65673
65696
  (name2) => typeof name2 === "string" && name2.length > 0
@@ -65675,7 +65698,7 @@ function useReport(reportIdArg, options = {}) {
65675
65698
  const tableNamesToUse = tableNames.length ? tableNames : referencedTableNames;
65676
65699
  return tableNamesToUse.length > 0 ? tableNamesToUse.join(", ") : "table";
65677
65700
  }, [effectiveReportBuilderTables, sourceReport?.referencedTables]);
65678
- const aggregationFallbackTableName = useMemo32(() => {
65701
+ const aggregationFallbackTableName = useMemo33(() => {
65679
65702
  const tableNames = effectiveReportBuilderTables.map((table2) => table2.name).filter((name2) => Boolean(name2));
65680
65703
  const referencedTableNames = (sourceReport?.referencedTables ?? []).filter(
65681
65704
  (name2) => typeof name2 === "string" && name2.length > 0
@@ -65683,7 +65706,7 @@ function useReport(reportIdArg, options = {}) {
65683
65706
  const tableNamesToUse = tableNames.length ? tableNames : referencedTableNames;
65684
65707
  return tableNamesToUse[0] ?? "table";
65685
65708
  }, [effectiveReportBuilderTables, sourceReport?.referencedTables]);
65686
- const cleanedAggregations = useMemo32(() => {
65709
+ const cleanedAggregations = useMemo33(() => {
65687
65710
  return aggregationState.filter((aggregation) => Boolean(aggregation?.aggregationType)).map((aggregation, index) => {
65688
65711
  const aggregationType = String(aggregation.aggregationType);
65689
65712
  const normalizedAggregationType = aggregationType.toLowerCase();
@@ -65705,7 +65728,7 @@ function useReport(reportIdArg, options = {}) {
65705
65728
  aggregationTablesByIndex,
65706
65729
  isBoolAggregationField
65707
65730
  ]);
65708
- const { aggregationBaseOptions, aggregationOptionTableLookup } = useMemo32(() => {
65731
+ const { aggregationBaseOptions, aggregationOptionTableLookup } = useMemo33(() => {
65709
65732
  const joinScoped = fieldOptionsAllowedTableNames ? joinCompatibleSchemaTableNames.filter(
65710
65733
  (name2) => fieldOptionsAllowedTableNames.has(name2)
65711
65734
  ) : joinCompatibleSchemaTableNames;
@@ -65788,7 +65811,7 @@ function useReport(reportIdArg, options = {}) {
65788
65811
  resolvedGroupRowsBy,
65789
65812
  schemaForReportBuilderState
65790
65813
  ]);
65791
- const { schemaColumnOptions, columnIdentifierLookup } = useMemo32(() => {
65814
+ const { schemaColumnOptions, columnIdentifierLookup } = useMemo33(() => {
65792
65815
  const lookup = /* @__PURE__ */ new Map();
65793
65816
  const options2 = [];
65794
65817
  for (const table2 of schemaData.schemaWithCustomFields) {
@@ -65815,7 +65838,7 @@ function useReport(reportIdArg, options = {}) {
65815
65838
  columnIdentifierLookup: lookup
65816
65839
  };
65817
65840
  }, [schemaData.schemaWithCustomFields]);
65818
- const tableColumnPickerPoolOptions = useMemo32(() => {
65841
+ const tableColumnPickerPoolOptions = useMemo33(() => {
65819
65842
  const allowed = new Set(
65820
65843
  effectiveReportBuilderTableNames.map((name2) => String(name2 ?? "").trim()).filter(Boolean)
65821
65844
  );
@@ -65826,16 +65849,16 @@ function useReport(reportIdArg, options = {}) {
65826
65849
  (option) => allowed.has(String(option.tableName ?? "").trim())
65827
65850
  );
65828
65851
  }, [effectiveReportBuilderTableNames, schemaColumnOptions]);
65829
- const columns = useMemo32(() => {
65852
+ const columns = useMemo33(() => {
65830
65853
  return displayColumns.filter((column) => Boolean(column.field)).map((column) => encodeColumnOptionValue(column.table, column.field));
65831
65854
  }, [displayColumns]);
65832
- const selectedColumnOptions = useMemo32(() => {
65855
+ const selectedColumnOptions = useMemo33(() => {
65833
65856
  return displayColumns.map((column) => {
65834
65857
  const value = column.alias || column.field;
65835
65858
  return value ? { label: value, value } : null;
65836
65859
  }).filter((option) => option !== null);
65837
65860
  }, [displayColumns]);
65838
- const scopedSchemaColumns = useMemo32(() => {
65861
+ const scopedSchemaColumns = useMemo33(() => {
65839
65862
  const tableNames = fieldOptionsAllowedTableNames ? Array.from(fieldOptionsAllowedTableNames) : joinCompatibleSchemaTableNames;
65840
65863
  const schemaTables = schemaForReportBuilderState;
65841
65864
  const tablesToUse = tableNames.length ? schemaTables.filter((table2) => tableNames.includes(table2.name ?? "")) : schemaTables;
@@ -65856,7 +65879,7 @@ function useReport(reportIdArg, options = {}) {
65856
65879
  joinCompatibleSchemaTableNames,
65857
65880
  schemaForReportBuilderState
65858
65881
  ]);
65859
- const pivotUniqueValuesByColumn = useMemo32(() => {
65882
+ const pivotUniqueValuesByColumn = useMemo33(() => {
65860
65883
  const explicitUniqueValues = sourceReport?.uniqueStringsByColumn ?? sourceReport?.columnUniqueValues ?? sourceReport?.uniqueValues;
65861
65884
  if (explicitUniqueValues && typeof explicitUniqueValues === "object" && !Array.isArray(explicitUniqueValues)) {
65862
65885
  return explicitUniqueValues;
@@ -65882,7 +65905,7 @@ function useReport(reportIdArg, options = {}) {
65882
65905
  }
65883
65906
  return result;
65884
65907
  }, [sourceReport]);
65885
- const possiblePivotFields = useMemo32(() => {
65908
+ const possiblePivotFields = useMemo33(() => {
65886
65909
  const options2 = getPossiblePivotFieldOptions(
65887
65910
  scopedSchemaColumns,
65888
65911
  pivotUniqueValuesByColumn
@@ -65893,7 +65916,7 @@ function useReport(reportIdArg, options = {}) {
65893
65916
  columnFields: options2.columnFields.filter((field) => !isIdColumn(field))
65894
65917
  };
65895
65918
  }, [scopedSchemaColumns, pivotUniqueValuesByColumn]);
65896
- const groupRowsByOptions = useMemo32(() => {
65919
+ const groupRowsByOptions = useMemo33(() => {
65897
65920
  const allowedFields = new Set(possiblePivotFields.rowFields);
65898
65921
  const seenValues = /* @__PURE__ */ new Set();
65899
65922
  const options2 = [];
@@ -65920,7 +65943,7 @@ function useReport(reportIdArg, options = {}) {
65920
65943
  }
65921
65944
  return options2;
65922
65945
  }, [groupRowsBy, possiblePivotFields.rowFields, scopedSchemaColumns]);
65923
- const groupColumnsByOptions = useMemo32(() => {
65946
+ const groupColumnsByOptions = useMemo33(() => {
65924
65947
  const allowedFields = new Set(possiblePivotFields.columnFields);
65925
65948
  const seenValues = /* @__PURE__ */ new Set();
65926
65949
  const options2 = [];
@@ -65947,19 +65970,19 @@ function useReport(reportIdArg, options = {}) {
65947
65970
  }
65948
65971
  return options2;
65949
65972
  }, [groupColumnsBy, possiblePivotFields.columnFields, scopedSchemaColumns]);
65950
- const cleanedSort = useMemo32(() => {
65973
+ const cleanedSort = useMemo33(() => {
65951
65974
  const activeSort = resolvedGroupRowsBy ? pivotSort : regularSort;
65952
65975
  if (!activeSort?.sortField || !activeSort?.sortDirection) {
65953
65976
  return "";
65954
65977
  }
65955
65978
  return toFlatSortValue(activeSort.sortField, activeSort.sortDirection);
65956
65979
  }, [pivotSort, regularSort, resolvedGroupRowsBy]);
65957
- const aggregationSortLabelFallbackTable = useMemo32(() => {
65980
+ const aggregationSortLabelFallbackTable = useMemo33(() => {
65958
65981
  const reportBuilderTableName = effectiveReportBuilderTables.map((table2) => String(table2.name ?? "").trim()).find((tableName) => Boolean(tableName));
65959
65982
  if (reportBuilderTableName) return reportBuilderTableName;
65960
65983
  return (sourceReport?.referencedTables ?? []).map((tableName) => String(tableName ?? "").trim()).find((tableName) => Boolean(tableName));
65961
65984
  }, [effectiveReportBuilderTables, sourceReport?.referencedTables]);
65962
- const sortOptions = useMemo32(() => {
65985
+ const sortOptions = useMemo33(() => {
65963
65986
  if (resolvedGroupRowsBy) {
65964
65987
  const aggregationSortFields = getPivotAggregationSortFields(
65965
65988
  aggregationState,
@@ -66018,7 +66041,7 @@ function useReport(reportIdArg, options = {}) {
66018
66041
  resolvedGroupRowsBy,
66019
66042
  selectedColumnOptions
66020
66043
  ]);
66021
- const { aggregationValues, aggregationOptions } = useMemo32(() => {
66044
+ const { aggregationValues, aggregationOptions } = useMemo33(() => {
66022
66045
  const baseOptions = aggregationBaseOptions.map((option) => ({
66023
66046
  value: option.value,
66024
66047
  label: option.label
@@ -66062,26 +66085,30 @@ function useReport(reportIdArg, options = {}) {
66062
66085
  aggregationTablesByIndex,
66063
66086
  isBoolAggregationField
66064
66087
  ]);
66065
- const nextPivot = useMemo32(() => {
66088
+ const nextPivot = useMemo33(() => {
66066
66089
  if (!sourceReport) return null;
66067
66090
  return pivotState ? {
66068
66091
  ...pivotState,
66069
66092
  sort: Boolean(pivotSort?.sortField),
66070
66093
  sortField: pivotSort?.sortField,
66094
+ sortFieldTable: resolvePivotSortFieldTable(
66095
+ pivotState,
66096
+ pivotSort?.sortField
66097
+ ),
66071
66098
  sortDirection: pivotSort?.sortDirection,
66072
66099
  sortFieldType: resolvedSortFieldType,
66073
66100
  rowLimit: limit?.value
66074
66101
  } : null;
66075
66102
  }, [sourceReport, pivotState, pivotSort, limit, resolvedSortFieldType]);
66076
- const nextPivotHash = useMemo32(
66103
+ const nextPivotHash = useMemo33(
66077
66104
  () => stableSerializeForQueryKey(nextPivot),
66078
66105
  [nextPivot]
66079
66106
  );
66080
- const filterStackHash = useMemo32(
66107
+ const filterStackHash = useMemo33(
66081
66108
  () => stableSerializeForQueryKey(filterStack),
66082
66109
  [filterStack]
66083
66110
  );
66084
- const shouldSkipPivotRefreshForUnchangedPivot = useMemo32(() => {
66111
+ const shouldSkipPivotRefreshForUnchangedPivot = useMemo33(() => {
66085
66112
  if (!sourceReport || !nextPivot) return false;
66086
66113
  if (!Array.isArray(sourceReport.rows) || sourceReport.rows.length === 0) {
66087
66114
  return false;
@@ -66119,7 +66146,7 @@ function useReport(reportIdArg, options = {}) {
66119
66146
  shouldSkipPivotRefreshForUnchangedPivot,
66120
66147
  sourceReport
66121
66148
  ]);
66122
- const shouldSkipRedundantPivotTableDataReportBuilderQuery = useMemo32(() => {
66149
+ const shouldSkipRedundantPivotTableDataReportBuilderQuery = useMemo33(() => {
66123
66150
  if (!sourceReport || !nextPivot) {
66124
66151
  return false;
66125
66152
  }
@@ -66221,7 +66248,7 @@ function useReport(reportIdArg, options = {}) {
66221
66248
  });
66222
66249
  const tablePageReportBuilderState = pivotTableDataReportBuilderState ?? effectiveReportBuilderState;
66223
66250
  const tablePageReportBuilderStateHash = pivotTableDataReportBuilderState ? pivotTableDataReportBuilderStateHash : effectiveReportBuilderStateHash;
66224
- const tablePaginationSort = useMemo32(() => {
66251
+ const tablePaginationSort = useMemo33(() => {
66225
66252
  const sortEntry = tablePageReportBuilderState?.sort?.[0];
66226
66253
  const field = String(sortEntry?.field ?? "").trim();
66227
66254
  if (!field || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(field)) {
@@ -66284,7 +66311,7 @@ function useReport(reportIdArg, options = {}) {
66284
66311
  const tablePageRows = tablePageQueryEnabled && !tablePageQuery.data?.error && Array.isArray(tablePageQuery.data?.report?.rows) ? tablePageQuery.data.report.rows : void 0;
66285
66312
  const tablePageRowCount = tablePageQueryEnabled && typeof tablePageQuery.data?.report?.rowCount === "number" && tablePageQuery.data.report.rowCount > 0 ? tablePageQuery.data.report.rowCount : void 0;
66286
66313
  const tablePageFetching = tablePageQueryEnabled && tablePageQuery.isFetching;
66287
- const paginationTotalRowCount = useMemo32(() => {
66314
+ const paginationTotalRowCount = useMemo33(() => {
66288
66315
  if (tablePageRowCount !== void 0) {
66289
66316
  return Math.max(tablePageRowCount, baseWindowRowsLength);
66290
66317
  }
@@ -66400,7 +66427,7 @@ function useReport(reportIdArg, options = {}) {
66400
66427
  pivotRefreshQueryEnabled,
66401
66428
  effectiveReportId
66402
66429
  ]);
66403
- const chartData = useMemo32(() => {
66430
+ const chartData = useMemo33(() => {
66404
66431
  if (!sourceReport) return void 0;
66405
66432
  const rowsForChart = Array.isArray(sourceReport.rows) ? sourceReport.rows : [];
66406
66433
  const chartPivotForDisplay = nextPivot ?? (!chartPivotHydratedFromSourceRef.current ? sourceReport.pivot ?? null : null);
@@ -66429,18 +66456,18 @@ function useReport(reportIdArg, options = {}) {
66429
66456
  useInMemoryEngines,
66430
66457
  chartPivotHydrationEpoch
66431
66458
  ]);
66432
- const baseChart = useMemo32(
66459
+ const baseChart = useMemo33(
66433
66460
  () => normalizePivotChartForDisplay(chartData),
66434
66461
  [chartData]
66435
66462
  );
66436
- const chartAxesBaseChart = useMemo32(() => {
66463
+ const chartAxesBaseChart = useMemo33(() => {
66437
66464
  if (!chartData) return void 0;
66438
66465
  if (chartData.pivot?.columnField) {
66439
66466
  return normalizePivotChartForAxisControls(chartData, effectiveReportId);
66440
66467
  }
66441
66468
  return baseChart;
66442
66469
  }, [baseChart, chartData, effectiveReportId]);
66443
- const chartAxisOptions = useMemo32(() => {
66470
+ const chartAxisOptions = useMemo33(() => {
66444
66471
  if (!chartAxesBaseChart) return [];
66445
66472
  const optionsByField = /* @__PURE__ */ new Map();
66446
66473
  const registerOption = (fieldRaw, labelRaw, formatRaw) => {
@@ -66479,14 +66506,14 @@ function useReport(reportIdArg, options = {}) {
66479
66506
  );
66480
66507
  return Array.from(optionsByField.values());
66481
66508
  }, [chartAxesBaseChart]);
66482
- const chartAxisOptionByField = useMemo32(() => {
66509
+ const chartAxisOptionByField = useMemo33(() => {
66483
66510
  const optionsByField = /* @__PURE__ */ new Map();
66484
66511
  for (const option of chartAxisOptions) {
66485
66512
  optionsByField.set(option.value, option);
66486
66513
  }
66487
66514
  return optionsByField;
66488
66515
  }, [chartAxisOptions]);
66489
- const xAxisOptions = useMemo32(() => {
66516
+ const xAxisOptions = useMemo33(() => {
66490
66517
  if (!chartAxesBaseChart) return chartAxisOptions;
66491
66518
  const pivot = chartAxesBaseChart.pivot;
66492
66519
  const pivotRowField = String(pivot?.rowField ?? "").trim();
@@ -66509,7 +66536,7 @@ function useReport(reportIdArg, options = {}) {
66509
66536
  }
66510
66537
  return chartAxisOptions;
66511
66538
  }, [chartAxesBaseChart, chartAxisOptions, chartAxisOptionByField]);
66512
- const yAxisOptions = useMemo32(() => {
66539
+ const yAxisOptions = useMemo33(() => {
66513
66540
  if (!chartAxesBaseChart) return [];
66514
66541
  const keepOption = (option) => {
66515
66542
  const col = findSchemaColumnForChartAxisField(
@@ -66545,21 +66572,21 @@ function useReport(reportIdArg, options = {}) {
66545
66572
  chartAxisOptions,
66546
66573
  schemaColumnOptions
66547
66574
  ]);
66548
- const normalizedChartXAxisOptions = useMemo32(() => {
66575
+ const normalizedChartXAxisOptions = useMemo33(() => {
66549
66576
  return xAxisOptions.map((option) => ({
66550
66577
  value: String(option.value ?? "").trim(),
66551
66578
  label: String(option.label ?? option.value ?? "").trim(),
66552
66579
  format: String(option.format ?? "").trim()
66553
66580
  }));
66554
66581
  }, [xAxisOptions]);
66555
- const normalizedChartYAxisOptions = useMemo32(() => {
66582
+ const normalizedChartYAxisOptions = useMemo33(() => {
66556
66583
  return yAxisOptions.map((option) => ({
66557
66584
  value: String(option.value ?? "").trim(),
66558
66585
  label: String(option.label ?? option.value ?? "").trim(),
66559
66586
  format: String(option.format ?? "").trim()
66560
66587
  }));
66561
66588
  }, [yAxisOptions]);
66562
- const resolvedYAxisFields = useMemo32(() => {
66589
+ const resolvedYAxisFields = useMemo33(() => {
66563
66590
  if (!chartAxesBaseChart) return [];
66564
66591
  const normalizeYAxisField = (yAxisFieldRaw) => {
66565
66592
  const field = String(yAxisFieldRaw?.field ?? "").trim();
@@ -66603,7 +66630,7 @@ function useReport(reportIdArg, options = {}) {
66603
66630
  chartAxisOptionByField,
66604
66631
  chartAxisOptions
66605
66632
  ]);
66606
- const resolvedXAxisField = useMemo32(() => {
66633
+ const resolvedXAxisField = useMemo33(() => {
66607
66634
  if (!chartAxesBaseChart) return "";
66608
66635
  const chartType2 = String(chartAxesBaseChart.chartType ?? "").toLowerCase();
66609
66636
  const pivotRowField = String(
@@ -66635,7 +66662,7 @@ function useReport(reportIdArg, options = {}) {
66635
66662
  chartAxisOptions,
66636
66663
  resolvedYAxisFields
66637
66664
  ]);
66638
- const resolvedXAxisFormat = useMemo32(() => {
66665
+ const resolvedXAxisFormat = useMemo33(() => {
66639
66666
  if (!chartAxesBaseChart) {
66640
66667
  return "string";
66641
66668
  }
@@ -66661,7 +66688,7 @@ function useReport(reportIdArg, options = {}) {
66661
66688
  resolvedXAxisField,
66662
66689
  resolvedYAxisFields
66663
66690
  ]);
66664
- const resolvedXAxisLabel = useMemo32(() => {
66691
+ const resolvedXAxisLabel = useMemo33(() => {
66665
66692
  const defaultXLabel = String(
66666
66693
  chartAxesBaseChart?.xAxisLabel ?? chartAxisOptionByField.get(resolvedXAxisField)?.label ?? ""
66667
66694
  ).trim();
@@ -66675,13 +66702,13 @@ function useReport(reportIdArg, options = {}) {
66675
66702
  chartAxisOptionByField,
66676
66703
  resolvedXAxisField
66677
66704
  ]);
66678
- const chartVisibility = useMemo32(
66705
+ const chartVisibility = useMemo33(
66679
66706
  () => ({
66680
66707
  showLegend: chartVisibilityOverrides.showLegend ?? Boolean(baseChart?.showLegend ?? false)
66681
66708
  }),
66682
66709
  [baseChart?.showLegend, chartVisibilityOverrides]
66683
66710
  );
66684
- const xAxis = useMemo32(() => {
66711
+ const xAxis = useMemo33(() => {
66685
66712
  const pivotBucketXAxis = isPivotTableDateBucketRowAxis(
66686
66713
  chartAxesBaseChart,
66687
66714
  resolvedXAxisField
@@ -66698,7 +66725,7 @@ function useReport(reportIdArg, options = {}) {
66698
66725
  resolvedXAxisField,
66699
66726
  resolvedXAxisFormat
66700
66727
  ]);
66701
- const yAxis = useMemo32(
66728
+ const yAxis = useMemo33(
66702
66729
  () => ({
66703
66730
  fields: resolvedYAxisFields.map((yAxisField) => ({
66704
66731
  field: yAxisField.field,
@@ -66710,14 +66737,14 @@ function useReport(reportIdArg, options = {}) {
66710
66737
  }),
66711
66738
  [resolvedYAxisFields]
66712
66739
  );
66713
- const resolvedYAxisFieldsForDisplay = useMemo32(() => {
66740
+ const resolvedYAxisFieldsForDisplay = useMemo33(() => {
66714
66741
  if (!baseChart) return resolvedYAxisFields;
66715
66742
  return mapResolvedPivotYAxisFieldsForDisplay({
66716
66743
  chart: baseChart,
66717
66744
  resolvedYAxisFields
66718
66745
  });
66719
66746
  }, [baseChart, resolvedYAxisFields]);
66720
- const chart = useMemo32(() => {
66747
+ const chart = useMemo33(() => {
66721
66748
  if (!baseChart) return void 0;
66722
66749
  let columns2 = mergeChartColumnFormatsFromYAxisFields(
66723
66750
  baseChart.columns,
@@ -66777,7 +66804,7 @@ function useReport(reportIdArg, options = {}) {
66777
66804
  resolvedYAxisFieldsForDisplay
66778
66805
  ]);
66779
66806
  const pivotDateFilterRangeCacheRef = useRef24({ key: "", min: null, max: null });
66780
- const filterOptions = useMemo32(() => {
66807
+ const filterOptions = useMemo33(() => {
66781
66808
  const out = [];
66782
66809
  for (const [field, values] of filterValueOptionsByFieldName) {
66783
66810
  out.push({
@@ -66839,7 +66866,7 @@ function useReport(reportIdArg, options = {}) {
66839
66866
  effectiveReportId,
66840
66867
  filterValueOptionsByFieldName
66841
66868
  ]);
66842
- const chartForUi = useMemo32(() => {
66869
+ const chartForUi = useMemo33(() => {
66843
66870
  if (!chart?.pivot) return chart;
66844
66871
  const pivot = chart.pivot;
66845
66872
  const qualify = (field, table2) => table2 ? `${table2}.${field}` : field;
@@ -66915,11 +66942,11 @@ function useReport(reportIdArg, options = {}) {
66915
66942
  };
66916
66943
  }, [chart, filterOptions, filtersForQueryBuilder]);
66917
66944
  const isPivotTableChart = String(chartType ?? "").toLowerCase() === "table" && Boolean(pivotState);
66918
- const pivotTableColumnControls = useMemo32(
66945
+ const pivotTableColumnControls = useMemo33(
66919
66946
  () => isPivotTableChart ? buildPivotColumnPivotTableFormattingColumns(pivotState, chart) : null,
66920
66947
  [chart, isPivotTableChart, pivotState]
66921
66948
  );
66922
- const chartAxes = useMemo32(() => {
66949
+ const chartAxes = useMemo33(() => {
66923
66950
  const yAxisItems = resolvedYAxisFields.map(
66924
66951
  (yAxisField, index) => ({
66925
66952
  id: String(index),
@@ -67069,7 +67096,7 @@ function useReport(reportIdArg, options = {}) {
67069
67096
  yAxisOptions
67070
67097
  ]);
67071
67098
  const tableFormatCacheRef = useRef24(/* @__PURE__ */ new Map());
67072
- const tableFormatMerge = useMemo32(
67099
+ const tableFormatMerge = useMemo33(
67073
67100
  () => mergeDisplayAndSourceForTableFormats({
67074
67101
  effectiveReportBuilderTableNames,
67075
67102
  scopedSchemaColumns,
@@ -67085,7 +67112,7 @@ function useReport(reportIdArg, options = {}) {
67085
67112
  tableColumnsEditedSignature
67086
67113
  ]
67087
67114
  );
67088
- const table = useMemo32(() => {
67115
+ const table = useMemo33(() => {
67089
67116
  const baseWindowRows = Array.isArray(sourceReport?.rows) ? sourceReport.rows : [];
67090
67117
  const rawRows = !paginationActive ? baseWindowRows : tablePageRows ?? baseWindowRows.slice(paginationRangeStart, paginationRangeEnd);
67091
67118
  const { columns: mergedFromReport } = mergeDisplayAndSourceForTableFormats({
@@ -67216,7 +67243,7 @@ function useReport(reportIdArg, options = {}) {
67216
67243
  const {
67217
67244
  columnsOptions: tableFormattingColumnOptions,
67218
67245
  hasTableDrivenColumnOrder
67219
- } = useMemo32(() => {
67246
+ } = useMemo33(() => {
67220
67247
  if (pivotTableColumnControls) {
67221
67248
  return getAllColumnOptions({
67222
67249
  schemaColumnOptions,
@@ -67246,24 +67273,24 @@ function useReport(reportIdArg, options = {}) {
67246
67273
  schemaColumnOptions,
67247
67274
  table.columns
67248
67275
  ]);
67249
- const axisSelectFormatLabels = useMemo32(
67276
+ const axisSelectFormatLabels = useMemo33(
67250
67277
  () => AXIS_FORMAT_OPTIONS.map((option) => option.label),
67251
67278
  []
67252
67279
  );
67253
- const xAxisFormatOptionLabels = useMemo32(() => {
67280
+ const xAxisFormatOptionLabels = useMemo33(() => {
67254
67281
  if (isPivotTableDateBucketRowAxis(chartAxesBaseChart, resolvedXAxisField)) {
67255
67282
  return ["date", ...axisSelectFormatLabels];
67256
67283
  }
67257
67284
  return axisSelectFormatLabels;
67258
67285
  }, [chartAxesBaseChart, resolvedXAxisField, axisSelectFormatLabels]);
67259
- const tableDerivedColumnOrder = useMemo32(() => {
67286
+ const tableDerivedColumnOrder = useMemo33(() => {
67260
67287
  return tableFormattingColumnOptions.map((option) => option.value);
67261
67288
  }, [tableFormattingColumnOptions]);
67262
- const tableDerivedColumnOrderSignature = useMemo32(
67289
+ const tableDerivedColumnOrderSignature = useMemo33(
67263
67290
  () => tableDerivedColumnOrder.join("|"),
67264
67291
  [tableDerivedColumnOrder]
67265
67292
  );
67266
- const activeTableColumnIds = useMemo32(() => {
67293
+ const activeTableColumnIds = useMemo33(() => {
67267
67294
  if (pivotTableColumnControls) {
67268
67295
  return pivotTableColumnControls.selectedColumnIds;
67269
67296
  }
@@ -67297,7 +67324,7 @@ function useReport(reportIdArg, options = {}) {
67297
67324
  tableDerivedColumnOrder,
67298
67325
  tableFormattingColumnOptions
67299
67326
  ]);
67300
- const columnOptionById = useMemo32(() => {
67327
+ const columnOptionById = useMemo33(() => {
67301
67328
  const map = /* @__PURE__ */ new Map();
67302
67329
  for (const option of tableColumnPickerPoolOptions) {
67303
67330
  map.set(option.value, option);
@@ -67309,7 +67336,7 @@ function useReport(reportIdArg, options = {}) {
67309
67336
  }
67310
67337
  return map;
67311
67338
  }, [tableColumnPickerPoolOptions, tableFormattingColumnOptions]);
67312
- const displayColumnById = useMemo32(() => {
67339
+ const displayColumnById = useMemo33(() => {
67313
67340
  const map = /* @__PURE__ */ new Map();
67314
67341
  for (const column of displayColumns) {
67315
67342
  const field = String(column.field ?? "").trim();
@@ -67320,7 +67347,7 @@ function useReport(reportIdArg, options = {}) {
67320
67347
  }
67321
67348
  return map;
67322
67349
  }, [displayColumns]);
67323
- const tableColumnSettingsById = useMemo32(() => {
67350
+ const tableColumnSettingsById = useMemo33(() => {
67324
67351
  const map = /* @__PURE__ */ new Map();
67325
67352
  const effectiveById = tableFormatMerge.formatByColumnOptionId;
67326
67353
  const chartColById = /* @__PURE__ */ new Map();
@@ -67446,7 +67473,7 @@ function useReport(reportIdArg, options = {}) {
67446
67473
  useLayoutEffect4(() => {
67447
67474
  tableColumnSettingsCoalesceRef.current = new Map(tableColumnSettingsById);
67448
67475
  }, [tableColumnSettingsById]);
67449
- const tableColumnItems = useMemo32(() => {
67476
+ const tableColumnItems = useMemo33(() => {
67450
67477
  const pivotRowFieldForFormat = String(chart?.pivot?.rowField ?? "").trim();
67451
67478
  const pivotRowFieldType = String(chart?.pivot?.rowFieldType ?? "").trim();
67452
67479
  const items = activeTableColumnIds.map((columnId) => {
@@ -67482,10 +67509,10 @@ function useReport(reportIdArg, options = {}) {
67482
67509
  isPivotTableChart,
67483
67510
  tableColumnSettingsById
67484
67511
  ]);
67485
- const tableColumnById = useMemo32(() => {
67512
+ const tableColumnById = useMemo33(() => {
67486
67513
  return new Map(tableColumnItems.map((item) => [item.id, item]));
67487
67514
  }, [tableColumnItems]);
67488
- const tableColumnValues = useMemo32(() => {
67515
+ const tableColumnValues = useMemo33(() => {
67489
67516
  const pivotRowFieldForFormat = String(chart?.pivot?.rowField ?? "").trim();
67490
67517
  const pivotRowFieldType = String(chart?.pivot?.rowFieldType ?? "").trim();
67491
67518
  return tableColumnItems.map((item) => {
@@ -68370,8 +68397,8 @@ function useReport(reportIdArg, options = {}) {
68370
68397
  groupRowsByOptions,
68371
68398
  groupColumnsBy,
68372
68399
  groupColumnsByOptions,
68373
- dateBucket,
68374
- dateBucketOptions: hasDatePivotRow ? PIVOT_DATE_BUCKET_OPTIONS : [],
68400
+ dateBucket: dateBucketMode === "standard" ? pivotState?.dateBucket : dateBucket,
68401
+ dateBucketOptions: hasDatePivotRow ? dateBucketMode === "standard" ? STANDARD_PIVOT_DATE_BUCKET_OPTIONS : PIVOT_DATE_BUCKET_OPTIONS : [],
68375
68402
  /** Encoded selection per aggregation slot (`'sum:transactions::amount'`, `'count:transactions'`, `''` = placeholder). Update via `setReport({ aggregations: nextStringArray })`. */
68376
68403
  aggregations: aggregationValues,
68377
68404
  /** Flat aggregation pick list shared by all slots; always contains every non-empty `aggregations` entry. */
@@ -68455,7 +68482,7 @@ function ChatChartCard({
68455
68482
  loading,
68456
68483
  setReport
68457
68484
  } = useReport(reportId);
68458
- const selectedColumnValues = useMemo33(
68485
+ const selectedColumnValues = useMemo34(
68459
68486
  () => columns.map((column) => column.value),
68460
68487
  [columns]
68461
68488
  );
@@ -69219,7 +69246,7 @@ function Chat({
69219
69246
  }
69220
69247
 
69221
69248
  // src/hooks/useReportFilterDraft.ts
69222
- import { useCallback as useCallback6, useEffect as useEffect33, useMemo as useMemo34, useRef as useRef26, useState as useState43 } from "react";
69249
+ import { useCallback as useCallback6, useEffect as useEffect33, useMemo as useMemo35, useRef as useRef26, useState as useState43 } from "react";
69223
69250
  var normalizeOperatorKey = (operator) => String(operator ?? "").trim().toLowerCase().replace(/[_\s]+/g, "");
69224
69251
  var defaultFilterRuleValueForOperator = (operator) => {
69225
69252
  const key = normalizeOperatorKey(operator);
@@ -69272,12 +69299,12 @@ function useReportFilterDraft(args) {
69272
69299
  lastNonEmptyFieldsRef.current = queryBuilderProps.fields;
69273
69300
  }
69274
69301
  const effectiveFields = queryBuilderProps.fields.length > 0 ? queryBuilderProps.fields : lastNonEmptyFieldsRef.current;
69275
- const committedSignature = useMemo34(
69302
+ const committedSignature = useMemo35(
69276
69303
  () => committedFiltersSignature(committed),
69277
69304
  // eslint-disable-next-line react-hooks/exhaustive-deps -- `committed` normalizes null to a stable constant
69278
69305
  [committedFilters]
69279
69306
  );
69280
- const fieldsSignature = useMemo34(
69307
+ const fieldsSignature = useMemo35(
69281
69308
  () => fieldCatalogSignature(effectiveFields),
69282
69309
  [effectiveFields]
69283
69310
  );
@@ -69320,7 +69347,7 @@ function useReportFilterDraft(args) {
69320
69347
  (rule) => defaultFilterRuleValueForOperator(rule?.operator),
69321
69348
  []
69322
69349
  );
69323
- const filterDraftQueryBuilderProps = useMemo34(
69350
+ const filterDraftQueryBuilderProps = useMemo35(
69324
69351
  () => ({
69325
69352
  ...queryBuilderProps,
69326
69353
  fields: effectiveFields,
@@ -69643,7 +69670,7 @@ var useTenants = (dashboardName) => {
69643
69670
  };
69644
69671
 
69645
69672
  // src/hooks/useQuill.ts
69646
- import { useContext as useContext40, useEffect as useEffect35, useMemo as useMemo35, useState as useState45 } from "react";
69673
+ import { useContext as useContext40, useEffect as useEffect35, useMemo as useMemo36, useState as useState45 } from "react";
69647
69674
  init_paginationProcessing();
69648
69675
  init_tableProcessing();
69649
69676
  init_dataProcessing();
@@ -69651,14 +69678,14 @@ var useQuill = (reportId, pagination) => {
69651
69678
  const { reports, reportsDispatch, fetchIndividualReport } = useContext40(ReportsContext);
69652
69679
  const { allReportsById } = useAllReports();
69653
69680
  const { getToken } = useContext40(FetchContext);
69654
- const dashboardReport = useMemo35(() => {
69681
+ const dashboardReport = useMemo36(() => {
69655
69682
  return allReportsById[reportId ?? ""];
69656
69683
  }, [allReportsById[reportId ?? ""]]);
69657
69684
  const { dashboardFilters, dashboardCustomFilters } = useContext40(
69658
69685
  DashboardFiltersContext
69659
69686
  );
69660
69687
  const { reportFilters, customReportFilters, reportFiltersDispatch } = useContext40(ReportFiltersContext);
69661
- const specificReportFilters = useMemo35(() => {
69688
+ const specificReportFilters = useMemo36(() => {
69662
69689
  if (!reportId) return null;
69663
69690
  return Object.values(reportFilters[reportId] ?? []).map((f) => f.filter);
69664
69691
  }, [reportFilters, reportId]);
@@ -69669,7 +69696,7 @@ var useQuill = (reportId, pagination) => {
69669
69696
  const [loading, setLoading] = useState45(true);
69670
69697
  const [error, setError] = useState45(void 0);
69671
69698
  const [previousPage, setPreviousPage] = useState45(0);
69672
- const processedReport = useMemo35(() => {
69699
+ const processedReport = useMemo36(() => {
69673
69700
  return reportId && allReportsById[reportId] ? convertInternalReportToReport(
69674
69701
  mergeComparisonRange(allReportsById[reportId]),
69675
69702
  specificReportFilters ?? [],
@@ -69866,10 +69893,10 @@ var useQuill = (reportId, pagination) => {
69866
69893
 
69867
69894
  // src/hooks/useFormat.ts
69868
69895
  init_valueFormatter();
69869
- import { useMemo as useMemo36 } from "react";
69896
+ import { useMemo as useMemo37 } from "react";
69870
69897
  var useMemoizedRows = (reportId) => {
69871
69898
  const { data } = useQuill(reportId);
69872
- const formattedRows = useMemo36(() => {
69899
+ const formattedRows = useMemo37(() => {
69873
69900
  if (!data || !data.rows || !data.columns)
69874
69901
  return { rows: [], loading: true };
69875
69902
  return {