@visactor/vseed 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/prepare.js +87 -153
  4. package/dist/esm/builder/builder/prepare.js.map +1 -1
  5. package/dist/esm/dataSelector/selector.d.ts +2 -2
  6. package/dist/esm/dataSelector/selector.js.map +1 -1
  7. package/dist/esm/i18n/i18nData.js +28 -0
  8. package/dist/esm/i18n/i18nData.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  10. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js +2 -3
  11. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js.map +1 -1
  12. package/dist/esm/pipeline/advanced/table/pipes/config/pivotTableConfig.js +2 -1
  13. package/dist/esm/pipeline/advanced/table/pipes/config/pivotTableConfig.js.map +1 -1
  14. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/table/pipes/default/index.d.ts +0 -1
  16. package/dist/esm/pipeline/advanced/table/pipes/default/index.js +1 -2
  17. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js +6 -3
  18. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/table/pipes/index.d.ts +0 -1
  20. package/dist/esm/pipeline/advanced/table/pipes/index.js +0 -1
  21. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +6 -2
  22. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  23. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js +1 -1
  24. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
  25. package/dist/esm/pipeline/spec/table/pipeline/table.js +3 -1
  26. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  27. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +1 -3
  28. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  29. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.d.ts +8 -0
  30. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.js +76 -0
  31. package/dist/esm/pipeline/spec/table/pipes/columns/columnsAggregation.js.map +1 -0
  32. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js +1 -27
  33. package/dist/esm/pipeline/spec/table/pipes/columns/dimensionsToColumns.js.map +1 -1
  34. package/dist/esm/pipeline/spec/table/pipes/columns/index.d.ts +1 -0
  35. package/dist/esm/pipeline/spec/table/pipes/columns/index.js +1 -0
  36. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +1 -27
  37. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  38. package/dist/esm/pipeline/spec/table/pipes/columns/utils.d.ts +15 -0
  39. package/dist/esm/pipeline/spec/table/pipes/columns/utils.js +35 -0
  40. package/dist/esm/pipeline/spec/table/pipes/columns/utils.js.map +1 -0
  41. package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js +3 -2
  42. package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js.map +1 -1
  43. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js +41 -5
  44. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
  45. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +20 -25
  46. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  47. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +2 -12
  48. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  49. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.d.ts +2 -0
  50. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.js +51 -0
  51. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.js.map +1 -0
  52. package/dist/esm/pipeline/spec/table/pipes/theme/index.d.ts +1 -0
  53. package/dist/esm/pipeline/spec/table/pipes/theme/index.js +1 -0
  54. package/dist/esm/types/advancedVSeed.d.ts +2 -1
  55. package/dist/esm/types/advancedVSeed.js +3 -2
  56. package/dist/esm/types/advancedVSeed.js.map +1 -1
  57. package/dist/esm/types/chartType/area/zArea.d.ts +113 -8
  58. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +113 -8
  59. package/dist/esm/types/chartType/bar/zBar.d.ts +97 -4
  60. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +97 -4
  61. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +97 -4
  62. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +89 -2
  63. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +81 -0
  64. package/dist/esm/types/chartType/column/zColumn.d.ts +97 -4
  65. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +97 -4
  66. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +97 -4
  67. package/dist/esm/types/chartType/donut/zDonut.d.ts +81 -0
  68. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +121 -10
  69. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +81 -0
  70. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +81 -0
  71. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +97 -4
  72. package/dist/esm/types/chartType/line/zLine.d.ts +105 -6
  73. package/dist/esm/types/chartType/pie/zPie.d.ts +81 -0
  74. package/dist/esm/types/chartType/pivotTable/pivotTable.d.ts +12 -1
  75. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +13 -0
  76. package/dist/esm/types/chartType/pivotTable/zPivotTable.js +3 -1
  77. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  78. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +97 -4
  79. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +97 -4
  80. package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +81 -0
  81. package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +105 -6
  82. package/dist/esm/types/chartType/racePie/zRacePie.d.ts +81 -0
  83. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +97 -4
  84. package/dist/esm/types/chartType/radar/zRadar.d.ts +81 -0
  85. package/dist/esm/types/chartType/rose/zRose.d.ts +81 -0
  86. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +81 -0
  87. package/dist/esm/types/chartType/scatter/zScatter.d.ts +97 -4
  88. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +81 -0
  89. package/dist/esm/types/chartType/table/table.d.ts +11 -1
  90. package/dist/esm/types/chartType/table/zTable.d.ts +7 -0
  91. package/dist/esm/types/chartType/table/zTable.js +2 -1
  92. package/dist/esm/types/chartType/table/zTable.js.map +1 -1
  93. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +81 -0
  94. package/dist/esm/types/dataSelector/selector.d.ts +53 -29
  95. package/dist/esm/types/dataSelector/selector.js +1 -1
  96. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  97. package/dist/esm/types/properties/aggregation/aggregation.d.ts +9 -0
  98. package/dist/esm/types/properties/aggregation/aggregation.js +0 -0
  99. package/dist/esm/types/properties/aggregation/index.d.ts +2 -0
  100. package/dist/esm/types/properties/aggregation/index.js +2 -0
  101. package/dist/esm/types/properties/aggregation/zAggregation.d.ts +8 -0
  102. package/dist/esm/types/properties/aggregation/zAggregation.js +11 -0
  103. package/dist/esm/types/properties/aggregation/zAggregation.js.map +1 -0
  104. package/dist/esm/types/properties/annotation/annotation.d.ts +8 -2
  105. package/dist/esm/types/properties/annotation/zAnnotationPoint.d.ts +4 -1
  106. package/dist/esm/types/properties/config/annotation/zAnnotation.d.ts +8 -2
  107. package/dist/esm/types/properties/config/area.d.ts +170 -2
  108. package/dist/esm/types/properties/config/bar.d.ts +255 -3
  109. package/dist/esm/types/properties/config/boxplot.d.ts +85 -1
  110. package/dist/esm/types/properties/config/circlePacking.d.ts +81 -0
  111. package/dist/esm/types/properties/config/column.d.ts +255 -3
  112. package/dist/esm/types/properties/config/config.d.ts +2425 -19
  113. package/dist/esm/types/properties/config/dualAxis.d.ts +85 -1
  114. package/dist/esm/types/properties/config/funnel.d.ts +81 -0
  115. package/dist/esm/types/properties/config/heatmap.d.ts +81 -0
  116. package/dist/esm/types/properties/config/histogram.d.ts +85 -1
  117. package/dist/esm/types/properties/config/label/label.d.ts +18 -1
  118. package/dist/esm/types/properties/config/label/zLabel.d.ts +81 -0
  119. package/dist/esm/types/properties/config/label/zLabel.js +3 -2
  120. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  121. package/dist/esm/types/properties/config/label/zPieLabel.d.ts +81 -0
  122. package/dist/esm/types/properties/config/line.d.ts +85 -1
  123. package/dist/esm/types/properties/config/pie.d.ts +243 -0
  124. package/dist/esm/types/properties/config/race.d.ts +510 -6
  125. package/dist/esm/types/properties/config/rose.d.ts +162 -0
  126. package/dist/esm/types/properties/config/scatter.d.ts +85 -1
  127. package/dist/esm/types/properties/config/sunburst.d.ts +81 -0
  128. package/dist/esm/types/properties/config/treeMap.d.ts +81 -0
  129. package/dist/esm/types/properties/index.d.ts +2 -0
  130. package/dist/esm/types/properties/index.js +2 -0
  131. package/dist/esm/types/properties/markStyle/barStyle.d.ts +4 -1
  132. package/dist/esm/types/properties/markStyle/lineStyle.d.ts +4 -1
  133. package/dist/esm/types/properties/markStyle/markStyle.d.ts +32 -8
  134. package/dist/esm/types/properties/markStyle/pointStyle.d.ts +4 -1
  135. package/dist/esm/types/properties/markStyle/zAreaStyle.d.ts +4 -1
  136. package/dist/esm/types/properties/theme/customTheme.d.ts +4850 -38
  137. package/dist/esm/types/properties/totals/index.d.ts +2 -0
  138. package/dist/esm/types/properties/totals/index.js +2 -0
  139. package/dist/esm/types/properties/totals/totals.d.ts +34 -0
  140. package/dist/esm/types/properties/totals/totals.js +0 -0
  141. package/dist/esm/types/properties/totals/zTotals.d.ts +18 -0
  142. package/dist/esm/types/properties/totals/zTotals.js +13 -0
  143. package/dist/esm/types/properties/totals/zTotals.js.map +1 -0
  144. package/dist/umd/index.js +461 -388
  145. package/dist/umd/index.js.map +1 -1
  146. package/package.json +1 -1
  147. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.d.ts +0 -2
  148. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js +0 -19
  149. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js.map +0 -1
  150. package/dist/esm/pipeline/advanced/table/pipes/reshape/index.d.ts +0 -1
  151. package/dist/esm/pipeline/advanced/table/pipes/reshape/index.js +0 -2
  152. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +0 -2
  153. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js +0 -32
  154. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js.map +0 -1
