@visactor/vseed 0.0.3 → 0.0.5

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 (113) hide show
  1. package/dist/builder/builder/buildAdvanced.d.ts +1 -1
  2. package/dist/builder/builder/buildSpec.d.ts +1 -1
  3. package/dist/builder/builder/builder.d.ts +387 -7
  4. package/dist/builder/register/all.d.ts +1 -0
  5. package/dist/builder/register/index.d.ts +3 -1
  6. package/dist/builder/register/theme.d.ts +4 -0
  7. package/dist/dataReshape/dataReshapeFor1D1M.d.ts +1 -1
  8. package/dist/dataReshape/dataReshapeFor2D1M.d.ts +1 -1
  9. package/dist/dataReshape/foldMeasures.d.ts +2 -2
  10. package/dist/dataReshape/unfoldDimensions.d.ts +2 -2
  11. package/dist/index.cjs +691 -265
  12. package/dist/index.cjs.map +1 -0
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.js +446 -80
  15. package/dist/index.js.map +1 -0
  16. package/dist/pipeline/advanced/pipeline/area.d.ts +1 -1
  17. package/dist/pipeline/advanced/pipeline/areaPercent.d.ts +1 -1
  18. package/dist/pipeline/advanced/pipeline/bar.d.ts +1 -1
  19. package/dist/pipeline/advanced/pipeline/barParallel.d.ts +1 -1
  20. package/dist/pipeline/advanced/pipeline/barPercent.d.ts +1 -1
  21. package/dist/pipeline/advanced/pipeline/column.d.ts +1 -1
  22. package/dist/pipeline/advanced/pipeline/columnParallel.d.ts +1 -1
  23. package/dist/pipeline/advanced/pipeline/columnPercent.d.ts +1 -1
  24. package/dist/pipeline/advanced/pipeline/line.d.ts +1 -1
  25. package/dist/pipeline/advanced/pipes/baseConfig/baseConfig.d.ts +3 -0
  26. package/dist/pipeline/advanced/pipes/baseConfig/index.d.ts +1 -0
  27. package/dist/pipeline/advanced/pipes/encoding/encodingCartesian.d.ts +1 -1
  28. package/dist/pipeline/advanced/pipes/index.d.ts +2 -0
  29. package/dist/pipeline/advanced/pipes/init/autoDimensions.d.ts +2 -0
  30. package/dist/pipeline/advanced/pipes/init/autoMeasures.d.ts +2 -0
  31. package/dist/pipeline/advanced/pipes/init/index.d.ts +2 -0
  32. package/dist/pipeline/advanced/pipes/init/initAdvancedVSeed.d.ts +1 -1
  33. package/dist/pipeline/advanced/pipes/init/utils.d.ts +1 -0
  34. package/dist/pipeline/advanced/pipes/reshape/reshapeTo1D1M.d.ts +1 -1
  35. package/dist/pipeline/advanced/pipes/reshape/reshapeTo2D1M.d.ts +1 -1
  36. package/dist/pipeline/advanced/pipes/theme/index.d.ts +1 -0
  37. package/dist/pipeline/advanced/pipes/theme/theme.d.ts +3 -0
  38. package/dist/pipeline/spec/pipeline/area.d.ts +1 -1
  39. package/dist/pipeline/spec/pipeline/areaPercent.d.ts +1 -1
  40. package/dist/pipeline/spec/pipeline/bar.d.ts +1 -1
  41. package/dist/pipeline/spec/pipeline/barParallel.d.ts +1 -1
  42. package/dist/pipeline/spec/pipeline/barPercent.d.ts +1 -1
  43. package/dist/pipeline/spec/pipeline/column.d.ts +1 -1
  44. package/dist/pipeline/spec/pipeline/columnParallel.d.ts +1 -1
  45. package/dist/pipeline/spec/pipeline/columnPercent.d.ts +1 -1
  46. package/dist/pipeline/spec/pipeline/line.d.ts +1 -1
  47. package/dist/pipeline/spec/pipes/axes/xBand.d.ts +1 -1
  48. package/dist/pipeline/spec/pipes/axes/xLinear.d.ts +1 -1
  49. package/dist/pipeline/spec/pipes/axes/yBand.d.ts +1 -1
  50. package/dist/pipeline/spec/pipes/axes/yLinear.d.ts +1 -1
  51. package/dist/pipeline/spec/pipes/backgroundColor/background.d.ts +2 -0
  52. package/dist/pipeline/spec/pipes/backgroundColor/index.d.ts +1 -0
  53. package/dist/pipeline/spec/pipes/color/color.d.ts +2 -0
  54. package/dist/pipeline/spec/pipes/color/index.d.ts +1 -0
  55. package/dist/pipeline/spec/pipes/dataset/dataset.d.ts +1 -1
  56. package/dist/pipeline/spec/pipes/index.d.ts +5 -0
  57. package/dist/pipeline/spec/pipes/init/area.d.ts +1 -1
  58. package/dist/pipeline/spec/pipes/init/bar.d.ts +1 -1
  59. package/dist/pipeline/spec/pipes/init/barParallel.d.ts +1 -1
  60. package/dist/pipeline/spec/pipes/init/column.d.ts +1 -1
  61. package/dist/pipeline/spec/pipes/init/columnParallel.d.ts +1 -1
  62. package/dist/pipeline/spec/pipes/init/line.d.ts +1 -1
  63. package/dist/pipeline/spec/pipes/label/index.d.ts +1 -0
  64. package/dist/pipeline/spec/pipes/label/label.d.ts +2 -0
  65. package/dist/pipeline/spec/pipes/legend/index.d.ts +1 -0
  66. package/dist/pipeline/spec/pipes/legend/legend.d.ts +2 -0
  67. package/dist/pipeline/spec/pipes/percent/percent.d.ts +1 -1
  68. package/dist/pipeline/spec/pipes/stack/stack.d.ts +1 -1
  69. package/dist/pipeline/spec/pipes/tooltip/index.d.ts +1 -0
  70. package/dist/pipeline/spec/pipes/tooltip/tooltip.d.ts +2 -0
  71. package/dist/pipeline/utils/chatType.d.ts +3 -0
  72. package/dist/pipeline/utils/index.d.ts +1 -0
  73. package/dist/pipeline/utils/pipeline.d.ts +1 -1
  74. package/dist/theme/dark.d.ts +2 -0
  75. package/dist/theme/index.d.ts +2 -0
  76. package/dist/theme/light.d.ts +2 -0
  77. package/dist/types/{properties/advancedVSeed.d.ts → advancedVSeed.d.ts} +53 -8
  78. package/dist/types/builder/builder.d.ts +10 -3
  79. package/dist/types/chartType/area/area.d.ts +38 -3
  80. package/dist/types/chartType/areaPercent/areaPercent.d.ts +38 -3
  81. package/dist/types/chartType/bar/bar.d.ts +38 -3
  82. package/dist/types/chartType/barParallel/barParallel.d.ts +38 -3
  83. package/dist/types/chartType/barPercent/barPercent.d.ts +38 -3
  84. package/dist/types/chartType/column/column.d.ts +38 -3
  85. package/dist/types/chartType/columnParallel/columnParallel.d.ts +38 -3
  86. package/dist/types/chartType/columnPercent/columnPercent.d.ts +38 -3
  87. package/dist/types/chartType/donut/donut.d.ts +38 -3
  88. package/dist/types/chartType/dualAxis/dualAxis.d.ts +38 -3
  89. package/dist/types/chartType/index.d.ts +1 -1
  90. package/dist/types/chartType/line/line.d.ts +38 -3
  91. package/dist/types/chartType/pie/pie.d.ts +38 -3
  92. package/dist/types/chartType/pivotTable/pivotTable.d.ts +18 -3
  93. package/dist/types/chartType/rose/rose.d.ts +38 -3
  94. package/dist/types/chartType/table/table.d.ts +18 -3
  95. package/dist/types/index.d.ts +2 -0
  96. package/dist/types/pipeline/advancedVSeed/advancedVSeed.d.ts +4 -1
  97. package/dist/types/pipeline/spec/spec.d.ts +2 -1
  98. package/dist/types/properties/baseConfig/backgroundColor.d.ts +8 -0
  99. package/dist/types/properties/baseConfig/baseConfig.d.ts +44 -0
  100. package/dist/types/properties/baseConfig/color.d.ts +23 -0
  101. package/dist/types/properties/baseConfig/index.d.ts +12 -0
  102. package/dist/types/properties/baseConfig/label.d.ts +11 -0
  103. package/dist/types/properties/baseConfig/legend.d.ts +11 -0
  104. package/dist/types/properties/baseConfig/tooltip.d.ts +11 -0
  105. package/dist/types/properties/chartType/zChartType.d.ts +8 -8
  106. package/dist/types/properties/index.d.ts +2 -2
  107. package/dist/types/properties/theme/customTheme.d.ts +49 -0
  108. package/dist/types/properties/theme/index.d.ts +4 -0
  109. package/dist/types/properties/theme/theme.d.ts +15 -0
  110. package/dist/types/{properties/vseed.d.ts → vseed.d.ts} +25 -18
  111. package/package.json +2 -1
  112. package/dist/types/chartType/vseedDSL.d.ts +0 -16
  113. /package/dist/builder/register/{register.d.ts → chartType.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { clone as external_remeda_clone, mergeDeep as external_remeda_mergeDeep, pick as external_remeda_pick } from "remeda";
1
2
  import { z } from "zod";
2
3
  const FoldMeasureName = '__MeaName__';
3
4
  const FoldMeasureValue = '__MeaValue__';
@@ -180,7 +181,8 @@ const reshapeTo2D1M = (advancedVSeed, context)=>{
180
181
  ...advancedVSeed
181
182
  };
182
183
  const { vseed } = context;
183
- const { dimensions, measures, dataset } = vseed;
184
+ const { dataset } = vseed;
185
+ const { dimensions, measures } = advancedVSeed;
184
186
  if (!measures || !dimensions || !dataset) return result;
185
187
  if (0 === measures.length) throw new Error('measures can not be empty');
186
188
  const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
@@ -263,55 +265,183 @@ const encodingYX = (advancedVSeed)=>{
263
265
  };
264
266
  const initAdvancedVSeed = (advancedVSeed, context)=>{
265
267
  const { vseed } = context;
268
+ const { chartType = 'table' } = vseed;
266
269
  return {
267
270
  ...advancedVSeed,
268
- chartType: vseed.chartType
271
+ chartType
269
272
  };
270
273
  };
274
+ const autoMeasures = (advancedVSeed, context)=>{
275
+ const result = {
276
+ ...advancedVSeed
277
+ };
278
+ const { vseed } = context;
279
+ const { measures, dataset } = vseed;
280
+ if (!dataset) throw new Error('dataset is required');
281
+ if (0 === dataset.length) return result;
282
+ if (measures) {
283
+ result.measures = measures;
284
+ return result;
285
+ }
286
+ const top100dataset = dataset.slice(0, 100);
287
+ const sample = top100dataset.reduce((prev, cur)=>({
288
+ ...prev,
289
+ ...cur
290
+ }), {});
291
+ result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
292
+ '',
293
+ null,
294
+ void 0
295
+ ].includes(key)).map((measure)=>({
296
+ id: measure,
297
+ alias: measure
298
+ }));
299
+ return result;
300
+ };
301
+ const autoDimensions = (advancedVSeed, context)=>{
302
+ const result = {
303
+ ...advancedVSeed
304
+ };
305
+ const { vseed } = context;
306
+ const { dimensions, dataset } = vseed;
307
+ const { measures = [] } = advancedVSeed;
308
+ if (!dataset) throw new Error('dataset is required');
309
+ if (0 === dataset.length) return result;
310
+ if (dimensions) {
311
+ result.dimensions = dimensions;
312
+ return result;
313
+ }
314
+ const top100dataset = dataset.slice(0, 100);
315
+ const sample = top100dataset.reduce((prev, cur)=>({
316
+ ...prev,
317
+ ...cur
318
+ }), {});
319
+ result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
320
+ '',
321
+ null,
322
+ void 0
323
+ ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
324
+ id: dim,
325
+ alias: dim,
326
+ location: 'dimension'
327
+ }));
328
+ return result;
329
+ };
330
+ const vchartBaseConfig = (advancedVSeed, context)=>{
331
+ const { vseed } = context;
332
+ const result = {
333
+ ...advancedVSeed
334
+ };
335
+ const config = external_remeda_pick(vseed, [
336
+ 'backgroundColor',
337
+ 'color',
338
+ 'label',
339
+ 'legend',
340
+ 'tooltip'
341
+ ]);
342
+ result.baseConfig = {
343
+ vchart: {
344
+ ...config
345
+ }
346
+ };
347
+ return result;
348
+ };
349
+ const vchartTheme = (advancedVSeed, context)=>{
350
+ const { customTheme, vseed } = context;
351
+ const { theme = 'light' } = vseed;
352
+ const result = {
353
+ ...advancedVSeed
354
+ };
355
+ if (!customTheme || !customTheme[theme]) return result;
356
+ const config = result.baseConfig?.vchart;
357
+ const themeConfig = customTheme?.[theme].baseConfig?.vchart;
358
+ if (!themeConfig || !config) return result;
359
+ const mergedConfig = external_remeda_mergeDeep(themeConfig, external_remeda_clone(config));
360
+ result.baseConfig = {
361
+ vchart: mergedConfig
362
+ };
363
+ return result;
364
+ };
271
365
  const lineAdvancedPipeline = [
272
366
  initAdvancedVSeed,
367
+ autoMeasures,
368
+ autoDimensions,
273
369
  reshapeTo2D1M,
274
- encodingXY
370
+ encodingXY,
371
+ vchartBaseConfig,
372
+ vchartTheme
275
373
  ];
