@visactor/vseed 0.1.1 → 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 (75) hide show
  1. package/dist/builder/builder/builder.d.ts +120 -28
  2. package/dist/dataReshape/constant.d.ts +0 -8
  3. package/dist/dataReshape/dataReshapeByEncoding.d.ts +1 -0
  4. package/dist/dataReshape/foldMeasures.d.ts +7 -24
  5. package/dist/index.cjs +820 -506
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.js +802 -464
  8. package/dist/index.js.map +1 -1
  9. package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +1 -0
  10. package/dist/pipeline/advanced/chart/pipes/{init/autoDualMeasures.d.ts → encoding/line.d.ts} +1 -1
  11. package/dist/pipeline/advanced/chart/pipes/index.d.ts +1 -0
  12. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +0 -3
  13. package/dist/pipeline/advanced/chart/pipes/{init/autoMeasures.d.ts → measures/buildMeasures.d.ts} +1 -1
  14. package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.d.ts +2 -0
  15. package/dist/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.d.ts +2 -0
  16. package/dist/pipeline/advanced/chart/pipes/measures/index.d.ts +3 -0
  17. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +28 -0
  18. package/dist/pipeline/spec/chart/pipes/color/colorAdapter.d.ts +4 -0
  19. package/dist/pipeline/spec/chart/pipes/color/colorAreaStyleFill.d.ts +2 -0
  20. package/dist/pipeline/spec/chart/pipes/color/colorBarStyleFill.d.ts +2 -0
  21. package/dist/pipeline/spec/chart/pipes/color/colorLineStyleFill.d.ts +2 -0
  22. package/dist/pipeline/spec/chart/pipes/color/colorPointStyleFill.d.ts +2 -0
  23. package/dist/pipeline/spec/chart/pipes/color/index.d.ts +7 -0
  24. package/dist/pipeline/spec/chart/pipes/{tooltip/tooltipDisable.d.ts → color/linearColor.d.ts} +1 -1
  25. package/dist/pipeline/spec/chart/pipes/color/linearColorForDualAxis.d.ts +2 -0
  26. package/dist/pipeline/spec/chart/pipes/legend/colorLegend.d.ts +2 -0
  27. package/dist/pipeline/spec/chart/pipes/legend/index.d.ts +2 -0
  28. package/dist/pipeline/spec/chart/pipes/legend/pivotColorLegend.d.ts +2 -0
  29. package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +0 -1
  30. package/dist/pipeline/utils/chatType.d.ts +1 -1
  31. package/dist/pipeline/utils/dimensions/find.d.ts +0 -2
  32. package/dist/pipeline/utils/dimensions/index.d.ts +0 -1
  33. package/dist/pipeline/utils/dimensions/typeGuard.d.ts +0 -4
  34. package/dist/types/advancedVSeed.d.ts +53 -14
  35. package/dist/types/chartType/area/zArea.d.ts +14 -0
  36. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
  37. package/dist/types/chartType/bar/zBar.d.ts +14 -0
  38. package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
  39. package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
  40. package/dist/types/chartType/column/zColumn.d.ts +14 -0
  41. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
  42. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
  43. package/dist/types/chartType/donut/zDonut.d.ts +14 -0
  44. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +66 -0
  45. package/dist/types/chartType/funnel/zFunnel.d.ts +15 -0
  46. package/dist/types/chartType/heatmap/zHeatmap.d.ts +15 -0
  47. package/dist/types/chartType/line/line.d.ts +0 -1
  48. package/dist/types/chartType/line/zLine.d.ts +14 -0
  49. package/dist/types/chartType/pie/zPie.d.ts +14 -0
  50. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +13 -0
  51. package/dist/types/chartType/radar/zRadar.d.ts +14 -0
  52. package/dist/types/chartType/rose/zRose.d.ts +14 -0
  53. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
  54. package/dist/types/chartType/scatter/zScatter.d.ts +66 -0
  55. package/dist/types/chartType/table/zTable.d.ts +13 -0
  56. package/dist/types/properties/config/color/color.d.ts +8 -2
  57. package/dist/types/properties/config/config.d.ts +36 -0
  58. package/dist/types/properties/config/legend/legend.d.ts +9 -5
  59. package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +2 -0
  60. package/dist/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +6 -0
  61. package/dist/types/properties/encoding/encoding.d.ts +0 -1
  62. package/dist/types/properties/encoding/index.d.ts +2 -2
  63. package/dist/types/properties/encoding/zEncoding.d.ts +0 -14
  64. package/dist/types/properties/measures/dualMeasures.d.ts +1 -0
  65. package/dist/types/properties/measures/measures.d.ts +19 -0
  66. package/dist/types/properties/measures/scatterMeasures.d.ts +1 -0
  67. package/dist/types/properties/measures/zDualMeasures.d.ts +104 -0
  68. package/dist/types/properties/measures/zMeasures.d.ts +39 -0
  69. package/dist/types/properties/measures/zScatterMeasures.d.ts +104 -0
  70. package/dist/types/properties/theme/customTheme.d.ts +36 -0
  71. package/dist/types/zVseed.d.ts +384 -0
  72. package/dist/umd/index.js +820 -490
  73. package/dist/umd/index.js.map +1 -1
  74. package/package.json +1 -1
  75. package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +0 -2
package/dist/index.js CHANGED
@@ -713,32 +713,6 @@ const autoPivotMeasures = (advancedVSeed, context)=>{
713
713
  }));
714
714
  return result;
715
715
  };
716
- const findDimensionById = (dimensions = [], id)=>{
717
- if (!dimensions) return;
718
- let result;
719
- preorderTraverse(dimensions, (node)=>{
720
- if (!('children' in node)) {
721
- if (node.id === id) {
722
- result = node;
723
- return true;
724
- }
725
- }
726
- return false;
727
- });
728
- return result;
729
- };
730
- const findFirstDimension = (dimensions = [])=>{
731
- if (!dimensions) return;
732
- let result;
733
- preorderTraverse(dimensions, (node)=>{
734
- if (!('children' in node)) {
735
- result = node;
736
- return true;
737
- }
738
- return false;
739
- });
740
- return result;
741
- };
742
716
  const findAllDimensions = (dimensions = [])=>{
743
717
  if (!dimensions) return [];
744
718
  const result = [];
@@ -1062,6 +1036,39 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1062
1036
  locale: locale || 'zh-CN'
1063
1037
  };
