@visactor/vseed 0.0.1 → 0.0.2

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 (105) hide show
  1. package/dist/builder/builder/build.d.ts +3 -0
  2. package/dist/builder/builder/buildAdvanced.d.ts +3 -0
  3. package/dist/builder/builder/buildSpec.d.ts +4 -0
  4. package/dist/builder/builder/builder.d.ts +216 -0
  5. package/dist/builder/builder/index.d.ts +1 -0
  6. package/dist/builder/index.d.ts +2 -0
  7. package/dist/builder/register/index.d.ts +1 -0
  8. package/dist/builder/register/register.d.ts +3 -0
  9. package/dist/dataReshape/constant.d.ts +5 -0
  10. package/dist/dataReshape/dataReshapeFor1D1M.d.ts +13 -0
  11. package/dist/dataReshape/dataReshapeFor2D1M.d.ts +13 -0
  12. package/dist/dataReshape/foldMeasures.d.ts +31 -0
  13. package/dist/dataReshape/index.d.ts +4 -0
  14. package/dist/dataReshape/unfoldDimensions.d.ts +19 -0
  15. package/dist/index.cjs +616 -4
  16. package/dist/index.d.ts +5 -1
  17. package/dist/index.js +533 -2
  18. package/dist/pipeline/advanced/index.d.ts +1 -0
  19. package/dist/pipeline/advanced/pipeline/bar.d.ts +2 -0
  20. package/dist/pipeline/advanced/pipeline/column.d.ts +2 -0
  21. package/dist/pipeline/advanced/pipeline/index.d.ts +2 -0
  22. package/dist/pipeline/advanced/pipes/encoding/encodingCartesian.d.ts +2 -0
  23. package/dist/pipeline/advanced/pipes/encoding/index.d.ts +1 -0
  24. package/dist/pipeline/advanced/pipes/index.d.ts +2 -0
  25. package/dist/pipeline/advanced/pipes/reshape/index.d.ts +2 -0
  26. package/dist/pipeline/advanced/pipes/reshape/reshapeTo1D1M.d.ts +8 -0
  27. package/dist/pipeline/advanced/pipes/reshape/reshapeTo2D1M.d.ts +8 -0
  28. package/dist/pipeline/index.d.ts +3 -0
  29. package/dist/pipeline/spec/index.d.ts +1 -0
  30. package/dist/pipeline/spec/pipeline/bar.d.ts +2 -0
  31. package/dist/pipeline/spec/pipeline/column.d.ts +2 -0
  32. package/dist/pipeline/spec/pipeline/index.d.ts +2 -0
  33. package/dist/pipeline/spec/pipes/axes/index.d.ts +4 -0
  34. package/dist/pipeline/spec/pipes/axes/xBand copy.d.ts +0 -0
  35. package/dist/pipeline/spec/pipes/axes/xBand.d.ts +2 -0
  36. package/dist/pipeline/spec/pipes/axes/xLinear copy.d.ts +0 -0
  37. package/dist/pipeline/spec/pipes/axes/xLinear.d.ts +2 -0
  38. package/dist/pipeline/spec/pipes/axes/yBand.d.ts +2 -0
  39. package/dist/pipeline/spec/pipes/axes/yLinear copy.d.ts +0 -0
  40. package/dist/pipeline/spec/pipes/axes/yLinear.d.ts +2 -0
  41. package/dist/pipeline/spec/pipes/dataset/dataset.d.ts +2 -0
  42. package/dist/pipeline/spec/pipes/dataset/index.d.ts +1 -0
  43. package/dist/pipeline/spec/pipes/index.d.ts +3 -0
  44. package/dist/pipeline/spec/pipes/init/bar.d.ts +2 -0
  45. package/dist/pipeline/spec/pipes/init/column.d.ts +2 -0
  46. package/dist/pipeline/spec/pipes/init/index.d.ts +2 -0
  47. package/dist/pipeline/utils/index.d.ts +1 -0
  48. package/dist/pipeline/utils/pipeline.d.ts +9 -0
  49. package/dist/types/builder/builder.d.ts +10 -0
  50. package/dist/types/builder/index.d.ts +1 -0
  51. package/dist/types/chartType/area/area.d.ts +46 -0
  52. package/dist/types/chartType/area/index.d.ts +1 -0
  53. package/dist/types/chartType/areaPercent/areaPercent.d.ts +45 -0
  54. package/dist/types/chartType/areaPercent/index.d.ts +1 -0
  55. package/dist/types/chartType/bar/bar.d.ts +45 -0
  56. package/dist/types/chartType/bar/index.d.ts +1 -0
  57. package/dist/types/chartType/barParallel/barParallel.d.ts +45 -0
  58. package/dist/types/chartType/barParallel/index.d.ts +1 -0
  59. package/dist/types/chartType/barPercent/barPercent.d.ts +45 -0
  60. package/dist/types/chartType/barPercent/index.d.ts +1 -0
  61. package/dist/types/chartType/column/column.d.ts +45 -0
  62. package/dist/types/chartType/column/index.d.ts +1 -0
  63. package/dist/types/chartType/columnParallel/columnParallel.d.ts +45 -0
  64. package/dist/types/chartType/columnParallel/index.d.ts +1 -0
  65. package/dist/types/chartType/columnPercent/columnPercent.d.ts +45 -0
  66. package/dist/types/chartType/columnPercent/index.d.ts +1 -0
  67. package/dist/types/chartType/donut/donut.d.ts +45 -0
  68. package/dist/types/chartType/donut/index.d.ts +1 -0
  69. package/dist/types/chartType/dualAxis/dualAxis.d.ts +47 -0
  70. package/dist/types/chartType/dualAxis/index.d.ts +1 -0
  71. package/dist/types/chartType/index.d.ts +16 -0
  72. package/dist/types/chartType/line/index.d.ts +1 -0
  73. package/dist/types/chartType/line/line.d.ts +45 -0
  74. package/dist/types/chartType/pie/index.d.ts +1 -0
  75. package/dist/types/chartType/pie/pie.d.ts +45 -0
  76. package/dist/types/chartType/pivotTable/index.d.ts +1 -0
  77. package/dist/types/chartType/pivotTable/pivotTable.d.ts +45 -0
  78. package/dist/types/chartType/rose/index.d.ts +1 -0
  79. package/dist/types/chartType/rose/rose.d.ts +45 -0
  80. package/dist/types/chartType/table/index.d.ts +1 -0
  81. package/dist/types/chartType/table/table.d.ts +45 -0
  82. package/dist/types/chartType/vseedDSL.d.ts +16 -0
  83. package/dist/types/index.d.ts +4 -0
  84. package/dist/types/pipeline/advancedVSeed/advancedVSeed.d.ts +7 -0
  85. package/dist/types/pipeline/advancedVSeed/index.d.ts +1 -0
  86. package/dist/types/pipeline/index.d.ts +3 -0
  87. package/dist/types/pipeline/pipeline.d.ts +2 -0
  88. package/dist/types/pipeline/spec/index.d.ts +1 -0
  89. package/dist/types/pipeline/spec/spec.d.ts +9 -0
  90. package/dist/types/properties/advancedVSeed.d.ts +105 -0
  91. package/dist/types/properties/chartType/index.d.ts +2 -0
  92. package/dist/types/properties/chartType/zChartType.d.ts +36 -0
  93. package/dist/types/properties/dataset/dataset.d.ts +15 -0
  94. package/dist/types/properties/dataset/index.d.ts +2 -0
  95. package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +34 -0
  96. package/dist/types/properties/datasetReshapeInfo/index.d.ts +2 -0
  97. package/dist/types/properties/dimensions/dimensions.d.ts +23 -0
  98. package/dist/types/properties/dimensions/index.d.ts +2 -0
  99. package/dist/types/properties/encoding/encoding.d.ts +19 -0
  100. package/dist/types/properties/encoding/index.d.ts +2 -0
  101. package/dist/types/properties/index.d.ts +8 -0
  102. package/dist/types/properties/measures/index.d.ts +2 -0
  103. package/dist/types/properties/measures/measures.d.ts +109 -0
  104. package/dist/types/properties/vseed.d.ts +94 -0
  105. package/package.json +13 -2