276
374
  const barAdvancedPipeline = [
277
375
  initAdvancedVSeed,
376
+ autoMeasures,
377
+ autoDimensions,
278
378
  reshapeTo2D1M,
279
- encodingYX
379
+ encodingYX,
380
+ vchartBaseConfig,
381
+ vchartTheme
280
382
  ];
281
383
  const barParallelAdvancedPipeline = [
282
384
  initAdvancedVSeed,
385
+ autoMeasures,
386
+ autoDimensions,
283
387
  reshapeTo2D1M,
284
- encodingYX
388
+ encodingYX,
389
+ vchartBaseConfig,
390
+ vchartTheme
285
391
  ];
286
392
  const barPercentAdvancedPipeline = [
287
393
  initAdvancedVSeed,
394
+ autoMeasures,
395
+ autoDimensions,
288
396
  reshapeTo2D1M,
289
- encodingYX
397
+ encodingYX,
398
+ vchartBaseConfig,
399
+ vchartTheme
290
400
  ];
291
401
  const columnAdvancedPipeline = [
292
402
  initAdvancedVSeed,
403
+ autoMeasures,
404
+ autoDimensions,
293
405
  reshapeTo2D1M,
294
- encodingXY
406
+ encodingXY,
407
+ vchartBaseConfig,
408
+ vchartTheme
295
409
  ];