package/dist/umd/index.js CHANGED
@@ -305,6 +305,7 @@
305
305
  zPieLabel: ()=>zPieLabel,
306
306
  zUnfoldInfo: ()=>zUnfoldInfo,
307
307
  zRadarConfig: ()=>zRadarConfig,
308
+ zPivotTableTotals: ()=>zPivotTableTotals,
308
309
  a: ()=>i18n_a,
309
310
  createNumFormatter: ()=>createNumFormatter,
310
311
  HAS_BUILTIN_UTILS: ()=>HAS_BUILTIN_UTILS,
@@ -324,6 +325,7 @@
324
325
  DetailEncoding: ()=>DetailEncoding,
325
326
  isPivot: ()=>chatType_isPivot,
326
327
  raceScatterAdvancedPipeline: ()=>raceScatterAdvancedPipeline,
328
+ zRowOrColumnTotalConfig: ()=>zRowOrColumnTotalConfig,
327
329
  zPlayer: ()=>zPlayer,
328
330
  zPointStyle: ()=>zPointStyle,
329
331
  zDimension: ()=>zDimension,
@@ -349,6 +351,7 @@
349
351
  zBoxPlot: ()=>zBoxPlot,
350
352
  zRaceScatter: ()=>zRaceScatter,
351
353
  registerBarParallel: ()=>registerBarParallel,
354
+ zTotalType: ()=>zTotalType,
352
355
  pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
353
356
  DUAL_AXIS_LABEL_Z_INDEX: ()=>1002,
354
357
  MeasureEncodingEnum: ()=>MeasureEncodingEnum,
@@ -429,6 +432,34 @@
429
432
  下边界: {
430
433
  'en-US': 'Lower Whisker',
431
434
  'zh-CN': '下边界'
435
+ },
436
+ 总计: {
437
+ 'en-US': 'Total',
438
+ 'zh-CN': '总计'
439
+ },
440
+ 小计: {
441
+ 'en-US': 'Sub Total',
442
+ 'zh-CN': '小计'
443
+ },
444
+ 合计: {
445
+ 'en-US': 'Total',
446
+ 'zh-CN': '合计'
447
+ },
448
+ 平均: {
449
+ 'en-US': 'Average',
450
+ 'zh-CN': '平均'
451
+ },
452
+ 最大值: {
453
+ 'en-US': 'Max',
454
+ 'zh-CN': '最大值'
455
+ },
456
+ 最小值: {
457
+ 'en-US': 'Min',
458
+ 'zh-CN': '最小值'
459
+ },
460
+ 计数: {
461
+ 'en-US': 'Count',
462
+ 'zh-CN': '计数'
432
463
  }
433
464
  };
434
465
  class i18n_Intl {
@@ -1805,82 +1836,93 @@ self.R = R;
1805
1836
  }
1806
1837
  return defaultSelector ? selector_selector(vchartDatum, defaultSelector) : false;
1807
1838
  };
