@visactor/vseed 0.1.6 → 0.1.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 (78) hide show
  1. package/dist/builder/builder/builder.d.ts +0 -2
  2. package/dist/dataReshape/constant.d.ts +2 -0
  3. package/dist/index.cjs +1053 -587
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.js +1050 -589
  6. package/dist/index.js.map +1 -1
  7. package/dist/pipeline/advanced/chart/pipes/encoding/bar.d.ts +1 -0
  8. package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +1 -19
  9. package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +1 -0
  10. package/dist/pipeline/advanced/chart/pipes/encoding/encodingAdapter.d.ts +2 -0
  11. package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +1 -0
  12. package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +1 -0
  13. package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +11 -9
  14. package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +1 -17
  15. package/dist/pipeline/advanced/chart/pipes/encoding/pie.d.ts +1 -0
  16. package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +1 -0
  17. package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +1 -0
  18. package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +1 -0
  19. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +7 -1
  20. package/dist/pipeline/advanced/table/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
  21. package/dist/pipeline/advanced/table/pipes/{init/autoMeasures.d.ts → default/defaultMeasureName.d.ts} +1 -1
  22. package/dist/pipeline/advanced/table/pipes/default/defaultMeasures.d.ts +5 -0
  23. package/dist/pipeline/advanced/table/pipes/default/index.d.ts +3 -0
  24. package/dist/pipeline/advanced/table/pipes/encoding/index.d.ts +1 -0
  25. package/dist/pipeline/advanced/table/pipes/{init/autoPivotMeasures.d.ts → encoding/pivotTable.d.ts} +1 -1
  26. package/dist/pipeline/advanced/table/pipes/index.d.ts +3 -0
  27. package/dist/pipeline/advanced/table/pipes/init/index.d.ts +0 -3
  28. package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +2 -0
  29. package/dist/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +21 -1
  30. package/dist/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.d.ts +15 -0
  31. package/dist/pipeline/spec/chart/pipes/tooltip/tooltipScatter.d.ts +15 -0
  32. package/dist/types/advancedVSeed.d.ts +0 -5
  33. package/dist/types/chartType/area/area.d.ts +8 -29
  34. package/dist/types/chartType/area/zArea.d.ts +0 -5
  35. package/dist/types/chartType/areaPercent/areaPercent.d.ts +8 -30
  36. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +0 -5
  37. package/dist/types/chartType/bar/bar.d.ts +9 -14
  38. package/dist/types/chartType/bar/zBar.d.ts +0 -5
  39. package/dist/types/chartType/barParallel/barParallel.d.ts +9 -14
  40. package/dist/types/chartType/barParallel/zBarParallel.d.ts +0 -5
  41. package/dist/types/chartType/barPercent/barPercent.d.ts +9 -14
  42. package/dist/types/chartType/barPercent/zBarPercent.d.ts +0 -5
  43. package/dist/types/chartType/column/column.d.ts +9 -30
  44. package/dist/types/chartType/column/zColumn.d.ts +0 -5
  45. package/dist/types/chartType/columnParallel/columnParallel.d.ts +10 -32
  46. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +0 -5
  47. package/dist/types/chartType/columnPercent/columnPercent.d.ts +9 -30
  48. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +0 -5
  49. package/dist/types/chartType/donut/donut.d.ts +8 -13
  50. package/dist/types/chartType/donut/zDonut.d.ts +0 -5
  51. package/dist/types/chartType/dualAxis/dualAxis.d.ts +10 -14
  52. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +0 -5
  53. package/dist/types/chartType/funnel/funnel.d.ts +8 -13
  54. package/dist/types/chartType/funnel/zFunnel.d.ts +0 -5
  55. package/dist/types/chartType/heatmap/heatmap.d.ts +9 -14
  56. package/dist/types/chartType/heatmap/zHeatmap.d.ts +0 -5
  57. package/dist/types/chartType/line/line.d.ts +9 -33
  58. package/dist/types/chartType/line/zLine.d.ts +0 -5
  59. package/dist/types/chartType/pie/pie.d.ts +8 -13
  60. package/dist/types/chartType/pie/zPie.d.ts +0 -5
  61. package/dist/types/chartType/pivotTable/pivotTable.d.ts +7 -3
  62. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +0 -5
  63. package/dist/types/chartType/radar/radar.d.ts +8 -14
  64. package/dist/types/chartType/radar/zRadar.d.ts +0 -5
  65. package/dist/types/chartType/rose/rose.d.ts +9 -14
  66. package/dist/types/chartType/rose/zRose.d.ts +0 -5
  67. package/dist/types/chartType/roseParallel/roseParallel.d.ts +9 -14
  68. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +0 -5
  69. package/dist/types/chartType/scatter/scatter.d.ts +8 -14
  70. package/dist/types/chartType/scatter/zScatter.d.ts +0 -5
  71. package/dist/types/chartType/table/table.d.ts +2 -0
  72. package/dist/types/chartType/table/zTable.d.ts +0 -5
  73. package/dist/types/properties/dimensions/dimensions.d.ts +0 -4
  74. package/dist/types/properties/dimensions/zDimensions.d.ts +0 -15
  75. package/dist/types/zVseed.d.ts +0 -100
  76. package/dist/umd/index.js +1050 -588
  77. package/dist/umd/index.js.map +1 -1
  78. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -167,33 +167,35 @@ const initAdvancedVSeed = (advancedVSeed, context)=>{
167
167
  locale: locale || 'zh-CN'
168
168
  };
169
169
  };
170
- const autoMeasures = (advancedVSeed, context)=>{
171
- const result = {
172
- ...advancedVSeed
173
- };
170
+ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
174
171
  const { vseed } = context;
175
172
  const { measures, dataset } = vseed;
173
+ if (measures && measures.length > 0) return {
174
+ ...advancedVSeed,
175
+ measures
176
+ };
176
177
  if (!dataset) throw new Error('dataset is required');
177
- if (0 === dataset.length) return result;
178
- if (measures) {
179
- result.measures = measures;
180
- return result;
181
- }
178
+ if (0 === dataset.length) return {
179
+ ...advancedVSeed,
180
+ measures: []
181
+ };
182
182
  const top100dataset = dataset.slice(0, 100);
183
183
  const sample = top100dataset.reduce((prev, cur)=>({
184
184
  ...prev,
185
185
  ...cur
186
186
  }), {});
187
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
187
+ const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
188
188
  '',
189
189
  null,
190
190
  void 0
191
191
  ].includes(key)).map((measure)=>({
192
192
  id: measure,
193
- alias: measure,
194
- encoding: 'column'
193
+ alias: measure
195
194
  }));
196
- return result;
195
+ return {
196
+ ...advancedVSeed,
197
+ measures: defaultMeasures
198
+ };
197
199
  };
198
200
  const preorderTraverse = (tree, callback)=>{
199
201
  if (!tree || 0 === tree.length) return;
@@ -247,37 +249,36 @@ const findAllMeasures = (measures = [])=>{
247
249
  });
248
250
  return result;
249
251
  };
250
- const autoDimensions = (advancedVSeed, context)=>{
252
+ const defaultDimensions = (advancedVSeed, context)=>{
251
253
  const result = {
252
254
  ...advancedVSeed
253
255
  };
254
256
  const { vseed } = context;
255
257
  const { dimensions, dataset } = vseed;
256
- const measures = findAllMeasures(advancedVSeed.measures);
258
+ if (dimensions && dimensions.length > 0) return {
259
+ ...result,
260
+ dimensions
261
+ };
257
262
  if (!dataset) throw new Error('dataset is required');
258
263
  if (0 === dataset.length) return result;
259
- if (dimensions) {
260
- result.dimensions = dimensions.map((dim)=>({
261
- location: 'dimension',
262
- ...dim
263
- }));
264
- return result;
265
- }
264
+ const measures = findAllMeasures(advancedVSeed.measures);
266
265
  const top100dataset = dataset.slice(0, 100);
267
266
  const sample = top100dataset.reduce((prev, cur)=>({
268
267
  ...prev,
269
268
  ...cur
270
269
  }), {});
271
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
270
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
272
271
  '',
273
272
  null,
274
273
  void 0
275
274
  ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
276
275
  id: dim,
277
- alias: dim,
278
- encoding: 'column'
276
+ alias: dim
279
277
  }));
280
- return result;
278
+ return {
279
+ ...result,
280
+ dimensions: newDimensions
281
+ };
281
282
  };
282
283
  const records_records = (advancedVSeed, context)=>{
283
284
  const { vseed } = context;
@@ -349,8 +350,8 @@ const mergeArray = (arr, themeItem)=>{
349
350
  };
350
351
  const tableAdvancedPipeline = [
351
352
  initAdvancedVSeed,
352
- autoMeasures,
353
- autoDimensions,
353
+ defaultMeasures_defaultMeasures,
354
+ defaultDimensions,
354
355
  records_records,
355
356
  tableConfig_tableConfig,
356
357
  theme_theme
@@ -571,9 +572,9 @@ const bodyStyle = (spec, context)=>{
571
572
  borderColor: borderColor,
572
573
  borderLineWidth: 1,
573
574
  padding: [
574
- 8.6,
575
+ 8,
575
576
  12,
576
- 8.6,
577
+ 8,
577
578
  12
578
579
  ],
579
580
  textAlign: 'right',
@@ -686,37 +687,7 @@ const registerTable = ()=>{
686
687
  Builder._advancedPipelineMap.table = tableAdvancedPipeline;
687
688
  Builder._specPipelineMap.table = tableSpecPipeline;
688
689
  };
689
- const autoPivotMeasures = (advancedVSeed, context)=>{
690
- const result = {
691
- ...advancedVSeed
692
- };
693
- const { vseed } = context;
694
- const { dataset } = vseed;
695
- const measures = findAllMeasures(vseed.measures);
696
- if (!dataset) throw new Error('dataset is required');
697
- if (0 === dataset.length) return result;
698
- if (vseed.measures) {
699
- result.measures = findAllMeasures(measures);
700
- return result;
701
- }
702
- const top100dataset = dataset.slice(0, 100);
703
- const sample = top100dataset.reduce((prev, cur)=>({
704
- ...prev,
705
- ...cur
706
- }), {});
707
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
708
- '',
709
- null,
710
- void 0
711
- ].includes(key)).map((measure)=>({
712
- id: measure,
713
- alias: measure,
714
- encoding: 'detail'
715
- }));
716
- return result;
717
- };
718
690
  const ORIGINAL_DATA = '__OriginalData__';
719
- const Separator = '-';
720
691
  const FoldMeasureName = '__MeaName__';
721
692
  const FoldMeasureId = '__MeaId__';
722
693
  const FoldMeasureValue = '__MeaValue__';
@@ -725,94 +696,70 @@ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
725
696
  const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
726
697
  const FoldXMeasureValue = '__MeaXValue__';
727
698
  const FoldYMeasureValue = '__MeaYValue__';
699
+ const FoldXMeasureId = '__MeaXId__';
700
+ const FoldYMeasureId = '__MeaYId__';
728
701
  const XEncoding = '__Dim_X__';
729
702
  const YEncoding = '__Dim_Y__';
730
703
  const AngleEncoding = '__Dim_Angle__';
731
704
  const DetailEncoding = '__Dim_Detail__';
732
705
  const ColorEncoding = '__Dim_Color__';
733
706
  const ColorIdEncoding = '__Dim_ColorId__';
734
- const findAllDimensions = (dimensions = [])=>{
735
- if (!dimensions) return [];
736
- const result = [];
737
- preorderTraverse(dimensions, (node)=>{
738
- if (!('children' in node)) result.push(node);
739
- return false;
740
- });
741
- return result;
742
- };
743
- const autoPivotDimensions = (advancedVSeed, context)=>{
707
+ const defaultMeasureName = (advancedVSeed)=>{
744
708
  const result = {
745
709
  ...advancedVSeed
746
710
  };
747
- const { vseed } = context;
748
- const { dimensions, dataset } = vseed;
749
- const measures = findAllMeasures(advancedVSeed.measures);
750
711
  const MeaName = {
751
712
  id: MeasureName,
752
713
  alias: intl.i18n`指标名称`
753
714
  };
754
- if (!dataset) throw new Error('dataset is required');
755
- if (0 === dataset.length) return result;
756
- if (dimensions) {
757
- const newDimensions = findAllDimensions(dimensions);
758
- if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
759
- result.dimensions = newDimensions.map((item, index)=>{
760
- if ('row' === item.encoding || 'column' === item.encoding) return item;
761
- if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
762
- return {
763
- ...item,
764
- encoding: index % 2 === 0 ? 'column' : 'row'
765
- };
766
- });
767
- return result;
768
- }
769
- const top100dataset = dataset.slice(0, 100);
770
- const sample = top100dataset.reduce((prev, cur)=>({
771
- ...prev,
772
- ...cur
773
- }), {});
774
- const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
775
- '',
776
- null,
777
- void 0
778
- ].includes(key) && !measures.some((measure)=>measure.id === key));
779
- result.dimensions = newDimensions.map((dim)=>({
780
- id: dim,
781
- alias: dim
782
- }));
783
- result.dimensions.push(MeaName);
784
- result.dimensions = result.dimensions.map((dim, index)=>({
785
- ...dim,
786
- encoding: index % 2 === 0 ? 'column' : 'row'
787
- }));
715
+ if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
788
716
  return result;
789
717
  };