296
410
  const columnParallelAdvancedPipeline = [
297
411
  initAdvancedVSeed,
412
+ autoMeasures,
413
+ autoDimensions,
298
414
  reshapeTo2D1M,
299
- encodingXY
415
+ encodingXY,
416
+ vchartBaseConfig,
417
+ vchartTheme
300
418
  ];
301
419
  const columnPercentAdvancedPipeline = [
302
420
  initAdvancedVSeed,
421
+ autoMeasures,
422
+ autoDimensions,
303
423
  reshapeTo2D1M,
304
- encodingXY
424
+ encodingXY,
425
+ vchartBaseConfig,
426
+ vchartTheme
305
427
  ];
306
428
  const areaAdvancedPipeline = [
307
429
  initAdvancedVSeed,
430
+ autoMeasures,
431
+ autoDimensions,
308
432
  reshapeTo2D1M,
309
- encodingXY
433
+ encodingXY,
434
+ vchartBaseConfig,
435
+ vchartTheme
310
436
  ];
311
437
  const areaPercentAdvancedPipeline = [
312
438
  initAdvancedVSeed,
439
+ autoMeasures,
440
+ autoDimensions,
313
441
  reshapeTo2D1M,
314
- encodingXY
442
+ encodingXY,
443
+ vchartBaseConfig,
444
+ vchartTheme
315
445
  ];
