@visactor/vseed 0.0.4 → 0.0.6

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 (56) hide show
  1. package/dist/builder/builder/build.d.ts +2 -2
  2. package/dist/builder/builder/buildSpec.d.ts +2 -2
  3. package/dist/builder/builder/builder.d.ts +8 -5
  4. package/dist/dataReshape/constant.d.ts +1 -1
  5. package/dist/dataReshape/dataReshapeFor1D1M.d.ts +6 -1
  6. package/dist/dataReshape/dataReshapeFor2D1M.d.ts +6 -1
  7. package/dist/index.cjs +1762 -0
  8. package/dist/index.cjs.map +1 -0
  9. package/dist/index.js +1545 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/pipeline/advanced/pipes/encoding/{encodingCartesian.d.ts → encodingXY.d.ts} +0 -1
  12. package/dist/pipeline/advanced/pipes/encoding/encodingYX.d.ts +2 -0
  13. package/dist/pipeline/advanced/pipes/encoding/index.d.ts +2 -1
  14. package/dist/pipeline/advanced/pipes/index.d.ts +1 -0
  15. package/dist/pipeline/advanced/pipes/pivot/index.d.ts +1 -0
  16. package/dist/pipeline/advanced/pipes/pivot/pivotAdapter.d.ts +2 -0
  17. package/dist/pipeline/advanced/pipes/reshape/index.d.ts +2 -0
  18. package/dist/pipeline/advanced/pipes/reshape/pivotReshapeTo1D1M.d.ts +8 -0
  19. package/dist/pipeline/advanced/pipes/reshape/pivotReshapeTo2D1M.d.ts +8 -0
  20. package/dist/pipeline/spec/pipeline/area.d.ts +1 -2
  21. package/dist/pipeline/spec/pipeline/areaPercent.d.ts +1 -2
  22. package/dist/pipeline/spec/pipeline/column.d.ts +1 -2
  23. package/dist/pipeline/spec/pipes/dataset/datasetPivot.d.ts +3 -0
  24. package/dist/pipeline/spec/pipes/dataset/index.d.ts +1 -0
  25. package/dist/pipeline/spec/pipes/index.d.ts +1 -0
  26. package/dist/pipeline/spec/pipes/init/index.d.ts +1 -0
  27. package/dist/pipeline/spec/pipes/init/pivot.d.ts +4 -0
  28. package/dist/pipeline/spec/pipes/legend/index.d.ts +1 -0
  29. package/dist/pipeline/spec/pipes/legend/pivotLegend.d.ts +2 -0
  30. package/dist/pipeline/spec/pipes/pivotChart/index.d.ts +2 -0
  31. package/dist/pipeline/spec/pipes/pivotChart/pivotAdapter.d.ts +2 -0
  32. package/dist/pipeline/spec/pipes/pivotChart/pivotIndicators.d.ts +4 -0
  33. package/dist/types/advancedVSeed.d.ts +3 -2
  34. package/dist/types/builder/builder.d.ts +3 -3
  35. package/dist/types/builder/index.d.ts +1 -0
  36. package/dist/types/builder/spec.d.ts +3 -0
  37. package/dist/types/pipeline/spec/spec.d.ts +2 -2
  38. package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +3 -2
  39. package/dist/types/properties/datasetReshapeInfo/index.d.ts +1 -1
  40. package/package.json +1 -1
  41. package/dist/.rsdoctor/chunkGraph/0 +0 -1
  42. package/dist/.rsdoctor/configs/0 +0 -1
  43. package/dist/.rsdoctor/envinfo/0 +0 -1
  44. package/dist/.rsdoctor/errors/0 +0 -1
  45. package/dist/.rsdoctor/loader/0 +0 -1
  46. package/dist/.rsdoctor/manifest.json +0 -52
  47. package/dist/.rsdoctor/moduleCodeMap/0 +0 -1
  48. package/dist/.rsdoctor/moduleGraph/0 +0 -1
  49. package/dist/.rsdoctor/otherReports/0 +0 -1
  50. package/dist/.rsdoctor/packageGraph/0 +0 -1
  51. package/dist/.rsdoctor/plugin/0 +0 -1
  52. package/dist/.rsdoctor/resolver/0 +0 -1
  53. package/dist/.rsdoctor/summary/0 +0 -1
  54. package/dist/index.html +0 -1
  55. package/dist/static/js/271.b02e15b2.js +0 -16
  56. package/dist/static/js/index.7ac2af0b.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["webpack://@visactor/vseed/./src/dataReshape/constant.ts","webpack://@visactor/vseed/./src/dataReshape/unfoldDimensions.ts","webpack://@visactor/vseed/./src/dataReshape/foldMeasures.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor2D1M.ts","webpack://@visactor/vseed/./src/dataReshape/dataReshapeFor1D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/reshape/reshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/reshape/pivotReshapeTo2D1M.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/encoding/encodingXY.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/encoding/encodingYX.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/init/initAdvancedVSeed.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/init/autoMeasures.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/init/autoDimensions.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/baseConfig/baseConfig.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/theme/theme.ts","webpack://@visactor/vseed/./src/pipeline/utils/pipeline.ts","webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipes/pivot/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/advanced/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/dataset/dataset.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/dataset/datasetPivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/init/pivot.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/axes/xBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/axes/xLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/axes/yBand.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/axes/yLinear.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/percent/percent.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/stack/stack.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/backgroundColor/background.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/tooltip/tooltip.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/label/label.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/legend/legend.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/legend/pivotLegend.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/color/color.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/pivotChart/pivotAdapter.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipes/pivotChart/pivotIndicators.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/line.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/column.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/columnParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/columnPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/bar.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/barParallel.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/barPercent.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/area.ts","webpack://@visactor/vseed/./src/pipeline/spec/pipeline/areaPercent.ts","webpack://@visactor/vseed/./src/builder/builder/buildAdvanced.ts","webpack://@visactor/vseed/./src/builder/builder/buildSpec.ts","webpack://@visactor/vseed/./src/builder/builder/build.ts","webpack://@visactor/vseed/./src/builder/builder/builder.ts","webpack://@visactor/vseed/./src/builder/register/chartType.ts","webpack://@visactor/vseed/./src/theme/dark.ts","webpack://@visactor/vseed/./src/theme/light.ts","webpack://@visactor/vseed/./src/builder/register/theme.ts","webpack://@visactor/vseed/./src/builder/register/all.ts","webpack://@visactor/vseed/./src/types/properties/chartType/zChartType.ts","webpack://@visactor/vseed/./src/types/properties/dataset/dataset.ts","webpack://@visactor/vseed/./src/types/properties/dimensions/dimensions.ts","webpack://@visactor/vseed/./src/types/properties/measures/measures.ts","webpack://@visactor/vseed/./src/types/properties/datasetReshapeInfo/datasetReshapeInfo.ts","webpack://@visactor/vseed/./src/types/properties/encoding/encoding.ts","webpack://@visactor/vseed/./src/types/properties/baseConfig/backgroundColor.ts","webpack://@visactor/vseed/./src/types/properties/baseConfig/label.ts","webpack://@visactor/vseed/./src/types/properties/baseConfig/color.ts","webpack://@visactor/vseed/./src/types/properties/baseConfig/tooltip.ts","webpack://@visactor/vseed/./src/types/properties/baseConfig/legend.ts","webpack://@visactor/vseed/./src/types/properties/baseConfig/baseConfig.ts","webpack://@visactor/vseed/./src/types/properties/theme/customTheme.ts","webpack://@visactor/vseed/./src/types/properties/theme/theme.ts"],"sourcesContent":["// Reshape Measures\nexport const FoldMeasureName = '__MeaName__'\nexport const FoldMeasureValue = '__MeaValue__'\nexport const FoldMeasureId = '__MeaId__'\n\n// Reshape Dimensions\nexport const UnfoldDimensionGroup = '__DimGroup__'\n\nexport const Separator = '-'\n","import type { Dataset, Datum, Dimension, Measure } from 'src/types'\nimport type { UnfoldInfo } from 'src/types'\nimport { UnfoldDimensionGroup, Separator } from './constant'\nimport { unique } from 'remeda'\n\n/**\n * TODO: 优化展开维度的性能\n * 展开指定的维度\n * @description 第一步: 根据指定的维度, 将多个维度展开为N个指标(取决于维值去重后的数量), 随后合并成一个维度.\n */\nexport const unfoldDimensions = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n unfoldStartIndex: number = 0,\n foldGroupName: string = UnfoldDimensionGroup,\n dimensionsSeparator: string = Separator,\n): {\n dataset: Dataset\n unfoldInfo: UnfoldInfo\n} => {\n if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) {\n throw new Error('unfoldStartIndex is out of range')\n }\n\n const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex)\n const unfoldInfo: UnfoldInfo = {\n groupName: foldGroupName,\n colorItems: [],\n }\n\n // 指标为空或维度为空, 则不检测\n if (dimensions.length === 0 || measures.length === 0) {\n return {\n dataset,\n unfoldInfo: {\n groupName: foldGroupName,\n colorItems: [],\n },\n }\n }\n\n const colorItems = []\n for (let i = 0; i < dataset.length; i++) {\n const datum = dataset[i]\n const colorItem = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator)\n datum[foldGroupName] = colorItem\n colorItems.push(colorItem)\n }\n\n unfoldInfo.colorItems = unique(colorItems)\n return {\n dataset,\n unfoldInfo,\n }\n}\n\n/**\n * 生成维度组合名称\n * @param dimensionsToBeGrouped 待分组的维度\n * @param datum 数据项\n * @param dimensionsSeparator 维度分隔符\n * @returns 维度组合名称\n */\nexport const generateDimGroupName = (dimensionsToBeGrouped: Dimension[], datum: Datum, dimensionsSeparator: string) => {\n return dimensionsToBeGrouped.map((dim) => String(datum[dim.id])).join(dimensionsSeparator)\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Dataset, FoldInfo, Measure, Measures } from 'src/types'\nimport { FoldMeasureId, FoldMeasureName, FoldMeasureValue } from './constant'\n\n/**\n * 折叠指定的指标\n * @description 合并指定的指标为1个, 无论多少个, 都能转换为1个, 取名为fold, 意为折叠后混合在一起.\n */\nexport const foldMeasures = (\n dataset: Dataset,\n measures: Measure[],\n measureId = FoldMeasureId,\n measureName = FoldMeasureName,\n measureValue = FoldMeasureValue,\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n} => {\n const foldInfo: FoldInfo = {\n measureId,\n measureName,\n measureValue,\n foldMap: {},\n }\n const result: Dataset = new Array(dataset.length * measures.length) as Dataset\n let index = 0\n for (let i = 0; i < dataset.length; i++) {\n for (let j = 0; j < measures.length; j++) {\n const datum: Record<string, any> = { ...dataset[i] }\n\n const measure = measures[j]\n const { id, alias } = measure\n datum[measureId] = id\n datum[measureName] = alias\n datum[measureValue] = dataset[i][id] as unknown\n\n foldInfo.foldMap[id] = alias\n result[index++] = datum\n }\n }\n\n return {\n dataset: result,\n foldInfo,\n }\n}\n\n/**\n * 折叠指定的指标组, 至多支持2层\n * @param dataset\n * @param measures\n * @param measureId\n * @param measureName\n * @param measureValue\n * @returns\n */\nexport const foldMeasureGroups = (\n dataset: Dataset,\n measures: Required<Measures>,\n measureId = '__MeaId__',\n measureName = '__MeaName__',\n measureValue = '__MeaValue__',\n) => {\n const groups: Array<Measures> = []\n if (!measures) {\n return {\n dataset,\n }\n }\n\n // 没有分组, 直接折叠所有指标\n if (!measures.some((measure) => 'children' in measure)) {\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n }\n\n measures.forEach((measure) => {\n if ('children' in measure && measure.children) {\n groups.push(measure.children)\n } else {\n groups.push([measure])\n }\n })\n\n // 一组返回一个dataset\n const datasetGroup = groups.map((measures) => {\n if (!measures) {\n return []\n }\n return foldMeasures(dataset, measures, measureId, measureName, measureValue)\n })\n\n return {\n datasetGroup,\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { UnfoldDimensionGroup, FoldMeasureId, FoldMeasureName, FoldMeasureValue } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nconst emptyReshapeResult: {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n colorItems: [],\n groupName: '',\n },\n}\n/**\n * 数据重塑为2个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor2D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n } = options || {}\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [\n { id: foldMeasureId, alias: '指标Id', location: 'dimension' },\n { id: foldMeasureName, alias: '指标名称', location: 'dimension' },\n ],\n [{ id: foldMeasureValue, alias: '指标值' }],\n 1,\n unfoldDimensionGroup,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [...dimensions, { id: foldMeasureName, alias: '指标名称', location: 'dimension' }],\n [{ id: foldMeasureValue, alias: '指标值' }],\n 1,\n unfoldDimensionGroup,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import type { Dataset, Dimension, FoldInfo, Measure, UnfoldInfo } from 'src/types'\nimport { foldMeasures } from './foldMeasures'\nimport { UnfoldDimensionGroup, FoldMeasureId, FoldMeasureName, FoldMeasureValue } from './constant'\nimport { unfoldDimensions } from './unfoldDimensions'\n\nconst emptyReshapeResult = {\n dataset: [],\n foldInfo: {\n foldMap: {},\n measureId: '',\n measureName: '',\n measureValue: '',\n },\n unfoldInfo: {\n groupName: '',\n colorItems: [],\n },\n}\n/**\n * 数据重塑为1个维度1个指标\n * @param dataset\n * @param dimensions\n * @param measures\n * @returns\n */\nexport const dataReshapeFor1D1M = (\n dataset: Dataset,\n dimensions: Dimension[],\n measures: Measure[],\n options?: {\n foldMeasureId?: string\n foldMeasureName?: string\n foldMeasureValue?: string\n unfoldDimensionGroup?: string\n },\n): {\n dataset: Dataset\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n} => {\n const {\n foldMeasureId = FoldMeasureId,\n foldMeasureName = FoldMeasureName,\n foldMeasureValue = FoldMeasureValue,\n unfoldDimensionGroup = UnfoldDimensionGroup,\n } = options || {}\n\n if (dimensions.length === 0 && measures.length === 0) {\n return emptyReshapeResult\n }\n\n // 合并所有指标为1个指标\n const { dataset: foldedDataset, foldInfo } = foldMeasures(\n dataset,\n measures,\n foldMeasureId,\n foldMeasureName,\n foldMeasureValue,\n )\n\n if (dimensions.length === 0) {\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [{ id: foldMeasureName, alias: '指标名称', location: 'dimension' }],\n [{ id: foldMeasureValue, alias: '指标值' }],\n 0,\n unfoldDimensionGroup,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n } else {\n // 展开指定的维度为指标\n const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(\n foldedDataset,\n [...dimensions, { id: foldMeasureName, alias: '指标名称', location: 'dimension' }],\n [{ id: foldMeasureValue, alias: '指标值' }],\n 0,\n unfoldDimensionGroup,\n )\n return { dataset: finalDataset, foldInfo, unfoldInfo }\n }\n}\n","import { dataReshapeFor2D1M } from '../../../../dataReshape'\nimport type { AdvancedPipe } from 'src/types'\n\n/**\n * 数据重塑, 将任意维度、任意指标, 重塑为2个维度1个指标.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const reshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions || !dataset) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures)\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: '2D1M',\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n","import { FoldMeasureId, FoldMeasureName, FoldMeasureValue, UnfoldDimensionGroup } from '../../../../dataReshape/constant'\nimport { dataReshapeFor2D1M } from '../../../../dataReshape'\nimport type { AdvancedPipe, Dataset, DatasetReshapeInfo, MeasureGroup } from 'src/types'\n\n/**\n * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.\n * @param advancedVSeed\n * @param context\n * @returns\n */\nexport const pivotReshapeTo2D1M: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed\n const { dimensions, measures } = advancedVSeed\n\n if (!measures || !dimensions) {\n return result\n }\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const newDatasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n measureGroups.forEach((measureGroup) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeFor2D1M(dataset, dimensions, measures, {\n foldMeasureId: FoldMeasureId + groupId,\n foldMeasureName: FoldMeasureName + groupId,\n foldMeasureValue: FoldMeasureValue + groupId,\n unfoldDimensionGroup: UnfoldDimensionGroup + groupId,\n })\n const reshapeInfo = {\n id: groupId,\n foldInfo,\n unfoldInfo,\n }\n newDatasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingXY: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const isSingleDimension = dimensions.length === 0\n\n const x = [isSingleDimension ? foldInfo.measureName : dimensions[0].id]\n const y = [foldInfo.measureValue]\n const group = [isSingleDimension ? foldInfo.measureName : unfoldInfo.groupName]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\nimport type { Encoding } from 'src/types'\n\nexport const encodingYX: AdvancedPipe = (advancedVSeed) => {\n const result = { ...advancedVSeed }\n const { datasetReshapeInfo, dimensions } = advancedVSeed\n if (!datasetReshapeInfo || !dimensions) {\n return result\n }\n\n const encoding = datasetReshapeInfo.reduce<Encoding>((prev, cur) => {\n const { foldInfo, unfoldInfo } = cur\n\n const isSingleDimension = dimensions.length === 0\n\n const y = [isSingleDimension ? foldInfo.measureName : dimensions[0].id]\n const x = [foldInfo.measureValue]\n const group = [isSingleDimension ? foldInfo.measureName : unfoldInfo.groupName]\n const color = [foldInfo.measureName]\n\n return [\n ...prev,\n {\n x,\n y,\n group,\n color,\n },\n ] as Encoding\n }, [])\n\n return {\n ...result,\n encoding,\n }\n}\n","import type { AdvancedPipe } from 'src/types'\n\nexport const initAdvancedVSeed: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { chartType = 'table' } = vseed\n return {\n ...advancedVSeed,\n chartType,\n }\n}\n","import type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (measures) {\n result.measures = measures\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.measures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return result\n}\n","import type { AdvancedPipe, Datum } from 'src/types'\n\nexport const autoDimensions: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dimensions, dataset } = vseed\n\n const { measures = [] } = advancedVSeed\n if (!dataset) {\n throw new Error('dataset is required')\n }\n\n if (dataset.length === 0) {\n return result\n }\n\n if (dimensions) {\n result.dimensions = dimensions\n return result\n }\n\n const top100dataset = dataset.slice(0, 100)\n\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n\n result.dimensions = Object.keys(sample)\n .filter(\n (key) =>\n top100dataset.some((item) => typeof item[key] === 'string') &&\n !['', null, undefined].includes(key) &&\n !measures.some((measure) => measure.id === key),\n )\n .map((dim) => ({\n id: dim,\n alias: dim,\n location: 'dimension',\n }))\n\n return result\n}\n","import { pick } from 'remeda'\nimport type { AdvancedPipe, VChartBaseConfig, VTableBaseConfig } from 'src/types'\n\nexport const vchartBaseConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n const result = {\n ...advancedVSeed,\n }\n\n const config: VChartBaseConfig = pick(vseed, ['backgroundColor', 'color', 'label', 'legend', 'tooltip'])\n\n result.baseConfig = {\n vchart: {\n ...config,\n },\n }\n return result\n}\n\nexport const vtableBaseConfig: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const config: VTableBaseConfig = pick(vseed, ['backgroundColor'])\n\n return {\n ...advancedVSeed,\n baseConfig: {\n vtable: {\n ...config,\n },\n },\n }\n}\n","import { clone, mergeDeep } from 'remeda'\nimport type { AdvancedPipe } from 'src/types'\n\nexport const vchartTheme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light' } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n const config = result.baseConfig?.vchart\n const themeConfig = customTheme?.[theme].baseConfig?.vchart\n\n if (!themeConfig || !config) {\n return result\n }\n\n const mergedConfig = mergeDeep(themeConfig, clone(config))\n result.baseConfig = {\n vchart: mergedConfig,\n }\n return result\n}\n\nexport const vtableTheme: AdvancedPipe = (advancedVSeed, context) => {\n const { customTheme, vseed } = context\n const { theme = 'light' } = vseed\n const result = {\n ...advancedVSeed,\n }\n\n if (!customTheme || !customTheme[theme]) {\n return result\n }\n\n const config = result.baseConfig?.vtable\n const themeConfig = customTheme?.[theme].baseConfig?.vtable\n\n if (!themeConfig || !config) {\n return result\n }\n\n const mergedConfig = mergeDeep(themeConfig, clone(config))\n result.baseConfig = {\n vchart: mergedConfig,\n }\n return result\n}\n","import type { ExecPipelineType, Pipe } from 'src/types'\n\n/**\n * 执行pipeline, 每个pipe负责构建结果的一部分, 构建完成后得到完整的目标结果\n * @param pipeline pipeline数组, 每个pipe负责构建结果的一部分\n * @param initialValue 初始值\n * @param context 上下文\n * @returns 执行后的结果\n */\nexport const execPipeline: ExecPipelineType = <T, U>(\n pipeline: Array<Pipe<T, U>>,\n context: U,\n initialValue: Partial<T> = {},\n): T => {\n const result = pipeline.reduce((prev, cur) => {\n return cur(prev, context)\n }, initialValue)\n return result as T\n}\n","import type { ChartType } from 'src/types'\n\nexport const isVTable = (chartType: ChartType) => {\n return ['table', 'pivotTable'].includes(chartType)\n}\n\nexport const isVChart = (chartType: ChartType) => {\n return !isVTable(chartType)\n}\n","import type { AdvancedPipe, AdvancedPipeline, AdvancedPipelineContext, AdvancedVSeed, MeasureGroup } from 'src/types'\nimport { execPipeline } from '../../../utils'\n\nexport const pivotAdapter = (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline): AdvancedPipe => {\n return (advancedVSeed, context) => {\n const { vseed } = context\n const { measures } = vseed\n\n if (measures && measures.find((measure: MeasureGroup) => measure && measure.children)) {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pivotPipeline, context, advancedVSeed)\n }\n\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context, advancedVSeed)\n }\n}\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const lineAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n encodingYX,\n vchartBaseConfig,\n vchartTheme,\n autoMeasures,\n autoDimensions,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n} from '../pipes'\n\nexport const barAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const barParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingYX,\n initAdvancedVSeed,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n pivotReshapeTo2D1M\n} from '../pipes'\n\nexport const barPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingYX,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n} from '../pipes'\nimport { pivotReshapeTo2D1M } from '../pipes/reshape/pivotReshapeTo2D1M'\n\nexport const columnAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const columnParallelAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n vchartBaseConfig,\n vchartTheme,\n reshapeTo2D1M,\n pivotReshapeTo2D1M,\n pivotAdapter,\n} from '../pipes'\n\nexport const columnPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n pivotReshapeTo2D1M,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n} from '../pipes'\n\nexport const areaAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { AdvancedPipeline } from 'src/types'\nimport {\n autoDimensions,\n autoMeasures,\n encodingXY,\n initAdvancedVSeed,\n reshapeTo2D1M,\n vchartBaseConfig,\n vchartTheme,\n pivotAdapter,\n pivotReshapeTo2D1M,\n} from '../pipes'\n\nexport const areaPercentAdvancedPipeline: AdvancedPipeline = [\n initAdvancedVSeed,\n autoMeasures,\n autoDimensions,\n pivotAdapter([reshapeTo2D1M], [pivotReshapeTo2D1M]),\n encodingXY,\n vchartBaseConfig,\n vchartTheme,\n]\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const dataset: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n return {\n ...spec,\n data: {\n values: advancedVSeed.dataset,\n },\n } as ISpec\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const datasetPivot: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { dataset, datasetReshapeInfo } = advancedVSeed\n const records = dataset.reduce((pre, cur, index) => {\n const id = datasetReshapeInfo[index].id\n pre[id] = cur\n return pre\n }, {})\n return {\n ...result,\n records: records,\n } as PivotChartConstructorOptions\n}\n\nexport const datasetPivotPlaceholder: SpecPipe = (spec) => {\n return {\n ...spec,\n data: {\n id: 'placeholderDataId',\n },\n } as ISpec\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumn: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBar: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = encoding[0].y?.[0]\n result.xField = encoding[0].x?.[0]\n result.seriesField = encoding[0].group?.[0]\n result.padding = 0\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'horizontal'\n result.yField = [encoding[0].y[0], unfoldInfo.groupName] as string[]\n result.xField = encoding[0].x[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n return result\n}\n","import type { IAreaChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initArea: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'area'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initLine: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'line'\n result.direction = 'vertical'\n result.xField = encoding[0].x[0]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n return result\n}\n","import type { IBarChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { encoding, datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n if (!encoding[0].y || !encoding[0].x || !encoding[0].group) {\n return result\n }\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [encoding[0].x[0], unfoldInfo.groupName]\n result.yField = encoding[0].y[0]\n result.seriesField = encoding[0].group[0]\n result.padding = 0\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { SpecPipe } from 'src/types'\n\nexport const initPivot: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n rows: [],\n columns: [],\n indicators: [],\n records: [],\n widthMode: 'adaptive',\n heightMode: 'adaptive',\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const xBand: SpecPipe = (spec) => {\n const result = { ...spec } as ISpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'bottom',\n },\n ] as ISpec['axes']\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const xLinear: SpecPipe = (spec) => {\n const result = { ...spec } as ISpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'bottom',\n nice: true,\n zero: true,\n },\n ] as ISpec['axes']\n\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const yBand: SpecPipe = (spec) => {\n const result = { ...spec } as ISpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'band',\n orient: 'left',\n },\n ] as ISpec['axes']\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const yLinear: SpecPipe = (spec) => {\n const result = { ...spec } as ISpec\n\n if (!result.axes) {\n result.axes = []\n }\n\n result.axes = [\n ...result.axes,\n {\n visible: true,\n type: 'linear',\n orient: 'left',\n nice: true,\n zero: true,\n },\n ] as ISpec['axes']\n\n return result\n}\n","import { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport { SpecPipe } from 'src/types'\n\nexport const percent: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.percent = true\n return result\n}\n","import { IAreaChartSpec, IBarChartSpec } from '@visactor/vchart'\nimport { SpecPipe } from 'src/types'\n\nexport const stack: SpecPipe = (spec, context) => {\n const result = { ...spec } as IAreaChartSpec | IBarChartSpec\n result.stack = true\n return result\n}\n","import type { ISpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\n\nexport const backgroundColor: SpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed } = context\n const { baseConfig } = advancedVSeed\n if (!baseConfig?.vchart) {\n return result\n }\n const { backgroundColor } = baseConfig.vchart\n return {\n ...result,\n background: backgroundColor,\n }\n}\n","import type { SpecPipe, Tooltip } from 'src/types'\n\nconst defaultTooltip: Tooltip = {\n enable: true,\n}\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const baseConfig = advancedVSeed.baseConfig.vchart as { tooltip: Tooltip }\n const { tooltip = defaultTooltip } = baseConfig\n\n const { enable } = tooltip\n\n result.tooltip = {\n visible: enable,\n }\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Label, SpecPipe } from 'src/types'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const baseConfig = advancedVSeed.baseConfig.vchart\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const { label } = baseConfig\n const { enable } = label as Label\n\n result.label = {\n visible: enable,\n }\n return result\n}\n","import type { Legend, SpecPipe } from 'src/types'\n\nconst defaultLegend = {\n enable: true,\n}\n\nexport const legend: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const baseConfig = advancedVSeed.baseConfig.vchart\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend = defaultLegend } = baseConfig\n const { enable } = legend as Legend\n\n result.legends = {\n visible: enable,\n }\n return result\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport type { IDiscreteTableLegendOption } from '@visactor/vtable/es/ts-types/component/legend'\nimport { unique } from 'remeda'\nimport type { Color, Legend, SpecPipe } from 'src/types'\n\nexport const pivotLegend: SpecPipe = (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const baseConfig = advancedVSeed.baseConfig.vchart\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { datasetReshapeInfo } = advancedVSeed\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const { legend, color } = baseConfig\n const { enable } = legend as Legend\n const { colorScheme } = color as Color\n\n result.legends = {\n visible: enable,\n alignSelf: 'end',\n type: 'discrete',\n position: 'start',\n data: colorItems.map((d, index) => ({\n label: d,\n shape: {\n symbolType: 'square',\n fill: colorScheme[index],\n },\n })),\n orient: 'bottom',\n } as unknown as IDiscreteTableLegendOption\n return result\n}\n","import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.baseConfig.vchart\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color as Color\n\n result.color = {\n type: 'ordinal',\n domain: unfoldInfo.colorItems,\n range: colorScheme,\n specified: colorMapping,\n }\n return result\n}\n","import type { MeasureGroup, Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../utils'\n\nexport const pivotAdapter = (pipeline: SpecPipeline, pivotPipeline: SpecPipeline): SpecPipe => {\n return (spec, context) => {\n const { advancedVSeed } = context\n const { measures } = advancedVSeed\n\n if (measures && measures.find((measure: MeasureGroup) => measure && measure.children)) {\n return execPipeline<Spec, SpecPipelineContext>(pivotPipeline, context, spec)\n }\n\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, spec)\n }\n}\n","import type { PivotChartConstructorOptions } from '@visactor/vtable'\nimport { execPipeline } from '../../../utils'\nimport type { SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { unique } from 'remeda'\n\nexport const pivotIndicators =\n (chartPipeline: SpecPipeline): SpecPipe =>\n (spec, context) => {\n const result = { ...spec } as PivotChartConstructorOptions\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, encoding } = advancedVSeed\n\n const colorItems = unique(datasetReshapeInfo.flatMap((d) => d.unfoldInfo.colorItems))\n\n const indicators = datasetReshapeInfo.map((reshapeInfo, index) => {\n const measure = measures?.find((d) => d.id === reshapeInfo.id)\n\n const newEncoding = [encoding[index]]\n const newDatasetReshapeInfo = [{ ...reshapeInfo, unfoldInfo: { ...reshapeInfo.unfoldInfo, colorItems } }]\n\n const newContext: SpecPipelineContext = {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n datasetReshapeInfo: newDatasetReshapeInfo,\n encoding: newEncoding,\n },\n }\n\n const chartSpec = execPipeline(chartPipeline, newContext, {})\n return {\n indicatorKey: reshapeInfo.id,\n title: measure?.alias,\n cellType: 'chart',\n chartModule: 'vchart',\n chartSpec: chartSpec,\n style: {\n padding: [1, 1, 0, 1],\n },\n }\n })\n\n return {\n ...result,\n indicators: indicators,\n } as PivotChartConstructorOptions\n }\n\nexport const pivotIndicatorsAsRow: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: false,\n }\n}\n\nexport const pivotIndicatorsAsCol: SpecPipe = (spec) => {\n const result = { ...spec } as PivotChartConstructorOptions\n\n return {\n ...result,\n indicatorsAsCol: true,\n }\n}\n","import type { SpecPipeline } from 'src/types'\nimport {\n dataset,\n xBand,\n yLinear,\n initLine,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n initPivot,\n datasetPivot,\n datasetPivotPlaceholder,\n pivotLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsRow,\n} from '../pipes'\n\nconst line: SpecPipeline = [initLine, color, backgroundColor, dataset, xBand, yLinear, label, tooltip, legend]\n\nconst pivotLine: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([initLine, color, backgroundColor, datasetPivotPlaceholder, xBand, yLinear, label, tooltip]),\n pivotLegend,\n]\n\nexport const lineSpecPipeline: SpecPipeline = [pivotAdapter(line, pivotLine)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n dataset,\n xBand,\n yLinear,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n datasetPivotPlaceholder,\n pivotIndicators,\n pivotLegend,\n pivotIndicatorsAsRow,\n} from '../pipes'\n\nconst column: SpecPipeline = [initColumn, color, backgroundColor, dataset, xBand, yLinear, label, tooltip, legend]\n\nconst pivotColumn: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([initColumn, color, backgroundColor, datasetPivotPlaceholder, xBand, yLinear, label, tooltip]),\n pivotLegend,\n]\n\nexport const columnSpecPipeline = [pivotAdapter(column, pivotColumn)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n dataset,\n xBand,\n yLinear,\n initColumnParallel,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n pivotIndicators,\n initPivot,\n datasetPivot,\n pivotAdapter,\n datasetPivotPlaceholder,\n pivotLegend,\n pivotIndicatorsAsRow,\n} from '../pipes'\n\nconst columnParallel: SpecPipeline = [\n initColumnParallel,\n color,\n backgroundColor,\n dataset,\n xBand,\n yLinear,\n label,\n tooltip,\n legend,\n]\n\nconst pivotColumnParallel: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumnParallel,\n color,\n backgroundColor,\n datasetPivotPlaceholder,\n xBand,\n yLinear,\n label,\n tooltip,\n ]),\n pivotLegend,\n]\n\nexport const columnParallelSpecPipeline: SpecPipeline = [pivotAdapter(columnParallel, pivotColumnParallel)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initColumn,\n dataset,\n xBand,\n yLinear,\n percent,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n datasetPivotPlaceholder,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotLegend,\n pivotIndicatorsAsRow,\n} from '../pipes'\n\nconst columnPercent: SpecPipeline = [\n initColumn,\n color,\n backgroundColor,\n percent,\n dataset,\n xBand,\n yLinear,\n label,\n tooltip,\n legend,\n]\n\nconst pivotColumnPercent: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([\n initColumn,\n color,\n percent,\n backgroundColor,\n datasetPivotPlaceholder,\n xBand,\n yLinear,\n label,\n tooltip,\n ]),\n pivotLegend,\n]\n\nexport const columnPercentSpecPipeline: SpecPipeline = [pivotAdapter(columnPercent, pivotColumnPercent)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n dataset,\n xLinear,\n yBand,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotLegend,\n datasetPivotPlaceholder,\n pivotIndicatorsAsCol,\n} from '../pipes'\n\nconst bar: SpecPipeline = [initBar, color, backgroundColor, dataset, xLinear, yBand, label, tooltip, legend]\n\nconst pivotBar: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([initBar, color, backgroundColor, datasetPivotPlaceholder, yBand, label, label, tooltip]),\n pivotLegend,\n]\n\nexport const barSpecPipeline: SpecPipeline = [pivotAdapter(bar, pivotBar)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n dataset,\n xLinear,\n yBand,\n initBarParallel,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n datasetPivotPlaceholder,\n initPivot,\n datasetPivot,\n pivotLegend,\n pivotIndicators,\n pivotAdapter,\n pivotIndicatorsAsCol,\n} from '../pipes'\n\nconst barParallel: SpecPipeline = [\n initBarParallel,\n color,\n backgroundColor,\n dataset,\n xLinear,\n yBand,\n label,\n tooltip,\n legend,\n]\n\nconst pivotBarParallel: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([initBarParallel, color, backgroundColor, datasetPivotPlaceholder, yBand, xLinear, label, tooltip]),\n pivotLegend,\n]\n\nexport const barParallelSpecPipeline: SpecPipeline = [pivotAdapter(barParallel, pivotBarParallel)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n initBar,\n dataset,\n xLinear,\n yBand,\n percent,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n pivotAdapter,\n initPivot,\n datasetPivot,\n pivotIndicators,\n pivotLegend,\n datasetPivotPlaceholder,\n pivotIndicatorsAsCol,\n} from '../pipes'\n\nconst barPercent: SpecPipeline = [\n initBar,\n color,\n backgroundColor,\n percent,\n dataset,\n xLinear,\n yBand,\n label,\n tooltip,\n legend,\n]\n\nconst pivotBarPercent: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsCol,\n datasetPivot,\n pivotIndicators([initBar, color, backgroundColor, percent, datasetPivotPlaceholder, yBand, xLinear, label, tooltip]),\n pivotLegend,\n]\n\nexport const barPercentSpecPipeline: SpecPipeline = [pivotAdapter(barPercent, pivotBarPercent)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n dataset,\n xBand,\n yLinear,\n initArea,\n stack,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n datasetPivotPlaceholder,\n datasetPivot,\n pivotIndicators,\n pivotLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n} from '../pipes'\n\nconst area: SpecPipeline = [initArea, color, backgroundColor, stack, dataset, xBand, yLinear, label, tooltip, legend]\n\nconst pivotArea: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([initArea, color, backgroundColor, stack, datasetPivotPlaceholder, xBand, yLinear, label, tooltip]),\n pivotLegend,\n]\n\nexport const areaSpecPipeline = [pivotAdapter(area, pivotArea)]\n","import type { SpecPipeline } from 'src/types'\nimport {\n percent,\n dataset,\n xBand,\n yLinear,\n initArea,\n backgroundColor,\n label,\n tooltip,\n legend,\n color,\n datasetPivotPlaceholder,\n datasetPivot,\n pivotIndicators,\n pivotLegend,\n pivotAdapter,\n initPivot,\n pivotIndicatorsAsRow,\n} from '../pipes'\n\nconst areaPercent: SpecPipeline = [\n initArea,\n color,\n backgroundColor,\n percent,\n dataset,\n xBand,\n yLinear,\n label,\n tooltip,\n legend,\n]\n\nconst pivotAreaPercent: SpecPipeline = [\n initPivot,\n pivotIndicatorsAsRow,\n datasetPivot,\n pivotIndicators([initArea, color, backgroundColor, percent, datasetPivotPlaceholder, xBand, yLinear, label, tooltip]),\n pivotLegend,\n]\n\nexport const areaPercentSpecPipeline = [pivotAdapter(areaPercent, pivotAreaPercent)]\n","import type { AdvancedPipelineContext, AdvancedVSeed } from 'src/types'\nimport { execPipeline } from '../../pipeline'\nimport type { Builder } from './builder'\n\nexport const buildAdvanced = (builder: Builder): AdvancedVSeed | null => {\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildAdvanced')\n }\n\n const pipeline = builder.getAdvancedPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no advanced pipeline for chartType ${chartType}`)\n }\n\n const context: AdvancedPipelineContext = {\n vseed: builder.vseed,\n customTheme: builder.getThemeMap(),\n }\n\n try {\n return execPipeline<AdvancedVSeed, AdvancedPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildAdvanced error, see error info in console`)\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\nimport type { AdvancedVSeed, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../pipeline'\n\nexport const buildSpec = (builder: Builder, advancedVSeed: AdvancedVSeed): Spec => {\n const { chartType } = builder.vseed\n if (!chartType) {\n throw new Error('chartType is nil in buildSpec')\n }\n\n const pipeline = builder.getSpecPipeline(chartType)\n if (!pipeline) {\n throw new Error(`no spec pipeline for chartType ${chartType}`)\n }\n\n const context: SpecPipelineContext = {\n vseed: builder.vseed,\n advancedVSeed,\n }\n try {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context)\n } catch (e) {\n console.error(e)\n throw new Error(`buildSpec error, see error info in console`)\n }\n}\n","import type { Spec } from 'src/types'\nimport type { Builder } from './builder'\n\nexport const build = (builder: Builder): Spec => {\n console.log('debug vseed', builder.vseed)\n const advancedVSeed = builder.buildAdvanced()\n console.log('debug advancedVSeed', advancedVSeed)\n if (!advancedVSeed) {\n throw new Error('advancedVSeed is null')\n }\n const spec = builder.buildSpec(advancedVSeed)\n console.log('debug spec', spec)\n return spec\n}\n","import type {\n AdvancedPipeline,\n AdvancedVSeed,\n ChartType,\n CustomThemeConfig,\n SpecPipeline,\n VSeed,\n VSeedBuilder,\n} from 'src/types'\nimport { buildAdvanced } from './buildAdvanced'\nimport { buildSpec } from './buildSpec'\nimport { build } from './build'\n\nexport class Builder implements VSeedBuilder {\n private _vseed: VSeed\n private _advancedVSeed: AdvancedVSeed | null = null\n\n constructor(vseed: VSeed) {\n this._vseed = vseed\n }\n\n build = () => build(this)\n\n buildSpec = (advanced: AdvancedVSeed) => buildSpec(this, advanced)\n\n buildAdvanced = () => buildAdvanced(this)\n\n getAdvancedPipeline = (chartType: ChartType) => Builder._advancedPipelineMap[chartType] as AdvancedPipeline\n getSpecPipeline = (chartType: ChartType) => Builder._specPipelineMap[chartType] as SpecPipeline\n getTheme = (themeKey: string) => Builder._themeMap[themeKey]\n getThemeMap = () => Builder._themeMap\n\n get vseed() {\n return this._vseed\n }\n\n set vseed(value) {\n this._vseed = value\n }\n\n get advancedVSeed() {\n return this._advancedVSeed\n }\n\n set advancedVSeed(value) {\n this._advancedVSeed = value\n }\n\n static _advancedPipelineMap: Partial<Record<ChartType, AdvancedPipeline>> = {}\n static _specPipelineMap: Partial<Record<ChartType, SpecPipeline>> = {}\n static _themeMap: Record<string, CustomThemeConfig> = {}\n static from = (vseed: VSeed) => new Builder(vseed)\n}\n","import {\n areaAdvancedPipeline,\n areaPercentAdvancedPipeline,\n areaPercentSpecPipeline,\n areaSpecPipeline,\n barAdvancedPipeline,\n barParallelAdvancedPipeline,\n barParallelSpecPipeline,\n barPercentAdvancedPipeline,\n barPercentSpecPipeline,\n barSpecPipeline,\n columnAdvancedPipeline,\n columnParallelAdvancedPipeline,\n columnParallelSpecPipeline,\n columnPercentAdvancedPipeline,\n columnPercentSpecPipeline,\n columnSpecPipeline,\n lineAdvancedPipeline,\n lineSpecPipeline,\n} from '../../pipeline'\nimport { Builder } from '../builder'\n\nexport const registerAll = () => {\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n}\n\nexport const registerColumn = () => {\n Builder._advancedPipelineMap['column'] = columnAdvancedPipeline\n Builder._specPipelineMap['column'] = columnSpecPipeline\n}\n\nexport const registerBar = () => {\n Builder._advancedPipelineMap['bar'] = barAdvancedPipeline\n Builder._specPipelineMap['bar'] = barSpecPipeline\n}\n\nexport const registerLine = () => {\n Builder._advancedPipelineMap['line'] = lineAdvancedPipeline\n Builder._specPipelineMap['line'] = lineSpecPipeline\n}\n\nexport const registerArea = () => {\n Builder._advancedPipelineMap['area'] = areaAdvancedPipeline\n Builder._specPipelineMap['area'] = areaSpecPipeline\n}\n\nexport const registerAreaPercent = () => {\n Builder._advancedPipelineMap['areaPercent'] = areaPercentAdvancedPipeline\n Builder._specPipelineMap['areaPercent'] = areaPercentSpecPipeline\n}\n\nexport const registerBarPercent = () => {\n Builder._advancedPipelineMap['barPercent'] = barPercentAdvancedPipeline\n Builder._specPipelineMap['barPercent'] = barPercentSpecPipeline\n}\n\nexport const registerColumnPercent = () => {\n Builder._advancedPipelineMap['columnPercent'] = columnPercentAdvancedPipeline\n Builder._specPipelineMap['columnPercent'] = columnPercentSpecPipeline\n}\n\nexport const registerColumnParallel = () => {\n Builder._advancedPipelineMap['columnParallel'] = columnParallelAdvancedPipeline\n Builder._specPipelineMap['columnParallel'] = columnParallelSpecPipeline\n}\n\nexport const registerBarParallel = () => {\n Builder._advancedPipelineMap['barParallel'] = barParallelAdvancedPipeline\n Builder._specPipelineMap['barParallel'] = barParallelSpecPipeline\n}\n","import type { CustomThemeConfig } from 'src/types'\n\nexport const darkTheme = (): CustomThemeConfig => {\n return {\n baseConfig: {\n vtable: {\n backgroundColor: '#141414',\n },\n vchart: {\n backgroundColor: '#141414',\n color: {\n colorScheme: [\n '#2E62F1',\n '#4DC36A',\n '#FF8406',\n '#FFCC00',\n '#4F44CF',\n '#5AC8FA',\n '#003A8C',\n '#B08AE2',\n '#FF6341',\n '#98DD62',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n },\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\n\nexport const lightTheme = (): CustomThemeConfig => {\n return {\n baseConfig: {\n vtable: {\n backgroundColor: '#ffffff',\n },\n vchart: {\n backgroundColor: '#ffffff',\n color: {\n colorScheme: [\n '#8D72F6',\n '#5766EC',\n '#66A3FE',\n '#51D5E6',\n '#4EC0B3',\n '#F9DF90',\n '#F9AD71',\n '#ED8888',\n '#E9A0C3',\n '#D77DD3',\n ],\n },\n label: {\n enable: true,\n },\n tooltip: {\n enable: true,\n },\n legend: {\n enable: true,\n },\n },\n },\n }\n}\n","import type { CustomThemeConfig } from 'src/types'\nimport { Builder } from '../builder'\nimport { darkTheme, lightTheme } from '../../theme'\n\nexport const registerCustomTheme = (key: string, themeConfig: CustomThemeConfig) => {\n Builder._themeMap[key] = themeConfig\n}\n\nexport const registerLightTheme = () => {\n registerCustomTheme('light', lightTheme())\n}\n\nexport const registerDarkTheme = () => {\n registerCustomTheme('dark', darkTheme())\n}\n","import {\n registerArea,\n registerAreaPercent,\n registerBar,\n registerBarParallel,\n registerBarPercent,\n registerColumn,\n registerColumnParallel,\n registerColumnPercent,\n registerLine,\n} from './chartType'\nimport { registerDarkTheme, registerLightTheme } from './theme'\n\nexport const registerAll = () => {\n // ChartType\n registerLine()\n registerColumn()\n registerColumnParallel()\n registerColumnPercent()\n registerBar()\n registerBarParallel()\n registerBarPercent()\n registerArea()\n registerAreaPercent()\n\n // Theme\n registerLightTheme()\n registerDarkTheme()\n}\n","import { z } from 'zod'\n\nexport type ChartType =\n | 'table'\n | 'pivotTable'\n | 'line'\n | 'column'\n | 'columnPercent'\n | 'columnParallel'\n | 'bar'\n | 'barPercent'\n | 'barParallel'\n | 'area'\n | 'areaPercent'\n | 'rose'\n | 'pie'\n | 'donut'\n | 'dualAxis'\n\nexport enum ChartTypeEnum {\n Table = 'table',\n PivotTable = 'pivotTable',\n Line = 'line',\n Column = 'column',\n ColumnPercent = 'columnPercent',\n ColumnParallel = 'columnParallel',\n Bar = 'bar',\n BarPercent = 'barPercent',\n BarParallel = 'barParallel',\n Area = 'area',\n AreaPercent = 'areaPercent',\n Rose = 'rose',\n Pie = 'pie',\n Donut = 'donut',\n DualAxis = 'dualAxis',\n}\n\nexport const zChartType = z.enum([\n 'table',\n 'pivotTable',\n 'line',\n 'column',\n 'columnPercent',\n 'columnParallel',\n 'bar',\n 'barPercent',\n 'barParallel',\n 'area',\n 'areaPercent',\n 'rose',\n 'pie',\n 'donut',\n 'dualAxis',\n])\n","import { z } from 'zod'\n\n/**\n * example dataset link:\n * [\n * { date: '2019', 20001:'type', profit:10, sales: null, },\n * { date: '2020', 20001:'type', profit:30, sales: -1.1, },\n * { date: '2021', 20001:'type', profit:30, sales: 1, },\n * { date: '2023', 20001:'type', profit:40, sales: undefined, },\n * { date: '2022', 20001:'type', profit:50, sales: 100, },\n * ]\n */\nexport const zDatum = z.record(z.string().or(z.number()), z.any())\nexport const zDataset = z.array(zDatum)\n\nexport type Datum = z.infer<typeof zDatum>\nexport type Dataset = z.infer<typeof zDataset>\n","import { z } from 'zod'\n\nexport const zDimension = z.object({\n id: z.string(),\n alias: z.string().optional(),\n visible: z.boolean().default(true).optional(),\n location: z.enum(['dimension', 'rowDimension', 'columnDimension']),\n})\n\nexport const zDimensions = z.array(zDimension).optional()\n\nexport type Dimension = z.infer<typeof zDimension>\n\nexport type Dimensions = z.infer<typeof zDimensions>\n","import { z } from 'zod'\n\nexport const zMeasure = z.object({\n id: z.string(),\n alias: z.string().optional(),\n visible: z.boolean().default(true).optional(),\n autoFormat: z.boolean().default(true).optional(),\n format: z\n .object({\n type: z\n .enum(['number', 'percent', 'permille'])\n .optional()\n .default('number'),\n ratio: z.number().optional().default(1),\n symbol: z.string().optional().default(''),\n thousandSeparator: z.boolean().optional().default(false),\n decimalPlaces: z.number().optional().default(2),\n round: z.enum(['round', 'floor', 'ceil']).optional().default('round'),\n prefix: z.string().optional().default(''),\n suffix: z.string().optional().default(''),\n })\n .optional(),\n})\n\nexport const zMeasureGroup = z.object({\n id: z.string(),\n alias: z.string().optional(),\n visible: z.boolean().default(true).optional(),\n get children() {\n return z.array(zMeasureGroup.or(zMeasure)).optional()\n },\n})\n\nexport const zMeasures = z.array(zMeasureGroup.or(zMeasure)).optional()\n\nexport type Measures = z.infer<typeof zMeasures>\nexport type Measure = z.infer<typeof zMeasure>\nexport type MeasureGroup = z.infer<typeof zMeasureGroup>\n","import { z } from 'zod'\n\nexport type FoldInfo = {\n foldMap: Record<string, string | undefined>\n measureId: string\n measureName: string\n measureValue: string\n}\n\nexport type UnfoldInfo = {\n groupName: string\n colorItems: string[]\n}\n\nexport const zFoldInfo = z.object({\n foldMap: z.record(z.string(), z.string().or(z.undefined())),\n measureId: z.string(),\n measureName: z.string(),\n measureValue: z.string(),\n})\nexport const zUnfoldInfo = z.object({\n colorItems: z.array(z.string()),\n groupName: z.string(),\n})\n\nexport const zDatasetReshapeInfo = z.array(\n z.object({\n id: z.string(),\n foldInfo: zFoldInfo,\n unfoldInfo: zUnfoldInfo,\n }),\n)\n\nexport type DatasetReshapeInfo = z.infer<typeof zDatasetReshapeInfo>\n","import { z } from 'zod'\n\nexport const zEncoding = z.array(\n z.object({\n x: z.array(z.string()).optional(),\n y: z.array(z.string()).optional(),\n color: z.array(z.string()).optional(),\n group: z.array(z.string()).optional(),\n angle: z.array(z.string()).optional(),\n radius: z.array(z.string()).optional(),\n tooltip: z.array(z.string()).optional(),\n }),\n)\n\nexport type Encoding = Array<{\n x?: string[]\n y?: string[]\n color?: string[]\n group?: string[]\n angle?: string[]\n radius?: string[]\n tooltip?: string[]\n}>\n","import { z } from 'zod'\nexport const zBackgroundColor = z.string().default('transparent').optional()\n\n/**\n * 图表的背景颜色\n * @default transparent 默认为透明背景\n * @description 背景颜色可以是颜色字符串, 例如'red', 'blue', 也可以是hex, rgb或rgba'#ff0000', 'rgba(255,0,0,0.5)'\n */\nexport type BackgroundColor = string | undefined\n","import { z } from 'zod'\n\nexport const zLabel = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Label = {\n /**\n * 标签功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\n\nexport const zColor = z.object({\n colorScheme: z.array(z.string()).optional(),\n colorMapping: z.record(z.string(), z.string()).optional(),\n})\n\nexport type Color = {\n /**\n * 颜色配色方案\n * @description 颜色配色方案用于定义图表中不同元素的颜色\n * @example ['#FFCDD2,#F8BBD0,#E1BEE7,#D1C4E9,#C5CAE9,#BBDEFB,#B3E5FC,#B2EBF2,#B2DFDB,#C8E6C9,#DCEDC8,#F0F4C3,#FFF9C4,#FFECB3,#FFE0B2']\n */\n colorScheme: string[]\n /**\n * 颜色映射\n * @description 颜色映射用于将数据值映射到具体的颜色\n * @example\n * {\n * 'profit': 'red',\n * 'sales': 'blue',\n * }\n */\n colorMapping: Record<string, string>\n}\n","import { z } from 'zod'\n\nexport const zTooltip = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Tooltip = {\n /**\n * 提示信息功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\n\nexport const zLegend = z.object({\n enable: z.boolean().default(true).optional(),\n})\n\nexport type Legend = {\n /**\n * 图例功能是否开启\n * @default true\n */\n enable: boolean\n}\n","import { z } from 'zod'\nimport { zBackgroundColor } from './backgroundColor'\nimport { zLabel } from './label'\nimport { zColor } from './color'\nimport { zTooltip } from './tooltip'\nimport { zLegend } from './legend'\n\nconst zVChartBaseConfig = z.object({\n backgroundColor: zBackgroundColor,\n label: zLabel.optional(),\n color: zColor.optional(),\n tooltip: zTooltip.optional(),\n legend: zLegend.optional(),\n})\n\nconst zVTableBaseConfig = z.object({\n backgroundColor: zBackgroundColor,\n})\n\nexport const zBaseConfig = z.object({\n vchart: zVChartBaseConfig.optional(),\n vtable: zVTableBaseConfig.optional(),\n})\n\nexport type VTableBaseConfig = z.infer<typeof zVTableBaseConfig>\nexport type VChartBaseConfig = z.infer<typeof zVChartBaseConfig>\n","import { z } from 'zod'\nimport { zBaseConfig } from '../baseConfig'\n\nexport const zCustomThemeConfig = z.object({\n baseConfig: zBaseConfig.optional(),\n})\n\nexport const zCustomTheme = z.record(z.string(), zCustomThemeConfig).optional()\n\nexport type CustomTheme = z.infer<typeof zCustomTheme>\nexport type CustomThemeConfig = z.infer<typeof zCustomThemeConfig>\n","import { z } from 'zod'\n\nexport const zTheme = z.string()\n\ntype Light = 'light' & { readonly brand: unique symbol }\ntype Dark = 'dark' & { readonly brand: unique symbol }\n\n/**\n * 主题\n * @default light\n * @description 内置 light、dark 两种主题, 新的主题可以通过registerTheme自定义主题.\n */\nexport type Theme = Light | Dark | string\n"],"names":["FoldMeasureName","FoldMeasureValue","FoldMeasureId","UnfoldDimensionGroup","Separator","unfoldDimensions","dataset","dimensions","measures","unfoldStartIndex","foldGroupName","dimensionsSeparator","Error","dimensionsToBeUnfolded","unfoldInfo","colorItems","i","datum","colorItem","generateDimGroupName","unique","dimensionsToBeGrouped","dim","String","foldMeasures","measureId","measureName","measureValue","foldInfo","result","Array","index","j","measure","id","alias","emptyReshapeResult","dataReshapeFor2D1M","options","foldMeasureId","foldMeasureName","foldMeasureValue","unfoldDimensionGroup","foldedDataset","finalDataset","dataReshapeFor1D1M","reshapeTo2D1M","advancedVSeed","context","vseed","newDatasets","pivotReshapeTo2D1M","measureGroups","datasetReshapeInfo","measureGroup","groupId","newSubDataset","reshapeInfo","encodingXY","encoding","prev","cur","isSingleDimension","x","y","group","color","encodingYX","initAdvancedVSeed","chartType","autoMeasures","top100dataset","sample","Object","key","item","undefined","autoDimensions","vchartBaseConfig","config","pick","vchartTheme","customTheme","theme","themeConfig","mergedConfig","mergeDeep","clone","execPipeline","pipeline","initialValue","isVTable","isVChart","pivotAdapter","pivotPipeline","lineAdvancedPipeline","barAdvancedPipeline","barParallelAdvancedPipeline","barPercentAdvancedPipeline","columnAdvancedPipeline","columnParallelAdvancedPipeline","columnPercentAdvancedPipeline","areaAdvancedPipeline","areaPercentAdvancedPipeline","spec","datasetPivot","records","pre","datasetPivotPlaceholder","initColumn","initBar","initBarParallel","initArea","initLine","initColumnParallel","initPivot","xBand","xLinear","yBand","yLinear","percent","stack","backgroundColor","baseConfig","defaultTooltip","tooltip","enable","label","defaultLegend","legend","pivotLegend","d","colorScheme","colorMapping","pivotIndicators","chartPipeline","indicators","newEncoding","newDatasetReshapeInfo","newContext","chartSpec","pivotIndicatorsAsRow","pivotIndicatorsAsCol","line","pivotLine","lineSpecPipeline","column","pivotColumn","columnSpecPipeline","columnParallel","pivotColumnParallel","columnParallelSpecPipeline","columnPercent","pivotColumnPercent","columnPercentSpecPipeline","bar","pivotBar","barSpecPipeline","barParallel","pivotBarParallel","barParallelSpecPipeline","barPercent","pivotBarPercent","barPercentSpecPipeline","area","pivotArea","areaSpecPipeline","areaPercent","pivotAreaPercent","areaPercentSpecPipeline","buildAdvanced","builder","e","console","buildSpec","build","Builder","advanced","themeKey","value","registerColumn","registerBar","registerLine","registerArea","registerAreaPercent","registerBarPercent","registerColumnPercent","registerColumnParallel","registerBarParallel","darkTheme","lightTheme","registerCustomTheme","registerLightTheme","registerDarkTheme","registerAll","zChartType","z","zDatum","zDataset","zDimension","zDimensions","zMeasure","zMeasureGroup","zMeasures","zFoldInfo","zUnfoldInfo","zDatasetReshapeInfo","zEncoding","zBackgroundColor","zLabel","zColor","zTooltip","zLegend","zVChartBaseConfig","zVTableBaseConfig","zBaseConfig","zCustomThemeConfig","zCustomTheme","zTheme"],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  import type { AdvancedPipe } from '../../../../types';