1839
+ const dynamicFilterConfig = {
1840
+ table: [
1841
+ 'bodyCellStyle'
1842
+ ],
1843
+ pivotTable: [
1844
+ 'bodyCellStyle'
1845
+ ],
1846
+ bar: [
1847
+ 'barStyle',
1848
+ 'annotationPoint',
1849
+ 'annotationVerticalLine',
1850
+ 'label'
1851
+ ],
1852
+ barParallel: [
1853
+ 'barStyle',
1854
+ 'annotationPoint',
1855
+ 'annotationVerticalLine',
1856
+ 'label'
1857
+ ],
1858
+ barPercent: [
1859
+ 'barStyle',
1860
+ 'annotationPoint',
1861
+ 'annotationVerticalLine',
1862
+ 'label'
1863
+ ],
1864
+ column: [
1865
+ 'barStyle',
1866
+ 'annotationPoint',
1867
+ 'annotationHorizontalLine',
1868
+ 'label'
1869
+ ],
1870
+ columnParallel: [
1871
+ 'barStyle',
1872
+ 'annotationPoint',
1873
+ 'annotationHorizontalLine',
1874
+ 'label'
1875
+ ],
1876
+ columnPercent: [
1877
+ 'barStyle',
1878
+ 'annotationPoint',
1879
+ 'annotationHorizontalLine',
1880
+ 'label'
1881
+ ],
1882
+ line: [
1883
+ 'lineStyle',
1884
+ 'pointStyle',
1885
+ 'annotationPoint',
1886
+ 'annotationHorizontalLine',
1887
+ 'label'
1888
+ ],
1889
+ area: [
1890
+ 'lineStyle',
1891
+ 'pointStyle',
1892
+ 'annotationPoint',
1893
+ 'annotationHorizontalLine',
1894
+ 'label'
1895
+ ],
1896
+ areaPercent: [
1897
+ 'lineStyle',
1898
+ 'pointStyle',
1899
+ 'annotationPoint',
1900
+ 'annotationHorizontalLine',
1901
+ 'label'
1902
+ ],
1903
+ dualAxis: [
1904
+ 'barStyle',
1905
+ 'lineStyle',
1906
+ 'pointStyle',
1907
+ 'annotationPoint',
1908
+ 'annotationHorizontalLine',
1909
+ 'label'
1910
+ ],
1911
+ scatter: [
1912
+ 'pointStyle',
1913
+ 'annotationPoint',
1914
+ 'annotationHorizontalLine',
1915
+ 'annotationVerticalLine',
1916
+ 'label'
1917
+ ],
1918
+ histogram: [
1919
+ 'annotationHorizontalLine'
1920
+ ],
1921
+ boxPlot: [
1922
+ 'annotationHorizontalLine'
1923
+ ]
1924
+ };
1808
1925
  const generateDynamicFilterKeyPaths = ()=>{
1809
- const dynamicFilterConfig = {
1810
- table: [
1811
- 'bodyCellStyle'
1812
- ],
1813
- pivotTable: [
1814
- 'bodyCellStyle'
1815
- ],
1816
- bar: [
1817
- 'barStyle',
1818
- 'annotationPoint',
1819
- 'annotationVerticalLine'
1820
- ],
1821
- barParallel: [
1822
- 'barStyle',
1823
- 'annotationPoint',
1824
- 'annotationVerticalLine'
1825
- ],
1826
- barPercent: [
1827
- 'barStyle',
1828
- 'annotationPoint',
1829
- 'annotationVerticalLine'
1830
- ],
1831
- column: [
1832
- 'barStyle',
1833
- 'annotationPoint',
1834
- 'annotationHorizontalLine'
1835
- ],
1836
- columnParallel: [
1837
- 'barStyle',
1838
- 'annotationPoint',
1839
- 'annotationHorizontalLine'
1840
- ],
1841
- columnPercent: [
1842
- 'barStyle',
1843
- 'annotationPoint',
1844
- 'annotationHorizontalLine'
1845
- ],
1846
- line: [
1847
- 'lineStyle',
1848
- 'pointStyle',
1849
- 'annotationPoint',
1850
- 'annotationHorizontalLine'
1851
- ],
1852
- area: [
1853
- 'lineStyle',
1854
- 'pointStyle',
1855
- 'annotationPoint',
1856
- 'annotationHorizontalLine'
1857
- ],
1858
- areaPercent: [
1859
- 'lineStyle',
1860
- 'pointStyle',
1861
- 'annotationPoint',
1862
- 'annotationHorizontalLine'
1863
- ],
1864
- dualAxis: [
1865
- 'barStyle',
1866
- 'lineStyle',
1867
- 'pointStyle',
1868
- 'annotationPoint',
1869
- 'annotationHorizontalLine'
1870
- ],
1871
- scatter: [
1872
- 'pointStyle',
1873
- 'annotationPoint',
1874
- 'annotationHorizontalLine',
1875
- 'annotationVerticalLine'
1876
- ],
1877
- histogram: [
1878
- 'annotationHorizontalLine'
1879
- ],
1880
- boxPlot: [
1881
- 'annotationHorizontalLine'
1882
- ]
1883
- };
1884
1926
  const result = {};
1885
1927
  for (const [chartType, baseKeyPaths] of Object.entries(dynamicFilterConfig))result[chartType] = baseKeyPaths.flatMap((basePath)=>[
1886
1928
  `${basePath}[].dynamicFilter`,
@@ -1889,84 +1931,7 @@ self.R = R;
1889
1931
  return result;
1890
1932
  };
1891
1933
  const dynamicFilterKeyPathsByChartType = generateDynamicFilterKeyPaths();
1892
- const getBasePathsForDeepClone = (chartType)=>{
1893
- const config = {
1894
- table: [
1895
- 'bodyCellStyle'
1896
- ],
1897
- pivotTable: [
1898
- 'bodyCellStyle'
1899
- ],
1900
- bar: [
1901
- 'barStyle',
1902
- 'annotationPoint',
1903
- 'annotationVerticalLine'
1904
- ],
1905
- barParallel: [
1906
- 'barStyle',
1907
- 'annotationPoint',
1908
- 'annotationVerticalLine'
1909
- ],
1910
- barPercent: [
1911
- 'barStyle',
1912
- 'annotationPoint',
1913
- 'annotationVerticalLine'
1914
- ],
1915
- column: [
1916
- 'barStyle',
1917
- 'annotationPoint',
1918
- 'annotationHorizontalLine'
1919
- ],
1920
- columnParallel: [
1921
- 'barStyle',
1922
- 'annotationPoint',
1923
- 'annotationHorizontalLine'
1924
- ],
1925
- columnPercent: [
1926
- 'barStyle',
1927
- 'annotationPoint',
1928
- 'annotationHorizontalLine'
1929
- ],
1930
- line: [
1931
- 'lineStyle',
1932
- 'pointStyle',
1933
- 'annotationPoint',
1934
- 'annotationHorizontalLine'
1935
- ],
1936
- area: [
1937
- 'lineStyle',
1938
- 'pointStyle',
1939
- 'annotationPoint',
1940
- 'annotationHorizontalLine'
1941
- ],
1942
- areaPercent: [
1943
- 'lineStyle',
1944
- 'pointStyle',
1945
- 'annotationPoint',
1946
- 'annotationHorizontalLine'
1947
- ],
1948
- dualAxis: [
1949
- 'barStyle',
1950
- 'lineStyle',
1951
- 'pointStyle',
1952
- 'annotationPoint',
1953
- 'annotationHorizontalLine'
1954
- ],
1955
- scatter: [
1956
- 'pointStyle',
1957
- 'annotationPoint',
1958
- 'annotationHorizontalLine',
1959
- 'annotationVerticalLine'
1960
- ],
1961
- histogram: [
1962
- 'annotationHorizontalLine'
1963
- ],
1964
- boxPlot: [
1965
- 'annotationHorizontalLine'
1966
- ]
1967
- };
1968
- return config[chartType] ?? [];
1969
- };
1934
+ const getBasePathsForDeepClone = (chartType)=>dynamicFilterConfig[chartType] ?? [];
1970
1935
  const parseKeyPath = (path)=>path.split('.').map((segment)=>{
1971
1936
  if (segment.endsWith('[]')) return {
1972
1937
  key: segment.slice(0, -2),
@@ -2809,27 +2774,10 @@ self.R = R;
2809
2774
  }
2810
2775
  };
2811
2776
  };
2812
- const dimensionTreeToColumns = (spec, context)=>{
2813
- const { advancedVSeed } = context;
2814
- const dimensionTree = advancedVSeed.dimensionTree;
2815
- const result = {
2816
- ...spec
2817
- };
2818
- const eachNode = (node)=>{
2819
- if (isMeasure(node)) return {
2820
- width: 'auto'
2821
- };
2822
- return {};
2823
- };
2824
- const columns = treeTreeToColumns(dimensionTree, eachNode);
2825
- return {
2826
- ...result,
2827
- columns: [
2828
- ...result.columns || [],
2829
- ...columns
2830
- ]
2831
- };
2832
- };
2777
+ function extractLeafIds(tree) {
2778
+ const leafNodes = findTreeNodesBy(tree, ()=>true);
2779
+ return new Set(leafNodes.map((node)=>node.id));
2780
+ }
2833
2781
  const treeTreeToColumns = (tree, callback)=>{
2834
2782
  const result = tree.map((item)=>{
2835
2783
  if ('children' in item && Array.isArray(item.children)) {
@@ -2857,6 +2805,27 @@ self.R = R;
2857
2805
  });
2858
2806
  return result || [];
2859
2807
  };
2808
+ const dimensionTreeToColumns = (spec, context)=>{
2809
+ const { advancedVSeed } = context;
2810
+ const dimensionTree = advancedVSeed.dimensionTree;
2811
+ const result = {
2812
+ ...spec
2813
+ };
2814
+ const eachNode = (node)=>{
2815
+ if (isMeasure(node)) return {
2816
+ width: 'auto'
2817
+ };
2818
+ return {};
2819
+ };
2820
+ const columns = treeTreeToColumns(dimensionTree, eachNode);
2821
+ return {
2822
+ ...result,
2823
+ columns: [
2824
+ ...result.columns || [],
2825
+ ...columns
2826
+ ]
2827
+ };
2828
+ };
2860
2829
  const createNumFormatter = (format, locale = intl.getLocale())=>{
2861
2830
  const { type = 'number', ratio = 1, thousandSeparator = true, prefix = '', suffix = '', symbol = '', fractionDigits = 2, significantDigits, roundingMode = 'halfExpand', roundingPriority = 'auto' } = format || {};
2862
2831
  const numFormatterOptions = {
@@ -2942,7 +2911,7 @@ self.R = R;
2942
2911
  };
2943
2912
  return {};
2944
2913
  };
2945
- const columns = measuresToColumns_treeTreeToColumns(measureTree, eachNode);
2914
+ const columns = treeTreeToColumns(measureTree, eachNode);
2946
2915
  return {
2947
2916
  ...result,
2948
2917
  columns: [
@@ -2959,32 +2928,75 @@ self.R = R;
2959
2928
  return formatter(value);
2960
2929
  };
2961
2930
  };
2962
- const measuresToColumns_treeTreeToColumns = (tree, callback)=>{
2963
- const result = tree.map((item)=>{
2964
- if ('children' in item && Array.isArray(item.children)) {
2965
- const groupNode = item;
2966
- const field = groupNode.id;
2967
- const title = groupNode.alias ?? groupNode.id;
2968
- const props = callback?.(groupNode) || {};
2931
+ const columnsAggregation = (spec, context)=>{
2932
+ const { vseed, advancedVSeed } = context;
2933
+ const { totals } = vseed;
2934
+ if (!totals) return spec;
2935
+ const totalLabelMap = {
2936
+ sum: intl.i18n`合计`,
2937
+ avg: intl.i18n`平均`,
2938
+ max: intl.i18n`最大值`,
2939
+ min: intl.i18n`最小值`,
2940
+ count: intl.i18n`计数`
2941
+ };
2942
+ const totalLabel = totalLabelMap[totals] || intl.i18n`合计`;
2943
+ const vtableAggregationMap = {
2944
+ sum: 'SUM',
2945
+ avg: 'AVG',
2946
+ max: 'MAX',
2947
+ min: 'MIN',
2948
+ count: 'COUNT'
2949
+ };
2950
+ const vtableAggregationType = vtableAggregationMap[totals] || 'SUM';
2951
+ const dimensionIds = extractLeafIds(advancedVSeed.dimensionTree || []);
2952
+ const measureTree = advancedVSeed.measureTree || [];
2953
+ const measureIds = extractLeafIds(measureTree);
2954
+ const leafMeasures = findTreeNodesBy(measureTree, ()=>true);
2955
+ const measureMap = new Map();
2956
+ leafMeasures.forEach((node)=>{
2957
+ if (isMeasure(node)) measureMap.set(node.id, node);
2958
+ });
2959
+ let isFirstDimensionColumn = true;
2960
+ const updatedColumns = spec.columns?.map((column)=>{
2961
+ const fieldKey = column.field;
2962
+ if (dimensionIds.has(fieldKey)) {
2963
+ if (isFirstDimensionColumn) {
2964
+ isFirstDimensionColumn = false;
2965
+ return {
2966
+ ...column,
2967
+ aggregation: {
2968
+ aggregationType: 'NONE',
2969
+ formatFun: ()=>totalLabel
2970
+ }
2971
+ };
2972
+ }
2969
2973
  return {
2970
- field,
2971
- title,
2972
- columns: measuresToColumns_treeTreeToColumns(item.children, callback),
2973
- ...props
2974
+ ...column,
2975
+ aggregation: {
2976
+ aggregationType: 'NONE',
2977
+ formatFun: ()=>''
2978
+ }
2974
2979
  };
2975
2980
  }
2976
- {
2977
- const field = item.id;
2978
- const title = item.alias ?? item.id;
2979
- const props = callback?.(item) || {};
2981
+ if (measureIds.has(fieldKey)) {
2982
+ const measure = measureMap.get(fieldKey);
2983
+ const formatter = createFormatterByMeasure(measure);
2980
2984
  return {
2981
- field,
2982
- title,
2983
- ...props
2985
+ ...column,
2986
+ aggregation: {
2987
+ aggregationType: vtableAggregationType,
2988
+ showOnTop: false,
2989
+ formatFun: (value)=>formatter(value)
2990
+ }
2984
2991
  };
2985
2992
  }
2993
+ return column;
2986
2994
  });
2987
- return result || [];
2995
+ return {
2996
+ ...spec,
2997
+ columns: updatedColumns,
2998
+ bottomFrozenRowCount: 1
2999
+ };
2988
3000
  };
2989
3001
  const bodyStyle = (spec, context)=>{
2990
3002
  const result = {
@@ -3074,6 +3086,54 @@ self.R = R;
3074
3086
  };
3075
3087
  return result;
3076
3088
  };
3089
+ const bottomFrozenStyle = (spec, context)=>{
3090
+ const result = {
3091
+ ...spec
3092
+ };
3093
+ const { advancedVSeed } = context;
3094
+ const { config, chartType } = advancedVSeed;
3095
+ const themConfig = config?.[chartType];
3096
+ if (!result.theme || !themConfig) return result;
3097
+ const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)';
3098
+ const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5';
3099
+ const fontColor = themConfig.headerFontColor || '#1B1F23';
3100
+ const fontSize = themConfig.headerFontSize || 12;
3101
+ const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff';
3102
+ const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff';
3103
+ result.theme.bottomFrozenStyle = {
3104
+ borderColor,
3105
+ borderLineWidth: 1,
3106
+ padding: [
3107
+ 8,
3108
+ 12,
3109
+ 8,
3110
+ 12
3111
+ ],
3112
+ textAlign: 'center',
3113
+ hover: {
3114
+ cellBgColor: hoverCellBgColor,
3115
+ inlineRowBgColor: hoverInlineColor,
3116
+ inlineColumnBgColor: hoverInlineColor
3117
+ },
3118
+ frameStyle: {
3119
+ borderColor,
3120
+ borderLineWidth: [
3121
+ 0,
3122
+ 0,
3123
+ 1,
3124
+ 0
3125
+ ]
3126
+ },
3127
+ fontSize,
3128
+ fontVariant: 'normal',
3129
+ fontStyle: 'normal',
3130
+ fontWeight: 'bold',
3131
+ color: fontColor,
3132
+ bgColor: backgroundColor,
3133
+ lineHeight: 1.5 * fontSize
3134
+ };
3135
+ return result;
3136
+ };
3077
3137
  const tableThemeStyle = (spec, context)=>{
3078
3138
  const result = {
3079
3139
  ...spec
@@ -3198,8 +3258,10 @@ self.R = R;
3198
3258
  initTable,
3199
3259
  dimensionTreeToColumns,
3200
3260
  measureTreeToColumns,
3261
+ columnsAggregation,
3201
3262
  bodyStyle,
3202
3263
  headerStyle,
3264
+ bottomFrozenStyle,
3203
3265
  tableThemeStyle,
3204
3266
  selectionStyle,
3205
3267
  tableBodyCell
@@ -3208,30 +3270,20 @@ self.R = R;
3208
3270
  Builder.registerAdvancedPipeline('table', tableAdvancedPipeline);
3209
3271
  Builder.registerSpecPipeline('table', tableSpecPipeline);
3210
3272
  };
3211
- const defaultMeasureId = (advancedVSeed)=>{
3212
- const result = {
3213
- ...advancedVSeed
3214
- };
3215
- const measures = findAllMeasures(advancedVSeed.measureTree);
3216
- if (measures.length > 1 && !findTreeNodesBy(advancedVSeed.dimensionTree, (dim)=>dim.id === MeasureId || dim.id === MeasureName).length) result.dimensionTree.push({
3217
- id: MeasureId,
3218
- alias: intl.i18n`指标名称`,
3219
- encoding: 'row'
3220
- });
3221
- return result;
3222
- };
3223
3273
  const encodingForPivotTable = (advancedVSeed)=>{
3224
3274
  const { measureTree = [], dimensionTree = [] } = advancedVSeed;
3225
3275
  const measures = findAllMeasures(measureTree);
3226
- const hasDimensionEncoding = dimensionTree.some((item)=>item.encoding);
3276
+ const filteredDimensionTree = dimensionTree.filter((dim)=>dim.id !== MeasureId && dim.id !== MeasureName);
3277
+ const hasDimensionEncoding = filteredDimensionTree.some((item)=>item.encoding);
3227
3278
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
3228
3279
  const encoding = {};
3229
- if (hasDimensionEncoding) generateDimensionEncoding(dimensionTree, encoding);
3230
- else generateDefaultDimensionEncoding(dimensionTree, encoding);
3280
+ if (hasDimensionEncoding) generateDimensionEncoding(filteredDimensionTree, encoding);
3281
+ else generateDefaultDimensionEncoding(filteredDimensionTree, encoding);
3231
3282
  if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
3232
3283
  else generateDefaultMeasureEncoding(measures, encoding);
3233
3284
  return {
3234
3285
  ...advancedVSeed,
3286
+ dimensionTree: filteredDimensionTree,
3235
3287
  encoding
3236
3288
  };
3237
3289
  };
@@ -3266,91 +3318,6 @@ self.R = R;
3266
3318
  encoding.tooltip = measures.map((item)=>item.id);
3267
3319
  encoding.detail = chunk_QJLMYOTX_i(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
3268
3320
  };
3269
- const foldMeasures = (dataset, measures, options)=>{
3270
- const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true, omitIds = [] } = options || {};
3271
- const foldInfo = {
3272
- measureId,
3273
- measureName,
3274
- measureValue,
3275
- statistics: {
3276
- max: -1 / 0,
3277
- min: 1 / 0,
3278
- sum: 0,
3279
- count: 0,
3280
- colorMin: 1 / 0,
3281
- colorMax: -1 / 0
3282
- },
3283
- foldMap: {}
3284
- };
3285
- if (!allowEmptyFold && 0 === measures.length) return {
3286
- dataset,
3287
- foldInfo
3288
- };
3289
- const result = new Array(dataset.length * measures.length);
3290
- let index = 0;
3291
- for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
3292
- const datum = chunk_KI5X74E2_y({
3293
- ...dataset[i]
3294
- }, omitIds);
3295
- datum[ORIGINAL_DATA] = dataset[i];
3296
- const measure = measures[j];
3297
- const { id, alias } = measure;
3298
- datum[id] = dataset[i][id];
3299
- datum[measureId] = id;
3300
- datum[measureName] = alias || id;
3301
- datum[measureValue] = dataset[i][id];
3302
- const valueNumber = Number(datum[id]);
3303
- foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber);
3304
- foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber);
3305
- foldInfo.statistics.sum += valueNumber;
3306
- foldInfo.statistics.count++;
3307
- if ('color' === measure.encoding) {
3308
- foldInfo.statistics.colorMin = foldInfo.statistics.min;
3309
- foldInfo.statistics.colorMax = foldInfo.statistics.max;
3310
- datum[ColorEncoding] = valueNumber;
3311
- datum[ColorIdEncoding] = measure.id;
3312
- } else if (colorMeasureId) {
3313
- const value = datum[ORIGINAL_DATA][colorMeasureId];
3314
- datum[ColorEncoding] = value;
3315
- datum[ColorIdEncoding] = colorMeasureId;
3316
- const valueNumber = Number(value);
3317
- foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber);
3318
- foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber);
3319
- }
3320
- foldInfo.foldMap[id] = alias;
3321
- result[index++] = datum;
3322
- }
3323
- return {
3324
- dataset: result,
3325
- foldInfo
3326
- };
3327
- };
3328
- const reshapePivotTable = (advancedVSeed, context)=>{
3329
- const result = {
3330
- ...advancedVSeed
3331
- };
3332
- const { vseed } = context;
3333
- const { dataset, chartType } = vseed;
3334
- const { measureTree } = advancedVSeed;
3335
- const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measureTree), {
3336
- measureId: FoldMeasureId,
3337
- measureName: FoldMeasureName,
3338
- measureValue: FoldMeasureValue,
3339
- allowEmptyFold: false
3340
- });
3341
- const datasetReshapeInfo = [
3342
- {
3343
- id: String(chartType),
3344
- index: 0,
3345
- foldInfo
3346
- }
3347
- ];
3348
- return {
3349
- ...result,
3350
- dataset: newDatasets,
3351
- datasetReshapeInfo: datasetReshapeInfo
3352
- };
3353
- };
3354
3321
  const pivotTableConfig = (advancedVSeed, context)=>{
3355
3322
  const { vseed } = context;
3356
3323
  const { chartType } = vseed;
@@ -3368,7 +3335,8 @@ self.R = R;
3368
3335
  'hoverHeaderBackgroundColor',
3369
3336
  'hoverHeaderInlineBackgroundColor',
3370
3337
  'selectedBorderColor',
3371
- 'selectedBackgroundColor'
3338
+ 'selectedBackgroundColor',
3339
+ 'totals'
3372
3340
  ]);