316
446
  const dataset_dataset = (spec, context)=>{
317
447
  const { advancedVSeed } = context;
@@ -328,11 +458,12 @@ const initColumn = (spec, context)=>{
328
458
  };
329
459
  const { advancedVSeed } = context;
330
460
  const { encoding } = advancedVSeed;
461
+ if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
331
462
  result.type = 'bar';
332
463
  result.direction = 'vertical';
333
- result.xField = encoding[0].x?.[0];
334
- result.yField = encoding[0].y?.[0];
335
- result.seriesField = encoding[0].group?.[0];
464
+ result.xField = encoding[0].x[0];
465
+ result.yField = encoding[0].y[0];
466
+ result.seriesField = encoding[0].group[0];
336
467
  result.padding = 0;
337
468
  return result;
338
469
  };
@@ -342,6 +473,7 @@ const initBar = (spec, context)=>{
342
473
  };
343
474
  const { advancedVSeed } = context;
344
475
  const { encoding } = advancedVSeed;
476
+ if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
345
477
  result.type = 'bar';
346
478
  result.direction = 'horizontal';
347
479
  result.yField = encoding[0].y?.[0];
@@ -356,15 +488,16 @@ const initBarParallel = (spec, context)=>{
356
488
  };
357
489
  const { advancedVSeed } = context;
358
490
  const { encoding, datasetReshapeInfo } = advancedVSeed;
359
- const { foldInfo } = datasetReshapeInfo;
491
+ const { unfoldInfo } = datasetReshapeInfo;
492
+ if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
360
493
  result.type = 'bar';
361
494
  result.direction = 'horizontal';
362
495
  result.yField = [
363
- encoding[0].y?.[0],
364
- foldInfo?.measureName
496
+ encoding[0].y[0],
497
+ unfoldInfo.groupName
365
498
  ];
366
- result.xField = encoding[0].x?.[0];
367
- result.seriesField = encoding[0].group?.[0];
499
+ result.xField = encoding[0].x[0];
500
+ result.seriesField = encoding[0].group[0];
368
501
  result.padding = 0;
369
502
  return result;
370
503
  };
@@ -374,11 +507,12 @@ const initArea = (spec, context)=>{
374
507
  };
375
508
  const { advancedVSeed } = context;
376
509
  const { encoding } = advancedVSeed;
510
+ if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
377
511
  result.type = 'area';
378
512
  result.direction = 'vertical';
379
- result.xField = encoding[0].x?.[0];
380
- result.yField = encoding[0].y?.[0];
381
- result.seriesField = encoding[0].group?.[0];
513
+ result.xField = encoding[0].x[0];
514
+ result.yField = encoding[0].y[0];
515
+ result.seriesField = encoding[0].group[0];
382
516
  result.padding = 0;
383
517
  return result;