2
2
  export declare const encodingXY: AdvancedPipe;
3
- export declare const encodingYX: AdvancedPipe;
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../types';
2
+ export declare const encodingYX: AdvancedPipe;
@@ -1 +1,2 @@
1
- export { encodingXY, encodingYX } from './encodingCartesian';
1
+ export { encodingXY } from './encodingXY';
2
+ export { encodingYX } from './encodingYX';
@@ -3,3 +3,4 @@ export * from './encoding';
3
3
  export * from './init';
4
4
  export * from './baseConfig';
5
5
  export * from './theme';
6
+ export * from './pivot';
@@ -0,0 +1 @@
1
+ export { pivotAdapter } from './pivotAdapter';
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe, AdvancedPipeline } from '../../../../types';
2
+ export declare const pivotAdapter: (pipeline: AdvancedPipeline, pivotPipeline: AdvancedPipeline) => AdvancedPipe;
@@ -1,2 +1,4 @@
1
1
  export { reshapeTo2D1M } from './reshapeTo2D1M';
2
2
  export { reshapeTo1D1M } from './reshapeTo1D1M';
3
+ export { pivotReshapeTo1D1M } from './pivotReshapeTo1D1M';
4
+ export { pivotReshapeTo2D1M } from './pivotReshapeTo2D1M';
@@ -0,0 +1,8 @@
1
+ import type { AdvancedPipe } from '../../../../types';
2
+ /**
3
+ * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.
4
+ * @param advancedVSeed
5
+ * @param context
6
+ * @returns
7
+ */
8
+ export declare const pivotReshapeTo1D1M: AdvancedPipe;
@@ -0,0 +1,8 @@
1
+ import type { AdvancedPipe } from '../../../../types';
2
+ /**
3
+ * 数据重塑为透视结构, 如果存在指标分组, 则将数据按组划分. 如果存在行列维度, 则生成行列树结构.
4
+ * @param advancedVSeed
5
+ * @param context
6
+ * @returns
7
+ */
8
+ export declare const pivotReshapeTo2D1M: AdvancedPipe;
@@ -1,2 +1 @@
1
- import type { SpecPipeline } from '../../../types';
2
- export declare const areaSpecPipeline: SpecPipeline;
1
+ export declare const areaSpecPipeline: import("../../../types").SpecPipe[];
@@ -1,2 +1 @@
1
- import type { SpecPipeline } from '../../../types';
2
- export declare const areaPercentSpecPipeline: SpecPipeline;
1
+ export declare const areaPercentSpecPipeline: import("../../../types").SpecPipe[];
@@ -1,2 +1 @@
1
- import type { SpecPipeline } from '../../../types';
2
- export declare const columnSpecPipeline: SpecPipeline;
1
+ export declare const columnSpecPipeline: import("../../../types").SpecPipe[];
@@ -0,0 +1,3 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const datasetPivot: SpecPipe;
3
+ export declare const datasetPivotPlaceholder: SpecPipe;
@@ -1 +1,2 @@
1
1
  export { dataset } from './dataset';