1064
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
+ };
1065
1072
  const measureDepth = (measures = [])=>{
1066
1073
  if (!measures) return 0;
1067
1074
  let depth = 1;
@@ -1080,23 +1087,26 @@ const isVTable = (vseed)=>[
1080
1087
  const isVChart = (vseed)=>!isVTable(vseed);
1081
1088
  const isPivotChart = (vseed)=>{
1082
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
+ }
1083
1094
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1084
1095
  const { dimensions = [] } = vseed;
1085
1096
  const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1086
1097
  if (hasRowOrColumnDimension) return true;
1087
1098
  if ('scatter' === vseed.chartType) {
1088
- if (vseed.measures) {
1099
+ if (isMeasureTreeWithChildren(vseed)) {
1089
1100
  const depth = measureDepth(vseed.measures);
1090
- if (3 === depth) return true;
1091
- return false;
1101
+ return 3 === depth;
1092
1102
  }
1093
1103
  if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
1104
+ return false;
1094
1105
  }
1095
1106
  if ('dualAxis' === vseed.chartType) {
1096
- if (vseed.measures) {
1107
+ if (isMeasureTreeWithChildren(vseed)) {
1097
1108
  const depth = measureDepth(vseed.measures);
1098
- if (3 === depth) return true;
1099
- return false;
1109
+ return 3 === depth;
1100
1110
  }
1101
1111
  if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1102
1112
  }
@@ -1107,77 +1117,49 @@ const isPivotChart = (vseed)=>{
1107
1117
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1108
1118
  return hasRowOrColumnDimension || hasMeasureGroup;
1109
1119
  };
1110
- const autoMeasures_autoMeasures = (advancedVSeed, context)=>{
1111
- const result = {
1112
- ...advancedVSeed
1113
- };
1114
- const { vseed } = context;
1115
- const { measures, dataset } = vseed;
1116
- if (!dataset) throw new Error('dataset is required');
1117
- if (0 === dataset.length) return result;
1118
- if (isPivotChart(vseed)) return autoMeasureGroup(advancedVSeed, context);
1119
- if (measures) {
1120
- result.measures = measures;
1121
- return result;
1122
- }
1123
- const top100dataset = dataset.slice(0, 100);
1124
- const sample = top100dataset.reduce((prev, cur)=>({
1125
- ...prev,
1126
- ...cur
1127
- }), {});
1128
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1129
- '',
1130
- null,
1131
- void 0
1132
- ].includes(key)).map((measure)=>({
1133
- id: measure,
1134
- alias: measure
1135
- }));
1136
- return result;
1137
- };
1138
- const autoMeasureGroup = (advancedVSeed, context)=>{
1120
+ const buildMeasures = (advancedVSeed, context)=>{
1139
1121
  const { vseed } = context;
1140
- const { measures } = vseed;
1141
- const hasMeasureGroup = measures?.some((measure)=>measure.children);
1142
- if (!measures) return advancedVSeed;
1143
- if (!hasMeasureGroup) {
1144
- const newMeasures = [
1145
- {
1146
- id: 'measureGroup',
1147
- alias: 'measureGroup',
1148
- children: measures
1149
- }
1150
- ];
1151
- return {
1152
- ...advancedVSeed,
1153
- measures: newMeasures
1154
- };
1122
+ if (isMeasureTreeWithChildren(vseed)) {
1123
+ advancedVSeed.measures = vseed.measures;
1124
+ return advancedVSeed;
1155
1125
  }
1156
- let currentGroup = createEmptyMeasureGroup();
1157
- const measureGroups = [];
1158
- for (const measure of measures)if ('children' in measure) {
1159
- if (currentGroup.children?.length) {
1160
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1161
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1162
- measureGroups.push(currentGroup);
1163
- currentGroup = createEmptyMeasureGroup();
1164
- }
1165
- measureGroups.push(measure);
1166
- } else currentGroup.children?.push(measure);
1167
- if (currentGroup.children?.length) {
1168
- currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1169
- currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
1170
- measureGroups.push(currentGroup);
1171
- currentGroup = createEmptyMeasureGroup();
1126
+ if (isMeasureTreeWithParentId(vseed)) {
1127
+ advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
1128
+ return advancedVSeed;
1172
1129
  }
1173
- advancedVSeed.measures = measureGroups;
1130
+ const basicMeasures = getBasicMeasures(vseed);
1131
+ if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(basicMeasures);
1132
+ else advancedVSeed.measures = basicMeasures;
1174
1133
  return advancedVSeed;
1175
1134
  };
1176
- const createEmptyMeasureGroup = ()=>({
1177
- id: '',
1178
- alias: '',
1179
- 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
+ });
1180
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
+ };
1181
1163
  const ORIGINAL_DATA = '__OriginalData__';
1182
1164
  const Separator = '-';
1183
1165
  const FoldMeasureName = '__MeaName__';
@@ -1194,8 +1176,6 @@ const AngleEncoding = '__Dim_Angle__';
1194
1176
  const DetailEncoding = '__Dim_Detail__';
1195
1177
  const ColorEncoding = '__Dim_Color__';
1196
1178
  const ColorIdEncoding = '__Dim_ColorId__';
1197
- const UnfoldDimensionGroup = '__DimGroup__';
1198
- const UnfoldDimensionGroupId = '__DimGroupID__';
1199
1179
  const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1200
1180
  const result = {
1201
1181
  ...advancedVSeed
@@ -1235,7 +1215,7 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1235
1215
  result.dimensions.push(MeaName);
1236
1216
  return result;
1237
1217
  };
1238
- const encodingForColumn = (advancedVSeed, context)=>{
1218
+ const encodingForLine = (advancedVSeed, context)=>{
1239
1219
  const { vseed } = context;
1240
1220
  const { dimensions } = advancedVSeed;
1241
1221
  if (!dimensions) return advancedVSeed;
@@ -1248,10 +1228,7 @@ const encodingForColumn = (advancedVSeed, context)=>{
1248
1228
  (dimensions[1] || dimensions[0]).id
1249
1229
  ];
1250
1230
  const detail = encoding.detail || [];
1251
- const mergedDetail = unique([
1252
- ...color,
1253
- ...detail
1254
- ]);
1231
+ const mergedDetail = 0 === detail.length ? dimensions.map((d)=>d.id).filter((id)=>!x.includes(id)) : encoding.detail;
1255
1232
  return {
1256
1233
  ...advancedVSeed,
1257
1234
  encoding: {
@@ -1283,11 +1260,20 @@ const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1283
1260
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1284
1261
  return execPipeline(pipeline, context, advancedVSeed);
1285
1262
  };
1286
- const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
1263
+ const foldMeasures = (dataset, measures, encoding, options)=>{
1264
+ const { measureId, measureName, measureValue, colorMeasureId } = options || {};
1287
1265
  const foldInfo = {
1288
1266
  measureId,
1289
1267
  measureName,
1290
1268
  measureValue,
1269
+ colorRange: [
1270
+ 0,
1271
+ 1
1272
+ ],
1273
+ measureRange: [
1274
+ 0,
1275
+ 1
1276
+ ],
1291
1277
  foldMap: {}
1292
1278
  };
1293
1279
  const result = new Array(dataset.length * measures.length);
@@ -1304,6 +1290,19 @@ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName
1304
1290
  datum[measureId] = id;
1305
1291
  datum[measureName] = alias || id;
1306
1292
  datum[measureValue] = dataset[i][id];
1293
+ if (colorMeasureId) {
1294
+ const value = datum[ORIGINAL_DATA][colorMeasureId];
1295
+ datum[ColorEncoding] = value;
1296
+ datum[ColorIdEncoding] = colorMeasureId;
1297
+ foldInfo.colorRange = [
1298
+ Math.min(foldInfo.colorRange[0] || 1 / 0, Number(value)),
1299
+ Math.max(foldInfo.colorRange[1] || -1 / 0, Number(value))
1300
+ ];
1301
+ }
1302
+ foldInfo.measureRange = [
1303
+ Math.min(foldInfo.measureRange[0] || 1 / 0, Number(datum[id])),
1304
+ Math.max(foldInfo.measureRange[1] || -1 / 0, Number(datum[id]))
1305
+ ];
1307
1306
  foldInfo.foldMap[id] = alias;
1308
1307
  result[index++] = datum;
1309
1308
  }
@@ -1339,7 +1338,7 @@ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1339
1338
  applyEncoding(YEncoding, yDimensions, datum, separator);
1340
1339
  applyEncoding(ColorEncoding, colorDimensions, datum, separator);
1341
1340
  applyEncoding(DetailEncoding, detailDimensions, datum, separator);
1342
- if (!datum[ColorEncoding]) continue;
1341
+ if (!colorDimensions.length || !datum[ColorEncoding]) continue;
1343
1342
  const measureId = String(datum[foldMeasureId]);
1344
1343
  const colorItem = String(datum[ColorEncoding]);
1345
1344
  const colorId = colorItemAsId ? colorItem : measureId ? [
@@ -1360,29 +1359,14 @@ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1360
1359
  const applyEncoding = (encoding, dimensions, datum, separator)=>{
1361
1360
  if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1362
1361
  };
1363
- const emptyReshapeResult = {
1364
- dataset: [],
1365
- foldInfo: {
1366
- foldMap: {},
1367
- measureId: '',
1368
- measureName: '',
1369
- measureValue: ''
1370
- },
1371
- unfoldInfo: {
1372
- encodingAngle: AngleEncoding,
1373
- encodingX: XEncoding,
1374
- encodingY: YEncoding,
1375
- encodingDetail: DetailEncoding,
1376
- encodingColor: ColorEncoding,
1377
- encodingColorId: ColorIdEncoding,
1378
- colorItems: [],
1379
- colorIdMap: {}
1380
- }
1381
- };
1382
1362
  const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1383
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1384
- if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
1385
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
1363
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false, colorMeasureId } = options || {};
1364
+ const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, encoding, {
1365
+ measureId: foldMeasureId,
1366
+ measureName: foldMeasureName,
1367
+ measureValue: foldMeasureValue,
1368
+ colorMeasureId
1369
+ });
1386
1370
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1387
1371
  foldMeasureId,
1388
1372
  separator: Separator,
@@ -1394,6 +1378,24 @@ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)
1394
1378
  unfoldInfo
1395
1379
  };
1396
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
+ };
1397
1399
  const reshapeWithEncoding = (advancedVSeed, context)=>{
1398
1400
  const result = {
1399
1401
  ...advancedVSeed
@@ -1403,7 +1405,9 @@ const reshapeWithEncoding = (advancedVSeed, context)=>{
1403
1405
  const { dimensions, measures, encoding } = advancedVSeed;
1404
1406
  if (!measures || !dimensions || !dataset || !encoding) return result;
1405
1407
  if (0 === measures.length) throw new Error('measures can not be empty');
1406
- 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
+ });
1407
1411
  return {
1408
1412
  ...result,
1409
1413
  dataset: newDatasets,
@@ -1439,7 +1443,8 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1439
1443
  if (!measures) return;
1440
1444
  const groupId = measureGroup.id;
1441
1445
  const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1442
- foldMeasureValue: `${FoldMeasureValue}${groupId}`
1446
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`,
1447
+ colorMeasureId: getColorMeasureId(advancedVSeed)
1443
1448
  });
1444
1449
  const reshapeInfo = {
1445
1450
  id: groupId,
@@ -1646,9 +1651,9 @@ const annotation_annotation = (advancedVSeed, context)=>{
1646
1651
  };
1647
1652
  const lineAdvancedPipeline = [
1648
1653
  initAdvancedVSeed_initAdvancedVSeed,
1649
- autoMeasures_autoMeasures,
1654
+ buildMeasures,
1650
1655
  autoDimensions_autoDimensions,
1651
- encodingForColumn,
1656
+ encodingForLine,
1652
1657
  pivotAdapter([
1653
1658
  reshapeWithEncoding
1654
1659
  ], [
@@ -1672,7 +1677,7 @@ const initLine = (spec, context)=>{
1672
1677
  result.direction = 'vertical';
1673
1678
  result.xField = unfoldInfo.encodingX;
1674
1679
  result.yField = foldInfo.measureValue;
1675
- result.seriesField = unfoldInfo.encodingColorId;
1680
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
1676
1681
  result.padding = 0;
1677
1682
  result.region = [
1678
1683
  {
@@ -1733,6 +1738,31 @@ const createSpecifiedForColorMapping = (colorMapping, colorIdMap, colorItems)=>{
1733
1738
  ...accurateMap
1734
1739
  };
1735
1740
  };
1741
+ const linearColor = (spec, context)=>{
1742
+ const result = {
1743
+ ...spec
1744
+ };
1745
+ const { advancedVSeed } = context;
1746
+ const { datasetReshapeInfo, chartType } = advancedVSeed;
1747
+ const { unfoldInfo, id } = datasetReshapeInfo[0];
1748
+ const baseConfig = advancedVSeed.config[chartType];
1749
+ if (!baseConfig || !baseConfig.color) return result;
1750
+ const { color } = baseConfig;
1751
+ const { colorScheme, linearColorScheme } = color;
1752
+ result.color = {
1753
+ type: 'linear',
1754
+ range: linearColorScheme || colorScheme || [],
1755
+ domain: [
1756
+ {
1757
+ dataId: id,
1758
+ fields: [
1759
+ unfoldInfo.encodingColor
1760
+ ]
1761
+ }
1762
+ ]
1763
+ };
1764
+ return result;
1765
+ };
1736
1766
  const background_backgroundColor = (spec, context)=>{
1737
1767
  const result = {
1738
1768
  ...spec
@@ -2240,6 +2270,95 @@ const discreteLegend = (spec, context)=>{
2240
2270
  };
2241
2271
  return result;
2242
2272
  };
2273
+ const colorLegend = (spec, context)=>{
2274
+ const result = {
2275
+ ...spec
2276
+ };
2277
+ const { advancedVSeed } = context;
2278
+ const { datasetReshapeInfo, chartType } = advancedVSeed;
2279
+ const { unfoldInfo } = datasetReshapeInfo[0];
2280
+ const baseConfig = advancedVSeed.config[chartType];
2281
+ if (!baseConfig || !baseConfig.legend) return result;
2282
+ const { legend } = baseConfig;
2283
+ const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight } = legend || {};
2284
+ const orient = [
2285
+ 'bottom',
2286
+ 'bottomLeft',
2287
+ 'bottomRight',
2288
+ 'bl',
2289
+ 'br'
2290
+ ].includes(position) ? 'bottom' : [
2291
+ 'top',
2292
+ 'topLeft',
2293
+ 'topRight',
2294
+ 'tl',
2295
+ 'tr'
2296
+ ].includes(position) ? 'top' : [
2297
+ 'left',
2298
+ 'leftTop',
2299
+ 'leftBottom',
2300
+ 'lt',
2301
+ 'lb'
2302
+ ].includes(position) ? 'left' : 'right';
2303
+ const legendPosition = [
2304
+ 'topLeft',
2305
+ 'bottomLeft',
2306
+ 'leftTop',
2307
+ 'rightTop',
2308
+ 'lt',
2309
+ 'rt',
2310
+ 'tl',
2311
+ 'bl'
2312
+ ].includes(position) ? 'start' : [
2313
+ 'topRight',
2314
+ 'bottomRight',
2315
+ 'leftBottom',
2316
+ 'rightBottom',
2317
+ 'lb',
2318
+ 'rb',
2319
+ 'rt',
2320
+ 'br'
2321
+ ].includes(position) ? 'end' : 'middle';
2322
+ result.legends = {
2323
+ type: 'color',
2324
+ visible: enable,
2325
+ orient,
2326
+ position: legendPosition,
2327
+ padding: 0,
2328
+ field: unfoldInfo.encodingColor,
2329
+ maxWidth: '30%',
2330
+ startText: {
2331
+ visible: true,
2332
+ style: {
2333
+ fill: labelFontColor,
2334
+ fontSize: labelFontSize,
2335
+ fontWeight: labelFontWeight
2336
+ }
2337
+ },
2338
+ endText: {
2339
+ visible: true,
2340
+ style: {
2341
+ fill: labelFontColor,
2342
+ fontSize: labelFontSize,
2343
+ fontWeight: labelFontWeight
2344
+ }
2345
+ }
2346
+ };
2347
+ return result;
2348
+ };
2349
+ const colorPointStyleFill = (stylePipe)=>(spec, context)=>{
2350
+ const result = stylePipe(spec, context);
2351
+ const { advancedVSeed } = context;
2352
+ const { datasetReshapeInfo } = advancedVSeed;
2353
+ const { unfoldInfo } = datasetReshapeInfo[0];
2354
+ if (isLinearColor(advancedVSeed)) {
2355
+ if (result?.point?.style) result.point.style.fill = {
2356
+ field: unfoldInfo.encodingColor,
2357
+ scale: 'color'
2358
+ };
2359
+ }
2360
+ return result;
2361
+ };
2243
2362
  const selector_selector = (vchartDatum, selector)=>{
2244
2363
  if (!selector) return true;
2245
2364
  const selectorMode = 'And';
@@ -2336,7 +2455,10 @@ const pointStyle_pointStyle = (spec, context)=>{
2336
2455
  const { markStyle } = advancedVSeed;
2337
2456
  const { pointStyle } = markStyle;
2338
2457
  const result = {
2339
- ...spec
2458
+ ...spec,
2459
+ point: {
2460
+ style: {}
2461
+ }
2340
2462
  };
2341
2463
  if (!pointStyle) return result;
2342
2464
  const pointStyles = Array.isArray(pointStyle) ? pointStyle : [
@@ -2380,6 +2502,7 @@ const pointStyle_pointStyle = (spec, context)=>{
2380
2502
  return {
2381
2503
  ...result,
2382
2504
  point: {
2505
+ ...result.point,
2383
2506
  state: {
2384
2507
  ...customMap
2385
2508
  }
@@ -2435,15 +2558,31 @@ const pointStateHover = (spec, context)=>{
2435
2558
  };
2436
2559
  return result;
2437
2560
  };
2561
+ const colorLineStyleFill = (stylePipe)=>(spec, context)=>{
2562
+ const result = stylePipe(spec, context);
2563
+ const { advancedVSeed } = context;
2564
+ const { datasetReshapeInfo } = advancedVSeed;
2565
+ const { unfoldInfo } = datasetReshapeInfo[0];
2566
+ if (isLinearColor(advancedVSeed)) {
2567
+ if (result?.line?.style) result.line.style.stroke = {
2568
+ field: unfoldInfo.encodingColor,
2569
+ scale: 'color'
2570
+ };
2571
+ }
2572
+ return result;
2573
+ };
2438
2574
  const lineStyle_lineStyle = (spec, context)=>{
2439
2575
  const { advancedVSeed } = context;
2440
2576
  const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
2441
2577
  const { unfoldInfo } = datasetReshapeInfo[0];
2442
2578
  const { lineStyle } = markStyle;
2443
- if (!lineStyle) return spec;
2444
2579
  const result = {
2445
- ...spec
2580
+ ...spec,
2581
+ line: {
2582
+ style: {}
2583
+ }
2446
2584
  };
2585
+ if (!lineStyle) return result;
2447
2586
  const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
2448
2587
  lineStyle
2449
2588
  ];
@@ -2487,6 +2626,7 @@ const lineStyle_lineStyle = (spec, context)=>{
2487
2626
  return {
2488
2627
  ...result,
2489
2628
  line: {
2629
+ ...result.line,
2490
2630
  state: {
2491
2631
  ...customMap
2492
2632
  }
@@ -3259,7 +3399,7 @@ const pivotAdapter_pivotAdapter = (pipeline, pivotPipeline)=>(spec, context)=>{
3259
3399
  };
3260
3400
  const line_line = [
3261
3401
  initLine,
3262
- color_color,
3402
+ colorAdapter(color_color, linearColor),
3263
3403
  background_backgroundColor,
3264
3404
  datasetXY,
3265
3405
  progressive,
@@ -3268,10 +3408,10 @@ const line_line = [
3268
3408
  label_label,
3269
3409
  tooltip_tooltip,
3270
3410
  verticalCrosshairLine,
3271
- discreteLegend,
3272
- pointStyle_pointStyle,
3411
+ colorAdapter(discreteLegend, colorLegend),
3412
+ colorPointStyleFill(pointStyle_pointStyle),
3273
3413
  pointStateDimensionHover,
3274
- lineStyle_lineStyle,
3414
+ colorLineStyleFill(lineStyle_lineStyle),
3275
3415
  annotationPoint_annotationPoint,
3276
3416
  annotationVerticalLine_annotationVerticalLine,
3277
3417
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3312,9 +3452,51 @@ const registerLine = ()=>{
3312
3452
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3313
3453
  Builder._specPipelineMap.line = lineSpecPipeline;
3314
3454
  };
3455
+ const encodingForColumn = (advancedVSeed, context)=>{
3456
+ const { vseed } = context;
3457
+ const { dimensions } = advancedVSeed;
3458
+ if (!dimensions) return advancedVSeed;
3459
+ const encoding = vseed.encoding;
3460
+ if (encoding) {
3461
+ const x = encoding.x || [
3462
+ dimensions[0].id
3463
+ ];
3464
+ const color = encoding.color || [
3465
+ (dimensions[1] || dimensions[0]).id
3466
+ ];
3467
+ const detail = encoding.detail || [];
3468
+ const mergedDetail = 0 === detail.length ? unique([
3469
+ ...color,
3470
+ ...detail
3471
+ ]) : detail;
3472
+ return {
3473
+ ...advancedVSeed,
3474
+ encoding: {
3475
+ ...encoding,
3476
+ x,
3477
+ color,
3478
+ detail: mergedDetail
3479
+ }
3480
+ };
3481
+ }
3482
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
3483
+ const mergedEncoding = {
3484
+ x: dimensions.slice(0, 1).map((item)=>item.id),
3485
+ color: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
3486
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
3487
+ tooltip: dimensions.map((item)=>item.id),
3488
+ label: [],
3489
+ row: [],
3490
+ column: []
3491
+ };
3492
+ return {
3493
+ ...advancedVSeed,
3494
+ encoding: mergedEncoding
3495
+ };
3496
+ };
3315
3497
  const columnAdvancedPipeline = [
3316
3498
  initAdvancedVSeed_initAdvancedVSeed,
3317
- autoMeasures_autoMeasures,
3499
+ buildMeasures,
3318
3500
  autoDimensions_autoDimensions,
3319
3501
  encodingForColumn,
3320
3502
  pivotAdapter([
@@ -3354,9 +3536,14 @@ const stackCornerRadius_stackCornerRadius = (spec, context)=>{
3354
3536
  const { advancedVSeed, vseed } = context;
3355
3537
  const { chartType } = vseed;
3356
3538
  const stackCornerRadius = advancedVSeed.config?.[chartType]?.stackCornerRadius;
3539
+ const { datasetReshapeInfo } = advancedVSeed;
3540
+ const { foldInfo } = datasetReshapeInfo[0];
3357
3541
  return {
3358
3542
  ...spec,
3359
- stackCornerRadius
3543
+ stackCornerRadius: (_, datum)=>{
3544
+ if (datum[foldInfo.measureValue] > 0) return stackCornerRadius;
3545
+ return 0;
3546
+ }
3360
3547
  };
3361
3548
  };
3362
3549
  const stackInverse = (spec)=>{
@@ -3406,6 +3593,19 @@ const verticalCrosshairRect = (spec, context)=>{
3406
3593
  };
3407
3594
  return result;
3408
3595
  };
3596
+ const colorBarStyleFill = (stylePipe)=>(spec, context)=>{
3597
+ const result = stylePipe(spec, context);
3598
+ const { advancedVSeed } = context;
3599
+ const { datasetReshapeInfo } = advancedVSeed;
3600
+ const { unfoldInfo } = datasetReshapeInfo[0];
3601
+ if (isLinearColor(advancedVSeed)) {
3602
+ if (result?.bar?.style) result.bar.style.fill = {
3603
+ field: unfoldInfo.encodingColor,
3604
+ scale: 'color'
3605
+ };
3606
+ }
3607
+ return result;
3608
+ };
3409
3609
  const barStyle_barStyle = (spec, context)=>{
3410
3610
  const { advancedVSeed } = context;
3411
3611
  const { markStyle, dataset = [] } = advancedVSeed;
@@ -3594,18 +3794,105 @@ const annotationAreaBand = (spec, context)=>{
3594
3794
  cornerRadius: areaBorderRadius
3595
3795
  }
3596
3796
  }
3597
- };
3598
- });
3797
+ };
3798
+ });
3799
+ return {
3800
+ ...spec,
3801
+ markArea: markArea
3802
+ };
3803
+ };
3804
+ const pivotColorLegend = (spec, context)=>{
3805
+ const result = {
3806
+ ...spec
3807
+ };
3808
+ const { advancedVSeed } = context;
3809
+ const { chartType } = advancedVSeed;
3810
+ const baseConfig = advancedVSeed.config[chartType];
3811
+ if (!baseConfig || !baseConfig.legend) return result;
3812
+ const { datasetReshapeInfo } = advancedVSeed;
3813
+ const max = Math.max(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[1]));
3814
+ const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.colorRange[0]));
3815
+ const { legend, color } = baseConfig;
3816
+ const { colorScheme, linearColorScheme } = color;
3817
+ const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
3818
+ const orient = [
3819
+ 'bottom',
3820
+ 'bottomLeft',
3821
+ 'bottomRight',
3822
+ 'bl',
3823
+ 'br'
3824
+ ].includes(position) ? 'bottom' : [
3825
+ 'top',
3826
+ 'topLeft',
3827
+ 'topRight',
3828
+ 'tl',
3829
+ 'tr'
3830
+ ].includes(position) ? 'top' : [
3831
+ 'left',
3832
+ 'leftTop',
3833
+ 'leftBottom',
3834
+ 'lt',
3835
+ 'lb'
3836
+ ].includes(position) ? 'left' : 'right';
3837
+ const legendPosition = [
3838
+ 'topLeft',
3839
+ 'bottomLeft',
3840
+ 'leftTop',
3841
+ 'rightTop',
3842
+ 'lt',
3843
+ 'rt',
3844
+ 'tl',
3845
+ 'bl'
3846
+ ].includes(position) ? 'start' : [
3847
+ 'topRight',
3848
+ 'bottomRight',
3849
+ 'leftBottom',
3850
+ 'rightBottom',
3851
+ 'lb',
3852
+ 'rb',
3853
+ 'rt',
3854
+ 'br'
3855
+ ].includes(position) ? 'end' : 'middle';
3856
+ const legends = {
3857
+ visible: enable,
3858
+ type: 'color',
3859
+ orient,
3860
+ position: legendPosition,
3861
+ colors: linearColorScheme || colorScheme || [],
3862
+ value: [
3863
+ min,
3864
+ max
3865
+ ],
3866
+ min: min,
3867
+ max: max,
3868
+ maxWidth: '30%',
3869
+ startText: {
3870
+ visible: true,
3871
+ style: {
3872
+ fill: labelFontColor,
3873
+ fontSize: labelFontSize,
3874
+ fontWeight: labelFontWeight
3875
+ }
3876
+ },
3877
+ endText: {
3878
+ visible: true,
3879
+ style: {
3880
+ fill: labelFontColor,
3881
+ fontSize: labelFontSize,
3882
+ fontWeight: labelFontWeight
3883
+ }
3884
+ }
3885
+ };
3599
3886
  return {
3600
- ...spec,
3601
- markArea: markArea
3887
+ ...result,
3888
+ legends
3602
3889
  };
3603
3890
  };
3604
3891
  const column = [
3605
3892
  initColumn,
3606
3893
  stackCornerRadius_stackCornerRadius,
3607
3894
  stackInverse,
3608
- color_color,
3895
+ colorAdapter(color_color, linearColor),
3609
3896
  background_backgroundColor,
3610
3897
  datasetXY,
3611
3898
  progressive,
@@ -3614,8 +3901,8 @@ const column = [
3614
3901
  label_label,
3615
3902
  tooltip_tooltip,
3616
3903
  verticalCrosshairRect,
3617
- discreteLegend,
3618
- barStyle_barStyle,
3904
+ colorAdapter(discreteLegend, colorLegend),
3905
+ colorBarStyleFill(barStyle_barStyle),
3619
3906
  annotationPoint_annotationPoint,
3620
3907
  annotationVerticalLine_annotationVerticalLine,
3621
3908
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3630,7 +3917,7 @@ const pivotColumn = [
3630
3917
  initColumn,
3631
3918
  stackCornerRadius_stackCornerRadius,
3632
3919
  stackInverse,
3633
- color_color,
3920
+ colorAdapter(color_color, linearColor),
3634
3921
  background_backgroundColor,
3635
3922
  datasetXY,
3636
3923
  progressive,
@@ -3639,7 +3926,7 @@ const pivotColumn = [
3639
3926
  label_label,
3640
3927
  tooltip_tooltip,
3641
3928
  verticalCrosshairRect,
3642
- barStyle_barStyle,
3929
+ colorBarStyleFill(barStyle_barStyle),
3643
3930
  annotationPoint_annotationPoint,
3644
3931
  annotationVerticalLine_annotationVerticalLine,
3645
3932
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3647,7 +3934,7 @@ const pivotColumn = [
3647
3934
  ]),
3648
3935
  pivotRowDimensions,
3649
3936
  pivotColumnDimensions,
3650
- pivotDiscreteLegend
3937
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
3651
3938
  ];
3652
3939
  const columnSpecPipeline = [
3653
3940
  pivotAdapter_pivotAdapter(column, pivotColumn)
@@ -3658,7 +3945,7 @@ const registerColumn = ()=>{
3658
3945
  };
3659
3946
  const columnParallelAdvancedPipeline = [
3660
3947
  initAdvancedVSeed_initAdvancedVSeed,
3661
- autoMeasures_autoMeasures,
3948
+ buildMeasures,
3662
3949
  autoDimensions_autoDimensions,
3663
3950
  encodingForColumn,
3664
3951
  pivotAdapter([
@@ -3703,7 +3990,7 @@ const initColumnParallel = (spec, context)=>{
3703
3990
  const columnParallel = [
3704
3991
  initColumnParallel,
3705
3992
  stackCornerRadius_stackCornerRadius,
3706
- color_color,
3993
+ colorAdapter(color_color, linearColor),
3707
3994
  background_backgroundColor,
3708
3995
  datasetXY,
3709
3996
  progressive,
@@ -3711,9 +3998,9 @@ const columnParallel = [
3711
3998
  yLinear,
3712
3999
  label_label,
3713
4000
  tooltip_tooltip,
3714
- discreteLegend,
4001
+ colorAdapter(discreteLegend, colorLegend),
3715
4002
  verticalCrosshairRect,
3716
- barStyle_barStyle,
4003
+ colorBarStyleFill(barStyle_barStyle),
3717
4004
  annotationPoint_annotationPoint,
3718
4005
  annotationVerticalLine_annotationVerticalLine,
3719
4006
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3727,7 +4014,7 @@ const pivotColumnParallel = [
3727
4014
  pivotIndicators_pivotIndicators([
3728
4015
  initColumnParallel,
3729
4016
  stackCornerRadius_stackCornerRadius,
3730
- color_color,
4017
+ colorAdapter(color_color, linearColor),
3731
4018
  background_backgroundColor,
3732
4019
  datasetXY,
3733
4020
  progressive,
@@ -3736,7 +4023,7 @@ const pivotColumnParallel = [
3736
4023
  label_label,
3737
4024
  tooltip_tooltip,
3738
4025
  verticalCrosshairRect,
3739
- barStyle_barStyle,
4026
+ colorBarStyleFill(barStyle_barStyle),
3740
4027
  annotationPoint_annotationPoint,
3741
4028
  annotationVerticalLine_annotationVerticalLine,
3742
4029
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3744,7 +4031,7 @@ const pivotColumnParallel = [
3744
4031
  ]),
3745
4032
  pivotRowDimensions,
3746
4033
  pivotColumnDimensions,
3747
- pivotDiscreteLegend
4034
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
3748
4035
  ];
3749
4036
  const columnParallelSpecPipeline = [
3750
4037
  pivotAdapter_pivotAdapter(columnParallel, pivotColumnParallel)
@@ -3755,7 +4042,7 @@ const registerColumnParallel = ()=>{
3755
4042
  };
3756
4043
  const columnPercentAdvancedPipeline = [
3757
4044
  initAdvancedVSeed_initAdvancedVSeed,
3758
- autoMeasures_autoMeasures,
4045
+ buildMeasures,
3759
4046
  autoDimensions_autoDimensions,
3760
4047
  encodingForColumn,
3761
4048
  pivotAdapter([
@@ -3781,7 +4068,7 @@ const columnPercent = [
3781
4068
  initColumn,
3782
4069
  stackCornerRadius_stackCornerRadius,
3783
4070
  stackInverse,
3784
- color_color,
4071
+ colorAdapter(color_color, linearColor),
3785
4072
  background_backgroundColor,
3786
4073
  percent,
3787
4074
  datasetXY,
@@ -3790,9 +4077,9 @@ const columnPercent = [
3790
4077
  yLinear,
3791
4078
  label_label,
3792
4079
  tooltip_tooltip,
4080
+ colorAdapter(discreteLegend, colorLegend),
3793
4081
  verticalCrosshairRect,
3794
- discreteLegend,
3795
- barStyle_barStyle,
4082
+ colorBarStyleFill(barStyle_barStyle),
3796
4083
  annotationPoint_annotationPoint,
3797
4084
  annotationVerticalLine_annotationVerticalLine,
3798
4085
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3807,7 +4094,7 @@ const pivotColumnPercent = [
3807
4094
  initColumn,
3808
4095
  stackCornerRadius_stackCornerRadius,
3809
4096
  stackInverse,
3810
- color_color,
4097
+ colorAdapter(color_color, linearColor),
3811
4098
  percent,
3812
4099
  background_backgroundColor,
3813
4100
  datasetXY,
@@ -3817,7 +4104,7 @@ const pivotColumnPercent = [
3817
4104
  label_label,
3818
4105
  tooltip_tooltip,
3819
4106
  verticalCrosshairRect,
3820
- barStyle_barStyle,
4107
+ colorBarStyleFill(barStyle_barStyle),
3821
4108
  annotationPoint_annotationPoint,
3822
4109
  annotationVerticalLine_annotationVerticalLine,
3823
4110
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3825,7 +4112,7 @@ const pivotColumnPercent = [
3825
4112
  ]),
3826
4113
  pivotRowDimensions,
3827
4114
  pivotColumnDimensions,
3828
- pivotDiscreteLegend
4115
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
3829
4116
  ];
3830
4117
  const columnPercentSpecPipeline = [
3831
4118
  pivotAdapter_pivotAdapter(columnPercent, pivotColumnPercent)
@@ -3847,10 +4134,10 @@ const encodingForBar = (advancedVSeed, context)=>{
3847
4134
  (dimensions[1] || dimensions[0]).id
3848
4135
  ];
3849
4136
  const detail = encoding.detail || [];
3850
- const mergedDetail = unique([
4137
+ const mergedDetail = 0 === detail.length ? unique([
3851
4138
  ...color,
3852
4139
  ...detail
3853
- ]);
4140
+ ]) : detail;
3854
4141
  return {
3855
4142
  ...advancedVSeed,
3856
4143
  encoding: {
@@ -3894,7 +4181,7 @@ const sortYBandAxis = (advancedVSeed, context)=>{
3894
4181
  };
3895
4182
  const barAdvancedPipeline = [
3896
4183
  initAdvancedVSeed_initAdvancedVSeed,
3897
- autoMeasures_autoMeasures,
4184
+ buildMeasures,
3898
4185
  autoDimensions_autoDimensions,
3899
4186
  encodingForBar,
3900
4187
  pivotAdapter([
@@ -4194,7 +4481,7 @@ const horizontalCrosshairRect = (spec, context)=>{
4194
4481
  const bar = [
4195
4482
  initBar,
4196
4483
  stackCornerRadius_stackCornerRadius,
4197
- color_color,
4484
+ colorAdapter(color_color, linearColor),
4198
4485
  background_backgroundColor,
4199
4486
  datasetYX,
4200
4487
  progressive,
@@ -4202,9 +4489,9 @@ const bar = [
4202
4489
  yBand,
4203
4490
  label_label,
4204
4491
  tooltip_tooltip,
4492
+ colorAdapter(discreteLegend, colorLegend),
4205
4493
  horizontalCrosshairRect,
4206
- discreteLegend,
4207
- barStyle_barStyle,
4494
+ colorBarStyleFill(barStyle_barStyle),
4208
4495
  annotationPoint_annotationPoint,
4209
4496
  annotationVerticalLine_annotationVerticalLine,
4210
4497
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4218,7 +4505,7 @@ const pivotBar = [
4218
4505
  pivotIndicators_pivotIndicators([
4219
4506
  initBar,
4220
4507
  stackCornerRadius_stackCornerRadius,
4221
- color_color,
4508
+ colorAdapter(color_color, linearColor),
4222
4509
  background_backgroundColor,
4223
4510
  datasetYX,
4224
4511
  progressive,
@@ -4227,8 +4514,8 @@ const pivotBar = [
4227
4514
  label_label,
4228
4515
  label_label,
4229
4516
  tooltip_tooltip,
4517
+ colorBarStyleFill(barStyle_barStyle),
4230
4518
  horizontalCrosshairRect,
4231
- barStyle_barStyle,
4232
4519
  annotationPoint_annotationPoint,
4233
4520
  annotationVerticalLine_annotationVerticalLine,
4234
4521
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4236,7 +4523,7 @@ const pivotBar = [
4236
4523
  ]),
4237
4524
  pivotRowDimensions,
4238
4525
  pivotColumnDimensions,
4239
- pivotDiscreteLegend
4526
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
4240
4527
  ];
4241
4528
  const barSpecPipeline = [
4242
4529
  pivotAdapter_pivotAdapter(bar, pivotBar)
@@ -4247,7 +4534,7 @@ const registerBar = ()=>{
4247
4534
  };
4248
4535
  const barParallelAdvancedPipeline = [
4249
4536
  initAdvancedVSeed_initAdvancedVSeed,
4250
- autoMeasures_autoMeasures,
4537
+ buildMeasures,
4251
4538
  autoDimensions_autoDimensions,
4252
4539
  encodingForBar,
4253
4540
  pivotAdapter([
@@ -4292,7 +4579,7 @@ const initBarParallel = (spec, context)=>{
4292
4579
  const barParallel = [
4293
4580
  initBarParallel,
4294
4581
  stackCornerRadius_stackCornerRadius,
4295
- color_color,
4582
+ colorAdapter(color_color, linearColor),
4296
4583
  background_backgroundColor,
4297
4584
  datasetYX,
4298
4585
  progressive,
@@ -4300,9 +4587,9 @@ const barParallel = [
4300
4587
  yBand,
4301
4588
  label_label,
4302
4589
  tooltip_tooltip,
4590
+ colorAdapter(discreteLegend, colorLegend),
4303
4591
  horizontalCrosshairRect,
4304
- discreteLegend,
4305
- barStyle_barStyle,
4592
+ colorBarStyleFill(barStyle_barStyle),
4306
4593
  annotationPoint_annotationPoint,
4307
4594
  annotationVerticalLine_annotationVerticalLine,
4308
4595
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4316,15 +4603,15 @@ const pivotBarParallel = [
4316
4603
  pivotIndicators_pivotIndicators([
4317
4604
  initBarParallel,
4318
4605
  stackCornerRadius_stackCornerRadius,
4319
- color_color,
4606
+ colorAdapter(color_color, linearColor),
4320
4607
  background_backgroundColor,
4321
4608
  datasetYX,
4322
4609
  xLinear,
4323
4610
  yBand,
4324
4611
  label_label,
4325
4612
  tooltip_tooltip,
4613
+ colorBarStyleFill(barStyle_barStyle),
4326
4614
  horizontalCrosshairRect,
4327
- barStyle_barStyle,
4328
4615
  annotationPoint_annotationPoint,
4329
4616
  annotationVerticalLine_annotationVerticalLine,
4330
4617
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4332,7 +4619,7 @@ const pivotBarParallel = [
4332
4619
  ]),
4333
4620
  pivotRowDimensions,
4334
4621
  pivotColumnDimensions,
4335
- pivotDiscreteLegend
4622
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
4336
4623
  ];
4337
4624
  const barParallelSpecPipeline = [
4338
4625
  pivotAdapter_pivotAdapter(barParallel, pivotBarParallel)
@@ -4343,7 +4630,7 @@ const registerBarParallel = ()=>{
4343
4630
  };
4344
4631
  const barPercentAdvancedPipeline = [
4345
4632
  initAdvancedVSeed_initAdvancedVSeed,
4346
- autoMeasures_autoMeasures,
4633
+ buildMeasures,
4347
4634
  autoDimensions_autoDimensions,
4348
4635
  encodingForBar,
4349
4636
  pivotAdapter([
@@ -4361,7 +4648,7 @@ const barPercentAdvancedPipeline = [
4361
4648
  const barPercent = [
4362
4649
  initBar,
4363
4650
  stackCornerRadius_stackCornerRadius,
4364
- color_color,
4651
+ colorAdapter(color_color, linearColor),
4365
4652
  background_backgroundColor,
4366
4653
  percent,
4367
4654
  datasetYX,
@@ -4370,9 +4657,9 @@ const barPercent = [
4370
4657
  yBand,
4371
4658
  label_label,
4372
4659
  tooltip_tooltip,
4660
+ colorAdapter(discreteLegend, colorLegend),
4373
4661
  horizontalCrosshairRect,
4374
- discreteLegend,
4375
- barStyle_barStyle,
4662
+ colorBarStyleFill(barStyle_barStyle),
4376
4663
  annotationPoint_annotationPoint,
4377
4664
  annotationVerticalLine_annotationVerticalLine,
4378
4665
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4386,7 +4673,7 @@ const pivotBarPercent = [
4386
4673
  pivotIndicators_pivotIndicators([
4387
4674
  initBar,
4388
4675
  stackCornerRadius_stackCornerRadius,
4389
- color_color,
4676
+ colorAdapter(color_color, linearColor),
4390
4677
  background_backgroundColor,
4391
4678
  percent,
4392
4679
  datasetYX,
@@ -4394,8 +4681,8 @@ const pivotBarPercent = [
4394
4681
  xLinear,
4395
4682
  label_label,
4396
4683
  tooltip_tooltip,
4684
+ colorBarStyleFill(barStyle_barStyle),
4397
4685
  horizontalCrosshairRect,
4398
- barStyle_barStyle,
4399
4686
  annotationPoint_annotationPoint,
4400
4687
  annotationVerticalLine_annotationVerticalLine,
4401
4688
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4403,7 +4690,7 @@ const pivotBarPercent = [
4403
4690
  ]),
4404
4691
  pivotRowDimensions,
4405
4692
  pivotColumnDimensions,
4406
- pivotDiscreteLegend
4693
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
4407
4694
  ];
4408
4695
  const barPercentSpecPipeline = [
4409
4696
  pivotAdapter_pivotAdapter(barPercent, pivotBarPercent)
@@ -4414,7 +4701,7 @@ const registerBarPercent = ()=>{
4414
4701
  };
4415
4702
  const areaAdvancedPipeline = [
4416
4703
  initAdvancedVSeed_initAdvancedVSeed,
4417
- autoMeasures_autoMeasures,
4704
+ buildMeasures,
4418
4705
  autoDimensions_autoDimensions,
4419
4706
  encodingForColumn,
4420
4707
  pivotAdapter([
@@ -4440,7 +4727,7 @@ const initArea = (spec, context)=>{
4440
4727
  result.direction = 'vertical';
4441
4728
  result.yField = foldInfo.measureValue;
4442
4729
  result.xField = unfoldInfo.encodingX;
4443
- result.seriesField = unfoldInfo.encodingColorId;
4730
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
4444
4731
  result.padding = 0;
4445
4732
  result.region = [
4446
4733
  {
@@ -4450,20 +4737,32 @@ const initArea = (spec, context)=>{
4450
4737
  result.animation = true;
4451
4738
  return result;
4452
4739
  };
4740
+ const colorAreaStyleFill = (stylePipe)=>(spec, context)=>{
4741
+ const result = stylePipe(spec, context);
4742
+ const { advancedVSeed } = context;
4743
+ const { datasetReshapeInfo } = advancedVSeed;
4744
+ const { unfoldInfo } = datasetReshapeInfo[0];
4745
+ if (isLinearColor(advancedVSeed)) {
4746
+ if (result?.area?.style) result.area.style.fill = {
4747
+ field: unfoldInfo.encodingColor,
4748
+ scale: 'color'
4749
+ };
4750
+ }
4751
+ return result;
4752
+ };
4453
4753
  const areaStyle_areaStyle = (spec, context)=>{
4454
4754
  const { advancedVSeed } = context;
4455
4755
  const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
4456
4756
  const { areaStyle } = markStyle;
4457
4757
  const { unfoldInfo } = datasetReshapeInfo[0];
4458
- if (!areaStyle) return {
4758
+ const result = {
4459
4759
  ...spec,
4460
4760
  area: {
4461
- visible: true
4761
+ visible: true,
4762
+ style: {}
4462
4763
  }
4463
4764
  };
4464
- const result = {
4465
- ...spec
4466
- };
4765
+ if (!areaStyle) return result;
4467
4766
  const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
4468
4767
  areaStyle
4469
4768
  ];
@@ -4491,6 +4790,7 @@ const areaStyle_areaStyle = (spec, context)=>{
4491
4790
  return {
4492
4791
  ...result,
4493
4792
  area: {
4793
+ ...result.area,
4494
4794
  visible: true,
4495
4795
  state: {
4496
4796
  ...customMap
@@ -4501,7 +4801,7 @@ const areaStyle_areaStyle = (spec, context)=>{
4501
4801
  const area_area = [
4502
4802
  initArea,
4503
4803
  stackInverse,
4504
- color_color,
4804
+ colorAdapter(color_color, linearColor),
4505
4805
  background_backgroundColor,
4506
4806
  datasetXY,
4507
4807
  progressive,
@@ -4509,12 +4809,12 @@ const area_area = [
4509
4809
  yLinear,
4510
4810
  label_label,
4511
4811
  tooltip_tooltip,
4812
+ colorAdapter(discreteLegend, colorLegend),
4512
4813
  verticalCrosshairLine,
4513
- discreteLegend,
4514
- pointStyle_pointStyle,
4814
+ colorPointStyleFill(pointStyle_pointStyle),
4515
4815
  pointStateDimensionHover,
4516
- lineStyle_lineStyle,
4517
- areaStyle_areaStyle,
4816
+ colorLineStyleFill(lineStyle_lineStyle),
4817
+ colorAreaStyleFill(areaStyle_areaStyle),
4518
4818
  annotationPoint_annotationPoint,
4519
4819
  annotationVerticalLine_annotationVerticalLine,
4520
4820
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4527,7 +4827,7 @@ const pivotArea = [
4527
4827
  datasetPivot,
4528
4828
  pivotIndicators_pivotIndicators([
4529
4829
  initArea,
4530
- color_color,
4830
+ colorAdapter(color_color, linearColor),
4531
4831
  background_backgroundColor,
4532
4832
  stackInverse,
4533
4833
  datasetXY,
@@ -4537,10 +4837,10 @@ const pivotArea = [
4537
4837
  label_label,
4538
4838
  tooltip_tooltip,
4539
4839
  verticalCrosshairLine,
4540
- pointStyle_pointStyle,
4840
+ colorPointStyleFill(pointStyle_pointStyle),
4541
4841
  pointStateDimensionHover,
4542
- lineStyle_lineStyle,
4543
- areaStyle_areaStyle,
4842
+ colorLineStyleFill(lineStyle_lineStyle),
4843
+ colorAreaStyleFill(areaStyle_areaStyle),
4544
4844
  annotationPoint_annotationPoint,
4545
4845
  annotationVerticalLine_annotationVerticalLine,
4546
4846
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4548,7 +4848,7 @@ const pivotArea = [
4548
4848
  ]),
4549
4849
  pivotRowDimensions,
4550
4850
  pivotColumnDimensions,
4551
- pivotDiscreteLegend
4851
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
4552
4852
  ];
4553
4853
  const areaSpecPipeline = [
4554
4854
  pivotAdapter_pivotAdapter(area_area, pivotArea)
@@ -4559,7 +4859,7 @@ const registerArea = ()=>{
4559
4859
  };
4560
4860
  const areaPercentAdvancedPipeline = [
4561
4861
  initAdvancedVSeed_initAdvancedVSeed,
4562
- autoMeasures_autoMeasures,
4862
+ buildMeasures,
4563
4863
  autoDimensions_autoDimensions,
4564
4864
  encodingForColumn,
4565
4865
  pivotAdapter([
@@ -4577,7 +4877,7 @@ const areaPercentAdvancedPipeline = [
4577
4877
  const areaPercent = [
4578
4878
  initArea,
4579
4879
  stackInverse,
4580
- color_color,
4880
+ colorAdapter(color_color, linearColor),
4581
4881
  background_backgroundColor,
4582
4882
  percent,
4583
4883
  datasetXY,
@@ -4586,11 +4886,12 @@ const areaPercent = [
4586
4886
  yLinear,
4587
4887
  label_label,
4588
4888
  tooltip_tooltip,
4889
+ colorAdapter(discreteLegend, colorLegend),
4589
4890
  verticalCrosshairLine,
4590
- discreteLegend,
4591
- pointStyle_pointStyle,
4592
- lineStyle_lineStyle,
4593
- areaStyle_areaStyle,
4891
+ colorPointStyleFill(pointStyle_pointStyle),
4892
+ pointStateDimensionHover,
4893
+ colorLineStyleFill(lineStyle_lineStyle),
4894
+ colorAreaStyleFill(areaStyle_areaStyle),
4594
4895
  annotationPoint_annotationPoint,
4595
4896
  annotationVerticalLine_annotationVerticalLine,
4596
4897
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4604,7 +4905,7 @@ const pivotAreaPercent = [
4604
4905
  pivotIndicators_pivotIndicators([
4605
4906
  initArea,
4606
4907
  stackInverse,
4607
- color_color,
4908
+ colorAdapter(color_color, linearColor),
4608
4909
  background_backgroundColor,
4609
4910
  percent,
4610
4911
  datasetXY,
@@ -4614,9 +4915,10 @@ const pivotAreaPercent = [
4614
4915
  label_label,
4615
4916
  tooltip_tooltip,
4616
4917
  verticalCrosshairLine,
4617
- pointStyle_pointStyle,
4618
- lineStyle_lineStyle,
4619
- areaStyle_areaStyle,
4918
+ colorPointStyleFill(pointStyle_pointStyle),
4919
+ pointStateDimensionHover,
4920
+ colorLineStyleFill(lineStyle_lineStyle),
4921
+ colorAreaStyleFill(areaStyle_areaStyle),
4620
4922
  annotationPoint_annotationPoint,
4621
4923
  annotationVerticalLine_annotationVerticalLine,
4622
4924
  annotationHorizontalLine_annotationHorizontalLine,
@@ -4624,7 +4926,7 @@ const pivotAreaPercent = [
4624
4926
  ]),
4625
4927
  pivotRowDimensions,
4626
4928
  pivotColumnDimensions,
4627
- pivotDiscreteLegend
4929
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
4628
4930
  ];
4629
4931
  const areaPercentSpecPipeline = [
4630
4932
  pivotAdapter_pivotAdapter(areaPercent, pivotAreaPercent)
@@ -4633,95 +4935,105 @@ const registerAreaPercent = ()=>{
4633
4935
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
4634
4936
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
4635
4937
  };
4636
- const autoScatterMeasures = (advancedVSeed, context)=>{
4637
- const result = {
4638
- ...advancedVSeed
4639
- };
4938
+ const buildMeasuresForScatter = (advancedVSeed, context)=>{
4640
4939
  const { vseed } = context;
4641
- const { dataset, scatterMeasures, measures } = vseed;
4642
- if (!dataset) throw new Error('dataset is required');
4643
- if (0 === dataset.length) return result;
4644
- if (scatterMeasures) {
4645
- result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
4646
- return result;
4940
+ if (isMeasureTreeWithChildren(vseed)) {
4941
+ advancedVSeed.measures = vseed.measures;
4942
+ return advancedVSeed;
4647
4943
  }
4648
- if (measures && measureDepth(measures) > 1) {
4649
- result.measures = measures;
4650
- return result;
4944
+ if (isMeasureTreeWithParentId(vseed)) {
4945
+ advancedVSeed.measures = buildMeasuresForScatter_generateMeasuresByParentId(vseed.measures);
4946
+ return advancedVSeed;
4651
4947
  }
4652
- const top100dataset = dataset.slice(0, 100);
4653
- const sample = top100dataset.reduce((prev, cur)=>({
4654
- ...prev,
4655
- ...cur
4656
- }), {});
4657
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
4658
- '',
4659
- null,
4660
- void 0
4661
- ].includes(key)).map((measure)=>({
4662
- id: measure,
4663
- alias: measure
4664
- }));
4665
- if (0 === newMeasures.length) result.measures = [];
4666
- else if (1 === newMeasures.length) result.measures = [
4667
- {
4668
- id: 'primary',
4669
- alias: 'primary',
4670
- children: newMeasures
4671
- }
4672
- ];
4673
- else if (newMeasures.length > 1) result.measures = [
4674
- {
4675
- id: 'primary',
4676
- alias: 'primary',
4677
- children: newMeasures.slice(0, 1)
4678
- },
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 [
4679
4969
  {
4680
- id: 'secondary',
4681
- alias: 'secondary',
4682
- children: newMeasures.slice(1)
4970
+ id: 'scatterMeasures',
4971
+ xMeasures,
4972
+ yMeasures
4683
4973
  }
4684
4974
  ];
4685
- return result;
4686
4975
  };
4687
4976
  const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
4688
4977
  const measureTree = scatterMeasures.map((item, index)=>{
4689
- const { xMeasures, yMeasures } = item;
4978
+ const { id, xMeasures, yMeasures } = item;
4690
4979
  const groupChildren = [];
4691
- let id = '';
4980
+ let groupId = `${id}-`;
4692
4981
  if (xMeasures) {
4693
- const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
4982
+ const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [
4694
4983
  xMeasures
4695
4984
  ];
4696
- const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
4697
- id += alias;
4985
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
4986
+ groupId += alias;
4698
4987
  groupChildren.push({
4699
4988
  id: `${index}-x`,
4700
- alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
4701
- children: arrXMeasures
4989
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
4990
+ children: arrPrimaryMeasures
4702
4991
  });
4703
4992
  }
4704
4993
  if (yMeasures) {
4705
- const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
4994
+ const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [
4706
4995
  yMeasures
4707
4996
  ];
4708
- const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
4709
- id += alias;
4997
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
4998
+ groupId += alias;
4710
4999
  groupChildren.push({
4711
5000
  id: `${index}-y`,
4712
- alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
4713
- children: arrYMeasures
5001
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5002
+ children: arrSecondaryMeasures
4714
5003
  });
4715
5004
  }
4716
5005
  return {
4717
- id,
4718
- alias: id,
5006
+ id: groupId,
5007
+ alias: groupId,
4719
5008
  children: groupChildren
4720
5009
  };
4721
5010
  });
4722
5011
  if (1 === scatterMeasures.length) return measureTree[0].children || [];
4723
5012
  return measureTree;
4724
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
+ };
4725
5037
  const encodingForScatter = (advancedVSeed, context)=>{
4726
5038
  const { vseed } = context;
4727
5039
  const { dimensions } = advancedVSeed;
@@ -4732,10 +5044,10 @@ const encodingForScatter = (advancedVSeed, context)=>{
4732
5044
  const color = encoding.color || [
4733
5045
  (dimensions[1] || dimensions[0]).id
4734
5046
  ];
4735
- const mergedDetail = unique([
5047
+ const mergedDetail = 0 === detail.length ? unique([
4736
5048
  ...color,
4737
5049
  ...detail
4738
- ]);
5050
+ ]) : detail;
4739
5051
  return {
4740
5052
  ...advancedVSeed,
4741
5053
  encoding: {
@@ -4777,7 +5089,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
4777
5089
  if (xMeasures && xMeasures.children) {
4778
5090
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
4779
5091
  foldMeasureValue: FoldXMeasureValue,
4780
- colorItemAsId: true
5092
+ colorItemAsId: true,
5093
+ colorMeasureId: getColorMeasureId(advancedVSeed)
4781
5094
  });
4782
5095
  datasets.push(newDataset);
4783
5096
  foldInfoList.push(foldInfo);
@@ -4786,7 +5099,8 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
4786
5099
  if (yMeasures && yMeasures.children) {
4787
5100
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
4788
5101
  foldMeasureValue: FoldYMeasureValue,
4789
- colorItemAsId: true
5102
+ colorItemAsId: true,
5103
+ colorMeasureId: getColorMeasureId(advancedVSeed)
4790
5104
  });
4791
5105
  datasets[0] = newDataset;
4792
5106
  foldInfoList.push(foldInfo);
@@ -4841,7 +5155,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
4841
5155
  if (xMeasures && xMeasures.children) {
4842
5156
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
4843
5157
  foldMeasureValue: `${FoldXMeasureValue}${index}`,
4844
- colorItemAsId: true
5158
+ colorItemAsId: true,
5159
+ colorMeasureId: getColorMeasureId(advancedVSeed)
4845
5160
  });
4846
5161
  datasets.push(newDataset);
4847
5162
  foldInfoList.push(foldInfo);
@@ -4850,7 +5165,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
4850
5165
  if (yMeasures && yMeasures.children) {
4851
5166
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
4852
5167
  foldMeasureValue: `${FoldYMeasureValue}${index}`,
4853
- colorItemAsId: true
5168
+ colorItemAsId: true,
5169
+ colorMeasureId: getColorMeasureId(advancedVSeed)
4854
5170
  });
4855
5171
  datasets.push(newDataset);
4856
5172
  foldInfoList.push(foldInfo);
@@ -4885,7 +5201,7 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
4885
5201
  };
4886
5202
  const scatterAdvancedPipeline = [
4887
5203
  initAdvancedVSeed_initAdvancedVSeed,
4888
- autoScatterMeasures,
5204
+ buildMeasuresForScatter,
4889
5205
  autoDimensions_autoDimensions,
4890
5206
  encodingForScatter,
4891
5207
  pivotAdapter([
@@ -4979,7 +5295,7 @@ const horizontalCrosshairLine = (spec, context)=>{
4979
5295
  };
4980
5296
  const scatter = [
4981
5297
  initScatter,
4982
- color_color,
5298
+ colorAdapter(color_color, linearColor),
4983
5299
  background_backgroundColor,
4984
5300
  datasetScatter,
4985
5301
  progressive,
@@ -4987,10 +5303,10 @@ const scatter = [
4987
5303
  yLinear,
4988
5304
  label_label,
4989
5305
  tooltip_tooltip,
5306
+ colorAdapter(discreteLegend, colorLegend),
4990
5307
  verticalCrosshairLine,
4991
5308
  horizontalCrosshairLine,
4992
- discreteLegend,
4993
- pointStyle_pointStyle,
5309
+ colorPointStyleFill(pointStyle_pointStyle),
4994
5310
  pointStateHover,
4995
5311
  annotationPoint_annotationPoint,
4996
5312
  annotationVerticalLine_annotationVerticalLine,
@@ -5004,7 +5320,7 @@ const pivotScatter = [
5004
5320
  datasetPivot,
5005
5321
  pivotIndicators_pivotIndicators([
5006
5322
  initScatter,
5007
- color_color,
5323
+ colorAdapter(color_color, linearColor),
5008
5324
  background_backgroundColor,
5009
5325
  datasetScatter,
5010
5326
  progressive,
@@ -5014,7 +5330,7 @@ const pivotScatter = [
5014
5330
  tooltip_tooltip,
5015
5331
  verticalCrosshairLine,
5016
5332
  horizontalCrosshairLine,
5017
- pointStyle_pointStyle,
5333
+ colorPointStyleFill(pointStyle_pointStyle),
5018
5334
  pointStateHover,
5019
5335
  annotationPoint_annotationPoint,
5020
5336
  annotationVerticalLine_annotationVerticalLine,
@@ -5032,68 +5348,55 @@ const registerScatter = ()=>{
5032
5348
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5033
5349
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5034
5350
  };
5035
- const autoDualMeasures = (advancedVSeed, context)=>{
5036
- const result = {
5037
- ...advancedVSeed
5038
- };
5351
+ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5039
5352
  const { vseed } = context;
5040
- const { dataset, dualMeasures, measures } = vseed;
5041
- if (!dataset) throw new Error('dataset is required');
5042
- if (0 === dataset.length) return result;
5043
- if (dualMeasures) {
5044
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
5045
- return result;
5353
+ if (isMeasureTreeWithChildren(vseed)) {
5354
+ advancedVSeed.measures = vseed.measures;
5355
+ return advancedVSeed;
5046
5356
  }
5047
- if (measures && measureDepth(measures) > 1) {
5048
- result.measures = measures;
5049
- return result;
5357
+ if (isMeasureTreeWithParentId(vseed)) {
5358
+ advancedVSeed.measures = buildMeasuresForDualAxis_generateMeasuresByParentId(vseed.measures);
5359
+ return advancedVSeed;
5050
5360
  }
5051
- const top100dataset = dataset.slice(0, 100);
5052
- const sample = top100dataset.reduce((prev, cur)=>({
5053
- ...prev,
5054
- ...cur
5055
- }), {});
5056
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5057
- '',
5058
- null,
5059
- void 0
5060
- ].includes(key)).map((measure)=>({
5061
- id: measure,
5062
- alias: measure
5063
- }));
5064
- if (0 === newMeasures.length) result.measures = [];
5065
- else if (1 === newMeasures.length) result.measures = [
5066
- {
5067
- id: 'primary',
5068
- alias: 'primary',
5069
- children: newMeasures
5070
- }
5071
- ];
5072
- else if (newMeasures.length > 1) result.measures = [
5073
- {
5074
- id: 'primary',
5075
- alias: 'primary',
5076
- children: newMeasures.slice(0, 1)
5077
- },
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 [
5078
5382
  {
5079
- id: 'secondary',
5080
- alias: 'secondary',
5081
- children: newMeasures.slice(1)
5383
+ id: 'dualMeasures',
5384
+ primaryMeasures,
5385
+ secondaryMeasures
5082
5386
  }
5083
5387
  ];
5084
- return result;
5085
5388
  };
5086
5389
  const dualMeasuresToMeasureTree = (dualMeasures)=>{
5087
5390
  const measureTree = dualMeasures.map((item, index)=>{
5088
- const { primaryMeasures, secondaryMeasures } = item;
5391
+ const { id, primaryMeasures, secondaryMeasures } = item;
5089
5392
  const groupChildren = [];
5090
- let id = '';
5393
+ let groupId = `${id}-`;
5091
5394
  if (primaryMeasures) {
5092
5395
  const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5093
5396
  primaryMeasures
5094
5397
  ];
5095
5398
  const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5096
- id += alias;
5399
+ groupId += alias;
5097
5400
  groupChildren.push({
5098
5401
  id: `${index}-primary`,
5099
5402
  alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5105,7 +5408,7 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5105
5408
  secondaryMeasures
5106
5409
  ];
5107
5410
  const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5108
- id += alias;
5411
+ groupId += alias;
5109
5412
  groupChildren.push({
5110
5413
  id: `${index}-secondary`,
5111
5414
  alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
@@ -5113,14 +5416,37 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5113
5416
  });
5114
5417
  }
5115
5418
  return {
5116
- id,
5117
- alias: id,
5419
+ id: groupId,
5420
+ alias: groupId,
5118
5421
  children: groupChildren
5119
5422
  };
5120
5423
  });
5121
5424
  if (1 === dualMeasures.length) return measureTree[0].children || [];
5122
5425
  return measureTree;
5123
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
+ };
5124
5450
  const encodingForDualAxis = (advancedVSeed, context)=>{
5125
5451
  const { vseed } = context;
5126
5452
  const { dimensions } = advancedVSeed;
@@ -5134,10 +5460,10 @@ const encodingForDualAxis = (advancedVSeed, context)=>{
5134
5460
  (dimensions[1] || dimensions[0]).id
5135
5461
  ];
5136
5462
  const detail = encoding.detail || [];
5137
- const mergedDetail = unique([
5463
+ const mergedDetail = 0 === detail.length ? unique([
5138
5464
  ...color,
5139
5465
  ...detail
5140
- ]);
5466
+ ]) : detail;
5141
5467
  return {
5142
5468
  ...advancedVSeed,
5143
5469
  encoding: {
@@ -5179,7 +5505,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5179
5505
  const secondaryMeasures = measures[1] || [];
5180
5506
  if (primaryMeasures && primaryMeasures.children) {
5181
5507
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5182
- foldMeasureValue: FoldPrimaryMeasureValue
5508
+ foldMeasureValue: FoldPrimaryMeasureValue,
5509
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5183
5510
  });
5184
5511
  datasets.push(newDataset);
5185
5512
  foldInfoList.push(foldInfo);
@@ -5187,7 +5514,8 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5187
5514
  }
5188
5515
  if (secondaryMeasures && secondaryMeasures.children) {
5189
5516
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5190
- foldMeasureValue: FoldSecondaryMeasureValue
5517
+ foldMeasureValue: FoldSecondaryMeasureValue,
5518
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5191
5519
  });
5192
5520
  datasets.push(newDataset);
5193
5521
  foldInfoList.push(foldInfo);
@@ -5241,7 +5569,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5241
5569
  const secondaryMeasures = measures[1] || [];
5242
5570
  if (primaryMeasures && primaryMeasures.children) {
5243
5571
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5244
- foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
5572
+ foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
5573
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5245
5574
  });
5246
5575
  datasets.push(newDataset);
5247
5576
  foldInfoList.push(foldInfo);
@@ -5249,7 +5578,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5249
5578
  }
5250
5579
  if (secondaryMeasures && secondaryMeasures.children) {
5251
5580
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5252
- foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
5581
+ foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
5582
+ colorMeasureId: getColorMeasureId(advancedVSeed)
5253
5583
  });
5254
5584
  datasets.push(newDataset);
5255
5585
  foldInfoList.push(foldInfo);
@@ -5307,7 +5637,7 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5307
5637
  };
5308
5638
  const dualAxisAdvancedPipeline = [
5309
5639
  initAdvancedVSeed_initAdvancedVSeed,
5310
- autoDualMeasures,
5640
+ buildMeasuresForDualAxis,
5311
5641
  autoDimensions_autoDimensions,
5312
5642
  encodingForDualAxis,
5313
5643
  pivotAdapter([
@@ -5394,7 +5724,7 @@ const initDualAxisSecondary = (spec, context)=>{
5394
5724
  result.direction = 'vertical';
5395
5725
  result.xField = unfoldInfo.encodingX;
5396
5726
  if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5397
- result.seriesField = unfoldInfo.encodingColorId;
5727
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
5398
5728
  result.animation = true;
5399
5729
  return result;
5400
5730
  };
@@ -6020,6 +6350,37 @@ const yLinearSecondary = (spec, context)=>{
6020
6350
  ];
6021
6351
  return result;
6022
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
+ };
6023
6384
  const dualAxis = [
6024
6385
  seriesDualAxis([
6025
6386
  initDualAxisPrimary,
@@ -6028,11 +6389,11 @@ const dualAxis = [
6028
6389
  labelPrimary,
6029
6390
  tooltipPrimary,
6030
6391
  progressive,
6031
- barStyle_barStyle,
6032
- pointStyle_pointStyle,
6392
+ colorBarStyleFill(barStyle_barStyle),
6393
+ colorPointStyleFill(pointStyle_pointStyle),
6033
6394
  pointStateDimensionHover,
6034
- lineStyle_lineStyle,
6035
- areaStyle_areaStyle
6395
+ colorLineStyleFill(lineStyle_lineStyle),
6396
+ colorAreaStyleFill(areaStyle_areaStyle)
6036
6397
  ], [
6037
6398
  initDualAxisSecondary,
6038
6399
  dualChartTypeSecondary,
@@ -6040,18 +6401,18 @@ const dualAxis = [
6040
6401
  labelSecondary,
6041
6402
  tooltipSecondary,
6042
6403
  progressive,
6043
- barStyle_barStyle,
6044
- pointStyle_pointStyle,
6404
+ colorBarStyleFill(barStyle_barStyle),
6405
+ colorPointStyleFill(pointStyle_pointStyle),
6045
6406
  pointStateDimensionHover,
6046
- lineStyle_lineStyle,
6047
- areaStyle_areaStyle
6407
+ colorLineStyleFill(lineStyle_lineStyle),
6408
+ colorAreaStyleFill(areaStyle_areaStyle)
6048
6409
  ]),
6049
6410
  xBand,
6050
6411
  yLinearPrimary,
6051
6412
  yLinearSecondary,
6052
- color_color,
6413
+ colorAdapter(color_color, linearColorForDualAxis),
6414
+ colorAdapter(discreteLegend, colorLegend),
6053
6415
  background_backgroundColor,
6054
- discreteLegend,
6055
6416
  verticalCrosshairRect,
6056
6417
  annotationPoint_annotationPoint,
6057
6418
  annotationVerticalLine_annotationVerticalLine,
@@ -6071,11 +6432,11 @@ const pivotDualAxis = [
6071
6432
  labelPrimary,
6072
6433
  tooltipPrimary,
6073
6434
  progressive,
6074
- barStyle_barStyle,
6075
- pointStyle_pointStyle,
6435
+ colorBarStyleFill(barStyle_barStyle),
6436
+ colorPointStyleFill(pointStyle_pointStyle),
6076
6437
  pointStateDimensionHover,
6077
- lineStyle_lineStyle,
6078
- areaStyle_areaStyle
6438
+ colorLineStyleFill(lineStyle_lineStyle),
6439
+ colorAreaStyleFill(areaStyle_areaStyle)
6079
6440
  ], [
6080
6441
  initDualAxisSecondary,
6081
6442
  dualChartTypeSecondary,
@@ -6083,16 +6444,16 @@ const pivotDualAxis = [
6083
6444
  labelSecondary,
6084
6445
  tooltipSecondary,
6085
6446
  progressive,
6086
- barStyle_barStyle,
6087
- pointStyle_pointStyle,
6447
+ colorBarStyleFill(barStyle_barStyle),
6448
+ colorPointStyleFill(pointStyle_pointStyle),
6088
6449
  pointStateDimensionHover,
6089
- lineStyle_lineStyle,
6090
- areaStyle_areaStyle
6450
+ colorLineStyleFill(lineStyle_lineStyle),
6451
+ colorAreaStyleFill(areaStyle_areaStyle)
6091
6452
  ]),
6092
6453
  xBand,
6093
6454
  yLinearPrimary,
6094
6455
  yLinearSecondary,
6095
- color_color,
6456
+ colorAdapter(color_color, linearColor),
6096
6457
  background_backgroundColor,
6097
6458
  verticalCrosshairRect,
6098
6459
  annotationPoint_annotationPoint,
@@ -6102,7 +6463,7 @@ const pivotDualAxis = [
6102
6463
  ]),
6103
6464
  pivotRowDimensions,
6104
6465
  pivotColumnDimensions,
6105
- pivotDiscreteLegend
6466
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6106
6467
  ];
6107
6468
  const dualAxisSpecPipeline = [
6108
6469
  pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
@@ -6137,7 +6498,7 @@ const encodingForPie = (advancedVSeed, context)=>{
6137
6498
  };
6138
6499
  const pieAdvancedPipeline = [
6139
6500
  initAdvancedVSeed_initAdvancedVSeed,
6140
- autoMeasures_autoMeasures,
6501
+ buildMeasures,
6141
6502
  autoDimensions_autoDimensions,
6142
6503
  encodingForPie,
6143
6504
  pivotAdapter([
@@ -6228,7 +6589,7 @@ const registerPie = ()=>{
6228
6589
  };
6229
6590
  const donutAdvancedPipeline = [
6230
6591
  initAdvancedVSeed_initAdvancedVSeed,
6231
- autoMeasures_autoMeasures,
6592
+ buildMeasures,
6232
6593
  autoDimensions_autoDimensions,
6233
6594
  encodingForPie,
6234
6595
  pivotAdapter([
@@ -6329,10 +6690,10 @@ const encodingForRose = (advancedVSeed, context)=>{
6329
6690
  (dimensions[1] || dimensions[0]).id
6330
6691
  ];
6331
6692
  const detail = encoding.detail || [];
6332
- const mergedDetail = unique([
6693
+ const mergedDetail = 0 === detail.length ? unique([
6333
6694
  ...color,
6334
6695
  ...detail
6335
- ]);
6696
+ ]) : detail;
6336
6697
  return {
6337
6698
  ...advancedVSeed,
6338
6699
  encoding: {
@@ -6360,7 +6721,7 @@ const encodingForRose = (advancedVSeed, context)=>{
6360
6721
  };
6361
6722
  const roseAdvancedPipeline = [
6362
6723
  initAdvancedVSeed_initAdvancedVSeed,
6363
- autoMeasures_autoMeasures,
6724
+ buildMeasures,
6364
6725
  autoDimensions_autoDimensions,
6365
6726
  encodingForRose,
6366
6727
  pivotAdapter([
@@ -6529,7 +6890,7 @@ const registerRose = ()=>{
6529
6890
  };
6530
6891
  const roseParallelAdvancedPipeline = [
6531
6892
  initAdvancedVSeed_initAdvancedVSeed,
6532
- autoMeasures_autoMeasures,
6893
+ buildMeasures,
6533
6894
  autoDimensions_autoDimensions,
6534
6895
  encodingForRose,
6535
6896
  pivotAdapter([
@@ -6648,10 +7009,10 @@ const encodingForRadar = (advancedVSeed, context)=>{
6648
7009
  (dimensions[1] || dimensions[0]).id
6649
7010
  ];
6650
7011
  const detail = encoding.detail || [];
6651
- const mergedDetail = unique([
7012
+ const mergedDetail = 0 === detail.length ? unique([
6652
7013
  ...color,
6653
7014
  ...detail
6654
- ]);
7015
+ ]) : detail;
6655
7016
  return {
6656
7017
  ...advancedVSeed,
6657
7018
  encoding: {
@@ -6678,7 +7039,7 @@ const encodingForRadar = (advancedVSeed, context)=>{
6678
7039
  };
6679
7040
  const radarAdvancedPipeline = [
6680
7041
  initAdvancedVSeed_initAdvancedVSeed,
6681
- autoMeasures_autoMeasures,
7042
+ buildMeasures,
6682
7043
  autoDimensions_autoDimensions,
6683
7044
  encodingForRadar,
6684
7045
  pivotAdapter([
@@ -6702,7 +7063,7 @@ const initRadar = (spec, context)=>{
6702
7063
  result.type = 'radar';
6703
7064
  result.angleField = unfoldInfo.encodingAngle;
6704
7065
  result.radiusField = foldInfo.measureValue;
6705
- result.seriesField = unfoldInfo.encodingColorId;
7066
+ result.seriesField = isLinearColor(advancedVSeed) ? unfoldInfo.encodingDetail : unfoldInfo.encodingColorId;
6706
7067
  result.padding = 0;
6707
7068
  result.region = [
6708
7069
  {
@@ -6767,7 +7128,7 @@ const radarRadiusAxis = (spec, context)=>{
6767
7128
  };
6768
7129
  const radar = [
6769
7130
  initRadar,
6770
- color_color,
7131
+ colorAdapter(color_color, linearColor),
6771
7132
  background_backgroundColor,
6772
7133
  datasetXY,
6773
7134
  progressive,
@@ -6775,12 +7136,12 @@ const radar = [
6775
7136
  radarRadiusAxis,
6776
7137
  label_label,
6777
7138
  tooltip_tooltip,
7139
+ colorAdapter(discreteLegend, colorLegend),
6778
7140
  verticalCrosshairLine,
6779
- discreteLegend,
6780
- pointStyle_pointStyle,
7141
+ colorPointStyleFill(pointStyle_pointStyle),
6781
7142
  pointStateDimensionHover,
6782
- lineStyle_lineStyle,
6783
- areaStyle_areaStyle
7143
+ colorLineStyleFill(lineStyle_lineStyle),
7144
+ colorAreaStyleFill(areaStyle_areaStyle)
6784
7145
  ];
6785
7146
  const pivotRadar = [
6786
7147
  initPivot,
@@ -6789,7 +7150,7 @@ const pivotRadar = [
6789
7150
  datasetPivot,
6790
7151
  pivotIndicators_pivotIndicators([
6791
7152
  initRadar,
6792
- color_color,
7153
+ colorAdapter(color_color, linearColor),
6793
7154
  background_backgroundColor,
6794
7155
  datasetXY,
6795
7156
  progressive,
@@ -6798,14 +7159,14 @@ const pivotRadar = [
6798
7159
  label_label,
6799
7160
  tooltip_tooltip,
6800
7161
  verticalCrosshairLine,
6801
- pointStyle_pointStyle,
7162
+ colorPointStyleFill(pointStyle_pointStyle),
6802
7163
  pointStateDimensionHover,
6803
- lineStyle_lineStyle,
6804
- areaStyle_areaStyle
7164
+ colorLineStyleFill(lineStyle_lineStyle),
7165
+ colorAreaStyleFill(areaStyle_areaStyle)
6805
7166
  ]),
6806
7167
  pivotRowDimensions,
6807
7168
  pivotColumnDimensions,
6808
- pivotDiscreteLegend
7169
+ colorAdapter(pivotDiscreteLegend, pivotColorLegend)
6809
7170
  ];
6810
7171
  const radarSpecPipeline = [
6811
7172
  pivotAdapter_pivotAdapter(radar, pivotRadar)
@@ -6840,7 +7201,7 @@ const encodingForFunnel = (advancedVSeed, context)=>{
6840
7201
  };
6841
7202
  const funnelAdvancedPipeline = [
6842
7203
  initAdvancedVSeed_initAdvancedVSeed,
6843
- autoMeasures_autoMeasures,
7204
+ buildMeasures,
6844
7205
  autoDimensions_autoDimensions,
6845
7206
  encodingForFunnel,
6846
7207
  pivotAdapter([
@@ -6971,7 +7332,7 @@ const encodingForHeatmap = (advancedVSeed, context)=>{
6971
7332
  };
6972
7333
  const heatmapAdvancedPipeline = [
6973
7334
  initAdvancedVSeed_initAdvancedVSeed,
6974
- autoMeasures_autoMeasures,
7335
+ buildMeasures,
6975
7336
  autoDimensions_autoDimensions,
6976
7337
  encodingForHeatmap,
6977
7338
  pivotAdapter([
@@ -7193,6 +7554,10 @@ const lightTheme = ()=>{
7193
7554
  const baseConfig = {
7194
7555
  backgroundColor: 'transparent',
7195
7556
  color: {
7557
+ linearColorScheme: [
7558
+ '#C2CEFF',
7559
+ '#5766EC'
7560
+ ],
7196
7561
  colorScheme: [
7197
7562
  '#8D72F6',
7198
7563
  '#5766EC',
@@ -7257,8 +7622,8 @@ const lightTheme = ()=>{
7257
7622
  stackCornerRadius: [
7258
7623
  4,
7259
7624
  4,
7260
- 4,
7261
- 4
7625
+ 0,
7626
+ 0
7262
7627
  ]
7263
7628
  },
7264
7629
  columnParallel: {
@@ -7269,8 +7634,8 @@ const lightTheme = ()=>{
7269
7634
  stackCornerRadius: [
7270
7635
  4,
7271
7636
  4,
7272
- 4,
7273
- 4
7637
+ 0,
7638
+ 0
7274
7639
  ]
7275
7640
  },
7276
7641
  columnPercent: {
@@ -7281,8 +7646,8 @@ const lightTheme = ()=>{
7281
7646
  stackCornerRadius: [
7282
7647
  4,
7283
7648
  4,
7284
- 4,
7285
- 4
7649
+ 0,
7650
+ 0
7286
7651
  ]
7287
7652
  },
7288
7653
  bar: {
@@ -7291,10 +7656,10 @@ const lightTheme = ()=>{
7291
7656
  yAxis: barBandAxis,
7292
7657
  crosshairRect,
7293
7658
  stackCornerRadius: [
7659
+ 0,
7294
7660
  4,
7295
7661
  4,
7296
- 4,
7297
- 4
7662
+ 0
7298
7663
  ]
7299
7664
  },
7300
7665
  barParallel: {
@@ -7303,10 +7668,10 @@ const lightTheme = ()=>{
7303
7668
  yAxis: barBandAxis,
7304
7669
  crosshairRect,
7305
7670
  stackCornerRadius: [
7671
+ 0,
7306
7672
  4,
7307
7673
  4,
7308
- 4,
7309
- 4
7674
+ 0
7310
7675
  ]
7311
7676
  },
7312
7677
  barPercent: {
@@ -7315,10 +7680,10 @@ const lightTheme = ()=>{
7315
7680
  yAxis: barBandAxis,
7316
7681
  crosshairRect,
7317
7682
  stackCornerRadius: [
7683
+ 0,
7318
7684
  4,
7319
7685
  4,
7320
- 4,
7321
- 4
7686
+ 0
7322
7687
  ]
7323
7688
  },
7324
7689
  area: {
@@ -7383,38 +7748,10 @@ const lightTheme = ()=>{
7383
7748
  ...baseConfig
7384
7749
  },
7385
7750
  funnel: {
7386
- ...baseConfig,
7387
- color: {
7388
- colorScheme: [
7389
- '#5766EC',
7390
- '#6372F0',
7391
- '#7080F4',
7392
- '#7C8CFA',
7393
- '#8998FF',
7394
- '#95A3FF',
7395
- '#A0AEFF',
7396
- '#ACB9FF',
7397
- '#B7C4FF',
7398
- '#C2CEFF'
7399
- ].reverse()
7400
- }
7751
+ ...baseConfig
7401
7752
  },
7402
7753
  heatmap: {
7403
- ...baseConfig,
7404
- color: {
7405
- colorScheme: [
7406
- '#5766EC',
7407
- '#6372F0',
7408
- '#7080F4',
7409
- '#7C8CFA',
7410
- '#8998FF',
7411
- '#95A3FF',
7412
- '#A0AEFF',
7413
- '#ACB9FF',
7414
- '#B7C4FF',
7415
- '#C2CEFF'
7416
- ].reverse()
7417
- }
7754
+ ...baseConfig
7418
7755
  }
7419
7756
  }
7420
7757
  };
@@ -7526,6 +7863,10 @@ const darkTheme = ()=>{
7526
7863
  const baseConfig = {
7527
7864
  backgroundColor: 'transparent',
7528
7865
  color: {
7866
+ linearColorScheme: [
7867
+ '#A0CEFF',
7868
+ '#2E62F1'
7869
+ ],
7529
7870
  colorScheme: [
7530
7871
  '#2E62F1',
7531
7872
  '#4DC36A',
@@ -7589,8 +7930,8 @@ const darkTheme = ()=>{
7589
7930
  stackCornerRadius: [
7590
7931
  4,
7591
7932
  4,
7592
- 4,
7593
- 4
7933
+ 0,
7934
+ 0
7594
7935
  ]
7595
7936
  },
7596
7937
  columnParallel: {
@@ -7601,8 +7942,8 @@ const darkTheme = ()=>{
7601
7942
  stackCornerRadius: [
7602
7943
  4,
7603
7944
  4,
7604
- 4,
7605
- 4
7945
+ 0,
7946
+ 0
7606
7947
  ]
7607
7948
  },
7608
7949
  columnPercent: {
@@ -7613,8 +7954,8 @@ const darkTheme = ()=>{
7613
7954
  stackCornerRadius: [
7614
7955
  4,
7615
7956
  4,
7616
- 4,
7617
- 4
7957
+ 0,
7958
+ 0
7618
7959
  ]
7619
7960
  },
7620
7961
  bar: {
@@ -7635,10 +7976,10 @@ const darkTheme = ()=>{
7635
7976
  yAxis: barBandAxis,
7636
7977
  crosshairRect: crosshairRect,
7637
7978
  stackCornerRadius: [
7979
+ 0,
7638
7980
  4,
7639
7981
  4,
7640
- 4,
7641
- 4
7982
+ 0
7642
7983
  ]
7643
7984
  },
7644
7985
  barPercent: {
@@ -7647,10 +7988,10 @@ const darkTheme = ()=>{
7647
7988
  yAxis: barBandAxis,
7648
7989
  crosshairRect: crosshairRect,
7649
7990
  stackCornerRadius: [
7991
+ 0,
7650
7992
  4,
7651
7993
  4,
7652
- 4,
7653
- 4
7994
+ 0
7654
7995
  ]
7655
7996
  },
7656
7997
  area: {
@@ -7715,21 +8056,7 @@ const darkTheme = ()=>{
7715
8056
  ...baseConfig
7716
8057
  },
7717
8058
  funnel: {
7718
- ...baseConfig,
7719
- color: {
7720
- colorScheme: [
7721
- '#2E62F1',
7722
- '#3A6EF6',
7723
- '#4780FA',
7724
- '#548CFE',
7725
- '#6198FF',
7726
- '#6FA3FF',
7727
- '#7CACFF',
7728
- '#88B7FF',
7729
- '#94C2FF',
7730
- '#A0CEFF'
7731
- ]
7732
- }
8059
+ ...baseConfig
7733
8060
  },
7734
8061
  heatmap: {
7735
8062
  ...baseConfig
@@ -7780,9 +8107,6 @@ const updateAdvanced = (chartType, advancedPipe)=>{
7780
8107
  const updateSpec = (chartType, specPipe)=>{
7781
8108
  Builder._customSpecPipe[chartType] = specPipe;
7782
8109
  };
7783
- const isDimension = (dimension)=>!('children' in dimension);
7784
- const isDimensionGroup = (dimension)=>'children' in dimension;
7785
- const isDimensions = (dimensions)=>dimensions.every(isDimension);
7786
8110
  const zChartType = z["enum"]([
7787
8111
  'table',
7788
8112
  'pivotTable',
@@ -7875,7 +8199,20 @@ const zMeasure = z.object({
7875
8199
  id: z.string(),
7876
8200
  alias: z.string().optional(),
7877
8201
  autoFormat: z.boolean().default(true),
7878
- 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()
7879
8216
  });
7880
8217
  const zMeasureGroup = z.object({
7881
8218
  id: z.string(),
@@ -7900,6 +8237,8 @@ const zScatterMeasure = z.object({
7900
8237
  const zScatterMeasures = z.array(zScatterMeasure);
7901
8238
  const zFoldInfo = z.object({
7902
8239
  foldMap: z.record(z.string(), z.string().or(z.undefined())),
8240
+ colorRange: z.array(z.number()),
8241
+ measureRange: z.array(z.number()),
7903
8242
  measureId: z.string(),
7904
8243
  measureName: z.string(),
7905
8244
  measureValue: z.string()
@@ -7935,7 +8274,6 @@ const zEncoding = z.object({
7935
8274
  column: z.array(z.string()).nullish(),
7936
8275
  group: z.array(z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
7937
8276
  });
7938
- const zEncodings = z.array(zEncoding);
7939
8277
  const zXBandAxis = z.object({
7940
8278
  visible: z.boolean().default(true).nullish(),
7941
8279
  labelAutoHide: z.boolean().default(true).nullish(),
@@ -8044,10 +8382,11 @@ const zStackCornerRadius = z.number().or(z.array(z.number())).default([
8044
8382
  const zBackgroundColor = z.string().default('transparent').nullish();
8045
8383
  const zColor = z.object({
8046
8384
  colorScheme: z.array(z.string()).nullish(),
8385
+ linearColorScheme: z.array(z.string()).nullish(),
8047
8386
  colorMapping: z.record(z.string(), z.string()).nullish()
8048
8387
  });
8049
8388
  const zLinearColor = z.object({
8050
- colorScheme: z.array(z.string()).nullish()
8389
+ linearColorScheme: z.array(z.string()).nullish()
8051
8390
  });
8052
8391
  const zLabel = z.object({
8053
8392
  enable: z.boolean().default(true).nullish()
@@ -9028,7 +9367,7 @@ const zFunnel = z.object({
9028
9367
  dimensions: zDimensions.nullish(),
9029
9368
  measures: zMeasureTree.nullish(),
9030
9369
  backgroundColor: zBackgroundColor.nullish(),
9031
- color: zLinearColor.nullish(),
9370
+ color: zColor.nullish(),
9032
9371
  label: zLabel.nullish(),
9033
9372
  legend: zColorLegend.nullish(),
9034
9373
  tooltip: zTooltip.nullish(),
@@ -9041,7 +9380,7 @@ const zHeatmap = z.object({
9041
9380
  dimensions: zDimensions.nullish(),
9042
9381
  measures: zMeasureTree.nullish(),
9043
9382
  backgroundColor: zBackgroundColor.nullish(),
9044
- color: zLinearColor.nullish(),
9383
+ color: zColor.nullish(),
9045
9384
  label: zLabel.nullish(),
9046
9385
  legend: zColorLegend.nullish(),
9047
9386
  tooltip: zTooltip.nullish(),
@@ -9077,7 +9416,6 @@ const zAdvancedVSeed = z.object({
9077
9416
  dimensions: zDimensionTree,
9078
9417
  measures: zMeasureTree,
9079
9418
  encoding: zEncoding,
9080
- encodings: zEncodings,
9081
9419
  config: zConfig,
9082
9420
  analysis: zAnalysis,
9083
9421
  theme: zTheme,
@@ -9086,6 +9424,6 @@ const zAdvancedVSeed = z.object({
9086
9424
  annotation: zAnnotation,
9087
9425
  locale: zLocale
9088
9426
  });
9089
- export { AngleEncoding, Builder, ColorEncoding, ColorIdEncoding, DetailEncoding, FoldMeasureId, FoldMeasureName, FoldMeasureValue, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, FoldXMeasureValue, FoldYMeasureValue, MeasureName, ORIGINAL_DATA, Separator, UnfoldDimensionGroup, UnfoldDimensionGroupId, 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, findDimensionById, findFirstDimension, findFirstMeasure, findMeasureById, foldMeasures, funnelAdvancedPipeline, funnelSpecPipeline, heatmapAdvancedPipeline, heatmapSpecPipeline, i18n, intl, isDimension, isDimensionGroup, isDimensionSelector, isDimensions, 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 };
9090
9428
 
9091
9429
  //# sourceMappingURL=index.js.map