384
518
  };
@@ -388,11 +522,12 @@ const initLine = (spec, context)=>{
388
522
  };
389
523
  const { advancedVSeed } = context;
390
524
  const { encoding } = advancedVSeed;
525
+ if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
391
526
  result.type = 'line';
392
527
  result.direction = 'vertical';
393
- result.xField = encoding[0].x?.[0];
394
- result.yField = encoding[0].y?.[0];
395
- result.seriesField = encoding[0].group?.[0];
528
+ result.xField = encoding[0].x[0];
529
+ result.yField = encoding[0].y[0];
530
+ result.seriesField = encoding[0].group[0];
396
531
  result.padding = 0;
397
532
  return result;
398
533
  };
@@ -402,15 +537,16 @@ const initColumnParallel = (spec, context)=>{
402
537
  };
403
538
  const { advancedVSeed } = context;
404
539
  const { encoding, datasetReshapeInfo } = advancedVSeed;
405
- const { foldInfo } = datasetReshapeInfo;
540
+ const { unfoldInfo } = datasetReshapeInfo;
541
+ if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
406
542
  result.type = 'bar';
407
543
  result.direction = 'vertical';
408
- if (encoding[0].x?.[0]) result.xField = [
544
+ result.xField = [
409
545
  encoding[0].x[0],
410
- foldInfo.measureName
546
+ unfoldInfo.groupName
411
547
  ];
412
- result.yField = encoding[0].y?.[0];
413
- result.seriesField = encoding[0].group?.[0];
548
+ result.yField = encoding[0].y[0];
549
+ result.seriesField = encoding[0].group[0];
414
550
  result.padding = 0;
415
551
  return result;
416
552
  };
@@ -488,75 +624,205 @@ const stack = (spec, context)=>{
488
624
  result.stack = true;
489
625
  return result;
490
626
  };
627
+ const background_backgroundColor = (spec, context)=>{
628
+ const result = {
629
+ ...spec
630
+ };
631
+ const { advancedVSeed } = context;
632
+ const { baseConfig } = advancedVSeed;
633
+ if (!baseConfig?.vchart) return result;
634
+ const { backgroundColor } = baseConfig.vchart;
635
+ return {
636
+ ...result,
637
+ background: backgroundColor
638
+ };
639
+ };
640
+ const defaultTooltip = {
641
+ enable: true
642
+ };
643
+ const tooltip_tooltip = (spec, context)=>{
644
+ const result = {
645
+ ...spec
646
+ };
647
+ const { advancedVSeed } = context;
648
+ const baseConfig = advancedVSeed.baseConfig.vchart;
649
+ const { tooltip = defaultTooltip } = baseConfig;
650
+ const { enable } = tooltip;
651
+ result.tooltip = {
652
+ visible: enable
653
+ };
654
+ return result;
655
+ };
656
+ const label_label = (spec, context)=>{
657
+ const result = {
658
+ ...spec
659
+ };
660
+ const { advancedVSeed } = context;
661
+ const baseConfig = advancedVSeed.baseConfig.vchart;
662
+ if (!baseConfig || !baseConfig.label) return result;
663
+ const { label } = baseConfig;
664
+ const { enable } = label;
665
+ result.label = {
666
+ visible: enable
667
+ };
668
+ return result;
669
+ };
670
+ const defaultLegend = {
671
+ enable: true
672
+ };
673
+ const legend_legend = (spec, context)=>{
674
+ const result = {
675
+ ...spec
676
+ };
677
+ const { advancedVSeed } = context;
678
+ const baseConfig = advancedVSeed.baseConfig.vchart;
679
+ if (!baseConfig || !baseConfig.legend) return result;
680
+ const { legend = defaultLegend } = baseConfig;
681
+ const { enable } = legend;
682
+ result.legends = {
683
+ visible: enable
684
+ };
685
+ return result;
686
+ };
687
+ const color_color = (spec, context)=>{
688
+ const result = {
689
+ ...spec
690
+ };
691
+ const { advancedVSeed } = context;
692
+ const { datasetReshapeInfo } = advancedVSeed;
693
+ const { unfoldInfo } = datasetReshapeInfo;
694
+ const baseConfig = advancedVSeed.baseConfig.vchart;
695
+ if (!baseConfig || !baseConfig.color) return result;
696
+ const { color } = baseConfig;
697
+ const { colorScheme, colorMapping } = color;
698
+ result.color = {
699
+ type: 'ordinal',
700
+ domain: unfoldInfo.colorItems,
701
+ range: colorScheme,
702
+ specified: colorMapping
703
+ };
704
+ return result;
705
+ };
491
706
  const lineSpecPipeline = [
492
707
  initLine,
708
+ color_color,
709
+ background_backgroundColor,
493
710
  dataset_dataset,
494
711
  xBand,
495
- yLinear
712
+ yLinear,
713
+ label_label,
714
+ tooltip_tooltip,
715
+ legend_legend
496
716
  ];