3373
3341
  result.config = {
3374
3342
  ...result.config || {},
@@ -3383,10 +3351,9 @@ self.R = R;
3383
3351
  initAdvancedVSeed,
3384
3352
  defaultMeasures_defaultMeasures,
3385
3353
  defaultDimensions,
3386
- defaultMeasureId,
3387
3354
  cellStyle_cellStyle,
3388
3355
  encodingForPivotTable,
3389
- reshapePivotTable,
3356
+ records_records,
3390
3357
  pivotTableConfig,
3391
3358
  theme_theme
3392
3359
  ];
@@ -3454,64 +3421,52 @@ self.R = R;
3454
3421
  const dimensions = advancedVSeed.dimensionTree;
3455
3422
  const { encoding } = advancedVSeed;
3456
3423
  const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
3457
- const allMeasures = findAllMeasures(advancedVSeed.measureTree);
3458
3424
  return {
3459
3425
  ...spec,
3460
- rows: rows.map((item)=>{
3461
- const res = {
3426
+ rows: rows.map((item)=>({
3462
3427
  dimensionKey: item.id,
3463
3428
  title: item.alias || item.id,
3464
3429
  width: 'auto'
3465
- };
3466
- if (item.id === MeasureId) res.headerFormat = (measureId)=>{
3467
- const measure = allMeasures.find((m)=>m.id === measureId);
3468
- return measure?.alias ?? measureId;
3469
- };
3470
- return res;
3471
- })
3472
- };
3473
- };
3474
- const titleOnDimension = (spec)=>{
3475
- const { rows = [], columns = [] } = spec;
3476
- return {
3477
- ...spec,
3478
- corner: {
3479
- titleOnDimension: rows.length <= 1 && columns.length >= 1 ? 'column' : 'row'
3480
- }
3430
+ }))
3481
3431
  };