package/dist/index.js CHANGED
@@ -1,2 +1,533 @@
1
- const squared = (n)=>n * n;
2
- export { squared };
1
+ import { z } from "zod";
2
+ const FoldMeasureName = '__MeaName__';
3
+ const FoldMeasureValue = '__MeaValue__';
4
+ const FoldMeasureId = '__MeaId__';
5
+ const FoldDimensionGroup = '__DimGroup__';
6
+ const Separator = '-';
7
+ const unfoldDimensions = (dataset, dimensions, measures, unfoldStartIndex = 0, foldGroupName = FoldDimensionGroup, dimensionsSeparator = Separator)=>{
8
+ if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) throw new Error('unfoldStartIndex is out of range');
9
+ const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
10
+ const unfoldInfo = {
11
+ groupName: foldGroupName,
12
+ colorItems: []
13
+ };
14
+ if (0 === dimensions.length || 0 === measures.length) return {
15
+ dataset,
16
+ unfoldInfo: {
17
+ groupName: foldGroupName,
18
+ colorItems: []
19
+ }
20
+ };
21
+ const colorItems = [];
22
+ for(let i = 0; i < dataset.length; i++){
23
+ const datum = dataset[i];
24
+ const colorItem = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator);
25
+ datum[foldGroupName] = colorItem;
26
+ colorItems.push(colorItem);
27
+ }
28
+ unfoldInfo.colorItems = colorItems;
29
+ return {
30
+ dataset,
31
+ unfoldInfo
32
+ };
33
+ };
34
+ const generateDimGroupName = (dimensionsToBeGrouped, datum, dimensionsSeparator)=>dimensionsToBeGrouped.map((dim)=>String(datum[dim.id])).join(dimensionsSeparator);
35
+ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
36
+ const foldInfo = {
37
+ measureId,
38
+ measureName,
39
+ measureValue,
40
+ foldMap: {}
41
+ };
42
+ const result = new Array(dataset.length * measures.length);
43
+ let index = 0;
44
+ for(let i = 0; i < dataset.length; i++)for(let j = 0; j < measures.length; j++){
45
+ const datum = {
46
+ ...dataset[i]
47
+ };
48
+ const measure = measures[j];
49
+ const { id, alias } = measure;
50
+ datum[measureId] = id;
51
+ datum[measureName] = alias;
52
+ datum[measureValue] = dataset[i][id];
53
+ foldInfo.foldMap[id] = alias;
54
+ result[index++] = datum;
55
+ }
56
+ return {
57
+ dataset: result,
58
+ foldInfo
59
+ };
60
+ };
61
+ const emptyReshapeResult = {
62
+ dataset: [],
63
+ foldInfo: {
64
+ foldMap: {},
65
+ measureId: '',
66
+ measureName: '',
67
+ measureValue: ''
68
+ },
69
+ unfoldInfo: {
70
+ colorItems: [],
71
+ groupName: ''
72
+ }
73
+ };
74
+ const dataReshapeFor2D1M = (dataset, dimensions, measures)=>{
75
+ if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
76
+ const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, FoldMeasureId, FoldMeasureName, FoldMeasureValue);
77
+ if (0 === dimensions.length) {
78
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
79
+ {
80
+ id: FoldMeasureId,
81
+ alias: "\u6307\u6807Id",
82
+ location: 'dimension'
83
+ },
84
+ {
85
+ id: FoldMeasureName,
86
+ alias: "\u6307\u6807\u540D\u79F0",
87
+ location: 'dimension'
88
+ }
89
+ ], [
90
+ {
91
+ id: FoldMeasureValue,
92
+ alias: "\u6307\u6807\u503C"
93
+ }
94
+ ], 1, FoldDimensionGroup);
95
+ return {
96
+ dataset: finalDataset,
97
+ foldInfo,
98
+ unfoldInfo
99
+ };
100
+ }
101
+ {
102
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
103
+ ...dimensions,
104
+ {
105
+ id: FoldMeasureName,
106
+ alias: "\u6307\u6807\u540D\u79F0",
107
+ location: 'dimension'
108
+ }
109
+ ], [
110
+ {
111
+ id: FoldMeasureValue,
112
+ alias: "\u6307\u6807\u503C"
113
+ }
114
+ ], 1, FoldDimensionGroup);
115
+ return {
116
+ dataset: finalDataset,
117
+ foldInfo,
118
+ unfoldInfo
119
+ };
120
+ }
121
+ };
122
+ const dataReshapeFor1D1M_emptyReshapeResult = {
123
+ dataset: [],
124
+ foldInfo: {
125
+ foldMap: {},
126
+ measureId: '',
127
+ measureName: '',
128
+ measureValue: ''
129
+ },
130
+ unfoldInfo: {
131
+ groupName: '',
132
+ colorItems: []
133
+ }
134
+ };
135
+ const dataReshapeFor1D1M_dataReshapeFor1D1M = (dataset, dimensions, measures)=>{
136
+ if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
137
+ const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, FoldMeasureId, FoldMeasureName, FoldMeasureValue);
138
+ if (0 === dimensions.length) {
139
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
140
+ {
141
+ id: FoldMeasureName,
142
+ alias: "\u6307\u6807\u540D\u79F0",
143
+ location: 'dimension'
144
+ }
145
+ ], [
146
+ {
147
+ id: FoldMeasureValue,
148
+ alias: "\u6307\u6807\u503C"
149
+ }
150
+ ], 0, FoldDimensionGroup);
151
+ return {
152
+ dataset: finalDataset,
153
+ foldInfo,
154
+ unfoldInfo
155
+ };
156
+ }
157
+ {
158
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
159
+ ...dimensions,
160
+ {
161
+ id: FoldMeasureName,
162
+ alias: "\u6307\u6807\u540D\u79F0",
163
+ location: 'dimension'
164
+ }
165
+ ], [
166
+ {
167
+ id: FoldMeasureValue,
168
+ alias: "\u6307\u6807\u503C"
169
+ }
170
+ ], 0, FoldDimensionGroup);
171
+ return {
172
+ dataset: finalDataset,
173
+ foldInfo,
174
+ unfoldInfo
175
+ };
176
+ }
177
+ };
178
+ const reshapeTo2D1M = (advancedVSeed, context)=>{
179
+ const result = {
180
+ ...advancedVSeed
181
+ };
182
+ const { vseed } = context;
183
+ const { dimensions, measures, dataset } = vseed;
184
+ if (!measures || !dimensions || !dataset) return result;
185
+ if (0 === measures.length) throw new Error('measures can not be empty');
186
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
187
+ return {
188
+ ...result,
189
+ dataset: newDatasets,
190
+ datasetReshapeInfo: {
191
+ foldInfo,
192
+ unfoldInfo
193
+ },
194
+ dimensions,
195
+ measures
196
+ };
197
+ };
198
+ const encodingCartesian = (advancedVSeed)=>{
199
+ const result = {
200
+ ...advancedVSeed
201
+ };
202
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
203
+ if (!datasetReshapeInfo || !dimensions) return result;
204
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo;
205
+ const isSingleDimension = 0 === dimensions.length;
206
+ const x = [
207
+ isSingleDimension ? foldInfo.measureName : dimensions[0].id
208
+ ];
209
+ const y = [
210
+ foldInfo.measureValue
211
+ ];
212
+ const group = [
213
+ isSingleDimension ? foldInfo.measureName : unfoldInfo.groupName
214
+ ];
215
+ const color = [
216
+ foldInfo.measureName
217
+ ];
218
+ const encoding = [
219
+ {
220
+ x,
221
+ y,
222
+ group,
223
+ color
224
+ }
225
+ ];
226
+ return {
227
+ ...result,
228
+ encoding
229
+ };
230
+ };
231
+ const barAdvancedPipeline = [
232
+ reshapeTo2D1M,
233
+ encodingCartesian
234
+ ];
235
+ const columnAdvancedPipeline = [
236
+ reshapeTo2D1M,
237
+ encodingCartesian
238
+ ];
239
+ const dataset_dataset = (spec, context)=>{
240
+ const { advancedVSeed } = context;
241
+ return {
242
+ ...spec,
243
+ data: {
244
+ values: advancedVSeed.dataset
245
+ }
246
+ };
247
+ };
248
+ const initColumn = (spec, context)=>{
249
+ const result = {
250
+ ...spec
251
+ };
252
+ const { advancedVSeed } = context;
253
+ const { encoding } = advancedVSeed;
254
+ result.type = 'bar';
255
+ result.direction = 'vertical';
256
+ result.xField = encoding[0].x?.[0];
257
+ result.yField = encoding[0].y?.[0];
258
+ result.seriesField = encoding[0].group?.[0];
259
+ result.data = {
260
+ values: advancedVSeed.dataset
261
+ };
262
+ return result;
263
+ };
264
+ const initBar = (spec, context)=>{
265
+ const result = {
266
+ ...spec
267
+ };
268
+ const { advancedVSeed } = context;
269
+ const { encoding } = advancedVSeed;
270
+ result.type = 'bar';
271
+ result.direction = 'horizontal';
272
+ result.yField = encoding[0].x?.[0];
273
+ result.xField = encoding[0].y?.[0];
274
+ result.seriesField = encoding[0].group?.[0];
275
+ return result;
276
+ };
277
+ const xBand = (spec)=>{
278
+ const result = {
279
+ ...spec
280
+ };
281
+ if (!result.axes) result.axes = [];
282
+ result.axes = [
283
+ ...result.axes,
284
+ {
285
+ visible: true,
286
+ type: 'band',
287
+ orient: 'bottom'
288
+ }
289
+ ];
290
+ return result;
291
+ };
292
+ const xLinear = (spec)=>{
293
+ const result = {
294
+ ...spec
295
+ };
296
+ if (!result.axes) result.axes = [];
297
+ result.axes = [
298
+ ...result.axes,
299
+ {
300
+ visible: true,
301
+ type: 'linear',
302
+ orient: 'bottom'
303
+ }
304
+ ];
305
+ return result;
306
+ };
307
+ const yBand = (spec)=>{
308
+ const result = {
309
+ ...spec
310
+ };
311
+ if (!result.axes) result.axes = [];
312
+ result.axes = [
313
+ ...result.axes,
314
+ {
315
+ visible: true,
316
+ type: 'band',
317
+ orient: 'left'
318
+ }
319
+ ];
320
+ return result;
321
+ };
322
+ const yLinear = (spec)=>{
323
+ const result = {
324
+ ...spec
325
+ };
326
+ if (!result.axes) result.axes = [];
327
+ result.axes = [
328
+ ...result.axes,
329
+ {
330
+ visible: true,
331
+ type: 'linear',
332
+ orient: 'left'
333
+ }
334
+ ];
335
+ return result;
336
+ };
337
+ const columnSpecPipeline = [
338
+ initColumn,
339
+ dataset_dataset,
340
+ xBand,
341
+ yLinear
342
+ ];
343
+ const barSpecPipeline = [
344
+ initBar,
345
+ dataset_dataset,
346
+ xLinear,
347
+ yBand
348
+ ];
349
+ const execPipeline = (pipeline, context, initialValue = {})=>{
350
+ const result = pipeline.reduce((prev, cur)=>cur(prev, context), initialValue);
351
+ return result;
352
+ };
353
+ const buildAdvanced = (builder)=>{
354
+ const { chartType } = builder.vseed;
355
+ if (!chartType) throw new Error('chartType is nil in buildAdvanced');
356
+ const pipeline = builder.getAdvancedPipeline(chartType);
357
+ if (!pipeline) throw new Error(`no advanced pipeline for chartType ${chartType}`);
358
+ const context = {
359
+ vseed: builder.vseed
360
+ };
361
+ try {
362
+ return execPipeline(pipeline, context);
363
+ } catch (e) {
364
+ console.error(e);
365
+ throw new Error("buildAdvanced error, see error info in console");
366
+ }
367
+ };
368
+ const buildSpec = (builder, advancedVSeed)=>{
369
+ const { chartType } = builder.vseed;
370
+ if (!chartType) throw new Error('chartType is nil in buildSpec');
371
+ const pipeline = builder.getSpecPipeline(chartType);
372
+ if (!pipeline) throw new Error(`no spec pipeline for chartType ${chartType}`);
373
+ const context = {
374
+ vseed: builder.vseed,
375
+ advancedVSeed
376
+ };
377
+ try {
378
+ return execPipeline(pipeline, context);
379
+ } catch (e) {
380
+ console.error(e);
381
+ throw new Error("buildSpec error, see error info in console");
382
+ }
383
+ };
384
+ const build = (builder)=>{
385
+ const advancedVSeed = builder.buildAdvanced();
386
+ console.log('debug advancedVSeed', advancedVSeed);
387
+ if (!advancedVSeed) throw new Error('advancedVSeed is null');
388
+ const spec = builder.buildSpec(advancedVSeed);
389
+ console.log('debug spec', spec);
390
+ return spec;
391
+ };
392
+ class Builder {
393
+ _vseed;
394
+ _advancedVSeed;
395
+ static _advancedPipelineMap = {};
396
+ static _specPipelineMap = {};
397
+ static from = (vseed)=>new Builder(vseed);
398
+ constructor(vseed){
399
+ this._vseed = vseed;
400
+ this._advancedVSeed = null;
401
+ }
402
+ build = ()=>build(this);
403
+ buildSpec = (advanced)=>buildSpec(this, advanced);
404
+ buildAdvanced = ()=>buildAdvanced(this);
405
+ getAdvancedPipeline = (chartType)=>Builder._advancedPipelineMap[chartType];
406
+ getSpecPipeline = (chartType)=>Builder._specPipelineMap[chartType];
407
+ get vseed() {
408
+ return this._vseed;
409
+ }
410
+ set vseed(value) {
411
+ this._vseed = value;
412
+ }
413
+ get advancedVSeed() {
414
+ return this._advancedVSeed;
415
+ }
416
+ set advancedVSeed(value) {
417
+ this._advancedVSeed = value;
418
+ }
419
+ }
420
+ const registerAll = ()=>{
421
+ registerColumn();
422
+ registerBar();
423
+ };
424
+ const registerColumn = ()=>{
425
+ Builder._advancedPipelineMap.column = columnAdvancedPipeline;
426
+ Builder._specPipelineMap.column = columnSpecPipeline;
427
+ };
428
+ const registerBar = ()=>{
429
+ Builder._advancedPipelineMap.bar = barAdvancedPipeline;
430
+ Builder._specPipelineMap.bar = barSpecPipeline;
431
+ };
432
+ const zChartType = z["enum"]([
433
+ 'table',
434
+ 'pivotTable',
435
+ 'line',
436
+ 'column',
437
+ 'columnPercent',
438
+ 'columnParallel',
439
+ 'bar',
440
+ 'barPercent',
441
+ 'barParallel',
442
+ 'area',
443
+ 'areaPercent',
444
+ 'rose',
445
+ 'pie',
446
+ 'donut',
447
+ 'dualAxis'
448
+ ]);
449
+ const zDatum = z.record(z.string().or(z.number()), z.any());
450
+ const zDataset = z.array(zDatum);
451
+ const zDimension = z.object({
452
+ id: z.string(),
453
+ alias: z.string().optional(),
454
+ visible: z.boolean().default(true).optional(),
455
+ location: z["enum"]([
456
+ 'dimension',
457
+ 'rowDimension',
458
+ 'columnDimension'
459
+ ])
460
+ });
461
+ const zDimensions = z.array(zDimension).optional();
462
+ const zMeasure = z.object({
463
+ id: z.string(),
464
+ alias: z.string().optional(),
465
+ visible: z.boolean().default(true).optional(),
466
+ autoFormat: z.boolean().default(true).optional(),
467
+ format: z.object({
468
+ type: z["enum"]([
469
+ 'number',
470
+ 'percent',
471
+ 'permille'
472
+ ]).optional().default('number'),
473
+ ratio: z.number().optional().default(1),
474
+ symbol: z.string().optional().default(''),
475
+ thousandSeparator: z.boolean().optional().default(false),
476
+ decimalPlaces: z.number().optional().default(2),
477
+ round: z["enum"]([
478
+ 'round',
479
+ 'floor',
480
+ 'ceil'
481
+ ]).optional().default('round'),
482
+ prefix: z.string().optional().default(''),
483
+ suffix: z.string().optional().default('')
484
+ }).optional()
485
+ });
486
+ const zMeasureGroup = z.object({
487
+ id: z.string(),
488
+ alias: z.string().optional(),
489
+ visible: z.boolean().default(true).optional(),
490
+ get children () {
491
+ return z.array(zMeasureGroup.or(zMeasure)).optional();
492
+ }
493
+ });
494
+ const zMeasures = z.array(zMeasureGroup.or(zMeasure)).optional();
495
+ const zVSeed = z.object({
496
+ chartType: zChartType,
497
+ dataset: zDataset,
498
+ dimensions: zDimensions,
499
+ measures: zMeasures
500
+ });
501
+ const VSeedJSONSchema = z.toJSONSchema(zVSeed);
502
+ const zEncoding = z.array(z.object({
503
+ x: z.array(z.string()).optional(),
504
+ y: z.array(z.string()).optional(),
505
+ color: z.array(z.string()).optional(),
506
+ group: z.array(z.string()).optional(),
507
+ angle: z.array(z.string()).optional(),
508
+ radius: z.array(z.string()).optional(),
509
+ tooltip: z.array(z.string()).optional()
510
+ }));
511
+ const zFoldInfo = z.object({
512
+ foldMap: z.record(z.string(), z.string().or(z.undefined())),
513
+ measureId: z.string(),
514
+ measureName: z.string(),
515
+ measureValue: z.string()
516
+ });
517
+ const zUnfoldInfo = z.object({
518
+ colorItems: z.array(z.string()),
519
+ groupName: z.string()
520
+ });
521
+ const zDatasetReshapeInfo = z.object({
522
+ foldInfo: zFoldInfo,
523
+ unfoldInfo: zUnfoldInfo
524
+ });
525
+ const zAdvancedVSeed = z.object({
526
+ chartType: zChartType,
527
+ dataset: zDataset,
528
+ datasetReshapeInfo: zDatasetReshapeInfo,
529
+ dimensions: zDimensions,
530
+ measures: zMeasures,
531
+ encoding: zEncoding
532
+ });
533
+ export { Builder, VSeedJSONSchema, barAdvancedPipeline, barSpecPipeline, columnAdvancedPipeline, columnSpecPipeline, dataReshapeFor1D1M_dataReshapeFor1D1M as dataReshapeFor1D1M, dataReshapeFor2D1M, execPipeline, foldMeasures, registerAll, registerBar, registerColumn, unfoldDimensions, zAdvancedVSeed, zChartType, zDataset, zDatasetReshapeInfo, zDatum, zDimension, zDimensions, zEncoding, zFoldInfo, zMeasure, zMeasureGroup, zMeasures, zUnfoldInfo, zVSeed };
@@ -0,0 +1 @@
1
+ export * from './pipeline';
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipeline } from '../../../types';
2
+ export declare const barAdvancedPipeline: AdvancedPipeline;
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipeline } from '../../../types';
2
+ export declare const columnAdvancedPipeline: AdvancedPipeline;
@@ -0,0 +1,2 @@
1
+ export { barAdvancedPipeline } from './bar';
2
+ export { columnAdvancedPipeline } from './column';
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../types';
2
+ export declare const encodingCartesian: AdvancedPipe;
@@ -0,0 +1 @@
1
+ export { encodingCartesian } from './encodingCartesian';
@@ -0,0 +1,2 @@
1
+ export * from './reshape';
2
+ export * from './encoding';
@@ -0,0 +1,2 @@
1
+ export { reshapeTo2D1M } from './reshapeTo2D1M';
2
+ export { reshapeTo1D1M } from './reshapeTo1D1M';
@@ -0,0 +1,8 @@
1
+ import type { AdvancedPipe } from '../../../../types';
2
+ /**
3
+ * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.
4
+ * @param advancedVSeed
5
+ * @param context
6
+ * @returns
7
+ */
8
+ export declare const reshapeTo1D1M: AdvancedPipe;
@@ -0,0 +1,8 @@
1
+ import type { AdvancedPipe } from '../../../../types';
2
+ /**
3
+ * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.
4
+ * @param advancedVSeed
5
+ * @param context
6
+ * @returns
7
+ */
8
+ export declare const reshapeTo2D1M: AdvancedPipe;
@@ -0,0 +1,3 @@
1
+ export * from './advanced';
2
+ export * from './spec';
3
+ export * from './utils';
@@ -0,0 +1 @@
1
+ export * from './pipeline';
@@ -0,0 +1,2 @@
1
+ import type { SpecPipeline } from '../../../types';
2
+ export declare const barSpecPipeline: SpecPipeline;
@@ -0,0 +1,2 @@
1
+ import type { SpecPipeline } from '../../../types';
2
+ export declare const columnSpecPipeline: SpecPipeline;
@@ -0,0 +1,2 @@
1
+ export { columnSpecPipeline } from './column';
2
+ export { barSpecPipeline } from './bar';
@@ -0,0 +1,4 @@
1
+ export { xBand } from './xBand';
2
+ export { xLinear } from './xLinear';
3
+ export { yBand } from './yBand';
4
+ export { yLinear } from './yLinear';
File without changes
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const xBand: SpecPipe;
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const xLinear: SpecPipe;
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const yBand: SpecPipe;
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const yLinear: SpecPipe;
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const dataset: SpecPipe;
@@ -0,0 +1 @@
1
+ export { dataset } from './dataset';
@@ -0,0 +1,3 @@
1
+ export * from './dataset';
2
+ export * from './init';
3
+ export * from './axes';
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const initBar: SpecPipe;
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const initColumn: SpecPipe;
@@ -0,0 +1,2 @@
1
+ export { initColumn } from './column';
2
+ export { initBar } from './bar';
@@ -0,0 +1 @@
1
+ export { execPipeline } from './pipeline';
@@ -0,0 +1,9 @@
1
+ import type { ExecPipelineType } from '../../types';
2
+ /**
3
+ * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果
4
+ * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分
5
+ * @param initialValue 初始值
6
+ * @param context 上下文
7
+ * @returns 执行后的结果
8
+ */
9
+ export declare const execPipeline: ExecPipelineType;
@@ -0,0 +1,10 @@
1
+ import type { ISpec } from '@visactor/vchart';
2
+ import type { AdvancedVSeed, VSeed } from '../properties';
3
+ export interface VSeedBuilder {
4
+ build: () => ISpec;
5
+ buildAdvanced: () => AdvancedVSeed | null;
6
+ buildSpec: (advancedVSeed: AdvancedVSeed) => ISpec;
7
+ get vseed(): VSeed;
8
+ get advancedVSeed(): VSeed | null;
9
+ set advancedVSeed(value: VSeed | null);
10
+ }