@visactor/vseed 0.1.4 → 0.1.6

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 (62) hide show
  1. package/dist/builder/builder/builder.d.ts +2 -2
  2. package/dist/index.cjs +851 -703
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.js +851 -703
  5. package/dist/index.js.map +1 -1
  6. package/dist/pipeline/advanced/chart/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
  7. package/dist/pipeline/advanced/chart/pipes/default/defaultMeasureName.d.ts +2 -0
  8. package/dist/pipeline/advanced/chart/pipes/default/defaultMeasures.d.ts +5 -0
  9. package/dist/pipeline/advanced/chart/pipes/default/index.d.ts +3 -0
  10. package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +19 -0
  11. package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +17 -0
  12. package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
  13. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -2
  14. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -18
  15. package/dist/pipeline/advanced/table/pipes/reshape/index.d.ts +1 -0
  16. package/dist/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +2 -0
  17. package/dist/pipeline/spec/chart/pipes/color/colorCellStyleFill.d.ts +2 -0
  18. package/dist/pipeline/spec/chart/pipes/color/colorFunnelStyleFill.d.ts +2 -0
  19. package/dist/pipeline/spec/chart/pipes/color/colorPieStyleFill.d.ts +2 -0
  20. package/dist/pipeline/spec/chart/pipes/color/colorRoseStyleFill.d.ts +2 -0
  21. package/dist/pipeline/spec/chart/pipes/color/index.d.ts +4 -0
  22. package/dist/pipeline/spec/chart/pipes/markStyle/cellStyle.d.ts +2 -0
  23. package/dist/pipeline/spec/chart/pipes/markStyle/funnelStyle.d.ts +2 -0
  24. package/dist/pipeline/spec/chart/pipes/markStyle/index.d.ts +5 -1
  25. package/dist/pipeline/spec/chart/pipes/markStyle/pieStyle.d.ts +2 -0
  26. package/dist/pipeline/spec/chart/pipes/markStyle/roseStyle.d.ts +2 -0
  27. package/dist/types/advancedVSeed.d.ts +2 -0
  28. package/dist/types/chartType/area/area.d.ts +20 -3
  29. package/dist/types/chartType/area/zArea.d.ts +2 -0
  30. package/dist/types/chartType/areaPercent/areaPercent.d.ts +16 -0
  31. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +2 -0
  32. package/dist/types/chartType/bar/zBar.d.ts +2 -0
  33. package/dist/types/chartType/barParallel/zBarParallel.d.ts +2 -0
  34. package/dist/types/chartType/barPercent/zBarPercent.d.ts +2 -0
  35. package/dist/types/chartType/column/column.d.ts +17 -1
  36. package/dist/types/chartType/column/zColumn.d.ts +2 -0
  37. package/dist/types/chartType/columnParallel/columnParallel.d.ts +17 -0
  38. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +2 -0
  39. package/dist/types/chartType/columnPercent/columnPercent.d.ts +17 -1
  40. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +2 -0
  41. package/dist/types/chartType/donut/zDonut.d.ts +2 -0
  42. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +10 -0
  43. package/dist/types/chartType/funnel/zFunnel.d.ts +2 -0
  44. package/dist/types/chartType/heatmap/zHeatmap.d.ts +2 -0
  45. package/dist/types/chartType/line/line.d.ts +16 -0
  46. package/dist/types/chartType/line/zLine.d.ts +2 -0
  47. package/dist/types/chartType/pie/zPie.d.ts +2 -0
  48. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +2 -0
  49. package/dist/types/chartType/radar/zRadar.d.ts +2 -0
  50. package/dist/types/chartType/rose/zRose.d.ts +2 -0
  51. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +2 -0
  52. package/dist/types/chartType/scatter/zScatter.d.ts +10 -0
  53. package/dist/types/chartType/table/zTable.d.ts +2 -0
  54. package/dist/types/properties/measures/measures.d.ts +3 -1
  55. package/dist/types/properties/measures/zDualMeasures.d.ts +16 -0
  56. package/dist/types/properties/measures/zMeasures.d.ts +6 -0
  57. package/dist/types/properties/measures/zScatterMeasures.d.ts +16 -0
  58. package/dist/types/zVseed.d.ts +56 -0
  59. package/dist/umd/index.js +872 -724
  60. package/dist/umd/index.js.map +1 -1
  61. package/package.json +1 -1
  62. package/dist/pipeline/advanced/chart/pipes/init/utils.d.ts +0 -2
package/dist/index.cjs CHANGED
@@ -425,7 +425,8 @@ const autoMeasures = (advancedVSeed, context)=>{
425
425
  void 0
426
426
  ].includes(key)).map((measure)=>({
427
427
  id: measure,
428
- alias: measure
428
+ alias: measure,
429
+ encoding: 'column'
429
430
  }));
430
431
  return result;
431
432
  };
@@ -509,7 +510,7 @@ const autoDimensions = (advancedVSeed, context)=>{
509
510
  ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
510
511
  id: dim,
511
512
  alias: dim,
512
- location: 'dimension'
513
+ encoding: 'column'
513
514
  }));
514
515
  return result;
515
516
  };
@@ -944,10 +945,27 @@ const autoPivotMeasures = (advancedVSeed, context)=>{
944
945
  void 0
945
946
  ].includes(key)).map((measure)=>({
946
947
  id: measure,
947
- alias: measure
948
+ alias: measure,
949
+ encoding: 'detail'
948
950
  }));
949
951
  return result;
950
952
  };
953
+ const ORIGINAL_DATA = '__OriginalData__';
954
+ const Separator = '-';
955
+ const FoldMeasureName = '__MeaName__';
956
+ const FoldMeasureId = '__MeaId__';
957
+ const FoldMeasureValue = '__MeaValue__';
958
+ const MeasureName = FoldMeasureName;
959
+ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
960
+ const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
961
+ const FoldXMeasureValue = '__MeaXValue__';
962
+ const FoldYMeasureValue = '__MeaYValue__';
963
+ const XEncoding = '__Dim_X__';
964
+ const YEncoding = '__Dim_Y__';
965
+ const AngleEncoding = '__Dim_Angle__';
966
+ const DetailEncoding = '__Dim_Detail__';
967
+ const ColorEncoding = '__Dim_Color__';
968
+ const ColorIdEncoding = '__Dim_ColorId__';
951
969
  const findAllDimensions = (dimensions = [])=>{
952
970
  if (!dimensions) return [];
953
971
  const result = [];
@@ -964,15 +982,21 @@ const autoPivotDimensions = (advancedVSeed, context)=>{
964
982
  const { vseed } = context;
965
983
  const { dimensions, dataset } = vseed;
966
984
  const measures = findAllMeasures(advancedVSeed.measures);
985
+ const MeaName = {
986
+ id: MeasureName,
987
+ alias: intl.i18n`指标名称`
988
+ };
967
989
  if (!dataset) throw new Error('dataset is required');
968
990
  if (0 === dataset.length) return result;
969
991
  if (dimensions) {
970
992
  const newDimensions = findAllDimensions(dimensions);
993
+ if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
971
994
  result.dimensions = newDimensions.map((item, index)=>{
995
+ if ('row' === item.encoding || 'column' === item.encoding) return item;
972
996
  if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
973
997
  return {
974
998
  ...item,
975
- location: index % 2 === 0 ? 'columnDimension' : 'rowDimension'
999
+ encoding: index % 2 === 0 ? 'column' : 'row'
976
1000
  };
977
1001
  });
978
1002
  return result;
@@ -982,15 +1006,19 @@ const autoPivotDimensions = (advancedVSeed, context)=>{
982
1006
  ...prev,
983
1007
  ...cur
984
1008
  }), {});
985
- let i = 0;
986
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1009
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
987
1010
  '',
988
1011
  null,
989
1012
  void 0
990
- ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
1013
+ ].includes(key) && !measures.some((measure)=>measure.id === key));
1014
+ result.dimensions = newDimensions.map((dim)=>({
991
1015
  id: dim,
992
- alias: dim,
993
- location: i++ % 2 === 0 ? 'columnDimension' : 'rowDimension'
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'
994
1022
  }));
995
1023
  return result;
996
1024
  };
@@ -1021,11 +1049,89 @@ const pivotTableConfig = (advancedVSeed, context)=>{
1021
1049
  };
1022
1050
  return result;
1023
1051
  };
1052
+ const foldMeasures = (dataset, measures, options)=>{
1053
+ const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1054
+ const foldInfo = {
1055
+ measureId,
1056
+ measureName,
1057
+ measureValue,
1058
+ colorRange: [
1059
+ 0,
1060
+ 1
1061
+ ],
1062
+ measureRange: [
1063
+ 0,
1064
+ 1
1065
+ ],
1066
+ foldMap: {}
1067
+ };
1068
+ const result = new Array(dataset.length * measures.length);
1069
+ let index = 0;
1070
+ const ids = measures.map((d)=>d.id);
1071
+ for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
1072
+ const datum = (0, external_remeda_namespaceObject.omit)({
1073
+ ...dataset[i]
1074
+ }, ids);
1075
+ datum[ORIGINAL_DATA] = dataset[i];
1076
+ const measure = measures[j];
1077
+ const { id, alias } = measure;
1078
+ datum[id] = dataset[i][id];
1079
+ datum[measureId] = id;
1080
+ datum[measureName] = alias || id;
1081
+ datum[measureValue] = dataset[i][id];
1082
+ if (colorMeasureId) {
1083
+ const value = datum[ORIGINAL_DATA][colorMeasureId];
1084
+ datum[ColorEncoding] = value;
1085
+ datum[ColorIdEncoding] = colorMeasureId;
1086
+ foldInfo.colorRange = [
1087
+ Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
1088
+ Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
1089
+ ];
1090
+ }
1091
+ foldInfo.measureRange = [
1092
+ Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
1093
+ Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
1094
+ ];
1095
+ foldInfo.foldMap[id] = alias;
1096
+ result[index++] = datum;
1097
+ }
1098
+ return {
1099
+ dataset: result,
1100
+ foldInfo
1101
+ };
1102
+ };
1103
+ const reshapePivotTable = (advancedVSeed, context)=>{
1104
+ const result = {
1105
+ ...advancedVSeed
1106
+ };
1107
+ const { vseed } = context;
1108
+ const { dataset, chartType } = vseed;
1109
+ const { dimensions, measures } = advancedVSeed;
1110
+ const { dataset: newDatasets, foldInfo } = foldMeasures(dataset, findAllMeasures(measures), {
1111
+ measureId: FoldMeasureId,
1112
+ measureName: FoldMeasureName,
1113
+ measureValue: FoldMeasureValue
1114
+ });
1115
+ const datasetReshapeInfo = [
1116
+ {
1117
+ id: String(chartType),
1118
+ index: 0,
1119
+ foldInfo
1120
+ }
1121
+ ];
1122
+ return {
1123
+ ...result,
1124
+ dataset: newDatasets,
1125
+ datasetReshapeInfo: datasetReshapeInfo,
1126
+ dimensions,
1127
+ measures
1128
+ };
1129
+ };
1024
1130
  const pivotTableAdvancedPipeline = [
1025
1131
  initAdvancedVSeed,
1026
1132
  autoPivotMeasures,
1027
1133
  autoPivotDimensions,
1028
- records_records,
1134
+ reshapePivotTable,
1029
1135
  pivotTableConfig,
1030
1136
  theme_theme
1031
1137
  ];
