@visactor/vseed 0.0.11 → 0.0.13

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 (69) hide show
  1. package/dist/builder/builder/builder.d.ts +4339 -477
  2. package/dist/builder/register/theme.d.ts +4 -1
  3. package/dist/dataSelector/selector.d.ts +1 -1
  4. package/dist/i18n/i18n.d.ts +17 -0
  5. package/dist/i18n/index.d.ts +1 -0
  6. package/dist/index.cjs +1064 -190
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +1015 -183
  10. package/dist/index.js.map +1 -1
  11. package/dist/pipeline/advanced/pipes/config/config.d.ts +3 -3
  12. package/dist/pipeline/advanced/pipes/i18n/index.d.ts +1 -0
  13. package/dist/pipeline/advanced/pipes/i18n/locale.d.ts +2 -0
  14. package/dist/pipeline/advanced/pipes/index.d.ts +1 -0
  15. package/dist/pipeline/constant.d.ts +2 -0
  16. package/dist/pipeline/spec/pipes/crosshair/horizontalCrosshairRect.d.ts +2 -0
  17. package/dist/pipeline/spec/pipes/crosshair/index.d.ts +3 -0
  18. package/dist/pipeline/spec/pipes/crosshair/verticalCrosshairLine.d.ts +2 -0
  19. package/dist/pipeline/spec/pipes/crosshair/verticalCrosshairRect.d.ts +2 -0
  20. package/dist/pipeline/spec/pipes/index.d.ts +1 -0
  21. package/dist/pipeline/spec/pipes/markStyle/areaStyle.d.ts +2 -0
  22. package/dist/pipeline/spec/pipes/markStyle/index.d.ts +3 -0
  23. package/dist/pipeline/spec/pipes/markStyle/lineStyle.d.ts +2 -0
  24. package/dist/pipeline/spec/pipes/markStyle/pointStyle.d.ts +2 -0
  25. package/dist/pipeline/spec/pipes/stack/index.d.ts +1 -0
  26. package/dist/pipeline/spec/pipes/stack/stackCornerRadius.d.ts +2 -0
  27. package/dist/pipeline/utils/chatType.d.ts +16 -16
  28. package/dist/pipeline/utils/format/createFormatter.d.ts +3 -0
  29. package/dist/pipeline/utils/format/createNumFormatter.d.ts +3 -0
  30. package/dist/pipeline/utils/format/index.d.ts +2 -0
  31. package/dist/pipeline/utils/index.d.ts +4 -2
  32. package/dist/pipeline/utils/measures/findMeasureById.d.ts +2 -0
  33. package/dist/pipeline/utils/measures/index.d.ts +1 -0
  34. package/dist/types/advancedVSeed.d.ts +2445 -320
  35. package/dist/types/chartType/area/area.d.ts +40 -1
  36. package/dist/types/chartType/areaPercent/areaPercent.d.ts +43 -4
  37. package/dist/types/chartType/bar/bar.d.ts +20 -2
  38. package/dist/types/chartType/barParallel/barParallel.d.ts +20 -2
  39. package/dist/types/chartType/barPercent/barPercent.d.ts +20 -2
  40. package/dist/types/chartType/column/column.d.ts +20 -2
  41. package/dist/types/chartType/columnParallel/columnParallel.d.ts +20 -2
  42. package/dist/types/chartType/columnPercent/columnPercent.d.ts +20 -2
  43. package/dist/types/chartType/donut/donut.d.ts +7 -0
  44. package/dist/types/chartType/dualAxis/dualAxis.d.ts +7 -0
  45. package/dist/types/chartType/line/line.d.ts +34 -4
  46. package/dist/types/chartType/pie/pie.d.ts +7 -0
  47. package/dist/types/chartType/pivotTable/pivotTable.d.ts +7 -0
  48. package/dist/types/chartType/rose/rose.d.ts +7 -0
  49. package/dist/types/chartType/table/table.d.ts +7 -0
  50. package/dist/types/i18n/i18n.d.ts +9 -0
  51. package/dist/types/i18n/index.d.ts +1 -0
  52. package/dist/types/index.d.ts +1 -0
  53. package/dist/types/properties/config/config.d.ts +105 -36
  54. package/dist/types/properties/config/crosshair.d.ts +17 -0
  55. package/dist/types/properties/config/index.d.ts +2 -0
  56. package/dist/types/properties/config/stackCornerRadius.d.ts +3 -0
  57. package/dist/types/properties/markStyle/areaStyle.d.ts +129 -0
  58. package/dist/types/properties/markStyle/index.d.ts +3 -0
  59. package/dist/types/properties/markStyle/lineStyle.d.ts +160 -0
  60. package/dist/types/properties/markStyle/markStyle.d.ts +543 -2
  61. package/dist/types/properties/markStyle/pointStyle.d.ts +168 -0
  62. package/dist/types/properties/measures/format/formatter.d.ts +1 -0
  63. package/dist/types/properties/measures/format/index.d.ts +2 -0
  64. package/dist/types/properties/measures/format/numFormat.d.ts +20 -0
  65. package/dist/types/properties/measures/index.d.ts +2 -2
  66. package/dist/types/properties/measures/measures.d.ts +40 -40
  67. package/dist/types/properties/theme/customTheme.d.ts +3094 -72
  68. package/dist/types/vseed.d.ts +29 -25
  69. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -26,7 +26,9 @@ __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
27
  registerBar: ()=>registerBar,
28
28
  isVChart: ()=>isVChart,
29
+ autoFormatter: ()=>autoFormatter,
29
30
  zBaseConfig: ()=>zBaseConfig,
31
+ zTooltip: ()=>zTooltip,
30
32
  pieAdvancedPipeline: ()=>pieAdvancedPipeline,
31
33
  execPipeline: ()=>execPipeline,
32
34
  areaSpecPipeline: ()=>areaSpecPipeline,