3482
3432
  };
3483
3433
  const pivotIndicators = (spec, context)=>{
3484
- const { advancedVSeed } = context;
3485
- const { measureTree, datasetReshapeInfo } = advancedVSeed;
3486
- const { foldInfo } = datasetReshapeInfo[0];
3487
- const hasRow = spec?.rows?.length > 0;
3488
- const foldMapValues = Object.values(foldInfo.foldMap);
3434
+ const { advancedVSeed, vseed } = context;
3435
+ const { measureTree } = advancedVSeed;
3436
+ const measures = findAllMeasures(measureTree);
3437
+ const indicatorsAsCol = vseed.indicatorsAsCol ?? false;
3489
3438
  return {
3490
3439
  ...spec,
3491
3440
  indicatorTitle: intl.i18n`指标名称`,
3492
- indicatorsAsCol: hasRow,
3493
- hideIndicatorName: hasRow,
3494
- indicators: [
3495
- {
3441
+ indicatorsAsCol,
3442
+ hideIndicatorName: measures.length <= 1,
3443
+ indicators: measures.map((measure)=>{
3444
+ const formatter = createFormatterByMeasure(measure);
3445
+ return {
3496
3446
  cellType: 'text',
3497
- indicatorKey: foldInfo.measureValue,
3498
- title: foldMapValues.length > 1 ? '' : foldMapValues[0],
3447
+ indicatorKey: measure.id,
3448
+ title: measure.alias || measure.id,
3499
3449
  width: 'auto',
3500
- format: pivotIndicators_fieldFormat(measureTree, foldInfo)
3501
- }
3502
- ]
3450
+ format: (value, col, row, table)=>{
3451
+ if (!chunk_6GTAPB47_e(col) || !chunk_6GTAPB47_e(row) || !table) return value;
3452
+ const datum = table.getCellOriginRecord(col, row);
3453
+ if (!datum?.[0]) return value;
3454
+ return formatter(value);
3455
+ }
3456
+ };
3457
+ })
3503
3458
  };
3504
3459
  };
3505
- const pivotIndicators_fieldFormat = (measureTree, foldInfo)=>(value, col, row, table)=>{
3506
- if (!chunk_6GTAPB47_e(col) || !chunk_6GTAPB47_e(row) || !table) return value;
3507
- const datum = table.getCellOriginRecord(col, row);
3508
- if (!datum[0]) return value;
3509
- const { measureId: foldMeasureId } = foldInfo;
3510
- const measureId = datum[0][foldMeasureId];
3511
- const measure = findMeasureById(measureTree, measureId);
3512
- const formatter = createFormatterByMeasure(measure);
3513
- return formatter(value);
3460
+ const titleOnDimension = (spec)=>{
3461
+ const { rows = [], columns = [], indicatorsAsCol, indicators = [] } = spec;
3462
+ const rowsLength = rows.length + (indicatorsAsCol ? 0 : indicators?.length > 0 ? 1 : 0);
3463
+ return {
3464
+ ...spec,
3465
+ corner: {
3466
+ titleOnDimension: rowsLength <= 1 && columns.length >= 1 && !indicatorsAsCol ? 'column' : 'row'
3467
+ }
3514
3468
  };
3469
+ };
3515
3470
  const rowHeaderStyle = (spec, context)=>{
3516
3471
  const result = {
3517
3472
  ...spec
@@ -3637,7 +3592,6 @@ self.R = R;
3637
3592
  headerPaths.forEach((path)=>{
3638
3593
  if (path.dimensionKey) originalDatum[path.dimensionKey] = path.value;
3639
3594
  });
3640
- if (!chunk_JK3VNB42_n(originalDatum[MeasureId]) && !chunk_JK3VNB42_n(originalDatum[FoldMeasureValue])) originalDatum[originalDatum[MeasureId]] = originalDatum[FoldMeasureValue];
3641
3595
  const currentCellData = getCellOriginalDataByDatum(datum, hasDynamicFilter, originalDatum);
3642
3596
  const mergedStyle = bodyCellStyleList.reduce((result, style)=>{
3643
3597
  const shouldApply = style.dynamicFilter ? selectorWithDynamicFilter(currentCellData || originalDatum, style.dynamicFilter, style.selector) : selector_selector(originalDatum, style.selector);
@@ -3668,26 +3622,61 @@ self.R = R;
3668
3622
  };
3669
3623
  };
3670
3624
  const dataConfig = (spec, context)=>{
3671
- const { advancedVSeed } = context;
3625
+ const { advancedVSeed, vseed } = context;
3672
3626
  const measures = findAllMeasures(advancedVSeed.measureTree);
3673
3627
  const aggregationRules = measures.map((measure)=>({
3674
3628
  field: measure.id,
3675
- aggregationType: 'NONE',
3629
+ aggregationType: 'SUM',
3676
3630
  indicatorKey: measure.id
3677
3631
  }));
3632
+ const dataConfigObj = {
3633
+ aggregationRules
3634
+ };
3635
+ const { totals } = vseed;
3636
+ if (totals) {
3637
+ const grandTotalLabel = intl.i18n`总计`;
3638
+ const subTotalLabel = intl.i18n`小计`;
3639
+ dataConfigObj.totals = {};
3640
+ if (totals.row) {
3641
+ const dimensionIds = (advancedVSeed.dimensionTree || []).filter((dim)=>'row' === dim.encoding).map((dim)=>dim.id);
3642
+ const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
3643
+ const normalizedRowSubDimensions = totals.row.showSubTotals && (!rowSubDimensions || 0 === rowSubDimensions.length) ? dimensionIds.length > 0 ? [
3644
+ dimensionIds[0]
3645
+ ] : [] : rowSubDimensions;
3646
+ dataConfigObj.totals.row = {
3647
+ showGrandTotals: totals.row.showGrandTotals ?? false,
3648
+ showSubTotals: totals.row.showSubTotals ?? false,
3649
+ subTotalsDimensions: normalizedRowSubDimensions,
3650
+ grandTotalLabel,
3651
+ subTotalLabel
3652
+ };
3653
+ }
3654
+ if (totals.column) {
3655
+ const dimensionIds = (advancedVSeed.dimensionTree || []).filter((dim)=>'column' === dim.encoding).map((dim)=>dim.id);
3656
+ const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
3657
+ const normalizedColumnSubDimensions = totals.column.showSubTotals && (!columnSubDimensions || 0 === columnSubDimensions.length) ? dimensionIds.length > 0 ? [
3658
+ dimensionIds[0]
3659
+ ] : [] : columnSubDimensions;
3660
+ dataConfigObj.totals.column = {
3661
+ showGrandTotals: totals.column.showGrandTotals ?? false,
3662
+ showSubTotals: totals.column.showSubTotals ?? false,
3663
+ subTotalsDimensions: normalizedColumnSubDimensions,
3664
+ grandTotalLabel,
3665
+ subTotalLabel
3666
+ };
3667
+ }
3668
+ }
3678
3669
  return {
3679
3670
  ...spec,
3680
- dataConfig: {
3681
- aggregationRules
3682
- }
3671
+ dataConfig: dataConfigObj
3683
3672
  };
3684
3673
  };
3685
3674
  const pivotTableSpecPipeline = [
3686
3675
  initPivotTable,
3687
3676
  pivotColumns,
3688
3677
  pivotRows,
3689
- titleOnDimension,
3690
3678
  pivotIndicators,
3679
+ titleOnDimension,
3691
3680
  bodyStyle,
3692
3681
  headerStyle,
3693
3682
  rowHeaderStyle,
@@ -3787,7 +3776,7 @@ self.R = R;
3787
3776
  dimensions: newDimensions
3788
3777
  };
3789
3778
  };
3790
- const defaultMeasureId_defaultMeasureId = (advancedVSeed)=>{
3779
+ const defaultMeasureId = (advancedVSeed)=>{
3791
3780
  const result = {
3792
3781
  ...advancedVSeed
3793
3782
  };
@@ -3937,6 +3926,65 @@ self.R = R;
3937
3926
  });
3938
3927
  };
3939
3928
  }