@@ -1072,7 +1178,7 @@ const initPivotTable = (spec, context)=>{
1072
1178
  const pivotColumns = (spec, context)=>{
1073
1179
  const { advancedVSeed } = context;
1074
1180
  const dimensions = advancedVSeed.dimensions;
1075
- const columns = dimensions.filter((item)=>'columnDimension' === item['location']);
1181
+ const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
1076
1182
  return {
1077
1183
  ...spec,
1078
1184
  columns: columns.map((item)=>({
@@ -1085,7 +1191,7 @@ const pivotColumns = (spec, context)=>{
1085
1191
  const pivotRows = (spec, context)=>{
1086
1192
  const { advancedVSeed } = context;
1087
1193
  const dimensions = advancedVSeed.dimensions;
1088
- const rows = dimensions.filter((item)=>'rowDimension' === item['location']);
1194
+ const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
1089
1195
  return {
1090
1196
  ...spec,
1091
1197
  rows: rows.map((item)=>({
@@ -1097,25 +1203,31 @@ const pivotRows = (spec, context)=>{
1097
1203
  };
1098
1204
  const pivotIndicators = (spec, context)=>{
1099
1205
  const { advancedVSeed } = context;
1100
- const { locale } = advancedVSeed;
1101
- const measures = advancedVSeed.measures;
1206
+ const { locale, measures, datasetReshapeInfo } = advancedVSeed;
1207
+ const { foldInfo } = datasetReshapeInfo[0];
1102
1208
  return {
1103
1209
  ...spec,
1104
1210
  indicatorsAsCol: true,
1105
1211
  indicatorTitle: intl.i18n`指标名称`,
1106
- indicators: measures.map((item)=>{
1107
- if (isMeasure(item)) return {
1212
+ hideIndicatorName: true,
1213
+ indicators: [
1214
+ {
1108
1215
  cellType: 'text',
1109
- indicatorKey: item.id,
1110
- title: item.alias || item.id,
1216
+ indicatorKey: foldInfo.measureValue,
1217
+ title: 'indicator',
1111
1218
  width: 'auto',
1112
- format: pivotIndicators_fieldFormat(item, locale)
1113
- };
1114
- return {};
1115
- })
1219
+ format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
1220
+ }
1221
+ ]
1116
1222
  };
1117
1223
  };
1118
- const pivotIndicators_fieldFormat = (node, locale)=>(value)=>{
1224
+ const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
1225
+ if (!(0, external_remeda_namespaceObject.isNumber)(col) || !(0, external_remeda_namespaceObject.isNumber)(row) || !table) return value;
1226
+ const datum = table.getCellOriginRecord(col, row);
1227
+ const { measureId: foldMeasureId } = foldInfo;
1228
+ const measureId = datum[0][foldMeasureId];
1229
+ const node = findMeasureById(measures, measureId);
1230
+ if (!node) return value;
1119
1231
  const { format = {}, autoFormat = true } = node;
1120
1232
  if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
1121
1233
  const formatter = createFormatter(format);
@@ -1271,95 +1383,81 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1271
1383
  locale: locale || 'zh-CN'
1272
1384
  };
1273
1385
  };
1274
- const ORIGINAL_DATA = '__OriginalData__';
1275
- const Separator = '-';
1276
- const FoldMeasureName = '__MeaName__';
1277
- const FoldMeasureId = '__MeaId__';
1278
- const FoldMeasureValue = '__MeaValue__';
1279
- const MeasureName = FoldMeasureName;
1280
- const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1281
- const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1282
- const FoldXMeasureValue = '__MeaXValue__';
1283
- const FoldYMeasureValue = '__MeaYValue__';
1284
- const XEncoding = '__Dim_X__';
1285
- const YEncoding = '__Dim_Y__';
1286
- const AngleEncoding = '__Dim_Angle__';
1287
- const DetailEncoding = '__Dim_Detail__';
1288
- const ColorEncoding = '__Dim_Color__';
1289
- const ColorIdEncoding = '__Dim_ColorId__';
1290
- const getBasicDimensions = (vseed)=>{
1291
- const { dimensions, dataset } = vseed;
1292
- const MeaName = {
1293
- id: MeasureName,
1294
- alias: intl.i18n`指标名称`,
1295
- encoding: 'detail'
1386
+ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1387
+ const { vseed } = context;
1388
+ const { measures, dataset } = vseed;
1389
+ if (measures && measures.length > 0) return {
1390
+ ...advancedVSeed,
1391
+ measures
1296
1392
  };
1297
1393
  if (!dataset) throw new Error('dataset is required');
1298
- if (0 === dataset.length) return [];
1299
- if (dimensions) {
1300
- const basicDimensions = dimensions.map((dim)=>({
1301
- location: 'dimension',
1302
- ...dim
1303
- }));
1304
- if (basicDimensions.some((dim)=>dim.id === MeasureName)) return basicDimensions;
1305
- basicDimensions.push(MeaName);
1306
- return basicDimensions;
1307
- }
1394
+ if (0 === dataset.length) return {
1395
+ ...advancedVSeed,
1396
+ measures: []
1397
+ };
1308
1398
  const top100dataset = dataset.slice(0, 100);
1309
1399
  const sample = top100dataset.reduce((prev, cur)=>({
1310
1400
  ...prev,
1311
1401
  ...cur
1312
1402
  }), {});
1313
- const basicDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1403
+ const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1314
1404
  '',
1315
1405
  null,
1316
1406
  void 0
1317
- ].includes(key)).map((dim)=>({
1318
- id: dim,
1319
- alias: dim,
1320
- location: 'dimension'
1407
+ ].includes(key)).map((measure)=>({
1408
+ id: measure,
1409
+ alias: measure
1321
1410
  }));
1322
- basicDimensions.push(MeaName);
1323
- return basicDimensions;
1324
- };
1325
- const getBasicMeasures = (vseed)=>{
1326
- const { dataset, measures } = vseed;
1327
- if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
1328
- return measures;
1411
+ return {
1412
+ ...advancedVSeed,
1413
+ measures: defaultMeasures
1414
+ };
1329
1415
  };
1330
- const generateMeasuresByDataset = (dataset)=>{
1416
+ const defaultDimensions = (advancedVSeed, context)=>{
1417
+ const result = {
1418
+ ...advancedVSeed
1419
+ };
1420
+ const { vseed } = context;
1421
+ const { dimensions, dataset } = vseed;
1422
+ if (dimensions && dimensions.length > 0) return {
1423
+ ...result,
1424
+ dimensions
1425
+ };
1331
1426
  if (!dataset) throw new Error('dataset is required');
1332
- if (0 === dataset.length) return [];
1427
+ if (0 === dataset.length) return result;
1428
+ const measures = findAllMeasures(advancedVSeed.measures);
1333
1429
  const top100dataset = dataset.slice(0, 100);
1334
1430
  const sample = top100dataset.reduce((prev, cur)=>({
1335
1431
  ...prev,
1336
1432
  ...cur
1337
1433
  }), {});
1338
- const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1434
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1339
1435
  '',
1340
1436
  null,
1341
1437
  void 0
1342
- ].includes(key)).map((measure)=>({
1343
- id: measure,
1344
- alias: measure
1438
+ ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
1439
+ id: dim,
1440
+ alias: dim
1345
1441
  }));
1346
- return basicMeasures;
1347
- };
1348
- const isMeasureTreeWithChildren = (vseed)=>{
1349
- const { measures } = vseed;
1350
- if (!measures) return false;
1351
- return measures.some((measure)=>'children' in measure);
1442
+ return {
1443
+ ...result,
1444
+ dimensions: newDimensions
1445
+ };
1352
1446
  };
1353
- const isMeasureTreeWithParentId = (vseed)=>{
1354
- const { measures } = vseed;
1355
- if (!measures) return false;
1356
- return measures.some((measure)=>'parentId' in measure);
1447
+ const defaultMeasureName = (advancedVSeed)=>{
1448
+ const result = {
1449
+ ...advancedVSeed
1450
+ };
1451
+ const MeaName = {
1452
+ id: MeasureName,
1453
+ alias: intl.i18n`指标名称`
1454
+ };
1455
+ if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1456
+ return result;
1357
1457
  };
1358
- const encodingForLine = (advancedVSeed, context)=>{
1359
- const { vseed } = context;
1360
- const { measures: vseedMeasures = [] } = vseed;
1361
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
1362
- const dimensions = getBasicDimensions(vseed);
1458
+ const encodingForLine = (advancedVSeed)=>{
1459
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1460
+ const measures = findAllMeasures(vseedMeasures);
1363
1461
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1364
1462
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1365
1463
  const encoding = {};
@@ -1372,36 +1470,46 @@ const encodingForLine = (advancedVSeed, context)=>{
1372
1470
  encoding
1373
1471
  };
1374
1472
  };
1375
- const generateDefaultMeasureEncoding = (measures, encoding)=>{
1376
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
1377
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1378
- };
1379
1473
  const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1380
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
1381
1474
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
1382
1475
  encoding.x = uniqueDimIds.slice(0, 1);
1383
- encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
1384
- encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
1476
+ encoding.color = uniqueDimIds.slice(1);
1385
1477
  encoding.tooltip = uniqueDimIds;
1478
+ encoding.detail = [];
1386
1479
  encoding.label = [];
1387
1480
  encoding.row = [];
1388
1481
  encoding.column = [];
1389
1482
  };
1390
- const generateMeasureEncoding = (measures, encoding)=>{
1391
- encoding.tooltip = measures.map((item)=>item.id);
1392
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1393
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1394
- if (color.length > 0) encoding.color = color;
1395
- };
1396
1483
  const generateDimensionEncoding = (dimensions, encoding)=>{
1397
- encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1484
+ encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1398
1485
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1399
1486
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1400
1487
  if (0 === encoding.x.length) encoding.x = [
1401
1488
  dimensions[0].id
1402
1489
  ];
1403
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
1404
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
1490
+ if (0 === encoding.color.length) encoding.color = [
1491
+ MeasureName
1492
+ ];
1493
+ };
1494
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
1495
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
1496
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1497
+ };
1498
+ const generateMeasureEncoding = (measures, encoding)=>{
1499
+ encoding.tooltip = measures.map((item)=>item.id);
1500
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1501
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1502
+ if (color.length > 0) encoding.color = color;
1503
+ };
1504
+ const isMeasureTreeWithChildren = (vseed)=>{
1505
+ const { measures } = vseed;
1506
+ if (!measures) return false;
1507
+ return measures.some((measure)=>'children' in measure);
1508
+ };
1509
+ const isMeasureTreeWithParentId = (vseed)=>{
1510
+ const { measures } = vseed;
1511
+ if (!measures) return false;
1512
+ return measures.some((measure)=>'parentId' in measure);
1405
1513
  };
1406
1514
  const measureDepth = (measures = [])=>{
1407
1515
  if (!measures) return 0;
@@ -1461,9 +1569,7 @@ const buildMeasures = (advancedVSeed, context)=>{
1461
1569
  advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
1462
1570
  return advancedVSeed;
1463
1571
  }
1464
- const basicMeasures = getBasicMeasures(vseed);
1465
- if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
1466
- else advancedVSeed.measures = basicMeasures;
1572
+ if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
1467
1573
  return advancedVSeed;
1468
1574
  };
1469
1575
  const generateMeasuresByParentId = (measures)=>{
@@ -1494,102 +1600,12 @@ const basicMeasuresToMeasureTree = (measures)=>{
1494
1600
  }
1495
1601
  ];
1496
1602
  };
1497
- const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1498
- const result = {
1499
- ...advancedVSeed
1500
- };
1501
- const { vseed } = context;
1502
- const { dimensions, dataset } = vseed;
1503
- const measures = findAllMeasures(advancedVSeed.measures);
1504
- const MeaName = {
1505
- id: MeasureName,
1506
- alias: intl.i18n`指标名称`
1507
- };
1508
- if (!dataset) throw new Error('dataset is required');
1509
- if (0 === dataset.length) return result;
1510
- if (dimensions) {
1511
- result.dimensions = dimensions.map((dim)=>({
1512
- location: 'dimension',
1513
- ...dim
1514
- }));
1515
- if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
1516
- result.dimensions.push(MeaName);
1517
- return result;
1518
- }
1519
- const top100dataset = dataset.slice(0, 100);
1520
- const sample = top100dataset.reduce((prev, cur)=>({
1521
- ...prev,
1522
- ...cur
1523
- }), {});
1524
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1525
- '',
1526
- null,
1527
- void 0
1528
- ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
1529
- id: dim,
1530
- alias: dim,
1531
- location: 'dimension'
1532
- }));
1533
- result.dimensions.push(MeaName);
1534
- return result;
1535
- };
1536
1603
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1537
1604
  const { vseed } = context;
1538
1605
  const usePivotChart = isPivotChart(vseed);
1539
1606
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1540
1607
  return execPipeline(pipeline, context, advancedVSeed);
1541
1608
  };
1542
- const foldMeasures = (dataset, measures, options)=>{
1543
- const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1544
- const foldInfo = {
1545
- measureId,
1546
- measureName,
1547
- measureValue,
1548
- colorRange: [
1549
- 0,
1550
- 1
1551
- ],
1552
- measureRange: [
1553
- 0,
1554
- 1
1555
- ],
1556
- foldMap: {}
1557
- };
1558
- const result = new Array(dataset.length * measures.length);
1559
- let index = 0;
1560
- const ids = measures.map((d)=>d.id);
1561
- for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
1562
- const datum = (0, external_remeda_namespaceObject.omit)({
1563
- ...dataset[i]
1564
- }, ids);
1565
- datum[ORIGINAL_DATA] = dataset[i];
1566
- const measure = measures[j];
1567
- const { id, alias } = measure;
1568
- datum[id] = dataset[i][id];
1569
- datum[measureId] = id;
1570
- datum[measureName] = alias || id;
1571
- datum[measureValue] = dataset[i][id];
1572
- if (colorMeasureId) {
1573
- const value = datum[ORIGINAL_DATA][colorMeasureId];
1574
- datum[ColorEncoding] = value;
1575
- datum[ColorIdEncoding] = colorMeasureId;
1576
- foldInfo.colorRange = [
1577
- Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
1578
- Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
1579
- ];
1580
- }
1581
- foldInfo.measureRange = [
1582
- Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
1583
- Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
1584
- ];
1585
- foldInfo.foldMap[id] = alias;
1586
- result[index++] = datum;
1587
- }
1588
- return {
1589
- dataset: result,
1590
- foldInfo
1591
- };
1592
- };
1593
1609
  const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1594
1610
  const { foldMeasureId, separator, colorItemAsId } = options;
1595
1611
  const unfoldInfo = {
@@ -1684,7 +1700,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
1684
1700
  const { dimensions, measures, encoding } = advancedVSeed;
1685
1701
  if (!measures || !dimensions || !dataset || !encoding) return result;
1686
1702
  if (0 === measures.length) throw new Error('measures can not be empty');
1703
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
1687
1704
  const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (item)=>item.id), (0, external_remeda_namespaceObject.uniqueBy)(findAllMeasures(measures), (item)=>item.id), encoding, {
1705
+ colorItemAsId: hasEncoding,
1688
1706
  colorMeasureId: getColorMeasureId(advancedVSeed)
1689
1707
  });
1690
1708
  return {
@@ -1715,6 +1733,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1715
1733
  if (measures) measures.forEach((measure)=>{
1716
1734
  if (measure.children && measure.children.length > 0) measureGroups.push(measure);
1717
1735
  });
1736
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
1718
1737
  const datasets = [];
1719
1738
  const datasetReshapeInfo = [];
1720
1739
  measureGroups.forEach((measureGroup, index)=>{
@@ -1722,6 +1741,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1722
1741
  if (!measures) return;
1723
1742
  const groupId = measureGroup.id;
1724
1743
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, (0, external_remeda_namespaceObject.uniqueBy)(dimensions, (item)=>item.id), (0, external_remeda_namespaceObject.uniqueBy)(measures, (item)=>item.id), encoding, {
1744
+ colorItemAsId: hasEncoding,
1725
1745
  foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1726
1746
  colorMeasureId: getColorMeasureId(advancedVSeed)
1727
1747
  });
@@ -1930,9 +1950,11 @@ const annotation_annotation = (advancedVSeed, context)=>{
1930
1950
  };
1931
1951
  const lineAdvancedPipeline = [
1932
1952
  initAdvancedVSeed_initAdvancedVSeed,
1953
+ defaultMeasures_defaultMeasures,
1954
+ defaultDimensions,
1955
+ defaultMeasureName,
1933
1956
  encodingForLine,
1934
1957
  buildMeasures,
1935
- autoDimensions_autoDimensions,
1936
1958
  pivotAdapter([
1937
1959
  reshapeWithEncoding
1938
1960
  ], [
@@ -2279,129 +2301,18 @@ const yLinear = (spec, context)=>{
2279
2301
  domainLine: {
2280
2302
  visible: line?.visible,
2281
2303
  style: {
2282
- lineWidth: line?.lineWidth,
2283
- stroke: line?.lineColor
2284
- }
2285
- },
2286
- innerOffset: {
2287
- top: LINEAR_AXIS_INNER_OFFSET_TOP
2288
- }
2289
- };
2290
- result.axes = [
2291
- ...result.axes,
2292
- linearAxis
2293
- ];
2294
- return result;
2295
- };
2296
- const label_label = (spec, context)=>{
2297
- const result = {
2298
- ...spec
2299
- };
2300
- const { advancedVSeed } = context;
2301
- const { measures, datasetReshapeInfo, locale } = advancedVSeed;
2302
- const { chartType } = advancedVSeed;
2303
- const baseConfig = advancedVSeed.config[chartType];
2304
- if (!baseConfig || !baseConfig.label) return result;
2305
- const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
2306
- const { label } = baseConfig;
2307
- const { enable } = label;
2308
- result.label = {
2309
- visible: enable,
2310
- formatMethod: (value, datum)=>{
2311
- const result = [];
2312
- const formatValue = (value)=>{
2313
- const id = datum[measureId];
2314
- const measure = findMeasureById(measures, id);
2315
- if (!measure) return value;
2316
- const { format = {}, autoFormat = true } = measure;
2317
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2318
- const formatter = createFormatter(format);
2319
- return formatter(value);
2320
- }
2321
- if (autoFormat) return autoFormatter(value, locale);
2322
- return String(value);
2323
- };
2324
- result.push(formatValue(datum[measureValue]));
2325
- return result.join(' ');
2326
- }
2327
- };
2328
- return result;
2329
- };
2330
- const tooltip_tooltip = (spec, context)=>{
2331
- const result = {
2332
- ...spec
2333
- };
2334
- const { advancedVSeed } = context;
2335
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
2336
- const baseConfig = advancedVSeed.config[chartType];
2337
- const { tooltip = {
2338
- enable: true
2339
- } } = baseConfig;
2340
- const { enable } = tooltip;
2341
- const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2342
- const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2343
- result.tooltip = {
2344
- visible: enable,
2345
- mark: {
2346
- title: {
2347
- visible: true
2348
- },
2349
- content: [
2350
- ...dimensions.map((item)=>({
2351
- visible: true,
2352
- hasShape: true,
2353
- shapeType: 'rectRound',
2354
- key: (datum)=>{
2355
- if (item.alias || item.id) return item.alias || item.id;
2356
- return datum && datum[item.id];
2357
- },
2358
- value: (datum)=>datum && datum[item.id]
2359
- })),
2360
- {
2361
- visible: true,
2362
- hasShape: true,
2363
- key: (datum)=>datum && datum[measureName || colorName] || '',
2364
- value: (datum)=>{
2365
- if (!datum) return '';
2366
- const value = datum[measureValue];
2367
- const id = datum[measureId];
2368
- const measure = findMeasureById(measures, id);
2369
- if (!measure) return String(value);
2370
- const { format = {}, autoFormat = true } = measure;
2371
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2372
- const formatter = createFormatter(format);
2373
- return formatter(value);
2374
- }
2375
- if (autoFormat) return autoFormatter(value, locale);
2376
- return String(value);
2377
- }
2378
- }
2379
- ]
2304
+ lineWidth: line?.lineWidth,
2305
+ stroke: line?.lineColor
2306
+ }
2380
2307
  },
2381
- dimension: {
2382
- content: [
2383
- {
2384
- visible: true,
2385
- key: (datum)=>datum && datum[colorName] || '',
2386
- value: (datum)=>{
2387
- if (!datum) return '';
2388
- const value = datum[measureValue];
2389
- const id = datum[measureId];
2390
- const measure = findMeasureById(measures, id);
2391
- if (!measure) return String(value);
2392
- const { format = {}, autoFormat = true } = measure;
2393
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2394
- const formatter = createFormatter(format);
2395
- return formatter(value);
2396
- }
2397
- if (autoFormat) return autoFormatter(value, locale);
2398
- return String(value);
2399
- },
2400
- shapeType: 'rectRound'
2401
- }
2402
- ]
2308
+ innerOffset: {
2309
+ top: LINEAR_AXIS_INNER_OFFSET_TOP
2403
2310
  }
2404
2311
  };
2312
+ result.axes = [
2313
+ ...result.axes,
2314
+ linearAxis
2315
+ ];
2405
2316
  return result;
2406
2317
  };
2407
2318
  const verticalCrosshairLine = (spec, context)=>{
@@ -2912,6 +2823,117 @@ const lineStyle_lineStyle = (spec, context)=>{
2912
2823
  }
2913
2824
  };
2914
2825
  };
2826
+ const label_label = (spec, context)=>{
2827
+ const result = {
2828
+ ...spec
2829
+ };
2830
+ const { advancedVSeed } = context;
2831
+ const { measures, datasetReshapeInfo, locale } = advancedVSeed;
2832
+ const { chartType } = advancedVSeed;
2833
+ const baseConfig = advancedVSeed.config[chartType];
2834
+ if (!baseConfig || !baseConfig.label) return result;
2835
+ const { measureId, measureValue } = datasetReshapeInfo[0].foldInfo;
2836
+ const { label } = baseConfig;
2837
+ const { enable } = label;
2838
+ result.label = {
2839
+ visible: enable,
2840
+ formatMethod: (value, datum)=>{
2841
+ const result = [];
2842
+ const formatValue = (value)=>{
2843
+ const id = datum[measureId];
2844
+ const measure = findMeasureById(measures, id);
2845
+ if (!measure) return value;
2846
+ const { format = {}, autoFormat = true } = measure;
2847
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
2848
+ const formatter = createFormatter(format);
2849
+ return formatter(value);
2850
+ }
2851
+ if (autoFormat) return autoFormatter(value, locale);
2852
+ return String(value);
2853
+ };
2854
+ result.push(formatValue(datum[measureValue]));
2855
+ return result.join(' ');
2856
+ }
2857
+ };
2858
+ return result;
2859
+ };
2860
+ const tooltip_tooltip = (spec, context)=>{
2861
+ const result = {
2862
+ ...spec
2863
+ };
2864
+ const { advancedVSeed } = context;
2865
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
2866
+ const baseConfig = advancedVSeed.config[chartType];
2867
+ const { tooltip = {
2868
+ enable: true
2869
+ } } = baseConfig;
2870
+ const { enable } = tooltip;
2871
+ const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2872
+ const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2873
+ result.tooltip = {
2874
+ visible: enable,
2875
+ mark: {
2876
+ title: {
2877
+ visible: true
2878
+ },
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
+ ]
2910
+ },
2911
+ 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
+ ]
2933
+ }
2934
+ };
2935
+ return result;
2936
+ };
2915
2937
  const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