497
717
  const columnSpecPipeline = [
498
718
  initColumn,
719
+ color_color,
720
+ background_backgroundColor,
499
721
  dataset_dataset,
500
722
  xBand,
501
- yLinear
723
+ yLinear,
724
+ label_label,
725
+ tooltip_tooltip,
726
+ legend_legend
502
727
  ];
503
728
  const columnParallelSpecPipeline = [
504
729
  initColumnParallel,
730
+ color_color,
731
+ background_backgroundColor,
505
732
  dataset_dataset,
506
733
  xBand,
507
- yLinear
734
+ yLinear,
735
+ label_label,
736
+ tooltip_tooltip,
737
+ legend_legend
508
738
  ];
509
739
  const columnPercentSpecPipeline = [
510
740
  initColumn,
741
+ color_color,
742
+ background_backgroundColor,
511
743
  percent,
512
744
  dataset_dataset,
513
745
  xBand,
514
- yLinear
746
+ yLinear,
747
+ label_label,
748
+ tooltip_tooltip,
749
+ legend_legend
515
750
  ];
516
751
  const barSpecPipeline = [
517
752
  initBar,
753
+ color_color,
754
+ background_backgroundColor,
518
755
  dataset_dataset,
519
756
  xLinear,
520
- yBand
757
+ yBand,
758
+ label_label,
759
+ tooltip_tooltip,
760
+ legend_legend
521
761
  ];
522
762
  const barParallelSpecPipeline = [
523
763
  initBarParallel,
764
+ color_color,
765
+ background_backgroundColor,
524
766
  dataset_dataset,
525
767
  xLinear,
526
- yBand
768
+ yBand,
769
+ label_label,
770
+ tooltip_tooltip,
771
+ legend_legend
527
772
  ];
528
773
  const barPercentSpecPipeline = [
529
774
  initBar,
775
+ color_color,
776
+ background_backgroundColor,
530
777
  percent,
531
778
  dataset_dataset,
532
779
  xLinear,
533
- yBand
780
+ yBand,
781
+ label_label,
782
+ tooltip_tooltip,
783
+ legend_legend
534
784
  ];
535
785
  const areaSpecPipeline = [
536
786
  initArea,
787
+ color_color,
788
+ background_backgroundColor,
537
789
  stack,
538
790
  dataset_dataset,
539
791
  xBand,
540
- yLinear
792
+ yLinear,
793
+ label_label,
794
+ tooltip_tooltip,
795
+ legend_legend
541
796
  ];
542
797
  const areaPercentSpecPipeline = [
543
798
  initArea,
799
+ color_color,
800
+ background_backgroundColor,
544
801
  percent,
545
802
  dataset_dataset,
546
803
  xBand,
547
- yLinear
804
+ yLinear,
805
+ label_label,
806
+ tooltip_tooltip,
807
+ legend_legend
548
808
  ];
549
809
  const execPipeline = (pipeline, context, initialValue = {})=>{
550
810
  const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
551
811
  return result;
552
812
  };