@@ -36,8 +38,11 @@ __webpack_require__.d(__webpack_exports__, {
36
38
  zMeasureGroup: ()=>zMeasureGroup,
37
39
  zUnfoldInfo: ()=>zUnfoldInfo,
38
40
  zMeasures: ()=>zMeasures,
41
+ zCrosshairRect: ()=>zCrosshairRect,
39
42
  FoldMeasureName: ()=>FoldMeasureName,
43
+ intl: ()=>intl,
40
44
  darkTheme: ()=>darkTheme,
45
+ createNumFormatter: ()=>createNumFormatter,
41
46
  columnPercentAdvancedPipeline: ()=>columnPercentAdvancedPipeline,
42
47
  zAxis: ()=>zAxis,
43
48
  isVTable: ()=>isVTable,
@@ -47,6 +52,7 @@ __webpack_require__.d(__webpack_exports__, {
47
52
  zDatasetReshapeInfo: ()=>zDatasetReshapeInfo,
48
53
  zFoldInfo: ()=>zFoldInfo,
49
54
  zYBandAxis: ()=>zYBandAxis,
55
+ zAreaStyle: ()=>zAreaStyle,
50
56
  ORIGINAL_DATA: ()=>ORIGINAL_DATA,
51
57
  zAnnotationHorizontalLine: ()=>zAnnotationHorizontalLine,
52
58
  zAnnotationArea: ()=>zAnnotationArea,
@@ -56,17 +62,22 @@ __webpack_require__.d(__webpack_exports__, {
56
62
  columnAdvancedPipeline: ()=>columnAdvancedPipeline,
57
63
  columnParallelSpecPipeline: ()=>columnParallelSpecPipeline,
58
64
  zLabel: ()=>zLabel,
65
+ i18n: ()=>i18n,
59
66
  registerColumn: ()=>registerColumn,
60
67
  zAnnotationPoint: ()=>zAnnotationPoint,
61
68
  lightTheme: ()=>lightTheme,
62
69
  registerColumnParallel: ()=>registerColumnParallel,
63
70
  zDimension: ()=>zDimension,
71
+ zPointStyle: ()=>zPointStyle,
64
72
  isPivotChart: ()=>isPivotChart,
65
73
  zCustomTheme: ()=>zCustomTheme,
74
+ zLineStyle: ()=>zLineStyle,
66
75
  zXBandAxis: ()=>zXBandAxis,
67
76
  dataReshapeFor1D1M: ()=>dataReshapeFor1D1M,
68
77
  registerArea: ()=>registerArea,
78
+ findMeasureById: ()=>findMeasureById,
69
79
  zDataset: ()=>zDataset,
80
+ zNumFormat: ()=>zNumFormat,
70
81
  barPercentAdvancedPipeline: ()=>barPercentAdvancedPipeline,
71
82
  areaPercentAdvancedPipeline: ()=>areaPercentAdvancedPipeline,
72
83
  zBackgroundColor: ()=>zBackgroundColor,
@@ -78,6 +89,7 @@ __webpack_require__.d(__webpack_exports__, {
78
89
  zTheme: ()=>zTheme,
79
90
  zEncoding: ()=>zEncoding,
80
91
  registerAreaPercent: ()=>registerAreaPercent,
92
+ autoNumFormatter: ()=>autoNumFormatter,
81
93
  zXLinearAxis: ()=>zXLinearAxis,
82
94
  zConfig: ()=>zConfig,
83
95
  zDatum: ()=>zDatum,
@@ -87,11 +99,13 @@ __webpack_require__.d(__webpack_exports__, {
87
99
  columnParallelAdvancedPipeline: ()=>columnParallelAdvancedPipeline,
88
100
  registerColumnPercent: ()=>registerColumnPercent,
89
101
  registerBarPercent: ()=>registerBarPercent,
102
+ zCrosshairLine: ()=>zCrosshairLine,
90
103
  foldMeasures: ()=>foldMeasures,
91
104
  dataReshapeFor2D1M: ()=>dataReshapeFor2D1M,
92
105
  registerLightTheme: ()=>registerLightTheme,
93
- zAnnotationVerticalLine: ()=>zAnnotationVerticalLine,
106
+ zStackCornerRadius: ()=>zStackCornerRadius,
94
107
  registerDarkTheme: ()=>registerDarkTheme,
108
+ zAnnotationVerticalLine: ()=>zAnnotationVerticalLine,
95
109
  barParallelAdvancedPipeline: ()=>barParallelAdvancedPipeline,
96
110
  FoldMeasureValue: ()=>FoldMeasureValue,
97
111
  barPercentSpecPipeline: ()=>barPercentSpecPipeline,
@@ -100,13 +114,13 @@ __webpack_require__.d(__webpack_exports__, {
100
114
  barSpecPipeline: ()=>barSpecPipeline,
101
115
  lineSpecPipeline: ()=>lineSpecPipeline,
102
116
  zChartType: ()=>zChartType,
103
- zTooltip: ()=>zTooltip,
117
+ createFormatter: ()=>createFormatter,
104
118
  unfoldDimensions: ()=>unfoldDimensions,
119
+ columnPercentSpecPipeline: ()=>columnPercentSpecPipeline,
105
120
  areaAdvancedPipeline: ()=>areaAdvancedPipeline,
106
- areaPercentSpecPipeline: ()=>areaPercentSpecPipeline,
107
121
  Builder: ()=>Builder,
108
122
  barParallelSpecPipeline: ()=>barParallelSpecPipeline,
109
- columnPercentSpecPipeline: ()=>columnPercentSpecPipeline,
123
+ areaPercentSpecPipeline: ()=>areaPercentSpecPipeline,
110
124
  registerAll: ()=>all_registerAll
111
125
  });
112
126
  const initAdvancedVSeed = (advancedVSeed, context)=>{
@@ -117,6 +131,10 @@ const initAdvancedVSeed = (advancedVSeed, context)=>{
117
131
  chartType
118
132
  };
119
133
  };
134
+ const execPipeline = (pipeline, context, initialValue = {})=>{
135
+ const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
136
+ return result;
137
+ };
120
138
  const isVTable = (chartType)=>[
121
139
  'table',
122
140
  'pivotTable'
@@ -128,6 +146,146 @@ const isPivotChart = (vseed)=>{
128
146
  const hasMeasureGroup = measures && measures.find((measure)=>measure && measure.children);
129
147
  return hasRowOrColumnDimension || hasMeasureGroup;
130
148
  };
149
+ const external_remeda_namespaceObject = require("remeda");
150
+ var i18n_namespaceObject = JSON.parse('{"指标名称":{"en-US":"MeasureName","zh-CN":"指标名称"},"指标Id":{"en-US":"MeasureId","zh-CN":"指标Id"},"指标值":{"en-US":"MeasureValue","zh-CN":"指标值"}}');
151
+ class Intl {
152
+ static instance;
153
+ translateMap = i18n_namespaceObject;
154
+ locale = 'zh-CN';
155
+ canTranslate = (value)=>!!this.translateMap[value];
156
+ i18n = (segments, ...values)=>{
157
+ const text = segments.map((segment, index)=>segment + (values[index] || '')).join('');
158
+ const translatedText = this.translateMap?.[text]?.[this.locale];
159
+ if ((0, external_remeda_namespaceObject.isNullish)(translatedText)) {
160
+ console.warn(`i18n ${this.locale} no translate: ${text}`);
161
+ return text;
162
+ }
163
+ return translatedText;
164
+ };
165
+ setLocale = (locale)=>{
166
+ this.locale = locale;
167
+ };
168
+ getLocale = ()=>this.locale;
169
+ static getInstance() {
170
+ if (!Intl.instance) Intl.instance = new Intl();
171
+ return Intl.instance;
172
+ }
173
+ }
174
+ const intl = Intl.getInstance();
175
+ const i18n = intl.i18n;
176
+ const createNumFormatter = (format)=>{
177
+ const { type = 'number', ratio = 1, symbol = '', thousandSeparator = true, decimalPlaces = 2, round = 'round', prefix = '', suffix = '' } = format || {};
178
+ return (value)=>{
179
+ let num = Number(value);
180
+ let typeSymbol = '';
181
+ if (Number.isNaN(num)) return num.toString();
182
+ if ('percent' === type) {
183
+ num *= 100;
184
+ typeSymbol = '%';
185
+ } else if ('permille' === type) {
186
+ num *= 1000;
187
+ typeSymbol = "\u2030";
188
+ } else if ('number' === type) num /= ratio || 1;
189
+ const multiplier = 10 ** decimalPlaces;
190
+ num = Math[round](num * multiplier) / multiplier;
191
+ let numStr = num.toFixed(decimalPlaces);
192
+ if (thousandSeparator) {
193
+ const parts = numStr.split('.');
194
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
195
+ numStr = parts.join('.');
196
+ }
197
+ return `${prefix}${numStr}${typeSymbol}${symbol}${suffix}`;
198
+ };
199
+ };
200
+ const autoNumFormatter = (value, locale = intl.getLocale())=>{
201
+ if (null == value) return String(value);
202
+ const num = Number(value);
203
+ if (Number.isNaN(num)) return String(value);
204
+ const countDecimalPlaces = (num)=>{
205
+ if (Number.isInteger(num)) return 0;
206
+ const str = num.toString();
207
+ if (str.indexOf('e-') > -1) return parseInt(str.split('e-')[1]);
208
+ const decimalPart = str.split('.')[1];
209
+ if (!decimalPart) return 0;
210
+ const decimalPlaces = decimalPart.replace(/0+$/, '').length;
211
+ return Math.max(2, decimalPlaces);
212
+ };
213
+ const numFormat = {
214
+ type: 'number',
215
+ decimalPlaces: countDecimalPlaces(num),
216
+ round: 'round',
217
+ thousandSeparator: true
218
+ };
219
+ const rules = NUMBER_FORMAT_RULES[locale] || NUMBER_FORMAT_RULES['default'];
220
+ for (const rule of rules)if (num >= rule.threshold) {
221
+ numFormat.ratio = rule.ratio;
222
+ numFormat.symbol = rule.symbol;
223
+ break;
224
+ }
225
+ return createNumFormatter(numFormat)(value);
226
+ };
227
+ const NUMBER_FORMAT_RULES = {
228
+ 'zh-CN': [
229
+ {
230
+ threshold: 100000000,
231
+ ratio: 100000000,
232
+ symbol: "\u4EBF"
233
+ },
234
+ {
235
+ threshold: 10000,
236
+ ratio: 10000,
237
+ symbol: "\u4E07"
238
+ }
239
+ ],
240
+ 'en-US': [
241
+ {
242
+ threshold: 1000000000,
243
+ ratio: 1000000000,
244
+ symbol: 'B'
245
+ },
246
+ {
247
+ threshold: 1000000,
248
+ ratio: 1000000,
249
+ symbol: 'M'
250
+ },
251
+ {
252
+ threshold: 1000,
253
+ ratio: 1000,
254
+ symbol: 'K'
255
+ }
256
+ ],
257
+ default: [
258
+ {
259
+ threshold: 1000000000,
260
+ ratio: 1000000000,
261
+ symbol: 'B'
262
+ },
263
+ {
264
+ threshold: 1000000,
265
+ ratio: 1000000,
266
+ symbol: 'M'
267
+ },
268
+ {
269
+ threshold: 1000,
270
+ ratio: 1000,
271
+ symbol: 'K'
272
+ }
273
+ ]
274
+ };
275
+ const createFormatter = (format)=>createNumFormatter(format);
276
+ const autoFormatter = (value, locale)=>autoNumFormatter(value, locale);
277
+ function findMeasureById(measures, id) {
278
+ if (!measures) return;
279
+ const stack = [
280
+ ...measures
281
+ ];
282
+ while(stack.length > 0){
283
+ const current = stack.pop();
284
+ if (!current) continue;
285
+ if (current.id === id && !('children' in current)) return current;
286
+ if ('children' in current && current.children) stack.push(...current.children);
287
+ }
288
+ }
131
289
  const autoMeasures = (advancedVSeed, context)=>{
132
290
  const result = {
133
291
  ...advancedVSeed
@@ -178,16 +336,16 @@ const autoMeasureGroup = (advancedVSeed, context)=>{
178
336
  const measureGroups = [];
179
337
  for (const measure of measures)if ('children' in measure) {
180
338
  if (currentGroup.children?.length) {
181
- currentGroup.id = currentGroup.children.map((item)=>item.id).join('-');
182
339
  currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
340
+ currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
183
341
  measureGroups.push(currentGroup);
184
342
  currentGroup = createEmptyMeasureGroup();
185
343
  }
186
344
  measureGroups.push(measure);
187
345
  } else currentGroup.children?.push(measure);
188
346
  if (currentGroup.children?.length) {
189
- currentGroup.id = currentGroup.children.map((item)=>item.id).join('-');
190
347
  currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
348
+ currentGroup.id = currentGroup.alias + currentGroup.children.map((item)=>item.id).join('-');
191
349
  measureGroups.push(currentGroup);
192
350
  currentGroup = createEmptyMeasureGroup();
193
351
  }
@@ -234,7 +392,6 @@ const FoldMeasureId = '__MeaId__';
234
392
  const UnfoldDimensionGroup = '__DimGroup__';
235
393
  const Separator = '-';
236
394
  const ORIGINAL_DATA = '__OriginalData__';
237
- const external_remeda_namespaceObject = require("remeda");
238
395
  const unfoldDimensions = (dataset, dimensions, measures, unfoldStartIndex = 0, foldGroupName = UnfoldDimensionGroup, dimensionsSeparator = Separator)=>{
239
396
  if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) throw new Error('unfoldStartIndex is out of range');
240
397
  const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
@@ -313,18 +470,18 @@ const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
313
470
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
314
471
  {
315
472
  id: foldMeasureId,
316
- alias: "\u6307\u6807Id",
473
+ alias: i18n`指标Id`,
317
474
  location: 'dimension'
318
475
  },
319
476
  {
320
477
  id: foldMeasureName,
321
- alias: "\u6307\u6807\u540D\u79F0",
478
+ alias: i18n`指标名称`,
322
479
  location: 'dimension'
323
480
  }
324
481
  ], [
325
482
  {
326
483
  id: foldMeasureValue,
327
- alias: "\u6307\u6807\u503C"
484
+ alias: i18n`指标值`
328
485
  }
329
486
  ], 1, unfoldDimensionGroup);
330
487
  return {
@@ -338,13 +495,13 @@ const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
338
495
  ...dimensions,
339
496
  {
340
497
  id: foldMeasureName,
341
- alias: "\u6307\u6807\u540D\u79F0",
498
+ alias: i18n`指标名称`,
342
499
  location: 'dimension'
343
500
  }
344
501
  ], [
345
502
  {
346
503
  id: foldMeasureValue,
347
- alias: "\u6307\u6807\u503C"
504
+ alias: i18n`指标值`
348
505
  }
349
506
  ], 1, unfoldDimensionGroup);
350
507
  return {
@@ -375,13 +532,13 @@ const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
375
532
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
376
533
  {
377
534
  id: foldMeasureName,
378
- alias: "\u6307\u6807\u540D\u79F0",
535
+ alias: i18n`指标名称`,
379
536
  location: 'dimension'
380
537
  }
381
538
  ], [
382
539
  {
383
540
  id: foldMeasureValue,
384
- alias: "\u6307\u6807\u503C"
541
+ alias: i18n`指标值`
385
542
  }
386
543
  ], 0, unfoldDimensionGroup);
387
544
  return {
@@ -395,13 +552,13 @@ const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
395
552
  ...dimensions,
396
553
  {
397
554
  id: foldMeasureName,
398
- alias: "\u6307\u6807\u540D\u79F0",
555
+ alias: i18n`指标名称`,
399
556
  location: 'dimension'
400
557
  }
401
558
  ], [
402
559
  {
403
560
  id: foldMeasureValue,
404
- alias: "\u6307\u6807\u503C"
561
+ alias: i18n`指标值`
405
562
  }
406
563
  ], 0, unfoldDimensionGroup);
407
564
  return {
@@ -671,7 +828,28 @@ const lineConfig = (advancedVSeed, context)=>{
671
828
  };
672
829
  const config = (0, external_remeda_namespaceObject.pick)(vseed, [
673
830
  'xAxis',
674
- 'yAxis'
831
+ 'yAxis',
832
+ 'crosshairLine'
833
+ ]);
834
+ result.config = {
835
+ ...result.config || {},
836
+ [chartType]: {
837
+ ...config
838
+ }
839
+ };
840
+ return result;
841
+ };
842
+ const columnConfig = (advancedVSeed, context)=>{
843
+ const { vseed } = context;
844
+ const { chartType } = vseed;
845
+ const result = {
846
+ ...advancedVSeed
847
+ };
848
+ const config = (0, external_remeda_namespaceObject.pick)(vseed, [
849
+ 'xAxis',
850
+ 'yAxis',
851
+ 'crosshairRect',
852
+ 'stackCornerRadius'
675
853
  ]);
676
854
  result.config = {
677
855
  ...result.config || {},
@@ -696,14 +874,13 @@ const pieConfig = (advancedVSeed, context)=>{
696
874
  };
697
875
  return result;
698
876
  };
699
- const barConfig = lineConfig;
700
- const barParallelConfig = lineConfig;
701
- const barPercentConfig = lineConfig;
702
- const columnConfig = lineConfig;
703
- const columnParallelConfig = lineConfig;
704
- const columnPercentConfig = lineConfig;
705
877
  const areaConfig = lineConfig;
706
878
  const areaPercentConfig = lineConfig;
879
+ const barConfig = columnConfig;
880
+ const barParallelConfig = columnConfig;
881
+ const barPercentConfig = columnConfig;
882
+ const columnParallelConfig = columnConfig;
883
+ const columnPercentConfig = columnConfig;
707
884
  const vchartTheme = (advancedVSeed, context)=>{
708
885
  const { customTheme, vseed } = context;
709
886
  const { theme = 'light', chartType } = vseed;
@@ -729,10 +906,6 @@ const vchartTheme = (advancedVSeed, context)=>{
729
906
  }
730
907
  return result;
731
908
  };
732
- const execPipeline = (pipeline, context, initialValue = {})=>{
733
- const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
734
- return result;
735
- };
736
909
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
737
910
  const { vseed } = context;
738
911
  const usePivotChart = isPivotChart(vseed);
@@ -742,7 +915,10 @@ const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
742
915
  const markStyle_markStyle = (advancedVSeed, context)=>{
743
916
  const { vseed } = context;
744
917
  const markStyle = (0, external_remeda_namespaceObject.pick)(vseed, [
745
- 'barStyle'
918
+ 'barStyle',
919
+ 'pointStyle',
920
+ 'lineStyle',
921
+ 'areaStyle'
746
922
  ]);
747
923
  return {
748
924
  ...advancedVSeed,
@@ -762,8 +938,17 @@ const annotation_annotation = (advancedVSeed, context)=>{
762
938
  annotation
763
939
  };
764
940
  };
941
+ const locale_locale = (advancedVSeed, context)=>{
942
+ const { vseed } = context;
943
+ const { locale } = vseed;
944
+ return {
945
+ ...advancedVSeed,
946
+ locale: locale || 'zh-CN'
947
+ };
948
+ };
765
949
  const lineAdvancedPipeline = [
766
950
  initAdvancedVSeed,
951
+ locale_locale,
767
952
  autoMeasures,
768
953
  autoDimensions,
769
954
  pivotAdapter([
@@ -775,10 +960,12 @@ const lineAdvancedPipeline = [
775
960
  vchartBaseConfig,
776
961
  lineConfig,
777
962
  vchartTheme,
963
+ markStyle_markStyle,
778
964
  annotation_annotation
779
965
  ];
780
966
  const barAdvancedPipeline = [
781
967
  initAdvancedVSeed,
968
+ locale_locale,
782
969
  autoMeasures,
783
970
  autoDimensions,
784
971
  pivotAdapter([
@@ -795,6 +982,7 @@ const barAdvancedPipeline = [
795
982
  ];
796
983
  const barParallelAdvancedPipeline = [
797
984
  initAdvancedVSeed,
985
+ locale_locale,
798
986
  autoMeasures,
799
987
  autoDimensions,
800
988
  pivotAdapter([
@@ -811,6 +999,7 @@ const barParallelAdvancedPipeline = [
811
999
  ];
812
1000
  const barPercentAdvancedPipeline = [
813
1001
  initAdvancedVSeed,
1002
+ locale_locale,
814
1003
  autoMeasures,
815
1004
  autoDimensions,
816
1005
  pivotAdapter([
@@ -827,6 +1016,7 @@ const barPercentAdvancedPipeline = [
827
1016
  ];
828
1017
  const columnAdvancedPipeline = [
829
1018
  initAdvancedVSeed,
1019
+ locale_locale,
830
1020
  autoMeasures,
831
1021
  autoDimensions,
832
1022
  pivotAdapter([
@@ -843,6 +1033,7 @@ const columnAdvancedPipeline = [
843
1033
  ];
844
1034
  const columnParallelAdvancedPipeline = [
845
1035
  initAdvancedVSeed,
1036
+ locale_locale,
846
1037
  autoMeasures,
847
1038
  autoDimensions,
848
1039
  pivotAdapter([
@@ -859,6 +1050,7 @@ const columnParallelAdvancedPipeline = [
859
1050
  ];
860
1051
  const columnPercentAdvancedPipeline = [
861
1052
  initAdvancedVSeed,
1053
+ locale_locale,
862
1054
  autoMeasures,
863
1055
  autoDimensions,
864
1056
  pivotAdapter([
@@ -875,6 +1067,7 @@ const columnPercentAdvancedPipeline = [
875
1067
  ];
876
1068
  const areaAdvancedPipeline = [
877
1069
  initAdvancedVSeed,
1070
+ locale_locale,
878
1071
  autoMeasures,
879
1072
  autoDimensions,
880
1073
  pivotAdapter([
@@ -886,10 +1079,12 @@ const areaAdvancedPipeline = [
886
1079
  areaConfig,
887
1080
  vchartBaseConfig,
888
1081
  vchartTheme,
1082
+ markStyle_markStyle,
889
1083
  annotation_annotation
890
1084
  ];
891
1085
  const areaPercentAdvancedPipeline = [
892
1086
  initAdvancedVSeed,
1087
+ locale_locale,
893
1088
  autoMeasures,
894
1089
  autoDimensions,
895
1090
  pivotAdapter([
@@ -901,10 +1096,12 @@ const areaPercentAdvancedPipeline = [
901
1096
  areaPercentConfig,
902
1097
  vchartBaseConfig,
903
1098
  vchartTheme,
1099
+ markStyle_markStyle,
904
1100
  annotation_annotation
905
1101
  ];
906
1102
  const pieAdvancedPipeline = [
907
1103
  initAdvancedVSeed,
1104
+ locale_locale,
908
1105
  autoMeasures,
909
1106
  autoDimensions,
910
1107
  pivotAdapter([
@@ -1191,7 +1388,15 @@ const xBand = (spec, context)=>{
1191
1388
  lineWidth: line?.lineWidth,
1192
1389
  stroke: line?.lineColor
1193
1390
  }
1194
- }
1391
+ },
1392
+ paddingInner: [
1393
+ 0.15,
1394
+ 0.1
1395
+ ],
1396
+ paddingOuter: [
1397
+ 0.075,
1398
+ 0.1
1399
+ ]
1195
1400
  };
1196
1401
  result.axes = [
1197
1402
  ...result.axes,
@@ -1199,12 +1404,15 @@ const xBand = (spec, context)=>{
1199
1404
  ];
1200
1405
  return result;
1201
1406
  };
1407
+ const ANNOTATION_Z_INDEX = 1000;
1408
+ const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
1202
1409
  const xLinear = (spec, context)=>{
1203
1410
  const result = {
1204
1411
  ...spec
1205
1412
  };
1206
1413
  const { advancedVSeed, vseed } = context;
1207
1414
  const { chartType } = vseed;
1415
+ const { locale } = advancedVSeed;
1208
1416
  const config = advancedVSeed.config?.[chartType]?.xAxis;
1209
1417
  if (!result.axes) result.axes = [];
1210
1418
  if (!config) {
@@ -1230,6 +1438,7 @@ const xLinear = (spec, context)=>{
1230
1438
  min,
1231
1439
  label: {
1232
1440
  visible: label?.visible,
1441
+ formatMethod: (value)=>autoFormatter(value, locale),
1233
1442
  style: {
1234
1443
  fill: label?.labelColor,
1235
1444
  angle: label?.labelAngle,
@@ -1267,6 +1476,9 @@ const xLinear = (spec, context)=>{
1267
1476
  lineWidth: line?.lineWidth,
1268
1477
  stroke: line?.lineColor
1269
1478
  }
1479
+ },
1480
+ innerOffset: {
1481
+ top: LINEAR_AXIS_INNER_OFFSET_TOP
1270
1482
  }
1271
1483
  };
1272
1484
  result.axes = [
@@ -1354,7 +1566,15 @@ const yBand = (spec, context)=>{
1354
1566
  lineWidth: line?.lineWidth,
1355
1567
  stroke: line?.lineColor
1356
1568
  }
1357
- }
1569
+ },
1570
+ paddingInner: [
1571
+ 0.15,
1572
+ 0.1
1573
+ ],
1574
+ paddingOuter: [
1575
+ 0.075,
1576
+ 0.1
1577
+ ]
1358
1578
  };
1359
1579
  result.axes = [
1360
1580
  ...result.axes,
@@ -1368,6 +1588,7 @@ const yLinear = (spec, context)=>{
1368
1588
  };
1369
1589
  const { advancedVSeed, vseed } = context;
1370
1590
  const { chartType } = vseed;
1591
+ const { locale } = advancedVSeed;
1371
1592
  const config = advancedVSeed.config?.[chartType]?.yAxis;
1372
1593
  if (!result.axes) result.axes = [];
1373
1594
  if (!config) {
@@ -1393,6 +1614,7 @@ const yLinear = (spec, context)=>{
1393
1614
  min,
1394
1615
  label: {
1395
1616
  visible: label?.visible,
1617
+ formatMethod: (value)=>autoFormatter(value, locale),
1396
1618
  style: {
1397
1619
  fill: label?.labelColor,
1398
1620
  angle: label?.labelAngle,
@@ -1430,6 +1652,9 @@ const yLinear = (spec, context)=>{
1430
1652
  lineWidth: line?.lineWidth,
1431
1653
  stroke: line?.lineColor
1432
1654
  }
1655
+ },
1656
+ innerOffset: {
1657
+ top: LINEAR_AXIS_INNER_OFFSET_TOP
1433
1658
  }
1434
1659
  };
1435
1660
  result.axes = [
@@ -1452,6 +1677,15 @@ const stackInverse = (spec)=>{
1452
1677
  result.stackInverse = true;
1453
1678
  return result;
1454
1679
  };
1680
+ const stackCornerRadius_stackCornerRadius = (spec, context)=>{
1681
+ const { advancedVSeed, vseed } = context;
1682
+ const { chartType } = vseed;
1683
+ const stackCornerRadius = advancedVSeed.config?.[chartType]?.stackCornerRadius;
1684
+ return {
1685
+ ...spec,
1686
+ stackCornerRadius
1687
+ };
1688
+ };
1455
1689
  const background_backgroundColor = (spec, context)=>{
1456
1690
  const result = {
1457
1691
  ...spec
@@ -1473,11 +1707,57 @@ const tooltip_tooltip = (spec, context)=>{
1473
1707
  ...spec
1474
1708
  };
1475
1709
  const { advancedVSeed } = context;
1710
+ const { measures, datasetReshapeInfo } = advancedVSeed;
1476
1711
  const baseConfig = advancedVSeed.baseConfig.vchart;
1477
1712
  const { tooltip = defaultTooltip } = baseConfig;
1478
1713
  const { enable } = tooltip;
1714
+ const { measureId, measureName, measureValue } = datasetReshapeInfo[0].foldInfo;
1479
1715
  result.tooltip = {
1480
- visible: enable
1716
+ visible: enable,
1717
+ mark: {
1718
+ content: [
1719
+ {
1720
+ visible: true,
1721
+ key: (datum)=>datum && datum[measureName] || '',
1722
+ value: (datum)=>{
1723
+ if (!datum) return '';
1724
+ const value = datum[measureValue];
1725
+ const id = datum[measureId];
1726
+ const measure = findMeasureById(measures, id);
1727
+ if (!measure) return String(value);
1728
+ const { format = {}, autoFormat = true } = measure;
1729
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
1730
+ const formatter = createFormatter(format);
1731
+ return formatter(value);
1732
+ }
1733
+ if (autoFormat) return autoFormatter(value);
1734
+ return String(value);
1735
+ }
1736
+ }
1737
+ ]
1738
+ },
1739
+ dimension: {
1740
+ content: [
1741
+ {
1742
+ visible: true,
1743
+ key: (datum)=>datum && datum[measureName] || '',
1744
+ value: (datum)=>{
1745
+ if (!datum) return '';
1746
+ const value = datum[measureValue];
1747
+ const id = datum[measureId];
1748
+ const measure = findMeasureById(measures, id);
1749
+ if (!measure) return String(value);
1750
+ const { format = {}, autoFormat = true } = measure;
1751
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
1752
+ const formatter = createFormatter(format);
1753
+ return formatter(value);
1754
+ }
1755
+ if (autoFormat) return autoFormatter(value);
1756
+ return String(value);
1757
+ }
1758
+ }
1759
+ ]
1760
+ }
1481
1761
  };
1482
1762
  return result;
1483
1763
  };
@@ -1486,12 +1766,26 @@ const label_label = (spec, context)=>{
1486
1766
  ...spec
1487
1767
  };
1488
1768
  const { advancedVSeed } = context;
1769
+ const { measures, datasetReshapeInfo, locale } = advancedVSeed;
1489
1770
  const baseConfig = advancedVSeed.baseConfig.vchart;
1490
1771
  if (!baseConfig || !baseConfig.label) return result;
1772
+ const { measureId } = datasetReshapeInfo[0].foldInfo;
1491
1773
  const { label } = baseConfig;
1492
1774
  const { enable } = label;
1493
1775
  result.label = {
1494
- visible: enable
1776
+ visible: enable,
1777
+ formatMethod: (value, datum)=>{
1778
+ const id = datum[measureId];
1779
+ const measure = findMeasureById(measures, id);
1780
+ if (!measure) return value;
1781
+ const { format = {}, autoFormat = true } = measure;
1782
+ if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
1783
+ const formatter = createFormatter(format);
1784
+ return formatter(value);
1785
+ }
1786
+ if (autoFormat) return autoFormatter(value, locale);
1787
+ return String(value);
1788
+ }
1495
1789
  };
1496
1790
  return result;
1497
1791
  };
@@ -1794,6 +2088,7 @@ const pivotGridStyle = (spec)=>{
1794
2088
  ...spec
1795
2089
  };
1796
2090
  const transparent = 'rgba(0,0,0,0)';
2091
+ const hoverBackgroundColor = 'rgba(178,186,207, 0.2)';
1797
2092
  return {
1798
2093
  ...result,
1799
2094
  theme: {
@@ -1812,7 +2107,10 @@ const pivotGridStyle = (spec)=>{
1812
2107
  0,
1813
2108
  1,
1814
2109
  0
1815
- ]
2110
+ ],
2111
+ hover: {
2112
+ cellBgColor: 'transparent'
2113
+ }
1816
2114
  },
1817
2115
  headerStyle: {
1818
2116
  borderColor: 'rgba(0,4,20,0.2)',
@@ -1822,7 +2120,7 @@ const pivotGridStyle = (spec)=>{
1822
2120
  borderLineWidth: 0,
1823
2121
  bgColor: transparent,
1824
2122
  hover: {
1825
- cellBgColor: 'rgba(178,186,207, 0.2)'
2123
+ cellBgColor: hoverBackgroundColor
1826
2124
  }
1827
2125
  },
1828
2126
  rowHeaderStyle: {
@@ -1832,7 +2130,7 @@ const pivotGridStyle = (spec)=>{
1832
2130
  borderLineWidth: 0,
1833
2131
  bgColor: transparent,
1834
2132
  hover: {
1835
- cellBgColor: 'rgba(178,186,207, 0.2)'
2133
+ cellBgColor: hoverBackgroundColor
1836
2134
  }
1837
2135
  },
1838
2136
  cornerHeaderStyle: {
@@ -1849,7 +2147,7 @@ const pivotGridStyle = (spec)=>{
1849
2147
  ],
1850
2148
  bgColor: transparent,
1851
2149
  hover: {
1852
- cellBgColor: ''
2150
+ cellBgColor: hoverBackgroundColor
1853
2151
  }
1854
2152
  },
1855
2153
  cornerRightTopCellStyle: {
@@ -1857,7 +2155,7 @@ const pivotGridStyle = (spec)=>{
1857
2155
  borderLineWidth: 0,
1858
2156
  bgColor: transparent,
1859
2157
  hover: {
1860
- cellBgColor: ''
2158
+ cellBgColor: hoverBackgroundColor
1861
2159
  }
1862
2160
  },
1863
2161
  cornerLeftBottomCellStyle: {
@@ -1865,7 +2163,7 @@ const pivotGridStyle = (spec)=>{
1865
2163
  borderLineWidth: 0,
1866
2164
  bgColor: transparent,
1867
2165
  hover: {
1868
- cellBgColor: ''
2166
+ cellBgColor: hoverBackgroundColor
1869
2167
  }
1870
2168
  },
1871
2169
  cornerRightBottomCellStyle: {
@@ -1873,7 +2171,7 @@ const pivotGridStyle = (spec)=>{
1873
2171
  borderLineWidth: 0,
1874
2172
  bgColor: transparent,
1875
2173
  hover: {
1876
- cellBgColor: ''
2174
+ cellBgColor: hoverBackgroundColor
1877
2175
  }
1878
2176
  },
1879
2177
  rightFrozenStyle: {
@@ -1881,7 +2179,7 @@ const pivotGridStyle = (spec)=>{
1881
2179
  borderLineWidth: 0,
1882
2180
  bgColor: transparent,
1883
2181
  hover: {
1884
- cellBgColor: 'rgba(178,186,207, 0.2)'
2182
+ cellBgColor: hoverBackgroundColor
1885
2183
  }
1886
2184
  },
1887
2185
  bottomFrozenStyle: {
@@ -1889,7 +2187,7 @@ const pivotGridStyle = (spec)=>{
1889
2187
  borderLineWidth: 0,
1890
2188
  bgColor: transparent,
1891
2189
  hover: {
1892
- cellBgColor: 'rgba(178,186,207, 0.2)'
2190
+ cellBgColor: hoverBackgroundColor
1893
2191
  }
1894
2192
  },
1895
2193
  selectionStyle: {
@@ -1937,8 +2235,10 @@ const pivotRowDimensions = (spec, context)=>{
1937
2235
  rows: rows
1938
2236
  };
1939
2237
  };
1940
- const selector_selector = (datum, selector)=>{
2238
+ const selector_selector = (vchartDatum, selector)=>{
1941
2239
  if (!selector) return true;
2240
+ const vchartKeys = Object.keys(vchartDatum).filter((k)=>k.toLocaleLowerCase().startsWith('__vchart'));
2241
+ const datum = (0, external_remeda_namespaceObject.omit)(vchartDatum, vchartKeys);
1942
2242
  const selectors = Array.isArray(selector) ? selector : [
1943
2243
  selector
1944
2244
  ];
@@ -2027,52 +2327,218 @@ const barStyle_barStyle = (spec, context)=>{
2027
2327
  const { advancedVSeed } = context;
2028
2328
  const { markStyle, encoding } = advancedVSeed;
2029
2329
  const { barStyle } = markStyle;
2030
- if (!barStyle) return spec;
2031
2330
  const result = {
2032
- ...spec
2331
+ ...spec,
2332
+ bar: {
2333
+ state: {
2334
+ hover: {
2335
+ stroke: (datum, context)=>{
2336
+ const field = encoding[0]?.group?.[0];
2337
+ const color = context.seriesColor(datum[field]);
2338
+ return color;
2339
+ },
2340
+ lineWidth: 4,
2341
+ fillOpacity: 0.6
2342
+ }
2343
+ }
2344
+ }
2033
2345
  };
2034
- const { selector: barSelector, barBorderColor, barBorderStyle, barBorderWidth, barColor, barColorOpacity, barRadius } = barStyle;
2346
+ if (!barStyle) return result;
2347
+ const barStyles = Array.isArray(barStyle) ? barStyle : [
2348
+ barStyle
2349
+ ];
2350
+ const customMap = barStyles.reduce((result, style, index)=>{
2351
+ const { barBorderColor, barBorderStyle, barBorderWidth, barColor, barColorOpacity, barRadius } = style;
2352
+ const lineDash = 'dashed' === barBorderStyle ? [
2353
+ 5,
2354
+ 2
2355
+ ] : 'dotted' === barBorderStyle ? [
2356
+ 2,
2357
+ 5
2358
+ ] : [
2359
+ 0,
2360
+ 0
2361
+ ];
2362
+ return {
2363
+ ...result,
2364
+ [`custom${index + 1}`]: {
2365
+ level: index + 1,
2366
+ filter: (datum)=>{
2367
+ if (selector_selector(datum, style.selector)) return true;
2368
+ return false;
2369
+ },
2370
+ style: {
2371
+ fill: barColor,
2372
+ fillOpacity: barColorOpacity,
2373
+ stroke: barBorderColor,
2374
+ lineWidth: barBorderWidth,
2375
+ lineDash: lineDash,
2376
+ cornerRadius: barRadius
2377
+ }
2378
+ }
2379
+ };
2380
+ }, {});
2035
2381
  return {
2036
2382
  ...result,
2037
2383
  bar: {
2038
- style: {
2039
- fill: barColor ? (datum, context)=>{
2040
- if (selector_selector(datum, barSelector)) return barColor;
2041
- return context.seriesColor(datum[encoding[0]?.group?.[0]]);
2042
- } : void 0,
2043
- fillOpacity: barColorOpacity ? (datum)=>{
2044
- if (selector_selector(datum, barSelector)) return barColorOpacity;
2045
- return 1;
2046
- } : void 0,
2047
- stroke: barBorderColor ? (datum, context)=>{
2048
- if (selector_selector(datum, barSelector)) return barBorderColor;
2049
- return context.seriesColor(datum[encoding[0]?.group?.[0]]);
2050
- } : void 0,
2051
- lineWidth: barBorderWidth ? (datum)=>{
2052
- if (selector_selector(datum, barSelector)) return barBorderWidth;
2053
- return 0;
2054
- } : void 0,
2055
- lineDash: barBorderStyle ? (datum)=>{
2056
- if (selector_selector(datum, barSelector)) {
2057
- if ('solid' === barBorderStyle) ;
2058
- else if ('dashed' === barBorderStyle) return [
2059
- 5,
2060
- 5
2061
- ];
2062
- else if ('dotted' === barBorderStyle) return [
2063
- 1,
2064
- 5
2065
- ];
2066
- }
2067
- return [
2068
- 0,
2069
- 0
2070
- ];
2071
- } : void 0,
2072
- cornerRadius: barRadius ? (datum)=>{
2073
- if (selector_selector(datum, barSelector)) return barRadius;
2074
- return 0;
2075
- } : void 0
2384
+ state: {
2385
+ ...customMap
2386
+ }
2387
+ }
2388
+ };
2389
+ };
2390
+ const pointStyle_pointStyle = (spec, context)=>{
2391
+ const { advancedVSeed } = context;
2392
+ const { markStyle } = advancedVSeed;
2393
+ const { pointStyle } = markStyle;
2394
+ const result = {
2395
+ ...spec,
2396
+ point: {
2397
+ state: {
2398
+ dimension_hover: {
2399
+ scaleX: 1.4,
2400
+ scaleY: 1.4
2401
+ }
2402
+ }
2403
+ }
2404
+ };
2405
+ if (!pointStyle) return result;
2406
+ const pointStyles = Array.isArray(pointStyle) ? pointStyle : [
2407
+ pointStyle
2408
+ ];
2409
+ const customMap = pointStyles.reduce((result, style, index)=>{
2410
+ const { pointBorderColor, pointBorderStyle, pointBorderWidth, pointColor, pointColorOpacity, pointSize } = style;
2411
+ const lineDash = 'dashed' === pointBorderStyle ? [
2412
+ 5,
2413
+ 2
2414
+ ] : 'dotted' === pointBorderStyle ? [
2415
+ 2,
2416
+ 5
2417
+ ] : [
2418
+ 0,
2419
+ 0
2420
+ ];
2421
+ return {
2422
+ ...result,
2423
+ [`custom${index + 1}`]: {
2424
+ level: index + 1,
2425
+ filter: (datum)=>{
2426
+ if (selector_selector(datum, style.selector)) return true;
2427
+ return false;
2428
+ },
2429
+ style: {
2430
+ size: pointSize,
2431
+ fill: pointColor,
2432
+ fillOpacity: pointColorOpacity,
2433
+ stroke: pointBorderColor,
2434
+ lineWidth: pointBorderWidth,
2435
+ lineDash: lineDash
2436
+ }
2437
+ }
2438
+ };
2439
+ }, {});
2440
+ return {
2441
+ ...result,
2442
+ point: {
2443
+ state: {
2444
+ ...customMap
2445
+ }
2446
+ }
2447
+ };
2448
+ };
2449
+ const lineStyle_lineStyle = (spec, context)=>{
2450
+ const { advancedVSeed } = context;
2451
+ const { markStyle, encoding, dataset } = advancedVSeed;
2452
+ const { lineStyle } = markStyle;
2453
+ if (!lineStyle) return spec;
2454
+ const result = {
2455
+ ...spec
2456
+ };
2457
+ const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
2458
+ lineStyle
2459
+ ];
2460
+ const group = encoding[0]?.group?.[0];
2461
+ const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
2462
+ const customMap = lineStyles.reduce((result, style, index)=>{
2463
+ const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth } = style;
2464
+ const dashSegment = (lineWidth ?? 2) * 2;
2465
+ const dashGap = lineWidth ?? 2;
2466
+ const lineDash = 'dashed' === lineStyle ? [
2467
+ dashSegment,
2468
+ dashSegment
2469
+ ] : 'dotted' === lineStyle ? [
2470
+ dashGap / 2,
2471
+ 2 * dashGap
2472
+ ] : [
2473
+ 0,
2474
+ 0
2475
+ ];
2476
+ const curveType = lineSmooth ? 'monotone' : 'linear';
2477
+ return {
2478
+ ...result,
2479
+ [`custom${index + 1}`]: {
2480
+ level: index + 1,
2481
+ filter: (datum)=>{
2482
+ const lineData = lineGroups[datum[group ?? '']];
2483
+ for (const d of lineData)if (selector_selector(d, style.selector)) return true;
2484
+ return false;
2485
+ },
2486
+ style: {
2487
+ curveType: curveType,
2488
+ fill: lineColor,
2489
+ fillOpacity: lineColorOpacity,
2490
+ stroke: lineColor,
2491
+ lineWidth: lineWidth,
2492
+ lineDash: lineDash
2493
+ }
2494
+ }
2495
+ };
2496
+ }, {});
2497
+ return {
2498
+ ...result,
2499
+ line: {
2500
+ state: {
2501
+ ...customMap
2502
+ }
2503
+ }
2504
+ };
2505
+ };
2506
+ const areaStyle_areaStyle = (spec, context)=>{
2507
+ const { advancedVSeed } = context;
2508
+ const { markStyle, encoding, dataset } = advancedVSeed;
2509
+ const { areaStyle } = markStyle;
2510
+ if (!areaStyle) return spec;
2511
+ const result = {
2512
+ ...spec
2513
+ };
2514
+ const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
2515
+ areaStyle
2516
+ ];
2517
+ const group = encoding[0]?.group?.[0];
2518
+ const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
2519
+ const customMap = areaStyles.reduce((result, style, index)=>{
2520
+ const { areaColor, areaColorOpacity } = style;
2521
+ return {
2522
+ ...result,
2523
+ [`custom${index + 1}`]: {
2524
+ level: index + 1,
2525
+ filter: (datum)=>{
2526
+ const lineData = lineGroups[datum[group ?? '']];
2527
+ for (const d of lineData)if (selector_selector(d, style.selector)) return true;
2528
+ return false;
2529
+ },
2530
+ style: {
2531
+ fill: areaColor,
2532
+ fillOpacity: areaColorOpacity
2533
+ }
2534
+ }
2535
+ };
2536
+ }, {});
2537
+ return {
2538
+ ...result,
2539
+ area: {
2540
+ state: {
2541
+ ...customMap
2076
2542
  }
2077
2543
  }
2078
2544
  };
@@ -2095,20 +2561,15 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2095
2561
  const dataset = advancedVSeed.dataset.flat();
2096
2562
  const selectedData = dataset.filter((datum)=>selector_selector(datum, selectorPoint));
2097
2563
  return selectedData.map((datum)=>({
2564
+ zIndex: ANNOTATION_Z_INDEX,
2098
2565
  regionRelative: true,
2099
2566
  position: (data, context)=>{
2100
2567
  const targetDatum = data.find((item)=>isSubset(datum, item));
2101
2568
  if (targetDatum) {
2102
2569
  const { x, y } = context.dataToPosition(targetDatum);
2103
- const xBandWidth = context.scaleX?.bandwidth?.();
2104
- const yBandWidth = context.scaleY?.bandwidth?.();
2105
- if (xBandWidth) return {
2106
- x: x,
2107
- y: y
2108
- };
2109
- if (yBandWidth) return {
2570
+ return {
2110
2571
  x,
2111
- y: y
2572
+ y
2112
2573
  };
2113
2574
  }
2114
2575
  },
@@ -2168,6 +2629,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2168
2629
  const dataset = advancedVSeed.dataset.flat();
2169
2630
  const generateOneMarkLine = (x)=>({
2170
2631
  x: x,
2632
+ zIndex: ANNOTATION_Z_INDEX,
2171
2633
  line: {
2172
2634
  visible: lineVisible,
2173
2635
  style: {
@@ -2264,6 +2726,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2264
2726
  const dataset = advancedVSeed.dataset.flat();
2265
2727
  const generateOneMarkLine = (y)=>({
2266
2728
  y,
2729
+ zIndex: ANNOTATION_Z_INDEX,
2267
2730
  line: {
2268
2731
  visible: lineVisible,
2269
2732
  style: {
@@ -2358,20 +2821,19 @@ const annotationArea_annotationArea = (spec, context)=>{
2358
2821
  right: 'insideRight'
2359
2822
  };
2360
2823
  const markArea = annotationAreaList.flatMap((annotationArea)=>{
2361
- const { selector: selectorPoint, text = '', textPosition = 'top', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'center', textBaseline = 'top', backgroundBorderColor, backgroundBorderRadius = 4, backgroundBorderWidth = 1, backgroundColor = '#191d24', backgroundPadding = 4, backgroundVisible = true, outerPadding = 8, areaColor = '#888888', areaColorOpacity = 0.15, areaBorderColor, areaBorderRadius, areaBorderWidth } = annotationArea;
2824
+ const { selector: selectorPoint, text = '', textPosition = 'top', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'center', textBaseline = 'top', backgroundBorderColor, backgroundBorderRadius = 4, backgroundBorderWidth = 1, backgroundColor = '#191d24', backgroundPadding = 4, backgroundVisible = true, outerPadding = 0, areaColor = '#888888', areaColorOpacity = 0.15, areaBorderColor, areaBorderRadius, areaBorderWidth } = annotationArea;
2362
2825
  const dataset = advancedVSeed.dataset.flat();
2363
2826
  const selectedData = dataset.filter((datum)=>selector_selector(datum, selectorPoint));
2364
2827
  return {
2828
+ zIndex: ANNOTATION_Z_INDEX,
2365
2829
  regionRelative: true,
2366
2830
  positions: (data, context)=>{
2367
- console.log('debug selectedData', selectedData);
2368
2831
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
2369
2832
  const xyList = positionData.map((datum)=>context.dataToPosition(datum));
2370
- const xScale = context.scaleX;
2371
- const yScale = context.scaleY;
2372
- const xBandWidth = xScale?.bandwidth?.();
2373
- const yBandWidth = yScale?.bandwidth?.();
2374
- if (xBandWidth) {
2833
+ const yAxisHelper = context.getYAxisHelper();
2834
+ const xAxisHelper = context.getXAxisHelper();
2835
+ if ('function' == typeof xAxisHelper?.getBandwidth) {
2836
+ const yScale = yAxisHelper.getScale();
2375
2837
  const minX = Math.min(...xyList.map((item)=>item.x)) - outerPadding;
2376
2838
  const maxX = Math.max(...xyList.map((item)=>item.x)) + outerPadding;
2377
2839
  const minY = Math.min(...yScale.range());
@@ -2395,7 +2857,8 @@ const annotationArea_annotationArea = (spec, context)=>{
2395
2857
  }
2396
2858
  ];
2397
2859
  }
2398
- if (yBandWidth) {
2860
+ if ('function' == typeof yAxisHelper?.getBandwidth) {
2861
+ const xScale = xAxisHelper.getScale();
2399
2862
  const minY = Math.min(...xyList.map((item)=>item.y)) - outerPadding;
2400
2863
  const maxY = Math.max(...xyList.map((item)=>item.y)) + outerPadding;
2401
2864
  const minX = Math.min(...xScale.range());
@@ -2483,15 +2946,17 @@ const annotationAreaBand = (spec, context)=>{
2483
2946
  const dataset = advancedVSeed.dataset.flat();
2484
2947
  const selectedData = dataset.filter((datum)=>selector_selector(datum, selectorPoint));
2485
2948
  return {
2949
+ zIndex: ANNOTATION_Z_INDEX,
2486
2950
  regionRelative: true,
2487
2951
  positions: (data, context)=>{
2488
2952
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
2489
2953
  const xyList = positionData.map((datum)=>context.dataToPosition(datum));
2490
- const xScale = context.scaleX;
2491
- const yScale = context.scaleY;
2492
- const xBandWidth = xScale?.bandwidth?.();
2493
- const yBandWidth = yScale?.bandwidth?.();
2494
- if (xBandWidth) {
2954
+ const yAxisHelper = context.getYAxisHelper();
2955
+ const xAxisHelper = context.getXAxisHelper();
2956
+ if ('function' == typeof xAxisHelper?.getBandwidth) {
2957
+ const depth = context.fieldX.length ?? 0;
2958
+ const xBandWidth = xAxisHelper?.getBandwidth?.(depth - 1);
2959
+ const yScale = yAxisHelper.getScale();
2495
2960
  const minX = Math.min(...xyList.map((item)=>item.x)) - outerPadding;
2496
2961
  const maxX = Math.max(...xyList.map((item)=>item.x)) + xBandWidth + outerPadding;
2497
2962
  const minY = Math.min(...yScale.range());
@@ -2515,7 +2980,10 @@ const annotationAreaBand = (spec, context)=>{
2515
2980
  }
2516
2981
  ];
2517
2982
  }
2518
- if (yBandWidth) {
2983
+ if ('function' == typeof yAxisHelper?.getBandwidth) {
2984
+ const depth = context.fieldY.length ?? 0;
2985
+ const yBandWidth = yAxisHelper?.getBandwidth?.(depth - 1);
2986
+ const xScale = xAxisHelper.getScale();
2519
2987
  const minY = Math.min(...xyList.map((item)=>item.y)) - outerPadding;
2520
2988
  const maxY = Math.max(...xyList.map((item)=>item.y)) + yBandWidth + outerPadding;
2521
2989
  const minX = Math.min(...xScale.range());
@@ -2580,6 +3048,118 @@ const annotationAreaBand = (spec, context)=>{
2580
3048
  markArea: markArea
2581
3049
  };
2582
3050
  };
3051
+ const verticalCrosshairLine = (spec, context)=>{
3052
+ const result = {
3053
+ ...spec
3054
+ };
3055
+ const { advancedVSeed, vseed } = context;
3056
+ const { chartType } = vseed;
3057
+ const config = advancedVSeed.config?.[chartType]?.crosshairLine;
3058
+ if (!config) return result;
3059
+ if (!result.crosshair) result.crosshair = {};
3060
+ const { visible = true, lineColor, labelColor, labelVisible, labelBackgroundColor } = config;
3061
+ const crosshair = result.crosshair;
3062
+ crosshair.xField = {
3063
+ visible,
3064
+ line: {
3065
+ type: 'line',
3066
+ style: {
3067
+ lineWidth: 1,
3068
+ opacity: 1,
3069
+ stroke: lineColor,
3070
+ lineDash: [
3071
+ 4,
3072
+ 2
3073
+ ]
3074
+ }
3075
+ },
3076
+ label: {
3077
+ visible: labelVisible,
3078
+ labelBackground: {
3079
+ visible: labelVisible,
3080
+ style: {
3081
+ fill: labelBackgroundColor
3082
+ }
3083
+ },
3084
+ style: {
3085
+ fill: labelColor
3086
+ }
3087
+ }
3088
+ };
3089
+ return result;
3090
+ };
3091
+ const verticalCrosshairRect = (spec, context)=>{
3092
+ const result = {
3093
+ ...spec
3094
+ };
3095
+ const { advancedVSeed, vseed } = context;
3096
+ const { chartType } = vseed;
3097
+ const config = advancedVSeed.config?.[chartType]?.crosshairRect;
3098
+ if (!config) return result;
3099
+ if (!result.crosshair) result.crosshair = {};
3100
+ const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config;
3101
+ const crosshair = result.crosshair;
3102
+ crosshair.xField = {
3103
+ visible,
3104
+ line: {
3105
+ type: 'rect',
3106
+ style: {
3107
+ lineWidth: 0,
3108
+ opacity: 0.2,
3109
+ fill: rectColor
3110
+ }
3111
+ },
3112
+ label: {
3113
+ visible: labelVisible,
3114
+ labelBackground: {
3115
+ visible: labelVisible,
3116
+ style: {
3117
+ fill: labelBackgroundColor
3118
+ }
3119
+ },
3120
+ style: {
3121
+ fill: labelColor
3122
+ }
3123
+ }
3124
+ };
3125
+ return result;
3126
+ };
3127
+ const horizontalCrosshairRect = (spec, context)=>{
3128
+ const result = {
3129
+ ...spec
3130
+ };
3131
+ const { advancedVSeed, vseed } = context;
3132
+ const { chartType } = vseed;
3133
+ const config = advancedVSeed.config?.[chartType]?.crosshairRect;
3134
+ if (!config) return result;
3135
+ if (!result.crosshair) result.crosshair = {};
3136
+ const { visible = true, rectColor, labelColor, labelVisible, labelBackgroundColor } = config;
3137
+ const crosshair = result.crosshair;
3138
+ crosshair.yField = {
3139
+ visible,
3140
+ line: {
3141
+ type: 'rect',
3142
+ style: {
3143
+ lineWidth: 0,
3144
+ opacity: 0.2,
3145
+ fill: rectColor
3146
+ }
3147
+ },
3148
+ label: {
3149
+ visible: labelVisible,
3150
+ labelBackground: {
3151
+ visible: labelVisible,
3152
+ style: {
3153
+ fill: labelBackgroundColor
3154
+ }
3155
+ },
3156
+ style: {
3157
+ fill: labelColor
3158
+ }
3159
+ }
3160
+ };
3161
+ return result;
3162
+ };
2583
3163
  const line_line = [
2584
3164
  initLine,
2585
3165
  color_color,
@@ -2589,7 +3169,10 @@ const line_line = [
2589
3169
  yLinear,
2590
3170
  label_label,
2591
3171
  tooltip_tooltip,
3172
+ verticalCrosshairLine,
2592
3173
  discreteLegend,
3174
+ pointStyle_pointStyle,
3175
+ lineStyle_lineStyle,
2593
3176
  annotationPoint_annotationPoint,
2594
3177
  annotationVerticalLine_annotationVerticalLine,
2595
3178
  annotationHorizontalLine_annotationHorizontalLine,
@@ -2609,6 +3192,9 @@ const pivotLine = [
2609
3192
  yLinear,
2610
3193
  label_label,
2611
3194
  tooltip_tooltip,
3195
+ verticalCrosshairLine,
3196
+ pointStyle_pointStyle,
3197
+ lineStyle_lineStyle,
2612
3198
  annotationPoint_annotationPoint,
2613
3199
  annotationVerticalLine_annotationVerticalLine,
2614
3200
  annotationHorizontalLine_annotationHorizontalLine,
@@ -2623,6 +3209,7 @@ const lineSpecPipeline = [
2623
3209
  ];
2624
3210
  const column = [
2625
3211
  initColumn,
3212
+ stackCornerRadius_stackCornerRadius,
2626
3213
  stackInverse,
2627
3214
  color_color,
2628
3215
  background_backgroundColor,
@@ -2631,6 +3218,7 @@ const column = [
2631
3218
  yLinear,
2632
3219
  label_label,
2633
3220
  tooltip_tooltip,
3221
+ verticalCrosshairRect,
2634
3222
  discreteLegend,
2635
3223
  barStyle_barStyle,
2636
3224
  annotationPoint_annotationPoint,
@@ -2645,6 +3233,7 @@ const pivotColumn = [
2645
3233
  datasetPivot,
2646
3234
  pivotIndicators([
2647
3235
  initColumn,
3236
+ stackCornerRadius_stackCornerRadius,
2648
3237
  stackInverse,
2649
3238
  color_color,
2650
3239
  background_backgroundColor,
@@ -2653,6 +3242,7 @@ const pivotColumn = [
2653
3242
  yLinear,
2654
3243
  label_label,
2655
3244
  tooltip_tooltip,
3245
+ verticalCrosshairRect,
2656
3246
  barStyle_barStyle,
2657
3247
  annotationPoint_annotationPoint,
2658
3248
  annotationVerticalLine_annotationVerticalLine,
@@ -2668,6 +3258,7 @@ const columnSpecPipeline = [
2668
3258
  ];
2669
3259
  const columnParallel = [
2670
3260
  initColumnParallel,
3261
+ stackCornerRadius_stackCornerRadius,
2671
3262
  color_color,
2672
3263
  background_backgroundColor,
2673
3264
  dataset_dataset,
@@ -2676,6 +3267,7 @@ const columnParallel = [
2676
3267
  label_label,
2677
3268
  tooltip_tooltip,
2678
3269
  discreteLegend,
3270
+ verticalCrosshairRect,
2679
3271
  barStyle_barStyle,
2680
3272
  annotationPoint_annotationPoint,
2681
3273
  annotationVerticalLine_annotationVerticalLine,
@@ -2689,6 +3281,7 @@ const pivotColumnParallel = [
2689
3281
  datasetPivot,
2690
3282
  pivotIndicators([
2691
3283
  initColumnParallel,
3284
+ stackCornerRadius_stackCornerRadius,
2692
3285
  color_color,
2693
3286
  background_backgroundColor,
2694
3287
  datasetPivotPlaceholder,
@@ -2696,6 +3289,7 @@ const pivotColumnParallel = [
2696
3289
  yLinear,
2697
3290
  label_label,
2698
3291
  tooltip_tooltip,
3292
+ verticalCrosshairRect,
2699
3293
  barStyle_barStyle,
2700
3294
  annotationPoint_annotationPoint,
2701
3295
  annotationVerticalLine_annotationVerticalLine,
@@ -2711,6 +3305,7 @@ const columnParallelSpecPipeline = [
2711
3305
  ];
2712
3306
  const columnPercent = [
2713
3307
  initColumn,
3308
+ stackCornerRadius_stackCornerRadius,
2714
3309
  stackInverse,
2715
3310
  color_color,
2716
3311
  background_backgroundColor,
@@ -2720,6 +3315,7 @@ const columnPercent = [
2720
3315
  yLinear,
2721
3316
  label_label,
2722
3317
  tooltip_tooltip,
3318
+ verticalCrosshairRect,
2723
3319
  discreteLegend,
2724
3320
  barStyle_barStyle,
2725
3321
  annotationPoint_annotationPoint,
@@ -2734,6 +3330,7 @@ const pivotColumnPercent = [
2734
3330
  datasetPivot,
2735
3331
  pivotIndicators([
2736
3332
  initColumn,
3333
+ stackCornerRadius_stackCornerRadius,
2737
3334
  stackInverse,
2738
3335
  color_color,
2739
3336
  percent,
@@ -2743,6 +3340,7 @@ const pivotColumnPercent = [
2743
3340
  yLinear,
2744
3341
  label_label,
2745
3342
  tooltip_tooltip,
3343
+ verticalCrosshairRect,
2746
3344
  barStyle_barStyle,
2747
3345
  annotationPoint_annotationPoint,
2748
3346
  annotationVerticalLine_annotationVerticalLine,
@@ -2758,6 +3356,7 @@ const columnPercentSpecPipeline = [
2758
3356
  ];
2759
3357
  const bar = [
2760
3358
  initBar,
3359
+ stackCornerRadius_stackCornerRadius,
2761
3360
  color_color,
2762
3361
  background_backgroundColor,
2763
3362
  dataset_dataset,
@@ -2765,6 +3364,7 @@ const bar = [
2765
3364
  yBand,
2766
3365
  label_label,
2767
3366
  tooltip_tooltip,
3367
+ horizontalCrosshairRect,
2768
3368
  discreteLegend,
2769
3369
  barStyle_barStyle,
2770
3370
  annotationPoint_annotationPoint,
@@ -2779,6 +3379,7 @@ const pivotBar = [
2779
3379
  datasetPivot,
2780
3380
  pivotIndicators([
2781
3381
  initBar,
3382
+ stackCornerRadius_stackCornerRadius,
2782
3383
  color_color,
2783
3384
  background_backgroundColor,
2784
3385
  datasetPivotPlaceholder,
@@ -2786,6 +3387,7 @@ const pivotBar = [
2786
3387
  label_label,
2787
3388
  label_label,
2788
3389
  tooltip_tooltip,
3390
+ horizontalCrosshairRect,
2789
3391
  barStyle_barStyle,
2790
3392
  annotationPoint_annotationPoint,
2791
3393
  annotationVerticalLine_annotationVerticalLine,
@@ -2801,6 +3403,7 @@ const barSpecPipeline = [
2801
3403
  ];
2802
3404
  const barParallel = [
2803
3405
  initBarParallel,
3406
+ stackCornerRadius_stackCornerRadius,
2804
3407
  color_color,
2805
3408
  background_backgroundColor,
2806
3409
  dataset_dataset,
@@ -2808,6 +3411,7 @@ const barParallel = [
2808
3411
  yBand,
2809
3412
  label_label,
2810
3413
  tooltip_tooltip,
3414
+ horizontalCrosshairRect,
2811
3415
  discreteLegend,
2812
3416
  barStyle_barStyle,
2813
3417
  annotationPoint_annotationPoint,
@@ -2822,6 +3426,7 @@ const pivotBarParallel = [
2822
3426
  datasetPivot,
2823
3427
  pivotIndicators([
2824
3428
  initBarParallel,
3429
+ stackCornerRadius_stackCornerRadius,
2825
3430
  color_color,
2826
3431
  background_backgroundColor,
2827
3432
  datasetPivotPlaceholder,
@@ -2829,6 +3434,7 @@ const pivotBarParallel = [
2829
3434
  xLinear,
2830
3435
  label_label,
2831
3436
  tooltip_tooltip,
3437
+ horizontalCrosshairRect,
2832
3438
  barStyle_barStyle,
2833
3439
  annotationPoint_annotationPoint,
2834
3440
  annotationVerticalLine_annotationVerticalLine,
@@ -2844,6 +3450,7 @@ const barParallelSpecPipeline = [
2844
3450
  ];
2845
3451
  const barPercent = [
2846
3452
  initBar,
3453
+ stackCornerRadius_stackCornerRadius,
2847
3454
  color_color,
2848
3455
  background_backgroundColor,
2849
3456
  percent,
@@ -2852,6 +3459,7 @@ const barPercent = [
2852
3459
  yBand,
2853
3460
  label_label,
2854
3461
  tooltip_tooltip,
3462
+ horizontalCrosshairRect,
2855
3463
  discreteLegend,
2856
3464
  barStyle_barStyle,
2857
3465
  annotationPoint_annotationPoint,
@@ -2866,6 +3474,7 @@ const pivotBarPercent = [
2866
3474
  datasetPivot,
2867
3475
  pivotIndicators([
2868
3476
  initBar,
3477
+ stackCornerRadius_stackCornerRadius,
2869
3478
  color_color,
2870
3479
  background_backgroundColor,
2871
3480
  percent,
@@ -2874,6 +3483,7 @@ const pivotBarPercent = [
2874
3483
  xLinear,
2875
3484
  label_label,
2876
3485
  tooltip_tooltip,
3486
+ horizontalCrosshairRect,
2877
3487
  barStyle_barStyle,
2878
3488
  annotationPoint_annotationPoint,
2879
3489
  annotationVerticalLine_annotationVerticalLine,
@@ -2897,7 +3507,11 @@ const area_area = [
2897
3507
  yLinear,
2898
3508
  label_label,
2899
3509
  tooltip_tooltip,
3510
+ verticalCrosshairLine,
2900
3511
  discreteLegend,
3512
+ pointStyle_pointStyle,
3513
+ lineStyle_lineStyle,
3514
+ areaStyle_areaStyle,
2901
3515
  annotationPoint_annotationPoint,
2902
3516
  annotationVerticalLine_annotationVerticalLine,
2903
3517
  annotationHorizontalLine_annotationHorizontalLine,
@@ -2918,6 +3532,10 @@ const pivotArea = [
2918
3532
  yLinear,
2919
3533
  label_label,
2920
3534
  tooltip_tooltip,
3535
+ verticalCrosshairLine,
3536
+ pointStyle_pointStyle,
3537
+ lineStyle_lineStyle,
3538
+ areaStyle_areaStyle,
2921
3539
  annotationPoint_annotationPoint,
2922
3540
  annotationVerticalLine_annotationVerticalLine,
2923
3541
  annotationHorizontalLine_annotationHorizontalLine,
@@ -2941,7 +3559,11 @@ const areaPercent = [
2941
3559
  yLinear,
2942
3560
  label_label,
2943
3561
  tooltip_tooltip,
3562
+ verticalCrosshairLine,
2944
3563
  discreteLegend,
3564
+ pointStyle_pointStyle,
3565
+ lineStyle_lineStyle,
3566
+ areaStyle_areaStyle,
2945
3567
  annotationPoint_annotationPoint,
2946
3568
  annotationVerticalLine_annotationVerticalLine,
2947
3569
  annotationHorizontalLine_annotationHorizontalLine,
@@ -2963,6 +3585,10 @@ const pivotAreaPercent = [
2963
3585
  yLinear,
2964
3586
  label_label,
2965
3587
  tooltip_tooltip,
3588
+ verticalCrosshairLine,
3589
+ pointStyle_pointStyle,
3590
+ lineStyle_lineStyle,
3591
+ areaStyle_areaStyle,
2966
3592
  annotationPoint_annotationPoint,
2967
3593
  annotationVerticalLine_annotationVerticalLine,
2968
3594
  annotationHorizontalLine_annotationHorizontalLine,
@@ -3058,6 +3684,7 @@ class Builder {
3058
3684
  _spec = null;
3059
3685
  constructor(vseed){
3060
3686
  this._vseed = vseed;
3687
+ this._vseed.locale = vseed.locale || intl.getLocale();
3061
3688
  }
3062
3689
  build = ()=>build(this);
3063
3690
  buildSpec = (advanced)=>buildSpec(this, advanced);
@@ -3170,7 +3797,7 @@ const lightTheme = ()=>{
3170
3797
  labelAutoHideGap: 4,
3171
3798
  labelAutoLimit: true,
3172
3799
  labelAutoLimitLength: 100,
3173
- labelAutoRotate: true,
3800
+ labelAutoRotate: false,
3174
3801
  labelAutoRotateAngleRange: [
3175
3802
  0,
3176
3803
  -45,
@@ -3220,6 +3847,20 @@ const lightTheme = ()=>{
3220
3847
  -90
3221
3848
  ]
3222
3849
  };
3850
+ const crosshairLine = {
3851
+ visible: true,
3852
+ labelVisible: true,
3853
+ lineColor: '#3641594d',
3854
+ labelColor: '#ffffff',
3855
+ labelBackgroundColor: '#364159'
3856
+ };
3857
+ const crosshairRect = {
3858
+ visible: true,
3859
+ labelVisible: true,
3860
+ rectColor: '#3641594d',
3861
+ labelColor: '#ffffff',
3862
+ labelBackgroundColor: '#364159'
3863
+ };
3223
3864
  return {
3224
3865
  baseConfig: {
3225
3866
  vtable: {
@@ -3262,39 +3903,84 @@ const lightTheme = ()=>{
3262
3903
  config: {
3263
3904
  line: {
3264
3905
  xAxis: bandAxis,
3265
- yAxis: linearAxis
3906
+ yAxis: linearAxis,
3907
+ crosshairLine
3266
3908
  },
3267
3909
  column: {
3268
3910
  xAxis: bandAxis,
3269
- yAxis: linearAxis
3911
+ yAxis: linearAxis,
3912
+ crosshairRect,
3913
+ stackCornerRadius: [
3914
+ 4,
3915
+ 4,
3916
+ 0,
3917
+ 0
3918
+ ]
3270
3919
  },
3271
3920
  columnParallel: {
3272
3921
  xAxis: bandAxis,
3273
- yAxis: linearAxis
3922
+ yAxis: linearAxis,
3923
+ crosshairRect,
3924
+ stackCornerRadius: [
3925
+ 4,
3926
+ 4,
3927
+ 0,
3928
+ 0
3929
+ ]
3274
3930
  },
3275
3931
  columnPercent: {
3276
3932
  xAxis: bandAxis,
3277
- yAxis: linearAxis
3933
+ yAxis: linearAxis,
3934
+ crosshairRect,
3935
+ stackCornerRadius: [
3936
+ 4,
3937
+ 4,
3938
+ 0,
3939
+ 0
3940
+ ]
3278
3941
  },
3279
3942
  bar: {
3280
3943
  xAxis: linearAxis,
3281
- yAxis: barBandAxis
3944
+ yAxis: barBandAxis,
3945
+ crosshairRect,
3946
+ stackCornerRadius: [
3947
+ 0,
3948
+ 4,
3949
+ 4,
3950
+ 0
3951
+ ]
3282
3952
  },
3283
3953
  barParallel: {
3284
3954
  xAxis: linearAxis,
3285
- yAxis: barBandAxis
3955
+ yAxis: barBandAxis,
3956
+ crosshairRect,
3957
+ stackCornerRadius: [
3958
+ 0,
3959
+ 4,
3960
+ 4,
3961
+ 0
3962
+ ]
3286
3963
  },
3287
3964
  barPercent: {
3288
3965
  xAxis: linearAxis,
3289
- yAxis: barBandAxis
3966
+ yAxis: barBandAxis,
3967
+ crosshairRect,
3968
+ stackCornerRadius: [
3969
+ 0,
3970
+ 4,
3971
+ 4,
3972
+ 0
3973
+ ]
3290
3974
  },
3291
3975
  area: {
3292
3976
  xAxis: bandAxis,
3293
- yAxis: linearAxis
3977
+ yAxis: linearAxis,
3978
+ crosshairLine
3294
3979
  },
3295
3980
  areaPercent: {
3296
3981
  xAxis: bandAxis,
3297
- yAxis: linearAxis
3982
+ yAxis: linearAxis,
3983
+ crosshairLine
3298
3984
  }
3299
3985
  }
3300
3986
  };
@@ -3339,7 +4025,7 @@ const darkTheme = ()=>{
3339
4025
  labelAutoHideGap: 4,
3340
4026
  labelAutoLimit: true,
3341
4027
  labelAutoLimitLength: 100,
3342
- labelAutoRotate: true,
4028
+ labelAutoRotate: false,
3343
4029
  labelAutoRotateAngleRange: [
3344
4030
  0,
3345
4031
  -45,
@@ -3376,6 +4062,33 @@ const darkTheme = ()=>{
3376
4062
  lineWidth: 1
3377
4063
  }
3378
4064
  };
4065
+ const barBandAxis = {
4066
+ ...bandAxis,
4067
+ labelAutoHide: false,
4068
+ labelAutoHideGap: 1,
4069
+ labelAutoLimit: false,
4070
+ labelAutoLimitLength: void 0,
4071
+ labelAutoRotate: false,
4072
+ labelAutoRotateAngleRange: [
4073
+ 0,
4074
+ -45,
4075
+ -90
4076
+ ]
4077
+ };
4078
+ const crosshairLine = {
4079
+ visible: true,
4080
+ labelVisible: true,
4081
+ lineColor: '#E2E3E6',
4082
+ labelColor: '#4B4F54',
4083
+ labelBackgroundColor: '#ffffff'
4084
+ };
4085
+ const crosshairRect = {
4086
+ visible: true,
4087
+ labelVisible: true,
4088
+ lineColor: '#E2E3E6',
4089
+ labelColor: '#4B4F54',
4090
+ labelBackgroundColor: '#ffffff'
4091
+ };
3379
4092
  return {
3380
4093
  baseConfig: {
3381
4094
  vtable: {
@@ -3418,45 +4131,94 @@ const darkTheme = ()=>{
3418
4131
  config: {
3419
4132
  line: {
3420
4133
  xAxis: bandAxis,
3421
- yAxis: linearAxis
4134
+ yAxis: linearAxis,
4135
+ crosshairLine: crosshairLine
3422
4136
  },
3423
4137
  column: {
3424
4138
  xAxis: bandAxis,
3425
- yAxis: linearAxis
4139
+ yAxis: linearAxis,
4140
+ crosshairRect: crosshairRect,
4141
+ stackCornerRadius: [
4142
+ 4,
4143
+ 4,
4144
+ 0,
4145
+ 0
4146
+ ]
3426
4147
  },
3427
4148
  columnParallel: {
3428
4149
  xAxis: bandAxis,
3429
- yAxis: linearAxis
4150
+ yAxis: linearAxis,
4151
+ crosshairRect: crosshairRect,
4152
+ stackCornerRadius: [
4153
+ 4,
4154
+ 4,
4155
+ 0,
4156
+ 0
4157
+ ]
3430
4158
  },
3431
4159
  columnPercent: {
3432
4160
  xAxis: bandAxis,
3433
- yAxis: linearAxis
4161
+ yAxis: linearAxis,
4162
+ crosshairRect: crosshairRect,
4163
+ stackCornerRadius: [
4164
+ 4,
4165
+ 4,
4166
+ 0,
4167
+ 0
4168
+ ]
3434
4169
  },
3435
4170
  bar: {
3436
4171
  xAxis: linearAxis,
3437
- yAxis: bandAxis
4172
+ yAxis: barBandAxis,
4173
+ crosshairRect: crosshairRect,
4174
+ stackCornerRadius: [
4175
+ 0,
4176
+ 4,
4177
+ 4,
4178
+ 0
4179
+ ]
3438
4180
  },
3439
4181
  barParallel: {
3440
4182
  xAxis: linearAxis,
3441
- yAxis: bandAxis
4183
+ yAxis: barBandAxis,
4184
+ crosshairRect: crosshairRect,
4185
+ stackCornerRadius: [
4186
+ 0,
4187
+ 4,
4188
+ 4,
4189
+ 0
4190
+ ]
3442
4191
  },
3443
4192
  barPercent: {
3444
4193
  xAxis: linearAxis,
3445
- yAxis: bandAxis
4194
+ yAxis: barBandAxis,
4195
+ crosshairRect: crosshairRect,
4196
+ stackCornerRadius: [
4197
+ 0,
4198
+ 4,
4199
+ 4,
4200
+ 0
4201
+ ]
3446
4202
  },
3447
4203
  area: {
3448
4204
  xAxis: bandAxis,
3449
- yAxis: linearAxis
4205
+ yAxis: linearAxis,
4206
+ crosshairLine: crosshairLine
3450
4207
  },
3451
4208
  areaPercent: {
3452
4209
  xAxis: bandAxis,
3453
- yAxis: linearAxis
4210
+ yAxis: linearAxis,
4211
+ crosshairLine: crosshairLine
3454
4212
  }
3455
4213
  }
3456
4214
  };
3457
4215
  };
3458
4216
  const registerCustomTheme = (key, themeConfig)=>{
3459
- Builder._themeMap[key] = themeConfig;
4217
+ const customTheme = 'function' == typeof themeConfig ? themeConfig({
4218
+ lightTheme: lightTheme(),
4219
+ darkTheme: darkTheme()
4220
+ }) : themeConfig;
4221
+ Builder._themeMap[key] = customTheme;
3460
4222
  };
3461
4223
  const registerLightTheme = ()=>{
3462
4224
  registerCustomTheme('light', lightTheme());
@@ -3509,29 +4271,30 @@ const zDimension = external_zod_namespaceObject.z.object({
3509
4271
  ])
3510
4272
  });
3511
4273
  const zDimensions = external_zod_namespaceObject.z.array(zDimension).optional();
4274
+ const zNumFormat = external_zod_namespaceObject.z.object({
4275
+ type: external_zod_namespaceObject.z["enum"]([
4276
+ 'number',
4277
+ 'percent',
4278
+ 'permille'
4279
+ ]).default('number').optional(),
4280
+ ratio: external_zod_namespaceObject.z.number().default(1).optional(),
4281
+ symbol: external_zod_namespaceObject.z.string().default('').optional(),
4282
+ thousandSeparator: external_zod_namespaceObject.z.boolean().default(false).optional(),
4283
+ decimalPlaces: external_zod_namespaceObject.z.number().default(2).optional(),
4284
+ round: external_zod_namespaceObject.z["enum"]([
4285
+ 'round',
4286
+ 'floor',
4287
+ 'ceil'
4288
+ ]).default('round').optional(),
4289
+ prefix: external_zod_namespaceObject.z.string().default('').optional(),
4290
+ suffix: external_zod_namespaceObject.z.string().default('').optional()
4291
+ }).optional();
3512
4292
  const zMeasure = external_zod_namespaceObject.z.object({
3513
4293
  id: external_zod_namespaceObject.z.string(),
3514
4294
  alias: external_zod_namespaceObject.z.string().optional(),
3515
4295
  visible: external_zod_namespaceObject.z.boolean().default(true).optional(),
3516
4296
  autoFormat: external_zod_namespaceObject.z.boolean().default(true).optional(),
3517
- format: external_zod_namespaceObject.z.object({
3518
- type: external_zod_namespaceObject.z["enum"]([
3519
- 'number',
3520
- 'percent',
3521
- 'permille'
3522
- ]).optional().default('number'),
3523
- ratio: external_zod_namespaceObject.z.number().optional().default(1),
3524
- symbol: external_zod_namespaceObject.z.string().optional().default(''),
3525
- thousandSeparator: external_zod_namespaceObject.z.boolean().optional().default(false),
3526
- decimalPlaces: external_zod_namespaceObject.z.number().optional().default(2),
3527
- round: external_zod_namespaceObject.z["enum"]([
3528
- 'round',
3529
- 'floor',
3530
- 'ceil'
3531
- ]).optional().default('round'),
3532
- prefix: external_zod_namespaceObject.z.string().optional().default(''),
3533
- suffix: external_zod_namespaceObject.z.string().optional().default('')
3534
- }).optional()
4297
+ format: zNumFormat["default"]({}).optional()
3535
4298
  });
3536
4299
  const zMeasureGroup = external_zod_namespaceObject.z.object({
3537
4300
  id: external_zod_namespaceObject.z.string(),
@@ -3776,42 +4539,77 @@ const zXLinearAxis = external_zod_namespaceObject.z.object({
3776
4539
  }).optional()
3777
4540
  });
3778
4541
  const zYLinearAxis = zXLinearAxis;
4542
+ const zCrosshairLine = external_zod_namespaceObject.z.object({
4543
+ visible: external_zod_namespaceObject.z.boolean().optional(),
4544
+ lineColor: external_zod_namespaceObject.z.string().optional(),
4545
+ labelColor: external_zod_namespaceObject.z.string().optional(),
4546
+ labelVisible: external_zod_namespaceObject.z.boolean().optional(),
4547
+ labelBackgroundColor: external_zod_namespaceObject.z.string().optional()
4548
+ });
4549
+ const zCrosshairRect = external_zod_namespaceObject.z.object({
4550
+ visible: external_zod_namespaceObject.z.boolean().optional(),
4551
+ rectColor: external_zod_namespaceObject.z.string().optional(),
4552
+ labelColor: external_zod_namespaceObject.z.string().optional(),
4553
+ labelVisible: external_zod_namespaceObject.z.boolean().optional(),
4554
+ labelBackgroundColor: external_zod_namespaceObject.z.string().optional()
4555
+ });
4556
+ const zStackCornerRadius = external_zod_namespaceObject.z.number().or(external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.number())).default([
4557
+ 3,
4558
+ 3,
4559
+ 0,
4560
+ 0
4561
+ ]);
3779
4562
  const zConfig = external_zod_namespaceObject.z.object({
3780
4563
  line: external_zod_namespaceObject.z.object({
3781
- xAxis: zXBandAxis,
3782
- yAxis: zYLinearAxis
4564
+ xAxis: zXBandAxis.optional(),
4565
+ yAxis: zYLinearAxis.optional(),
4566
+ crosshairLine: zCrosshairLine.optional()
3783
4567
  }).optional(),
3784
4568
  column: external_zod_namespaceObject.z.object({
3785
- xAxis: zXBandAxis,
3786
- yAxis: zYLinearAxis
4569
+ xAxis: zXBandAxis.optional(),
4570
+ yAxis: zYLinearAxis.optional(),
4571
+ crosshairRect: zCrosshairRect.optional(),
4572
+ stackCornerRadius: zStackCornerRadius.optional()
3787
4573
  }).optional(),
3788
4574
  columnParallel: external_zod_namespaceObject.z.object({
3789
- xAxis: zXBandAxis,
3790
- yAxis: zYLinearAxis
4575
+ xAxis: zXBandAxis.optional(),
4576
+ yAxis: zYLinearAxis.optional(),
4577
+ crosshairRect: zCrosshairRect.optional(),
4578
+ stackCornerRadius: zStackCornerRadius.optional()
3791
4579
  }).optional(),
3792
4580
  columnPercent: external_zod_namespaceObject.z.object({
3793
- xAxis: zXBandAxis,
3794
- yAxis: zYLinearAxis
4581
+ xAxis: zXBandAxis.optional(),
4582
+ yAxis: zYLinearAxis.optional(),
4583
+ crosshairRect: zCrosshairRect.optional(),
4584
+ stackCornerRadius: zStackCornerRadius.optional()
3795
4585
  }).optional(),
3796
4586
  bar: external_zod_namespaceObject.z.object({
3797
- xAxis: zXLinearAxis,
3798
- yAxis: zYBandAxis
4587
+ xAxis: zXLinearAxis.optional(),
4588
+ yAxis: zYBandAxis.optional(),
4589
+ crosshairRect: zCrosshairRect.optional(),
4590
+ stackCornerRadius: zStackCornerRadius.optional()
3799
4591
  }).optional(),
3800
4592
  barParallel: external_zod_namespaceObject.z.object({
3801
- xAxis: zXLinearAxis,
3802
- yAxis: zYBandAxis
4593
+ xAxis: zXLinearAxis.optional(),
4594
+ yAxis: zYBandAxis.optional(),
4595
+ crosshairRect: zCrosshairRect.optional(),
4596
+ stackCornerRadius: zStackCornerRadius.optional()
3803
4597
  }).optional(),
3804
4598
  barPercent: external_zod_namespaceObject.z.object({
3805
- xAxis: zXLinearAxis,
3806
- yAxis: zYBandAxis
4599
+ xAxis: zXLinearAxis.optional(),
4600
+ yAxis: zYBandAxis.optional(),
4601
+ crosshairRect: zCrosshairRect.optional(),
4602
+ stackCornerRadius: zStackCornerRadius.optional()
3807
4603
  }).optional(),
3808
4604
  area: external_zod_namespaceObject.z.object({
3809
- xAxis: zXBandAxis,
3810
- yAxis: zYLinearAxis
4605
+ xAxis: zXBandAxis.optional(),
4606
+ yAxis: zYLinearAxis.optional(),
4607
+ crosshairLine: zCrosshairLine.optional()
3811
4608
  }).optional(),
3812
4609
  areaPercent: external_zod_namespaceObject.z.object({
3813
- xAxis: zXBandAxis,
3814
- yAxis: zYLinearAxis
4610
+ xAxis: zXBandAxis.optional(),
4611
+ yAxis: zYLinearAxis.optional(),
4612
+ crosshairLine: zCrosshairLine.optional()
3815
4613
  }).optional(),
3816
4614
  pie: external_zod_namespaceObject.z.object({}).optional(),
3817
4615
  donut: external_zod_namespaceObject.z.object({}).optional(),
@@ -3820,12 +4618,6 @@ const zConfig = external_zod_namespaceObject.z.object({
3820
4618
  table: external_zod_namespaceObject.z.object({}).optional(),
3821
4619
  pivotTable: external_zod_namespaceObject.z.object({}).optional()
3822
4620
  });
3823
- const zCustomThemeConfig = external_zod_namespaceObject.z.object({
3824
- baseConfig: zBaseConfig.optional(),
3825
- config: zConfig.optional()
3826
- });
3827
- const zCustomTheme = external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), zCustomThemeConfig).optional();
3828
- const zTheme = external_zod_namespaceObject.z.string();
3829
4621
  const zSelector = external_zod_namespaceObject.z.union([
3830
4622
  external_zod_namespaceObject.z.string(),
3831
4623
  external_zod_namespaceObject.z.number(),
@@ -3881,28 +4673,6 @@ const zSelector = external_zod_namespaceObject.z.union([
3881
4673
  })
3882
4674
  ]);
3883
4675
  const zSelectors = external_zod_namespaceObject.z.array(zSelector);
3884
- const zBarStyle = external_zod_namespaceObject.z.object({
3885
- selector: external_zod_namespaceObject.z.union([
3886
- zSelector,
3887
- zSelectors
3888
- ]).optional(),
3889
- barColor: external_zod_namespaceObject.z.string().optional(),
3890
- barColorOpacity: external_zod_namespaceObject.z.number().optional(),
3891
- barBorderColor: external_zod_namespaceObject.z.string().optional(),
3892
- barBorderWidth: external_zod_namespaceObject.z.number().optional(),
3893
- barBorderStyle: external_zod_namespaceObject.z.union([
3894
- external_zod_namespaceObject.z.literal('solid'),
3895
- external_zod_namespaceObject.z.literal('dashed'),
3896
- external_zod_namespaceObject.z.literal('dotted')
3897
- ]).optional(),
3898
- barRadius: external_zod_namespaceObject.z.union([
3899
- external_zod_namespaceObject.z.number(),
3900
- external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.number())
3901
- ]).optional()
3902
- });
3903
- const zMarkStyle = external_zod_namespaceObject.z.object({
3904
- barStyle: zBarStyle.optional()
3905
- });
3906
4676
  const zAnnotationPoint = external_zod_namespaceObject.z.object({
3907
4677
  selector: external_zod_namespaceObject.z.union([
3908
4678
  zSelector,
@@ -4083,6 +4853,82 @@ const zAnnotation = external_zod_namespaceObject.z.object({
4083
4853
  annotationHorizontalLine: zAnnotationHorizontalLine.or(external_zod_namespaceObject.z.array(zAnnotationHorizontalLine)).optional(),
4084
4854
  annotationArea: zAnnotationArea.or(external_zod_namespaceObject.z.array(zAnnotationArea)).optional()
4085
4855
  });
4856
+ const zBarStyle = external_zod_namespaceObject.z.object({
4857
+ selector: external_zod_namespaceObject.z.union([
4858
+ zSelector,
4859
+ zSelectors
4860
+ ]).optional(),
4861
+ barColor: external_zod_namespaceObject.z.string().optional(),
4862
+ barColorOpacity: external_zod_namespaceObject.z.number().optional(),
4863
+ barBorderColor: external_zod_namespaceObject.z.string().optional(),
4864
+ barBorderWidth: external_zod_namespaceObject.z.number().optional(),
4865
+ barBorderStyle: external_zod_namespaceObject.z.union([
4866
+ external_zod_namespaceObject.z.literal('solid'),
4867
+ external_zod_namespaceObject.z.literal('dashed'),
4868
+ external_zod_namespaceObject.z.literal('dotted')
4869
+ ]).optional(),
4870
+ barRadius: external_zod_namespaceObject.z.union([
4871
+ external_zod_namespaceObject.z.number(),
4872
+ external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.number())
4873
+ ]).optional()
4874
+ });
4875
+ const zPointStyle = external_zod_namespaceObject.z.object({
4876
+ selector: external_zod_namespaceObject.z.union([
4877
+ zSelector,
4878
+ zSelectors
4879
+ ]).optional(),
4880
+ pointSize: external_zod_namespaceObject.z.number().optional(),
4881
+ pointColor: external_zod_namespaceObject.z.string().optional(),
4882
+ pointColorOpacity: external_zod_namespaceObject.z.number().optional(),
4883
+ pointBorderColor: external_zod_namespaceObject.z.string().optional(),
4884
+ pointBorderWidth: external_zod_namespaceObject.z.number().optional(),
4885
+ pointBorderStyle: external_zod_namespaceObject.z.union([
4886
+ external_zod_namespaceObject.z["enum"]([
4887
+ 'solid',
4888
+ 'dashed',
4889
+ 'dotted'
4890
+ ])
4891
+ ]).optional()
4892
+ });
4893
+ const zLineStyle = external_zod_namespaceObject.z.object({
4894
+ selector: external_zod_namespaceObject.z.union([
4895
+ zSelector,
4896
+ zSelectors
4897
+ ]).optional(),
4898
+ lineSmooth: external_zod_namespaceObject.z.boolean().default(true).optional(),
4899
+ lineColor: external_zod_namespaceObject.z.string().optional(),
4900
+ lineColorOpacity: external_zod_namespaceObject.z.number().optional(),
4901
+ lineWidth: external_zod_namespaceObject.z.number().optional(),
4902
+ lineStyle: external_zod_namespaceObject.z.union([
4903
+ external_zod_namespaceObject.z["enum"]([
4904
+ 'solid',
4905
+ 'dashed',
4906
+ 'dotted'
4907
+ ])
4908
+ ]).optional()
4909
+ });
4910
+ const zAreaStyle = external_zod_namespaceObject.z.object({
4911
+ selector: external_zod_namespaceObject.z.union([
4912
+ zSelector,
4913
+ zSelectors
4914
+ ]).optional(),
4915
+ areaColor: external_zod_namespaceObject.z.string().optional(),
4916
+ areaColorOpacity: external_zod_namespaceObject.z.number().optional()
4917
+ });
4918
+ const zMarkStyle = external_zod_namespaceObject.z.object({
4919
+ barStyle: zBarStyle.or(external_zod_namespaceObject.z.array(zBarStyle)).optional(),
4920
+ pointStyle: zPointStyle.or(external_zod_namespaceObject.z.array(zPointStyle)).optional(),
4921
+ lineStyle: zLineStyle.or(external_zod_namespaceObject.z.array(zLineStyle)).optional(),
4922
+ areaStyle: zAreaStyle.or(external_zod_namespaceObject.z.array(zAreaStyle)).optional()
4923
+ });
4924
+ const zCustomThemeConfig = external_zod_namespaceObject.z.object({
4925
+ baseConfig: zBaseConfig.optional(),
4926
+ config: zConfig.optional(),
4927
+ annotation: zAnnotation.optional(),
4928
+ markStyle: zMarkStyle.optional()
4929
+ });
4930
+ const zCustomTheme = external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), zCustomThemeConfig).optional();
4931
+ const zTheme = external_zod_namespaceObject.z.string();
4086
4932
  exports.Builder = __webpack_exports__.Builder;
4087
4933
  exports.FoldMeasureId = __webpack_exports__.FoldMeasureId;
4088
4934
  exports.FoldMeasureName = __webpack_exports__.FoldMeasureName;
@@ -4094,6 +4940,8 @@ exports.areaAdvancedPipeline = __webpack_exports__.areaAdvancedPipeline;
4094
4940
  exports.areaPercentAdvancedPipeline = __webpack_exports__.areaPercentAdvancedPipeline;
4095
4941
  exports.areaPercentSpecPipeline = __webpack_exports__.areaPercentSpecPipeline;
4096
4942
  exports.areaSpecPipeline = __webpack_exports__.areaSpecPipeline;
4943
+ exports.autoFormatter = __webpack_exports__.autoFormatter;
4944
+ exports.autoNumFormatter = __webpack_exports__.autoNumFormatter;
4097
4945
  exports.barAdvancedPipeline = __webpack_exports__.barAdvancedPipeline;
4098
4946
  exports.barParallelAdvancedPipeline = __webpack_exports__.barParallelAdvancedPipeline;
4099
4947
  exports.barParallelSpecPipeline = __webpack_exports__.barParallelSpecPipeline;
@@ -4106,11 +4954,16 @@ exports.columnParallelSpecPipeline = __webpack_exports__.columnParallelSpecPipel
4106
4954
  exports.columnPercentAdvancedPipeline = __webpack_exports__.columnPercentAdvancedPipeline;
4107
4955
  exports.columnPercentSpecPipeline = __webpack_exports__.columnPercentSpecPipeline;
4108
4956
  exports.columnSpecPipeline = __webpack_exports__.columnSpecPipeline;
4957
+ exports.createFormatter = __webpack_exports__.createFormatter;
4958
+ exports.createNumFormatter = __webpack_exports__.createNumFormatter;
4109
4959
  exports.darkTheme = __webpack_exports__.darkTheme;
4110
4960
  exports.dataReshapeFor1D1M = __webpack_exports__.dataReshapeFor1D1M;
4111
4961
  exports.dataReshapeFor2D1M = __webpack_exports__.dataReshapeFor2D1M;
4112
4962
  exports.execPipeline = __webpack_exports__.execPipeline;
4963
+ exports.findMeasureById = __webpack_exports__.findMeasureById;
4113
4964
  exports.foldMeasures = __webpack_exports__.foldMeasures;
4965
+ exports.i18n = __webpack_exports__.i18n;
4966
+ exports.intl = __webpack_exports__.intl;
4114
4967
  exports.isPivotChart = __webpack_exports__.isPivotChart;
4115
4968
  exports.isVChart = __webpack_exports__.isVChart;
4116
4969
  exports.isVTable = __webpack_exports__.isVTable;
@@ -4138,6 +4991,7 @@ exports.zAnnotationArea = __webpack_exports__.zAnnotationArea;
4138
4991
  exports.zAnnotationHorizontalLine = __webpack_exports__.zAnnotationHorizontalLine;
4139
4992
  exports.zAnnotationPoint = __webpack_exports__.zAnnotationPoint;
4140
4993
  exports.zAnnotationVerticalLine = __webpack_exports__.zAnnotationVerticalLine;
4994
+ exports.zAreaStyle = __webpack_exports__.zAreaStyle;
4141
4995
  exports.zAxis = __webpack_exports__.zAxis;
4142
4996
  exports.zBackgroundColor = __webpack_exports__.zBackgroundColor;
4143
4997
  exports.zBarStyle = __webpack_exports__.zBarStyle;
@@ -4145,6 +4999,8 @@ exports.zBaseConfig = __webpack_exports__.zBaseConfig;
4145
4999
  exports.zChartType = __webpack_exports__.zChartType;
4146
5000
  exports.zColor = __webpack_exports__.zColor;
4147
5001
  exports.zConfig = __webpack_exports__.zConfig;
5002
+ exports.zCrosshairLine = __webpack_exports__.zCrosshairLine;
5003
+ exports.zCrosshairRect = __webpack_exports__.zCrosshairRect;
4148
5004
  exports.zCustomTheme = __webpack_exports__.zCustomTheme;
4149
5005
  exports.zCustomThemeConfig = __webpack_exports__.zCustomThemeConfig;
4150
5006
  exports.zDataset = __webpack_exports__.zDataset;
@@ -4156,10 +5012,14 @@ exports.zEncoding = __webpack_exports__.zEncoding;
4156
5012
  exports.zFoldInfo = __webpack_exports__.zFoldInfo;
4157
5013
  exports.zLabel = __webpack_exports__.zLabel;
4158
5014
  exports.zLegend = __webpack_exports__.zLegend;
5015
+ exports.zLineStyle = __webpack_exports__.zLineStyle;
4159
5016
  exports.zMarkStyle = __webpack_exports__.zMarkStyle;
4160
5017
  exports.zMeasure = __webpack_exports__.zMeasure;
4161
5018
  exports.zMeasureGroup = __webpack_exports__.zMeasureGroup;
4162
5019
  exports.zMeasures = __webpack_exports__.zMeasures;
5020
+ exports.zNumFormat = __webpack_exports__.zNumFormat;
5021
+ exports.zPointStyle = __webpack_exports__.zPointStyle;
5022
+ exports.zStackCornerRadius = __webpack_exports__.zStackCornerRadius;
4163
5023
  exports.zTheme = __webpack_exports__.zTheme;
4164
5024
  exports.zTooltip = __webpack_exports__.zTooltip;
4165
5025
  exports.zUnfoldInfo = __webpack_exports__.zUnfoldInfo;
@@ -4179,6 +5039,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
4179
5039
  "areaPercentAdvancedPipeline",
4180
5040
  "areaPercentSpecPipeline",
4181
5041
  "areaSpecPipeline",
5042
+ "autoFormatter",
5043
+ "autoNumFormatter",
4182
5044
  "barAdvancedPipeline",
4183
5045
  "barParallelAdvancedPipeline",
4184
5046
  "barParallelSpecPipeline",
@@ -4191,11 +5053,16 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
4191
5053
  "columnPercentAdvancedPipeline",
4192
5054
  "columnPercentSpecPipeline",
4193
5055
  "columnSpecPipeline",
5056
+ "createFormatter",
5057
+ "createNumFormatter",
4194
5058
  "darkTheme",
4195
5059
  "dataReshapeFor1D1M",
4196
5060
  "dataReshapeFor2D1M",
4197
5061
  "execPipeline",
5062
+ "findMeasureById",
4198
5063
  "foldMeasures",
5064
+ "i18n",
5065
+ "intl",
4199
5066
  "isPivotChart",
4200
5067
  "isVChart",
4201
5068
  "isVTable",
@@ -4223,6 +5090,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
4223
5090
  "zAnnotationHorizontalLine",
4224
5091
  "zAnnotationPoint",
4225
5092
  "zAnnotationVerticalLine",
5093
+ "zAreaStyle",
4226
5094
  "zAxis",
4227
5095
  "zBackgroundColor",
4228
5096
  "zBarStyle",
@@ -4230,6 +5098,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
4230
5098
  "zChartType",
4231
5099
  "zColor",
4232
5100
  "zConfig",
5101
+ "zCrosshairLine",
5102
+ "zCrosshairRect",
4233
5103
  "zCustomTheme",
4234
5104
  "zCustomThemeConfig",
4235
5105
  "zDataset",
@@ -4241,10 +5111,14 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
4241
5111
  "zFoldInfo",
4242
5112
  "zLabel",
4243
5113
  "zLegend",
5114
+ "zLineStyle",
4244
5115
  "zMarkStyle",
4245
5116
  "zMeasure",
4246
5117
  "zMeasureGroup",
4247
5118
  "zMeasures",
5119
+ "zNumFormat",
5120
+ "zPointStyle",
5121
+ "zStackCornerRadius",
4248
5122
  "zTheme",
4249
5123
  "zTooltip",
4250
5124
  "zUnfoldInfo",