@visactor/vseed 0.1.2 → 0.1.3

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 (55) hide show
  1. package/dist/builder/builder/builder.d.ts +4 -28
  2. package/dist/dataReshape/dataReshapeByEncoding.d.ts +1 -0
  3. package/dist/dataReshape/foldMeasures.d.ts +5 -4
  4. package/dist/index.cjs +335 -250
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.js +335 -247
  7. package/dist/index.js.map +1 -1
  8. package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
  9. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -3
  10. package/dist/pipeline/advanced/chart/pipes/{init/autoMeasures.d.ts → measures/buildMeasures.d.ts} +1 -1
  11. package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.d.ts +2 -0
  12. package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.d.ts +2 -0
  13. package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +3 -0
  14. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +28 -0
  15. package/dist/pipeline/spec/chart/pipes/color/colorAdapter.d.ts +2 -1
  16. package/dist/pipeline/spec/chart/pipes/color/index.d.ts +2 -1
  17. package/dist/pipeline/spec/chart/pipes/color/linearColorForDualAxis.d.ts +2 -0
  18. package/dist/pipeline/utils/chatType.d.ts +1 -1
  19. package/dist/types/advancedVSeed.d.ts +13 -14
  20. package/dist/types/chartType/area/zArea.d.ts +13 -0
  21. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +13 -0
  22. package/dist/types/chartType/bar/zBar.d.ts +13 -0
  23. package/dist/types/chartType/barParallel/zBarParallel.d.ts +13 -0
  24. package/dist/types/chartType/barPercent/zBarPercent.d.ts +13 -0
  25. package/dist/types/chartType/column/zColumn.d.ts +13 -0
  26. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +13 -0
  27. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +13 -0
  28. package/dist/types/chartType/donut/zDonut.d.ts +13 -0
  29. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +65 -0
  30. package/dist/types/chartType/funnel/zFunnel.d.ts +13 -0
  31. package/dist/types/chartType/heatmap/zHeatmap.d.ts +13 -0
  32. package/dist/types/chartType/line/line.d.ts +0 -1
  33. package/dist/types/chartType/line/zLine.d.ts +13 -0
  34. package/dist/types/chartType/pie/zPie.d.ts +13 -0
  35. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +13 -0
  36. package/dist/types/chartType/radar/zRadar.d.ts +13 -0
  37. package/dist/types/chartType/rose/zRose.d.ts +13 -0
  38. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +13 -0
  39. package/dist/types/chartType/scatter/zScatter.d.ts +65 -0
  40. package/dist/types/chartType/table/zTable.d.ts +13 -0
  41. package/dist/types/properties/encoding/encoding.d.ts +0 -1
  42. package/dist/types/properties/encoding/index.d.ts +2 -2
  43. package/dist/types/properties/encoding/zEncoding.d.ts +0 -14
  44. package/dist/types/properties/measures/dualMeasures.d.ts +1 -0
  45. package/dist/types/properties/measures/measures.d.ts +19 -0
  46. package/dist/types/properties/measures/scatterMeasures.d.ts +1 -0
  47. package/dist/types/properties/measures/zDualMeasures.d.ts +104 -0
  48. package/dist/types/properties/measures/zMeasures.d.ts +39 -0
  49. package/dist/types/properties/measures/zScatterMeasures.d.ts +104 -0
  50. package/dist/types/zVseed.d.ts +364 -0
  51. package/dist/umd/index.js +335 -248
  52. package/dist/umd/index.js.map +1 -1
  53. package/package.json +1 -1
  54. package/dist/pipeline/advanced/chart/pipes/init/autoDualMeasures.d.ts +0 -2
  55. package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +0 -2
package/dist/index.js CHANGED
@@ -1036,6 +1036,39 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1036
1036
  locale: locale || 'zh-CN'
1037
1037
  };
1038
1038
  };