3929
+ const foldMeasures = (dataset, measures, options)=>{
3930
+ const { measureId, measureName, measureValue, colorMeasureId, allowEmptyFold = true, omitIds = [] } = options || {};
3931
+ const foldInfo = {
3932
+ measureId,
3933
+ measureName,
3934
+ measureValue,
3935
+ statistics: {
3936
+ max: -1 / 0,
3937
+ min: 1 / 0,
3938
+ sum: 0,
3939
+ count: 0,
3940
+ colorMin: 1 / 0,
3941
+ colorMax: -1 / 0
3942
+ },
3943
+ foldMap: {}
3944
+ };
3945
+ if (!allowEmptyFold && 0 === measures.length) return {
3946
+ dataset,
3947
+ foldInfo
3948
+ };
3949
+ const result = new Array(dataset.length * measures.length);
3950
+ let index = 0;
3951
+ for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
3952
+ const datum = chunk_KI5X74E2_y({
3953
+ ...dataset[i]
3954
+ }, omitIds);
3955
+ datum[ORIGINAL_DATA] = dataset[i];
3956
+ const measure = measures[j];
3957
+ const { id, alias } = measure;
3958
+ datum[id] = dataset[i][id];
3959
+ datum[measureId] = id;
3960
+ datum[measureName] = alias || id;
3961
+ datum[measureValue] = dataset[i][id];
3962
+ const valueNumber = Number(datum[id]);
3963
+ foldInfo.statistics.min = Math.min(foldInfo.statistics.min, valueNumber);
3964
+ foldInfo.statistics.max = Math.max(foldInfo.statistics.max, valueNumber);
3965
+ foldInfo.statistics.sum += valueNumber;
3966
+ foldInfo.statistics.count++;
3967
+ if ('color' === measure.encoding) {
3968
+ foldInfo.statistics.colorMin = foldInfo.statistics.min;
3969
+ foldInfo.statistics.colorMax = foldInfo.statistics.max;
3970
+ datum[ColorEncoding] = valueNumber;
3971
+ datum[ColorIdEncoding] = measure.id;
3972
+ } else if (colorMeasureId) {
3973
+ const value = datum[ORIGINAL_DATA][colorMeasureId];
3974
+ datum[ColorEncoding] = value;
3975
+ datum[ColorIdEncoding] = colorMeasureId;
3976
+ const valueNumber = Number(value);
3977
+ foldInfo.statistics.colorMin = Math.min(foldInfo.statistics.colorMin, valueNumber);
3978
+ foldInfo.statistics.colorMax = Math.max(foldInfo.statistics.colorMax, valueNumber);
3979
+ }
3980
+ foldInfo.foldMap[id] = alias;
3981
+ result[index++] = datum;
3982
+ }
3983
+ return {
3984
+ dataset: result,
3985
+ foldInfo
3986
+ };
3987
+ };
3940
3988
  const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
3941
3989
  const { separator } = options;