813
+ const isVTable = (chartType)=>[
814
+ 'table',
815
+ 'pivotTable'
816
+ ].includes(chartType);
817
+ const isVChart = (chartType)=>!isVTable(chartType);
553
818
  const buildAdvanced = (builder)=>{
554
819
  const { chartType } = builder.vseed;
555
820
  if (!chartType) throw new Error('chartType is nil in buildAdvanced');
556
821
  const pipeline = builder.getAdvancedPipeline(chartType);
557
822
  if (!pipeline) throw new Error(`no advanced pipeline for chartType ${chartType}`);
558
823
  const context = {
559
- vseed: builder.vseed
824
+ vseed: builder.vseed,
825
+ customTheme: builder.getThemeMap()
560
826
  };
561
827
  try {
562
828
  return execPipeline(pipeline, context);
@@ -582,6 +848,7 @@ const buildSpec = (builder, advancedVSeed)=>{
582
848
  }
583
849
  };
584
850
  const build = (builder)=>{
851
+ console.log('debug vseed', builder.vseed);
585
852
  const advancedVSeed = builder.buildAdvanced();
586
853
  console.log('debug advancedVSeed', advancedVSeed);
587
854
  if (!advancedVSeed) throw new Error('advancedVSeed is null');
@@ -591,19 +858,17 @@ const build = (builder)=>{
591
858
  };
592
859
  class Builder {
593
860
  _vseed;
594
- _advancedVSeed;
595
- static _advancedPipelineMap = {};
596
- static _specPipelineMap = {};
597
- static from = (vseed)=>new Builder(vseed);
861
+ _advancedVSeed = null;
598
862
  constructor(vseed){
599
863
  this._vseed = vseed;
600
- this._advancedVSeed = null;
601
864
  }
602
865
  build = ()=>build(this);
603
866
  buildSpec = (advanced)=>buildSpec(this, advanced);
604
867
  buildAdvanced = ()=>buildAdvanced(this);
605
868
  getAdvancedPipeline = (chartType)=>Builder._advancedPipelineMap[chartType];
606
869
  getSpecPipeline = (chartType)=>Builder._specPipelineMap[chartType];
870
+ getTheme = (themeKey)=>Builder._themeMap[themeKey];
871
+ getThemeMap = ()=>Builder._themeMap;
607
872
  get vseed() {
608
873
  return this._vseed;
609
874
  }
@@ -616,18 +881,11 @@ class Builder {
616
881
  set advancedVSeed(value) {
617
882
  this._advancedVSeed = value;
618
883
  }
884
+ static _advancedPipelineMap = {};
885
+ static _specPipelineMap = {};
886
+ static _themeMap = {};
887
+ static from = (vseed)=>new Builder(vseed);
619
888
  }
620
- const registerAll = ()=>{
621
- registerLine();
622
- registerColumn();
623
- registerColumnParallel();
624
- registerColumnPercent();
625
- registerBar();
626
- registerBarParallel();
627
- registerBarPercent();
628
- registerArea();
629
- registerAreaPercent();
630
- };
631
889
  const registerColumn = ()=>{
632
890
  Builder._advancedPipelineMap.column = columnAdvancedPipeline;
633
891
  Builder._specPipelineMap.column = columnSpecPipeline;
@@ -664,6 +922,94 @@ const registerBarParallel = ()=>{
664
922
  Builder._advancedPipelineMap.barParallel = barParallelAdvancedPipeline;
665
923
  Builder._specPipelineMap.barParallel = barParallelSpecPipeline;
666
924
  };
925
+ const darkTheme = ()=>({
926
+ baseConfig: {
927
+ vtable: {
928
+ backgroundColor: '#141414'
929
+ },
930
+ vchart: {
931
+ backgroundColor: '#141414',
932
+ color: {
933
+ colorScheme: [
934
+ '#2E62F1',
935
+ '#4DC36A',
936
+ '#FF8406',
937
+ '#FFCC00',
938
+ '#4F44CF',
939
+ '#5AC8FA',
940
+ '#003A8C',
941
+ '#B08AE2',
942
+ '#FF6341',
943
+ '#98DD62'
944
+ ]
945
+ },
946
+ label: {
947
+ enable: true
948
+ },
949
+ tooltip: {
950
+ enable: true
951
+ },
952
+ legend: {
953
+ enable: true
954
+ }
955
+ }
956
+ }
957
+ });
958
+ const lightTheme = ()=>({
959
+ baseConfig: {
960
+ vtable: {
961
+ backgroundColor: '#ffffff'
962
+ },
963
+ vchart: {
964
+ backgroundColor: '#ffffff',
965
+ color: {
966
+ colorScheme: [
967
+ '#8D72F6',
968
+ '#5766EC',
969
+ '#66A3FE',
970
+ '#51D5E6',
971
+ '#4EC0B3',
972
+ '#F9DF90',
973
+ '#F9AD71',
974
+ '#ED8888',
975
+ '#E9A0C3',
976
+ '#D77DD3'
977
+ ]
978
+ },
979
+ label: {
980
+ enable: true
981
+ },
982
+ tooltip: {
983
+ enable: true
984
+ },
985
+ legend: {
986
+ enable: true
987
+ }
988
+ }
989
+ }
990
+ });
991
+ const registerCustomTheme = (key, themeConfig)=>{
992
+ Builder._themeMap[key] = themeConfig;
993
+ };
994
+ const registerLightTheme = ()=>{
995
+ registerCustomTheme('light', lightTheme());
996
+ };
997
+ const registerDarkTheme = ()=>{
998
+ registerCustomTheme('dark', darkTheme());
999
+ };
1000
+ const all_registerAll = ()=>{
1001
+ registerLine();
1002
+ registerColumn();
1003
+ registerColumnParallel();
1004
+ registerColumnPercent();
1005
+ registerBar();
1006
+ registerBarParallel();
1007
+ registerBarPercent();
1008
+ registerArea();
1009
+ registerAreaPercent();
1010
+ registerLightTheme();
1011
+ registerDarkTheme();
1012
+ };
667
1013
  const zChartType = z["enum"]([
668
1014
  'table',
669
1015
  'pivotTable',
@@ -727,22 +1073,6 @@ const zMeasureGroup = z.object({
727
1073
  }
728
1074
  });
729
1075
  const zMeasures = z.array(zMeasureGroup.or(zMeasure)).optional();
730
- const zVSeed = z.object({
731
- chartType: zChartType,
732
- dataset: zDataset,
733
- dimensions: zDimensions,
734
- measures: zMeasures
735
- });
736
- const VSeedJSONSchema = z.toJSONSchema(zVSeed);
737
- const zEncoding = z.array(z.object({
738
- x: z.array(z.string()).optional(),
739
- y: z.array(z.string()).optional(),
740
- color: z.array(z.string()).optional(),
741
- group: z.array(z.string()).optional(),
742
- angle: z.array(z.string()).optional(),
743
- radius: z.array(z.string()).optional(),
744
- tooltip: z.array(z.string()).optional()
745
- }));
746
1076
  const zFoldInfo = z.object({
747
1077
  foldMap: z.record(z.string(), z.string().or(z.undefined())),
748
1078
  measureId: z.string(),
@@ -757,12 +1087,48 @@ const zDatasetReshapeInfo = z.object({
757
1087
  foldInfo: zFoldInfo,
758
1088
  unfoldInfo: zUnfoldInfo
759
1089
  });
760
- const zAdvancedVSeed = z.object({
761
- chartType: zChartType,
762
- dataset: zDataset,
763
- datasetReshapeInfo: zDatasetReshapeInfo,
764
- dimensions: zDimensions,
765
- measures: zMeasures,
766
- encoding: zEncoding
1090
+ const zEncoding = z.array(z.object({
1091
+ x: z.array(z.string()).optional(),
1092
+ y: z.array(z.string()).optional(),
1093
+ color: z.array(z.string()).optional(),
1094
+ group: z.array(z.string()).optional(),
1095
+ angle: z.array(z.string()).optional(),
1096
+ radius: z.array(z.string()).optional(),
1097
+ tooltip: z.array(z.string()).optional()
1098
+ }));
1099
+ const zBackgroundColor = z.string().default('transparent').optional();
1100
+ const zLabel = z.object({
1101
+ enable: z.boolean().default(true).optional()
1102
+ });
1103
+ const zColor = z.object({
1104
+ colorScheme: z.array(z.string()).optional(),
1105
+ colorMapping: z.record(z.string(), z.string()).optional()
1106
+ });
1107
+ const zTooltip = z.object({
1108
+ enable: z.boolean().default(true).optional()
1109
+ });
1110
+ const zLegend = z.object({
1111
+ enable: z.boolean().default(true).optional()
1112
+ });
1113
+ const zVChartBaseConfig = z.object({
1114
+ backgroundColor: zBackgroundColor,
1115
+ label: zLabel.optional(),
1116
+ color: zColor.optional(),
1117
+ tooltip: zTooltip.optional(),
1118
+ legend: zLegend.optional()
1119
+ });
1120
+ const zVTableBaseConfig = z.object({
1121
+ backgroundColor: zBackgroundColor
1122
+ });
1123
+ const zBaseConfig = z.object({
1124
+ vchart: zVChartBaseConfig.optional(),
1125
+ vtable: zVTableBaseConfig.optional()
1126
+ });
1127
+ const zCustomThemeConfig = z.object({
1128
+ baseConfig: zBaseConfig.optional()
767
1129
  });
768
- export { Builder, VSeedJSONSchema, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, dataReshapeFor1D1M_dataReshapeFor1D1M as dataReshapeFor1D1M, dataReshapeFor2D1M, execPipeline, foldMeasures, lineAdvancedPipeline, lineSpecPipeline, registerAll, registerBar, registerColumn, unfoldDimensions, zAdvancedVSeed, zChartType, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensions, zEncoding, zFoldInfo, zMeasure, zMeasureGroup, zMeasures, zUnfoldInfo, zVSeed };
1130
+ const zCustomTheme = z.record(z.string(), zCustomThemeConfig).optional();
1131
+ const zTheme = z.string();
1132
+ export { Builder, areaAdvancedPipeline, areaPercentAdvancedPipeline, areaPercentSpecPipeline, areaSpecPipeline, barAdvancedPipeline, barParallelAdvancedPipeline, barParallelSpecPipeline, barPercentAdvancedPipeline, barPercentSpecPipeline, barSpecPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnParallelSpecPipeline, columnPercentAdvancedPipeline, columnPercentSpecPipeline, columnSpecPipeline, darkTheme, dataReshapeFor1D1M_dataReshapeFor1D1M as dataReshapeFor1D1M, dataReshapeFor2D1M, execPipeline, foldMeasures, isVChart, isVTable, lightTheme, lineAdvancedPipeline, lineSpecPipeline, all_registerAll as registerAll, registerArea, registerAreaPercent, registerBar, registerBarParallel, registerBarPercent, registerColumn, registerColumnParallel, registerColumnPercent, registerCustomTheme, registerDarkTheme, registerLightTheme, registerLine, unfoldDimensions, zBackgroundColor, zBaseConfig, zChartType, zColor, zCustomTheme, zCustomThemeConfig, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensions, zEncoding, zFoldInfo, zLabel, zLegend, zMeasure, zMeasureGroup, zMeasures, zTheme, zTooltip, zUnfoldInfo };
1133
+
1134
+ //# sourceMappingURL=index.js.map