790
- const pivotTableConfig = (advancedVSeed, context)=>{
791
- const { vseed } = context;
792
- const { chartType } = vseed;
793
- const result = {
794
- ...advancedVSeed
795
- };
796
- const config = pick(vseed, [
797
- 'backgroundColor',
798
- 'bodyFontSize',
799
- 'bodyFontColor',
800
- 'bodyBackgroundColor',
801
- 'headerFontSize',
802
- 'headerFontColor',
803
- 'headerBackgroundColor',
804
- 'hoverHeaderBackgroundColor',
805
- 'hoverHeaderInlineBackgroundColor',
806
- 'selectedBorderColor',
807
- 'selectedBackgroundColor'
808
- ]);
809
- result.config = {
810
- ...result.config || {},
811
- [chartType]: {
812
- ...config
813
- }
718
+ const encodingForPivotTable = (advancedVSeed)=>{
719
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
720
+ const measures = findAllMeasures(vseedMeasures);
721
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
722
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
723
+ const encoding = {};
724
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
725
+ else generateDefaultDimensionEncoding(dimensions, encoding);
726
+ if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
727
+ else generateDefaultMeasureEncoding(measures, encoding);
728
+ return {
729
+ ...advancedVSeed,
730
+ encoding
814
731
  };
815
- return result;
732
+ };
733
+ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
734
+ const uniqueDimIds = unique(dimensions.map((d)=>d.id));
735
+ encoding.tooltip = uniqueDimIds;
736
+ encoding.row = [];
737
+ encoding.column = [];
738
+ uniqueDimIds.forEach((item, index)=>{
739
+ if (index % 2 === 0) encoding.column.push(item);
740
+ else encoding.row.push(item);
741
+ });
742
+ };
743
+ const generateDimensionEncoding = (dimensions, encoding)=>{
744
+ const uniqueDimIds = unique(dimensions.map((d)=>d.id));
745
+ encoding.tooltip = uniqueDimIds;
746
+ encoding.row = [];
747
+ encoding.column = [];
748
+ dimensions.forEach((dim, index)=>{
749
+ const id = dim.id;
750
+ if ('row' === dim.encoding) encoding.row.push(id);
751
+ else if ('column' === dim.encoding) encoding.column.push(id);
752
+ else if (index % 2 === 0) encoding.column.push(id);
753
+ else encoding.row.push(id);
754
+ });
755
+ };
756
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
757
+ encoding.tooltip = unique(measures.map((item)=>item.id));
758
+ encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
759
+ };
760
+ const generateMeasureEncoding = (measures, encoding)=>{
761
+ encoding.tooltip = measures.map((item)=>item.id);
762
+ encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
816
763
  };
817
764
  const foldMeasures = (dataset, measures, options)=>{
818
765
  const { measureId, measureName, measureValue, colorMeasureId } = options || {};
@@ -892,10 +839,39 @@ const reshapePivotTable = (advancedVSeed, context)=>{
892
839
  measures
893
840
  };
894
841
  };