3942
3990
  const unfoldInfo = {
@@ -4227,7 +4275,7 @@ self.R = R;
4227
4275
  initAdvancedVSeed_initAdvancedVSeed,
4228
4276
  default_defaultMeasures_defaultMeasures,
4229
4277
  defaultDimensions_defaultDimensions,
4230
- defaultMeasureId_defaultMeasureId,
4278
+ defaultMeasureId,
4231
4279
  encodingAdapter([
4232
4280
  buildMeasures([
4233
4281
  'yAxis',
@@ -5207,7 +5255,11 @@ self.R = R;
5207
5255
  const percentFormatter = createFormatter(percentFormat);
5208
5256
  const result = {
5209
5257
  visible: enable,
5210
- dataFilter: (data)=>data.filter((entry)=>entry.data?.[DATUM_HIDE_KEY] !== true && selector_selector(entry.data, label.selector, 'Or')),
5258
+ dataFilter: (data)=>data.filter((entry)=>{
5259
+ if (entry.data?.[DATUM_HIDE_KEY]) return false;
5260
+ const shouldApply = label.dynamicFilter ? selectorWithDynamicFilter(entry.data, label.dynamicFilter, label.selector) : selector_selector(entry.data, label.selector, 'Or');
5261
+ return shouldApply;
5262
+ }),
5211
5263
  formatMethod: (_, datum)=>{
5212
5264
  const result = [];
5213
5265
  const dimLabels = labelDims.map((item)=>{
@@ -5978,11 +6030,11 @@ self.R = R;
5978
6030
  markArea: markArea
5979
6031
  };
5980
6032
  };
5981
- const isNumber = (value, fuzzy = !1)=>{
6033
+ const isNumber_isNumber = (value, fuzzy = !1)=>{
5982
6034
  const type = typeof value;
5983
6035
  return fuzzy ? "number" === type : "number" === type || isType(value, "Number");
5984
6036
  };
5985
- const common_isNumber = isNumber;
6037
+ const isNumber = isNumber_isNumber;
5986
6038
  const clamp_clamp = function(input, min, max) {
5987
6039
  return input < min ? min : input > max ? max : input;
5988
6040
  };
@@ -6164,10 +6216,10 @@ self.R = R;
6164
6216
  return ((value = Math.max(0, Math.min(255, Math.round(value) || 0))) < 16 ? "0" : "") + value.toString(16);
6165
6217
  }
6166
6218
  function Color_rgb(value) {
6167
- return common_isNumber(value) ? new RGB(value >> 16, value >> 8 & 255, 255 & value, 1) : common_isArray(value) ? new RGB(value[0], value[1], value[2]) : new RGB(255, 255, 255);
6219
+ return isNumber(value) ? new RGB(value >> 16, value >> 8 & 255, 255 & value, 1) : common_isArray(value) ? new RGB(value[0], value[1], value[2]) : new RGB(255, 255, 255);
6168
6220
  }
6169
6221
  function rgba(value) {
6170
- return common_isNumber(value) ? new RGB(value >>> 24, value >>> 16 & 255, value >>> 8 & 255, 255 & value) : common_isArray(value) ? new RGB(value[0], value[1], value[2], value[3]) : new RGB(255, 255, 255, 1);
6222
+ return isNumber(value) ? new RGB(value >>> 24, value >>> 16 & 255, value >>> 8 & 255, 255 & value) : common_isArray(value) ? new RGB(value[0], value[1], value[2], value[3]) : new RGB(255, 255, 255, 1);
6171
6223
  }
6172
6224
  function SRGBToLinear(c) {
6173
6225
  return c < .04045 ? .0773993808 * c : Math.pow(.9478672986 * c + .0521327014, 2.4);
@@ -7439,7 +7491,7 @@ self.R = R;
7439
7491
  initAdvancedVSeed_initAdvancedVSeed,
7440
7492
  default_defaultMeasures_defaultMeasures,
7441
7493
  defaultDimensions_defaultDimensions,
7442
- defaultMeasureId_defaultMeasureId,
7494
+ defaultMeasureId,
7443
7495
  encodingAdapter([
7444
7496
  buildMeasures([
7445
7497
  'yAxis',
@@ -8230,7 +8282,7 @@ self.R = R;
8230
8282
  });
8231
8283
  return result;
8232
8284
  };
8233
- const column = [
8285
+ const column_column = [
8234
8286
  initColumn,
8235
8287
  stackCornerRadius_stackCornerRadius,
8236
8288
  barMaxWidth_barMaxWidth,
@@ -8287,7 +8339,7 @@ self.R = R;
8287
8339
  dimensionLinkage
8288
8340
  ];
8289
8341
  const columnSpecPipeline = [
8290
- pivotAdapter_pivotAdapter(column, pivotColumn)
8342
+ pivotAdapter_pivotAdapter(column_column, pivotColumn)
8291
8343
  ];
8292
8344
  const registerColumn = ()=>{
8293
8345
  Builder.registerAdvancedPipeline('column', columnAdvancedPipeline);
@@ -8334,7 +8386,7 @@ self.R = R;
8334
8386
  initAdvancedVSeed_initAdvancedVSeed,
8335
8387
  default_defaultMeasures_defaultMeasures,
8336
8388
  defaultDimensions_defaultDimensions,
8337
- defaultMeasureId_defaultMeasureId,
8389
+ defaultMeasureId,
8338
8390
  encodingAdapter([
8339
8391
  buildMeasures([
8340
8392
  'yAxis',
@@ -8504,7 +8556,7 @@ self.R = R;
8504
8556
  initAdvancedVSeed_initAdvancedVSeed,
8505
8557
  default_defaultMeasures_defaultMeasures,
8506
8558
  defaultDimensions_defaultDimensions,
8507
- defaultMeasureId_defaultMeasureId,
8559
+ defaultMeasureId,
8508
8560
  encodingAdapter([
8509
8561
  buildMeasures([
8510
8562
  'yAxis',
@@ -8690,7 +8742,7 @@ self.R = R;
8690
8742
  initAdvancedVSeed_initAdvancedVSeed,
8691
8743
  default_defaultMeasures_defaultMeasures,
8692
8744
  defaultDimensions_defaultDimensions,
8693
- defaultMeasureId_defaultMeasureId,
8745
+ defaultMeasureId,
8694
8746
  encodingAdapter([
8695
8747
  buildMeasures([
8696
8748
  'xAxis',
@@ -9034,7 +9086,7 @@ self.R = R;
9034
9086
  initAdvancedVSeed_initAdvancedVSeed,
9035
9087
  default_defaultMeasures_defaultMeasures,
9036
9088
  defaultDimensions_defaultDimensions,
9037
- defaultMeasureId_defaultMeasureId,
9089
+ defaultMeasureId,
9038
9090
  encodingAdapter([
9039
9091
  buildMeasures([
9040
9092
  'xAxis',
@@ -9363,7 +9415,7 @@ self.R = R;
9363
9415
  initAdvancedVSeed_initAdvancedVSeed,
9364
9416
  default_defaultMeasures_defaultMeasures,
9365
9417
  defaultDimensions_defaultDimensions,
9366
- defaultMeasureId_defaultMeasureId,
9418
+ defaultMeasureId,
9367
9419
  encodingAdapter([
9368
9420
  buildMeasures([
9369
9421
  'yAxis',
@@ -9901,7 +9953,7 @@ self.R = R;
9901
9953
  initAdvancedVSeed_initAdvancedVSeed,
9902
9954
  default_defaultMeasures_defaultMeasures,
9903
9955
  defaultDimensions_defaultDimensions,
9904
- defaultMeasureId_defaultMeasureId,
9956
+ defaultMeasureId,
9905
9957
  encodingAdapter([
9906
9958
  buildMeasuresForScatter,
9907
9959
  addPivotDimensionsForScatter,
@@ -10867,7 +10919,7 @@ self.R = R;
10867
10919
  initAdvancedVSeed_initAdvancedVSeed,
10868
10920
  default_defaultMeasures_defaultMeasures,
10869
10921
  defaultDimensions_defaultDimensions,
10870
- defaultMeasureId_defaultMeasureId,
10922
+ defaultMeasureId,
10871
10923
  encodingAdapter([
10872
10924
  buildMeasures([
10873
10925
  'yAxis',
@@ -11130,7 +11182,7 @@ self.R = R;
11130
11182
  initAdvancedVSeed_initAdvancedVSeed,
11131
11183
  default_defaultMeasures_defaultMeasures,
11132
11184
  defaultDimensions_defaultDimensions,
11133
- defaultMeasureId_defaultMeasureId,
11185
+ defaultMeasureId,
11134
11186
  encodingAdapter([
11135
11187
  buildMeasures([
11136
11188
  'angle',
@@ -11490,7 +11542,7 @@ self.R = R;
11490
11542
  initAdvancedVSeed_initAdvancedVSeed,
11491
11543
  default_defaultMeasures_defaultMeasures,
11492
11544
  defaultDimensions_defaultDimensions,
11493
- defaultMeasureId_defaultMeasureId,
11545
+ defaultMeasureId,
11494
11546
  encodingAdapter([
11495
11547
  buildMeasures([
11496
11548
  'angle',
@@ -11561,7 +11613,7 @@ self.R = R;
11561
11613
  initAdvancedVSeed_initAdvancedVSeed,
11562
11614
  default_defaultMeasures_defaultMeasures,
11563
11615
  defaultDimensions_defaultDimensions,
11564
- defaultMeasureId_defaultMeasureId,
11616
+ defaultMeasureId,
11565
11617
  encodingAdapter([
11566
11618
  buildMeasures([
11567
11619
  'xAxis',
@@ -11680,7 +11732,7 @@ self.R = R;
11680
11732
  initAdvancedVSeed_initAdvancedVSeed,
11681
11733
  default_defaultMeasures_defaultMeasures,
11682
11734
  defaultDimensions_defaultDimensions,
11683
- defaultMeasureId_defaultMeasureId,
11735
+ defaultMeasureId,
11684
11736
  encodingAdapter([
11685
11737
  buildMeasures([
11686
11738
  'xAxis',
@@ -11772,7 +11824,7 @@ self.R = R;
11772
11824
  initAdvancedVSeed_initAdvancedVSeed,
11773
11825
  default_defaultMeasures_defaultMeasures,
11774
11826
  defaultDimensions_defaultDimensions,
11775
- defaultMeasureId_defaultMeasureId,
11827
+ defaultMeasureId,
11776
11828
  encodingAdapter([
11777
11829
  buildMeasures([
11778
11830
  'yAxis',
@@ -11958,7 +12010,7 @@ self.R = R;
11958
12010
  initAdvancedVSeed_initAdvancedVSeed,
11959
12011
  default_defaultMeasures_defaultMeasures,
11960
12012
  defaultDimensions_defaultDimensions,
11961
- defaultMeasureId_defaultMeasureId,
12013
+ defaultMeasureId,
11962
12014
  encodingAdapter([
11963
12015
  buildMeasures([
11964
12016
  'yAxis',
@@ -12131,7 +12183,7 @@ self.R = R;
12131
12183
  initAdvancedVSeed_initAdvancedVSeed,
12132
12184
  default_defaultMeasures_defaultMeasures,
12133
12185
  defaultDimensions_defaultDimensions,
12134
- defaultMeasureId_defaultMeasureId,
12186
+ defaultMeasureId,
12135
12187
  encodingAdapter([
12136
12188
  buildMeasuresForScatter,
12137
12189
  addPivotDimensionsForScatter,
@@ -12498,7 +12550,7 @@ self.R = R;
12498
12550
  initAdvancedVSeed_initAdvancedVSeed,
12499
12551
  default_defaultMeasures_defaultMeasures,
12500
12552
  defaultDimensions_defaultDimensions,
12501
- defaultMeasureId_defaultMeasureId,
12553
+ defaultMeasureId,
12502
12554
  encodingAdapter([
12503
12555
  buildMeasuresForDualAxis,
12504
12556
  defaultEncodingForDualAxis
@@ -12916,11 +12968,11 @@ self.R = R;
12916
12968
  return Object.getPrototypeOf(value) === proto;
12917
12969
  };
12918
12970
  const isPlainObject = isPlainObject_isPlainObject;
12919
- const isString = (value, fuzzy = !1)=>{
12971
+ const isString_isString = (value, fuzzy = !1)=>{
12920
12972
  const type = typeof value;
12921
12973
  return fuzzy ? "string" === type : "string" === type || isType(value, "String");
12922
12974
  };
12923
- const common_isString = isString;
12975
+ const isString = isString_isString;
12924
12976
  function pickWithout(obj, keys) {
12925
12977
  if (!obj || !isPlainObject(obj)) return obj;
12926
12978
  const result = {};
@@ -12928,7 +12980,7 @@ self.R = R;
12928
12980
  const v = obj[k];
12929
12981
  let match = !1;
12930
12982
  keys.forEach((itKey)=>{
12931
- (common_isString(itKey) && itKey === k || itKey instanceof RegExp && k.match(itKey)) && (match = !0);
12983
+ (isString(itKey) && itKey === k || itKey instanceof RegExp && k.match(itKey)) && (match = !0);
12932
12984
  }), match || (result[k] = v);
12933
12985
  }), result;
12934
12986
  }
@@ -13105,7 +13157,7 @@ self.R = R;
13105
13157
  initAdvancedVSeed_initAdvancedVSeed,
13106
13158
  default_defaultMeasures_defaultMeasures,
13107
13159
  defaultDimensions_defaultDimensions,
13108
- defaultMeasureId_defaultMeasureId,
13160
+ defaultMeasureId,
13109
13161
  encodingAdapter([
13110
13162
  buildMeasures([
13111
13163
  'angle',
@@ -13200,7 +13252,7 @@ self.R = R;
13200
13252
  initAdvancedVSeed_initAdvancedVSeed,
13201
13253
  default_defaultMeasures_defaultMeasures,
13202
13254
  defaultDimensions_defaultDimensions,
13203
- defaultMeasureId_defaultMeasureId,
13255
+ defaultMeasureId,
13204
13256
  encodingAdapter([
13205
13257
  buildMeasures([
13206
13258
  'angle',
@@ -13348,7 +13400,7 @@ self.R = R;
13348
13400
  initAdvancedVSeed_initAdvancedVSeed,
13349
13401
  default_defaultMeasures_defaultMeasures,
13350
13402
  defaultDimensions_defaultDimensions,
13351
- defaultMeasureId_defaultMeasureId,
13403
+ defaultMeasureId,
13352
13404
  encodingAdapter([
13353
13405
  buildMeasures([
13354
13406
  'angle',
@@ -13504,7 +13556,7 @@ self.R = R;
13504
13556
  initAdvancedVSeed_initAdvancedVSeed,
13505
13557
  default_defaultMeasures_defaultMeasures,
13506
13558
  defaultDimensions_defaultDimensions,
13507
- defaultMeasureId_defaultMeasureId,
13559
+ defaultMeasureId,
13508
13560
  encodingAdapter([
13509
13561
  buildMeasures([
13510
13562
  'radius',
@@ -13702,7 +13754,7 @@ self.R = R;
13702
13754
  initAdvancedVSeed_initAdvancedVSeed,
13703
13755
  default_defaultMeasures_defaultMeasures,
13704
13756
  defaultDimensions_defaultDimensions,
13705
- defaultMeasureId_defaultMeasureId,
13757
+ defaultMeasureId,
13706
13758
  encodingAdapter([
13707
13759
  buildMeasures([
13708
13760
  'radius',
@@ -13919,7 +13971,7 @@ self.R = R;
13919
13971
  initAdvancedVSeed_initAdvancedVSeed,
13920
13972
  default_defaultMeasures_defaultMeasures,
13921
13973
  defaultDimensions_defaultDimensions,
13922
- defaultMeasureId_defaultMeasureId,
13974
+ defaultMeasureId,
13923
13975
  encodingAdapter([
13924
13976
  buildMeasures([
13925
13977
  'size',
@@ -14170,7 +14222,7 @@ self.R = R;
14170
14222
  initAdvancedVSeed_initAdvancedVSeed,
14171
14223
  default_defaultMeasures_defaultMeasures,
14172
14224
  defaultDimensions_defaultDimensions,
14173
- defaultMeasureId_defaultMeasureId,
14225
+ defaultMeasureId,
14174
14226
  encodingAdapter([
14175
14227
  buildMeasures([
14176
14228
  'color',
@@ -14781,7 +14833,7 @@ self.R = R;
14781
14833
  initAdvancedVSeed_initAdvancedVSeed,
14782
14834
  default_defaultMeasures_defaultMeasures,
14783
14835
  defaultDimensions_defaultDimensions,
14784
- defaultMeasureId_defaultMeasureId,
14836
+ defaultMeasureId,
14785
14837
  boxplotConfig,
14786
14838
  encodingAdapter([
14787
14839
  buildMeasures([
@@ -16524,7 +16576,7 @@ self.R = R;
16524
16576
  initAdvancedVSeed_initAdvancedVSeed,
16525
16577
  default_defaultMeasures_defaultMeasures,
16526
16578
  defaultDimensions_defaultDimensions,
16527
- defaultMeasureId_defaultMeasureId,
16579
+ defaultMeasureId,
16528
16580
  encodingAdapter([
16529
16581
  buildMeasures([
16530
16582
  'size',
@@ -16996,7 +17048,7 @@ self.R = R;
16996
17048
  initAdvancedVSeed_initAdvancedVSeed,
16997
17049
  default_defaultMeasures_defaultMeasures,
16998
17050
  defaultDimensions_defaultDimensions,
16999
- defaultMeasureId_defaultMeasureId,
17051
+ defaultMeasureId,
17000
17052
  encodingAdapter([
17001
17053
  buildMeasures([
17002
17054
  'size',
@@ -17223,7 +17275,7 @@ self.R = R;
17223
17275
  initAdvancedVSeed_initAdvancedVSeed,
17224
17276
  default_defaultMeasures_defaultMeasures,
17225
17277
  defaultDimensions_defaultDimensions,
17226
- defaultMeasureId_defaultMeasureId,
17278
+ defaultMeasureId,
17227
17279
  encodingAdapter([
17228
17280
  buildMeasures([
17229
17281
  'size',
@@ -23094,7 +23146,7 @@ self.R = R;
23094
23146
  ]).optional(),
23095
23147
  result: schemas_object({
23096
23148
  success: schemas_boolean(),
23097
- data: schemas_array(record(schemas_string(), any())).optional()
23149
+ data: schemas_array(zCellSelector).optional()
23098
23150
  }).optional()
23099
23151
  });
23100
23152
  const zValueDynamicFilter = schemas_object({
@@ -23135,7 +23187,8 @@ self.R = R;
23135
23187
  selector: union([
23136
23188
  zSelector,
23137
23189
  zSelectors
23138
- ]).nullish()
23190
+ ]).nullish(),
23191
+ dynamicFilter: zChartDynamicFilter.optional()
23139
23192
  });
23140
23193
  const zLegend = schemas_object({
23141
23194
  enable: schemas_boolean().default(true).nullish(),
@@ -23993,6 +24046,22 @@ self.R = R;
23993
24046
  field: schemas_string(),
23994
24047
  currentValue: schemas_string()
23995
24048
  });
24049
+ const zRowOrColumnTotalConfig = schemas_object({
24050
+ showGrandTotals: schemas_boolean().optional(),
24051
+ showSubTotals: schemas_boolean().optional(),
24052
+ subTotalsDimensions: schemas_array(schemas_string()).optional()
24053
+ });
24054
+ const zPivotTableTotals = schemas_object({
24055
+ row: zRowOrColumnTotalConfig.optional(),
24056
+ column: zRowOrColumnTotalConfig.optional()
24057
+ });
24058
+ const zTotalType = schemas_enum([
24059
+ 'sum',
24060
+ 'avg',
24061
+ 'max',
24062
+ 'min',
24063
+ 'count'
24064
+ ]);
23996
24065
  const zLocale = schemas_enum([
23997
24066
  'zh-CN',
23998
24067
  'en-US'
@@ -24018,6 +24087,7 @@ self.R = R;
24018
24087
  selectedBorderColor: schemas_string().nullish(),
24019
24088
  selectedBackgroundColor: schemas_string().nullish(),
24020
24089
  bodyCellStyle: schemas_array(zBodyCellStyle).or(zBodyCellStyle).nullish(),
24090
+ totals: zTotalType.nullish(),
24021
24091
  theme: zTheme.nullish(),
24022
24092
  locale: zLocale.nullish()
24023
24093
  });
@@ -24042,6 +24112,8 @@ self.R = R;
24042
24112
  selectedBorderColor: schemas_string().nullish(),
24043
24113
  selectedBackgroundColor: schemas_string().nullish(),
24044
24114
  bodyCellStyle: schemas_array(zBodyCellStyle).or(zBodyCellStyle).nullish(),
24115
+ indicatorsAsCol: schemas_boolean().nullish(),
24116
+ totals: zPivotTableTotals.nullish(),
24045
24117
  theme: zTheme.nullish(),
24046
24118
  locale: zLocale.nullish()
24047
24119
  });
@@ -24780,7 +24852,8 @@ self.R = R;
24780
24852
  customTheme: zCustomThemeConfig,
24781
24853
  annotation: zAnnotation,
24782
24854
  locale: zLocale,
24783
- regressionLine: zRegressionLine
24855
+ regressionLine: zRegressionLine,
24856
+ totals: zPivotTableTotals.optional()
24784
24857
  });
24785
24858
  const i18n_a = 123;
24786
24859
  return __webpack_exports__;