2
+ export { datasetPivot, datasetPivotPlaceholder } from './datasetPivot';
@@ -8,3 +8,4 @@ export * from './tooltip';
8
8
  export * from './label';
9
9
  export * from './legend';
10
10
  export * from './color';
11
+ export * from './pivotChart';
@@ -4,3 +4,4 @@ export { initBarParallel } from './barParallel';
4
4
  export { initArea } from './area';
5
5
  export { initLine } from './line';
6
6
  export { initColumnParallel } from './columnParallel';
7
+ export { initPivot } from './pivot';
@@ -0,0 +1,4 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const initPivot: SpecPipe;
3
+ export declare const pivotIndicatorsAsRow: SpecPipe;
4
+ export declare const pivotIndicatorsAsCol: SpecPipe;
@@ -1 +1,2 @@
1
1
  export { legend } from './legend';
2
+ export { pivotLegend } from './pivotLegend';
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe } from '../../../../types';
2
+ export declare const pivotLegend: SpecPipe;
@@ -0,0 +1,2 @@
1
+ export { pivotAdapter } from './pivotAdapter';
2
+ export { pivotIndicators, pivotIndicatorsAsRow, pivotIndicatorsAsCol } from './pivotIndicators';
@@ -0,0 +1,2 @@
1
+ import type { SpecPipe, SpecPipeline } from '../../../../types';
2
+ export declare const pivotAdapter: (pipeline: SpecPipeline, pivotPipeline: SpecPipeline) => SpecPipe;
@@ -0,0 +1,4 @@
1
+ import type { SpecPipe, SpecPipeline } from '../../../../types';
2
+ export declare const pivotIndicators: (chartPipeline: SpecPipeline) => SpecPipe;
3
+ export declare const pivotIndicatorsAsRow: SpecPipe;
4
+ export declare const pivotIndicatorsAsCol: SpecPipe;
@@ -18,7 +18,8 @@ export declare const zAdvancedVSeed: z.ZodObject<{
18
18
  dualAxis: "dualAxis";
19
19
  }>;