1039
+ const getBasicMeasures = (vseed)=>{
1040
+ const { dataset, measures } = vseed;
1041
+ if (!measures || 0 === measures.length) return generateMeasuresByDataset(dataset);
1042
+ return measures;
1043
+ };
1044
+ const generateMeasuresByDataset = (dataset)=>{
1045
+ if (!dataset) throw new Error('dataset is required');
1046
+ if (0 === dataset.length) return [];
1047
+ const top100dataset = dataset.slice(0, 100);
1048
+ const sample = top100dataset.reduce((prev, cur)=>({
1049
+ ...prev,
1050
+ ...cur
1051
+ }), {});
1052
+ const basicMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1053
+ '',
1054
+ null,
1055
+ void 0
1056
+ ].includes(key)).map((measure)=>({
1057
+ id: measure,
1058
+ alias: measure
1059
+ }));
1060
+ return basicMeasures;
1061
+ };
1062
+ const isMeasureTreeWithChildren = (vseed)=>{
1063
+ const { measures } = vseed;
1064
+ if (!measures) return false;
1065
+ return measures.some((measure)=>'children' in measure);
1066
+ };
1067
+ const isMeasureTreeWithParentId = (vseed)=>{
1068
+ const { measures } = vseed;
1069
+ if (!measures) return false;
1070
+ return measures.some((measure)=>'parentId' in measure);
1071
+ };
1039
1072
  const measureDepth = (measures = [])=>{
1040
1073
  if (!measures) return 0;
1041
1074
  let depth = 1;
@@ -1054,23 +1087,26 @@ const isVTable = (vseed)=>[
1054
1087
  const isVChart = (vseed)=>!isVTable(vseed);
1055
1088
  const isPivotChart = (vseed)=>{
1056
1089
  if (isVTable(vseed)) return false;
1090
+ if (isMeasureTreeWithParentId(vseed)) {
1091
+ const parentIds = vseed.measures?.map((measure)=>measure.parentId);
1092
+ return parentIds && parentIds.length > 1;
1093
+ }
1057
1094
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1058
1095
  const { dimensions = [] } = vseed;
1059
1096
  const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1060
1097
  if (hasRowOrColumnDimension) return true;
1061
1098
  if ('scatter' === vseed.chartType) {
1062
- if (vseed.measures) {
1099
+ if (isMeasureTreeWithChildren(vseed)) {
1063
1100
  const depth = measureDepth(vseed.measures);
1064
- if (3 === depth) return true;
1065
- return false;
1101
+ return 3 === depth;
1066
1102
  }
1067
1103
  if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
1104
+ return false;
1068
1105
  }
1069
1106
  if ('dualAxis' === vseed.chartType) {
1070
- if (vseed.measures) {
1107
+ if (isMeasureTreeWithChildren(vseed)) {
1071
1108
  const depth = measureDepth(vseed.measures);
1072
- if (3 === depth) return true;
1073
- return false;
1109
+ return 3 === depth;
1074
1110
  }
1075
1111
  if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1076
1112
  }
@@ -1081,77 +1117,49 @@ const isPivotChart = (vseed)=>{
1081
1117
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1082
1118
  return hasRowOrColumnDimension || hasMeasureGroup;
1083
1119
  };
1084
- const autoMeasures_autoMeasures = (advancedVSeed, context)=>{
1085
- const result = {
1086
- ...advancedVSeed
1087
- };
1088
- const { vseed } = context;
1089
- const { measures, dataset } = vseed;
1090
- if (!dataset) throw new Error('dataset is required');
1091
- if (0 === dataset.length) return result;
1092
- if (isPivotChart(vseed)) return autoMeasureGroup(advancedVSeed, context);
1093
- if (measures) {
1094
- result.measures = measures;
1095
- return result;
1096
- }
1097
- const top100dataset = dataset.slice(0, 100);
1098
- const sample = top100dataset.reduce((prev, cur)=>({
1099
- ...prev,
1100
- ...cur
1101
- }), {});
1102
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1103
- '',
1104
- null,
1105
- void 0
1106
- ].includes(key)).map((measure)=>({
1107
- id: measure,
1108
- alias: measure
1109
- }));
1110
- return result;
1111
- };
1112
- const autoMeasureGroup = (advancedVSeed, context)=>{
1120
+ const buildMeasures = (advancedVSeed, context)=>{
1113
1121
  const { vseed } = context;
1114
- const { measures } = vseed;
1115
- const hasMeasureGroup = measures?.some((measure)=>measure.children);
1116
- if (!measures) return advancedVSeed;
1117
- if (!hasMeasureGroup) {
1118
- const newMeasures = [
1119
- {
1120
- id: 'measureGroup',
1121
- alias: 'measureGroup',
1122
- children: measures
1123
- }
1124
- ];
1125
- return {
1126
- ...advancedVSeed,
1127
- measures: newMeasures
1128
- };
1122
+ if (isMeasureTreeWithChildren(vseed)) {
1123
+ advancedVSeed.measures = vseed.measures;
1124
+ return advancedVSeed;
1129
1125
  }
1130
- let currentGroup = createEmptyMeasureGroup();
1131
- const measureGroups = [];
1132
- for (const measure of measures)if ('children' in measure) {
1133
- if (currentGroup.children?.length) {
1134
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1135
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1136
- measureGroups.push(currentGroup);
1137
- currentGroup = createEmptyMeasureGroup();
1138
- }
1139
- measureGroups.push(measure);
1140
- } else currentGroup.children?.push(measure);
1141
- if (currentGroup.children?.length) {
1142
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1143
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1144
- measureGroups.push(currentGroup);
1145
- currentGroup = createEmptyMeasureGroup();
1126
+ if (isMeasureTreeWithParentId(vseed)) {
1127
+ advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
1128
+ return advancedVSeed;
1146
1129
  }
1147
- advancedVSeed.measures = measureGroups;
1130
+ const basicMeasures = getBasicMeasures(vseed);
1131
+ if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
1132
+ else advancedVSeed.measures = basicMeasures;
1148
1133
  return advancedVSeed;
1149
1134
  };
1150
- const createEmptyMeasureGroup = ()=>({
1151
- id: '',
1152
- alias: '',
1153
- children: []
1135
+ const generateMeasuresByParentId = (measures)=>{
1136
+ const measureTree = [];
1137
+ measures.forEach((measure)=>{
1138
+ if (!measure.parentId) return;
1139
+ const parent = measureTree.find((item)=>item.id === measure.parentId);
1140
+ if (parent && 'children' in parent) {
1141
+ parent.children = parent.children || [];
1142
+ parent.children.push(measure);
1143
+ } else measureTree.push({
1144
+ id: measure.parentId,
1145
+ children: [
1146
+ measure
1147
+ ]
1148
+ });
1154
1149
  });
1150
+ return measureTree;
1151
+ };
1152
+ const basicMeasuresToMeasureTree = (measures)=>{
1153
+ const id = measures.map((item)=>item.id).join('-');
1154
+ const alias = measures.map((item)=>item.alias || item.id).join('-');
1155
+ return [
1156
+ {
1157
+ id,
1158
+ alias,
1159
+ children: measures
1160
+ }
1161
+ ];
1162
+ };
1155
1163
  const ORIGINAL_DATA = '__OriginalData__';
1156
1164
  const Separator = '-';
1157
1165
  const FoldMeasureName = '__MeaName__';
@@ -1253,8 +1261,7 @@ const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1253
1261
  return execPipeline(pipeline, context, advancedVSeed);
1254
1262
  };
1255
1263
  const foldMeasures = (dataset, measures, encoding, options)=>{
1256
- const { measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue } = options || {};
1257
- const colorMeasureId = encoding?.color?.length === 1 && measures.some((m)=>m.id === encoding?.color?.[0]) ? encoding?.color?.[0] : void 0;
1264
+ const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1258
1265
  const foldInfo = {
1259
1266
  measureId,
1260
1267
  measureName,
@@ -1353,11 +1360,12 @@ const applyEncoding = (encoding, dimensions, datum, separator)=>{
1353
1360
  if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1354
1361
  };
1355
1362
  const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1356
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1363
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
1357
1364
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, encoding, {
1358
1365
  measureId: foldMeasureId,
1359
1366
  measureName: foldMeasureName,
1360
- measureValue: foldMeasureValue
1367
+ measureValue: foldMeasureValue,
1368
+ colorMeasureId
1361
1369
  });
1362
1370
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1363
1371
  foldMeasureId,
@@ -1370,6 +1378,24 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
1370
1378
  unfoldInfo
1371
1379
  };
1372
1380
  };
1381
+ const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
1382
+ const { advancedVSeed } = context;
1383
+ if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
1384
+ return ordinalPipe(spec, context);
1385
+ };
1386
+ const isLinearColor = (advancedVSeed)=>{
1387
+ const { encoding, measures } = advancedVSeed;
1388
+ const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
1389
+ const { color } = encoding;
1390
+ return color?.length === 1 && measureIdList.includes(color[0]);
1391
+ };
1392
+ const getColorMeasureId = (advancedVSeed)=>{
1393
+ if (isLinearColor(advancedVSeed)) {
1394
+ const { encoding } = advancedVSeed;
1395
+ const { color } = encoding;
1396
+ return color?.[0];
1397
+ }
1398
+ };
1373
1399
  const reshapeWithEncoding = (advancedVSeed, context)=>{
1374
1400
  const result = {
1375
1401
  ...advancedVSeed
@@ -1379,7 +1405,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
1379
1405
  const { dimensions, measures, encoding } = advancedVSeed;
1380
1406
  if (!measures || !dimensions || !dataset || !encoding) return result;
1381
1407
  if (0 === measures.length) throw new Error('measures can not be empty');
1382
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
1408
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1409
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1410
+ });
1383
1411
  return {
1384
1412
  ...result,
1385
1413
  dataset: newDatasets,
@@ -1415,7 +1443,8 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1415
1443
  if (!measures) return;
1416
1444
  const groupId = measureGroup.id;
1417
1445
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1418
- foldMeasureValue: `${FoldMeasureValue}${groupId}`
1446
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1447
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1419
1448
  });
1420
1449
  const reshapeInfo = {
1421
1450
  id: groupId,
@@ -1622,7 +1651,7 @@ const annotation_annotation = (advancedVSeed, context)=>{
1622
1651
  };
1623
1652
  const lineAdvancedPipeline = [
1624
1653
  initAdvancedVSeed_initAdvancedVSeed,
1625
- autoMeasures_autoMeasures,
1654
+ buildMeasures,
1626
1655
  autoDimensions_autoDimensions,
1627
1656
  encodingForLine,
1628
1657
  pivotAdapter([
@@ -1637,17 +1666,6 @@ const lineAdvancedPipeline = [
1637
1666
  markStyle_markStyle,
1638
1667
  annotation_annotation
1639
1668
  ];
1640
- const colorAdapter = (ordinalPipe, linearPipe)=>(spec, context)=>{
1641
- const { advancedVSeed } = context;
1642
- if (isLinearColor(advancedVSeed)) return linearPipe(spec, context);
1643
- return ordinalPipe(spec, context);
1644
- };
1645
- const isLinearColor = (advancedVSeed)=>{
1646
- const { encoding, measures } = advancedVSeed;
1647
- const measureIdList = findAllMeasures(measures).map((measure)=>measure.id);
1648
- const { color } = encoding;
1649
- return color?.length === 1 && measureIdList.includes(color[0]);
1650
- };
1651
1669
  const initLine = (spec, context)=>{
1652
1670
  const result = {
1653
1671
  ...spec
@@ -3478,7 +3496,7 @@ const encodingForColumn = (advancedVSeed, context)=>{
3478
3496
  };
3479
3497
  const columnAdvancedPipeline = [
3480
3498
  initAdvancedVSeed_initAdvancedVSeed,
3481
- autoMeasures_autoMeasures,
3499
+ buildMeasures,
3482
3500
  autoDimensions_autoDimensions,
3483
3501
  encodingForColumn,
3484
3502
  pivotAdapter([
@@ -3927,7 +3945,7 @@ const registerColumn = ()=>{
3927
3945
  };
3928
3946
  const columnParallelAdvancedPipeline = [
3929
3947
  initAdvancedVSeed_initAdvancedVSeed,
3930
- autoMeasures_autoMeasures,
3948
+ buildMeasures,
3931
3949
  autoDimensions_autoDimensions,
3932
3950
  encodingForColumn,
3933
3951
  pivotAdapter([
@@ -4024,7 +4042,7 @@ const registerColumnParallel = ()=>{
4024
4042
  };
4025
4043
  const columnPercentAdvancedPipeline = [
4026
4044
  initAdvancedVSeed_initAdvancedVSeed,
4027
- autoMeasures_autoMeasures,
4045
+ buildMeasures,
4028
4046
  autoDimensions_autoDimensions,
4029
4047
  encodingForColumn,
4030
4048
  pivotAdapter([
@@ -4163,7 +4181,7 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4163
4181
  };
4164
4182
  const barAdvancedPipeline = [
4165
4183
  initAdvancedVSeed_initAdvancedVSeed,
4166
- autoMeasures_autoMeasures,
4184
+ buildMeasures,
4167
4185
  autoDimensions_autoDimensions,
4168
4186
  encodingForBar,
4169
4187
  pivotAdapter([
@@ -4516,7 +4534,7 @@ const registerBar = ()=>{
4516
4534
  };
4517
4535
  const barParallelAdvancedPipeline = [
4518
4536
  initAdvancedVSeed_initAdvancedVSeed,
4519
- autoMeasures_autoMeasures,
4537
+ buildMeasures,
4520
4538
  autoDimensions_autoDimensions,
4521
4539
  encodingForBar,
4522
4540
  pivotAdapter([
@@ -4612,7 +4630,7 @@ const registerBarParallel = ()=>{
4612
4630
  };
4613
4631
  const barPercentAdvancedPipeline = [
4614
4632
  initAdvancedVSeed_initAdvancedVSeed,
4615
- autoMeasures_autoMeasures,
4633
+ buildMeasures,
4616
4634
  autoDimensions_autoDimensions,
4617
4635
  encodingForBar,
4618
4636
  pivotAdapter([
@@ -4683,7 +4701,7 @@ const registerBarPercent = ()=>{
4683
4701
  };
4684
4702
  const areaAdvancedPipeline = [
4685
4703
  initAdvancedVSeed_initAdvancedVSeed,
4686
- autoMeasures_autoMeasures,
4704
+ buildMeasures,
4687
4705
  autoDimensions_autoDimensions,
4688
4706
  encodingForColumn,
4689
4707
  pivotAdapter([
@@ -4841,7 +4859,7 @@ const registerArea = ()=>{
4841
4859
  };
4842
4860
  const areaPercentAdvancedPipeline = [
4843
4861
  initAdvancedVSeed_initAdvancedVSeed,
4844
- autoMeasures_autoMeasures,
4862
+ buildMeasures,
4845
4863
  autoDimensions_autoDimensions,
4846
4864
  encodingForColumn,
4847
4865
  pivotAdapter([
@@ -4917,95 +4935,105 @@ const registerAreaPercent = ()=>{
4917
4935
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
4918
4936
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
4919
4937
  };
4920
- const autoScatterMeasures = (advancedVSeed, context)=>{
4921
- const result = {
4922
- ...advancedVSeed
4923
- };
4938
+ const buildMeasuresForScatter = (advancedVSeed, context)=>{
4924
4939
  const { vseed } = context;
4925
- const { dataset, scatterMeasures, measures } = vseed;
4926
- if (!dataset) throw new Error('dataset is required');
4927
- if (0 === dataset.length) return result;
4928
- if (scatterMeasures) {
4929
- result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
4930
- return result;
4940
+ if (isMeasureTreeWithChildren(vseed)) {
4941
+ advancedVSeed.measures = vseed.measures;
4942
+ return advancedVSeed;
4931
4943
  }
4932
- if (measures && measureDepth(measures) > 1) {
4933
- result.measures = measures;
4934
- return result;
4944
+ if (isMeasureTreeWithParentId(vseed)) {
4945
+ advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
4946
+ return advancedVSeed;
4935
4947
  }
4936
- const top100dataset = dataset.slice(0, 100);
4937
- const sample = top100dataset.reduce((prev, cur)=>({
4938
- ...prev,
4939
- ...cur
4940
- }), {});
4941
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
4942
- '',
4943
- null,
4944
- void 0
4945
- ].includes(key)).map((measure)=>({
4946
- id: measure,
4947
- alias: measure
4948
- }));
4949
- if (0 === newMeasures.length) result.measures = [];
4950
- else if (1 === newMeasures.length) result.measures = [
4951
- {
4952
- id: 'primary',
4953
- alias: 'primary',
4954
- children: newMeasures
4955
- }
4956
- ];
4957
- else if (newMeasures.length > 1) result.measures = [
4958
- {
4959
- id: 'primary',
4960
- alias: 'primary',
4961
- children: newMeasures.slice(0, 1)
4962
- },
4948
+ const basicMeasures = getBasicMeasures(vseed);
4949
+ const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(basicMeasures);
4950
+ advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
4951
+ return advancedVSeed;
4952
+ };
4953
+ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
4954
+ const yMeasures = [];
4955
+ const xMeasures = [];
4956
+ for(let index = 0; index < basicMeasures.length; index++){
4957
+ const item = basicMeasures[index];
4958
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
4959
+ item.encoding
4960
+ ];
4961
+ const isYAxis = encoding.includes('yAxis');
4962
+ const isXAxis = encoding.includes('xAxis');
4963
+ if (isYAxis) yMeasures.push(item);
4964
+ else if (isXAxis) xMeasures.push(item);
4965
+ else if (0 === index) yMeasures.push(item);
4966
+ else xMeasures.push(item);
4967
+ }
4968
+ return [
4963
4969
  {
4964
- id: 'secondary',
4965
- alias: 'secondary',
4966
- children: newMeasures.slice(1)
4970
+ id: 'scatterMeasures',
4971
+ xMeasures,
4972
+ yMeasures
4967
4973
  }
4968
4974
  ];
4969
- return result;
4970
4975
  };
4971
4976
  const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
4972
4977
  const measureTree = scatterMeasures.map((item, index)=>{
4973
- const { xMeasures, yMeasures } = item;
4978
+ const { id, xMeasures, yMeasures } = item;
4974
4979
  const groupChildren = [];
4975
- let id = '';
4980
+ let groupId = `${id}-`;
4976
4981
  if (xMeasures) {
4977
- const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
4982
+ const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
4978
4983
  xMeasures
4979
4984
  ];
4980
- const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
4981
- id += alias;
4985
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
4986
+ groupId += alias;
4982
4987
  groupChildren.push({
4983
4988
  id: `${index}-x`,
4984
- alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
4985
- children: arrXMeasures
4989
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
4990
+ children: arrPrimaryMeasures
4986
4991
  });
4987
4992
  }
4988
4993
  if (yMeasures) {
4989
- const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
4994
+ const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
4990
4995
  yMeasures
4991
4996
  ];
4992
- const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
4993
- id += alias;
4997
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
4998
+ groupId += alias;
4994
4999
  groupChildren.push({
4995
5000
  id: `${index}-y`,
4996
- alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
4997
- children: arrYMeasures
5001
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5002
+ children: arrSecondaryMeasures
4998
5003
  });
4999
5004
  }
5000
5005
  return {
5001
- id,
5002
- alias: id,
5006
+ id: groupId,
5007
+ alias: groupId,
5003
5008
  children: groupChildren
5004
5009
  };
5005
5010
  });
5006
5011
  if (1 === scatterMeasures.length) return measureTree[0].children || [];
5007
5012
  return measureTree;
5008
5013
  };
5014
+ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
5015
+ const scatterMeasures = [];
5016
+ measures.forEach((item)=>{
5017
+ if (!item.parentId) return;
5018
+ if (!scatterMeasures.find((d)=>d.id === item.parentId)) scatterMeasures.push({
5019
+ id: item.parentId,
5020
+ yMeasures: [],
5021
+ xMeasures: []
5022
+ });
5023
+ const scatterChart = scatterMeasures.find((d)=>d.id === item.parentId);
5024
+ if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
5025
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5026
+ item.encoding
5027
+ ];
5028
+ const isY = encoding.includes('yAxis');
5029
+ const isX = encoding.includes('xAxis');
5030
+ if (isY) scatterChart.yMeasures.push(item);
5031
+ else if (isX) scatterChart.xMeasures.push(item);
5032
+ else if (!isY && !isX) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5033
+ else scatterChart.xMeasures.push(item);
5034
+ });
5035
+ return scatterMeasuresToMeasureTree(scatterMeasures);
5036
+ };
5009
5037
  const encodingForScatter = (advancedVSeed, context)=>{
5010
5038
  const { vseed } = context;
5011
5039
  const { dimensions } = advancedVSeed;
@@ -5061,7 +5089,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5061
5089
  if (xMeasures && xMeasures.children) {
5062
5090
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5063
5091
  foldMeasureValue: FoldXMeasureValue,
5064
- colorItemAsId: true
5092
+ colorItemAsId: true,
5093
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5065
5094
  });
5066
5095
  datasets.push(newDataset);
5067
5096
  foldInfoList.push(foldInfo);
@@ -5070,7 +5099,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5070
5099
  if (yMeasures && yMeasures.children) {
5071
5100
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5072
5101
  foldMeasureValue: FoldYMeasureValue,
5073
- colorItemAsId: true
5102
+ colorItemAsId: true,
5103
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5074
5104
  });
5075
5105
  datasets[0] = newDataset;
5076
5106
  foldInfoList.push(foldInfo);
@@ -5125,7 +5155,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5125
5155
  if (xMeasures && xMeasures.children) {
5126
5156
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5127
5157
  foldMeasureValue: `${FoldXMeasureValue}${index}`,
5128
- colorItemAsId: true
5158
+ colorItemAsId: true,
5159
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5129
5160
  });
5130
5161
  datasets.push(newDataset);
5131
5162
  foldInfoList.push(foldInfo);
@@ -5134,7 +5165,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5134
5165
  if (yMeasures && yMeasures.children) {
5135
5166
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
5136
5167
  foldMeasureValue: `${FoldYMeasureValue}${index}`,
5137
- colorItemAsId: true
5168
+ colorItemAsId: true,
5169
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5138
5170
  });
5139
5171
  datasets.push(newDataset);
5140
5172
  foldInfoList.push(foldInfo);
@@ -5169,7 +5201,7 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5169
5201
  };
5170
5202
  const scatterAdvancedPipeline = [
5171
5203
  initAdvancedVSeed_initAdvancedVSeed,
5172
- autoScatterMeasures,
5204
+ buildMeasuresForScatter,
5173
5205
  autoDimensions_autoDimensions,
5174
5206
  encodingForScatter,
5175
5207
  pivotAdapter([
@@ -5316,68 +5348,55 @@ const registerScatter = ()=>{
5316
5348
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5317
5349
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5318
5350
  };
5319
- const autoDualMeasures = (advancedVSeed, context)=>{
5320
- const result = {
5321
- ...advancedVSeed
5322
- };
5351
+ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5323
5352
  const { vseed } = context;
5324
- const { dataset, dualMeasures, measures } = vseed;
5325
- if (!dataset) throw new Error('dataset is required');
5326
- if (0 === dataset.length) return result;
5327
- if (dualMeasures) {
5328
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
5329
- return result;
5353
+ if (isMeasureTreeWithChildren(vseed)) {
5354
+ advancedVSeed.measures = vseed.measures;
5355
+ return advancedVSeed;
5330
5356
  }
5331
- if (measures && measureDepth(measures) > 1) {
5332
- result.measures = measures;
5333
- return result;
5357
+ if (isMeasureTreeWithParentId(vseed)) {
5358
+ advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
5359
+ return advancedVSeed;
5334
5360
  }
5335
- const top100dataset = dataset.slice(0, 100);
5336
- const sample = top100dataset.reduce((prev, cur)=>({
5337
- ...prev,
5338
- ...cur
5339
- }), {});
5340
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5341
- '',
5342
- null,
5343
- void 0
5344
- ].includes(key)).map((measure)=>({
5345
- id: measure,
5346
- alias: measure
5347
- }));
5348
- if (0 === newMeasures.length) result.measures = [];
5349
- else if (1 === newMeasures.length) result.measures = [
5350
- {
5351
- id: 'primary',
5352
- alias: 'primary',
5353
- children: newMeasures
5354
- }
5355
- ];
5356
- else if (newMeasures.length > 1) result.measures = [
5357
- {
5358
- id: 'primary',
5359
- alias: 'primary',
5360
- children: newMeasures.slice(0, 1)
5361
- },
5361
+ const basicMeasures = getBasicMeasures(vseed);
5362
+ const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(basicMeasures);
5363
+ advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
5364
+ return advancedVSeed;
5365
+ };
5366
+ const basicMeasuresToDualMeasures = (basicMeasures)=>{
5367
+ const primaryMeasures = [];
5368
+ const secondaryMeasures = [];
5369
+ for(let index = 0; index < basicMeasures.length; index++){
5370
+ const item = basicMeasures[index];
5371
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5372
+ item.encoding
5373
+ ];
5374
+ const isPrimaryYAxis = encoding.includes('primaryYAxis');
5375
+ const isSecondaryYAxis = encoding.includes('secondaryYAxis');
5376
+ if (isPrimaryYAxis) primaryMeasures.push(item);
5377
+ else if (isSecondaryYAxis) secondaryMeasures.push(item);
5378
+ else if (0 === index) primaryMeasures.push(item);
5379
+ else secondaryMeasures.push(item);
5380
+ }
5381
+ return [
5362
5382
  {
5363
- id: 'secondary',
5364
- alias: 'secondary',
5365
- children: newMeasures.slice(1)
5383
+ id: 'dualMeasures',
5384
+ primaryMeasures,
5385
+ secondaryMeasures
5366
5386
  }
5367
5387
  ];
5368
- return result;
5369
5388
  };
5370
5389
  const dualMeasuresToMeasureTree = (dualMeasures)=>{
5371
5390
  const measureTree = dualMeasures.map((item, index)=>{
5372
- const { primaryMeasures, secondaryMeasures } = item;
5391
+ const { id, primaryMeasures, secondaryMeasures } = item;
5373
5392
  const groupChildren = [];
5374
- let id = '';
5393
+ let groupId = `${id}-`;
5375
5394
  if (primaryMeasures) {
5376
5395
  const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5377
5396
  primaryMeasures
5378
5397
  ];
5379
5398
  const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5380
- id += alias;
5399
+ groupId += alias;
5381
5400
  groupChildren.push({
5382
5401
  id: `${index}-primary`,
5383
5402
  alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5389,7 +5408,7 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5389
5408
  secondaryMeasures
5390
5409
  ];
5391
5410
  const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5392
- id += alias;
5411
+ groupId += alias;
5393
5412
  groupChildren.push({
5394
5413
  id: `${index}-secondary`,
5395
5414
  alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5397,14 +5416,37 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5397
5416
  });
5398
5417
  }
5399
5418
  return {
5400
- id,
5401
- alias: id,
5419
+ id: groupId,
5420
+ alias: groupId,
5402
5421
  children: groupChildren
5403
5422
  };
5404
5423
  });
5405
5424
  if (1 === dualMeasures.length) return measureTree[0].children || [];
5406
5425
  return measureTree;
5407
5426
  };
5427
+ const buildMeasuresForDualAxis_generateMeasuresByParentId = (measures)=>{
5428
+ const dualMeasures = [];
5429
+ measures.forEach((item)=>{
5430
+ if (!item.parentId) return;
5431
+ if (!dualMeasures.find((d)=>d.id === item.parentId)) dualMeasures.push({
5432
+ id: item.parentId,
5433
+ primaryMeasures: [],
5434
+ secondaryMeasures: []
5435
+ });
5436
+ const dualChart = dualMeasures.find((d)=>d.id === item.parentId);
5437
+ if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
5438
+ const encoding = Array.isArray(item.encoding) ? item.encoding : [
5439
+ item.encoding
5440
+ ];
5441
+ const isPrimary = encoding.includes('primaryYAxis');
5442
+ const isSecondary = encoding.includes('secondaryYAxis');
5443
+ if (isPrimary) dualChart.primaryMeasures.push(item);
5444
+ else if (isSecondary) dualChart.secondaryMeasures.push(item);
5445
+ else if (!isPrimary && !isSecondary) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
5446
+ else dualChart.secondaryMeasures.push(item);
5447
+ });
5448
+ return dualMeasuresToMeasureTree(dualMeasures);
5449
+ };
5408
5450
  const encodingForDualAxis = (advancedVSeed, context)=>{
5409
5451
  const { vseed } = context;
5410
5452
  const { dimensions } = advancedVSeed;
@@ -5463,7 +5505,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5463
5505
  const secondaryMeasures = measures[1] || [];
5464
5506
  if (primaryMeasures && primaryMeasures.children) {
5465
5507
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5466
- foldMeasureValue: FoldPrimaryMeasureValue
5508
+ foldMeasureValue: FoldPrimaryMeasureValue,
5509
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5467
5510
  });
5468
5511
  datasets.push(newDataset);
5469
5512
  foldInfoList.push(foldInfo);
@@ -5471,7 +5514,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5471
5514
  }
5472
5515
  if (secondaryMeasures && secondaryMeasures.children) {
5473
5516
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5474
- foldMeasureValue: FoldSecondaryMeasureValue
5517
+ foldMeasureValue: FoldSecondaryMeasureValue,
5518
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5475
5519
  });
5476
5520
  datasets.push(newDataset);
5477
5521
  foldInfoList.push(foldInfo);
@@ -5525,7 +5569,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5525
5569
  const secondaryMeasures = measures[1] || [];
5526
5570
  if (primaryMeasures && primaryMeasures.children) {
5527
5571
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5528
- foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
5572
+ foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
5573
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5529
5574
  });
5530
5575
  datasets.push(newDataset);
5531
5576
  foldInfoList.push(foldInfo);
@@ -5533,7 +5578,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5533
5578
  }
5534
5579
  if (secondaryMeasures && secondaryMeasures.children) {
5535
5580
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5536
- foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
5581
+ foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
5582
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5537
5583
  });
5538
5584
  datasets.push(newDataset);
5539
5585
  foldInfoList.push(foldInfo);
@@ -5591,7 +5637,7 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5591
5637
  };
5592
5638
  const dualAxisAdvancedPipeline = [
5593
5639
  initAdvancedVSeed_initAdvancedVSeed,
5594
- autoDualMeasures,
5640
+ buildMeasuresForDualAxis,
5595
5641
  autoDimensions_autoDimensions,
5596
5642
  encodingForDualAxis,
5597
5643
  pivotAdapter([
@@ -5678,7 +5724,7 @@ const initDualAxisSecondary = (spec, context)=>{
5678
5724
  result.direction = 'vertical';
5679
5725
  result.xField = unfoldInfo.encodingX;
5680
5726
  if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5681
- result.seriesField = unfoldInfo.encodingColorId;
5727
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
5682
5728
  result.animation = true;
5683
5729
  return result;
5684
5730
  };
@@ -6304,6 +6350,37 @@ const yLinearSecondary = (spec, context)=>{
6304
6350
  ];
6305
6351
  return result;
6306
6352
  };
6353
+ const linearColorForDualAxis = (spec, context)=>{
6354
+ const result = {
6355
+ ...spec
6356
+ };
6357
+ const { advancedVSeed } = context;
6358
+ const { datasetReshapeInfo, chartType } = advancedVSeed;
6359
+ const { unfoldInfo, id } = datasetReshapeInfo[0];
6360
+ const baseConfig = advancedVSeed.config[chartType];
6361
+ if (!baseConfig || !baseConfig.color) return result;
6362
+ const { color } = baseConfig;
6363
+ const { colorScheme, linearColorScheme } = color;
6364
+ result.color = {
6365
+ type: 'linear',
6366
+ range: linearColorScheme || colorScheme || [],
6367
+ domain: [
6368
+ {
6369
+ dataId: `${id}-primary-dataset`,
6370
+ fields: [
6371
+ unfoldInfo.encodingColor
6372
+ ]
6373
+ },
6374
+ {
6375
+ dataId: `${id}-secondary-dataset`,
6376
+ fields: [
6377
+ unfoldInfo.encodingColor
6378
+ ]
6379
+ }
6380
+ ]
6381
+ };
6382
+ return result;
6383
+ };
6307
6384
  const dualAxis = [
6308
6385
  seriesDualAxis([
6309
6386
  initDualAxisPrimary,
@@ -6312,11 +6389,11 @@ const dualAxis = [
6312
6389
  labelPrimary,
6313
6390
  tooltipPrimary,
6314
6391
  progressive,
6315
- barStyle_barStyle,
6316
- pointStyle_pointStyle,
6392
+ colorBarStyleFill(barStyle_barStyle),
6393
+ colorPointStyleFill(pointStyle_pointStyle),
6317
6394
  pointStateDimensionHover,
6318
- lineStyle_lineStyle,
6319
- areaStyle_areaStyle
6395
+ colorLineStyleFill(lineStyle_lineStyle),
6396
+ colorAreaStyleFill(areaStyle_areaStyle)
6320
6397
  ], [
6321
6398
  initDualAxisSecondary,
6322
6399
  dualChartTypeSecondary,
@@ -6324,18 +6401,18 @@ const dualAxis = [
6324
6401
  labelSecondary,
6325
6402
  tooltipSecondary,
6326
6403
  progressive,
6327
- barStyle_barStyle,
6328
- pointStyle_pointStyle,
6404
+ colorBarStyleFill(barStyle_barStyle),
6405
+ colorPointStyleFill(pointStyle_pointStyle),
6329
6406
  pointStateDimensionHover,
6330
- lineStyle_lineStyle,
6331
- areaStyle_areaStyle
6407
+ colorLineStyleFill(lineStyle_lineStyle),
6408
+ colorAreaStyleFill(areaStyle_areaStyle)
6332
6409
  ]),
6333
6410
  xBand,
6334
6411
  yLinearPrimary,
6335
6412
  yLinearSecondary,
6336
- color_color,
6413
+ colorAdapter(color_color, linearColorForDualAxis),
6414
+ colorAdapter(discreteLegend, colorLegend),
6337
6415
  background_backgroundColor,
6338
- discreteLegend,
6339
6416
  verticalCrosshairRect,
6340
6417
  annotationPoint_annotationPoint,
6341
6418
  annotationVerticalLine_annotationVerticalLine,
@@ -6355,11 +6432,11 @@ const pivotDualAxis = [
6355
6432
  labelPrimary,
6356
6433
  tooltipPrimary,
6357
6434
  progressive,
6358
- barStyle_barStyle,
6359
- pointStyle_pointStyle,
6435
+ colorBarStyleFill(barStyle_barStyle),
6436
+ colorPointStyleFill(pointStyle_pointStyle),
6360
6437
  pointStateDimensionHover,
6361
- lineStyle_lineStyle,
6362
- areaStyle_areaStyle
6438
+ colorLineStyleFill(lineStyle_lineStyle),
6439
+ colorAreaStyleFill(areaStyle_areaStyle)
6363
6440
  ], [
6364
6441
  initDualAxisSecondary,
6365
6442
  dualChartTypeSecondary,
@@ -6367,16 +6444,16 @@ const pivotDualAxis = [
6367
6444
  labelSecondary,
6368
6445
  tooltipSecondary,
6369
6446
  progressive,
6370
- barStyle_barStyle,
6371
- pointStyle_pointStyle,
6447
+ colorBarStyleFill(barStyle_barStyle),
6448
+ colorPointStyleFill(pointStyle_pointStyle),
6372
6449
  pointStateDimensionHover,
6373
- lineStyle_lineStyle,
6374
- areaStyle_areaStyle
6450
+ colorLineStyleFill(lineStyle_lineStyle),
6451
+ colorAreaStyleFill(areaStyle_areaStyle)
6375
6452
  ]),
6376
6453
  xBand,
6377
6454
  yLinearPrimary,
6378
6455
  yLinearSecondary,
6379
- color_color,
6456
+ colorAdapter(color_color, linearColor),
6380
6457
  background_backgroundColor,
6381
6458
  verticalCrosshairRect,
6382
6459
  annotationPoint_annotationPoint,
@@ -6386,7 +6463,7 @@ const pivotDualAxis = [
6386
6463
  ]),
6387
6464
  pivotRowDimensions,
6388
6465
  pivotColumnDimensions,
6389
- pivotDiscreteLegend
6466
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6390
6467
  ];
6391
6468
  const dualAxisSpecPipeline = [
6392
6469
  pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
@@ -6421,7 +6498,7 @@ const encodingForPie = (advancedVSeed, context)=>{
6421
6498
  };
6422
6499
  const pieAdvancedPipeline = [
6423
6500
  initAdvancedVSeed_initAdvancedVSeed,
6424
- autoMeasures_autoMeasures,
6501
+ buildMeasures,
6425
6502
  autoDimensions_autoDimensions,
6426
6503
  encodingForPie,
6427
6504
  pivotAdapter([
@@ -6512,7 +6589,7 @@ const registerPie = ()=>{
6512
6589
  };
6513
6590
  const donutAdvancedPipeline = [
6514
6591
  initAdvancedVSeed_initAdvancedVSeed,
6515
- autoMeasures_autoMeasures,
6592
+ buildMeasures,
6516
6593
  autoDimensions_autoDimensions,
6517
6594
  encodingForPie,
6518
6595
  pivotAdapter([
@@ -6644,7 +6721,7 @@ const encodingForRose = (advancedVSeed, context)=>{
6644
6721
  };
6645
6722
  const roseAdvancedPipeline = [
6646
6723
  initAdvancedVSeed_initAdvancedVSeed,
6647
- autoMeasures_autoMeasures,
6724
+ buildMeasures,
6648
6725
  autoDimensions_autoDimensions,
6649
6726
  encodingForRose,
6650
6727
  pivotAdapter([
@@ -6813,7 +6890,7 @@ const registerRose = ()=>{
6813
6890
  };
6814
6891
  const roseParallelAdvancedPipeline = [
6815
6892
  initAdvancedVSeed_initAdvancedVSeed,
6816
- autoMeasures_autoMeasures,
6893
+ buildMeasures,
6817
6894
  autoDimensions_autoDimensions,
6818
6895
  encodingForRose,
6819
6896
  pivotAdapter([
@@ -6962,7 +7039,7 @@ const encodingForRadar = (advancedVSeed, context)=>{
6962
7039
  };
6963
7040
  const radarAdvancedPipeline = [
6964
7041
  initAdvancedVSeed_initAdvancedVSeed,
6965
- autoMeasures_autoMeasures,
7042
+ buildMeasures,
6966
7043
  autoDimensions_autoDimensions,
6967
7044
  encodingForRadar,
6968
7045
  pivotAdapter([
@@ -7124,7 +7201,7 @@ const encodingForFunnel = (advancedVSeed, context)=>{
7124
7201
  };
7125
7202
  const funnelAdvancedPipeline = [
7126
7203
  initAdvancedVSeed_initAdvancedVSeed,
7127
- autoMeasures_autoMeasures,
7204
+ buildMeasures,
7128
7205
  autoDimensions_autoDimensions,
7129
7206
  encodingForFunnel,
7130
7207
  pivotAdapter([
@@ -7255,7 +7332,7 @@ const encodingForHeatmap = (advancedVSeed, context)=>{
7255
7332
  };
7256
7333
  const heatmapAdvancedPipeline = [
7257
7334
  initAdvancedVSeed_initAdvancedVSeed,
7258
- autoMeasures_autoMeasures,
7335
+ buildMeasures,
7259
7336
  autoDimensions_autoDimensions,
7260
7337
  encodingForHeatmap,
7261
7338
  pivotAdapter([
@@ -8122,7 +8199,20 @@ const zMeasure = z.object({
8122
8199
  id: z.string(),
8123
8200
  alias: z.string().optional(),
8124
8201
  autoFormat: z.boolean().default(true),
8125
- format: zNumFormat["default"]({})
8202
+ format: zNumFormat["default"]({}),
8203
+ encoding: z["enum"]([
8204
+ 'primaryYAxis',
8205
+ 'secondaryYAxis',
8206
+ 'xAxis',
8207
+ 'yAxis',
8208
+ 'angle',
8209
+ 'radius',
8210
+ 'size',
8211
+ 'color',
8212
+ 'label',
8213
+ 'tooltip'
8214
+ ]).optional(),
8215
+ parentId: z.string().optional()
8126
8216
  });
8127
8217
  const zMeasureGroup = z.object({
8128
8218
  id: z.string(),
@@ -8184,7 +8274,6 @@ const zEncoding = z.object({
8184
8274
  column: z.array(z.string()).nullish(),
8185
8275
  group: z.array(z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
8186
8276
  });
8187
- const zEncodings = z.array(zEncoding);
8188
8277
  const zXBandAxis = z.object({
8189
8278
  visible: z.boolean().default(true).nullish(),
8190
8279
  labelAutoHide: z.boolean().default(true).nullish(),
@@ -9327,7 +9416,6 @@ const zAdvancedVSeed = z.object({
9327
9416
  dimensions: zDimensionTree,
9328
9417
  measures: zMeasureTree,
9329
9418
  encoding: zEncoding,
9330
- encodings: zEncodings,
9331
9419
  config: zConfig,
9332
9420
  analysis: zAnalysis,
9333
9421
  theme: zTheme,
@@ -9336,6 +9424,6 @@ const zAdvancedVSeed = z.object({
9336
9424
  annotation: zAnnotation,
9337
9425
  locale: zLocale
9338
9426
  });
9339
- export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zEncodings, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis };
9427
+ export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, XEncoding, YEncoding, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, autoFormatter, autoNumFormatter, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, createFormatter, createNumFormatter, darkTheme, dataReshapeByEncoding, donutAdvancedPipeline, donutSpecPipeline, dualAxisAdvancedPipeline, dualAxisSpecPipeline, execPipeline, findAllDimensions, findAllMeasures, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimensionSelector, isMeasure, isMeasureGroup, isMeasureSelector, isMeasures, isPartialDatumSelector, isPivotChart, isPivotTable, isTable, isVChart, isVTable, isValueSelector, lightTheme, lineAdvancedPipeline, lineSpecPipeline, measureDepth, pieAdvancedPipeline, pieSpecPipeline, pivotTableAdvancedPipeline, pivotTableSpecPipeline, preorderTraverse, radarAdvancedPipeline, radarSpecPipeline, registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerDonut, registerFunnel, registerHeatmap, registerLightTheme, registerLine, registerPie, registerPivotTable, registerRadar, registerRose, registerRoseParallel, registerScatter, registerTable, roseAdvancedPipeline, roseParallelAdvancedPipeline, roseParallelSpecPipeline, roseSpecPipeline, scatterAdvancedPipeline, scatterSpecPipeline, selector_selector as selector, tableAdvancedPipeline, tableSpecPipeline, unfoldDimensions, updateAdvanced, updateSpec, zAdvancedVSeed, zAnalysis, zAnnotation, zAnnotationArea, zAnnotationHorizontalLine, zAnnotationPoint, zAnnotationVerticalLine, zArea, zAreaConfig, zAreaPercent, zAreaPercentConfig, zAreaStyle, zAxis, zBackgroundColor, zBar, zBarConfig, zBarParallel, zBarParallelConfig, zBarPercent, zBarPercentConfig, zBarStyle, zChartType, zColor, zColorLegend, zColumn, zColumnConfig, zColumnParallel, zColumnParallelConfig, zColumnPercent, zColumnPercentConfig, zConfig, zCrosshairLine, zCrosshairRect, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensionGroup, zDimensionTree, zDimensions, zDonut, zDonutConfig, zDualAxis, zDualAxisConfig, zDualChartType, zDualMeasure, zDualMeasures, zEncoding, zFoldInfo, zFunnel, zFunnelConfig, zHeatmap, zHeatmapConfig, zLabel, zLegend, zLine, zLineConfig, zLineStyle, zLinearColor, zLocale, zMarkStyle, zMeasure, zMeasureGroup, zMeasureTree, zMeasures, zNumFormat, zPie, zPieConfig, zPivotTable, zPivotTableConfig, zPointStyle, zRadar, zRadarConfig, zRose, zRoseConfig, zRoseParallel, zRoseParallelConfig, zScatter, zScatterConfig, zScatterMeasure, zScatterMeasures, zSort, zSortLegend, zStackCornerRadius, zTable, zTableConfig, zTheme, zTooltip, zUnfoldInfo, zVSeed, zXBandAxis, zXLinearAxis, zYBandAxis, zYLinearAxis };
9340
9428
 
9341
9429
  //# sourceMappingURL=index.js.map