@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.cjs CHANGED
@@ -56,7 +56,7 @@ __webpack_require__.d(__webpack_exports__, {
56
56
  zYLinearAxis: ()=>zYLinearAxis,
57
57
  zMarkStyle: ()=>zMarkStyle,
58
58
  registerFunnel: ()=>registerFunnel,
59
- Separator: ()=>Separator,
59
+ Separator: ()=>"-",
60
60
  columnAdvancedPipeline: ()=>columnAdvancedPipeline,
61
61
  zLabel: ()=>zLabel,
62
62
  registerColumn: ()=>registerColumn,
@@ -85,12 +85,13 @@ __webpack_require__.d(__webpack_exports__, {
85
85
  FoldMeasureId: ()=>FoldMeasureId,
86
86
  zColumnParallelConfig: ()=>zColumnParallelConfig,
87
87
  donutSpecPipeline: ()=>donutSpecPipeline,
88
+ FoldXMeasureId: ()=>FoldXMeasureId,
88
89
  registerAreaPercent: ()=>registerAreaPercent,
89
- zHeatmap: ()=>zHeatmap,
90
90
  zBarPercent: ()=>zBarPercent,
91
+ zHeatmap: ()=>zHeatmap,
91
92
  zScatterMeasure: ()=>zScatterMeasure,
92
- zTheme: ()=>zTheme,
93
93
  zDatum: ()=>zDatum,
94
+ zTheme: ()=>zTheme,
94
95
  barAdvancedPipeline: ()=>barAdvancedPipeline,
95
96
  zCustomThemeConfig: ()=>zCustomThemeConfig,
96
97
  registerColumnPercent: ()=>registerColumnPercent,
@@ -180,6 +181,7 @@ __webpack_require__.d(__webpack_exports__, {
180
181
  zTableConfig: ()=>zTableConfig,
181
182
  zXBandAxis: ()=>zXBandAxis,
182
183
  zColumnPercentConfig: ()=>zColumnPercentConfig,
184
+ FoldYMeasureId: ()=>FoldYMeasureId,
183
185
  findMeasureById: ()=>findMeasureById,
184
186
  zVSeed: ()=>zVSeed,
185
187
  AngleEncoding: ()=>AngleEncoding,
@@ -402,33 +404,35 @@ const initAdvancedVSeed = (advancedVSeed, context)=>{
402
404
  locale: locale || 'zh-CN'
403
405
  };
404
406
  };
405
- const autoMeasures = (advancedVSeed, context)=>{
406
- const result = {
407
- ...advancedVSeed
408
- };
407
+ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
409
408
  const { vseed } = context;
410
409
  const { measures, dataset } = vseed;
410
+ if (measures && measures.length > 0) return {
411
+ ...advancedVSeed,
412
+ measures
413
+ };
411
414
  if (!dataset) throw new Error('dataset is required');
412
- if (0 === dataset.length) return result;
413
- if (measures) {
414
- result.measures = measures;
415
- return result;
416
- }
415
+ if (0 === dataset.length) return {
416
+ ...advancedVSeed,
417
+ measures: []
418
+ };
417
419
  const top100dataset = dataset.slice(0, 100);
418
420
  const sample = top100dataset.reduce((prev, cur)=>({
419
421
  ...prev,
420
422
  ...cur
421
423
  }), {});
422
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
424
+ const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
423
425
  '',
424
426
  null,
425
427
  void 0
426
428
  ].includes(key)).map((measure)=>({
427
429
  id: measure,
428
- alias: measure,
429
- encoding: 'column'
430
+ alias: measure
430
431
  }));
431
- return result;
432
+ return {
433
+ ...advancedVSeed,
434
+ measures: defaultMeasures
435
+ };
432
436
  };
433
437
  const preorderTraverse = (tree, callback)=>{
434
438
  if (!tree || 0 === tree.length) return;
@@ -482,37 +486,36 @@ const findAllMeasures = (measures = [])=>{
482
486
  });
483
487
  return result;
484
488
  };
485
- const autoDimensions = (advancedVSeed, context)=>{
489
+ const defaultDimensions = (advancedVSeed, context)=>{
486
490
  const result = {
487
491
  ...advancedVSeed
488
492
  };
489
493
  const { vseed } = context;
490
494
  const { dimensions, dataset } = vseed;
491
- const measures = findAllMeasures(advancedVSeed.measures);
495
+ if (dimensions && dimensions.length > 0) return {
496
+ ...result,
497
+ dimensions
498
+ };
492
499
  if (!dataset) throw new Error('dataset is required');
493
500
  if (0 === dataset.length) return result;
494
- if (dimensions) {
495
- result.dimensions = dimensions.map((dim)=>({
496
- location: 'dimension',
497
- ...dim
498
- }));
499
- return result;
500
- }
501
+ const measures = findAllMeasures(advancedVSeed.measures);
501
502
  const top100dataset = dataset.slice(0, 100);
502
503
  const sample = top100dataset.reduce((prev, cur)=>({
503
504
  ...prev,
504
505
  ...cur
505
506
  }), {});
506
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
507
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
507
508
  '',
508
509
  null,
509
510
  void 0
510
511
  ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
511
512
  id: dim,
512
- alias: dim,
513
- encoding: 'column'
513
+ alias: dim
514
514
  }));
515
- return result;
515
+ return {
516
+ ...result,
517
+ dimensions: newDimensions
518
+ };
516
519
  };
517
520
  const records_records = (advancedVSeed, context)=>{
518
521
  const { vseed } = context;
@@ -584,8 +587,8 @@ const mergeArray = (arr, themeItem)=>{
584
587
  };
585
588
  const tableAdvancedPipeline = [
586
589
  initAdvancedVSeed,
587
- autoMeasures,
588
- autoDimensions,
590
+ defaultMeasures_defaultMeasures,
591
+ defaultDimensions,
589
592
  records_records,
590
593
  tableConfig_tableConfig,
591
594
  theme_theme
@@ -806,9 +809,9 @@ const bodyStyle = (spec, context)=>{
806
809
  borderColor: borderColor,
807
810
  borderLineWidth: 1,
808
811
  padding: [
809
- 8.6,
812
+ 8,
810
813
  12,
811
- 8.6,
814
+ 8,
812
815
  12
813
816
  ],
814
817
  textAlign: 'right',
@@ -921,37 +924,7 @@ const registerTable = ()=>{
921
924
  Builder._advancedPipelineMap.table = tableAdvancedPipeline;
922
925
  Builder._specPipelineMap.table = tableSpecPipeline;
923
926
  };
924
- const autoPivotMeasures = (advancedVSeed, context)=>{
925
- const result = {
926
- ...advancedVSeed
927
- };
928
- const { vseed } = context;
929
- const { dataset } = vseed;
930
- const measures = findAllMeasures(vseed.measures);
931
- if (!dataset) throw new Error('dataset is required');
932
- if (0 === dataset.length) return result;
933
- if (vseed.measures) {
934
- result.measures = findAllMeasures(measures);
935
- return result;
936
- }
937
- const top100dataset = dataset.slice(0, 100);
938
- const sample = top100dataset.reduce((prev, cur)=>({
939
- ...prev,
940
- ...cur
941
- }), {});
942
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
943
- '',
944
- null,
945
- void 0
946
- ].includes(key)).map((measure)=>({
947
- id: measure,
948
- alias: measure,
949
- encoding: 'detail'
950
- }));
951
- return result;
952
- };
953
927
  const ORIGINAL_DATA = '__OriginalData__';
954
- const Separator = '-';
955
928
  const FoldMeasureName = '__MeaName__';
956
929
  const FoldMeasureId = '__MeaId__';
957
930
  const FoldMeasureValue = '__MeaValue__';
@@ -960,94 +933,70 @@ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
960
933
  const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
961
934
  const FoldXMeasureValue = '__MeaXValue__';
962
935
  const FoldYMeasureValue = '__MeaYValue__';
936
+ const FoldXMeasureId = '__MeaXId__';
937
+ const FoldYMeasureId = '__MeaYId__';
963
938
  const XEncoding = '__Dim_X__';
964
939
  const YEncoding = '__Dim_Y__';
965
940
  const AngleEncoding = '__Dim_Angle__';
966
941
  const DetailEncoding = '__Dim_Detail__';
967
942
  const ColorEncoding = '__Dim_Color__';
968
943
  const ColorIdEncoding = '__Dim_ColorId__';
969
- const findAllDimensions = (dimensions = [])=>{
970
- if (!dimensions) return [];
971
- const result = [];
972
- preorderTraverse(dimensions, (node)=>{
973
- if (!('children' in node)) result.push(node);
974
- return false;
975
- });
976
- return result;
977
- };
978
- const autoPivotDimensions = (advancedVSeed, context)=>{
944
+ const defaultMeasureName = (advancedVSeed)=>{
979
945
  const result = {
980
946
  ...advancedVSeed
981
947
  };
982
- const { vseed } = context;
983
- const { dimensions, dataset } = vseed;
984
- const measures = findAllMeasures(advancedVSeed.measures);
985
948
  const MeaName = {
986
949
  id: MeasureName,
987
950
  alias: intl.i18n`指标名称`
988
951
  };
989
- if (!dataset) throw new Error('dataset is required');
990
- if (0 === dataset.length) return result;
991
- if (dimensions) {
992
- const newDimensions = findAllDimensions(dimensions);
993
- if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
994
- result.dimensions = newDimensions.map((item, index)=>{
995
- if ('row' === item.encoding || 'column' === item.encoding) return item;
996
- if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
997
- return {
998
- ...item,
999
- encoding: index % 2 === 0 ? 'column' : 'row'
1000
- };
1001
- });
1002
- return result;
1003
- }
1004
- const top100dataset = dataset.slice(0, 100);
1005
- const sample = top100dataset.reduce((prev, cur)=>({
1006
- ...prev,
1007
- ...cur
1008
- }), {});
1009
- const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1010
- '',
1011
- null,
1012
- void 0
1013
- ].includes(key) && !measures.some((measure)=>measure.id === key));
1014
- result.dimensions = newDimensions.map((dim)=>({
1015
- id: dim,
1016
- alias: dim
1017
- }));
1018
- result.dimensions.push(MeaName);
1019
- result.dimensions = result.dimensions.map((dim, index)=>({
1020
- ...dim,
1021
- encoding: index % 2 === 0 ? 'column' : 'row'
1022
- }));
952
+ if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1023
953
  return result;
1024
954
  };
1025
- const pivotTableConfig = (advancedVSeed, context)=>{
1026
- const { vseed } = context;
1027
- const { chartType } = vseed;
1028
- const result = {
1029
- ...advancedVSeed
1030
- };
1031
- const config = (0, external_remeda_namespaceObject.pick)(vseed, [
1032
- 'backgroundColor',
1033
- 'bodyFontSize',
1034
- 'bodyFontColor',
1035
- 'bodyBackgroundColor',
1036
- 'headerFontSize',
1037
- 'headerFontColor',
1038
- 'headerBackgroundColor',
1039
- 'hoverHeaderBackgroundColor',
1040
- 'hoverHeaderInlineBackgroundColor',
1041
- 'selectedBorderColor',
1042
- 'selectedBackgroundColor'
1043
- ]);
1044
- result.config = {
1045
- ...result.config || {},
1046
- [chartType]: {
1047
- ...config
1048
- }
955
+ const encodingForPivotTable = (advancedVSeed)=>{
956
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
957
+ const measures = findAllMeasures(vseedMeasures);
958
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
959
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
960
+ const encoding = {};
961
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
962
+ else generateDefaultDimensionEncoding(dimensions, encoding);
963
+ if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
964
+ else generateDefaultMeasureEncoding(measures, encoding);
965
+ return {
966
+ ...advancedVSeed,
967
+ encoding
1049
968
  };
1050
- return result;
969
+ };
970
+ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
971
+ const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
972
+ encoding.tooltip = uniqueDimIds;
973
+ encoding.row = [];
974
+ encoding.column = [];
975
+ uniqueDimIds.forEach((item, index)=>{
976
+ if (index % 2 === 0) encoding.column.push(item);
977
+ else encoding.row.push(item);
978
+ });
979
+ };
980
+ const generateDimensionEncoding = (dimensions, encoding)=>{
981
+ const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
982
+ encoding.tooltip = uniqueDimIds;
983
+ encoding.row = [];
984
+ encoding.column = [];
985
+ dimensions.forEach((dim, index)=>{
986
+ const id = dim.id;
987
+ if ('row' === dim.encoding) encoding.row.push(id);
988
+ else if ('column' === dim.encoding) encoding.column.push(id);
989
+ else if (index % 2 === 0) encoding.column.push(id);
990
+ else encoding.row.push(id);
991
+ });
992
+ };
993
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
994
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
995
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
996
+ };
997
+ const generateMeasureEncoding = (measures, encoding)=>{
998
+ encoding.tooltip = measures.map((item)=>item.id);
999
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
1051
1000
  };