20
20
  dataset: z.ZodArray<z.ZodRecord<z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodAny>>;
21
- datasetReshapeInfo: z.ZodObject<{
21
+ datasetReshapeInfo: z.ZodArray<z.ZodObject<{
22
+ id: z.ZodString;
22
23
  foldInfo: z.ZodObject<{
23
24
  foldMap: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodUndefined]>>;
24
25
  measureId: z.ZodString;
@@ -29,7 +30,7 @@ export declare const zAdvancedVSeed: z.ZodObject<{
29
30
  colorItems: z.ZodArray<z.ZodString>;
30
31
  groupName: z.ZodString;
31
32
  }, z.core.$strip>;
32
- }, z.core.$strip>;
33
+ }, z.core.$strip>>;
33
34
  dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
34
35
  id: z.ZodString;
35
36
  alias: z.ZodOptional<z.ZodString>;
@@ -1,12 +1,12 @@
1
- import type { ISpec } from '@visactor/vchart';
1
+ import type { Spec } from '..';
2
2
  import type { ChartType, CustomThemeConfig } from '../properties';
3
3
  import type { VSeed } from '../chartType';
4
4
  import type { AdvancedPipeline, SpecPipeline } from '../pipeline';
5
5
  import type { AdvancedVSeed } from '../advancedVSeed';