2916
2938
  if ('string' == typeof value) return obj[key] === value;
2917
2939
  if ('number' == typeof value) return obj[key] === value;
@@ -3528,7 +3550,7 @@ const pivotRowDimensions = (spec, context)=>{
3528
3550
  const { advancedVSeed } = context;
3529
3551
  const dimensions = advancedVSeed.dimensions;
3530
3552
  if (!dimensions) return result;
3531
- const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location);
3553
+ const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
3532
3554
  const rows = rowDimensions.map((dim)=>({
3533
3555
  dimensionKey: dim.id,
3534
3556
  title: dim.alias || dim.id
@@ -3545,17 +3567,132 @@ const pivotColumnDimensions = (spec, context)=>{
3545
3567
  const { advancedVSeed } = context;
3546
3568
  const dimensions = advancedVSeed.dimensions;
3547
3569
  if (!dimensions) return result;
3548
- const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location);
3570
+ const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
3549
3571
  const columns = columnDimensions.map((dim)=>({
3550
3572
  dimensionKey: dim.id,
3551
3573
  title: dim.alias || dim.id
3552
3574
  }));
3553
3575
  return {
3554
3576
  ...result,
3555
- columns: columns
3577
+ columns: columns
3578
+ };
3579
+ };
3580
+ const pivotDiscreteLegend = (spec, context)=>{
3581
+ const result = {
3582
+ ...spec
3583
+ };
3584
+ const { advancedVSeed } = context;
3585
+ const { chartType } = advancedVSeed;
3586
+ const baseConfig = advancedVSeed.config[chartType];
3587
+ if (!baseConfig || !baseConfig.legend) return result;
3588
+ const { datasetReshapeInfo } = advancedVSeed;
3589
+ const colorItems = (0, external_remeda_namespaceObject.unique)(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
3590
+ const colorIdMap = datasetReshapeInfo.reduce((prev, cur)=>({
3591
+ ...prev,
3592
+ ...cur.unfoldInfo.colorIdMap
3593
+ }), {});
3594
+ const { legend, color } = baseConfig;
3595
+ const { colorScheme, colorMapping } = color;
3596
+ const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems);
3597
+ const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
3598
+ const orient = [
3599
+ 'bottom',
3600
+ 'bottomLeft',
3601
+ 'bottomRight',
3602
+ 'bl',
3603
+ 'br'
3604
+ ].includes(position) ? 'bottom' : [
3605
+ 'top',
3606
+ 'topLeft',
3607
+ 'topRight',
3608
+ 'tl',
3609
+ 'tr'
3610
+ ].includes(position) ? 'top' : [
3611
+ 'left',
3612
+ 'leftTop',
3613
+ 'leftBottom',
3614
+ 'lt',
3615
+ 'lb'
3616
+ ].includes(position) ? 'left' : 'right';
3617
+ const legendPosition = [
3618
+ 'topLeft',
3619
+ 'bottomLeft',
3620
+ 'leftTop',
3621
+ 'rightTop',
3622
+ 'lt',
3623
+ 'rt',
3624
+ 'tl',
3625
+ 'bl'
3626
+ ].includes(position) ? 'start' : [
3627
+ 'topRight',
3628
+ 'bottomRight',
3629
+ 'leftBottom',
3630
+ 'rightBottom',
3631
+ 'lb',
3632
+ 'rb',
3633
+ 'rt',
3634
+ 'br'
3635
+ ].includes(position) ? 'end' : 'middle';
3636
+ const legends = {
3637
+ visible: enable,
3638
+ type: 'discrete',
3639
+ orient,
3640
+ position: legendPosition,
3641
+ maxCol: Math.max(1, maxSize),
3642
+ maxRow: Math.max(1, maxSize),
3643
+ data: colorItems.map((d, index)=>{
3644
+ const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length];
3645
+ return {
3646
+ label: d,
3647
+ shape: {
3648
+ outerBorder: border ? {
3649
+ stroke: color,
3650
+ distance: 3,
3651
+ lineWidth: 1
3652
+ } : void 0,
3653
+ fill: color
3654
+ }
3655
+ };
3656
+ }),
3657
+ item: {
3658
+ focus: true,
3659
+ maxWidth: '30%',
3660
+ focusIconStyle: {
3661
+ size: labelFontSize + 2,
3662
+ fill: labelFontColor,
3663
+ fontWeight: labelFontWeight
3664
+ },
3665
+ shape: {
3666
+ space: border ? 6 : 4,
3667
+ style: {
3668
+ symbolType: shapeType,
3669
+ size: border ? 8 : 10
3670
+ }
3671
+ },
3672
+ label: {
3673
+ formatMethod: (value)=>colorIdMap[value] ?? value,
3674
+ style: {
3675
+ fontSize: labelFontSize,
3676
+ fill: labelFontColor,
3677
+ fontWeight: labelFontWeight
3678
+ }
3679
+ },
3680
+ background: {
3681
+ state: {
3682
+ selectedHover: {
3683
+ fill: labelFontColor,
3684
+ fillOpacity: 0.05
3685
+ }
3686
+ }
3687
+ }
3688
+ }
3689
+ };
3690
+ return {
3691
+ ...result,
3692
+ legends
3556
3693
  };
3557
3694
  };
3558
- const pivotDiscreteLegend = (spec, context)=>{
3695
+ const pivotColorLegend = (spec, context)=>{
3559
3696
  const result = {
3560
3697
  ...spec
3561
3698
  };
@@ -3564,15 +3701,11 @@ const pivotDiscreteLegend = (spec, context)=>{
3564
3701
  const baseConfig = advancedVSeed.config[chartType];
3565
3702
  if (!baseConfig || !baseConfig.legend) return result;
3566
3703
  const { datasetReshapeInfo } = advancedVSeed;
3567
- const colorItems = (0, external_remeda_namespaceObject.unique)(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
3568
- const colorIdMap = datasetReshapeInfo.reduce((prev, cur)=>({
3569
- ...prev,
3570
- ...cur.unfoldInfo.colorIdMap
3571
- }), {});
3704
+ const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
3705
+ const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
3572
3706
  const { legend, color } = baseConfig;
3573
- const { colorScheme, colorMapping } = color;
3574
- const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems);
3575
- const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
3707
+ const { colorScheme, linearColorScheme } = color;
3708
+ const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
3576
3709
  const orient = [
3577
3710
  'bottom',
3578
3711
  'bottomLeft',
@@ -3613,55 +3746,31 @@ const pivotDiscreteLegend = (spec, context)=>{
3613
3746
  ].includes(position) ? 'end' : 'middle';
3614
3747
  const legends = {
3615
3748
  visible: enable,
3616
- type: 'discrete',
3749
+ type: 'color',
3617
3750
  orient,
3618
3751
  position: legendPosition,
3619
- maxCol: Math.max(1, maxSize),
3620
- maxRow: Math.max(1, maxSize),
3621
- data: colorItems.map((d, index)=>{
3622
- const color = colorSpecified?.[d] ?? colorScheme?.[index % colorScheme.length];
3623
- return {
3624
- label: d,
3625
- shape: {
3626
- outerBorder: border ? {
3627
- stroke: color,
3628
- distance: 3,
3629
- lineWidth: 1
3630
- } : void 0,
3631
- fill: color
3632
- }
3633
- };
3634
- }),
3635
- item: {
3636
- focus: true,
3637
- maxWidth: '30%',
3638
- focusIconStyle: {
3639
- size: labelFontSize + 2,
3752
+ colors: linearColorScheme || colorScheme || [],
3753
+ value: [
3754
+ min,
3755
+ max
3756
+ ],
3757
+ min: min,
3758
+ max: max,
3759
+ maxWidth: '30%',
3760
+ startText: {
3761
+ visible: true,
3762
+ style: {
3640
3763
  fill: labelFontColor,
3764
+ fontSize: labelFontSize,
3765
+ fontWeight: labelFontWeight
3766
+ }
3767
+ },
3768
+ endText: {
3769
+ visible: true,
3770
+ style: {
3771
+ fill: labelFontColor,
3772
+ fontSize: labelFontSize,
3641
3773
  fontWeight: labelFontWeight
3642
- },
3643
- shape: {
3644
- space: border ? 6 : 4,
3645
- style: {
3646
- symbolType: shapeType,
3647
- size: border ? 8 : 10
3648
- }
3649
- },
3650
- label: {
3651
- formatMethod: (value)=>colorIdMap[value] ?? value,
3652
- style: {
3653
- fontSize: labelFontSize,
3654
- fill: labelFontColor,
3655
- fontWeight: labelFontWeight
3656
- }
3657
- },
3658
- background: {
3659
- state: {
3660
- selectedHover: {
3661
- fill: labelFontColor,
3662
- fillOpacity: 0.05
3663
- }
3664
- }
3665
3774
  }
3666
3775
  }
3667
3776
  };
@@ -3684,13 +3793,13 @@ const line_line = [
3684
3793
  progressive,
3685
3794
  xBand,
3686
3795
  yLinear,
3687
- label_label,
3688
- tooltip_tooltip,
3689
3796
  verticalCrosshairLine,
3690
3797
  colorAdapter(discreteLegend, colorLegend),
3691
3798
  colorPointStyleFill(pointStyle_pointStyle),
3692
3799
  pointStateDimensionHover,
3693
3800
  colorLineStyleFill(lineStyle_lineStyle),
3801
+ label_label,
3802
+ tooltip_tooltip,
3694
3803
  annotationPoint_annotationPoint,
3695
3804
  annotationVerticalLine_annotationVerticalLine,
3696
3805
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3703,18 +3812,18 @@ const pivotLine = [
3703
3812
  datasetPivot,
3704
3813
  pivotIndicators_pivotIndicators([
3705
3814
  initLine,
3706
- color_color,
3815
+ colorAdapter(color_color, linearColor),
3707
3816
  background_backgroundColor,
3708
3817
  datasetXY,
3709
3818
  progressive,
3710
3819
  xBand,
3711
3820
  yLinear,
3712
- label_label,
3713
- tooltip_tooltip,
3714
3821
  verticalCrosshairLine,
3715
- pointStyle_pointStyle,
3822
+ colorPointStyleFill(pointStyle_pointStyle),
3716
3823
  pointStateDimensionHover,
3717
- lineStyle_lineStyle,
3824
+ colorLineStyleFill(lineStyle_lineStyle),
3825
+ label_label,
3826
+ tooltip_tooltip,
3718
3827
  annotationPoint_annotationPoint,
3719
3828
  annotationVerticalLine_annotationVerticalLine,
3720
3829
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3722,7 +3831,7 @@ const pivotLine = [
3722
3831
  ]),
3723
3832
  pivotRowDimensions,
3724
3833
  pivotColumnDimensions,
3725
- pivotDiscreteLegend
3834
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
3726
3835
  ];
3727
3836
  const lineSpecPipeline = [
3728
3837
  pivotAdapter_pivotAdapter(line_line, pivotLine)
@@ -3731,11 +3840,9 @@ const registerLine = ()=>{
3731
3840
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3732
3841
  Builder._specPipelineMap.line = lineSpecPipeline;
3733
3842
  };
3734
- const encodingForColumn = (advancedVSeed, context)=>{
3735
- const { vseed } = context;
3736
- const { measures: vseedMeasures = [] } = vseed;
3737
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
3738
- const dimensions = getBasicDimensions(vseed);
3843
+ const encodingForColumn = (advancedVSeed)=>{
3844
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
3845
+ const measures = findAllMeasures(vseedMeasures);
3739
3846
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
3740
3847
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
3741
3848
  const encoding = {};
@@ -3748,10 +3855,6 @@ const encodingForColumn = (advancedVSeed, context)=>{
3748
3855
  encoding
3749
3856
  };
3750
3857
  };
3751
- const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3752
- encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
3753
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3754
- };
3755
3858
  const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3756
3859
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
3757
3860
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
@@ -3763,28 +3866,35 @@ const column_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
3763
3866
  encoding.row = [];
3764
3867
  encoding.column = [];
3765
3868
  };
3766
- const column_generateMeasureEncoding = (measures, encoding)=>{
3767
- encoding.tooltip = measures.map((item)=>item.id);
3768
- encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3769
- const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3770
- if (color.length > 0) encoding.color = color;
3771
- return encoding;
3772
- };
3773
3869
  const column_generateDimensionEncoding = (dimensions, encoding)=>{
3774
- encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3870
+ encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
3775
3871
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3776
3872
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
3777
3873
  if (0 === encoding.x.length) encoding.x = [
3778
3874
  dimensions[0].id
3779
3875
  ];
3780
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
3781
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
3876
+ if (0 === encoding.color.length) encoding.color = [
3877
+ MeasureName
3878
+ ];
3879
+ };
3880
+ const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3881
+ encoding.tooltip = (0, external_remeda_namespaceObject.unique)(measures.map((item)=>item.id));
3882
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3883
+ };
3884
+ const column_generateMeasureEncoding = (measures, encoding)=>{
3885
+ encoding.tooltip = measures.map((item)=>item.id);
3886
+ encoding.y = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
3887
+ const color = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
3888
+ if (color.length > 0) encoding.color = color;
3889
+ return encoding;
3782
3890
  };
3783
3891
  const columnAdvancedPipeline = [
3784
3892
  initAdvancedVSeed_initAdvancedVSeed,
3893
+ defaultMeasures_defaultMeasures,
3894
+ defaultDimensions,
3895
+ defaultMeasureName,
3785
3896
  encodingForColumn,
3786
3897
  buildMeasures,
3787
- autoDimensions_autoDimensions,
3788
3898
  pivotAdapter([
3789
3899
  reshapeWithEncoding
3790
3900
  ], [
@@ -4087,93 +4197,6 @@ const annotationAreaBand = (spec, context)=>{
4087
4197
  markArea: markArea
4088
4198
  };
4089
4199
  };
4090
- const pivotColorLegend = (spec, context)=>{
4091
- const result = {
4092
- ...spec
4093
- };
4094
- const { advancedVSeed } = context;
4095
- const { chartType } = advancedVSeed;
4096
- const baseConfig = advancedVSeed.config[chartType];
4097
- if (!baseConfig || !baseConfig.legend) return result;
4098
- const { datasetReshapeInfo } = advancedVSeed;
4099
- const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
4100
- const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
4101
- const { legend, color } = baseConfig;
4102
- const { colorScheme, linearColorScheme } = color;
4103
- const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
4104
- const orient = [
4105
- 'bottom',
4106
- 'bottomLeft',
4107
- 'bottomRight',
4108
- 'bl',
4109
- 'br'
4110
- ].includes(position) ? 'bottom' : [
4111
- 'top',
4112
- 'topLeft',
4113
- 'topRight',
4114
- 'tl',
4115
- 'tr'
4116
- ].includes(position) ? 'top' : [
4117
- 'left',
4118
- 'leftTop',
4119
- 'leftBottom',
4120
- 'lt',
4121
- 'lb'
4122
- ].includes(position) ? 'left' : 'right';
4123
- const legendPosition = [
4124
- 'topLeft',
4125
- 'bottomLeft',
4126
- 'leftTop',
4127
- 'rightTop',
4128
- 'lt',
4129
- 'rt',
4130
- 'tl',
4131
- 'bl'
4132
- ].includes(position) ? 'start' : [
4133
- 'topRight',
4134
- 'bottomRight',
4135
- 'leftBottom',
4136
- 'rightBottom',
4137
- 'lb',
4138
- 'rb',
4139
- 'rt',
4140
- 'br'
4141
- ].includes(position) ? 'end' : 'middle';
4142
- const legends = {
4143
- visible: enable,
4144
- type: 'color',
4145
- orient,
4146
- position: legendPosition,
4147
- colors: linearColorScheme || colorScheme || [],
4148
- value: [
4149
- min,
4150
- max
4151
- ],
4152
- min: min,
4153
- max: max,
4154
- maxWidth: '30%',
4155
- startText: {
4156
- visible: true,
4157
- style: {
4158
- fill: labelFontColor,
4159
- fontSize: labelFontSize,
4160
- fontWeight: labelFontWeight
4161
- }
4162
- },
4163
- endText: {
4164
- visible: true,
4165
- style: {
4166
- fill: labelFontColor,
4167
- fontSize: labelFontSize,
4168
- fontWeight: labelFontWeight
4169
- }
4170
- }
4171
- };
4172
- return {
4173
- ...result,
4174
- legends
4175
- };
4176
- };
4177
4200
  const column = [
4178
4201
  initColumn,
4179
4202
  stackCornerRadius_stackCornerRadius,
@@ -4231,9 +4254,11 @@ const registerColumn = ()=>{
4231
4254
  };
4232
4255
  const columnParallelAdvancedPipeline = [
4233
4256
  initAdvancedVSeed_initAdvancedVSeed,
4257
+ defaultMeasures_defaultMeasures,
4258
+ defaultDimensions,
4259
+ defaultMeasureName,
4234
4260
  encodingForColumn,
4235
4261
  buildMeasures,
4236
- autoDimensions_autoDimensions,
4237
4262
  pivotAdapter([
4238
4263
  reshapeWithEncoding
4239
4264
  ], [
@@ -4328,9 +4353,11 @@ const registerColumnParallel = ()=>{
4328
4353
  };
4329
4354
  const columnPercentAdvancedPipeline = [
4330
4355
  initAdvancedVSeed_initAdvancedVSeed,
4356
+ defaultMeasures_defaultMeasures,
4357
+ defaultDimensions,
4358
+ defaultMeasureName,
4331
4359
  encodingForColumn,
4332
4360
  buildMeasures,
4333
- autoDimensions_autoDimensions,
4334
4361
  pivotAdapter([
4335
4362
  reshapeWithEncoding
4336
4363
  ], [
@@ -4407,11 +4434,9 @@ const registerColumnPercent = ()=>{
4407
4434
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4408
4435
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4409
4436
  };
4410
- const encodingForBar = (advancedVSeed, context)=>{
4411
- const { vseed } = context;
4412
- const { measures: vseedMeasures = [] } = vseed;
4413
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
4414
- const dimensions = getBasicDimensions(vseed);
4437
+ const encodingForBar = (advancedVSeed)=>{
4438
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4439
+ const measures = findAllMeasures(vseedMeasures);
4415
4440
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
4416
4441
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
4417
4442
  const encoding = {};
@@ -4447,13 +4472,15 @@ const bar_generateMeasureEncoding = (measures, encoding)=>{
4447
4472
  return encoding;
4448
4473
  };
4449
4474
  const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4450
- encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4475
+ encoding.y = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
4451
4476
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4452
4477
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4453
4478
  if (0 === encoding.y.length) encoding.y = [
4454
4479
  dimensions[0].id
4455
4480
  ];
4456
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4481
+ if (0 === encoding.color.length) encoding.color = [
4482
+ MeasureName
4483
+ ];
4457
4484
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4458
4485
  };
4459
4486
  const sortYBandAxis = (advancedVSeed, context)=>{
@@ -4474,9 +4501,11 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4474
4501
  };
4475
4502
  const barAdvancedPipeline = [
4476
4503
  initAdvancedVSeed_initAdvancedVSeed,
4504
+ defaultMeasures_defaultMeasures,
4505
+ defaultDimensions,
4506
+ defaultMeasureName,
4477
4507
  encodingForBar,
4478
4508
  buildMeasures,
4479
- autoDimensions_autoDimensions,
4480
4509
  pivotAdapter([
4481
4510
  reshapeWithEncoding
4482
4511
  ], [
@@ -4827,9 +4856,11 @@ const registerBar = ()=>{
4827
4856
  };
4828
4857
  const barParallelAdvancedPipeline = [
4829
4858
  initAdvancedVSeed_initAdvancedVSeed,
4830
- buildMeasures,
4831
- autoDimensions_autoDimensions,
4859
+ defaultMeasures_defaultMeasures,
4860
+ defaultDimensions,
4861
+ defaultMeasureName,
4832
4862
  encodingForBar,
4863
+ buildMeasures,
4833
4864
  pivotAdapter([
4834
4865
  reshapeWithEncoding
4835
4866
  ], [
@@ -4923,9 +4954,11 @@ const registerBarParallel = ()=>{
4923
4954
  };
4924
4955
  const barPercentAdvancedPipeline = [
4925
4956
  initAdvancedVSeed_initAdvancedVSeed,
4926
- buildMeasures,
4927
- autoDimensions_autoDimensions,
4957
+ defaultMeasures_defaultMeasures,
4958
+ defaultDimensions,
4959
+ defaultMeasureName,
4928
4960
  encodingForBar,
4961
+ buildMeasures,
4929
4962
  pivotAdapter([
4930
4963
  reshapeWithEncoding
4931
4964
  ], [
@@ -4994,9 +5027,11 @@ const registerBarPercent = ()=>{
4994
5027
  };
4995
5028
  const areaAdvancedPipeline = [
4996
5029
  initAdvancedVSeed_initAdvancedVSeed,
4997
- encodingForColumn,
5030
+ defaultMeasures_defaultMeasures,
5031
+ defaultDimensions,
5032
+ defaultMeasureName,
5033
+ encodingForLine,
4998
5034
  buildMeasures,
4999
- autoDimensions_autoDimensions,
5000
5035
  pivotAdapter([
5001
5036
  reshapeWithEncoding
5002
5037
  ], [
@@ -5152,9 +5187,11 @@ const registerArea = ()=>{
5152
5187
  };
5153
5188
  const areaPercentAdvancedPipeline = [
5154
5189
  initAdvancedVSeed_initAdvancedVSeed,
5155
- encodingForColumn,
5190
+ defaultMeasures_defaultMeasures,
5191
+ defaultDimensions,
5192
+ defaultMeasureName,
5193
+ encodingForLine,
5156
5194
  buildMeasures,
5157
- autoDimensions_autoDimensions,
5158
5195
  pivotAdapter([
5159
5196
  reshapeWithEncoding
5160
5197
  ], [
@@ -5228,11 +5265,9 @@ const registerAreaPercent = ()=>{
5228
5265
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5229
5266
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5230
5267
  };
5231
- const encodingForScatter = (advancedVSeed, context)=>{
5232
- const { vseed } = context;
5233
- const { measures: vseedMeasures = [] } = vseed;
5234
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
5235
- const dimensions = getBasicDimensions(vseed);
5268
+ const encodingForScatter = (advancedVSeed)=>{
5269
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5270
+ const measures = findAllMeasures(vseedMeasures);
5236
5271
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5237
5272
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5238
5273
  const encoding = {};
@@ -5268,7 +5303,9 @@ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5268
5303
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5269
5304
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5270
5305
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5271
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5306
+ if (0 === encoding.color.length) encoding.color = [
5307
+ MeasureName
5308
+ ];
5272
5309
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5273
5310
  };
5274
5311
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
@@ -5281,8 +5318,7 @@ const buildMeasuresForScatter = (advancedVSeed, context)=>{
5281
5318
  advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
5282
5319
  return advancedVSeed;
5283
5320
  }
5284
- const basicMeasures = getBasicMeasures(vseed);
5285
- const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
5321
+ const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
5286
5322
  advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
5287
5323
  return advancedVSeed;
5288
5324
  };
@@ -5501,9 +5537,11 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5501
5537
  };
5502
5538
  const scatterAdvancedPipeline = [
5503
5539
  initAdvancedVSeed_initAdvancedVSeed,
5540
+ defaultMeasures_defaultMeasures,
5541
+ defaultDimensions,
5542
+ defaultMeasureName,
5504
5543
  encodingForScatter,
5505
5544
  buildMeasuresForScatter,
5506
- autoDimensions_autoDimensions,
5507
5545
  pivotAdapter([
5508
5546
  reshapeWithScatterEncoding
5509
5547
  ], [
@@ -5639,7 +5677,7 @@ const pivotScatter = [
5639
5677
  ]),
5640
5678
  pivotRowDimensions,
5641
5679
  pivotColumnDimensions,
5642
- pivotDiscreteLegend
5680
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
5643
5681
  ];
5644
5682
  const scatterSpecPipeline = [
5645
5683
  pivotAdapter_pivotAdapter(scatter, pivotScatter)
@@ -5648,11 +5686,9 @@ const registerScatter = ()=>{
5648
5686
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5649
5687
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5650
5688
  };
5651
- const encodingForDualAxis = (advancedVSeed, context)=>{
5652
- const { vseed } = context;
5653
- const { measures: vseedMeasures = [] } = vseed;
5654
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
5655
- const dimensions = getBasicDimensions(vseed);
5689
+ const encodingForDualAxis = (advancedVSeed)=>{
5690
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5691
+ const measures = findAllMeasures(vseedMeasures);
5656
5692
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5657
5693
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5658
5694
  const encoding = {};
@@ -5688,13 +5724,15 @@ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5688
5724
  return encoding;
5689
5725
  };
5690
5726
  const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5691
- encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5727
+ encoding.x = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
5692
5728
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5693
5729
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5694
5730
  if (0 === encoding.x.length) encoding.x = [
5695
5731
  dimensions[0].id
5696
5732
  ];
5697
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5733
+ if (0 === encoding.color.length) encoding.color = [
5734
+ MeasureName
5735
+ ];
5698
5736
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5699
5737
  };
5700
5738
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
@@ -5707,8 +5745,7 @@ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5707
5745
  advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
5708
5746
  return advancedVSeed;
5709
5747
  }
5710
- const basicMeasures = getBasicMeasures(vseed);
5711
- const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
5748
+ const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
5712
5749
  advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
5713
5750
  return advancedVSeed;
5714
5751
  };
@@ -5812,8 +5849,10 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5812
5849
  const datasets = [];
5813
5850
  const primaryMeasures = measures[0];
5814
5851
  const secondaryMeasures = measures[1] || [];
5852
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
5815
5853
  if (primaryMeasures && primaryMeasures.children) {
5816
5854
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5855
+ colorItemAsId: hasEncoding,
5817
5856
  foldMeasureValue: FoldPrimaryMeasureValue,
5818
5857
  colorMeasureId: getColorMeasureId(advancedVSeed)
5819
5858
  });
@@ -5860,6 +5899,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5860
5899
  const { dataset } = vseed;
5861
5900
  const { dimensions, measures, encoding, chartType } = advancedVSeed;
5862
5901
  if (!measures || !dimensions || !dataset || !encoding) return result;
5902
+ const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
5863
5903
  const datasetList = [];
5864
5904
  const datasetReshapeInfo = [];
5865
5905
  const measureGroups = [];
@@ -5878,6 +5918,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5878
5918
  const secondaryMeasures = measures[1] || [];
5879
5919
  if (primaryMeasures && primaryMeasures.children) {
5880
5920
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5921
+ colorItemAsId: hasEncoding,
5881
5922
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
5882
5923
  colorMeasureId: getColorMeasureId(advancedVSeed)
5883
5924
  });
@@ -5946,9 +5987,11 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5946
5987
  };
5947
5988
  const dualAxisAdvancedPipeline = [
5948
5989
  initAdvancedVSeed_initAdvancedVSeed,
5990
+ defaultMeasures_defaultMeasures,
5991
+ defaultDimensions,
5992
+ defaultMeasureName,
5949
5993
  encodingForDualAxis,
5950
5994
  buildMeasuresForDualAxis,
5951
- autoDimensions_autoDimensions,
5952
5995
  pivotAdapter([
5953
5996
  reshapeWithDualEncoding
5954
5997
  ], [
@@ -6781,11 +6824,9 @@ const registerDualAxis = ()=>{
6781
6824
  Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6782
6825
  Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6783
6826
  };
6784
- const encodingForPie = (advancedVSeed, context)=>{
6785
- const { vseed } = context;
6786
- const { measures: vseedMeasures = [] } = vseed;
6787
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
6788
- const dimensions = getBasicDimensions(vseed);
6827
+ const encodingForPie = (advancedVSeed)=>{
6828
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6829
+ const measures = findAllMeasures(vseedMeasures);
6789
6830
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
6790
6831
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
6791
6832
  const encoding = {};
@@ -6820,14 +6861,18 @@ const pie_generateMeasureEncoding = (measures, encoding)=>{
6820
6861
  const pie_generateDimensionEncoding = (dimensions, encoding)=>{
6821
6862
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6822
6863
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6823
- if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
6864
+ if (0 === encoding.color.length) encoding.color = [
6865
+ MeasureName
6866
+ ];
6824
6867
  if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
6825
6868
  };
6826
6869
  const pieAdvancedPipeline = [
6827
6870
  initAdvancedVSeed_initAdvancedVSeed,
6871
+ defaultMeasures_defaultMeasures,
6872
+ defaultDimensions,
6873
+ defaultMeasureName,
6828
6874
  encodingForPie,
6829
6875
  buildMeasures,
6830
- autoDimensions_autoDimensions,
6831
6876
  pivotAdapter([
6832
6877
  reshapeWithEncoding
6833
6878
  ], [
@@ -6842,44 +6887,70 @@ const initPie = (spec, context)=>{
6842
6887
  ...spec
6843
6888
  };
6844
6889
  const { advancedVSeed } = context;
6845
- const { datasetReshapeInfo, dataset } = advancedVSeed;
6890
+ const { datasetReshapeInfo } = advancedVSeed;
6846
6891
  const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
6892
+ result.type = 'pie';
6893
+ result.outerRadius = 0.8;
6894
+ result.innerRadius = 0;
6895
+ result.valueField = foldInfo.measureValue;
6896
+ result.categoryField = unfoldInfo.encodingColorId;
6897
+ result.padding = 0;
6898
+ result.region = [
6899
+ {
6900
+ clip: true
6901
+ }
6902
+ ];
6903
+ result.animation = true;
6904
+ return result;
6905
+ };
6906
+ const colorPieStyleFill = (stylePipe)=>(spec, context)=>{
6907
+ const result = stylePipe(spec, context);
6908
+ const { advancedVSeed } = context;
6909
+ const { datasetReshapeInfo } = advancedVSeed;
6910
+ const { unfoldInfo } = datasetReshapeInfo[0];
6911
+ if (isLinearColor(advancedVSeed)) {
6912
+ if (result?.pie?.style) result.pie.style.fill = {
6913
+ field: unfoldInfo.encodingColor,
6914
+ scale: 'color'
6915
+ };
6916
+ }
6917
+ return result;
6918
+ };
6919
+ const pieStyle = (spec, context)=>{
6920
+ const { advancedVSeed } = context;
6921
+ const { dataset } = advancedVSeed;
6847
6922
  const showStroke = dataset.length <= 30;
6848
- result.type = 'pie';
6849
- result.outerRadius = 0.8;
6850
- result.innerRadius = 0;
6851
- result.valueField = foldInfo.measureValue;
6852
- result.categoryField = unfoldInfo.encodingColorId;
6853
- result.padding = 0;
6854
- result.region = [
6855
- {
6856
- clip: true
6923
+ const result = {
6924
+ ...spec,
6925
+ pie: {
6926
+ style: {}
6857
6927
  }
6858
- ];
6859
- result.pie = {
6860
- style: {
6861
- stroke: '#ffffff',
6862
- lineWidth: showStroke ? 1 : 0,
6863
- centerOffset: 0
6864
- },
6865
- state: {
6866
- hover: {
6867
- outerRadius: 1.1 * result.outerRadius
6928
+ };
6929
+ return {
6930
+ ...result,
6931
+ pie: {
6932
+ style: {
6933
+ stroke: '#ffffff',
6934
+ lineWidth: showStroke ? 1 : 0
6935
+ },
6936
+ state: {
6937
+ hover: {
6938
+ outerRadius: 1.1 * result.outerRadius
6939
+ }
6868
6940
  }
6869
6941
  }
6870
6942
  };
6871
- result.animation = true;
6872
- return result;
6873
6943
  };
6874
6944
  const pie = [
6875
6945
  initPie,
6876
- color_color,
6946
+ colorAdapter(color_color, linearColor),
6877
6947
  background_backgroundColor,
6878
6948
  datasetXY,
6879
6949
  progressive,
6950
+ colorPieStyleFill(pieStyle),
6951
+ colorAdapter(discreteLegend, colorLegend),
6880
6952
  label_label,
6881
6953
  tooltip_tooltip,
6882
- discreteLegend,
6883
6954
  annotationPoint_annotationPoint,
6884
6955
  annotationVerticalLine_annotationVerticalLine,
6885
6956
  annotationHorizontalLine_annotationHorizontalLine,
@@ -6892,10 +6963,11 @@ const pivotPie = [
6892
6963
  datasetPivot,
6893
6964
  pivotIndicators_pivotIndicators([
6894
6965
  initPie,
6895
- color_color,
6966
+ colorAdapter(color_color, linearColor),
6896
6967
  background_backgroundColor,
6897
6968
  datasetXY,
6898
6969
  progressive,
6970
+ colorPieStyleFill(pieStyle),
6899
6971
  label_label,
6900
6972
  tooltip_tooltip,
6901
6973
  annotationPoint_annotationPoint,
@@ -6905,7 +6977,7 @@ const pivotPie = [
6905
6977
  ]),
6906
6978
  pivotRowDimensions,
6907
6979
  pivotColumnDimensions,
6908
- pivotDiscreteLegend
6980
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6909
6981
  ];
6910
6982
  const pieSpecPipeline = [
6911
6983
  pivotAdapter_pivotAdapter(pie, pivotPie)
@@ -6916,8 +6988,10 @@ const registerPie = ()=>{
6916
6988
  };
6917
6989
  const donutAdvancedPipeline = [
6918
6990
  initAdvancedVSeed_initAdvancedVSeed,
6991
+ defaultMeasures_defaultMeasures,
6992
+ defaultDimensions,
6993
+ defaultMeasureName,
6919
6994
  buildMeasures,
6920
- autoDimensions_autoDimensions,
6921
6995
  encodingForPie,
6922
6996
  pivotAdapter([
6923
6997
  reshapeWithEncoding
@@ -6933,9 +7007,8 @@ const initDonut = (spec, context)=>{
6933
7007
  ...spec
6934
7008
  };
6935
7009
  const { advancedVSeed } = context;
6936
- const { datasetReshapeInfo, dataset } = advancedVSeed;
7010
+ const { datasetReshapeInfo } = advancedVSeed;
6937
7011
  const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
6938
- const showStroke = dataset.length <= 30;
6939
7012
  result.type = 'pie';
6940
7013
  result.outerRadius = 0.8;
6941
7014
  result.innerRadius = 0.8 * result.outerRadius;
@@ -6947,29 +7020,19 @@ const initDonut = (spec, context)=>{
6947
7020
  clip: true
6948
7021
  }
6949
7022
  ];
6950
- result.pie = {
6951
- style: {
6952
- stroke: '#ffffff',
6953
- lineWidth: showStroke ? 1 : 0
6954
- },
6955
- state: {
6956
- hover: {
6957
- outerRadius: 1.1 * result.outerRadius
6958
- }
6959
- }
6960
- };
6961
7023
  result.animation = true;
6962
7024
  return result;
6963
7025
  };
6964
7026
  const donut = [
6965
7027
  initDonut,
6966
- color_color,
7028
+ colorAdapter(color_color, linearColor),
6967
7029
  background_backgroundColor,
6968
7030
  datasetXY,
6969
7031
  progressive,
6970
7032
  label_label,
7033
+ colorPieStyleFill(pieStyle),
7034
+ colorAdapter(discreteLegend, colorLegend),
6971
7035
  tooltip_tooltip,
6972
- discreteLegend,
6973
7036
  annotationPoint_annotationPoint,
6974
7037
  annotationVerticalLine_annotationVerticalLine,
6975
7038
  annotationHorizontalLine_annotationHorizontalLine,
@@ -6982,11 +7045,12 @@ const pivotDonut = [
6982
7045
  datasetPivot,
6983
7046
  pivotIndicators_pivotIndicators([
6984
7047
  initDonut,
6985
- color_color,
7048
+ colorAdapter(color_color, linearColor),
6986
7049
  background_backgroundColor,
6987
7050
  datasetXY,
6988
7051
  progressive,
6989
7052
  label_label,
7053
+ colorPieStyleFill(pieStyle),
6990
7054
  tooltip_tooltip,
6991
7055
  annotationPoint_annotationPoint,
6992
7056
  annotationVerticalLine_annotationVerticalLine,
@@ -6995,7 +7059,7 @@ const pivotDonut = [
6995
7059
  ]),
6996
7060
  pivotRowDimensions,
6997
7061
  pivotColumnDimensions,
6998
- pivotDiscreteLegend
7062
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6999
7063
  ];
7000
7064
  const donutSpecPipeline = [
7001
7065
  pivotAdapter_pivotAdapter(donut, pivotDonut)
@@ -7004,11 +7068,9 @@ const registerDonut = ()=>{
7004
7068
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7005
7069
  Builder._specPipelineMap.donut = donutSpecPipeline;
7006
7070
  };
7007
- const encodingForRose = (advancedVSeed, context)=>{
7008
- const { vseed } = context;
7009
- const { measures: vseedMeasures = [] } = vseed;
7010
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7011
- const dimensions = getBasicDimensions(vseed);
7071
+ const encodingForRose = (advancedVSeed)=>{
7072
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7073
+ const measures = findAllMeasures(vseedMeasures);
7012
7074
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7013
7075
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7014
7076
  const encoding = {};
@@ -7043,20 +7105,24 @@ const rose_generateMeasureEncoding = (measures, encoding)=>{
7043
7105
  if (color.length > 0) encoding.color = color;
7044
7106
  };
7045
7107
  const rose_generateDimensionEncoding = (dimensions, encoding)=>{
7046
- encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7108
+ encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7047
7109
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7048
7110
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7049
7111
  if (0 === encoding.angle.length) encoding.angle = [
7050
7112
  dimensions[0].id
7051
7113
  ];
7052
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7114
+ if (0 === encoding.color.length) encoding.color = [
7115
+ MeasureName
7116
+ ];
7053
7117
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7054
7118
  };
7055
7119
  const roseAdvancedPipeline = [
7056
7120
  initAdvancedVSeed_initAdvancedVSeed,
7121
+ defaultMeasures_defaultMeasures,
7122
+ defaultDimensions,
7123
+ defaultMeasureName,
7057
7124
  encodingForRose,
7058
7125
  buildMeasures,
7059
- autoDimensions_autoDimensions,
7060
7126
  pivotAdapter([
7061
7127
  reshapeWithEncoding
7062
7128
  ], [
@@ -7083,18 +7149,6 @@ const initRose = (spec, context)=>{
7083
7149
  result.innerRadius = 0;
7084
7150
  const hasNegativeValue = dataset.flat().find((d)=>d[foldInfo.measureValue] < 0);
7085
7151
  if (hasNegativeValue) result.innerRadius = 0.05;
7086
- result.rose = {
7087
- style: {
7088
- stroke: '#ffffff',
7089
- lineWidth: 1
7090
- },
7091
- state: {
7092
- hover: {
7093
- lineWidth: 1,
7094
- fillOpacity: 0.6
7095
- }
7096
- }
7097
- };
7098
7152
  result.region = [
7099
7153
  {
7100
7154
  clip: true
@@ -7103,7 +7157,7 @@ const initRose = (spec, context)=>{
7103
7157
  result.animation = true;
7104
7158
  return result;
7105
7159
  };
7106
- const radiusAxis = (spec, context)=>{
7160
+ const angleAxis = (spec, context)=>{
7107
7161
  const result = {
7108
7162
  ...spec
7109
7163
  };
@@ -7115,26 +7169,37 @@ const radiusAxis = (spec, context)=>{
7115
7169
  const showAxis = !(is0D || is1M1D);
7116
7170
  if (!result.axes) result.axes = [];
7117
7171
  result.axes.push({
7118
- orient: 'radius',
7172
+ orient: 'angle',
7119
7173
  visible: showAxis,
7120
7174
  zero: true,
7121
7175
  nice: !!showAxis,
7176
+ paddingInner: showAxis ? [
7177
+ 0.15,
7178
+ 0.1
7179
+ ] : [
7180
+ 0,
7181
+ 0
7182
+ ],
7183
+ paddingOuter: showAxis ? [
7184
+ 0.075,
7185
+ 0.1
7186
+ ] : [
7187
+ 0,
7188
+ 0
7189
+ ],
7122
7190
  grid: {
7123
7191
  visible: showAxis
7124
7192
  },
7125
- tick: {
7126
- visible: showAxis
7127
- },
7128
- label: {
7193
+ domainLine: {
7129
7194
  visible: showAxis
7130
7195
  },
7131
- domainLine: {
7196
+ tick: {
7132
7197
  visible: showAxis
7133
7198
  }
7134
7199
  });
7135
7200
  return result;
7136
7201
  };
7137
- const angleAxis = (spec, context)=>{
7202
+ const radiusAxis = (spec, context)=>{
7138
7203
  const result = {
7139
7204
  ...spec
7140
7205
  };
@@ -7146,50 +7211,79 @@ const angleAxis = (spec, context)=>{
7146
7211
  const showAxis = !(is0D || is1M1D);
7147
7212
  if (!result.axes) result.axes = [];
7148
7213
  result.axes.push({
7149
- orient: 'angle',
7214
+ orient: 'radius',
7150
7215
  visible: showAxis,
7151
7216
  zero: true,
7152
7217
  nice: !!showAxis,
7153
- paddingInner: showAxis ? [
7154
- 0.15,
7155
- 0.1
7156
- ] : [
7157
- 0,
7158
- 0
7159
- ],
7160
- paddingOuter: showAxis ? [
7161
- 0.075,
7162
- 0.1
7163
- ] : [
7164
- 0,
7165
- 0
7166
- ],
7167
7218
  grid: {
7168
7219
  visible: showAxis
7169
7220
  },
7170
- domainLine: {
7221
+ tick: {
7171
7222
  visible: showAxis
7172
7223
  },
7173
- tick: {
7224
+ label: {
7225
+ visible: showAxis
7226
+ },
7227
+ domainLine: {
7174
7228
  visible: showAxis
7175
7229
  }
7176
7230
  });
7177
7231
  return result;
7178
7232
  };
7233
+ const colorRoseStyleFill = (stylePipe)=>(spec, context)=>{
7234
+ const result = stylePipe(spec, context);
7235
+ const { advancedVSeed } = context;
7236
+ const { datasetReshapeInfo } = advancedVSeed;
7237
+ const { unfoldInfo } = datasetReshapeInfo[0];
7238
+ if (isLinearColor(advancedVSeed)) {
7239
+ if (result?.rose?.style) result.rose.style.fill = {
7240
+ field: unfoldInfo.encodingColor,
7241
+ scale: 'color'
7242
+ };
7243
+ }
7244
+ return result;
7245
+ };
7246
+ const roseStyle = (spec, context)=>{
7247
+ const { advancedVSeed } = context;
7248
+ const { dataset } = advancedVSeed;
7249
+ const showStroke = dataset.length <= 30;
7250
+ const result = {
7251
+ ...spec,
7252
+ rose: {
7253
+ style: {}
7254
+ }
7255
+ };
7256
+ return {
7257
+ ...result,
7258
+ rose: {
7259
+ style: {
7260
+ stroke: '#ffffff',
7261
+ lineWidth: showStroke ? 1 : 0
7262
+ },
7263
+ state: {
7264
+ hover: {
7265
+ lineWidth: 1,
7266
+ fillOpacity: 0.6
7267
+ }
7268
+ }
7269
+ }
7270
+ };
7271
+ };
7179
7272
  const rose = [
7180
7273
  initRose,
7181
7274
  stackCornerRadius_stackCornerRadius,
7182
7275
  stackInverse,
7183
- color_color,
7276
+ colorAdapter(color_color, linearColor),
7184
7277
  background_backgroundColor,
7185
7278
  datasetXY,
7186
7279
  progressive,
7187
- radiusAxis,
7188
7280
  angleAxis,
7189
- label_label,
7190
- tooltip_tooltip,
7281
+ radiusAxis,
7191
7282
  verticalCrosshairRect,
7192
- discreteLegend
7283
+ colorRoseStyleFill(roseStyle),
7284
+ colorAdapter(discreteLegend, colorLegend),
7285
+ label_label,
7286
+ tooltip_tooltip
7193
7287
  ];
7194
7288
  const pivotRose = [
7195
7289
  initPivot,
@@ -7200,19 +7294,20 @@ const pivotRose = [
7200
7294
  initRose,
7201
7295
  stackCornerRadius_stackCornerRadius,
7202
7296
  stackInverse,
7203
- color_color,
7297
+ colorAdapter(color_color, linearColor),
7204
7298
  background_backgroundColor,
7205
7299
  datasetXY,
7206
7300
  progressive,
7207
7301
  radiusAxis,
7208
7302
  angleAxis,
7303
+ verticalCrosshairRect,
7304
+ colorRoseStyleFill(roseStyle),
7209
7305
  label_label,
7210
- tooltip_tooltip,
7211
- verticalCrosshairRect
7306
+ tooltip_tooltip
7212
7307
  ]),
7213
7308
  pivotRowDimensions,
7214
7309
  pivotColumnDimensions,
7215
- pivotDiscreteLegend
7310
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
7216
7311
  ];
7217
7312
  const roseSpecPipeline = [
7218
7313
  pivotAdapter_pivotAdapter(rose, pivotRose)
@@ -7223,9 +7318,11 @@ const registerRose = ()=>{
7223
7318
  };
7224
7319
  const roseParallelAdvancedPipeline = [
7225
7320
  initAdvancedVSeed_initAdvancedVSeed,
7321
+ defaultMeasures_defaultMeasures,
7322
+ defaultDimensions,
7323
+ defaultMeasureName,
7226
7324
  encodingForRose,
7227
7325
  buildMeasures,
7228
- autoDimensions_autoDimensions,
7229
7326
  pivotAdapter([
7230
7327
  reshapeWithEncoding
7231
7328
  ], [
@@ -7281,15 +7378,16 @@ const initRoseParallel = (spec, context)=>{
7281
7378
  const roseParallel = [
7282
7379
  initRoseParallel,
7283
7380
  stackCornerRadius_stackCornerRadius,
7284
- color_color,
7381
+ colorAdapter(color_color, linearColor),
7285
7382
  background_backgroundColor,
7286
7383
  datasetXY,
7287
7384
  progressive,
7288
7385
  radiusAxis,
7289
7386
  angleAxis,
7387
+ colorRoseStyleFill(roseStyle),
7388
+ colorAdapter(discreteLegend, colorLegend),
7290
7389
  label_label,
7291
7390
  tooltip_tooltip,
7292
- discreteLegend,
7293
7391
  verticalCrosshairRect,
7294
7392
  annotationPoint_annotationPoint,
7295
7393
  annotationVerticalLine_annotationVerticalLine,
@@ -7304,15 +7402,16 @@ const pivotRoseParallel = [
7304
7402
  pivotIndicators_pivotIndicators([
7305
7403
  initRoseParallel,
7306
7404
  stackCornerRadius_stackCornerRadius,
7307
- color_color,
7405
+ colorAdapter(color_color, linearColor),
7308
7406
  background_backgroundColor,
7309
7407
  datasetXY,
7310
7408
  progressive,
7311
7409
  radiusAxis,
7312
7410
  angleAxis,
7411
+ verticalCrosshairRect,
7412
+ colorRoseStyleFill(roseStyle),
7313
7413
  label_label,
7314
7414
  tooltip_tooltip,
7315
- verticalCrosshairRect,
7316
7415
  annotationPoint_annotationPoint,
7317
7416
  annotationVerticalLine_annotationVerticalLine,
7318
7417
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7320,7 +7419,7 @@ const pivotRoseParallel = [
7320
7419
  ]),
7321
7420
  pivotRowDimensions,
7322
7421
  pivotColumnDimensions,
7323
- pivotDiscreteLegend
7422
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
7324
7423
  ];
7325
7424
  const roseParallelSpecPipeline = [
7326
7425
  pivotAdapter_pivotAdapter(roseParallel, pivotRoseParallel)
@@ -7329,11 +7428,9 @@ const registerRoseParallel = ()=>{
7329
7428
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7330
7429
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7331
7430
  };
7332
- const encodingForRadar = (advancedVSeed, context)=>{
7333
- const { vseed } = context;
7334
- const { measures: vseedMeasures = [] } = vseed;
7335
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7336
- const dimensions = getBasicDimensions(vseed);
7431
+ const encodingForRadar = (advancedVSeed)=>{
7432
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7433
+ const measures = findAllMeasures(vseedMeasures);
7337
7434
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7338
7435
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7339
7436
  const encoding = {};
@@ -7351,12 +7448,11 @@ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7351
7448
  encoding.radius = (0, external_remeda_namespaceObject.unique)(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7352
7449
  };
7353
7450
  const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7354
- const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7355
7451
  const uniqueDimIds = (0, external_remeda_namespaceObject.unique)(dimensions.map((d)=>d.id));
7356
7452
  encoding.angle = uniqueDimIds.slice(0, 1);
7357
- encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7358
- encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7453
+ encoding.color = uniqueDimIds.slice(1);
7359
7454
  encoding.tooltip = uniqueDimIds;
7455
+ encoding.detail = [];
7360
7456
  encoding.label = [];
7361
7457
  encoding.row = [];
7362
7458
  encoding.column = [];
@@ -7368,20 +7464,23 @@ const radar_generateMeasureEncoding = (measures, encoding)=>{
7368
7464
  if (color.length > 0) encoding.color = color;
7369
7465
  };
7370
7466
  const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7371
- encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7467
+ encoding.angle = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7372
7468
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7373
- encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7469
+ encoding.detail = [];
7374
7470
  if (0 === encoding.angle.length) encoding.angle = [
7375
7471
  dimensions[0].id
7376
7472
  ];
7377
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7378
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7473
+ if (0 === encoding.color.length) encoding.color = [
7474
+ MeasureName
7475
+ ];
7379
7476
  };
7380
7477
  const radarAdvancedPipeline = [
7381
7478
  initAdvancedVSeed_initAdvancedVSeed,
7479
+ defaultMeasures_defaultMeasures,
7480
+ defaultDimensions,
7481
+ defaultMeasureName,
7382
7482
  encodingForRadar,
7383
7483
  buildMeasures,
7384
- autoDimensions_autoDimensions,
7385
7484
  pivotAdapter([
7386
7485
  reshapeWithEncoding
7387
7486
  ], [
@@ -7515,11 +7614,9 @@ const registerRadar = ()=>{
7515
7614
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7516
7615
  Builder._specPipelineMap.radar = radarSpecPipeline;
7517
7616
  };
7518
- const encodingForFunnel = (advancedVSeed, context)=>{
7519
- const { vseed } = context;
7520
- const { measures: vseedMeasures = [] } = vseed;
7521
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7522
- const dimensions = getBasicDimensions(vseed);
7617
+ const encodingForFunnel = (advancedVSeed)=>{
7618
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7619
+ const measures = findAllMeasures(vseedMeasures);
7523
7620
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7524
7621
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7525
7622
  const encoding = {};
@@ -7554,14 +7651,18 @@ const funnel_generateMeasureEncoding = (measures, encoding)=>{
7554
7651
  const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7555
7652
  encoding.color = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7556
7653
  encoding.detail = (0, external_remeda_namespaceObject.unique)(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7557
- if (0 === encoding.color.length) encoding.color = dimensions.map((item)=>item.id);
7654
+ if (0 === encoding.color.length) encoding.color = [
7655
+ MeasureName
7656
+ ];
7558
7657
  if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7559
7658
  };
7560
7659
  const funnelAdvancedPipeline = [
7561
7660
  initAdvancedVSeed_initAdvancedVSeed,
7661
+ defaultMeasures_defaultMeasures,
7662
+ defaultDimensions,
7663
+ defaultMeasureName,
7562
7664
  encodingForFunnel,
7563
7665
  buildMeasures,
7564
- autoDimensions_autoDimensions,
7565
7666
  pivotAdapter([
7566
7667
  reshapeWithEncoding
7567
7668
  ], [
@@ -7591,34 +7692,55 @@ const initFunnel = (spec, context)=>{
7591
7692
  clip: true
7592
7693
  }
7593
7694
  ];
7594
- result.funnel = {
7595
- style: {
7596
- cornerRadius: 4,
7597
- fill: {
7598
- field: unfoldInfo.encodingColorId,
7599
- scale: 'color'
7600
- }
7601
- },
7602
- state: {
7603
- hover: {
7604
- fillOpacity: 0.6
7605
- }
7606
- }
7607
- };
7608
7695
  result.transformLabel = {
7609
7696
  visible: true
7610
7697
  };
7611
7698
  result.animation = true;
7612
7699
  return result;
7613
7700
  };
7701
+ const colorFunnelStyleFill = (stylePipe)=>(spec, context)=>{
7702
+ const result = stylePipe(spec, context);
7703
+ const { advancedVSeed } = context;
7704
+ const { datasetReshapeInfo } = advancedVSeed;
7705
+ const { unfoldInfo } = datasetReshapeInfo[0];
7706
+ if (isLinearColor(advancedVSeed)) {
7707
+ if (result?.funnel?.style) result.funnel.style.fill = {
7708
+ field: unfoldInfo.encodingColor,
7709
+ scale: 'color'
7710
+ };
7711
+ }
7712
+ return result;
7713
+ };
7714
+ const funnelStyle = (spec)=>{
7715
+ const result = {
7716
+ ...spec,
7717
+ funnel: {
7718
+ style: {}
7719
+ }
7720
+ };
7721
+ return {
7722
+ ...result,
7723
+ funnel: {
7724
+ style: {
7725
+ cornerRadius: 4
7726
+ },
7727
+ state: {
7728
+ hover: {
7729
+ fillOpacity: 0.6
7730
+ }
7731
+ }
7732
+ }
7733
+ };
7734
+ };
7614
7735
  const funnel = [
7615
7736
  initFunnel,
7616
7737
  background_backgroundColor,
7617
7738
  datasetXY,
7618
- color_color,
7739
+ colorAdapter(color_color, linearColor),
7619
7740
  label_label,
7741
+ colorAdapter(discreteLegend, colorLegend),
7742
+ colorFunnelStyleFill(funnelStyle),
7620
7743
  tooltip_tooltip,
7621
- discreteLegend,
7622
7744
  annotationPoint_annotationPoint,
7623
7745
  annotationVerticalLine_annotationVerticalLine,
7624
7746
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7633,17 +7755,18 @@ const pivotFunnel = [
7633
7755
  initFunnel,
7634
7756
  background_backgroundColor,
7635
7757
  datasetXY,
7636
- color_color,
7758
+ colorAdapter(color_color, linearColor),
7637
7759
  label_label,
7638
7760
  tooltip_tooltip,
7639
- discreteLegend,
7761
+ colorFunnelStyleFill(funnelStyle),
7640
7762
  annotationPoint_annotationPoint,
7641
7763
  annotationVerticalLine_annotationVerticalLine,
7642
7764
  annotationHorizontalLine_annotationHorizontalLine,
7643
7765
  annotationArea_annotationArea
7644
7766
  ]),
7645
7767
  pivotRowDimensions,
7646
- pivotColumnDimensions
7768
+ pivotColumnDimensions,
7769
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
7647
7770
  ];
7648
7771
  const funnelSpecPipeline = [
7649
7772
  pivotAdapter_pivotAdapter(funnel, pivotFunnel)
@@ -7652,11 +7775,9 @@ const registerFunnel = ()=>{
7652
7775
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7653
7776
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7654
7777
  };
7655
- const encodingForHeatmap = (advancedVSeed, context)=>{
7656
- const { vseed } = context;
7657
- const { measures: vseedMeasures = [] } = vseed;
7658
- const measures = vseedMeasures.length ? findAllMeasures(vseedMeasures) : getBasicMeasures(vseed);
7659
- const dimensions = getBasicDimensions(vseed);
7778
+ const encodingForHeatmap = (advancedVSeed)=>{
7779
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7780
+ const measures = findAllMeasures(vseedMeasures);
7660
7781
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7661
7782
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7662
7783
  const encoding = {};
@@ -7701,14 +7822,18 @@ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7701
7822
  ];
7702
7823
  if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
7703
7824
  else encoding.y = dimensions.slice(0).map((item)=>item.id);
7704
- if (0 === encoding.color.length) encoding.color = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7825
+ if (0 === encoding.color.length) encoding.color = [
7826
+ MeasureName
7827
+ ];
7705
7828
  if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7706
7829
  };
7707
7830
  const heatmapAdvancedPipeline = [
7708
7831
  initAdvancedVSeed_initAdvancedVSeed,
7832
+ defaultMeasures_defaultMeasures,
7833
+ defaultDimensions,
7834
+ defaultMeasureName,
7709
7835
  encodingForHeatmap,
7710
7836
  buildMeasures,
7711
- autoDimensions_autoDimensions,
7712
7837
  pivotAdapter([
7713
7838
  reshapeWithEncoding
7714
7839
  ], [
@@ -7730,6 +7855,37 @@ const labelColorInversion = (spec)=>{
7730
7855
  };
7731
7856
  return result;
7732
7857
  };
7858
+ const colorCellStyleFill = (stylePipe)=>(spec, context)=>{
7859
+ const result = stylePipe(spec, context);
7860
+ const { advancedVSeed } = context;
7861
+ const { datasetReshapeInfo } = advancedVSeed;
7862
+ const { unfoldInfo } = datasetReshapeInfo[0];
7863
+ if (isLinearColor(advancedVSeed)) {
7864
+ if (result?.cell?.style) result.cell.style.fill = {
7865
+ field: unfoldInfo.encodingColor,
7866
+ scale: 'color'
7867
+ };
7868
+ }
7869
+ return result;
7870
+ };
7871
+ const cellStyle = (spec)=>{
7872
+ const result = {
7873
+ ...spec,
7874
+ cell: {
7875
+ style: {}
7876
+ }
7877
+ };
7878
+ return {
7879
+ ...result,
7880
+ cell: {
7881
+ style: {
7882
+ shape: 'rect',
7883
+ stroke: '#ffffff',
7884
+ lineWidth: 1
7885
+ }
7886
+ }
7887
+ };
7888
+ };
7733
7889
  const initHeatmap = (spec, context)=>{
7734
7890
  const result = {
7735
7891
  ...spec
@@ -7744,13 +7900,6 @@ const initHeatmap = (spec, context)=>{
7744
7900
  result.seriesField = unfoldInfo.encodingColorId;
7745
7901
  result.valueField = foldInfo.measureValue;
7746
7902
  result.padding = 0;
7747
- result.cell = {
7748
- style: {
7749
- shape: 'rect',
7750
- stroke: '#ffffff',
7751
- lineWidth: 1
7752
- }
7753
- };
7754
7903
  result.axes = [
7755
7904
  {
7756
7905
  type: 'band',
@@ -7775,14 +7924,12 @@ const heatmap = [
7775
7924
  initHeatmap,
7776
7925
  background_backgroundColor,
7777
7926
  datasetXY,
7778
- color_color,
7927
+ colorAdapter(color_color, linearColor),
7779
7928
  label_label,
7780
7929
  labelColorInversion,
7781
- discreteLegend,
7930
+ colorAdapter(discreteLegend, colorLegend),
7931
+ colorCellStyleFill(cellStyle),
7782
7932
  tooltip_tooltip,
7783
- pointStyle_pointStyle,
7784
- pointStateDimensionHover,
7785
- lineStyle_lineStyle,
7786
7933
  annotationPoint_annotationPoint,
7787
7934
  annotationVerticalLine_annotationVerticalLine,
7788
7935
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7797,21 +7944,20 @@ const pivotHeatmap = [
7797
7944
  initHeatmap,
7798
7945
  background_backgroundColor,
7799
7946
  datasetXY,
7800
- color_color,
7947
+ colorAdapter(color_color, linearColor),
7801
7948
  label_label,
7802
7949
  labelColorInversion,
7803
7950
  discreteLegend,
7804
7951
  tooltip_tooltip,
7805
- pointStyle_pointStyle,
7806
- pointStateDimensionHover,
7807
- lineStyle_lineStyle,
7952
+ colorCellStyleFill(cellStyle),
7808
7953
  annotationPoint_annotationPoint,
7809
7954
  annotationVerticalLine_annotationVerticalLine,
7810
7955
  annotationHorizontalLine_annotationHorizontalLine,
7811
7956
  annotationArea_annotationArea
7812
7957
  ]),
7813
7958
  pivotRowDimensions,
7814
- pivotColumnDimensions
7959
+ pivotColumnDimensions,
7960
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
7815
7961
  ];
7816
7962
  const heatmapSpecPipeline = [
7817
7963
  pivotAdapter_pivotAdapter(heatmap, pivotHeatmap)
@@ -8596,7 +8742,9 @@ const zMeasure = external_zod_namespaceObject.z.object({
8596
8742
  'size',
8597
8743
  'color',
8598
8744
  'label',
8599
- 'tooltip'
8745
+ 'tooltip',
8746
+ 'detail',
8747
+ 'column'
8600
8748
  ]).optional(),
8601
8749
  parentId: external_zod_namespaceObject.z.string().optional()
8602
8750
  });