1052
1001
  const foldMeasures = (dataset, measures, options)=>{
1053
1002
  const { measureId, measureName, measureValue, colorMeasureId } = options || {};
@@ -1127,10 +1076,39 @@ const reshapePivotTable = (advancedVSeed, context)=>{
1127
1076
  measures
1128
1077
  };
1129
1078
  };
1079
+ const pivotTableConfig = (advancedVSeed, context)=>{
1080
+ const { vseed } = context;
1081
+ const { chartType } = vseed;
1082
+ const result = {
1083
+ ...advancedVSeed
1084
+ };
1085
+ const config = (0, external_remeda_namespaceObject.pick)(vseed, [
1086
+ 'backgroundColor',
1087
+ 'bodyFontSize',
1088
+ 'bodyFontColor',
1089
+ 'bodyBackgroundColor',
1090
+ 'headerFontSize',
1091
+ 'headerFontColor',
1092
+ 'headerBackgroundColor',
1093
+ 'hoverHeaderBackgroundColor',
1094
+ 'hoverHeaderInlineBackgroundColor',
1095
+ 'selectedBorderColor',
1096
+ 'selectedBackgroundColor'
1097
+ ]);
1098
+ result.config = {
1099
+ ...result.config || {},
1100
+ [chartType]: {
1101
+ ...config
1102
+ }
1103
+ };
1104
+ return result;
1105
+ };
1130
1106
  const pivotTableAdvancedPipeline = [
1131
1107
  initAdvancedVSeed,
1132
- autoPivotMeasures,
1133
- autoPivotDimensions,
1108
+ defaultMeasures_defaultMeasures,
1109
+ defaultDimensions,
1110
+ defaultMeasureName,
1111
+ encodingForPivotTable,
1134
1112
  reshapePivotTable,
1135
1113
  pivotTableConfig,
1136
1114
  theme_theme
@@ -1177,8 +1155,9 @@ const initPivotTable = (spec, context)=>{
1177
1155
  };
1178
1156
  const pivotColumns = (spec, context)=>{
1179
1157
  const { advancedVSeed } = context;
1158
+ const { encoding } = advancedVSeed;
1180
1159
  const dimensions = advancedVSeed.dimensions;
1181
- const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
1160
+ const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
1182
1161
  return {
1183
1162
  ...spec,
1184
1163
  columns: columns.map((item)=>({
@@ -1191,7 +1170,8 @@ const pivotColumns = (spec, context)=>{
1191
1170
  const pivotRows = (spec, context)=>{
1192
1171
  const { advancedVSeed } = context;
1193
1172
  const dimensions = advancedVSeed.dimensions;
1194
- const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
1173
+ const { encoding } = advancedVSeed;
1174
+ const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
1195
1175
  return {
1196
1176
  ...spec,
1197
1177
  rows: rows.map((item)=>({
@@ -1224,6 +1204,7 @@ const pivotIndicators = (spec, context)=>{
1224
1204
  const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
1225
1205
  if (!(0, external_remeda_namespaceObject.isNumber)(col) || !(0, external_remeda_namespaceObject.isNumber)(row) || !table) return value;
1226
1206
  const datum = table.getCellOriginRecord(col, row);
1207
+ if (!datum[0]) return value;
1227
1208
  const { measureId: foldMeasureId } = foldInfo;
1228
1209
  const measureId = datum[0][foldMeasureId];
1229
1210
  const node = findMeasureById(measures, measureId);
@@ -1253,9 +1234,9 @@ const rowHeaderStyle = (spec, context)=>{
1253
1234
  borderColor: borderColor,
1254
1235
  borderLineWidth: 1,
1255
1236
  padding: [
1256
- 8.6,
1237
+ 8,
1257
1238
  12,
1258
- 8.6,
1239
+ 8,
1259
1240
  12
1260
1241
  ],
1261
1242
  textAlign: 'left',
@@ -1383,7 +1364,7 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1383
1364
  locale: locale || 'zh-CN'
1384
1365
  };
1385
1366
  };
1386
- const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1367
+ const default_defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1387
1368
  const { vseed } = context;
1388
1369
  const { measures, dataset } = vseed;
1389
1370
  if (measures && measures.length > 0) return {
@@ -1413,7 +1394,7 @@ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1413
1394
  measures: defaultMeasures
1414
1395
  };
1415
1396
  };
1416
- const defaultDimensions = (advancedVSeed, context)=>{
1397
+ const defaultDimensions_defaultDimensions = (advancedVSeed, context)=>{
1417
1398
  const result = {
1418
1399
  ...advancedVSeed
1419
1400
  };
@@ -1444,7 +1425,7 @@ const defaultDimensions = (advancedVSeed, context)=>{
1444
1425
  dimensions: newDimensions
1445
1426
  };
1446
1427
  };
1447
- const defaultMeasureName = (advancedVSeed)=>{
1428
+ const defaultMeasureName_defaultMeasureName = (advancedVSeed)=>{
1448
1429
  const result = {
1449
1430
  ...advancedVSeed
1450
1431
  };
@@ -1455,51 +1436,78 @@ const defaultMeasureName = (advancedVSeed)=>{
1455
1436
  if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1456
1437
  return result;
1457
1438
  };
1439
+ const encodingAdapter = (noEncodingPipeline, hasEncodingPipeline)=>(advancedVSeed, context)=>{
1440
+ const { dimensions = [], measures = [] } = advancedVSeed;
1441
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1442
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
1443
+ const hasEncoding = hasDimensionEncoding || hasMeasureEncoding;
1444
+ if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
1445
+ return execPipeline(noEncodingPipeline, context, advancedVSeed);
1446
+ };
1447
+ const defaultEncodingForLine = (advancedVSeed)=>{
1448
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1449
+ const measures = findAllMeasures(vseedMeasures);
1450
+ const encoding = {};
1451
+ line_generateDefaultDimensionEncoding(dimensions, encoding);
1452
+ line_generateDefaultMeasureEncoding(measures, encoding);
1453
+ return {
1454
+ ...advancedVSeed,
1455
+ encoding
1456
+ };
1457
+ };
1458
1458
  const encodingForLine = (advancedVSeed)=>{
1459
1459
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1460
1460
  const measures = findAllMeasures(vseedMeasures);
1461
1461
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1462
1462
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1463
1463
  const encoding = {};
1464
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1465
- else generateDefaultDimensionEncoding(dimensions, encoding);
1466
- if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1467
- else generateDefaultMeasureEncoding(measures, encoding);
1464
+ if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
1465
+ else line_generateDefaultDimensionEncoding(dimensions, encoding);
1466
+ if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
1467
+ else line_generateDefaultMeasureEncoding(measures, encoding);
1468
1468
  return {
1469
1469
  ...advancedVSeed,
1470
1470
  encoding
1471
1471
  };
1472
1472
  };
1473
- const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1473
+ const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1474
1474
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
1475
1475
  encoding.x = uniqueDimIds.slice(0, 1);
1476
1476
  encoding.color = uniqueDimIds.slice(1);
1477
- encoding.tooltip = uniqueDimIds;
1477
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
1478
1478
  encoding.detail = [];
1479
1479
  encoding.label = [];
1480
1480
  encoding.row = [];
1481
1481
  encoding.column = [];
1482
1482
  };
1483
- const generateDimensionEncoding = (dimensions, encoding)=>{
1483
+ const line_generateDimensionEncoding = (dimensions, encoding)=>{
1484
1484
  encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1485
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1486
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1487
1485
  if (0 === encoding.x.length) encoding.x = [
1488
1486
  dimensions[0].id
1489
1487
  ];
1488
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1490
1489
  if (0 === encoding.color.length) encoding.color = [
1491
1490
  MeasureName
1492
1491
  ];
1492
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1493
+ if (0 === encoding.detail.length) encoding.detail = [
1494
+ MeasureName
1495
+ ];
1496
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
1497
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
1493
1498
  };
1494
- const generateDefaultMeasureEncoding = (measures, encoding)=>{
1495
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
1499
+ const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
1496
1500
  encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1497
1501
  };
1498
- const generateMeasureEncoding = (measures, encoding)=>{
1499
- encoding.tooltip = measures.map((item)=>item.id);
1502
+ const line_generateMeasureEncoding = (measures, encoding)=>{
1500
1503
  encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1501
1504
  const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1502
1505
  if (color.length > 0) encoding.color = color;
1506
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
1507
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
1508
+ ...encoding.tooltip || [],
1509
+ ...tooltip
1510
+ ]);
1503
1511
  };
1504
1512
  const isMeasureTreeWithChildren = (vseed)=>{
1505
1513
  const { measures } = vseed;
@@ -1511,6 +1519,37 @@ const isMeasureTreeWithParentId = (vseed)=>{
1511
1519
  if (!measures) return false;
1512
1520
  return measures.some((measure)=>'parentId' in measure);
1513
1521
  };
1522
+ const normalizeMeasureTree = (measures)=>{
1523
+ const createEmptyMeasureGroup = ()=>({
1524
+ id: 'group',
1525
+ alias: '',
1526
+ children: []
1527
+ });
1528
+ let currentGroup = createEmptyMeasureGroup();
1529
+ const measureGroups = [];
1530
+ for (const measure of measures)if ('children' in measure) {
1531
+ if (currentGroup.children?.length) {
1532
+ currentGroup.id = [
1533
+ currentGroup.id,
1534
+ ...currentGroup.children.map((item)=>item.id)
1535
+ ].join('-');
1536
+ currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1537
+ measureGroups.push(currentGroup);
1538
+ currentGroup = createEmptyMeasureGroup();
1539
+ }
1540
+ measureGroups.push(measure);
1541
+ } else currentGroup.children?.push(measure);
1542
+ if (currentGroup.children?.length) {
1543
+ currentGroup.id = [
1544
+ currentGroup.id,
1545
+ ...currentGroup.children.map((item)=>item.id)
1546
+ ].join('-');
1547
+ currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1548
+ measureGroups.push(currentGroup);
1549
+ currentGroup = createEmptyMeasureGroup();
1550
+ }
1551
+ return measureGroups;
1552
+ };
1514
1553
  const measureDepth = (measures = [])=>{
1515
1554
  if (!measures) return 0;
1516
1555
  let depth = 1;
@@ -1535,7 +1574,7 @@ const isPivotChart = (vseed)=>{
1535
1574
  }
1536
1575
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1537
1576
  const { dimensions = [] } = vseed;
1538
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1577
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1539
1578
  if (hasRowOrColumnDimension) return true;
1540
1579
  if ('scatter' === vseed.chartType) {
1541
1580
  if (isMeasureTreeWithChildren(vseed)) {
@@ -1555,14 +1594,14 @@ const isPivotChart = (vseed)=>{
1555
1594
  return false;
1556
1595
  }
1557
1596
  const { measures = [], dimensions = [] } = vseed;
1558
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1597
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1559
1598
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1560
1599
  return hasRowOrColumnDimension || hasMeasureGroup;
1561
1600
  };
1562
1601
  const buildMeasures = (advancedVSeed, context)=>{
1563
1602
  const { vseed } = context;
1564
1603
  if (isMeasureTreeWithChildren(vseed)) {
1565
- advancedVSeed.measures = vseed.measures;
1604
+ advancedVSeed.measures = normalizeMeasureTree(vseed.measures);
1566
1605
  return advancedVSeed;
1567
1606
  }
1568
1607
  if (isMeasureTreeWithParentId(vseed)) {
@@ -1664,7 +1703,7 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
1664
1703
  });
1665
1704
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1666
1705
  foldMeasureId,
1667
- separator: Separator,
1706
+ separator: "-",
1668
1707
  colorItemAsId
1669
1708
  });
1670
1709
  return {
@@ -1950,11 +1989,16 @@ const annotation_annotation = (advancedVSeed, context)=>{
1950
1989
  };
1951
1990
  const lineAdvancedPipeline = [
1952
1991
  initAdvancedVSeed_initAdvancedVSeed,
1953
- defaultMeasures_defaultMeasures,
1954
- defaultDimensions,
1955
- defaultMeasureName,
1956
- encodingForLine,
1957
- buildMeasures,
1992
+ default_defaultMeasures_defaultMeasures,
1993
+ defaultDimensions_defaultDimensions,
1994
+ defaultMeasureName_defaultMeasureName,
1995
+ encodingAdapter([
1996
+ defaultEncodingForLine,
1997
+ buildMeasures
1998
+ ], [
1999
+ encodingForLine,
2000
+ buildMeasures
2001
+ ]),
1958
2002
  pivotAdapter([
1959
2003
  reshapeWithEncoding
1960
2004
  ], [
@@ -2229,10 +2273,6 @@ const xBand = (spec, context)=>{
2229
2273
  ];
2230
2274
  return result;
2231
2275
  };
2232
- const ANNOTATION_Z_INDEX = 1000;
2233
- const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
2234
- const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000;
2235
- const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001;
2236
2276
  const yLinear = (spec, context)=>{
2237
2277
  const result = {
2238
2278
  ...spec
@@ -2306,7 +2346,7 @@ const yLinear = (spec, context)=>{
2306
2346
  }
2307
2347
  },
2308
2348
  innerOffset: {
2309
- top: LINEAR_AXIS_INNER_OFFSET_TOP
2349
+ top: 7
2310
2350
  }
2311
2351
  };
2312
2352
  result.axes = [
@@ -2862,82 +2902,137 @@ const tooltip_tooltip = (spec, context)=>{
2862
2902
  ...spec
2863
2903
  };
2864
2904
  const { advancedVSeed } = context;
2865
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
2905
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
2866
2906
  const baseConfig = advancedVSeed.config[chartType];
2867
2907
  const { tooltip = {
2868
2908
  enable: true
2869
2909
  } } = baseConfig;
2870
2910
  const { enable } = tooltip;
2871
- const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2872
- const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2911
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
2873
2912
  result.tooltip = {
2874
2913
  visible: enable,
2875
2914
  mark: {
2876
2915
  title: {
2877
- visible: true
2916
+ visible: false
2878
2917
  },
2879
- content: [
2880
- ...dimensions.map((item)=>({
2881
- visible: true,
2882
- hasShape: true,
2883
- shapeType: 'rectRound',
2884
- key: (datum)=>{
2885
- if (item.alias || item.id) return item.alias || item.id;
2886
- return datum && datum[item.id];
2887
- },
2888
- value: (datum)=>datum && datum[item.id]
2889
- })),
2890
- {
2891
- visible: true,
2892
- hasShape: true,
2893
- key: (datum)=>datum && datum[measureName || colorName] || '',
2894
- value: (datum)=>{
2895
- if (!datum) return '';
2896
- const value = datum[measureValue];
2897
- const id = datum[measureId];
2898
- const measure = findMeasureById(measures, id);
2899
- if (!measure) return String(value);
2900
- const { format = {}, autoFormat = true } = measure;
2901
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2902
- const formatter = createFormatter(format);
2903
- return formatter(value);
2904
- }
2905
- if (autoFormat) return autoFormatter(value, locale);
2906
- return String(value);
2907
- }
2908
- }
2909
- ]
2918
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo)
2910
2919
  },
2911
2920
  dimension: {
2912
- content: [
2913
- {
2914
- visible: true,
2915
- key: (datum)=>datum && datum[colorName] || '',
2916
- value: (datum)=>{
2917
- if (!datum) return '';
2918
- const value = datum[measureValue];
2919
- const id = datum[measureId];
2920
- const measure = findMeasureById(measures, id);
2921
- if (!measure) return String(value);
2922
- const { format = {}, autoFormat = true } = measure;
2923
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2924
- const formatter = createFormatter(format);
2925
- return formatter(value);
2926
- }
2927
- if (autoFormat) return autoFormatter(value, locale);
2928
- return String(value);
2929
- },
2930
- shapeType: 'rectRound'
2931
- }
2932
- ]
2921
+ title: {
2922
+ visible: true
2923
+ },
2924
+ content: createDimensionContent(measures, foldInfo, unfoldInfo, locale)
2933
2925
  }
2934
2926
  };
2935
2927
  return result;
2936
2928
  };
2937
- const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
2938
- if ('string' == typeof value) return obj[key] === value;
2939
- if ('number' == typeof value) return obj[key] === value;
2940
- return true;
2929
+ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
2930
+ const { measureId, measureValue } = foldInfo;
2931
+ const { encodingColor } = unfoldInfo;
2932
+ return [
2933
+ {
2934
+ visible: true,
2935
+ shapeType: 'rectRound',
2936
+ hasShape: true,
2937
+ key: (v)=>{
2938
+ const datum = v;
2939
+ return datum && datum[encodingColor] || '';
2940
+ },
2941
+ value: (v)=>{
2942
+ const datum = v;
2943
+ if (!datum) return '';
2944
+ const value = datum[measureValue];
2945
+ const id = datum[measureId];
2946
+ const measure = findMeasureById(measures, id);
2947
+ if (!measure) return String(value);
2948
+ const { format = {}, autoFormat = true } = measure;
2949
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2950
+ const formatter = createFormatter(format);
2951
+ return formatter(value);
2952
+ }
2953
+ if (autoFormat) return autoFormatter(value, locale);
2954
+ return String(value);
2955
+ }
2956
+ }
2957
+ ];
2958
+ };
2959
+ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
2960
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
2961
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
2962
+ const dimContent = dims.map((item)=>({
2963
+ visible: true,
2964
+ hasShape: true,
2965
+ shapeType: 'rectRound',
2966
+ key: (v)=>{
2967
+ const datum = v;
2968
+ if (item.alias || item.id) return item.alias || item.id;
2969
+ return datum && datum[item.id];
2970
+ },
2971
+ value: (v)=>{
2972
+ const datum = v;
2973
+ return datum && datum[item.id];
2974
+ }
2975
+ }));
2976
+ const meaContent = meas.map((item)=>({
2977
+ visible: true,
2978
+ hasShape: true,
2979
+ shapeType: 'rectRound',
2980
+ key: item.alias || item.id,
2981
+ value: (v)=>{
2982
+ const datum = v;
2983
+ if (!datum) return '';
2984
+ const id = item.id;
2985
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
2986
+ const originalData = datum[ORIGINAL_DATA];
2987
+ const value = originalData[id];
2988
+ const measure = findMeasureById(measures, id);
2989
+ if (!measure) return String(value);
2990
+ const { format = {}, autoFormat = true } = measure;
2991
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2992
+ const formatter = createFormatter(format);
2993
+ return formatter(value);
2994
+ }
2995
+ if (autoFormat) return autoFormatter(value, locale);
2996
+ return String(value);
2997
+ }
2998
+ }));
2999
+ const defaultContent = {
3000
+ visible: true,
3001
+ hasShape: true,
3002
+ shapeType: 'rectRound',
3003
+ key: (v)=>{
3004
+ const { measureName } = foldInfo;
3005
+ const { encodingColor: colorName } = unfoldInfo;
3006
+ const datum = v;
3007
+ return datum && datum[measureName || colorName] || '';
3008
+ },
3009
+ value: (v)=>{
3010
+ const { measureId, measureValue } = foldInfo;
3011
+ const datum = v;
3012
+ if (!datum) return '';
3013
+ const value = datum[measureValue];
3014
+ const id = datum[measureId];
3015
+ const measure = findMeasureById(measures, id);
3016
+ if (!measure) return String(value);
3017
+ const { format = {}, autoFormat = true } = measure;
3018
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
3019
+ const formatter = createFormatter(format);
3020
+ return formatter(value);
3021
+ }
3022
+ if (autoFormat) return autoFormatter(value, locale);
3023
+ return String(value);
3024
+ }
3025
+ };
3026
+ return [
3027
+ ...dimContent,
3028
+ defaultContent,
3029
+ ...meaContent
3030
+ ];
3031
+ };
3032
+ const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
3033
+ if ('string' == typeof value) return obj[key] === value;
3034
+ if ('number' == typeof value) return obj[key] === value;
3035
+ return true;
2941
3036
  });
2942
3037
  const annotationPoint_annotationPoint = (spec, context)=>{
2943
3038
  const { advancedVSeed } = context;
@@ -2952,7 +3047,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2952
3047
  const dataset = advancedVSeed.dataset.flat();
2953
3048
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2954
3049
  return selectedData.map((datum)=>({
2955
- zIndex: ANNOTATION_Z_INDEX,
3050
+ zIndex: 1000,
2956
3051
  regionRelative: true,
2957
3052
  position: (data, context)=>{
2958
3053
  const targetDatum = data.find((item)=>isSubset(datum, item));
@@ -3006,7 +3101,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
3006
3101
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
3007
3102
  const { advancedVSeed } = context;
3008
3103
  const { annotation, datasetReshapeInfo } = advancedVSeed;
3009
- const { unfoldInfo } = datasetReshapeInfo[0];
3104
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
3010
3105
  if (!annotation || !annotation.annotationVerticalLine) return spec;
3011
3106
  const { annotationVerticalLine } = annotation;
3012
3107
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -3025,7 +3120,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
3025
3120
  const dataset = advancedVSeed.dataset.flat();
3026
3121
  const generateOneMarkLine = (x)=>({
3027
3122
  x: x,
3028
- zIndex: ANNOTATION_Z_INDEX,
3123
+ zIndex: 1000,
3029
3124
  line: {
3030
3125
  style: {
3031
3126
  visible: lineVisible,
@@ -3086,9 +3181,9 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
3086
3181
  }
3087
3182
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3088
3183
  return selectedData.map((datum)=>{
3089
- const x = unfoldInfo.encodingX;
3090
- if (!x) return {};
3091
- return generateOneMarkLine(datum[x]);
3184
+ if (datum[unfoldInfo.encodingX]) return generateOneMarkLine(datum[unfoldInfo.encodingX]);
3185
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
3186
+ return {};
3092
3187
  });
3093
3188
  });
3094
3189
  const specMarkLine = spec.markLine || [];
@@ -3104,10 +3199,10 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
3104
3199
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
3105
3200
  const { advancedVSeed } = context;
3106
3201
  const { annotation, datasetReshapeInfo } = advancedVSeed;
3107
- const { unfoldInfo } = datasetReshapeInfo[0];
3202
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
3108
3203
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
3109
3204
  const { annotationHorizontalLine } = annotation;
3110
- const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
3205
+ const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
3111
3206
  annotationHorizontalLine
3112
3207
  ];
3113
3208
  const positionMap = {
@@ -3118,12 +3213,12 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
3118
3213
  insideMiddle: 'insideMiddleTop',
3119
3214
  insideEnd: 'insideEndTop'
3120
3215
  };
3121
- const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine)=>{
3122
- 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;
3216
+ const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
3217
+ 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;
3123
3218
  const dataset = advancedVSeed.dataset.flat();
3124
3219
  const generateOneMarkLine = (y)=>({
3125
3220
  y,
3126
- zIndex: ANNOTATION_Z_INDEX,
3221
+ zIndex: 1000,
3127
3222
  line: {
3128
3223
  style: {
3129
3224
  visible: lineVisible,
@@ -3184,9 +3279,9 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
3184
3279
  }
3185
3280
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3186
3281
  return selectedData.map((datum)=>{
3187
- const y = unfoldInfo.encodingY;
3188
- if (!y) return {};
3189
- return generateOneMarkLine(datum[y]);
3282
+ if (datum[unfoldInfo.encodingY]) return generateOneMarkLine(datum[unfoldInfo.encodingY]);
3283
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
3284
+ return {};
3190
3285
  });
3191
3286
  });
3192
3287
  const specMarkLine = spec.markLine || [];
@@ -3224,7 +3319,7 @@ const annotationArea_annotationArea = (spec, context)=>{
3224
3319
  const labelPosition = positionMap[textPosition || 'top'];
3225
3320
  const isBottom = labelPosition.toLocaleLowerCase().includes('bottom');
3226
3321
  return {
3227
- zIndex: ANNOTATION_Z_INDEX,
3322
+ zIndex: 1000,
3228
3323
  regionRelative: true,
3229
3324
  positions: (data, context)=>{
3230
3325
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
@@ -3550,7 +3645,7 @@ const pivotRowDimensions = (spec, context)=>{
3550
3645
  const { advancedVSeed } = context;
3551
3646
  const dimensions = advancedVSeed.dimensions;
3552
3647
  if (!dimensions) return result;
3553
- const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
3648
+ const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
3554
3649
  const rows = rowDimensions.map((dim)=>({
3555
3650
  dimensionKey: dim.id,
3556
3651
  title: dim.alias || dim.id
@@ -3567,7 +3662,7 @@ const pivotColumnDimensions = (spec, context)=>{
3567
3662
  const { advancedVSeed } = context;
3568
3663
  const dimensions = advancedVSeed.dimensions;
3569
3664
  if (!dimensions) return result;
3570
- const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
3665
+ const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
3571
3666
  const columns = columnDimensions.map((dim)=>({
3572
3667
  dimensionKey: dim.id,
3573
3668
  title: dim.alias || dim.id
@@ -3840,6 +3935,17 @@ const registerLine = ()=>{
3840
3935
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3841
3936
  Builder._specPipelineMap.line = lineSpecPipeline;
3842
3937
  };
3938
+ const defaultEncodingForColumn = (advancedVSeed)=>{
3939
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
3940
+ const measures = findAllMeasures(vseedMeasures);
3941
+ const encoding = {};
3942
+ column_generateDefaultDimensionEncoding(dimensions, encoding);
3943
+ column_generateDefaultMeasureEncoding(measures, encoding);
3944
+ return {
3945
+ ...advancedVSeed,
3946
+ encoding
3947
+ };
3948
+ };
3843
3949
  const encodingForColumn = (advancedVSeed)=>{
3844
3950
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
3845
3951
  const measures = findAllMeasures(vseedMeasures);
@@ -3861,40 +3967,52 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3861
3967
  encoding.x = uniqueDimIds.slice(0, 1);
3862
3968
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
3863
3969
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
3864
- encoding.tooltip = uniqueDimIds;
3970
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
3865
3971
  encoding.label = [];
3866
3972
  encoding.row = [];
3867
3973
  encoding.column = [];
3868
3974
  };
3869
3975
  const column_generateDimensionEncoding = (dimensions, encoding)=>{
3870
3976
  encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
3871
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3872
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
3873
3977
  if (0 === encoding.x.length) encoding.x = [
3874
3978
  dimensions[0].id
3875
3979
  ];
3980
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3876
3981
  if (0 === encoding.color.length) encoding.color = [
3877
3982
  MeasureName
3878
3983
  ];
3984
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
3985
+ if (0 === encoding.detail.length) encoding.detail = [
3986
+ MeasureName
3987
+ ];
3988
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
3989
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
3879
3990
  };
3880
3991
  const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3881
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
3882
3992
  encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3883
3993
  };
3884
3994
  const column_generateMeasureEncoding = (measures, encoding)=>{
3885
- encoding.tooltip = measures.map((item)=>item.id);
3886
3995
  encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3887
3996
  const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3888
3997
  if (color.length > 0) encoding.color = color;
3889
- return encoding;
3998
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
3999
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
4000
+ ...encoding.tooltip || [],
4001
+ ...tooltip
4002
+ ]);
3890
4003
  };
3891
4004
  const columnAdvancedPipeline = [
3892
4005
  initAdvancedVSeed_initAdvancedVSeed,
3893
- defaultMeasures_defaultMeasures,
3894
- defaultDimensions,
3895
- defaultMeasureName,
3896
- encodingForColumn,
3897
- buildMeasures,
4006
+ default_defaultMeasures_defaultMeasures,
4007
+ defaultDimensions_defaultDimensions,
4008
+ defaultMeasureName_defaultMeasureName,
4009
+ encodingAdapter([
4010
+ defaultEncodingForColumn,
4011
+ buildMeasures
4012
+ ], [
4013
+ encodingForColumn,
4014
+ buildMeasures
4015
+ ]),
3898
4016
  pivotAdapter([
3899
4017
  reshapeWithEncoding
3900
4018
  ], [
@@ -4091,7 +4209,7 @@ const annotationAreaBand = (spec, context)=>{
4091
4209
  const dataset = advancedVSeed.dataset.flat();
4092
4210
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
4093
4211
  return {
4094
- zIndex: ANNOTATION_Z_INDEX,
4212
+ zIndex: 1000,
4095
4213
  regionRelative: true,
4096
4214
  positions: (data, context)=>{
4097
4215
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
@@ -4254,11 +4372,16 @@ const registerColumn = ()=>{
4254
4372
  };
4255
4373
  const columnParallelAdvancedPipeline = [
4256
4374
  initAdvancedVSeed_initAdvancedVSeed,
4257
- defaultMeasures_defaultMeasures,
4258
- defaultDimensions,
4259
- defaultMeasureName,
4260
- encodingForColumn,
4261
- buildMeasures,
4375
+ default_defaultMeasures_defaultMeasures,
4376
+ defaultDimensions_defaultDimensions,
4377
+ defaultMeasureName_defaultMeasureName,
4378
+ encodingAdapter([
4379
+ defaultEncodingForColumn,
4380
+ buildMeasures
4381
+ ], [
4382
+ encodingForColumn,
4383
+ buildMeasures
4384
+ ]),
4262
4385
  pivotAdapter([
4263
4386
  reshapeWithEncoding
4264
4387
  ], [
@@ -4353,11 +4476,16 @@ const registerColumnParallel = ()=>{
4353
4476
  };
4354
4477
  const columnPercentAdvancedPipeline = [
4355
4478
  initAdvancedVSeed_initAdvancedVSeed,
4356
- defaultMeasures_defaultMeasures,
4357
- defaultDimensions,
4358
- defaultMeasureName,
4359
- encodingForColumn,
4360
- buildMeasures,
4479
+ default_defaultMeasures_defaultMeasures,
4480
+ defaultDimensions_defaultDimensions,
4481
+ defaultMeasureName_defaultMeasureName,
4482
+ encodingAdapter([
4483
+ defaultEncodingForColumn,
4484
+ buildMeasures
4485
+ ], [
4486
+ encodingForColumn,
4487
+ buildMeasures
4488
+ ]),
4361
4489
  pivotAdapter([
4362
4490
  reshapeWithEncoding
4363
4491
  ], [
@@ -4434,6 +4562,17 @@ const registerColumnPercent = ()=>{
4434
4562
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4435
4563
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4436
4564
  };
4565
+ const defaultEncodingForBar = (advancedVSeed)=>{
4566
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4567
+ const measures = findAllMeasures(vseedMeasures);
4568
+ const encoding = {};
4569
+ bar_generateDefaultDimensionEncoding(dimensions, encoding);
4570
+ bar_generateDefaultMeasureEncoding(measures, encoding);
4571
+ return {
4572
+ ...advancedVSeed,
4573
+ encoding
4574
+ };
4575
+ };
4437
4576
  const encodingForBar = (advancedVSeed)=>{
4438
4577
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4439
4578
  const measures = findAllMeasures(vseedMeasures);
@@ -4449,39 +4588,45 @@ const encodingForBar = (advancedVSeed)=>{
4449
4588
  encoding
4450
4589
  };
4451
4590
  };
4452
- const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4453
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
4454
- encoding.x = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4455
- };
4456
4591
  const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
4457
4592
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4458
4593
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
4459
4594
  encoding.y = uniqueDimIds.slice(0, 1);
4460
4595
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4461
4596
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4462
- encoding.tooltip = uniqueDimIds;
4597
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
4463
4598
  encoding.label = [];
4464
4599
  encoding.row = [];
4465
4600
  encoding.column = [];
4466
4601
  };
4467
- const bar_generateMeasureEncoding = (measures, encoding)=>{
4468
- encoding.tooltip = measures.map((item)=>item.id);
4469
- encoding.x = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4470
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4471
- if (color.length > 0) encoding.color = color;
4472
- return encoding;
4473
- };
4474
4602
  const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4475
4603
  encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
4476
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4477
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4478
4604
  if (0 === encoding.y.length) encoding.y = [
4479
4605
  dimensions[0].id
4480
4606
  ];
4607
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4481
4608
  if (0 === encoding.color.length) encoding.color = [
4482
4609
  MeasureName
4483
4610
  ];
4484
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4611
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4612
+ if (0 === encoding.detail.length) encoding.detail = [
4613
+ MeasureName
4614
+ ];
4615
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
4616
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
4617
+ };
4618
+ const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4619
+ encoding.x = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4620
+ };
4621
+ const bar_generateMeasureEncoding = (measures, encoding)=>{
4622
+ encoding.x = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4623
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4624
+ if (color.length > 0) encoding.color = color;
4625
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
4626
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
4627
+ ...encoding.tooltip || [],
4628
+ ...tooltip
4629
+ ]);
4485
4630
  };
4486
4631
  const sortYBandAxis = (advancedVSeed, context)=>{
4487
4632
  const result = {
@@ -4501,11 +4646,16 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4501
4646
  };
4502
4647
  const barAdvancedPipeline = [
4503
4648
  initAdvancedVSeed_initAdvancedVSeed,
4504
- defaultMeasures_defaultMeasures,
4505
- defaultDimensions,
4506
- defaultMeasureName,
4507
- encodingForBar,
4508
- buildMeasures,
4649
+ default_defaultMeasures_defaultMeasures,
4650
+ defaultDimensions_defaultDimensions,
4651
+ defaultMeasureName_defaultMeasureName,
4652
+ encodingAdapter([
4653
+ defaultEncodingForBar,
4654
+ buildMeasures
4655
+ ], [
4656
+ encodingForBar,
4657
+ buildMeasures
4658
+ ]),
4509
4659
  pivotAdapter([
4510
4660
  reshapeWithEncoding
4511
4661
  ], [
@@ -4656,7 +4806,7 @@ const xLinear = (spec, context)=>{
4656
4806
  }
4657
4807
  },
4658
4808
  innerOffset: {
4659
- right: LINEAR_AXIS_INNER_OFFSET_TOP
4809
+ right: 7
4660
4810
  }
4661
4811
  };
4662
4812
  result.axes = [
@@ -4856,11 +5006,16 @@ const registerBar = ()=>{
4856
5006
  };
4857
5007
  const barParallelAdvancedPipeline = [
4858
5008
  initAdvancedVSeed_initAdvancedVSeed,
4859
- defaultMeasures_defaultMeasures,
4860
- defaultDimensions,
4861
- defaultMeasureName,
4862
- encodingForBar,
4863
- buildMeasures,
5009
+ default_defaultMeasures_defaultMeasures,
5010
+ defaultDimensions_defaultDimensions,
5011
+ defaultMeasureName_defaultMeasureName,
5012
+ encodingAdapter([
5013
+ defaultEncodingForBar,
5014
+ buildMeasures
5015
+ ], [
5016
+ encodingForBar,
5017
+ buildMeasures
5018
+ ]),
4864
5019
  pivotAdapter([
4865
5020
  reshapeWithEncoding
4866
5021
  ], [
@@ -4954,11 +5109,16 @@ const registerBarParallel = ()=>{
4954
5109
  };
4955
5110
  const barPercentAdvancedPipeline = [
4956
5111
  initAdvancedVSeed_initAdvancedVSeed,
4957
- defaultMeasures_defaultMeasures,
4958
- defaultDimensions,
4959
- defaultMeasureName,
4960
- encodingForBar,
4961
- buildMeasures,
5112
+ default_defaultMeasures_defaultMeasures,
5113
+ defaultDimensions_defaultDimensions,
5114
+ defaultMeasureName_defaultMeasureName,
5115
+ encodingAdapter([
5116
+ defaultEncodingForBar,
5117
+ buildMeasures
5118
+ ], [
5119
+ encodingForBar,
5120
+ buildMeasures
5121
+ ]),
4962
5122
  pivotAdapter([
4963
5123
  reshapeWithEncoding
4964
5124
  ], [
@@ -5027,11 +5187,16 @@ const registerBarPercent = ()=>{
5027
5187
  };
5028
5188
  const areaAdvancedPipeline = [
5029
5189
  initAdvancedVSeed_initAdvancedVSeed,
5030
- defaultMeasures_defaultMeasures,
5031
- defaultDimensions,
5032
- defaultMeasureName,
5033
- encodingForLine,
5034
- buildMeasures,
5190
+ default_defaultMeasures_defaultMeasures,
5191
+ defaultDimensions_defaultDimensions,
5192
+ defaultMeasureName_defaultMeasureName,
5193
+ encodingAdapter([
5194
+ defaultEncodingForLine,
5195
+ buildMeasures
5196
+ ], [
5197
+ encodingForLine,
5198
+ buildMeasures
5199
+ ]),
5035
5200
  pivotAdapter([
5036
5201
  reshapeWithEncoding
5037
5202
  ], [
@@ -5187,11 +5352,16 @@ const registerArea = ()=>{
5187
5352
  };
5188
5353
  const areaPercentAdvancedPipeline = [
5189
5354
  initAdvancedVSeed_initAdvancedVSeed,
5190
- defaultMeasures_defaultMeasures,
5191
- defaultDimensions,
5192
- defaultMeasureName,
5193
- encodingForLine,
5194
- buildMeasures,
5355
+ default_defaultMeasures_defaultMeasures,
5356
+ defaultDimensions_defaultDimensions,
5357
+ defaultMeasureName_defaultMeasureName,
5358
+ encodingAdapter([
5359
+ defaultEncodingForLine,
5360
+ buildMeasures
5361
+ ], [
5362
+ encodingForLine,
5363
+ buildMeasures
5364
+ ]),
5195
5365
  pivotAdapter([
5196
5366
  reshapeWithEncoding
5197
5367
  ], [
@@ -5265,6 +5435,17 @@ const registerAreaPercent = ()=>{
5265
5435
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5266
5436
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5267
5437
  };
5438
+ const defaultEncodingForScatter = (advancedVSeed)=>{
5439
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5440
+ const measures = findAllMeasures(vseedMeasures);
5441
+ const encoding = {};
5442
+ scatter_generateDefaultDimensionEncoding(dimensions, encoding);
5443
+ scatter_generateDefaultMeasureEncoding(measures, encoding);
5444
+ return {
5445
+ ...advancedVSeed,
5446
+ encoding
5447
+ };
5448
+ };
5268
5449
  const encodingForScatter = (advancedVSeed)=>{
5269
5450
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5270
5451
  const measures = findAllMeasures(vseedMeasures);
@@ -5280,33 +5461,43 @@ const encodingForScatter = (advancedVSeed)=>{
5280
5461
  encoding
5281
5462
  };
5282
5463
  };
5283
- const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5284
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
5285
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5286
- };
5287
5464
  const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5288
5465
  const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
5289
5466
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensionsWithoutMeasureName.map((d)=>d.id));
5290
5467
  encoding.color = uniqueDimIds.slice(0);
5291
5468
  encoding.detail = uniqueDimIds.slice(0);
5292
- encoding.tooltip = uniqueDimIds;
5469
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
5293
5470
  encoding.label = [];
5294
5471
  encoding.row = [];
5295
5472
  encoding.column = [];
5296
5473
  };
5297
- const scatter_generateMeasureEncoding = (measures, encoding)=>{
5298
- encoding.tooltip = measures.map((item)=>item.id);
5299
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5300
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5301
- if (color.length > 0) encoding.color = color;
5302
- };
5303
5474
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5304
5475
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5305
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5306
5476
  if (0 === encoding.color.length) encoding.color = [
5307
5477
  MeasureName
5308
5478
  ];
5309
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5479
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5480
+ if (0 === encoding.detail.length) encoding.detail = [
5481
+ MeasureName
5482
+ ];
5483
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
5484
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
5485
+ };
5486
+ const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5487
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5488
+ };
5489
+ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5490
+ encoding.tooltip = measures.map((item)=>item.id);
5491
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5492
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5493
+ if (color.length > 0) encoding.color = [
5494
+ color[0]
5495
+ ];
5496
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
5497
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
5498
+ ...encoding.tooltip || [],
5499
+ ...tooltip
5500
+ ]);
5310
5501
  };
5311
5502
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
5312
5503
  const { vseed } = context;
@@ -5334,9 +5525,10 @@ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
5334
5525
  const isXAxis = encoding.includes('xAxis');
5335
5526
  if (isYAxis) yMeasures.push(item);
5336
5527
  else if (isXAxis) xMeasures.push(item);
5337
- else if (0 === index) yMeasures.push(item);
5528
+ else if (0 !== index) yMeasures.push(item);
5338
5529
  else xMeasures.push(item);
5339
5530
  }
5531
+ if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
5340
5532
  return [
5341
5533
  {
5342
5534
  id: 'scatterMeasures',
@@ -5402,7 +5594,7 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
5402
5594
  const isEmpty = !encoding.length;
5403
5595
  if (isY) scatterChart.yMeasures.push(item);
5404
5596
  else if (isX) scatterChart.xMeasures.push(item);
5405
- else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5597
+ else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5406
5598
  else scatterChart.xMeasures.push(item);
5407
5599
  });
5408
5600
  return scatterMeasuresToMeasureTree(scatterMeasures);
@@ -5425,6 +5617,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5425
5617
  if (xMeasures && xMeasures.children) {
5426
5618
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (d)=>d.id), (0, external_remeda_namespaceObject.uniqueBy)(xMeasures.children, (d)=>d.id), encoding, {
5427
5619
  foldMeasureValue: FoldXMeasureValue,
5620
+ foldMeasureId: FoldXMeasureId,
5428
5621
  colorItemAsId: true,
5429
5622
  colorMeasureId: getColorMeasureId(advancedVSeed)
5430
5623
  });
@@ -5435,6 +5628,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5435
5628
  if (yMeasures && yMeasures.children) {
5436
5629
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (d)=>d.id), (0, external_remeda_namespaceObject.uniqueBy)(yMeasures.children, (d)=>d.id), encoding, {
5437
5630
  foldMeasureValue: FoldYMeasureValue,
5631
+ foldMeasureId: FoldYMeasureId,
5438
5632
  colorItemAsId: true,
5439
5633
  colorMeasureId: getColorMeasureId(advancedVSeed)
5440
5634
  });
@@ -5537,11 +5731,16 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5537
5731
  };
5538
5732
  const scatterAdvancedPipeline = [
5539
5733
  initAdvancedVSeed_initAdvancedVSeed,
5540
- defaultMeasures_defaultMeasures,
5541
- defaultDimensions,
5542
- defaultMeasureName,
5543
- encodingForScatter,
5544
- buildMeasuresForScatter,
5734
+ default_defaultMeasures_defaultMeasures,
5735
+ defaultDimensions_defaultDimensions,
5736
+ defaultMeasureName_defaultMeasureName,
5737
+ encodingAdapter([
5738
+ defaultEncodingForScatter,
5739
+ buildMeasuresForScatter
5740
+ ], [
5741
+ encodingForScatter,
5742
+ buildMeasuresForScatter
5743
+ ]),
5545
5744
  pivotAdapter([
5546
5745
  reshapeWithScatterEncoding
5547
5746
  ], [
@@ -5587,6 +5786,105 @@ const datasetScatter = (spec, context)=>{
5587
5786
  }
5588
5787
  };
5589
5788
  };
5789
+ const tooltipScatter = (spec, context)=>{
5790
+ const result = {
5791
+ ...spec
5792
+ };
5793
+ const { advancedVSeed } = context;
5794
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
5795
+ const baseConfig = advancedVSeed.config[chartType];
5796
+ const { tooltip = {
5797
+ enable: true
5798
+ } } = baseConfig;
5799
+ const { enable } = tooltip;
5800
+ const { foldInfoList } = datasetReshapeInfo[0];
5801
+ result.tooltip = {
5802
+ visible: enable,
5803
+ mark: {
5804
+ title: {
5805
+ visible: false
5806
+ },
5807
+ content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList)
5808
+ },
5809
+ dimension: {
5810
+ visible: false
5811
+ }
5812
+ };
5813
+ return result;
5814
+ };
5815
+ const tooltipScatter_createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
5816
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
5817
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
5818
+ const dimContent = dims.map((item)=>({
5819
+ visible: true,
5820
+ hasShape: true,
5821
+ shapeType: 'rectRound',
5822
+ key: (v)=>{
5823
+ const datum = v;
5824
+ if (item.alias || item.id) return item.alias || item.id;
5825
+ return datum && datum[item.id];
5826
+ },
5827
+ value: (v)=>{
5828
+ const datum = v;
5829
+ return datum && datum[item.id];
5830
+ }
5831
+ }));
5832
+ const meaContent = meas.map((item)=>({
5833
+ visible: true,
5834
+ hasShape: true,
5835
+ shapeType: 'rectRound',
5836
+ key: item.alias || item.id,
5837
+ value: (v)=>{
5838
+ const datum = v;
5839
+ if (!datum) return '';
5840
+ const id = item.id;
5841
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
5842
+ const originalData = datum[ORIGINAL_DATA];
5843
+ const value = originalData[id];
5844
+ const measure = findMeasureById(measures, id);
5845
+ if (!measure) return String(value);
5846
+ const { format = {}, autoFormat = true } = measure;
5847
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5848
+ const formatter = createFormatter(format);
5849
+ return formatter(value);
5850
+ }
5851
+ if (autoFormat) return autoFormatter(value, locale);
5852
+ return String(value);
5853
+ }
5854
+ }));
5855
+ const foldMeaContent = foldInfoList.map((foldInfo)=>({
5856
+ visible: true,
5857
+ hasShape: true,
5858
+ shapeType: 'rectRound',
5859
+ key: (v)=>{
5860
+ const { measureId, foldMap } = foldInfo;
5861
+ const datum = v;
5862
+ const id = datum[measureId];
5863
+ return foldMap[id] || id;
5864
+ },
5865
+ value: (v)=>{
5866
+ const { measureId, measureValue } = foldInfo;
5867
+ const datum = v;
5868
+ if (!datum) return '';
5869
+ const value = datum[measureValue];
5870
+ const id = datum[measureId];
5871
+ const measure = findMeasureById(measures, id);
5872
+ if (!measure) return String(value);
5873
+ const { format = {}, autoFormat = true } = measure;
5874
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5875
+ const formatter = createFormatter(format);
5876
+ return formatter(value);
5877
+ }
5878
+ if (autoFormat) return autoFormatter(value, locale);
5879
+ return String(value);
5880
+ }
5881
+ }));
5882
+ return [
5883
+ ...dimContent,
5884
+ ...foldMeaContent,
5885
+ ...meaContent
5886
+ ];
5887
+ };
5590
5888
  const horizontalCrosshairLine = (spec, context)=>{
5591
5889
  const result = {
5592
5890
  ...spec
@@ -5640,7 +5938,7 @@ const scatter = [
5640
5938
  xLinear,
5641
5939
  yLinear,
5642
5940
  label_label,
5643
- tooltip_tooltip,
5941
+ tooltipScatter,
5644
5942
  colorAdapter(discreteLegend, colorLegend),
5645
5943
  verticalCrosshairLine,
5646
5944
  horizontalCrosshairLine,
@@ -5665,7 +5963,7 @@ const pivotScatter = [
5665
5963
  xLinear,
5666
5964
  yLinear,
5667
5965
  label_label,
5668
- tooltip_tooltip,
5966
+ tooltipScatter,
5669
5967
  verticalCrosshairLine,
5670
5968
  horizontalCrosshairLine,
5671
5969
  colorPointStyleFill(pointStyle_pointStyle),
@@ -5686,6 +5984,17 @@ const registerScatter = ()=>{
5686
5984
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5687
5985
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5688
5986
  };
5987
+ const defaultEncodingForDualAxis = (advancedVSeed)=>{
5988
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5989
+ const measures = findAllMeasures(vseedMeasures);
5990
+ const encoding = {};
5991
+ dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
5992
+ dualAxis_generateDefaultMeasureEncoding(measures, encoding);
5993
+ return {
5994
+ ...advancedVSeed,
5995
+ encoding
5996
+ };
5997
+ };
5689
5998
  const encodingForDualAxis = (advancedVSeed)=>{
5690
5999
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5691
6000
  const measures = findAllMeasures(vseedMeasures);
@@ -5701,39 +6010,45 @@ const encodingForDualAxis = (advancedVSeed)=>{
5701
6010
  encoding
5702
6011
  };
5703
6012
  };
5704
- const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5705
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
5706
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5707
- };
5708
6013
  const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5709
6014
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
5710
6015
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
5711
6016
  encoding.x = uniqueDimIds.slice(0, 1);
5712
6017
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5713
6018
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5714
- encoding.tooltip = uniqueDimIds;
6019
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
5715
6020
  encoding.label = [];
5716
6021
  encoding.row = [];
5717
6022
  encoding.column = [];
5718
6023
  };
5719
- const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5720
- encoding.tooltip = measures.map((item)=>item.id);
5721
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5722
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5723
- if (color.length > 0) encoding.color = color;
5724
- return encoding;
5725
- };
5726
6024
  const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5727
6025
  encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
5728
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5729
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5730
6026
  if (0 === encoding.x.length) encoding.x = [
5731
6027
  dimensions[0].id
5732
6028
  ];
6029
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5733
6030
  if (0 === encoding.color.length) encoding.color = [
5734
6031
  MeasureName
5735
6032
  ];
5736
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
6033
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6034
+ if (0 === encoding.detail.length) encoding.detail = [
6035
+ MeasureName
6036
+ ];
6037
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
6038
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
6039
+ };
6040
+ const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
6041
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
6042
+ };
6043
+ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
6044
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
6045
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6046
+ if (color.length > 0) encoding.color = color;
6047
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
6048
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
6049
+ ...encoding.tooltip || [],
6050
+ ...tooltip
6051
+ ]);
5737
6052
  };
5738
6053
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5739
6054
  const { vseed } = context;
@@ -5987,11 +6302,16 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5987
6302
  };
5988
6303
  const dualAxisAdvancedPipeline = [
5989
6304
  initAdvancedVSeed_initAdvancedVSeed,
5990
- defaultMeasures_defaultMeasures,
5991
- defaultDimensions,
5992
- defaultMeasureName,
5993
- encodingForDualAxis,
5994
- buildMeasuresForDualAxis,
6305
+ default_defaultMeasures_defaultMeasures,
6306
+ defaultDimensions_defaultDimensions,
6307
+ defaultMeasureName_defaultMeasureName,
6308
+ encodingAdapter([
6309
+ defaultEncodingForDualAxis,
6310
+ buildMeasuresForDualAxis
6311
+ ], [
6312
+ encodingForDualAxis,
6313
+ buildMeasuresForDualAxis
6314
+ ]),
5995
6315
  pivotAdapter([
5996
6316
  reshapeWithDualEncoding
5997
6317
  ], [
@@ -6083,7 +6403,7 @@ const initDualAxisSecondary = (spec, context)=>{
6083
6403
  const dualChartTypePrimary = (spec, context)=>{
6084
6404
  const result = {
6085
6405
  ...spec,
6086
- zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX
6406
+ zIndex: 1001
6087
6407
  };
6088
6408
  const { advancedVSeed, vseed } = context;
6089
6409
  const { chartType } = vseed;
@@ -6103,7 +6423,7 @@ const dualChartTypePrimary = (spec, context)=>{
6103
6423
  break;
6104
6424
  case 'column':
6105
6425
  result.type = 'bar';
6106
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6426
+ result.zIndex = 1000;
6107
6427
  break;
6108
6428
  case 'columnParallel':
6109
6429
  {
@@ -6114,7 +6434,7 @@ const dualChartTypePrimary = (spec, context)=>{
6114
6434
  datasetReshapeInfo[0].unfoldInfo.encodingDetail
6115
6435
  ];
6116
6436
  columnSpec.type = 'bar';
6117
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6437
+ result.zIndex = 1000;
6118
6438
  break;
6119
6439
  }
6120
6440
  case 'columnPercent':
@@ -6139,7 +6459,7 @@ const dualChartTypePrimary = (spec, context)=>{
6139
6459
  const dualChartTypeSecondary = (spec, context)=>{
6140
6460
  const result = {
6141
6461
  ...spec,
6142
- zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX
6462
+ zIndex: 1001
6143
6463
  };
6144
6464
  const { advancedVSeed, vseed } = context;
6145
6465
  const { chartType } = vseed;
@@ -6159,7 +6479,7 @@ const dualChartTypeSecondary = (spec, context)=>{
6159
6479
  break;
6160
6480
  case 'column':
6161
6481
  result.type = 'bar';
6162
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6482
+ result.zIndex = 1000;
6163
6483
  break;
6164
6484
  case 'columnParallel':
6165
6485
  {
@@ -6170,7 +6490,7 @@ const dualChartTypeSecondary = (spec, context)=>{
6170
6490
  datasetReshapeInfo[0].unfoldInfo.encodingDetail
6171
6491
  ];
6172
6492
  columnSpec.type = 'bar';
6173
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6493
+ result.zIndex = 1000;
6174
6494
  break;
6175
6495
  }
6176
6496
  case 'columnPercent':
@@ -6348,7 +6668,7 @@ const tooltipPrimary = (spec, context)=>{
6348
6668
  ...spec
6349
6669
  };
6350
6670
  const { advancedVSeed } = context;
6351
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
6671
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6352
6672
  const baseConfig = advancedVSeed.config[chartType];
6353
6673
  const { tooltip = {
6354
6674
  enable: true
@@ -6356,68 +6676,19 @@ const tooltipPrimary = (spec, context)=>{
6356
6676
  const { enable } = tooltip;
6357
6677
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6358
6678
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6359
- const { measureId, measureValue, measureName } = foldInfoList[0];
6360
- const { encodingColor: colorName } = unfoldInfo;
6361
6679
  result.tooltip = {
6362
6680
  visible: enable,
6363
6681
  mark: {
6364
6682
  title: {
6365
- visible: true
6683
+ visible: false
6366
6684
  },
6367
- content: [
6368
- ...dimensions.map((item)=>({
6369
- visible: true,
6370
- hasShape: true,
6371
- shapeType: 'rectRound',
6372
- key: (datum)=>{
6373
- if (item.alias || item.id) return item.alias || item.id;
6374
- return datum && datum[item.id];
6375
- },
6376
- value: (datum)=>datum && datum[item.id]
6377
- })),
6378
- {
6379
- visible: true,
6380
- hasShape: true,
6381
- key: (datum)=>datum && datum[measureName || colorName] || '',
6382
- value: (datum)=>{
6383
- if (!datum) return '';
6384
- const value = datum[measureValue];
6385
- const id = datum[measureId];
6386
- const measure = findMeasureById(measures, id);
6387
- if (!measure) return String(value);
6388
- const { format = {}, autoFormat = true } = measure;
6389
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
6390
- const formatter = createFormatter(format);
6391
- return formatter(value);
6392
- }
6393
- if (autoFormat) return autoFormatter(value, locale);
6394
- return String(value);
6395
- }
6396
- }
6397
- ]
6685
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo)
6398
6686
  },
6399
6687
  dimension: {
6400
- content: [
6401
- {
6402
- visible: true,
6403
- key: (datum)=>datum && datum[colorName] || '',
6404
- value: (datum)=>{
6405
- if (!datum) return '';
6406
- const value = datum[measureValue];
6407
- const id = datum[measureId];
6408
- const measure = findMeasureById(measures, id);
6409
- if (!measure) return String(value);
6410
- const { format = {}, autoFormat = true } = measure;
6411
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
6412
- const formatter = createFormatter(format);
6413
- return formatter(value);
6414
- }
6415
- if (autoFormat) return autoFormatter(value, locale);
6416
- return String(value);
6417
- },
6418
- shapeType: 'rectRound'
6419
- }
6420
- ]
6688
+ title: {
6689
+ visible: true
6690
+ },
6691
+ content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale)
6421
6692
  }
6422
6693
  };
6423
6694
  return result;
@@ -6427,7 +6698,7 @@ const tooltipSecondary = (spec, context)=>{
6427
6698
  ...spec
6428
6699
  };
6429
6700
  const { advancedVSeed } = context;
6430
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
6701
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6431
6702
  const baseConfig = advancedVSeed.config[chartType];
6432
6703
  const { tooltip = {
6433
6704
  enable: true
@@ -6436,68 +6707,19 @@ const tooltipSecondary = (spec, context)=>{
6436
6707
  if ((0, external_remeda_namespaceObject.isNullish)(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
6437
6708
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6438
6709
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6439
- const { measureId, measureValue, measureName } = foldInfoList[1];
6440
- const { encodingColorId } = unfoldInfo;
6441
6710
  result.tooltip = {
6442
6711
  visible: enable,
6443
6712
  mark: {
6444
6713
  title: {
6445
- visible: true
6714
+ visible: false
6446
6715
  },
6447
- content: [
6448
- ...dimensions.map((item)=>({
6449
- visible: true,
6450
- hasShape: true,
6451
- shapeType: 'rectRound',
6452
- key: (datum)=>{
6453
- if (item.alias || item.id) return item.alias || item.id;
6454
- return datum && datum[item.id];
6455
- },
6456
- value: (datum)=>datum && datum[item.id]
6457
- })),
6458
- {
6459
- visible: true,
6460
- hasShape: true,
6461
- key: (datum)=>datum && datum[measureName || encodingColorId] || '',
6462
- value: (datum)=>{
6463
- if (!datum) return '';
6464
- const value = datum[measureValue];
6465
- const id = datum[measureId];
6466
- const measure = findMeasureById(measures, id);
6467
- if (!measure) return String(value);
6468
- const { format = {}, autoFormat = true } = measure;
6469
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
6470
- const formatter = createFormatter(format);
6471
- return formatter(value);
6472
- }
6473
- if (autoFormat) return autoFormatter(value, locale);
6474
- return String(value);
6475
- }
6476
- }
6477
- ]
6716
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo)
6478
6717
  },
6479
6718
  dimension: {
6480
- content: [
6481
- {
6482
- visible: true,
6483
- key: (datum)=>datum && datum[encodingColorId] || '',
6484
- value: (datum)=>{
6485
- if (!datum) return '';
6486
- const value = datum[measureValue];
6487
- const id = datum[measureId];
6488
- const measure = findMeasureById(measures, id);
6489
- if (!measure) return String(value);
6490
- const { format = {}, autoFormat = true } = measure;
6491
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
6492
- const formatter = createFormatter(format);
6493
- return formatter(value);
6494
- }
6495
- if (autoFormat) return autoFormatter(value, locale);
6496
- return String(value);
6497
- },
6498
- shapeType: 'rectRound'
6499
- }
6500
- ]
6719
+ title: {
6720
+ visible: true
6721
+ },
6722
+ content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale)
6501
6723
  }
6502
6724
  };
6503
6725
  return result;
@@ -6514,7 +6736,8 @@ const yLinearPrimary = (spec, context)=>{
6514
6736
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
6515
6737
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6516
6738
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6517
- if (foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(foldInfoList[0].foldMap)) return result;
6739
+ if ((0, external_remeda_namespaceObject.isNullish)(foldInfoList?.[0])) return result;
6740
+ const isEmptySecondary = (0, external_remeda_namespaceObject.isEmpty)(foldInfoList?.[0].foldMap);
6518
6741
  const id = `${reshapeInfoId}-primary-axis`;
6519
6742
  const seriesIds = [
6520
6743
  `${reshapeInfoId}-primary-series`,
@@ -6537,7 +6760,7 @@ const yLinearPrimary = (spec, context)=>{
6537
6760
  }
6538
6761
  const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
6539
6762
  const linearAxis = {
6540
- visible,
6763
+ visible: isEmptySecondary ? false : visible,
6541
6764
  id,
6542
6765
  seriesId,
6543
6766
  type: log ? 'log' : 'linear',
@@ -6590,7 +6813,7 @@ const yLinearPrimary = (spec, context)=>{
6590
6813
  }
6591
6814
  },
6592
6815
  innerOffset: {
6593
- top: LINEAR_AXIS_INNER_OFFSET_TOP
6816
+ top: 7
6594
6817
  }
6595
6818
  };
6596
6819
  result.axes = [
@@ -6612,6 +6835,8 @@ const yLinearSecondary = (spec, context)=>{
6612
6835
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6613
6836
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6614
6837
  if ((0, external_remeda_namespaceObject.isNullish)(foldInfoList?.[1])) return result;
6838
+ const isEmptySecondary = (0, external_remeda_namespaceObject.isEmpty)(foldInfoList?.[1].foldMap);
6839
+ const onlySecondary = (0, external_remeda_namespaceObject.isEmpty)(foldInfoList?.[0].foldMap) && !isEmptySecondary;
6615
6840
  const sync = {
6616
6841
  axisId: `${reshapeInfoId}-primary-axis`,
6617
6842
  zeroAlign: true
@@ -6639,7 +6864,7 @@ const yLinearSecondary = (spec, context)=>{
6639
6864
  }
6640
6865
  const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
6641
6866
  const linearAxis = {
6642
- visible,
6867
+ visible: isEmptySecondary ? false : visible,
6643
6868
  id,
6644
6869
  seriesId,
6645
6870
  sync,
@@ -6679,7 +6904,7 @@ const yLinearSecondary = (spec, context)=>{
6679
6904
  }
6680
6905
  },
6681
6906
  grid: {
6682
- visible: grid?.visible,
6907
+ visible: onlySecondary ? true : grid?.visible,
6683
6908
  style: {
6684
6909
  lineWidth: grid?.gridWidth,
6685
6910
  stroke: grid?.gridColor
@@ -6693,7 +6918,7 @@ const yLinearSecondary = (spec, context)=>{
6693
6918
  }
6694
6919
  },
6695
6920
  innerOffset: {
6696
- top: LINEAR_AXIS_INNER_OFFSET_TOP
6921
+ top: 7
6697
6922
  }
6698
6923
  };
6699
6924
  result.axes = [
@@ -6824,6 +7049,17 @@ const registerDualAxis = ()=>{
6824
7049
  Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6825
7050
  Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6826
7051
  };
7052
+ const defaultEncodingForPie = (advancedVSeed)=>{
7053
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7054
+ const measures = findAllMeasures(vseedMeasures);
7055
+ const encoding = {};
7056
+ pie_generateDefaultDimensionEncoding(dimensions, encoding);
7057
+ pie_generateDefaultMeasureEncoding(measures, encoding);
7058
+ return {
7059
+ ...advancedVSeed,
7060
+ encoding
7061
+ };
7062
+ };
6827
7063
  const encodingForPie = (advancedVSeed)=>{
6828
7064
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6829
7065
  const measures = findAllMeasures(vseedMeasures);
@@ -6839,40 +7075,52 @@ const encodingForPie = (advancedVSeed)=>{
6839
7075
  encoding
6840
7076
  };
6841
7077
  };
6842
- const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
6843
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
6844
- encoding.angle = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6845
- };
6846
7078
  const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6847
7079
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
6848
7080
  encoding.color = uniqueDimIds.slice(0);
6849
7081
  encoding.detail = uniqueDimIds.slice(0);
6850
- encoding.tooltip = uniqueDimIds;
7082
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
6851
7083
  encoding.label = [];
6852
7084
  encoding.row = [];
6853
7085
  encoding.column = [];
6854
7086
  };
6855
- const pie_generateMeasureEncoding = (measures, encoding)=>{
6856
- encoding.tooltip = measures.map((item)=>item.id);
6857
- encoding.angle = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6858
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6859
- if (color.length > 0) encoding.color = color;
6860
- };
6861
7087
  const pie_generateDimensionEncoding = (dimensions, encoding)=>{
6862
7088
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6863
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6864
7089
  if (0 === encoding.color.length) encoding.color = [
6865
7090
  MeasureName
6866
7091
  ];
6867
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7092
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7093
+ if (0 === encoding.detail.length) encoding.detail = [
7094
+ MeasureName
7095
+ ];
7096
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
7097
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7098
+ };
7099
+ const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
7100
+ encoding.angle = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7101
+ };
7102
+ const pie_generateMeasureEncoding = (measures, encoding)=>{
7103
+ encoding.angle = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7104
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7105
+ if (color.length > 0) encoding.color = color;
7106
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7107
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
7108
+ ...encoding.tooltip || [],
7109
+ ...tooltip
7110
+ ]);
6868
7111
  };
6869
7112
  const pieAdvancedPipeline = [
6870
7113
  initAdvancedVSeed_initAdvancedVSeed,
6871
- defaultMeasures_defaultMeasures,
6872
- defaultDimensions,
6873
- defaultMeasureName,
6874
- encodingForPie,
6875
- buildMeasures,
7114
+ default_defaultMeasures_defaultMeasures,
7115
+ defaultDimensions_defaultDimensions,
7116
+ defaultMeasureName_defaultMeasureName,
7117
+ encodingAdapter([
7118
+ defaultEncodingForPie,
7119
+ buildMeasures
7120
+ ], [
7121
+ encodingForPie,
7122
+ buildMeasures
7123
+ ]),
6876
7124
  pivotAdapter([
6877
7125
  reshapeWithEncoding
6878
7126
  ], [
@@ -6988,11 +7236,16 @@ const registerPie = ()=>{
6988
7236
  };
6989
7237
  const donutAdvancedPipeline = [
6990
7238
  initAdvancedVSeed_initAdvancedVSeed,
6991
- defaultMeasures_defaultMeasures,
6992
- defaultDimensions,
6993
- defaultMeasureName,
6994
- buildMeasures,
6995
- encodingForPie,
7239
+ default_defaultMeasures_defaultMeasures,
7240
+ defaultDimensions_defaultDimensions,
7241
+ defaultMeasureName_defaultMeasureName,
7242
+ encodingAdapter([
7243
+ defaultEncodingForPie,
7244
+ buildMeasures
7245
+ ], [
7246
+ encodingForPie,
7247
+ buildMeasures
7248
+ ]),
6996
7249
  pivotAdapter([
6997
7250
  reshapeWithEncoding
6998
7251
  ], [
@@ -7068,6 +7321,17 @@ const registerDonut = ()=>{
7068
7321
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7069
7322
  Builder._specPipelineMap.donut = donutSpecPipeline;
7070
7323
  };
7324
+ const defaultEncodingForRose = (advancedVSeed)=>{
7325
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7326
+ const measures = findAllMeasures(vseedMeasures);
7327
+ const encoding = {};
7328
+ rose_generateDefaultDimensionEncoding(dimensions, encoding);
7329
+ rose_generateDefaultMeasureEncoding(measures, encoding);
7330
+ return {
7331
+ ...advancedVSeed,
7332
+ encoding
7333
+ };
7334
+ };
7071
7335
  const encodingForRose = (advancedVSeed)=>{
7072
7336
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7073
7337
  const measures = findAllMeasures(vseedMeasures);
@@ -7083,46 +7347,58 @@ const encodingForRose = (advancedVSeed)=>{
7083
7347
  encoding
7084
7348
  };
7085
7349
  };
7086
- const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
7087
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
7088
- encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7089
- };
7090
7350
  const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7091
7351
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7092
7352
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
7093
7353
  encoding.angle = uniqueDimIds.slice(0, 1);
7094
7354
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7095
7355
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7096
- encoding.tooltip = uniqueDimIds;
7356
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7097
7357
  encoding.label = [];
7098
7358
  encoding.row = [];
7099
7359
  encoding.column = [];
7100
7360
  };
7101
- const rose_generateMeasureEncoding = (measures, encoding)=>{
7102
- encoding.tooltip = measures.map((item)=>item.id);
7103
- encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7104
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7105
- if (color.length > 0) encoding.color = color;
7106
- };
7107
7361
  const rose_generateDimensionEncoding = (dimensions, encoding)=>{
7108
7362
  encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7109
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7110
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7111
7363
  if (0 === encoding.angle.length) encoding.angle = [
7112
7364
  dimensions[0].id
7113
7365
  ];
7366
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7114
7367
  if (0 === encoding.color.length) encoding.color = [
7115
7368
  MeasureName
7116
7369
  ];
7117
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7370
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7371
+ if (0 === encoding.detail.length) encoding.detail = [
7372
+ MeasureName
7373
+ ];
7374
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
7375
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7376
+ };
7377
+ const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
7378
+ encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7379
+ };
7380
+ const rose_generateMeasureEncoding = (measures, encoding)=>{
7381
+ encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7382
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7383
+ if (color.length > 0) encoding.color = color;
7384
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7385
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
7386
+ ...encoding.tooltip || [],
7387
+ ...tooltip
7388
+ ]);
7118
7389
  };
7119
7390
  const roseAdvancedPipeline = [
7120
7391
  initAdvancedVSeed_initAdvancedVSeed,
7121
- defaultMeasures_defaultMeasures,
7122
- defaultDimensions,
7123
- defaultMeasureName,
7124
- encodingForRose,
7125
- buildMeasures,
7392
+ default_defaultMeasures_defaultMeasures,
7393
+ defaultDimensions_defaultDimensions,
7394
+ defaultMeasureName_defaultMeasureName,
7395
+ encodingAdapter([
7396
+ defaultEncodingForRose,
7397
+ buildMeasures
7398
+ ], [
7399
+ encodingForRose,
7400
+ buildMeasures
7401
+ ]),
7126
7402
  pivotAdapter([
7127
7403
  reshapeWithEncoding
7128
7404
  ], [
@@ -7318,11 +7594,16 @@ const registerRose = ()=>{
7318
7594
  };
7319
7595
  const roseParallelAdvancedPipeline = [
7320
7596
  initAdvancedVSeed_initAdvancedVSeed,
7321
- defaultMeasures_defaultMeasures,
7322
- defaultDimensions,
7323
- defaultMeasureName,
7324
- encodingForRose,
7325
- buildMeasures,
7597
+ default_defaultMeasures_defaultMeasures,
7598
+ defaultDimensions_defaultDimensions,
7599
+ defaultMeasureName_defaultMeasureName,
7600
+ encodingAdapter([
7601
+ defaultEncodingForRose,
7602
+ buildMeasures
7603
+ ], [
7604
+ encodingForRose,
7605
+ buildMeasures
7606
+ ]),
7326
7607
  pivotAdapter([
7327
7608
  reshapeWithEncoding
7328
7609
  ], [
@@ -7428,6 +7709,17 @@ const registerRoseParallel = ()=>{
7428
7709
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7429
7710
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7430
7711
  };
7712
+ const defaultEncodingForRadar = (advancedVSeed)=>{
7713
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7714
+ const measures = findAllMeasures(vseedMeasures);
7715
+ const encoding = {};
7716
+ radar_generateDefaultDimensionEncoding(dimensions, encoding);
7717
+ radar_generateDefaultMeasureEncoding(measures, encoding);
7718
+ return {
7719
+ ...advancedVSeed,
7720
+ encoding
7721
+ };
7722
+ };
7431
7723
  const encodingForRadar = (advancedVSeed)=>{
7432
7724
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7433
7725
  const measures = findAllMeasures(vseedMeasures);
@@ -7443,44 +7735,57 @@ const encodingForRadar = (advancedVSeed)=>{
7443
7735
  encoding
7444
7736
  };
7445
7737
  };
7446
- const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7447
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
7448
- encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7449
- };
7450
7738
  const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7451
7739
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
7452
7740
  encoding.angle = uniqueDimIds.slice(0, 1);
7453
7741
  encoding.color = uniqueDimIds.slice(1);
7454
- encoding.tooltip = uniqueDimIds;
7742
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7455
7743
  encoding.detail = [];
7456
7744
  encoding.label = [];
7457
7745
  encoding.row = [];
7458
7746
  encoding.column = [];
7459
7747
  };
7460
- const radar_generateMeasureEncoding = (measures, encoding)=>{
7461
- encoding.tooltip = measures.map((item)=>item.id);
7462
- encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7463
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7464
- if (color.length > 0) encoding.color = color;
7465
- };
7466
7748
  const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7467
7749
  encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7468
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7469
- encoding.detail = [];
7470
7750
  if (0 === encoding.angle.length) encoding.angle = [
7471
7751
  dimensions[0].id
7472
7752
  ];
7753
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7473
7754
  if (0 === encoding.color.length) encoding.color = [
7474
7755
  MeasureName
7475
7756
  ];
7757
+ encoding.detail = [];
7758
+ if (0 === encoding.detail.length) encoding.detail = [
7759
+ MeasureName
7760
+ ];
7761
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
7762
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7763
+ };
7764
+ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7765
+ encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7766
+ };
7767
+ const radar_generateMeasureEncoding = (measures, encoding)=>{
7768
+ encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7769
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7770
+ if (color.length > 0) encoding.color = color;
7771
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7772
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
7773
+ ...encoding.tooltip || [],
7774
+ ...tooltip
7775
+ ]);
7476
7776
  };
7477
7777
  const radarAdvancedPipeline = [
7478
7778
  initAdvancedVSeed_initAdvancedVSeed,
7479
- defaultMeasures_defaultMeasures,
7480
- defaultDimensions,
7481
- defaultMeasureName,
7482
- encodingForRadar,
7483
- buildMeasures,
7779
+ default_defaultMeasures_defaultMeasures,
7780
+ defaultDimensions_defaultDimensions,
7781
+ defaultMeasureName_defaultMeasureName,
7782
+ encodingAdapter([
7783
+ defaultEncodingForRadar,
7784
+ buildMeasures
7785
+ ], [
7786
+ encodingForRadar,
7787
+ buildMeasures
7788
+ ]),
7484
7789
  pivotAdapter([
7485
7790
  reshapeWithEncoding
7486
7791
  ], [
@@ -7614,6 +7919,17 @@ const registerRadar = ()=>{
7614
7919
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7615
7920
  Builder._specPipelineMap.radar = radarSpecPipeline;
7616
7921
  };
7922
+ const defaultEncodingForFunnel = (advancedVSeed)=>{
7923
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7924
+ const measures = findAllMeasures(vseedMeasures);
7925
+ const encoding = {};
7926
+ funnel_generateDefaultDimensionEncoding(dimensions, encoding);
7927
+ funnel_generateDefaultMeasureEncoding(measures, encoding);
7928
+ return {
7929
+ ...advancedVSeed,
7930
+ encoding
7931
+ };
7932
+ };
7617
7933
  const encodingForFunnel = (advancedVSeed)=>{
7618
7934
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7619
7935
  const measures = findAllMeasures(vseedMeasures);
@@ -7629,40 +7945,54 @@ const encodingForFunnel = (advancedVSeed)=>{
7629
7945
  encoding
7630
7946
  };
7631
7947
  };
7632
- const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7633
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
7634
- encoding.size = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7635
- };
7636
7948
  const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7637
7949
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
7638
7950
  encoding.color = uniqueDimIds.slice(0);
7639
7951
  encoding.detail = uniqueDimIds.slice(0);
7640
- encoding.tooltip = uniqueDimIds;
7952
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7641
7953
  encoding.label = [];
7642
7954
  encoding.row = [];
7643
7955
  encoding.column = [];
7644
7956
  };
7645
- const funnel_generateMeasureEncoding = (measures, encoding)=>{
7646
- encoding.tooltip = measures.map((item)=>item.id);
7647
- encoding.size = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7648
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7649
- if (color.length > 0) encoding.color = color;
7650
- };
7651
7957
  const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7652
7958
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7653
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7654
7959
  if (0 === encoding.color.length) encoding.color = [
7655
7960
  MeasureName
7656
7961
  ];
7657
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7962
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7963
+ if (0 === encoding.detail.length) encoding.detail = [
7964
+ MeasureName
7965
+ ];
7966
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
7967
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7968
+ };
7969
+ const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7970
+ encoding.size = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7971
+ };
7972
+ const funnel_generateMeasureEncoding = (measures, encoding)=>{
7973
+ encoding.size = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7974
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7975
+ if (color.length > 0) encoding.color = [
7976
+ color[0]
7977
+ ];
7978
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7979
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
7980
+ ...encoding.tooltip || [],
7981
+ ...tooltip
7982
+ ]);
7658
7983
  };
7659
7984
  const funnelAdvancedPipeline = [
7660
7985
  initAdvancedVSeed_initAdvancedVSeed,
7661
- defaultMeasures_defaultMeasures,
7662
- defaultDimensions,
7663
- defaultMeasureName,
7664
- encodingForFunnel,
7665
- buildMeasures,
7986
+ default_defaultMeasures_defaultMeasures,
7987
+ defaultDimensions_defaultDimensions,
7988
+ defaultMeasureName_defaultMeasureName,
7989
+ encodingAdapter([
7990
+ defaultEncodingForFunnel,
7991
+ buildMeasures
7992
+ ], [
7993
+ encodingForFunnel,
7994
+ buildMeasures
7995
+ ]),
7666
7996
  pivotAdapter([
7667
7997
  reshapeWithEncoding
7668
7998
  ], [
@@ -7775,6 +8105,17 @@ const registerFunnel = ()=>{
7775
8105
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7776
8106
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7777
8107
  };
8108
+ const defaultEncodingForHeatmap = (advancedVSeed)=>{
8109
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8110
+ const measures = findAllMeasures(vseedMeasures);
8111
+ const encoding = {};
8112
+ heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
8113
+ heatmap_generateDefaultMeasureEncoding(measures, encoding);
8114
+ return {
8115
+ ...advancedVSeed,
8116
+ encoding
8117
+ };
8118
+ };
7778
8119
  const encodingForHeatmap = (advancedVSeed)=>{
7779
8120
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7780
8121
  const measures = findAllMeasures(vseedMeasures);
@@ -7790,10 +8131,6 @@ const encodingForHeatmap = (advancedVSeed)=>{
7790
8131
  encoding
7791
8132
  };
7792
8133
  };
7793
- const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
7794
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
7795
- encoding.color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
7796
- };
7797
8134
  const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7798
8135
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7799
8136
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
@@ -7801,39 +8138,59 @@ const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7801
8138
  encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7802
8139
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7803
8140
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7804
- encoding.tooltip = uniqueDimIds;
8141
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7805
8142
  encoding.label = [];
7806
8143
  encoding.row = [];
7807
8144
  encoding.column = [];
7808
8145
  };
7809
- const heatmap_generateMeasureEncoding = (measures, encoding)=>{
7810
- encoding.tooltip = measures.map((item)=>item.id);
7811
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7812
- if (color.length > 0) encoding.color = color;
7813
- return encoding;
7814
- };
7815
8146
  const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7816
8147
  encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
7817
- encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
7818
- encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7819
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7820
8148
  if (0 === encoding.x.length) encoding.x = [
7821
8149
  dimensions[0].id
7822
8150
  ];
8151
+ encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
7823
8152
  if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
7824
8153
  else encoding.y = dimensions.slice(0).map((item)=>item.id);
8154
+ encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7825
8155
  if (0 === encoding.color.length) encoding.color = [
7826
8156
  MeasureName
7827
8157
  ];
7828
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
8158
+ encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8159
+ if (0 === encoding.detail.length) encoding.detail = [
8160
+ MeasureName
8161
+ ];
8162
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(dimensions.map((item)=>item.id));
8163
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
8164
+ };
8165
+ const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
8166
+ const colorDims = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
8167
+ if (colorDims.length > 0) encoding.color = [
8168
+ colorDims[0]
8169
+ ];
8170
+ };
8171
+ const heatmap_generateMeasureEncoding = (measures, encoding)=>{
8172
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8173
+ if (color.length > 0) encoding.color = [
8174
+ color[0]
8175
+ ];
8176
+ const tooltip = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
8177
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)([
8178
+ ...encoding.tooltip || [],
8179
+ ...tooltip
8180
+ ]);
7829
8181
  };
7830
8182
  const heatmapAdvancedPipeline = [
7831
8183
  initAdvancedVSeed_initAdvancedVSeed,
7832
- defaultMeasures_defaultMeasures,
7833
- defaultDimensions,
7834
- defaultMeasureName,
7835
- encodingForHeatmap,
7836
- buildMeasures,
8184
+ default_defaultMeasures_defaultMeasures,
8185
+ defaultDimensions_defaultDimensions,
8186
+ defaultMeasureName_defaultMeasureName,
8187
+ encodingAdapter([
8188
+ defaultEncodingForHeatmap,
8189
+ buildMeasures
8190
+ ], [
8191
+ encodingForHeatmap,
8192
+ buildMeasures
8193
+ ]),
7837
8194
  pivotAdapter([
7838
8195
  reshapeWithEncoding
7839
8196
  ], [
@@ -7886,6 +8243,107 @@ const cellStyle = (spec)=>{
7886
8243
  }
7887
8244
  };
7888
8245
  };
8246
+ const tooltipHeatmap = (spec, context)=>{
8247
+ const result = {
8248
+ ...spec
8249
+ };
8250
+ const { advancedVSeed } = context;
8251
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8252
+ const baseConfig = advancedVSeed.config[chartType];
8253
+ const { tooltip = {
8254
+ enable: true
8255
+ } } = baseConfig;
8256
+ const { enable } = tooltip;
8257
+ const { foldInfo } = datasetReshapeInfo[0];
8258
+ result.tooltip = {
8259
+ visible: enable,
8260
+ mark: {
8261
+ title: {
8262
+ visible: false
8263
+ },
8264
+ content: tooltipHeatmap_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo)
8265
+ },
8266
+ dimension: {
8267
+ visible: false
8268
+ }
8269
+ };
8270
+ return result;
8271
+ };
8272
+ const tooltipHeatmap_createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
8273
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
8274
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
8275
+ const dimContent = dims.map((item)=>({
8276
+ visible: true,
8277
+ hasShape: true,
8278
+ shapeType: 'rectRound',
8279
+ key: (v)=>{
8280
+ const datum = v;
8281
+ if (item.alias || item.id) return item.alias || item.id;
8282
+ return datum && datum[item.id];
8283
+ },
8284
+ value: (v)=>{
8285
+ const datum = v;
8286
+ return datum && datum[item.id];
8287
+ }
8288
+ }));
8289
+ const meaContent = meas.map((item)=>({
8290
+ visible: true,
8291
+ hasShape: true,
8292
+ shapeType: 'rectRound',
8293
+ key: item.alias || item.id,
8294
+ value: (v)=>{
8295
+ const datum = v;
8296
+ if (!datum) return '';
8297
+ const id = item.id;
8298
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
8299
+ const originalData = datum[ORIGINAL_DATA];
8300
+ const value = originalData[id];
8301
+ const measure = findMeasureById(measures, id);
8302
+ if (!measure) return String(value);
8303
+ const { format = {}, autoFormat = true } = measure;
8304
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
8305
+ const formatter = createFormatter(format);
8306
+ return formatter(value);
8307
+ }
8308
+ if (autoFormat) return autoFormatter(value, locale);
8309
+ return String(value);
8310
+ }
8311
+ }));
8312
+ const foldMeaContent = [
8313
+ foldInfo
8314
+ ].map((foldInfo)=>({
8315
+ visible: true,
8316
+ hasShape: true,
8317
+ shapeType: 'rectRound',
8318
+ key: (v)=>{
8319
+ const { measureId, foldMap } = foldInfo;
8320
+ const datum = v;
8321
+ const id = datum[measureId];
8322
+ return foldMap[id] || id;
8323
+ },
8324
+ value: (v)=>{
8325
+ const { measureId, measureValue } = foldInfo;
8326
+ const datum = v;
8327
+ if (!datum) return '';
8328
+ const value = datum[measureValue];
8329
+ const id = datum[measureId];
8330
+ const measure = findMeasureById(measures, id);
8331
+ if (!measure) return String(value);
8332
+ const { format = {}, autoFormat = true } = measure;
8333
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
8334
+ const formatter = createFormatter(format);
8335
+ return formatter(value);
8336
+ }
8337
+ if (autoFormat) return autoFormatter(value, locale);
8338
+ return String(value);
8339
+ }
8340
+ }));
8341
+ return [
8342
+ ...dimContent,
8343
+ ...foldMeaContent,
8344
+ ...meaContent
8345
+ ];
8346
+ };
7889
8347
  const initHeatmap = (spec, context)=>{
7890
8348
  const result = {
7891
8349
  ...spec
@@ -7929,7 +8387,7 @@ const heatmap = [
7929
8387
  labelColorInversion,
7930
8388
  colorAdapter(discreteLegend, colorLegend),
7931
8389
  colorCellStyleFill(cellStyle),
7932
- tooltip_tooltip,
8390
+ tooltipHeatmap,
7933
8391
  annotationPoint_annotationPoint,
7934
8392
  annotationVerticalLine_annotationVerticalLine,
7935
8393
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7948,7 +8406,7 @@ const pivotHeatmap = [
7948
8406
  label_label,
7949
8407
  labelColorInversion,
7950
8408
  discreteLegend,
7951
- tooltip_tooltip,
8409
+ tooltipHeatmap,
7952
8410
  colorCellStyleFill(cellStyle),
7953
8411
  annotationPoint_annotationPoint,
7954
8412
  annotationVerticalLine_annotationVerticalLine,
@@ -8627,6 +9085,15 @@ const updateAdvanced = (chartType, advancedPipe)=>{
8627
9085
  const updateSpec = (chartType, specPipe)=>{
8628
9086
  Builder._customSpecPipe[chartType] = specPipe;
8629
9087
  };
9088
+ const findAllDimensions = (dimensions = [])=>{
9089
+ if (!dimensions) return [];
9090
+ const result = [];
9091
+ preorderTraverse(dimensions, (node)=>{
9092
+ if (!('children' in node)) result.push(node);
9093
+ return false;
9094
+ });
9095
+ return result;
9096
+ };
8630
9097
  const external_zod_namespaceObject = require("zod");
8631
9098
  const zChartType = external_zod_namespaceObject.z["enum"]([
8632
9099
  'table',
@@ -8671,11 +9138,6 @@ const zDataset = external_zod_namespaceObject.z.array(zDatum);
8671
9138
  const zDimension = external_zod_namespaceObject.z.object({
8672
9139
  id: external_zod_namespaceObject.z.string(),
8673
9140
  alias: external_zod_namespaceObject.z.string().optional(),
8674
- location: external_zod_namespaceObject.z["enum"]([
8675
- 'dimension',
8676
- 'rowDimension',
8677
- 'columnDimension'
8678
- ]).default('dimension'),
8679
9141
  encoding: external_zod_namespaceObject.z["enum"]([
8680
9142
  'xAxis',
8681
9143
  'yAxis',
@@ -9968,7 +10430,9 @@ exports.FoldMeasureName = __webpack_exports__.FoldMeasureName;
9968
10430
  exports.FoldMeasureValue = __webpack_exports__.FoldMeasureValue;
9969
10431
  exports.FoldPrimaryMeasureValue = __webpack_exports__.FoldPrimaryMeasureValue;
9970
10432
  exports.FoldSecondaryMeasureValue = __webpack_exports__.FoldSecondaryMeasureValue;
10433
+ exports.FoldXMeasureId = __webpack_exports__.FoldXMeasureId;
9971
10434
  exports.FoldXMeasureValue = __webpack_exports__.FoldXMeasureValue;
10435
+ exports.FoldYMeasureId = __webpack_exports__.FoldYMeasureId;
9972
10436
  exports.FoldYMeasureValue = __webpack_exports__.FoldYMeasureValue;
9973
10437
  exports.MeasureName = __webpack_exports__.MeasureName;
9974
10438
  exports.ORIGINAL_DATA = __webpack_exports__.ORIGINAL_DATA;
@@ -10178,7 +10642,9 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10178
10642
  "FoldMeasureValue",
10179
10643
  "FoldPrimaryMeasureValue",
10180
10644
  "FoldSecondaryMeasureValue",
10645
+ "FoldXMeasureId",
10181
10646
  "FoldXMeasureValue",
10647
+ "FoldYMeasureId",
10182
10648
  "FoldYMeasureValue",
10183
10649
  "MeasureName",
10184
10650
  "ORIGINAL_DATA",