6
6
  export interface VSeedBuilder {
7
- build: () => ISpec;
7
+ build: () => Spec;
8
8
  buildAdvanced: () => AdvancedVSeed | null;
9
- buildSpec: (advancedVSeed: AdvancedVSeed) => ISpec;
9
+ buildSpec: (advancedVSeed: AdvancedVSeed) => Spec;
10
10
  getAdvancedPipeline: (chartType: ChartType) => AdvancedPipeline;
11
11
  getSpecPipeline: (chartType: ChartType) => SpecPipeline;
12
12
  getTheme: (themeKey: string) => CustomThemeConfig;
@@ -1 +1,2 @@
1
1
  export type * from './builder';
2
+ export type * from './spec';
@@ -0,0 +1,3 @@
1
+ import type { PivotChartConstructorOptions, PivotTableConstructorOptions, ListTableConstructorOptions } from '@visactor/vtable';
2
+ import type { ISpec } from '@visactor/vchart';
3
+ export type Spec = ISpec | PivotChartConstructorOptions | PivotTableConstructorOptions | ListTableConstructorOptions;
@@ -1,4 +1,4 @@
1
- import type { ISpec } from '@visactor/vchart';
1
+ import type { Spec } from '../..';
2
2
  import type { Pipe } from '../pipeline';
3
3
  import type { VSeed } from '../../chartType';
4
4
  import type { AdvancedVSeed } from '../../advancedVSeed';
@@ -6,5 +6,5 @@ export type SpecPipelineContext = {
6
6
  vseed: VSeed;
7
7
  advancedVSeed: AdvancedVSeed;
8
8
  };
9
- export type SpecPipe = Pipe<ISpec, SpecPipelineContext>;
9
+ export type SpecPipe = Pipe<Spec, SpecPipelineContext>;
10
10
  export type SpecPipeline = SpecPipe[];
@@ -19,7 +19,8 @@ export declare const zUnfoldInfo: z.ZodObject<{
19
19
  colorItems: z.ZodArray<z.ZodString>;
20
20
  groupName: z.ZodString;
21
21
  }, z.core.$strip>;
22
- export declare const zDatasetReshapeInfo: z.ZodObject<{
22
+ export declare const zDatasetReshapeInfo: z.ZodArray<z.ZodObject<{
23
+ id: z.ZodString;
23
24
  foldInfo: z.ZodObject<{
24
25
  foldMap: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodUndefined]>>;
25
26
  measureId: z.ZodString;
@@ -30,5 +31,5 @@ export declare const zDatasetReshapeInfo: z.ZodObject<{
30
31
  colorItems: z.ZodArray<z.ZodString>;
31
32
  groupName: z.ZodString;
32
33
  }, z.core.$strip>;
33
- }, z.core.$strip>;
34
+ }, z.core.$strip>>;
34
35
  export type DatasetReshapeInfo = z.infer<typeof zDatasetReshapeInfo>;
@@ -1,2 +1,2 @@
1
1
  export { zDatasetReshapeInfo, zFoldInfo, zUnfoldInfo } from './datasetReshapeInfo';
2
- export type { FoldInfo, UnfoldInfo } from './datasetReshapeInfo';
2
+ export type { FoldInfo, UnfoldInfo, DatasetReshapeInfo } from './datasetReshapeInfo';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vseed",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -1 +0,0 @@
1
- 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
@@ -1 +0,0 @@
1
- eJztG2tz2zbyr3Qw+ZBOZUl23Tw000tystO44zQ+u20+yKoHIpcUFBJgAFCPSvrvN4sHCVGSHSe5ZuaSmWvOXACLxb6wu1gNloTTHEiPSFXQ6B1pkSlIxQQnPXLYPm4fdkmLRIInLCW9avIMRhasYa5Jj3T+UCBVZ7TQEFMeQedCiglEWnX+vAKIO4iapqA6UwUQkxbJRYx4CiniMtK4XYsA13KBmzAew9z8kRdCatIb3HODjpJRx2Bpa0WG63WLiFIXpUakBdXje5PciZnSpGUWM54I0ktopqBFinKUsejC4SQtkrAMHJeUpppFnYnqDBAybA8Mx7geUzXuPRm2Jwq5mAHlFb5oXPJ3L4XMKfKVSkkXB0WpxsQNnQsaM56SHpkowQsPfrlrV6oWPLp9bymUeiNZyniF2BOi1E6ke9BFyuBTqv9x5Nj1Y6H/KGKq4TVlPEAykCXXzKxLyizDRcP2WOiD0sxuIy/C5U0iBizevzRc+EsmRjSzGo4a8MoP3EyZopEW8sarMFUK9GsRlxlsH9cM7mPWAOZ6SFpkRlVeyzMBHY2NGdBRBnE/kPbviwIUmoGXuTWMAxVJVqCGV6ve1iirRRbxsIVnQrryUbbYRzeS1BlYJuVmThtBpEVKzt6X8Jud/dxzozLoUDmbTDRH2WagI/mcjSSVC0/usEVSs/7NCM0RSYMsqc78suTGXzhCnIfwo69B042Rdg6a4jBLgPS0LMH4njKDStGVKGUEr2kR6gta8bCd02LwvgS5QGkpLVnkBH4qpZCvKI+z0GSQbScsBYVUj2FOQtA58BSdxOEjC/UHIT0ynyPg0bFRqgWPDL+UJ3cm5DuQ/U3jbyiAn/V2p0bZsYvQU+F5zFpke3WAGKZaiAw5iLfBHZL+neUg0KceHnW73S6OUKlAe8KBT5kUPAdu/K6V6u9jpqr9Riw94/qcaZCoL97zCK4qJFRKMat55YDIpSYwEfJN4j9iUFqWkS6lYYUFigLn06w/poyHguMihgsJCZu/FLIvJFgpVyLQkBcZ1VBR6jZZcJqz6MzdUp6JIfSMvzXMr0a98jkMIiotf/B7jWfPCyrh35AICac5q0ckKJFNATk5WpxAATwGHpn70lhob4mMi5k3DmP6lXm4bVuk3W6jK6AZo+olgyw280ZSzBRIHMmN520ONDGsWwQ+bdMleSAhIT3yYNAdDq5djHFN8G93VvsRntZC8Lz2rwDjNRmS9Sb5n2WLGqHZYd0imaAxSC/1r5EDM6fTX93ZW6SQkIC8hIxqNoXQbnPBJ2o3TyS8L5mE/1OmrFuE5vFXenLrDL7Sw5f8HRcz/rWeXmYmn9zlEdBT8KJx6xu2YKxx47+HrR2Mc1EzZptherx1RzuENlvGFGCugWPqbsBtExa2tcIwtJ2bNKft/53b/xN8OxYwiNCFB+GBA+BkKYRW98/ItyML/EKovS+CzRwAx7TqV5UHKzQ89f2Td63sap8nGokBj5CBhJZaoMYYNuBOz9Us6owhK0CqD9grFGinXfAi7yCGHxyG5932T+3Dx5vTNrZYB6J74YlAUaEUJ06KXpZDJz87Nq/A6zpEPL/FJTl31QqsEwkjd0h9U3QVEi/DhuZN1D4lXdcBMBZipLJ0TuiU2nQEv9y+FxIUyoj0CGC6RVpELwq4hO1xLTKQlGPUsRF9v7ZVpoz+vWgOYbhv0qOdYfuFBDxkNWhM3WU180L2beGrL5lmUZ0PzCQtCoi3Rh2SzeFLSE/nBekt1z61PJ27rd2x3DInqRfqdF5IUCpIedzQiSW9Ab30CYOFWrNqTPWB3MC75jqNrtbxjHHo25zMkLR2tQ+UVUw1/UNmfa9oCMvp/Ir9DaT3pPv0EeqlsbpasCdQYA76tNt9fPj06dFPx4+Pu0+fHuLMFDhIqoXVCrfs16s3v12grtS+NYaElpm+dE51SXKWgzapLKFFkbGIIjXG6JzeYMWsUrOOM/ol0TZb71xfG+fwoMOC+UgATtqD3XmT5uwAZT5RmxhrCsBUVW7J6lx+hUWrxVUBEUsYxJ4F6y3a7T4xWPRM8BOKQlz6rZ3drT+Ilv33pUVj/w6lgJAfNy9U0iQy2s8NZ33bIrnrWFXgvfNgIdpaiEsijM6jGXYC39PalG49MPySXMMQZINtQRnP1lSRisoSPkQDApp3q9fwFq139cC7iflYhjwxDHFflh1xYBnGGbeI4IDlnsGSqGgMpmrX+Qvd0YNOTZ3xUx3rwqxuhXBkA9b+iD3vjKFbWjbsefNzGLI6NPRnE9Uht3LW+s6mSSgV0tv0UK2Nky8JF9oxwEkRyf8PViir0QHp/HV9/UzSmUFsPiwDHnSMIisWw2mSYATjfXyJvnWwrJKZj4p57APSD5GQ8Ny+HN3cHQfZRR1cZJ5YOpFSp3MtaaRtGNM2pv3JpI1KlsUBbYdbdJgZlhAswrEMYiTmwG7sXpNMNGbLiKp+oLKUKtI7DCL9pQ0sHYexrhzbC7662O11aIvlqgE9FxHNMPqdAndV4ojmkPWpwgstw+GzGLh21e6BgQwPTOm+N6IKHh33HplMqKpvhypYsROPrRnvZSwdayyK1mfePKqmMgUb+kdjKXL47l8/f/fkMdbx49R+PDHPXxISMcfvx/itaEIlw8/DYxMqYih3CZGYGqV17mbDcPYkVPezm4ZxNOzgf2kF/7yqNR8yGrpkS/wmyOQp+VTxf6hX9w58cIhfpTLgI/zbYbXTHF6Xte/QjhbJGWfJ59MV6/ud59+jKNZ7NvA8fNabqNVEzVf5RK2iiVpp/N98lWu1irT6/jN78k1SCONRVsZWRd344Pr6+rozDPXLgcwKR7SjcrJJ6XCHwnttULNopxJMVGTjeA2S0+yVz5GtnOp8DjPSSisXXNM5Jmn4wOcDrRgiYQJ9VZVQYV6AZPgaQk1dJaLRGC6FuH9/QcMwDaJOW80wNnkHUNgc74XWko1KDTUJdZNA9ZRFSp08MWGApFwlQpqgPIOURosTf4jgAc1B/qyaKI66R0cH3R9NxYip1y77rUpn5pnsnzIwVDVz4Z5WvHYV6yyDyDiKKyOhM9PiYEOhU1cGqPNfITXEp7zMqxvFRYwfayz3M8lPDOS/af03rf9sWn//iP/hs17B09WkwP8gXRX+31XKktUoL1ZY/12xSKwoTqRTlqy0/S9ZTRKWrKJSfm8zwjoJ2p3Y7LGlhzc3NhT62ZC4KmVm7XGj/rLdycRymsKtTS3rrSTLJV93RWRb6z74gg4WkdAcby1NHbvS1MaB76mBj43WoQTwy6yp0FnFazpFNU2/iNzUNN3Xd6Wm6VcltCf3FtrDZ728OEarzFciTVe5mK7y4sfVjE5XSUajFaXRKj+mK1GU6svYZQ4xo9/s0on46ceIeCaSZIX/HK1A6JXWyUroZKV19GVEmgiuv0nU3/Xde4vUVk0baZcrHe4T4B0i2dcbaTZ3EYd7v8UARx11Dx/71zEMHJVLxKcUA8wKah58bESCK33ByDxd+Twe4xQp+BYA22S3gM3HKw+/RD7IoBeNzyaqftNxzX8bTXF13x6WeqnEyO3mJmbS94FTyQ9yYR6rb24CltUDGz0SnkmeR5sdgvu1woao9u9gkQ/vFKeFGmPMjK9pJvKtI3FNDXPXNqbP2d+00lHG8bt6IlNFxrRvvlzaRkfzQpyh1hi0v0hRFmY0Y6MDOmfCVkeM4i1NfxATkukF6XVbvlu+nlo/XZmSTvyK4cmJsb1SwemcKc14amgIyh+epqMQ/8FRt0b3J/DYpBUB1qmD3YZ8F+EHh93gjQ2tuO4/DnOsOpiPlOogMw/Alm5R68csBmw2tUF1VWGLG4F1cLpD82W9husozen8BT4qXML7EhSu+tFCzzjTjGabcCy05GiqWBQ9gYzl2K9JeuTAdIQ4aUvjxKmp/UH8SggjY1uIo67Xwgnuahb9ql77dZcmibjIypQZO6Ay9Y+PbsabOmlMXAv/klAVMfaGZ4s6ISCOT32Ru2zEpGLGh7mtz31Brq8+koIvVrFDf2jeSUzLvlO36jE7F1N4MaUsw+bvRp+tHT3NC73Y7IHOQaZwUtqcHhpjBscZtiaQGDRIZIbSLPK9yruHdhSAc8rTrJn5FVJMWbyltztUmXEO8hdJi3GVNeZMv+GmWVwFLKBZ317or6iq5tKpYPEp/gTmzPSq183QeGSOv4nYZBb651PMosM2ITRkkEb5TA/BkoyZUTDfiIQGpUA7K/upMjOzcyEY3xjaKFAonxvvaMFw8jP6+bLUpbRP2iWPM5A+r06EDPoadvzOyM2vf41kegvRAbyF0Qv3zOg323Tz2OPRD2zYwxmPJNTlFYVXlK4F/q7uj+AJSONsGnzeowBVXMFAnTCacoGKVQ3vUC9T9je6u6Ekgf66g1VKG05QqCzQBPZFDCnwBvTSmt6lbQQJXIxDfveEzc3cIhM/hLptVKkuJBVU0iyDDIm6wrtUB833ftB3J/nOGgVnvCg1dgpdLZSGvBpKjB6d2GtIBZJeQGBOWhTnMIXsxYwyXQuz2bTiYWEBB3+BE7YAma/Ag9I0lZBSDdUvHbrmohQJC34/MqKsDpoK45vNXdmvXjIbbpu0yCudZw3opX0WwpEKdgIJ4xBMiQX+FGNj5XC9Hv4XYEGW/w==
@@ -1 +0,0 @@
1
- eJxdy7EKwjAURuFXufyThXDNTaSUbHawk+LkXmwGweSGaIdSfHdxKrh+h7PiXmYE7MQ1NNbUHuhYyjPS2dO1KgxSTFoXBAg7oaGnPfmWraWhh0HWKd5ifT00I8BZlo4FBstY8+YXfdNJ5zz9jpK2IJY7djAo/yyeBZ8v8aktWQ==
@@ -1 +0,0 @@
1
- eJyLjgUAARUAuQ==