842
+ const pivotTableConfig = (advancedVSeed, context)=>{
843
+ const { vseed } = context;
844
+ const { chartType } = vseed;
845
+ const result = {
846
+ ...advancedVSeed
847
+ };
848
+ const config = pick(vseed, [
849
+ 'backgroundColor',
850
+ 'bodyFontSize',
851
+ 'bodyFontColor',
852
+ 'bodyBackgroundColor',
853
+ 'headerFontSize',
854
+ 'headerFontColor',
855
+ 'headerBackgroundColor',
856
+ 'hoverHeaderBackgroundColor',
857
+ 'hoverHeaderInlineBackgroundColor',
858
+ 'selectedBorderColor',
859
+ 'selectedBackgroundColor'
860
+ ]);
861
+ result.config = {
862
+ ...result.config || {},
863
+ [chartType]: {
864
+ ...config
865
+ }
866
+ };
867
+ return result;
868
+ };
895
869
  const pivotTableAdvancedPipeline = [
896
870
  initAdvancedVSeed,
897
- autoPivotMeasures,
898
- autoPivotDimensions,
871
+ defaultMeasures_defaultMeasures,
872
+ defaultDimensions,
873
+ defaultMeasureName,
874
+ encodingForPivotTable,
899
875
  reshapePivotTable,
900
876
  pivotTableConfig,
901
877
  theme_theme
@@ -942,8 +918,9 @@ const initPivotTable = (spec, context)=>{
942
918
  };
943
919
  const pivotColumns = (spec, context)=>{
944
920
  const { advancedVSeed } = context;
921
+ const { encoding } = advancedVSeed;
945
922
  const dimensions = advancedVSeed.dimensions;
946
- const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
923
+ const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
947
924
  return {
948
925
  ...spec,
949
926
  columns: columns.map((item)=>({
@@ -956,7 +933,8 @@ const pivotColumns = (spec, context)=>{
956
933
  const pivotRows = (spec, context)=>{
957
934
  const { advancedVSeed } = context;
958
935
  const dimensions = advancedVSeed.dimensions;
959
- const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
936
+ const { encoding } = advancedVSeed;
937
+ const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
960
938
  return {
961
939
  ...spec,
962
940
  rows: rows.map((item)=>({
@@ -989,6 +967,7 @@ const pivotIndicators = (spec, context)=>{
989
967
  const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
990
968
  if (!isNumber(col) || !isNumber(row) || !table) return value;
991
969
  const datum = table.getCellOriginRecord(col, row);
970
+ if (!datum[0]) return value;
992
971
  const { measureId: foldMeasureId } = foldInfo;
993
972
  const measureId = datum[0][foldMeasureId];
994
973
  const node = findMeasureById(measures, measureId);
@@ -1018,9 +997,9 @@ const rowHeaderStyle = (spec, context)=>{
1018
997
  borderColor: borderColor,
1019
998
  borderLineWidth: 1,
1020
999
  padding: [
1021
- 8.6,
1000
+ 8,
1022
1001
  12,
1023
- 8.6,
1002
+ 8,
1024
1003
  12
1025
1004
  ],
1026
1005
  textAlign: 'left',
@@ -1148,7 +1127,7 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1148
1127
  locale: locale || 'zh-CN'
1149
1128
  };
1150
1129
  };
1151
- const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1130
+ const default_defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1152
1131
  const { vseed } = context;
1153
1132
  const { measures, dataset } = vseed;
1154
1133
  if (measures && measures.length > 0) return {
@@ -1178,7 +1157,7 @@ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1178
1157
  measures: defaultMeasures
1179
1158
  };
1180
1159
  };
1181
- const defaultDimensions = (advancedVSeed, context)=>{
1160
+ const defaultDimensions_defaultDimensions = (advancedVSeed, context)=>{
1182
1161
  const result = {
1183
1162
  ...advancedVSeed
1184
1163
  };
@@ -1209,7 +1188,7 @@ const defaultDimensions = (advancedVSeed, context)=>{
1209
1188
  dimensions: newDimensions
1210
1189
  };
1211
1190
  };
1212
- const defaultMeasureName = (advancedVSeed)=>{
1191
+ const defaultMeasureName_defaultMeasureName = (advancedVSeed)=>{
1213
1192
  const result = {
1214
1193
  ...advancedVSeed
1215
1194
  };
@@ -1220,51 +1199,78 @@ const defaultMeasureName = (advancedVSeed)=>{
1220
1199
  if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1221
1200
  return result;
1222
1201
  };
1202
+ const encodingAdapter = (noEncodingPipeline, hasEncodingPipeline)=>(advancedVSeed, context)=>{
1203
+ const { dimensions = [], measures = [] } = advancedVSeed;
1204
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1205
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
1206
+ const hasEncoding = hasDimensionEncoding || hasMeasureEncoding;
1207
+ if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
1208
+ return execPipeline(noEncodingPipeline, context, advancedVSeed);
1209
+ };
1210
+ const defaultEncodingForLine = (advancedVSeed)=>{
1211
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1212
+ const measures = findAllMeasures(vseedMeasures);
1213
+ const encoding = {};
1214
+ line_generateDefaultDimensionEncoding(dimensions, encoding);
1215
+ line_generateDefaultMeasureEncoding(measures, encoding);
1216
+ return {
1217
+ ...advancedVSeed,
1218
+ encoding
1219
+ };
1220
+ };
1223
1221
  const encodingForLine = (advancedVSeed)=>{
1224
1222
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1225
1223
  const measures = findAllMeasures(vseedMeasures);
1226
1224
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1227
1225
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1228
1226
  const encoding = {};
1229
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1230
- else generateDefaultDimensionEncoding(dimensions, encoding);
1231
- if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1232
- else generateDefaultMeasureEncoding(measures, encoding);
1227
+ if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
1228
+ else line_generateDefaultDimensionEncoding(dimensions, encoding);
1229
+ if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
1230
+ else line_generateDefaultMeasureEncoding(measures, encoding);
1233
1231
  return {
1234
1232
  ...advancedVSeed,
1235
1233
  encoding
1236
1234
  };
1237
1235
  };
1238
- const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1236
+ const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1239
1237
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
1240
1238
  encoding.x = uniqueDimIds.slice(0, 1);
1241
1239
  encoding.color = uniqueDimIds.slice(1);
1242
- encoding.tooltip = uniqueDimIds;
1240
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
1243
1241
  encoding.detail = [];
1244
1242
  encoding.label = [];
1245
1243
  encoding.row = [];
1246
1244
  encoding.column = [];
1247
1245
  };
1248
- const generateDimensionEncoding = (dimensions, encoding)=>{
1246
+ const line_generateDimensionEncoding = (dimensions, encoding)=>{
1249
1247
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1250
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1251
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1252
1248
  if (0 === encoding.x.length) encoding.x = [
1253
1249
  dimensions[0].id
1254
1250
  ];
1251
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1255
1252
  if (0 === encoding.color.length) encoding.color = [
1256
1253
  MeasureName
1257
1254
  ];
1255
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1256
+ if (0 === encoding.detail.length) encoding.detail = [
1257
+ MeasureName
1258
+ ];
1259
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
1260
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
1258
1261
  };
1259
- const generateDefaultMeasureEncoding = (measures, encoding)=>{
1260
- encoding.tooltip = unique(measures.map((item)=>item.id));
1262
+ const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
1261
1263
  encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1262
1264
  };
1263
- const generateMeasureEncoding = (measures, encoding)=>{
1264
- encoding.tooltip = measures.map((item)=>item.id);
1265
+ const line_generateMeasureEncoding = (measures, encoding)=>{
1265
1266
  encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1266
1267
  const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1267
1268
  if (color.length > 0) encoding.color = color;
1269
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
1270
+ encoding.tooltip = unique([
1271
+ ...encoding.tooltip || [],
1272
+ ...tooltip
1273
+ ]);
1268
1274
  };
1269
1275
  const isMeasureTreeWithChildren = (vseed)=>{
1270
1276
  const { measures } = vseed;
@@ -1276,6 +1282,37 @@ const isMeasureTreeWithParentId = (vseed)=>{
1276
1282
  if (!measures) return false;
1277
1283
  return measures.some((measure)=>'parentId' in measure);
1278
1284
  };
1285
+ const normalizeMeasureTree = (measures)=>{
1286
+ const createEmptyMeasureGroup = ()=>({
1287
+ id: 'group',
1288
+ alias: '',
1289
+ children: []
1290
+ });
1291
+ let currentGroup = createEmptyMeasureGroup();
1292
+ const measureGroups = [];
1293
+ for (const measure of measures)if ('children' in measure) {
1294
+ if (currentGroup.children?.length) {
1295
+ currentGroup.id = [
1296
+ currentGroup.id,
1297
+ ...currentGroup.children.map((item)=>item.id)
1298
+ ].join('-');
1299
+ currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1300
+ measureGroups.push(currentGroup);
1301
+ currentGroup = createEmptyMeasureGroup();
1302
+ }
1303
+ measureGroups.push(measure);
1304
+ } else currentGroup.children?.push(measure);
1305
+ if (currentGroup.children?.length) {
1306
+ currentGroup.id = [
1307
+ currentGroup.id,
1308
+ ...currentGroup.children.map((item)=>item.id)
1309
+ ].join('-');
1310
+ currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1311
+ measureGroups.push(currentGroup);
1312
+ currentGroup = createEmptyMeasureGroup();
1313
+ }
1314
+ return measureGroups;
1315
+ };
1279
1316
  const measureDepth = (measures = [])=>{
1280
1317
  if (!measures) return 0;
1281
1318
  let depth = 1;
@@ -1300,7 +1337,7 @@ const isPivotChart = (vseed)=>{
1300
1337
  }
1301
1338
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1302
1339
  const { dimensions = [] } = vseed;
1303
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1340
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1304
1341
  if (hasRowOrColumnDimension) return true;
1305
1342
  if ('scatter' === vseed.chartType) {
1306
1343
  if (isMeasureTreeWithChildren(vseed)) {
@@ -1320,14 +1357,14 @@ const isPivotChart = (vseed)=>{
1320
1357
  return false;
1321
1358
  }
1322
1359
  const { measures = [], dimensions = [] } = vseed;
1323
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1360
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1324
1361
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1325
1362
  return hasRowOrColumnDimension || hasMeasureGroup;
1326
1363
  };
1327
1364
  const buildMeasures = (advancedVSeed, context)=>{
1328
1365
  const { vseed } = context;
1329
1366
  if (isMeasureTreeWithChildren(vseed)) {
1330
- advancedVSeed.measures = vseed.measures;
1367
+ advancedVSeed.measures = normalizeMeasureTree(vseed.measures);
1331
1368
  return advancedVSeed;
1332
1369
  }
1333
1370
  if (isMeasureTreeWithParentId(vseed)) {
@@ -1429,7 +1466,7 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
1429
1466
  });
1430
1467
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1431
1468
  foldMeasureId,
1432
- separator: Separator,
1469
+ separator: "-",
1433
1470
  colorItemAsId
1434
1471
  });
1435
1472
  return {
@@ -1715,11 +1752,16 @@ const annotation_annotation = (advancedVSeed, context)=>{
1715
1752
  };
1716
1753
  const lineAdvancedPipeline = [
1717
1754
  initAdvancedVSeed_initAdvancedVSeed,
1718
- defaultMeasures_defaultMeasures,
1719
- defaultDimensions,
1720
- defaultMeasureName,
1721
- encodingForLine,
1722
- buildMeasures,
1755
+ default_defaultMeasures_defaultMeasures,
1756
+ defaultDimensions_defaultDimensions,
1757
+ defaultMeasureName_defaultMeasureName,
1758
+ encodingAdapter([
1759
+ defaultEncodingForLine,
1760
+ buildMeasures
1761
+ ], [
1762
+ encodingForLine,
1763
+ buildMeasures
1764
+ ]),
1723
1765
  pivotAdapter([
1724
1766
  reshapeWithEncoding
1725
1767
  ], [
@@ -1994,10 +2036,6 @@ const xBand = (spec, context)=>{
1994
2036
  ];
1995
2037
  return result;
1996
2038
  };
1997
- const ANNOTATION_Z_INDEX = 1000;
1998
- const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
1999
- const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000;
2000
- const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001;
2001
2039
  const yLinear = (spec, context)=>{
2002
2040
  const result = {
2003
2041
  ...spec
@@ -2071,7 +2109,7 @@ const yLinear = (spec, context)=>{
2071
2109
  }
2072
2110
  },
2073
2111
  innerOffset: {
2074
- top: LINEAR_AXIS_INNER_OFFSET_TOP
2112
+ top: 7
2075
2113
  }
2076
2114
  };
2077
2115
  result.axes = [
@@ -2627,86 +2665,141 @@ const tooltip_tooltip = (spec, context)=>{
2627
2665
  ...spec
2628
2666
  };
2629
2667
  const { advancedVSeed } = context;
2630
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
2668
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
2631
2669
  const baseConfig = advancedVSeed.config[chartType];
2632
2670
  const { tooltip = {
2633
2671
  enable: true
2634
2672
  } } = baseConfig;
2635
2673
  const { enable } = tooltip;
2636
- const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2637
- const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2674
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
2638
2675
  result.tooltip = {
2639
2676
  visible: enable,
2640
2677
  mark: {
2641
2678
  title: {
2642
- visible: true
2679
+ visible: false
2643
2680
  },
2644
- content: [
2645
- ...dimensions.map((item)=>({
2646
- visible: true,
2647
- hasShape: true,
2648
- shapeType: 'rectRound',
2649
- key: (datum)=>{
2650
- if (item.alias || item.id) return item.alias || item.id;
2651
- return datum && datum[item.id];
2652
- },
2653
- value: (datum)=>datum && datum[item.id]
2654
- })),
2655
- {
2656
- visible: true,
2657
- hasShape: true,
2658
- key: (datum)=>datum && datum[measureName || colorName] || '',
2659
- value: (datum)=>{
2660
- if (!datum) return '';
2661
- const value = datum[measureValue];
2662
- const id = datum[measureId];
2663
- const measure = findMeasureById(measures, id);
2664
- if (!measure) return String(value);
2665
- const { format = {}, autoFormat = true } = measure;
2666
- if (!external_remeda_isEmpty(format)) {
2667
- const formatter = createFormatter(format);
2668
- return formatter(value);
2669
- }
2670
- if (autoFormat) return autoFormatter(value, locale);
2671
- return String(value);
2672
- }
2673
- }
2674
- ]
2681
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo)
2675
2682
  },
2676
2683
  dimension: {
2677
- content: [
2678
- {
2679
- visible: true,
2680
- key: (datum)=>datum && datum[colorName] || '',
2681
- value: (datum)=>{
2682
- if (!datum) return '';
2683
- const value = datum[measureValue];
2684
- const id = datum[measureId];
2685
- const measure = findMeasureById(measures, id);
2686
- if (!measure) return String(value);
2687
- const { format = {}, autoFormat = true } = measure;
2688
- if (!external_remeda_isEmpty(format)) {
2689
- const formatter = createFormatter(format);
2690
- return formatter(value);
2691
- }
2692
- if (autoFormat) return autoFormatter(value, locale);
2693
- return String(value);
2694
- },
2695
- shapeType: 'rectRound'
2696
- }
2697
- ]
2684
+ title: {
2685
+ visible: true
2686
+ },
2687
+ content: createDimensionContent(measures, foldInfo, unfoldInfo, locale)
2698
2688
  }
2699
2689
  };
2700
2690
  return result;
2701
2691
  };
2702
- const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
2703
- if ('string' == typeof value) return obj[key] === value;
2704
- if ('number' == typeof value) return obj[key] === value;
2705
- return true;
2706
- });
2707
- const annotationPoint_annotationPoint = (spec, context)=>{
2708
- const { advancedVSeed } = context;
2709
- const { annotation } = advancedVSeed;
2692
+ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
2693
+ const { measureId, measureValue } = foldInfo;
2694
+ const { encodingColor } = unfoldInfo;
2695
+ return [
2696
+ {
2697
+ visible: true,
2698
+ shapeType: 'rectRound',
2699
+ hasShape: true,
2700
+ key: (v)=>{
2701
+ const datum = v;
2702
+ return datum && datum[encodingColor] || '';
2703
+ },
2704
+ value: (v)=>{
2705
+ const datum = v;
2706
+ if (!datum) return '';
2707
+ const value = datum[measureValue];
2708
+ const id = datum[measureId];
2709
+ const measure = findMeasureById(measures, id);
2710
+ if (!measure) return String(value);
2711
+ const { format = {}, autoFormat = true } = measure;
2712
+ if (!external_remeda_isEmpty(format)) {
2713
+ const formatter = createFormatter(format);
2714
+ return formatter(value);
2715
+ }
2716
+ if (autoFormat) return autoFormatter(value, locale);
2717
+ return String(value);
2718
+ }
2719
+ }
2720
+ ];
2721
+ };
2722
+ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
2723
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
2724
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
2725
+ const dimContent = dims.map((item)=>({
2726
+ visible: true,
2727
+ hasShape: true,
2728
+ shapeType: 'rectRound',
2729
+ key: (v)=>{
2730
+ const datum = v;
2731
+ if (item.alias || item.id) return item.alias || item.id;
2732
+ return datum && datum[item.id];
2733
+ },
2734
+ value: (v)=>{
2735
+ const datum = v;
2736
+ return datum && datum[item.id];
2737
+ }
2738
+ }));
2739
+ const meaContent = meas.map((item)=>({
2740
+ visible: true,
2741
+ hasShape: true,
2742
+ shapeType: 'rectRound',
2743
+ key: item.alias || item.id,
2744
+ value: (v)=>{
2745
+ const datum = v;
2746
+ if (!datum) return '';
2747
+ const id = item.id;
2748
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
2749
+ const originalData = datum[ORIGINAL_DATA];
2750
+ const value = originalData[id];
2751
+ const measure = findMeasureById(measures, id);
2752
+ if (!measure) return String(value);
2753
+ const { format = {}, autoFormat = true } = measure;
2754
+ if (!external_remeda_isEmpty(format)) {
2755
+ const formatter = createFormatter(format);
2756
+ return formatter(value);
2757
+ }
2758
+ if (autoFormat) return autoFormatter(value, locale);
2759
+ return String(value);
2760
+ }
2761
+ }));
2762
+ const defaultContent = {
2763
+ visible: true,
2764
+ hasShape: true,
2765
+ shapeType: 'rectRound',
2766
+ key: (v)=>{
2767
+ const { measureName } = foldInfo;
2768
+ const { encodingColor: colorName } = unfoldInfo;
2769
+ const datum = v;
2770
+ return datum && datum[measureName || colorName] || '';
2771
+ },
2772
+ value: (v)=>{
2773
+ const { measureId, measureValue } = foldInfo;
2774
+ const datum = v;
2775
+ if (!datum) return '';
2776
+ const value = datum[measureValue];
2777
+ const id = datum[measureId];
2778
+ const measure = findMeasureById(measures, id);
2779
+ if (!measure) return String(value);
2780
+ const { format = {}, autoFormat = true } = measure;
2781
+ if (!external_remeda_isEmpty(format)) {
2782
+ const formatter = createFormatter(format);
2783
+ return formatter(value);
2784
+ }
2785
+ if (autoFormat) return autoFormatter(value, locale);
2786
+ return String(value);
2787
+ }
2788
+ };
2789
+ return [
2790
+ ...dimContent,
2791
+ defaultContent,
2792
+ ...meaContent
2793
+ ];
2794
+ };
2795
+ const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
2796
+ if ('string' == typeof value) return obj[key] === value;
2797
+ if ('number' == typeof value) return obj[key] === value;
2798
+ return true;
2799
+ });
2800
+ const annotationPoint_annotationPoint = (spec, context)=>{
2801
+ const { advancedVSeed } = context;
2802
+ const { annotation } = advancedVSeed;
2710
2803
  if (!annotation || !annotation.annotationPoint) return spec;
2711
2804
  const { annotationPoint } = annotation;
2712
2805
  const annotationPointList = Array.isArray(annotationPoint) ? annotationPoint : [
@@ -2717,7 +2810,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2717
2810
  const dataset = advancedVSeed.dataset.flat();
2718
2811
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2719
2812
  return selectedData.map((datum)=>({
2720
- zIndex: ANNOTATION_Z_INDEX,
2813
+ zIndex: 1000,
2721
2814
  regionRelative: true,
2722
2815
  position: (data, context)=>{
2723
2816
  const targetDatum = data.find((item)=>isSubset(datum, item));
@@ -2771,7 +2864,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2771
2864
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2772
2865
  const { advancedVSeed } = context;
2773
2866
  const { annotation, datasetReshapeInfo } = advancedVSeed;
2774
- const { unfoldInfo } = datasetReshapeInfo[0];
2867
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
2775
2868
  if (!annotation || !annotation.annotationVerticalLine) return spec;
2776
2869
  const { annotationVerticalLine } = annotation;
2777
2870
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -2790,7 +2883,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2790
2883
  const dataset = advancedVSeed.dataset.flat();
2791
2884
  const generateOneMarkLine = (x)=>({
2792
2885
  x: x,
2793
- zIndex: ANNOTATION_Z_INDEX,
2886
+ zIndex: 1000,
2794
2887
  line: {
2795
2888
  style: {
2796
2889
  visible: lineVisible,
@@ -2851,9 +2944,9 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2851
2944
  }
2852
2945
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2853
2946
  return selectedData.map((datum)=>{
2854
- const x = unfoldInfo.encodingX;
2855
- if (!x) return {};
2856
- return generateOneMarkLine(datum[x]);
2947
+ if (datum[unfoldInfo.encodingX]) return generateOneMarkLine(datum[unfoldInfo.encodingX]);
2948
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
2949
+ return {};
2857
2950
  });
2858
2951
  });
2859
2952
  const specMarkLine = spec.markLine || [];
@@ -2869,10 +2962,10 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2869
2962
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2870
2963
  const { advancedVSeed } = context;
2871
2964
  const { annotation, datasetReshapeInfo } = advancedVSeed;
2872
- const { unfoldInfo } = datasetReshapeInfo[0];
2965
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
2873
2966
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
2874
2967
  const { annotationHorizontalLine } = annotation;
2875
- const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
2968
+ const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
2876
2969
  annotationHorizontalLine
2877
2970
  ];
2878
2971
  const positionMap = {
@@ -2883,12 +2976,12 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2883
2976
  insideMiddle: 'insideMiddleTop',
2884
2977
  insideEnd: 'insideEndTop'
2885
2978
  };
2886
- const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine)=>{
2887
- const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = 'top', lineColor = '#212121', lineStyle = 'dashed', lineVisible = true, lineWidth = 1, textBackgroundVisible = true, textBackgroundColor = '#212121', textBackgroundBorderColor = '#212121', textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundPadding = 2 } = annotationVerticalLine;
2979
+ const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
2980
+ const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = 'top', lineColor = '#212121', lineStyle = 'dashed', lineVisible = true, lineWidth = 1, textBackgroundVisible = true, textBackgroundColor = '#212121', textBackgroundBorderColor = '#212121', textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundPadding = 2 } = annotationHorizontalLine;
2888
2981
  const dataset = advancedVSeed.dataset.flat();
2889
2982
  const generateOneMarkLine = (y)=>({
2890
2983
  y,
2891
- zIndex: ANNOTATION_Z_INDEX,
2984
+ zIndex: 1000,
2892
2985
  line: {
2893
2986
  style: {
2894
2987
  visible: lineVisible,
@@ -2949,9 +3042,9 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2949
3042
  }
2950
3043
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2951
3044
  return selectedData.map((datum)=>{
2952
- const y = unfoldInfo.encodingY;
2953
- if (!y) return {};
2954
- return generateOneMarkLine(datum[y]);
3045
+ if (datum[unfoldInfo.encodingY]) return generateOneMarkLine(datum[unfoldInfo.encodingY]);
3046
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
3047
+ return {};
2955
3048
  });
2956
3049
  });
2957
3050
  const specMarkLine = spec.markLine || [];
@@ -2989,7 +3082,7 @@ const annotationArea_annotationArea = (spec, context)=>{
2989
3082
  const labelPosition = positionMap[textPosition || 'top'];
2990
3083
  const isBottom = labelPosition.toLocaleLowerCase().includes('bottom');
2991
3084
  return {
2992
- zIndex: ANNOTATION_Z_INDEX,
3085
+ zIndex: 1000,
2993
3086
  regionRelative: true,
2994
3087
  positions: (data, context)=>{
2995
3088
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
@@ -3315,7 +3408,7 @@ const pivotRowDimensions = (spec, context)=>{
3315
3408
  const { advancedVSeed } = context;
3316
3409
  const dimensions = advancedVSeed.dimensions;
3317
3410
  if (!dimensions) return result;
3318
- const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
3411
+ const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
3319
3412
  const rows = rowDimensions.map((dim)=>({
3320
3413
  dimensionKey: dim.id,
3321
3414
  title: dim.alias || dim.id
@@ -3332,7 +3425,7 @@ const pivotColumnDimensions = (spec, context)=>{
3332
3425
  const { advancedVSeed } = context;
3333
3426
  const dimensions = advancedVSeed.dimensions;
3334
3427
  if (!dimensions) return result;
3335
- const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
3428
+ const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
3336
3429
  const columns = columnDimensions.map((dim)=>({
3337
3430
  dimensionKey: dim.id,
3338
3431
  title: dim.alias || dim.id
@@ -3605,6 +3698,17 @@ const registerLine = ()=>{
3605
3698
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3606
3699
  Builder._specPipelineMap.line = lineSpecPipeline;
3607
3700
  };
3701
+ const defaultEncodingForColumn = (advancedVSeed)=>{
3702
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
3703
+ const measures = findAllMeasures(vseedMeasures);
3704
+ const encoding = {};
3705
+ column_generateDefaultDimensionEncoding(dimensions, encoding);
3706
+ column_generateDefaultMeasureEncoding(measures, encoding);
3707
+ return {
3708
+ ...advancedVSeed,
3709
+ encoding
3710
+ };
3711
+ };
3608
3712
  const encodingForColumn = (advancedVSeed)=>{
3609
3713
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
3610
3714
  const measures = findAllMeasures(vseedMeasures);
@@ -3626,40 +3730,52 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3626
3730
  encoding.x = uniqueDimIds.slice(0, 1);
3627
3731
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
3628
3732
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
3629
- encoding.tooltip = uniqueDimIds;
3733
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
3630
3734
  encoding.label = [];
3631
3735
  encoding.row = [];
3632
3736
  encoding.column = [];
3633
3737
  };
3634
3738
  const column_generateDimensionEncoding = (dimensions, encoding)=>{
3635
3739
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
3636
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3637
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
3638
3740
  if (0 === encoding.x.length) encoding.x = [
3639
3741
  dimensions[0].id
3640
3742
  ];
3743
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3641
3744
  if (0 === encoding.color.length) encoding.color = [
3642
3745
  MeasureName
3643
3746
  ];
3747
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
3748
+ if (0 === encoding.detail.length) encoding.detail = [
3749
+ MeasureName
3750
+ ];
3751
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
3752
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
3644
3753
  };
3645
3754
  const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3646
- encoding.tooltip = unique(measures.map((item)=>item.id));
3647
3755
  encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3648
3756
  };
3649
3757
  const column_generateMeasureEncoding = (measures, encoding)=>{
3650
- encoding.tooltip = measures.map((item)=>item.id);
3651
3758
  encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3652
3759
  const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3653
3760
  if (color.length > 0) encoding.color = color;
3654
- return encoding;
3761
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
3762
+ encoding.tooltip = unique([
3763
+ ...encoding.tooltip || [],
3764
+ ...tooltip
3765
+ ]);
3655
3766
  };
3656
3767
  const columnAdvancedPipeline = [
3657
3768
  initAdvancedVSeed_initAdvancedVSeed,
3658
- defaultMeasures_defaultMeasures,
3659
- defaultDimensions,
3660
- defaultMeasureName,
3661
- encodingForColumn,
3662
- buildMeasures,
3769
+ default_defaultMeasures_defaultMeasures,
3770
+ defaultDimensions_defaultDimensions,
3771
+ defaultMeasureName_defaultMeasureName,
3772
+ encodingAdapter([
3773
+ defaultEncodingForColumn,
3774
+ buildMeasures
3775
+ ], [
3776
+ encodingForColumn,
3777
+ buildMeasures
3778
+ ]),
3663
3779
  pivotAdapter([
3664
3780
  reshapeWithEncoding
3665
3781
  ], [
@@ -3856,7 +3972,7 @@ const annotationAreaBand = (spec, context)=>{
3856
3972
  const dataset = advancedVSeed.dataset.flat();
3857
3973
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3858
3974
  return {
3859
- zIndex: ANNOTATION_Z_INDEX,
3975
+ zIndex: 1000,
3860
3976
  regionRelative: true,
3861
3977
  positions: (data, context)=>{
3862
3978
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
@@ -4019,11 +4135,16 @@ const registerColumn = ()=>{
4019
4135
  };
4020
4136
  const columnParallelAdvancedPipeline = [
4021
4137
  initAdvancedVSeed_initAdvancedVSeed,
4022
- defaultMeasures_defaultMeasures,
4023
- defaultDimensions,
4024
- defaultMeasureName,
4025
- encodingForColumn,
4026
- buildMeasures,
4138
+ default_defaultMeasures_defaultMeasures,
4139
+ defaultDimensions_defaultDimensions,
4140
+ defaultMeasureName_defaultMeasureName,
4141
+ encodingAdapter([
4142
+ defaultEncodingForColumn,
4143
+ buildMeasures
4144
+ ], [
4145
+ encodingForColumn,
4146
+ buildMeasures
4147
+ ]),
4027
4148
  pivotAdapter([
4028
4149
  reshapeWithEncoding
4029
4150
  ], [
@@ -4118,11 +4239,16 @@ const registerColumnParallel = ()=>{
4118
4239
  };
4119
4240
  const columnPercentAdvancedPipeline = [
4120
4241
  initAdvancedVSeed_initAdvancedVSeed,
4121
- defaultMeasures_defaultMeasures,
4122
- defaultDimensions,
4123
- defaultMeasureName,
4124
- encodingForColumn,
4125
- buildMeasures,
4242
+ default_defaultMeasures_defaultMeasures,
4243
+ defaultDimensions_defaultDimensions,
4244
+ defaultMeasureName_defaultMeasureName,
4245
+ encodingAdapter([
4246
+ defaultEncodingForColumn,
4247
+ buildMeasures
4248
+ ], [
4249
+ encodingForColumn,
4250
+ buildMeasures
4251
+ ]),
4126
4252
  pivotAdapter([
4127
4253
  reshapeWithEncoding
4128
4254
  ], [
@@ -4199,6 +4325,17 @@ const registerColumnPercent = ()=>{
4199
4325
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4200
4326
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4201
4327
  };
4328
+ const defaultEncodingForBar = (advancedVSeed)=>{
4329
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4330
+ const measures = findAllMeasures(vseedMeasures);
4331
+ const encoding = {};
4332
+ bar_generateDefaultDimensionEncoding(dimensions, encoding);
4333
+ bar_generateDefaultMeasureEncoding(measures, encoding);
4334
+ return {
4335
+ ...advancedVSeed,
4336
+ encoding
4337
+ };
4338
+ };
4202
4339
  const encodingForBar = (advancedVSeed)=>{
4203
4340
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4204
4341
  const measures = findAllMeasures(vseedMeasures);
@@ -4214,39 +4351,45 @@ const encodingForBar = (advancedVSeed)=>{
4214
4351
  encoding
4215
4352
  };
4216
4353
  };
4217
- const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4218
- encoding.tooltip = unique(measures.map((item)=>item.id));
4219
- encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4220
- };
4221
4354
  const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
4222
4355
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4223
4356
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
4224
4357
  encoding.y = uniqueDimIds.slice(0, 1);
4225
4358
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4226
4359
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4227
- encoding.tooltip = uniqueDimIds;
4360
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
4228
4361
  encoding.label = [];
4229
4362
  encoding.row = [];
4230
4363
  encoding.column = [];
4231
4364
  };
4232
- const bar_generateMeasureEncoding = (measures, encoding)=>{
4233
- encoding.tooltip = measures.map((item)=>item.id);
4234
- encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4235
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4236
- if (color.length > 0) encoding.color = color;
4237
- return encoding;
4238
- };
4239
4365
  const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4240
4366
  encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
4241
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4242
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4243
4367
  if (0 === encoding.y.length) encoding.y = [
4244
4368
  dimensions[0].id
4245
4369
  ];
4370
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4246
4371
  if (0 === encoding.color.length) encoding.color = [
4247
4372
  MeasureName
4248
4373
  ];
4249
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4374
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4375
+ if (0 === encoding.detail.length) encoding.detail = [
4376
+ MeasureName
4377
+ ];
4378
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
4379
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
4380
+ };
4381
+ const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4382
+ encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4383
+ };
4384
+ const bar_generateMeasureEncoding = (measures, encoding)=>{
4385
+ encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4386
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4387
+ if (color.length > 0) encoding.color = color;
4388
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
4389
+ encoding.tooltip = unique([
4390
+ ...encoding.tooltip || [],
4391
+ ...tooltip
4392
+ ]);
4250
4393
  };
4251
4394
  const sortYBandAxis = (advancedVSeed, context)=>{
4252
4395
  const result = {
@@ -4266,11 +4409,16 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4266
4409
  };
4267
4410
  const barAdvancedPipeline = [
4268
4411
  initAdvancedVSeed_initAdvancedVSeed,
4269
- defaultMeasures_defaultMeasures,
4270
- defaultDimensions,
4271
- defaultMeasureName,
4272
- encodingForBar,
4273
- buildMeasures,
4412
+ default_defaultMeasures_defaultMeasures,
4413
+ defaultDimensions_defaultDimensions,
4414
+ defaultMeasureName_defaultMeasureName,
4415
+ encodingAdapter([
4416
+ defaultEncodingForBar,
4417
+ buildMeasures
4418
+ ], [
4419
+ encodingForBar,
4420
+ buildMeasures
4421
+ ]),
4274
4422
  pivotAdapter([
4275
4423
  reshapeWithEncoding
4276
4424
  ], [
@@ -4421,7 +4569,7 @@ const xLinear = (spec, context)=>{
4421
4569
  }
4422
4570
  },
4423
4571
  innerOffset: {
4424
- right: LINEAR_AXIS_INNER_OFFSET_TOP
4572
+ right: 7
4425
4573
  }
4426
4574
  };
4427
4575
  result.axes = [
@@ -4621,11 +4769,16 @@ const registerBar = ()=>{
4621
4769
  };
4622
4770
  const barParallelAdvancedPipeline = [
4623
4771
  initAdvancedVSeed_initAdvancedVSeed,
4624
- defaultMeasures_defaultMeasures,
4625
- defaultDimensions,
4626
- defaultMeasureName,
4627
- encodingForBar,
4628
- buildMeasures,
4772
+ default_defaultMeasures_defaultMeasures,
4773
+ defaultDimensions_defaultDimensions,
4774
+ defaultMeasureName_defaultMeasureName,
4775
+ encodingAdapter([
4776
+ defaultEncodingForBar,
4777
+ buildMeasures
4778
+ ], [
4779
+ encodingForBar,
4780
+ buildMeasures
4781
+ ]),
4629
4782
  pivotAdapter([
4630
4783
  reshapeWithEncoding
4631
4784
  ], [
@@ -4719,11 +4872,16 @@ const registerBarParallel = ()=>{
4719
4872
  };
4720
4873
  const barPercentAdvancedPipeline = [
4721
4874
  initAdvancedVSeed_initAdvancedVSeed,
4722
- defaultMeasures_defaultMeasures,
4723
- defaultDimensions,
4724
- defaultMeasureName,
4725
- encodingForBar,
4726
- buildMeasures,
4875
+ default_defaultMeasures_defaultMeasures,
4876
+ defaultDimensions_defaultDimensions,
4877
+ defaultMeasureName_defaultMeasureName,
4878
+ encodingAdapter([
4879
+ defaultEncodingForBar,
4880
+ buildMeasures
4881
+ ], [
4882
+ encodingForBar,
4883
+ buildMeasures
4884
+ ]),
4727
4885
  pivotAdapter([
4728
4886
  reshapeWithEncoding
4729
4887
  ], [
@@ -4792,11 +4950,16 @@ const registerBarPercent = ()=>{
4792
4950
  };
4793
4951
  const areaAdvancedPipeline = [
4794
4952
  initAdvancedVSeed_initAdvancedVSeed,
4795
- defaultMeasures_defaultMeasures,
4796
- defaultDimensions,
4797
- defaultMeasureName,
4798
- encodingForLine,
4799
- buildMeasures,
4953
+ default_defaultMeasures_defaultMeasures,
4954
+ defaultDimensions_defaultDimensions,
4955
+ defaultMeasureName_defaultMeasureName,
4956
+ encodingAdapter([
4957
+ defaultEncodingForLine,
4958
+ buildMeasures
4959
+ ], [
4960
+ encodingForLine,
4961
+ buildMeasures
4962
+ ]),
4800
4963
  pivotAdapter([
4801
4964
  reshapeWithEncoding
4802
4965
  ], [
@@ -4952,11 +5115,16 @@ const registerArea = ()=>{
4952
5115
  };
4953
5116
  const areaPercentAdvancedPipeline = [
4954
5117
  initAdvancedVSeed_initAdvancedVSeed,
4955
- defaultMeasures_defaultMeasures,
4956
- defaultDimensions,
4957
- defaultMeasureName,
4958
- encodingForLine,
4959
- buildMeasures,
5118
+ default_defaultMeasures_defaultMeasures,
5119
+ defaultDimensions_defaultDimensions,
5120
+ defaultMeasureName_defaultMeasureName,
5121
+ encodingAdapter([
5122
+ defaultEncodingForLine,
5123
+ buildMeasures
5124
+ ], [
5125
+ encodingForLine,
5126
+ buildMeasures
5127
+ ]),
4960
5128
  pivotAdapter([
4961
5129
  reshapeWithEncoding
4962
5130
  ], [
@@ -5030,6 +5198,17 @@ const registerAreaPercent = ()=>{
5030
5198
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5031
5199
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5032
5200
  };
5201
+ const defaultEncodingForScatter = (advancedVSeed)=>{
5202
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5203
+ const measures = findAllMeasures(vseedMeasures);
5204
+ const encoding = {};
5205
+ scatter_generateDefaultDimensionEncoding(dimensions, encoding);
5206
+ scatter_generateDefaultMeasureEncoding(measures, encoding);
5207
+ return {
5208
+ ...advancedVSeed,
5209
+ encoding
5210
+ };
5211
+ };
5033
5212
  const encodingForScatter = (advancedVSeed)=>{
5034
5213
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5035
5214
  const measures = findAllMeasures(vseedMeasures);
@@ -5045,33 +5224,43 @@ const encodingForScatter = (advancedVSeed)=>{
5045
5224
  encoding
5046
5225
  };
5047
5226
  };
5048
- const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5049
- encoding.tooltip = unique(measures.map((item)=>item.id));
5050
- encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5051
- };
5052
5227
  const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5053
5228
  const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
5054
5229
  const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
5055
5230
  encoding.color = uniqueDimIds.slice(0);
5056
5231
  encoding.detail = uniqueDimIds.slice(0);
5057
- encoding.tooltip = uniqueDimIds;
5232
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
5058
5233
  encoding.label = [];
5059
5234
  encoding.row = [];
5060
5235
  encoding.column = [];
5061
5236
  };
5062
- const scatter_generateMeasureEncoding = (measures, encoding)=>{
5063
- encoding.tooltip = measures.map((item)=>item.id);
5064
- encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5065
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5066
- if (color.length > 0) encoding.color = color;
5067
- };
5068
5237
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5069
5238
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5070
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5071
5239
  if (0 === encoding.color.length) encoding.color = [
5072
5240
  MeasureName
5073
5241
  ];
5074
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5242
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5243
+ if (0 === encoding.detail.length) encoding.detail = [
5244
+ MeasureName
5245
+ ];
5246
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
5247
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
5248
+ };
5249
+ const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5250
+ encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5251
+ };
5252
+ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5253
+ encoding.tooltip = measures.map((item)=>item.id);
5254
+ encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5255
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5256
+ if (color.length > 0) encoding.color = [
5257
+ color[0]
5258
+ ];
5259
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
5260
+ encoding.tooltip = unique([
5261
+ ...encoding.tooltip || [],
5262
+ ...tooltip
5263
+ ]);
5075
5264
  };
5076
5265
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
5077
5266
  const { vseed } = context;
@@ -5099,9 +5288,10 @@ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
5099
5288
  const isXAxis = encoding.includes('xAxis');
5100
5289
  if (isYAxis) yMeasures.push(item);
5101
5290
  else if (isXAxis) xMeasures.push(item);
5102
- else if (0 === index) yMeasures.push(item);
5291
+ else if (0 !== index) yMeasures.push(item);
5103
5292
  else xMeasures.push(item);
5104
5293
  }
5294
+ if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
5105
5295
  return [
5106
5296
  {
5107
5297
  id: 'scatterMeasures',
@@ -5167,7 +5357,7 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
5167
5357
  const isEmpty = !encoding.length;
5168
5358
  if (isY) scatterChart.yMeasures.push(item);
5169
5359
  else if (isX) scatterChart.xMeasures.push(item);
5170
- else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5360
+ else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5171
5361
  else scatterChart.xMeasures.push(item);
5172
5362
  });
5173
5363
  return scatterMeasuresToMeasureTree(scatterMeasures);
@@ -5190,6 +5380,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5190
5380
  if (xMeasures && xMeasures.children) {
5191
5381
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (d)=>d.id), uniqueBy(xMeasures.children, (d)=>d.id), encoding, {
5192
5382
  foldMeasureValue: FoldXMeasureValue,
5383
+ foldMeasureId: FoldXMeasureId,
5193
5384
  colorItemAsId: true,
5194
5385
  colorMeasureId: getColorMeasureId(advancedVSeed)
5195
5386
  });
@@ -5200,6 +5391,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5200
5391
  if (yMeasures && yMeasures.children) {
5201
5392
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], uniqueBy(dimensions, (d)=>d.id), uniqueBy(yMeasures.children, (d)=>d.id), encoding, {
5202
5393
  foldMeasureValue: FoldYMeasureValue,
5394
+ foldMeasureId: FoldYMeasureId,
5203
5395
  colorItemAsId: true,
5204
5396
  colorMeasureId: getColorMeasureId(advancedVSeed)
5205
5397
  });
@@ -5302,11 +5494,16 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5302
5494
  };
5303
5495
  const scatterAdvancedPipeline = [
5304
5496
  initAdvancedVSeed_initAdvancedVSeed,
5305
- defaultMeasures_defaultMeasures,
5306
- defaultDimensions,
5307
- defaultMeasureName,
5308
- encodingForScatter,
5309
- buildMeasuresForScatter,
5497
+ default_defaultMeasures_defaultMeasures,
5498
+ defaultDimensions_defaultDimensions,
5499
+ defaultMeasureName_defaultMeasureName,
5500
+ encodingAdapter([
5501
+ defaultEncodingForScatter,
5502
+ buildMeasuresForScatter
5503
+ ], [
5504
+ encodingForScatter,
5505
+ buildMeasuresForScatter
5506
+ ]),
5310
5507
  pivotAdapter([
5311
5508
  reshapeWithScatterEncoding
5312
5509
  ], [
@@ -5352,6 +5549,105 @@ const datasetScatter = (spec, context)=>{
5352
5549
  }
5353
5550
  };
5354
5551
  };
5552
+ const tooltipScatter = (spec, context)=>{
5553
+ const result = {
5554
+ ...spec
5555
+ };
5556
+ const { advancedVSeed } = context;
5557
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
5558
+ const baseConfig = advancedVSeed.config[chartType];
5559
+ const { tooltip = {
5560
+ enable: true
5561
+ } } = baseConfig;
5562
+ const { enable } = tooltip;
5563
+ const { foldInfoList } = datasetReshapeInfo[0];
5564
+ result.tooltip = {
5565
+ visible: enable,
5566
+ mark: {
5567
+ title: {
5568
+ visible: false
5569
+ },
5570
+ content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList)
5571
+ },
5572
+ dimension: {
5573
+ visible: false
5574
+ }
5575
+ };
5576
+ return result;
5577
+ };
5578
+ const tooltipScatter_createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
5579
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
5580
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
5581
+ const dimContent = dims.map((item)=>({
5582
+ visible: true,
5583
+ hasShape: true,
5584
+ shapeType: 'rectRound',
5585
+ key: (v)=>{
5586
+ const datum = v;
5587
+ if (item.alias || item.id) return item.alias || item.id;
5588
+ return datum && datum[item.id];
5589
+ },
5590
+ value: (v)=>{
5591
+ const datum = v;
5592
+ return datum && datum[item.id];
5593
+ }
5594
+ }));
5595
+ const meaContent = meas.map((item)=>({
5596
+ visible: true,
5597
+ hasShape: true,
5598
+ shapeType: 'rectRound',
5599
+ key: item.alias || item.id,
5600
+ value: (v)=>{
5601
+ const datum = v;
5602
+ if (!datum) return '';
5603
+ const id = item.id;
5604
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
5605
+ const originalData = datum[ORIGINAL_DATA];
5606
+ const value = originalData[id];
5607
+ const measure = findMeasureById(measures, id);
5608
+ if (!measure) return String(value);
5609
+ const { format = {}, autoFormat = true } = measure;
5610
+ if (!external_remeda_isEmpty(format)) {
5611
+ const formatter = createFormatter(format);
5612
+ return formatter(value);
5613
+ }
5614
+ if (autoFormat) return autoFormatter(value, locale);
5615
+ return String(value);
5616
+ }
5617
+ }));
5618
+ const foldMeaContent = foldInfoList.map((foldInfo)=>({
5619
+ visible: true,
5620
+ hasShape: true,
5621
+ shapeType: 'rectRound',
5622
+ key: (v)=>{
5623
+ const { measureId, foldMap } = foldInfo;
5624
+ const datum = v;
5625
+ const id = datum[measureId];
5626
+ return foldMap[id] || id;
5627
+ },
5628
+ value: (v)=>{
5629
+ const { measureId, measureValue } = foldInfo;
5630
+ const datum = v;
5631
+ if (!datum) return '';
5632
+ const value = datum[measureValue];
5633
+ const id = datum[measureId];
5634
+ const measure = findMeasureById(measures, id);
5635
+ if (!measure) return String(value);
5636
+ const { format = {}, autoFormat = true } = measure;
5637
+ if (!external_remeda_isEmpty(format)) {
5638
+ const formatter = createFormatter(format);
5639
+ return formatter(value);
5640
+ }
5641
+ if (autoFormat) return autoFormatter(value, locale);
5642
+ return String(value);
5643
+ }
5644
+ }));
5645
+ return [
5646
+ ...dimContent,
5647
+ ...foldMeaContent,
5648
+ ...meaContent
5649
+ ];
5650
+ };
5355
5651
  const horizontalCrosshairLine = (spec, context)=>{
5356
5652
  const result = {
5357
5653
  ...spec
@@ -5405,7 +5701,7 @@ const scatter = [
5405
5701
  xLinear,
5406
5702
  yLinear,
5407
5703
  label_label,
5408
- tooltip_tooltip,
5704
+ tooltipScatter,
5409
5705
  colorAdapter(discreteLegend, colorLegend),
5410
5706
  verticalCrosshairLine,
5411
5707
  horizontalCrosshairLine,
@@ -5430,7 +5726,7 @@ const pivotScatter = [
5430
5726
  xLinear,
5431
5727
  yLinear,
5432
5728
  label_label,
5433
- tooltip_tooltip,
5729
+ tooltipScatter,
5434
5730
  verticalCrosshairLine,
5435
5731
  horizontalCrosshairLine,
5436
5732
  colorPointStyleFill(pointStyle_pointStyle),
@@ -5451,6 +5747,17 @@ const registerScatter = ()=>{
5451
5747
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5452
5748
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5453
5749
  };
5750
+ const defaultEncodingForDualAxis = (advancedVSeed)=>{
5751
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5752
+ const measures = findAllMeasures(vseedMeasures);
5753
+ const encoding = {};
5754
+ dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
5755
+ dualAxis_generateDefaultMeasureEncoding(measures, encoding);
5756
+ return {
5757
+ ...advancedVSeed,
5758
+ encoding
5759
+ };
5760
+ };
5454
5761
  const encodingForDualAxis = (advancedVSeed)=>{
5455
5762
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5456
5763
  const measures = findAllMeasures(vseedMeasures);
@@ -5466,39 +5773,45 @@ const encodingForDualAxis = (advancedVSeed)=>{
5466
5773
  encoding
5467
5774
  };
5468
5775
  };
5469
- const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5470
- encoding.tooltip = unique(measures.map((item)=>item.id));
5471
- encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5472
- };
5473
5776
  const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5474
5777
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
5475
5778
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
5476
5779
  encoding.x = uniqueDimIds.slice(0, 1);
5477
5780
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5478
5781
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5479
- encoding.tooltip = uniqueDimIds;
5782
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
5480
5783
  encoding.label = [];
5481
5784
  encoding.row = [];
5482
5785
  encoding.column = [];
5483
5786
  };
5484
- const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5485
- encoding.tooltip = measures.map((item)=>item.id);
5486
- encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5487
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5488
- if (color.length > 0) encoding.color = color;
5489
- return encoding;
5490
- };
5491
5787
  const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5492
5788
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
5493
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5494
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5495
5789
  if (0 === encoding.x.length) encoding.x = [
5496
5790
  dimensions[0].id
5497
5791
  ];
5792
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5498
5793
  if (0 === encoding.color.length) encoding.color = [
5499
5794
  MeasureName
5500
5795
  ];
5501
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5796
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5797
+ if (0 === encoding.detail.length) encoding.detail = [
5798
+ MeasureName
5799
+ ];
5800
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
5801
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
5802
+ };
5803
+ const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5804
+ encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5805
+ };
5806
+ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5807
+ encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5808
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5809
+ if (color.length > 0) encoding.color = color;
5810
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
5811
+ encoding.tooltip = unique([
5812
+ ...encoding.tooltip || [],
5813
+ ...tooltip
5814
+ ]);
5502
5815
  };
5503
5816
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5504
5817
  const { vseed } = context;
@@ -5752,11 +6065,16 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5752
6065
  };
5753
6066
  const dualAxisAdvancedPipeline = [
5754
6067
  initAdvancedVSeed_initAdvancedVSeed,
5755
- defaultMeasures_defaultMeasures,
5756
- defaultDimensions,
5757
- defaultMeasureName,
5758
- encodingForDualAxis,
5759
- buildMeasuresForDualAxis,
6068
+ default_defaultMeasures_defaultMeasures,
6069
+ defaultDimensions_defaultDimensions,
6070
+ defaultMeasureName_defaultMeasureName,
6071
+ encodingAdapter([
6072
+ defaultEncodingForDualAxis,
6073
+ buildMeasuresForDualAxis
6074
+ ], [
6075
+ encodingForDualAxis,
6076
+ buildMeasuresForDualAxis
6077
+ ]),
5760
6078
  pivotAdapter([
5761
6079
  reshapeWithDualEncoding
5762
6080
  ], [
@@ -5848,7 +6166,7 @@ const initDualAxisSecondary = (spec, context)=>{
5848
6166
  const dualChartTypePrimary = (spec, context)=>{
5849
6167
  const result = {
5850
6168
  ...spec,
5851
- zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX
6169
+ zIndex: 1001
5852
6170
  };
5853
6171
  const { advancedVSeed, vseed } = context;
5854
6172
  const { chartType } = vseed;
@@ -5868,7 +6186,7 @@ const dualChartTypePrimary = (spec, context)=>{
5868
6186
  break;
5869
6187
  case 'column':
5870
6188
  result.type = 'bar';
5871
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6189
+ result.zIndex = 1000;
5872
6190
  break;
5873
6191
  case 'columnParallel':
5874
6192
  {
@@ -5879,7 +6197,7 @@ const dualChartTypePrimary = (spec, context)=>{
5879
6197
  datasetReshapeInfo[0].unfoldInfo.encodingDetail
5880
6198
  ];
5881
6199
  columnSpec.type = 'bar';
5882
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6200
+ result.zIndex = 1000;
5883
6201
  break;
5884
6202
  }
5885
6203
  case 'columnPercent':
@@ -5904,7 +6222,7 @@ const dualChartTypePrimary = (spec, context)=>{
5904
6222
  const dualChartTypeSecondary = (spec, context)=>{
5905
6223
  const result = {
5906
6224
  ...spec,
5907
- zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX
6225
+ zIndex: 1001
5908
6226
  };
5909
6227
  const { advancedVSeed, vseed } = context;
5910
6228
  const { chartType } = vseed;
@@ -5924,7 +6242,7 @@ const dualChartTypeSecondary = (spec, context)=>{
5924
6242
  break;
5925
6243
  case 'column':
5926
6244
  result.type = 'bar';
5927
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6245
+ result.zIndex = 1000;
5928
6246
  break;
5929
6247
  case 'columnParallel':
5930
6248
  {
@@ -5935,7 +6253,7 @@ const dualChartTypeSecondary = (spec, context)=>{
5935
6253
  datasetReshapeInfo[0].unfoldInfo.encodingDetail
5936
6254
  ];
5937
6255
  columnSpec.type = 'bar';
5938
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6256
+ result.zIndex = 1000;
5939
6257
  break;
5940
6258
  }
5941
6259
  case 'columnPercent':
@@ -6113,7 +6431,7 @@ const tooltipPrimary = (spec, context)=>{
6113
6431
  ...spec
6114
6432
  };
6115
6433
  const { advancedVSeed } = context;
6116
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
6434
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6117
6435
  const baseConfig = advancedVSeed.config[chartType];
6118
6436
  const { tooltip = {
6119
6437
  enable: true
@@ -6121,68 +6439,19 @@ const tooltipPrimary = (spec, context)=>{
6121
6439
  const { enable } = tooltip;
6122
6440
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6123
6441
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6124
- const { measureId, measureValue, measureName } = foldInfoList[0];
6125
- const { encodingColor: colorName } = unfoldInfo;
6126
6442
  result.tooltip = {
6127
6443
  visible: enable,
6128
6444
  mark: {
6129
6445
  title: {
6130
- visible: true
6446
+ visible: false
6131
6447
  },
6132
- content: [
6133
- ...dimensions.map((item)=>({
6134
- visible: true,
6135
- hasShape: true,
6136
- shapeType: 'rectRound',
6137
- key: (datum)=>{
6138
- if (item.alias || item.id) return item.alias || item.id;
6139
- return datum && datum[item.id];
6140
- },
6141
- value: (datum)=>datum && datum[item.id]
6142
- })),
6143
- {
6144
- visible: true,
6145
- hasShape: true,
6146
- key: (datum)=>datum && datum[measureName || colorName] || '',
6147
- value: (datum)=>{
6148
- if (!datum) return '';
6149
- const value = datum[measureValue];
6150
- const id = datum[measureId];
6151
- const measure = findMeasureById(measures, id);
6152
- if (!measure) return String(value);
6153
- const { format = {}, autoFormat = true } = measure;
6154
- if (!external_remeda_isEmpty(format)) {
6155
- const formatter = createFormatter(format);
6156
- return formatter(value);
6157
- }
6158
- if (autoFormat) return autoFormatter(value, locale);
6159
- return String(value);
6160
- }
6161
- }
6162
- ]
6448
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo)
6163
6449
  },
6164
6450
  dimension: {
6165
- content: [
6166
- {
6167
- visible: true,
6168
- key: (datum)=>datum && datum[colorName] || '',
6169
- value: (datum)=>{
6170
- if (!datum) return '';
6171
- const value = datum[measureValue];
6172
- const id = datum[measureId];
6173
- const measure = findMeasureById(measures, id);
6174
- if (!measure) return String(value);
6175
- const { format = {}, autoFormat = true } = measure;
6176
- if (!external_remeda_isEmpty(format)) {
6177
- const formatter = createFormatter(format);
6178
- return formatter(value);
6179
- }
6180
- if (autoFormat) return autoFormatter(value, locale);
6181
- return String(value);
6182
- },
6183
- shapeType: 'rectRound'
6184
- }
6185
- ]
6451
+ title: {
6452
+ visible: true
6453
+ },
6454
+ content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale)
6186
6455
  }
6187
6456
  };
6188
6457
  return result;
@@ -6192,7 +6461,7 @@ const tooltipSecondary = (spec, context)=>{
6192
6461
  ...spec
6193
6462
  };
6194
6463
  const { advancedVSeed } = context;
6195
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
6464
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6196
6465
  const baseConfig = advancedVSeed.config[chartType];
6197
6466
  const { tooltip = {
6198
6467
  enable: true
@@ -6201,68 +6470,19 @@ const tooltipSecondary = (spec, context)=>{
6201
6470
  if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
6202
6471
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6203
6472
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6204
- const { measureId, measureValue, measureName } = foldInfoList[1];
6205
- const { encodingColorId } = unfoldInfo;
6206
6473
  result.tooltip = {
6207
6474
  visible: enable,
6208
6475
  mark: {
6209
6476
  title: {
6210
- visible: true
6477
+ visible: false
6211
6478
  },
6212
- content: [
6213
- ...dimensions.map((item)=>({
6214
- visible: true,
6215
- hasShape: true,
6216
- shapeType: 'rectRound',
6217
- key: (datum)=>{
6218
- if (item.alias || item.id) return item.alias || item.id;
6219
- return datum && datum[item.id];
6220
- },
6221
- value: (datum)=>datum && datum[item.id]
6222
- })),
6223
- {
6224
- visible: true,
6225
- hasShape: true,
6226
- key: (datum)=>datum && datum[measureName || encodingColorId] || '',
6227
- value: (datum)=>{
6228
- if (!datum) return '';
6229
- const value = datum[measureValue];
6230
- const id = datum[measureId];
6231
- const measure = findMeasureById(measures, id);
6232
- if (!measure) return String(value);
6233
- const { format = {}, autoFormat = true } = measure;
6234
- if (!external_remeda_isEmpty(format)) {
6235
- const formatter = createFormatter(format);
6236
- return formatter(value);
6237
- }
6238
- if (autoFormat) return autoFormatter(value, locale);
6239
- return String(value);
6240
- }
6241
- }
6242
- ]
6479
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo)
6243
6480
  },
6244
6481
  dimension: {
6245
- content: [
6246
- {
6247
- visible: true,
6248
- key: (datum)=>datum && datum[encodingColorId] || '',
6249
- value: (datum)=>{
6250
- if (!datum) return '';
6251
- const value = datum[measureValue];
6252
- const id = datum[measureId];
6253
- const measure = findMeasureById(measures, id);
6254
- if (!measure) return String(value);
6255
- const { format = {}, autoFormat = true } = measure;
6256
- if (!external_remeda_isEmpty(format)) {
6257
- const formatter = createFormatter(format);
6258
- return formatter(value);
6259
- }
6260
- if (autoFormat) return autoFormatter(value, locale);
6261
- return String(value);
6262
- },
6263
- shapeType: 'rectRound'
6264
- }
6265
- ]
6482
+ title: {
6483
+ visible: true
6484
+ },
6485
+ content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale)
6266
6486
  }
6267
6487
  };
6268
6488
  return result;
@@ -6279,7 +6499,8 @@ const yLinearPrimary = (spec, context)=>{
6279
6499
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
6280
6500
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6281
6501
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6282
- if (foldInfoList?.[0] && external_remeda_isEmpty(foldInfoList[0].foldMap)) return result;
6502
+ if (isNullish(foldInfoList?.[0])) return result;
6503
+ const isEmptySecondary = external_remeda_isEmpty(foldInfoList?.[0].foldMap);
6283
6504
  const id = `${reshapeInfoId}-primary-axis`;
6284
6505
  const seriesIds = [
6285
6506
  `${reshapeInfoId}-primary-series`,
@@ -6302,7 +6523,7 @@ const yLinearPrimary = (spec, context)=>{
6302
6523
  }
6303
6524
  const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
6304
6525
  const linearAxis = {
6305
- visible,
6526
+ visible: isEmptySecondary ? false : visible,
6306
6527
  id,
6307
6528
  seriesId,
6308
6529
  type: log ? 'log' : 'linear',
@@ -6355,7 +6576,7 @@ const yLinearPrimary = (spec, context)=>{
6355
6576
  }
6356
6577
  },
6357
6578
  innerOffset: {
6358
- top: LINEAR_AXIS_INNER_OFFSET_TOP
6579
+ top: 7
6359
6580
  }
6360
6581
  };
6361
6582
  result.axes = [
@@ -6377,6 +6598,8 @@ const yLinearSecondary = (spec, context)=>{
6377
6598
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6378
6599
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6379
6600
  if (isNullish(foldInfoList?.[1])) return result;
6601
+ const isEmptySecondary = external_remeda_isEmpty(foldInfoList?.[1].foldMap);
6602
+ const onlySecondary = external_remeda_isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary;
6380
6603
  const sync = {
6381
6604
  axisId: `${reshapeInfoId}-primary-axis`,
6382
6605
  zeroAlign: true
@@ -6404,7 +6627,7 @@ const yLinearSecondary = (spec, context)=>{
6404
6627
  }
6405
6628
  const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
6406
6629
  const linearAxis = {
6407
- visible,
6630
+ visible: isEmptySecondary ? false : visible,
6408
6631
  id,
6409
6632
  seriesId,
6410
6633
  sync,
@@ -6444,7 +6667,7 @@ const yLinearSecondary = (spec, context)=>{
6444
6667
  }
6445
6668
  },
6446
6669
  grid: {
6447
- visible: grid?.visible,
6670
+ visible: onlySecondary ? true : grid?.visible,
6448
6671
  style: {
6449
6672
  lineWidth: grid?.gridWidth,
6450
6673
  stroke: grid?.gridColor
@@ -6458,7 +6681,7 @@ const yLinearSecondary = (spec, context)=>{
6458
6681
  }
6459
6682
  },
6460
6683
  innerOffset: {
6461
- top: LINEAR_AXIS_INNER_OFFSET_TOP
6684
+ top: 7
6462
6685
  }
6463
6686
  };
6464
6687
  result.axes = [
@@ -6589,6 +6812,17 @@ const registerDualAxis = ()=>{
6589
6812
  Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6590
6813
  Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6591
6814
  };
6815
+ const defaultEncodingForPie = (advancedVSeed)=>{
6816
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6817
+ const measures = findAllMeasures(vseedMeasures);
6818
+ const encoding = {};
6819
+ pie_generateDefaultDimensionEncoding(dimensions, encoding);
6820
+ pie_generateDefaultMeasureEncoding(measures, encoding);
6821
+ return {
6822
+ ...advancedVSeed,
6823
+ encoding
6824
+ };
6825
+ };
6592
6826
  const encodingForPie = (advancedVSeed)=>{
6593
6827
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6594
6828
  const measures = findAllMeasures(vseedMeasures);
@@ -6604,40 +6838,52 @@ const encodingForPie = (advancedVSeed)=>{
6604
6838
  encoding
6605
6839
  };
6606
6840
  };
6607
- const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
6608
- encoding.tooltip = unique(measures.map((item)=>item.id));
6609
- encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6610
- };
6611
6841
  const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6612
6842
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
6613
6843
  encoding.color = uniqueDimIds.slice(0);
6614
6844
  encoding.detail = uniqueDimIds.slice(0);
6615
- encoding.tooltip = uniqueDimIds;
6845
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
6616
6846
  encoding.label = [];
6617
6847
  encoding.row = [];
6618
6848
  encoding.column = [];
6619
6849
  };
6620
- const pie_generateMeasureEncoding = (measures, encoding)=>{
6621
- encoding.tooltip = measures.map((item)=>item.id);
6622
- encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6623
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6624
- if (color.length > 0) encoding.color = color;
6625
- };
6626
6850
  const pie_generateDimensionEncoding = (dimensions, encoding)=>{
6627
6851
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6628
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6629
6852
  if (0 === encoding.color.length) encoding.color = [
6630
6853
  MeasureName
6631
6854
  ];
6632
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
6855
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6856
+ if (0 === encoding.detail.length) encoding.detail = [
6857
+ MeasureName
6858
+ ];
6859
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
6860
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
6861
+ };
6862
+ const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
6863
+ encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6864
+ };
6865
+ const pie_generateMeasureEncoding = (measures, encoding)=>{
6866
+ encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6867
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6868
+ if (color.length > 0) encoding.color = color;
6869
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
6870
+ encoding.tooltip = unique([
6871
+ ...encoding.tooltip || [],
6872
+ ...tooltip
6873
+ ]);
6633
6874
  };
6634
6875
  const pieAdvancedPipeline = [
6635
6876
  initAdvancedVSeed_initAdvancedVSeed,
6636
- defaultMeasures_defaultMeasures,
6637
- defaultDimensions,
6638
- defaultMeasureName,
6639
- encodingForPie,
6640
- buildMeasures,
6877
+ default_defaultMeasures_defaultMeasures,
6878
+ defaultDimensions_defaultDimensions,
6879
+ defaultMeasureName_defaultMeasureName,
6880
+ encodingAdapter([
6881
+ defaultEncodingForPie,
6882
+ buildMeasures
6883
+ ], [
6884
+ encodingForPie,
6885
+ buildMeasures
6886
+ ]),
6641
6887
  pivotAdapter([
6642
6888
  reshapeWithEncoding
6643
6889
  ], [
@@ -6753,11 +6999,16 @@ const registerPie = ()=>{
6753
6999
  };
6754
7000
  const donutAdvancedPipeline = [
6755
7001
  initAdvancedVSeed_initAdvancedVSeed,
6756
- defaultMeasures_defaultMeasures,
6757
- defaultDimensions,
6758
- defaultMeasureName,
6759
- buildMeasures,
6760
- encodingForPie,
7002
+ default_defaultMeasures_defaultMeasures,
7003
+ defaultDimensions_defaultDimensions,
7004
+ defaultMeasureName_defaultMeasureName,
7005
+ encodingAdapter([
7006
+ defaultEncodingForPie,
7007
+ buildMeasures
7008
+ ], [
7009
+ encodingForPie,
7010
+ buildMeasures
7011
+ ]),
6761
7012
  pivotAdapter([
6762
7013
  reshapeWithEncoding
6763
7014
  ], [
@@ -6833,6 +7084,17 @@ const registerDonut = ()=>{
6833
7084
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
6834
7085
  Builder._specPipelineMap.donut = donutSpecPipeline;
6835
7086
  };
7087
+ const defaultEncodingForRose = (advancedVSeed)=>{
7088
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7089
+ const measures = findAllMeasures(vseedMeasures);
7090
+ const encoding = {};
7091
+ rose_generateDefaultDimensionEncoding(dimensions, encoding);
7092
+ rose_generateDefaultMeasureEncoding(measures, encoding);
7093
+ return {
7094
+ ...advancedVSeed,
7095
+ encoding
7096
+ };
7097
+ };
6836
7098
  const encodingForRose = (advancedVSeed)=>{
6837
7099
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6838
7100
  const measures = findAllMeasures(vseedMeasures);
@@ -6848,46 +7110,58 @@ const encodingForRose = (advancedVSeed)=>{
6848
7110
  encoding
6849
7111
  };
6850
7112
  };
6851
- const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
6852
- encoding.tooltip = unique(measures.map((item)=>item.id));
6853
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
6854
- };
6855
7113
  const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6856
7114
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
6857
7115
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
6858
7116
  encoding.angle = uniqueDimIds.slice(0, 1);
6859
7117
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
6860
7118
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
6861
- encoding.tooltip = uniqueDimIds;
7119
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
6862
7120
  encoding.label = [];
6863
7121
  encoding.row = [];
6864
7122
  encoding.column = [];
6865
7123
  };
6866
- const rose_generateMeasureEncoding = (measures, encoding)=>{
6867
- encoding.tooltip = measures.map((item)=>item.id);
6868
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
6869
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6870
- if (color.length > 0) encoding.color = color;
6871
- };
6872
7124
  const rose_generateDimensionEncoding = (dimensions, encoding)=>{
6873
7125
  encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
6874
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6875
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6876
7126
  if (0 === encoding.angle.length) encoding.angle = [
6877
7127
  dimensions[0].id
6878
7128
  ];
7129
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6879
7130
  if (0 === encoding.color.length) encoding.color = [
6880
7131
  MeasureName
6881
7132
  ];
6882
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7133
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7134
+ if (0 === encoding.detail.length) encoding.detail = [
7135
+ MeasureName
7136
+ ];
7137
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
7138
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7139
+ };
7140
+ const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
7141
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7142
+ };
7143
+ const rose_generateMeasureEncoding = (measures, encoding)=>{
7144
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7145
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7146
+ if (color.length > 0) encoding.color = color;
7147
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7148
+ encoding.tooltip = unique([
7149
+ ...encoding.tooltip || [],
7150
+ ...tooltip
7151
+ ]);
6883
7152
  };
6884
7153
  const roseAdvancedPipeline = [
6885
7154
  initAdvancedVSeed_initAdvancedVSeed,
6886
- defaultMeasures_defaultMeasures,
6887
- defaultDimensions,
6888
- defaultMeasureName,
6889
- encodingForRose,
6890
- buildMeasures,
7155
+ default_defaultMeasures_defaultMeasures,
7156
+ defaultDimensions_defaultDimensions,
7157
+ defaultMeasureName_defaultMeasureName,
7158
+ encodingAdapter([
7159
+ defaultEncodingForRose,
7160
+ buildMeasures
7161
+ ], [
7162
+ encodingForRose,
7163
+ buildMeasures
7164
+ ]),
6891
7165
  pivotAdapter([
6892
7166
  reshapeWithEncoding
6893
7167
  ], [
@@ -7083,11 +7357,16 @@ const registerRose = ()=>{
7083
7357
  };
7084
7358
  const roseParallelAdvancedPipeline = [
7085
7359
  initAdvancedVSeed_initAdvancedVSeed,
7086
- defaultMeasures_defaultMeasures,
7087
- defaultDimensions,
7088
- defaultMeasureName,
7089
- encodingForRose,
7090
- buildMeasures,
7360
+ default_defaultMeasures_defaultMeasures,
7361
+ defaultDimensions_defaultDimensions,
7362
+ defaultMeasureName_defaultMeasureName,
7363
+ encodingAdapter([
7364
+ defaultEncodingForRose,
7365
+ buildMeasures
7366
+ ], [
7367
+ encodingForRose,
7368
+ buildMeasures
7369
+ ]),
7091
7370
  pivotAdapter([
7092
7371
  reshapeWithEncoding
7093
7372
  ], [
@@ -7193,6 +7472,17 @@ const registerRoseParallel = ()=>{
7193
7472
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7194
7473
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7195
7474
  };
7475
+ const defaultEncodingForRadar = (advancedVSeed)=>{
7476
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7477
+ const measures = findAllMeasures(vseedMeasures);
7478
+ const encoding = {};
7479
+ radar_generateDefaultDimensionEncoding(dimensions, encoding);
7480
+ radar_generateDefaultMeasureEncoding(measures, encoding);
7481
+ return {
7482
+ ...advancedVSeed,
7483
+ encoding
7484
+ };
7485
+ };
7196
7486
  const encodingForRadar = (advancedVSeed)=>{
7197
7487
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7198
7488
  const measures = findAllMeasures(vseedMeasures);
@@ -7208,44 +7498,57 @@ const encodingForRadar = (advancedVSeed)=>{
7208
7498
  encoding
7209
7499
  };
7210
7500
  };
7211
- const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7212
- encoding.tooltip = unique(measures.map((item)=>item.id));
7213
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7214
- };
7215
7501
  const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7216
7502
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
7217
7503
  encoding.angle = uniqueDimIds.slice(0, 1);
7218
7504
  encoding.color = uniqueDimIds.slice(1);
7219
- encoding.tooltip = uniqueDimIds;
7505
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7220
7506
  encoding.detail = [];
7221
7507
  encoding.label = [];
7222
7508
  encoding.row = [];
7223
7509
  encoding.column = [];
7224
7510
  };
7225
- const radar_generateMeasureEncoding = (measures, encoding)=>{
7226
- encoding.tooltip = measures.map((item)=>item.id);
7227
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7228
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7229
- if (color.length > 0) encoding.color = color;
7230
- };
7231
7511
  const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7232
7512
  encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7233
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7234
- encoding.detail = [];
7235
7513
  if (0 === encoding.angle.length) encoding.angle = [
7236
7514
  dimensions[0].id
7237
7515
  ];
7516
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7238
7517
  if (0 === encoding.color.length) encoding.color = [
7239
7518
  MeasureName
7240
7519
  ];
7520
+ encoding.detail = [];
7521
+ if (0 === encoding.detail.length) encoding.detail = [
7522
+ MeasureName
7523
+ ];
7524
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
7525
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7526
+ };
7527
+ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7528
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7529
+ };
7530
+ const radar_generateMeasureEncoding = (measures, encoding)=>{
7531
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7532
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7533
+ if (color.length > 0) encoding.color = color;
7534
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7535
+ encoding.tooltip = unique([
7536
+ ...encoding.tooltip || [],
7537
+ ...tooltip
7538
+ ]);
7241
7539
  };
7242
7540
  const radarAdvancedPipeline = [
7243
7541
  initAdvancedVSeed_initAdvancedVSeed,
7244
- defaultMeasures_defaultMeasures,
7245
- defaultDimensions,
7246
- defaultMeasureName,
7247
- encodingForRadar,
7248
- buildMeasures,
7542
+ default_defaultMeasures_defaultMeasures,
7543
+ defaultDimensions_defaultDimensions,
7544
+ defaultMeasureName_defaultMeasureName,
7545
+ encodingAdapter([
7546
+ defaultEncodingForRadar,
7547
+ buildMeasures
7548
+ ], [
7549
+ encodingForRadar,
7550
+ buildMeasures
7551
+ ]),
7249
7552
  pivotAdapter([
7250
7553
  reshapeWithEncoding
7251
7554
  ], [
@@ -7379,6 +7682,17 @@ const registerRadar = ()=>{
7379
7682
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7380
7683
  Builder._specPipelineMap.radar = radarSpecPipeline;
7381
7684
  };
7685
+ const defaultEncodingForFunnel = (advancedVSeed)=>{
7686
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7687
+ const measures = findAllMeasures(vseedMeasures);
7688
+ const encoding = {};
7689
+ funnel_generateDefaultDimensionEncoding(dimensions, encoding);
7690
+ funnel_generateDefaultMeasureEncoding(measures, encoding);
7691
+ return {
7692
+ ...advancedVSeed,
7693
+ encoding
7694
+ };
7695
+ };
7382
7696
  const encodingForFunnel = (advancedVSeed)=>{
7383
7697
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7384
7698
  const measures = findAllMeasures(vseedMeasures);
@@ -7394,40 +7708,54 @@ const encodingForFunnel = (advancedVSeed)=>{
7394
7708
  encoding
7395
7709
  };
7396
7710
  };
7397
- const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7398
- encoding.tooltip = unique(measures.map((item)=>item.id));
7399
- encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7400
- };
7401
7711
  const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7402
7712
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
7403
7713
  encoding.color = uniqueDimIds.slice(0);
7404
7714
  encoding.detail = uniqueDimIds.slice(0);
7405
- encoding.tooltip = uniqueDimIds;
7715
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7406
7716
  encoding.label = [];
7407
7717
  encoding.row = [];
7408
7718
  encoding.column = [];
7409
7719
  };
7410
- const funnel_generateMeasureEncoding = (measures, encoding)=>{
7411
- encoding.tooltip = measures.map((item)=>item.id);
7412
- encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7413
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7414
- if (color.length > 0) encoding.color = color;
7415
- };
7416
7720
  const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7417
7721
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7418
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7419
7722
  if (0 === encoding.color.length) encoding.color = [
7420
7723
  MeasureName
7421
7724
  ];
7422
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7725
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7726
+ if (0 === encoding.detail.length) encoding.detail = [
7727
+ MeasureName
7728
+ ];
7729
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
7730
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7731
+ };
7732
+ const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7733
+ encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7734
+ };
7735
+ const funnel_generateMeasureEncoding = (measures, encoding)=>{
7736
+ encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7737
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7738
+ if (color.length > 0) encoding.color = [
7739
+ color[0]
7740
+ ];
7741
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7742
+ encoding.tooltip = unique([
7743
+ ...encoding.tooltip || [],
7744
+ ...tooltip
7745
+ ]);
7423
7746
  };
7424
7747
  const funnelAdvancedPipeline = [
7425
7748
  initAdvancedVSeed_initAdvancedVSeed,
7426
- defaultMeasures_defaultMeasures,
7427
- defaultDimensions,
7428
- defaultMeasureName,
7429
- encodingForFunnel,
7430
- buildMeasures,
7749
+ default_defaultMeasures_defaultMeasures,
7750
+ defaultDimensions_defaultDimensions,
7751
+ defaultMeasureName_defaultMeasureName,
7752
+ encodingAdapter([
7753
+ defaultEncodingForFunnel,
7754
+ buildMeasures
7755
+ ], [
7756
+ encodingForFunnel,
7757
+ buildMeasures
7758
+ ]),
7431
7759
  pivotAdapter([
7432
7760
  reshapeWithEncoding
7433
7761
  ], [
@@ -7540,6 +7868,17 @@ const registerFunnel = ()=>{
7540
7868
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7541
7869
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7542
7870
  };
7871
+ const defaultEncodingForHeatmap = (advancedVSeed)=>{
7872
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7873
+ const measures = findAllMeasures(vseedMeasures);
7874
+ const encoding = {};
7875
+ heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
7876
+ heatmap_generateDefaultMeasureEncoding(measures, encoding);
7877
+ return {
7878
+ ...advancedVSeed,
7879
+ encoding
7880
+ };
7881
+ };
7543
7882
  const encodingForHeatmap = (advancedVSeed)=>{
7544
7883
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7545
7884
  const measures = findAllMeasures(vseedMeasures);
@@ -7555,10 +7894,6 @@ const encodingForHeatmap = (advancedVSeed)=>{
7555
7894
  encoding
7556
7895
  };
7557
7896
  };
7558
- const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
7559
- encoding.tooltip = unique(measures.map((item)=>item.id));
7560
- encoding.color = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
7561
- };
7562
7897
  const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7563
7898
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7564
7899
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
@@ -7566,39 +7901,59 @@ const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7566
7901
  encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7567
7902
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7568
7903
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7569
- encoding.tooltip = uniqueDimIds;
7904
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7570
7905
  encoding.label = [];
7571
7906
  encoding.row = [];
7572
7907
  encoding.column = [];
7573
7908
  };
7574
- const heatmap_generateMeasureEncoding = (measures, encoding)=>{
7575
- encoding.tooltip = measures.map((item)=>item.id);
7576
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7577
- if (color.length > 0) encoding.color = color;
7578
- return encoding;
7579
- };
7580
7909
  const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7581
7910
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
7582
- encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
7583
- encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7584
- encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7585
7911
  if (0 === encoding.x.length) encoding.x = [
7586
7912
  dimensions[0].id
7587
7913
  ];
7914
+ encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
7588
7915
  if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
7589
7916
  else encoding.y = dimensions.slice(0).map((item)=>item.id);
7917
+ encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7590
7918
  if (0 === encoding.color.length) encoding.color = [
7591
7919
  MeasureName
7592
7920
  ];
7593
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7921
+ encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7922
+ if (0 === encoding.detail.length) encoding.detail = [
7923
+ MeasureName
7924
+ ];
7925
+ encoding.tooltip = unique(dimensions.map((item)=>item.id));
7926
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7927
+ };
7928
+ const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
7929
+ const colorDims = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
7930
+ if (colorDims.length > 0) encoding.color = [
7931
+ colorDims[0]
7932
+ ];
7933
+ };
7934
+ const heatmap_generateMeasureEncoding = (measures, encoding)=>{
7935
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7936
+ if (color.length > 0) encoding.color = [
7937
+ color[0]
7938
+ ];
7939
+ const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7940
+ encoding.tooltip = unique([
7941
+ ...encoding.tooltip || [],
7942
+ ...tooltip
7943
+ ]);
7594
7944
  };
7595
7945
  const heatmapAdvancedPipeline = [
7596
7946
  initAdvancedVSeed_initAdvancedVSeed,
7597
- defaultMeasures_defaultMeasures,
7598
- defaultDimensions,
7599
- defaultMeasureName,
7600
- encodingForHeatmap,
7601
- buildMeasures,
7947
+ default_defaultMeasures_defaultMeasures,
7948
+ defaultDimensions_defaultDimensions,
7949
+ defaultMeasureName_defaultMeasureName,
7950
+ encodingAdapter([
7951
+ defaultEncodingForHeatmap,
7952
+ buildMeasures
7953
+ ], [
7954
+ encodingForHeatmap,
7955
+ buildMeasures
7956
+ ]),
7602
7957
  pivotAdapter([
7603
7958
  reshapeWithEncoding
7604
7959
  ], [
@@ -7651,6 +8006,107 @@ const cellStyle = (spec)=>{
7651
8006
  }
7652
8007
  };
7653
8008
  };
8009
+ const tooltipHeatmap = (spec, context)=>{
8010
+ const result = {
8011
+ ...spec
8012
+ };
8013
+ const { advancedVSeed } = context;
8014
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8015
+ const baseConfig = advancedVSeed.config[chartType];
8016
+ const { tooltip = {
8017
+ enable: true
8018
+ } } = baseConfig;
8019
+ const { enable } = tooltip;
8020
+ const { foldInfo } = datasetReshapeInfo[0];
8021
+ result.tooltip = {
8022
+ visible: enable,
8023
+ mark: {
8024
+ title: {
8025
+ visible: false
8026
+ },
8027
+ content: tooltipHeatmap_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo)
8028
+ },
8029
+ dimension: {
8030
+ visible: false
8031
+ }
8032
+ };
8033
+ return result;
8034
+ };
8035
+ const tooltipHeatmap_createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
8036
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
8037
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
8038
+ const dimContent = dims.map((item)=>({
8039
+ visible: true,
8040
+ hasShape: true,
8041
+ shapeType: 'rectRound',
8042
+ key: (v)=>{
8043
+ const datum = v;
8044
+ if (item.alias || item.id) return item.alias || item.id;
8045
+ return datum && datum[item.id];
8046
+ },
8047
+ value: (v)=>{
8048
+ const datum = v;
8049
+ return datum && datum[item.id];
8050
+ }
8051
+ }));
8052
+ const meaContent = meas.map((item)=>({
8053
+ visible: true,
8054
+ hasShape: true,
8055
+ shapeType: 'rectRound',
8056
+ key: item.alias || item.id,
8057
+ value: (v)=>{
8058
+ const datum = v;
8059
+ if (!datum) return '';
8060
+ const id = item.id;
8061
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
8062
+ const originalData = datum[ORIGINAL_DATA];
8063
+ const value = originalData[id];
8064
+ const measure = findMeasureById(measures, id);
8065
+ if (!measure) return String(value);
8066
+ const { format = {}, autoFormat = true } = measure;
8067
+ if (!external_remeda_isEmpty(format)) {
8068
+ const formatter = createFormatter(format);
8069
+ return formatter(value);
8070
+ }
8071
+ if (autoFormat) return autoFormatter(value, locale);
8072
+ return String(value);
8073
+ }
8074
+ }));
8075
+ const foldMeaContent = [
8076
+ foldInfo
8077
+ ].map((foldInfo)=>({
8078
+ visible: true,
8079
+ hasShape: true,
8080
+ shapeType: 'rectRound',
8081
+ key: (v)=>{
8082
+ const { measureId, foldMap } = foldInfo;
8083
+ const datum = v;
8084
+ const id = datum[measureId];
8085
+ return foldMap[id] || id;
8086
+ },
8087
+ value: (v)=>{
8088
+ const { measureId, measureValue } = foldInfo;
8089
+ const datum = v;
8090
+ if (!datum) return '';
8091
+ const value = datum[measureValue];
8092
+ const id = datum[measureId];
8093
+ const measure = findMeasureById(measures, id);
8094
+ if (!measure) return String(value);
8095
+ const { format = {}, autoFormat = true } = measure;
8096
+ if (!external_remeda_isEmpty(format)) {
8097
+ const formatter = createFormatter(format);
8098
+ return formatter(value);
8099
+ }
8100
+ if (autoFormat) return autoFormatter(value, locale);
8101
+ return String(value);
8102
+ }
8103
+ }));
8104
+ return [
8105
+ ...dimContent,
8106
+ ...foldMeaContent,
8107
+ ...meaContent
8108
+ ];
8109
+ };
7654
8110
  const initHeatmap = (spec, context)=>{
7655
8111
  const result = {
7656
8112
  ...spec
@@ -7694,7 +8150,7 @@ const heatmap = [
7694
8150
  labelColorInversion,
7695
8151
  colorAdapter(discreteLegend, colorLegend),
7696
8152
  colorCellStyleFill(cellStyle),
7697
- tooltip_tooltip,
8153
+ tooltipHeatmap,
7698
8154
  annotationPoint_annotationPoint,
7699
8155
  annotationVerticalLine_annotationVerticalLine,
7700
8156
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7713,7 +8169,7 @@ const pivotHeatmap = [
7713
8169
  label_label,
7714
8170
  labelColorInversion,
7715
8171
  discreteLegend,
7716
- tooltip_tooltip,
8172
+ tooltipHeatmap,
7717
8173
  colorCellStyleFill(cellStyle),
7718
8174
  annotationPoint_annotationPoint,
7719
8175
  annotationVerticalLine_annotationVerticalLine,
@@ -8392,6 +8848,15 @@ const updateAdvanced = (chartType, advancedPipe)=>{
8392
8848
  const updateSpec = (chartType, specPipe)=>{
8393
8849
  Builder._customSpecPipe[chartType] = specPipe;
8394
8850
  };
8851
+ const findAllDimensions = (dimensions = [])=>{
8852
+ if (!dimensions) return [];
8853
+ const result = [];
8854
+ preorderTraverse(dimensions, (node)=>{
8855
+ if (!('children' in node)) result.push(node);
8856
+ return false;
8857
+ });
8858
+ return result;
8859
+ };
8395
8860
  const zChartType = z["enum"]([
8396
8861
  'table',
8397
8862
  'pivotTable',
@@ -8435,11 +8900,6 @@ const zDataset = z.array(zDatum);
8435
8900
  const zDimension = z.object({
8436
8901
  id: z.string(),
8437
8902
  alias: z.string().optional(),
8438
- location: z["enum"]([
8439
- 'dimension',
8440
- 'rowDimension',
8441
- 'columnDimension'
8442
- ]).default('dimension'),
8443
8903
  encoding: z["enum"]([
8444
8904
  'xAxis',
8445
8905
  'yAxis',
@@ -9722,6 +10182,7 @@ const zAdvancedVSeed = z.object({
9722
10182
  annotation: zAnnotation,
9723
10183
  locale: zLocale
9724
10184
  });
9725
- export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis };
10185
+ var __webpack_exports__Separator = "-";
10186
+ export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureId, FoldXMeasureValue, FoldYMeasureId, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis, __webpack_exports__Separator as Separator };
9726
10187
 
9727
10188
  //# sourceMappingURL=index.js.map