@visactor/vseed 0.1.9 → 0.1.11

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/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/pipeline/advanced/chart/pipeline/area.js +3 -2
  4. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  5. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +3 -2
  6. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  7. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +3 -2
  8. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +3 -2
  10. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +3 -2
  12. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipeline/column.js +3 -2
  14. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +3 -2
  16. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +3 -2
  18. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js +3 -2
  20. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +3 -2
  22. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +3 -2
  24. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +3 -2
  26. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipeline/line.js +3 -2
  28. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js +3 -2
  30. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +3 -2
  32. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +3 -2
  34. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +3 -2
  36. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  37. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +3 -2
  38. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  39. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js +2 -1
  40. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js.map +1 -1
  41. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +2 -1
  42. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +0 -1
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  45. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js +14 -9
  46. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
  47. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js +11 -12
  48. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
  49. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +11 -12
  50. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  51. package/dist/esm/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.d.ts +2 -0
  52. package/dist/esm/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.js +12 -0
  53. package/dist/esm/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.js.map +1 -0
  54. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.d.ts +2 -1
  55. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.js +2 -1
  56. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -3
  57. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js +2 -4
  58. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js.map +1 -1
  59. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +3 -2
  60. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  61. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +3 -2
  62. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  63. package/dist/esm/pipeline/spec/chart/pipes/markStyle/areaStyle.js +2 -2
  64. package/dist/esm/pipeline/spec/chart/pipes/markStyle/areaStyle.js.map +1 -1
  65. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js +2 -1
  66. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js.map +1 -1
  67. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js +2 -2
  68. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js.map +1 -1
  69. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js +2 -1
  70. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js.map +1 -1
  71. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +6 -6
  72. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  73. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +5 -4
  74. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  75. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +7 -7
  76. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  77. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +7 -7
  78. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  79. package/dist/esm/pipeline/utils/chatType.js +5 -4
  80. package/dist/esm/pipeline/utils/chatType.js.map +1 -1
  81. package/dist/esm/pipeline/utils/constant.d.ts +1 -0
  82. package/dist/esm/pipeline/utils/constant.js +2 -1
  83. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  84. package/dist/esm/pipeline/utils/measures/delete.d.ts +8 -0
  85. package/dist/esm/pipeline/utils/measures/delete.js +40 -0
  86. package/dist/esm/pipeline/utils/measures/delete.js.map +1 -0
  87. package/dist/esm/pipeline/utils/measures/index.d.ts +1 -0
  88. package/dist/esm/pipeline/utils/measures/index.js +1 -0
  89. package/dist/esm/types/properties/dimensions/dimensions.d.ts +2 -1
  90. package/dist/esm/types/properties/encoding/dimensionEncoding.d.ts +13 -0
  91. package/dist/esm/types/properties/encoding/dimensionEncoding.js +0 -0
  92. package/dist/esm/types/properties/encoding/index.d.ts +4 -0
  93. package/dist/esm/types/properties/encoding/index.js +3 -1
  94. package/dist/esm/types/properties/encoding/measureEncoding.d.ts +1 -0
  95. package/dist/esm/types/properties/encoding/measureEncoding.js +0 -0
  96. package/dist/esm/types/properties/encoding/zDimensionEncoding.d.ts +12 -0
  97. package/dist/esm/types/properties/encoding/zDimensionEncoding.js +15 -0
  98. package/dist/esm/types/properties/encoding/zDimensionEncoding.js.map +1 -0
  99. package/dist/esm/types/properties/encoding/zMeasureEncoding.d.ts +15 -0
  100. package/dist/esm/types/properties/encoding/zMeasureEncoding.js +18 -0
  101. package/dist/esm/types/properties/encoding/zMeasureEncoding.js.map +1 -0
  102. package/dist/esm/types/properties/measures/measures.d.ts +2 -1
  103. package/dist/umd/index.js +179 -93
  104. package/dist/umd/index.js.map +1 -1
  105. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { selector } from "../../../../../dataSelector/index.js";
2
- import { groupBy } from "remeda";
2
+ import { groupBy, isEmpty, isNullish } from "remeda";
3
3
  const lineStyle_lineStyle = (spec, context)=>{
4
4
  const { advancedVSeed } = context;
5
5
  const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
@@ -11,7 +11,7 @@ const lineStyle_lineStyle = (spec, context)=>{
11
11
  style: {}
12
12
  }
13
13
  };
14
- if (!lineStyle) return result;
14
+ if (isNullish(lineStyle) || isEmpty(lineStyle)) return result;
15
15
  const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
16
16
  lineStyle
17
17
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/markStyle/lineStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n if (!lineStyle) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const colorId = unfoldInfo.encodingColorId\n const lineGroups = groupBy(dataset, (d) => d[colorId ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[colorId ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: lineVisible,\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n ...result.line,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["lineStyle","spec","context","advancedVSeed","markStyle","datasetReshapeInfo","dataset","unfoldInfo","result","lineStyles","Array","colorId","lineGroups","groupBy","d","customMap","style","index","lineColor","lineColorOpacity","lineSmooth","lineWidth","lineVisible","dashSegment","dashGap","lineDash","curveType","datum","lineData","selector"],"mappings":";;AAKO,MAAMA,sBAAsB,CAACC,MAAMC;IACxC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAEC,kBAAkB,EAAEC,OAAO,EAAE,GAAGH;IACnD,MAAM,EAAEI,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAC5C,MAAM,EAAEL,SAAS,EAAE,GAAGI;IACtB,MAAMI,SAAS;QACb,GAAGP,IAAI;QACP,MAAM;YACJ,OAAO,CAAC;QACV;IACF;IACA,IAAI,CAACD,WACH,OAAOQ;IAGT,MAAMC,aAAcC,MAAM,OAAO,CAACV,aAAaA,YAAY;QAACA;KAAU;IAEtE,MAAMW,UAAUJ,WAAW,eAAe;IAC1C,MAAMK,aAAaC,QAAQP,SAAS,CAACQ,IAAMA,CAAC,CAACH,WAAW,GAAG;IAE3D,MAAMI,YAAYN,WAAW,MAAM,CAAS,CAACD,QAAQQ,OAAOC;QAC1D,MAAM,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,UAAU,EAAEpB,SAAS,EAAEqB,YAAY,CAAC,EAAEC,cAAc,IAAI,EAAE,GAAGN;QAElG,MAAMO,cAAcF,AAAY,IAAZA;QACpB,MAAMG,UAAUH;QAEhB,MAAMI,WACJzB,AAAc,aAAdA,YAAyB;YAACuB;YAAaA;SAAY,GAAGvB,AAAc,aAAdA,YAAyB;YAACwB,UAAU;YAAa,IAAVA;SAAY,GAAG;YAAC;YAAG;SAAE;QAEpH,MAAME,YAAYN,aAAa,aAAa;QAE5C,OAAO;YACL,GAAGZ,MAAM;YACT,CAAC,CAAC,MAAM,EAAES,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACU;oBACP,MAAMC,WAAWhB,UAAU,CAACe,KAAK,CAAChB,WAAW,GAAG,CAAW;oBAC3D,KAAK,MAAMG,KAAKc,SACd,IAAIC,SAASf,GAAGE,MAAM,QAAQ,GAC5B,OAAO;oBAGX,OAAO;gBACT;gBACA,OAAO;oBACL,SAASM;oBACT,WAAWI;oBACX,eAAeP;oBACf,QAAQD;oBACR,WAAWG;oBACX,UAAUI;gBACZ;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGjB,MAAM;QACT,MAAM;YACJ,GAAGA,OAAO,IAAI;YACd,OAAO;gBACL,GAAGO,SAAS;YACd;QACF;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/markStyle/lineStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(lineStyle) || isEmpty(lineStyle)) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const colorId = unfoldInfo.encodingColorId\n const lineGroups = groupBy(dataset, (d) => d[colorId ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[colorId ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: lineVisible,\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n ...result.line,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["lineStyle","spec","context","advancedVSeed","markStyle","datasetReshapeInfo","dataset","unfoldInfo","result","isNullish","isEmpty","lineStyles","Array","colorId","lineGroups","groupBy","d","customMap","style","index","lineColor","lineColorOpacity","lineSmooth","lineWidth","lineVisible","dashSegment","dashGap","lineDash","curveType","datum","lineData","selector"],"mappings":";;AAKO,MAAMA,sBAAsB,CAACC,MAAMC;IACxC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAEC,kBAAkB,EAAEC,OAAO,EAAE,GAAGH;IACnD,MAAM,EAAEI,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAC5C,MAAM,EAAEL,SAAS,EAAE,GAAGI;IACtB,MAAMI,SAAS;QACb,GAAGP,IAAI;QACP,MAAM;YACJ,OAAO,CAAC;QACV;IACF;IAEA,IAAIQ,UAAUT,cAAcU,QAAQV,YAClC,OAAOQ;IAGT,MAAMG,aAAcC,MAAM,OAAO,CAACZ,aAAaA,YAAY;QAACA;KAAU;IAEtE,MAAMa,UAAUN,WAAW,eAAe;IAC1C,MAAMO,aAAaC,QAAQT,SAAS,CAACU,IAAMA,CAAC,CAACH,WAAW,GAAG;IAE3D,MAAMI,YAAYN,WAAW,MAAM,CAAS,CAACH,QAAQU,OAAOC;QAC1D,MAAM,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,UAAU,EAAEtB,SAAS,EAAEuB,YAAY,CAAC,EAAEC,cAAc,IAAI,EAAE,GAAGN;QAElG,MAAMO,cAAcF,AAAY,IAAZA;QACpB,MAAMG,UAAUH;QAEhB,MAAMI,WACJ3B,AAAc,aAAdA,YAAyB;YAACyB;YAAaA;SAAY,GAAGzB,AAAc,aAAdA,YAAyB;YAAC0B,UAAU;YAAa,IAAVA;SAAY,GAAG;YAAC;YAAG;SAAE;QAEpH,MAAME,YAAYN,aAAa,aAAa;QAE5C,OAAO;YACL,GAAGd,MAAM;YACT,CAAC,CAAC,MAAM,EAAEW,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACU;oBACP,MAAMC,WAAWhB,UAAU,CAACe,KAAK,CAAChB,WAAW,GAAG,CAAW;oBAC3D,KAAK,MAAMG,KAAKc,SACd,IAAIC,SAASf,GAAGE,MAAM,QAAQ,GAC5B,OAAO;oBAGX,OAAO;gBACT;gBACA,OAAO;oBACL,SAASM;oBACT,WAAWI;oBACX,eAAeP;oBACf,QAAQD;oBACR,WAAWG;oBACX,UAAUI;gBACZ;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGnB,MAAM;QACT,MAAM;YACJ,GAAGA,OAAO,IAAI;YACd,OAAO;gBACL,GAAGS,SAAS;YACd;QACF;IACF;AACF"}
@@ -1,4 +1,5 @@
1
1
  import { selector } from "../../../../../dataSelector/index.js";
2
+ import { isEmpty, isNullish } from "remeda";
2
3
  const pointStyle_pointStyle = (spec, context)=>{
3
4
  const { advancedVSeed } = context;
4
5
  const { markStyle } = advancedVSeed;
@@ -9,7 +10,7 @@ const pointStyle_pointStyle = (spec, context)=>{
9
10
  style: {}
10
11
  }
11
12
  };
12
- if (!pointStyle) return result;
13
+ if (isNullish(pointStyle) || isEmpty(pointStyle)) return result;
13
14
  const pointStyles = Array.isArray(pointStyle) ? pointStyle : [
14
15
  pointStyle
15
16
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/markStyle/pointStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n point: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (!pointStyle) {\n return result\n }\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["pointStyle","spec","context","advancedVSeed","markStyle","result","pointStyles","Array","customMap","style","index","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","lineDash","datum","selector"],"mappings":";AAIO,MAAMA,wBAAuB,CAACC,MAAMC;IACzC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEH,UAAU,EAAE,GAAGI;IACvB,MAAMC,SAAS;QACb,GAAGJ,IAAI;QACP,OAAO;YACL,OAAO,CAAC;QACV;IACF;IAEA,IAAI,CAACD,YACH,OAAOK;IAET,MAAMC,cAAeC,MAAM,OAAO,CAACP,cAAcA,aAAa;QAACA;KAAW;IAE1E,MAAMQ,YAAYF,YAAY,MAAM,CAAS,CAACD,QAAQI,OAAOC;QAC3D,MAAM,EACJC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,CAAC,EACpBC,UAAU,EACVC,iBAAiB,EACjBC,SAAS,EACTC,eAAe,IAAI,EACpB,GAAGR;QAEJ,MAAMS,WAAWN,AAAqB,aAArBA,mBAAgC;YAAC;YAAG;SAAE,GAAGA,AAAqB,aAArBA,mBAAgC;YAAC;YAAG;SAAE,GAAG;YAAC;YAAG;SAAE;QACzG,OAAO;YACL,GAAGP,MAAM;YACT,CAAC,CAAC,MAAM,EAAEK,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACS;oBACP,IAAIC,SAASD,OAAOV,MAAM,QAAQ,GAChC,OAAO;oBAET,OAAO;gBACT;gBACA,OAAO;oBACL,SAASQ;oBACT,MAAMD;oBACN,MAAMF;oBACN,aAAaC;oBACb,aAAa;wBACX,QAAQJ;wBACR,WAAWE;wBACX,UAAWA,AAAAA,CAAAA,oBAAoB,KAAK;wBACpC,UAAUK;oBACZ;gBACF;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGb,MAAM;QACT,OAAO;YACL,GAAGA,OAAO,KAAK;YACf,OAAO;gBACL,GAAGG,SAAS;YACd;QACF;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/markStyle/pointStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n point: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(pointStyle) || isEmpty(pointStyle)) {\n return result\n }\n\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["pointStyle","spec","context","advancedVSeed","markStyle","result","isNullish","isEmpty","pointStyles","Array","customMap","style","index","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","lineDash","datum","selector"],"mappings":";;AAKO,MAAMA,wBAAuB,CAACC,MAAMC;IACzC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEH,UAAU,EAAE,GAAGI;IACvB,MAAMC,SAAS;QACb,GAAGJ,IAAI;QACP,OAAO;YACL,OAAO,CAAC;QACV;IACF;IAEA,IAAIK,UAAUN,eAAeO,QAAQP,aACnC,OAAOK;IAGT,MAAMG,cAAeC,MAAM,OAAO,CAACT,cAAcA,aAAa;QAACA;KAAW;IAE1E,MAAMU,YAAYF,YAAY,MAAM,CAAS,CAACH,QAAQM,OAAOC;QAC3D,MAAM,EACJC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,CAAC,EACpBC,UAAU,EACVC,iBAAiB,EACjBC,SAAS,EACTC,eAAe,IAAI,EACpB,GAAGR;QAEJ,MAAMS,WAAWN,AAAqB,aAArBA,mBAAgC;YAAC;YAAG;SAAE,GAAGA,AAAqB,aAArBA,mBAAgC;YAAC;YAAG;SAAE,GAAG;YAAC;YAAG;SAAE;QACzG,OAAO;YACL,GAAGT,MAAM;YACT,CAAC,CAAC,MAAM,EAAEO,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACS;oBACP,IAAIC,SAASD,OAAOV,MAAM,QAAQ,GAChC,OAAO;oBAET,OAAO;gBACT;gBACA,OAAO;oBACL,SAASQ;oBACT,MAAMD;oBACN,MAAMF;oBACN,aAAaC;oBACb,aAAa;wBACX,QAAQJ;wBACR,WAAWE;wBACX,UAAWA,AAAAA,CAAAA,oBAAoB,KAAK;wBACpC,UAAUK;oBACZ;gBACF;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGf,MAAM;QACT,OAAO;YACL,GAAGA,OAAO,KAAK;YACf,OAAO;gBACL,GAAGK,SAAS;YACd;QACF;IACF;AACF"}
@@ -1,11 +1,11 @@
1
- import { isEmpty } from "remeda";
2
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { isEmpty, pipe, uniqueBy } from "remeda";
2
+ import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltip_tooltip = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
- const { advancedVSeed } = context;
8
+ const { advancedVSeed, vseed } = context;
9
9
  const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
@@ -19,7 +19,7 @@ const tooltip_tooltip = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo, unfoldInfo)
23
23
  },
24
24
  dimension: {
25
25
  title: {
@@ -61,8 +61,8 @@ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
61
61
  ];
62
62
  };
63
63
  const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
64
- const dims = dimensions.filter((item)=>tooltip.includes(item.id));
65
- const meas = measures.filter((item)=>tooltip.includes(item.id));
64
+ const dims = pipe(dimensions.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
65
+ const meas = pipe(measures.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
66
66
  const dimContent = dims.map((item)=>({
67
67
  visible: true,
68
68
  hasShape: true,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","dims","item","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty, pipe, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","dims","pipe","item","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { isNullish } from "remeda";
2
2
  import { createDimensionContent, createMarkContent } from "./tooltip.js";
3
+ import { findAllMeasures } from "../../../../utils/index.js";
3
4
  const tooltipPrimary = (spec, context)=>{
4
5
  const result = {
5
6
  ...spec
6
7
  };
7
- const { advancedVSeed } = context;
8
+ const { advancedVSeed, vseed } = context;
8
9
  const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
9
10
  const baseConfig = advancedVSeed.config[chartType];
10
11
  const { tooltip = {
@@ -19,7 +20,7 @@ const tooltipPrimary = (spec, context)=>{
19
20
  title: {
20
21
  visible: false
21
22
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo)
23
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[0], unfoldInfo)
23
24
  },
24
25
  dimension: {
25
26
  title: {
@@ -34,7 +35,7 @@ const tooltipSecondary = (spec, context)=>{
34
35
  const result = {
35
36
  ...spec
36
37
  };
37
- const { advancedVSeed } = context;
38
+ const { advancedVSeed, vseed } = context;
38
39
  const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
39
40
  const baseConfig = advancedVSeed.config[chartType];
40
41
  const { tooltip = {
@@ -50,7 +51,7 @@ const tooltipSecondary = (spec, context)=>{
50
51
  title: {
51
52
  visible: false
52
53
  },
53
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo)
54
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[1], unfoldInfo)
54
55
  },
55
56
  dimension: {
56
57
  title: {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale),\n },\n }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","createDimensionContent","tooltipSecondary","isNullish"],"mappings":";;AAIO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAClF,MAAMO,aAAaP,cAAc,MAAM,CAACG,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDH,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBAAkBN,SAAS,OAAO,IAAI,EAAE,EAAED,YAAYJ,UAAUG,QAAQM,YAAY,CAAC,EAAE,EAAEC;QACpG;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASE,uBAAuBZ,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAOL;AACT;AAEO,MAAMe,mBAA6B,CAACjB,MAAMC;IAC/C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAClF,MAAMO,aAAaP,cAAc,MAAM,CAACG,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIO,UAAUb,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOH;IAGT,MAAMW,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDH,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBAAkBN,SAAS,OAAO,IAAI,EAAE,EAAED,YAAYJ,UAAUG,QAAQM,YAAY,CAAC,EAAE,EAAEC;QACpG;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASE,uBAAuBZ,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAOL;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale),\n },\n }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","tooltipSecondary","isNullish"],"mappings":";;;AAKO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGP;IAClF,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDJ,OAAO,OAAO,GAAG;QACf,SAASW;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBb,MAAM,QAAQ,GAC9BI,QACAM,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBb,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAON;AACT;AAEO,MAAMiB,mBAA6B,CAACnB,MAAMC;IAC/C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGP;IAClF,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIQ,UAAUd,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOJ;IAGT,MAAMY,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDJ,OAAO,OAAO,GAAG;QACf,SAASW;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBb,MAAM,QAAQ,GAC9BI,QACAM,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBb,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAON;AACT"}
@@ -1,12 +1,12 @@
1
- import { isEmpty } from "remeda";
2
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { isEmpty, uniqueBy } from "remeda";
2
+ import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltipHeatmap = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
- const { advancedVSeed } = context;
9
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8
+ const { advancedVSeed, vseed } = context;
9
+ const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
12
12
  enable: true
@@ -19,7 +19,7 @@ const tooltipHeatmap = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo)
23
23
  },
24
24
  dimension: {
25
25
  visible: false
@@ -28,8 +28,8 @@ const tooltipHeatmap = (spec, context)=>{
28
28
  return result;
29
29
  };
30
30
  const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
31
- const dims = dimensions.filter((item)=>tooltip.includes(item.id));
32
- const meas = measures.filter((item)=>tooltip.includes(item.id));
31
+ const dims = uniqueBy(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
32
+ const meas = uniqueBy(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
33
33
  const dimContent = dims.map((item)=>({
34
34
  visible: true,
35
35
  hasShape: true,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","createMarkContent","dims","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","foldMeaContent","measureId","foldMap","measureValue"],"mappings":";;;AAKO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAClF,MAAMO,aAAaP,cAAc,MAAM,CAACG,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IACnB,MAAM,EAAEE,QAAQ,EAAE,GAAGR,kBAAkB,CAAC,EAAE;IAK1CH,OAAO,OAAO,GAAG;QACf,SAASU;QAET,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASE,kBAAkBL,SAAS,OAAO,IAAI,EAAE,EAAED,YAAYJ,UAAUG,QAAQM;QACnF;QACA,WAAW;YACT,SAAS;QACX;IACF;IACA,OAAOX;AACT;AAEO,MAAMY,oBAAoB,CAC/BH,SACAH,YACAJ,UACAG,QACAM;IAEA,MAAME,OAAOP,WAAW,MAAM,CAAC,CAACQ,OAASL,QAAQ,QAAQ,CAACK,KAAK,EAAE;IACjE,MAAMC,OAAOb,SAAS,MAAM,CAAC,CAACY,OAASL,QAAQ,QAAQ,CAACK,KAAK,EAAE;IAE/D,MAAME,aAAaH,KAAK,GAAG,CAAC,CAACC,OAAU;YACrC,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK,CAACG;gBACJ,MAAMC,QAAQD;gBACd,IAAIH,KAAK,KAAK,IAAIA,KAAK,EAAE,EACvB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAE9B,OAAOI,SAAUA,KAAK,CAACJ,KAAK,EAAE,CAAC;YACjC;YACA,OAAO,CAACG;gBACN,MAAMC,QAAQD;gBACd,OAAOC,SAAUA,KAAK,CAACJ,KAAK,EAAE,CAAC;YACjC;QACF;IAEA,MAAMK,aAAaJ,KAAK,GAAG,CAAC,CAACD,OAAU;YACrC,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAKA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAC1B,OAAO,CAACG;gBACN,MAAMC,QAAQD;gBACd,IAAI,CAACC,OACH,OAAO;gBAET,MAAME,KAAKN,KAAK,EAAE;gBAClB,IAAI,CAACI,SAAS,CAACA,KAAK,CAACG,cAAc,IAAI,CAACH,KAAK,CAACG,cAAc,EAC1D,OAAO;gBAET,MAAMC,eAAeJ,KAAK,CAACG,cAAc;gBACzC,MAAME,QAAQD,YAAY,CAACF,GAAG;gBAC9B,MAAMI,UAAUC,gBAAgBvB,UAAUkB;gBAC1C,IAAI,CAACI,SACH,OAAOE,OAAOH;gBAEhB,MAAM,EAAEI,SAAS,CAAC,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGJ;gBAC3C,IAAI,CAACK,QAAQF,SAAS;oBACpB,MAAMG,YAAYC,gBAAgBJ;oBAClC,OAAOG,UAAUP;gBACnB;gBACA,IAAIK,YACF,OAAOI,cAAcT,OAAOlB;gBAE9B,OAAOqB,OAAOH;YAChB;QACF;IAEA,MAAMU,iBAAiB;QAACtB;KAAS,CAAC,GAAG,CAAC,CAACA,WAC9B;YACL,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK,CAACM;gBACJ,MAAM,EAAEiB,SAAS,EAAEC,OAAO,EAAE,GAAGxB;gBAC/B,MAAMO,QAAQD;gBACd,MAAMG,KAAKF,KAAK,CAACgB,UAAU;gBAC3B,OAAOC,OAAO,CAACf,GAAG,IAAIA;YACxB;YACA,OAAO,CAACH;gBACN,MAAM,EAAEiB,SAAS,EAAEE,YAAY,EAAE,GAAGzB;gBAEpC,MAAMO,QAAQD;gBACd,IAAI,CAACC,OACH,OAAO;gBAET,MAAMK,QAAQL,KAAK,CAACkB,aAAa;gBACjC,MAAMhB,KAAKF,KAAK,CAACgB,UAAU;gBAC3B,MAAMV,UAAUC,gBAAgBvB,UAAUkB;gBAC1C,IAAI,CAACI,SACH,OAAOE,OAAOH;gBAGhB,MAAM,EAAEI,SAAS,CAAC,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGJ;gBAE3C,IAAI,CAACK,QAAQF,SAAS;oBACpB,MAAMG,YAAYC,gBAAgBJ;oBAClC,OAAOG,UAAUP;gBACnB;gBACA,IAAIK,YACF,OAAOI,cAAcT,OAAOlB;gBAE9B,OAAOqB,OAAOH;YAChB;QACF;IAEF,OAAO;WAAIP;WAAeiB;WAAmBd;KAAW;AAC1D"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { isEmpty, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","createMarkContent","findAllMeasures","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { isEmpty } from "remeda";
2
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { isEmpty, uniqueBy } from "remeda";
2
+ import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltipScatter = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
- const { advancedVSeed } = context;
9
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8
+ const { advancedVSeed, vseed } = context;
9
+ const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
12
12
  enable: true
@@ -19,7 +19,7 @@ const tooltipScatter = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList)
23
23
  },
24
24
  dimension: {
25
25
  visible: false
@@ -28,8 +28,8 @@ const tooltipScatter = (spec, context)=>{
28
28
  return result;
29
29
  };
30
30
  const createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
31
- const dims = dimensions.filter((item)=>tooltip.includes(item.id));
32
- const meas = measures.filter((item)=>tooltip.includes(item.id));
31
+ const dims = uniqueBy(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
32
+ const meas = uniqueBy(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
33
33
  const dimContent = dims.map((item)=>({
34
34
  visible: true,
35
35
  hasShape: true,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts"],"sourcesContent":["import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipScatter: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipScatter","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","createMarkContent","dims","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","foldMeaContent","foldInfo","measureId","foldMap","measureValue"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipScatter.ts"],"sourcesContent":["import { isEmpty, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipScatter: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfoList } = datasetReshapeInfo[0] as unknown as {\n foldInfoList: FoldInfo[]\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList,\n ),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfoList: FoldInfo[],\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const foldMeaContent = foldInfoList.map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipScatter","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","createMarkContent","findAllMeasures","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","foldMeaContent","foldInfo","measureId","foldMap","measureValue"],"mappings":";;;AAKO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IACxE,MAAMO,aAAaP,cAAc,MAAM,CAACG,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IACnB,MAAM,EAAEE,YAAY,EAAE,GAAGR,kBAAkB,CAAC,EAAE;IAK9CH,OAAO,OAAO,GAAG;QACf,SAASU;QAET,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASE,kBACPL,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAO,gBAAgBX,MAAM,QAAQ,GAC9BG,QACAM;QAEJ;QACA,WAAW;YACT,SAAS;QACX;IACF;IACA,OAAOX;AACT;AAEO,MAAMY,oBAAoB,CAC/BH,SACAH,YACAQ,UACAT,QACAM;IAEA,MAAMI,OAAOC,SACXV,WAAW,MAAM,CAAC,CAACW,OAASR,QAAQ,QAAQ,CAACQ,KAAK,EAAE,IACpD,CAACA,OAASA,KAAK,EAAE;IAEnB,MAAMC,OAAOF,SACXF,SAAS,MAAM,CAAC,CAACG,OAASR,QAAQ,QAAQ,CAACQ,KAAK,EAAE,IAClD,CAACA,OAASA,KAAK,EAAE;IAGnB,MAAME,aAAaJ,KAAK,GAAG,CAAC,CAACE,OAAU;YACrC,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK,CAACG;gBACJ,MAAMC,QAAQD;gBACd,IAAIH,KAAK,KAAK,IAAIA,KAAK,EAAE,EACvB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAE9B,OAAOI,SAAUA,KAAK,CAACJ,KAAK,EAAE,CAAC;YACjC;YACA,OAAO,CAACG;gBACN,MAAMC,QAAQD;gBACd,OAAOC,SAAUA,KAAK,CAACJ,KAAK,EAAE,CAAC;YACjC;QACF;IAEA,MAAMK,aAAaJ,KAAK,GAAG,CAAC,CAACD,OAAU;YACrC,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAKA,KAAK,KAAK,IAAIA,KAAK,EAAE;YAC1B,OAAO,CAACG;gBACN,MAAMC,QAAQD;gBACd,IAAI,CAACC,OACH,OAAO;gBAET,MAAME,KAAKN,KAAK,EAAE;gBAClB,IAAI,CAACI,SAAS,CAACA,KAAK,CAACG,cAAc,IAAI,CAACH,KAAK,CAACG,cAAc,EAC1D,OAAO;gBAET,MAAMC,eAAeJ,KAAK,CAACG,cAAc;gBACzC,MAAME,QAAQD,YAAY,CAACF,GAAG;gBAC9B,MAAMI,UAAUC,gBAAgBd,UAAUS;gBAC1C,IAAI,CAACI,SACH,OAAOE,OAAOH;gBAEhB,MAAM,EAAEI,SAAS,CAAC,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGJ;gBAC3C,IAAI,CAACK,QAAQF,SAAS;oBACpB,MAAMG,YAAYC,gBAAgBJ;oBAClC,OAAOG,UAAUP;gBACnB;gBACA,IAAIK,YACF,OAAOI,cAAcT,OAAOrB;gBAE9B,OAAOwB,OAAOH;YAChB;QACF;IAEA,MAAMU,iBAAiBzB,aAAa,GAAG,CAAC,CAAC0B,WAChC;YACL,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK,CAACjB;gBACJ,MAAM,EAAEkB,SAAS,EAAEC,OAAO,EAAE,GAAGF;gBAC/B,MAAMhB,QAAQD;gBACd,MAAMG,KAAKF,KAAK,CAACiB,UAAU;gBAC3B,OAAOC,OAAO,CAAChB,GAAG,IAAIA;YACxB;YACA,OAAO,CAACH;gBACN,MAAM,EAAEkB,SAAS,EAAEE,YAAY,EAAE,GAAGH;gBAEpC,MAAMhB,QAAQD;gBACd,IAAI,CAACC,OACH,OAAO;gBAET,MAAMK,QAAQL,KAAK,CAACmB,aAAa;gBACjC,MAAMjB,KAAKF,KAAK,CAACiB,UAAU;gBAC3B,MAAMX,UAAUC,gBAAgBd,UAAUS;gBAC1C,IAAI,CAACI,SACH,OAAOE,OAAOH;gBAGhB,MAAM,EAAEI,SAAS,CAAC,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGJ;gBAE3C,IAAI,CAACK,QAAQF,SAAS;oBACpB,MAAMG,YAAYC,gBAAgBJ;oBAClC,OAAOG,UAAUP;gBACnB;gBACA,IAAIK,YACF,OAAOI,cAAcT,OAAOrB;gBAE9B,OAAOwB,OAAOH;YAChB;QACF;IAEF,OAAO;WAAIP;WAAeiB;WAAmBd;KAAW;AAC1D"}
@@ -1,6 +1,7 @@
1
1
  import { measureDepth } from "./measures/index.js";
2
2
  import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "../advanced/chart/pipes/measures/utils.js";
3
3
  import { unique } from "remeda";
4
+ import { DEFAULT_PARENT_ID } from "./constant.js";
4
5
  const isTable = (vseed)=>'table' === vseed.chartType;
5
6
  const isPivotTable = (vseed)=>'pivotTable' === vseed.chartType;
6
7
  const isVTable = (vseed)=>[
@@ -10,8 +11,8 @@ const isVTable = (vseed)=>[
10
11
  const isVChart = (vseed)=>!isVTable(vseed);
11
12
  const isPivotChart = (vseed)=>{
12
13
  if (isVTable(vseed)) return false;
13
- if (isMeasureTreeWithParentId(vseed)) {
14
- const parentIds = vseed.measures?.map((measure)=>measure.parentId);
14
+ if (isMeasureTreeWithParentId(vseed.measures)) {
15
+ const parentIds = vseed.measures?.map((measure)=>measure.parentId || DEFAULT_PARENT_ID);
15
16
  return parentIds && unique(parentIds).length > 1;
16
17
  }
17
18
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
@@ -19,7 +20,7 @@ const isPivotChart = (vseed)=>{
19
20
  const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
20
21
  if (hasRowOrColumnDimension) return true;
21
22
  if ('scatter' === vseed.chartType) {
22
- if (isMeasureTreeWithChildren(vseed)) {
23
+ if (isMeasureTreeWithChildren(vseed.measures)) {
23
24
  const depth = measureDepth(vseed.measures);
24
25
  return 3 === depth;
25
26
  }
@@ -27,7 +28,7 @@ const isPivotChart = (vseed)=>{
27
28
  return false;
28
29
  }
29
30
  if ('dualAxis' === vseed.chartType) {
30
- if (isMeasureTreeWithChildren(vseed)) {
31
+ if (isMeasureTreeWithChildren(vseed.measures)) {
31
32
  const depth = measureDepth(vseed.measures);
32
33
  return 3 === depth;
33
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/utils/chatType.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts"],"sourcesContent":["import type { Dimensions, DimensionGroup, DimensionTree, VSeed, Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isMeasureTreeWithParentId(vseed)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n if (hasRowOrColumnDimension) {\n return true\n }\n\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n"],"names":["isTable","vseed","isPivotTable","isVTable","isVChart","isPivotChart","isMeasureTreeWithParentId","parentIds","measure","unique","dimensions","hasRowOrColumnDimension","dimension","isMeasureTreeWithChildren","depth","measureDepth","measures","hasMeasureGroup"],"mappings":";;;AAKO,MAAMA,UAAU,CAACC,QACfA,AAAoB,YAApBA,MAAM,SAAS;AAEjB,MAAMC,eAAe,CAACD,QACpBA,AAAoB,iBAApBA,MAAM,SAAS;AAEjB,MAAME,WAAW,CAACF,QAChB;QAAC;QAAS;KAAa,CAAC,QAAQ,CAACA,MAAM,SAAS;AAElD,MAAMG,WAAW,CAACH,QAChB,CAACE,SAASF;AAEZ,MAAMI,eAAe,CAACJ;IAC3B,IAAIE,SAASF,QACX,OAAO;IAGT,IAAIK,0BAA0BL,QAAQ;QACpC,MAAMM,YAAYN,MAAM,QAAQ,EAAE,IAAI,CAACO,UAAqBA,QAAQ,QAAQ;QAC5E,OAAOD,aAAaE,OAAOF,WAAW,MAAM,GAAG;IACjD;IAEA,IAAIN,AAAoB,eAApBA,MAAM,SAAS,IAAmBA,AAAoB,cAApBA,MAAM,SAAS,EAAgB;QACnE,MAAM,EAAES,aAAa,EAAE,EAAE,GAAGT;QAG5B,MAAMU,0BACJD,cAAcA,WAAW,IAAI,CAAC,CAACE,YAAcA,AAAuB,UAAvBA,UAAU,QAAQ,IAAcA,AAAuB,aAAvBA,UAAU,QAAQ;QAEjG,IAAID,yBACF,OAAO;QAGT,IAAIV,AAAoB,cAApBA,MAAM,SAAS,EAAgB;YACjC,IAAIY,0BAA0BZ,QAAQ;gBACpC,MAAMa,QAAQC,aAAad,MAAM,QAAQ;gBACzC,OAAOa,AAAU,MAAVA;YACT;YAEA,IAAIb,MAAM,eAAe,IAAIA,MAAM,eAAe,CAAC,MAAM,GAAG,GAC1D,OAAO;YAET,OAAO;QACT;QACA,IAAIA,AAAoB,eAApBA,MAAM,SAAS,EAAiB;YAClC,IAAIY,0BAA0BZ,QAAQ;gBACpC,MAAMa,QAAQC,aAAad,MAAM,QAAQ;gBACzC,OAAOa,AAAU,MAAVA;YACT;YAEA,IAAIb,MAAM,YAAY,IAAIA,MAAM,YAAY,CAAC,MAAM,GAAG,GACpD,OAAO;QAEX;QAEA,OAAO;IACT;IAEA,MAAM,EAAEe,WAAW,EAAE,EAAEN,aAAa,EAAE,EAAE,GAAGT;IAK3C,MAAMU,0BACJD,cAAcA,WAAW,IAAI,CAAC,CAACE,YAAcA,AAAuB,UAAvBA,UAAU,QAAQ,IAAcA,AAAuB,aAAvBA,UAAU,QAAQ;IAEjG,MAAMK,kBAAkBD,YAAYA,SAAS,IAAI,CAAC,CAACR,UAA4BA,WAAWA,QAAQ,QAAQ;IAE1G,OAAOG,2BAA2BM;AACpC"}
1
+ {"version":3,"file":"pipeline/utils/chatType.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts"],"sourcesContent":["import type { Dimensions, DimensionGroup, DimensionTree, VSeed, Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\nimport { DEFAULT_PARENT_ID } from './constant'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId || DEFAULT_PARENT_ID)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n if (hasRowOrColumnDimension) {\n return true\n }\n\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n"],"names":["isTable","vseed","isPivotTable","isVTable","isVChart","isPivotChart","isMeasureTreeWithParentId","parentIds","measure","DEFAULT_PARENT_ID","unique","dimensions","hasRowOrColumnDimension","dimension","isMeasureTreeWithChildren","depth","measureDepth","measures","hasMeasureGroup"],"mappings":";;;;AAMO,MAAMA,UAAU,CAACC,QACfA,AAAoB,YAApBA,MAAM,SAAS;AAEjB,MAAMC,eAAe,CAACD,QACpBA,AAAoB,iBAApBA,MAAM,SAAS;AAEjB,MAAME,WAAW,CAACF,QAChB;QAAC;QAAS;KAAa,CAAC,QAAQ,CAACA,MAAM,SAAS;AAElD,MAAMG,WAAW,CAACH,QAChB,CAACE,SAASF;AAEZ,MAAMI,eAAe,CAACJ;IAC3B,IAAIE,SAASF,QACX,OAAO;IAGT,IAAIK,0BAA0BL,MAAM,QAAQ,GAAG;QAC7C,MAAMM,YAAYN,MAAM,QAAQ,EAAE,IAAI,CAACO,UAAqBA,QAAQ,QAAQ,IAAIC;QAChF,OAAOF,aAAaG,OAAOH,WAAW,MAAM,GAAG;IACjD;IAEA,IAAIN,AAAoB,eAApBA,MAAM,SAAS,IAAmBA,AAAoB,cAApBA,MAAM,SAAS,EAAgB;QACnE,MAAM,EAAEU,aAAa,EAAE,EAAE,GAAGV;QAG5B,MAAMW,0BACJD,cAAcA,WAAW,IAAI,CAAC,CAACE,YAAcA,AAAuB,UAAvBA,UAAU,QAAQ,IAAcA,AAAuB,aAAvBA,UAAU,QAAQ;QAEjG,IAAID,yBACF,OAAO;QAGT,IAAIX,AAAoB,cAApBA,MAAM,SAAS,EAAgB;YACjC,IAAIa,0BAA0Bb,MAAM,QAAQ,GAAG;gBAC7C,MAAMc,QAAQC,aAAaf,MAAM,QAAQ;gBACzC,OAAOc,AAAU,MAAVA;YACT;YAEA,IAAId,MAAM,eAAe,IAAIA,MAAM,eAAe,CAAC,MAAM,GAAG,GAC1D,OAAO;YAET,OAAO;QACT;QACA,IAAIA,AAAoB,eAApBA,MAAM,SAAS,EAAiB;YAClC,IAAIa,0BAA0Bb,MAAM,QAAQ,GAAG;gBAC7C,MAAMc,QAAQC,aAAaf,MAAM,QAAQ;gBACzC,OAAOc,AAAU,MAAVA;YACT;YAEA,IAAId,MAAM,YAAY,IAAIA,MAAM,YAAY,CAAC,MAAM,GAAG,GACpD,OAAO;QAEX;QAEA,OAAO;IACT;IAEA,MAAM,EAAEgB,WAAW,EAAE,EAAEN,aAAa,EAAE,EAAE,GAAGV;IAK3C,MAAMW,0BACJD,cAAcA,WAAW,IAAI,CAAC,CAACE,YAAcA,AAAuB,UAAvBA,UAAU,QAAQ,IAAcA,AAAuB,aAAvBA,UAAU,QAAQ;IAEjG,MAAMK,kBAAkBD,YAAYA,SAAS,IAAI,CAAC,CAACT,UAA4BA,WAAWA,QAAQ,QAAQ;IAE1G,OAAOI,2BAA2BM;AACpC"}
@@ -2,3 +2,4 @@ export declare const ANNOTATION_Z_INDEX = 1000;
2
2
  export declare const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
3
3
  export declare const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000;
4
4
  export declare const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001;
5
+ export declare const DEFAULT_PARENT_ID = "__DefaultParentId__";
@@ -2,6 +2,7 @@ const ANNOTATION_Z_INDEX = 1000;
2
2
  const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
3
3
  const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000;
4
4
  const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001;
5
- export { ANNOTATION_Z_INDEX, DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX, LINEAR_AXIS_INNER_OFFSET_TOP };
5
+ const DEFAULT_PARENT_ID = '__DefaultParentId__';
6
+ export { ANNOTATION_Z_INDEX, DEFAULT_PARENT_ID, DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX, LINEAR_AXIS_INNER_OFFSET_TOP };
6
7
 
7
8
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/utils/constant.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/constant.ts"],"sourcesContent":["// 标注层 z-index \nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\n"],"names":["ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX"],"mappings":"AACO,MAAMA,qBAAqB;AAE3B,MAAMC,+BAA+B;AAErC,MAAMC,iCAAiC;AAEvC,MAAMC,qCAAqC"}
1
+ {"version":3,"file":"pipeline/utils/constant.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/constant.ts"],"sourcesContent":["// 标注层 z-index\nexport const ANNOTATION_Z_INDEX = 1000\n// 线性轴 顶部空隙 预留5px\nexport const LINEAR_AXIS_INNER_OFFSET_TOP = 7\n// 双轴图 柱图 ZIndex\nexport const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000\n// 双轴图 非柱图 ZIndex\nexport const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001\n// 默认父级id\nexport const DEFAULT_PARENT_ID = '__DefaultParentId__'\n"],"names":["ANNOTATION_Z_INDEX","LINEAR_AXIS_INNER_OFFSET_TOP","DUAL_AXIS_CHART_COLUMN_Z_INDEX","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","DEFAULT_PARENT_ID"],"mappings":"AACO,MAAMA,qBAAqB;AAE3B,MAAMC,+BAA+B;AAErC,MAAMC,iCAAiC;AAEvC,MAAMC,qCAAqC;AAE3C,MAAMC,oBAAoB"}
@@ -0,0 +1,8 @@
1
+ import type { Measure, MeasureGroup, MeasureTree } from '../../../types';
2
+ /**
3
+ * @description 删除 measureTree 中符合 callback 条件的节点
4
+ * @param measureTree 待删除的 measureTree
5
+ * @param callback 回调函数,用于判断是否删除当前节点
6
+ * @returns 删除后的 measureTree
7
+ */
8
+ export declare const deleteMeasureTreeByCallback: <T extends MeasureTree>(measureTree?: T, callback?: (measure: Measure, index: number, measures: (Measure | MeasureGroup)[]) => boolean) => T | undefined;
@@ -0,0 +1,40 @@
1
+ import { isMeasure, isMeasureGroup } from "./typeGuard.js";
2
+ const deleteMeasureTreeByCallback = (measureTree, callback)=>{
3
+ if (!measureTree) return measureTree;
4
+ const stack = [
5
+ ...measureTree
6
+ ].reverse();
7
+ const parents = new Map();
8
+ measureTree.forEach((node)=>{
9
+ parents.set(node, measureTree);
10
+ });
11
+ const nodesToProcess = [];
12
+ const visited = new Set();
13
+ while(stack.length > 0){
14
+ const node = stack[stack.length - 1];
15
+ if (isMeasureGroup(node) && node.children && !visited.has(node)) {
16
+ visited.add(node);
17
+ const children = node.children.slice().reverse();
18
+ for (const child of children){
19
+ parents.set(child, node.children);
20
+ stack.push(child);
21
+ }
22
+ } else {
23
+ stack.pop();
24
+ nodesToProcess.push(node);
25
+ }
26
+ }
27
+ for (const node of nodesToProcess){
28
+ const parentList = parents.get(node);
29
+ if (parentList) {
30
+ const index = parentList.indexOf(node);
31
+ if (isMeasure(node)) {
32
+ if (callback?.(node, index, parentList)) parentList.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ return measureTree;
37
+ };
38
+ export { deleteMeasureTreeByCallback };
39
+
40
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/utils/measures/delete.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/measures/delete.ts"],"sourcesContent":["import type { Measure, MeasureGroup, MeasureTree } from 'src/types'\nimport { isMeasure, isMeasureGroup } from './typeGuard'\n\n/**\n * @description 删除 measureTree 中符合 callback 条件的节点\n * @param measureTree 待删除的 measureTree\n * @param callback 回调函数,用于判断是否删除当前节点\n * @returns 删除后的 measureTree\n */\nexport const deleteMeasureTreeByCallback = <T extends MeasureTree>(\n measureTree?: T,\n callback?: (measure: Measure, index: number, measures: (Measure | MeasureGroup)[]) => boolean,\n) => {\n if (!measureTree) {\n return measureTree\n }\n const stack: (Measure | MeasureGroup)[] = [...measureTree].reverse()\n const parents = new Map<Measure | MeasureGroup, (Measure | MeasureGroup)[]>()\n\n measureTree.forEach((node) => {\n parents.set(node, measureTree)\n })\n\n const nodesToProcess: (Measure | MeasureGroup)[] = []\n const visited = new Set<Measure | MeasureGroup>()\n\n while (stack.length > 0) {\n const node = stack[stack.length - 1]\n\n if (isMeasureGroup(node) && node.children && !visited.has(node)) {\n visited.add(node)\n const children = node.children.slice().reverse()\n for (const child of children) {\n parents.set(child, node.children)\n stack.push(child)\n }\n } else {\n stack.pop()\n nodesToProcess.push(node)\n }\n }\n\n for (const node of nodesToProcess) {\n const parentList = parents.get(node)\n\n if (parentList) {\n const index = parentList.indexOf(node)\n if (isMeasure(node)) {\n if (callback?.(node, index, parentList)) {\n parentList.splice(index, 1)\n }\n }\n }\n }\n\n return measureTree\n}\n"],"names":["deleteMeasureTreeByCallback","measureTree","callback","stack","parents","Map","node","nodesToProcess","visited","Set","isMeasureGroup","children","child","parentList","index","isMeasure"],"mappings":";AASO,MAAMA,8BAA8B,CACzCC,aACAC;IAEA,IAAI,CAACD,aACH,OAAOA;IAET,MAAME,QAAoC;WAAIF;KAAY,CAAC,OAAO;IAClE,MAAMG,UAAU,IAAIC;IAEpBJ,YAAY,OAAO,CAAC,CAACK;QACnBF,QAAQ,GAAG,CAACE,MAAML;IACpB;IAEA,MAAMM,iBAA6C,EAAE;IACrD,MAAMC,UAAU,IAAIC;IAEpB,MAAON,MAAM,MAAM,GAAG,EAAG;QACvB,MAAMG,OAAOH,KAAK,CAACA,MAAM,MAAM,GAAG,EAAE;QAEpC,IAAIO,eAAeJ,SAASA,KAAK,QAAQ,IAAI,CAACE,QAAQ,GAAG,CAACF,OAAO;YAC/DE,QAAQ,GAAG,CAACF;YACZ,MAAMK,WAAWL,KAAK,QAAQ,CAAC,KAAK,GAAG,OAAO;YAC9C,KAAK,MAAMM,SAASD,SAAU;gBAC5BP,QAAQ,GAAG,CAACQ,OAAON,KAAK,QAAQ;gBAChCH,MAAM,IAAI,CAACS;YACb;QACF,OAAO;YACLT,MAAM,GAAG;YACTI,eAAe,IAAI,CAACD;QACtB;IACF;IAEA,KAAK,MAAMA,QAAQC,eAAgB;QACjC,MAAMM,aAAaT,QAAQ,GAAG,CAACE;QAE/B,IAAIO,YAAY;YACd,MAAMC,QAAQD,WAAW,OAAO,CAACP;YACjC,IAAIS,UAAUT,OACZ;gBAAA,IAAIJ,WAAWI,MAAMQ,OAAOD,aAC1BA,WAAW,MAAM,CAACC,OAAO;YAC3B;QAEJ;IACF;IAEA,OAAOb;AACT"}
@@ -1,3 +1,4 @@
1
1
  export * from './find';
2
2
  export * from './depth';
3
+ export * from './delete';
3
4
  export * from './typeGuard';
@@ -1,3 +1,4 @@
1
1
  export * from "./find.js";
2
2
  export * from "./depth.js";
3
+ export * from "./delete.js";
3
4
  export * from "./typeGuard.js";
@@ -1,3 +1,4 @@
1
+ import type { DimensionEncoding } from "../encoding";
1
2
  /**
2
3
  * @description 维度
3
4
  */
@@ -16,7 +17,7 @@ export type Dimension = {
16
17
  * - row: 支持将多个维度映射到行通道, 支持所有图表类型
17
18
  * - column: 支持将多个维度映射到列通道, 支持所有图表类型
18
19
  */
19
- encoding?: 'xAxis' | 'yAxis' | 'angle' | 'color' | 'detail' | 'tooltip' | 'label' | 'row' | 'column';
20
+ encoding?: DimensionEncoding;
20
21
  };
21
22
  /**
22
23
  * @description 维度组
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @description 维度映射的通道
3
+ * - x: 支持将多个维度映射到x轴, 支持柱状图、折线图、面积图等
4
+ * - y: 支持将多个维度映射到y轴, 支持柱状图、折线图、面积图等
5
+ * - angle: 支持将多个维度映射到角度通道, 支持玫瑰图、雷达图等
6
+ * - color: 支持将多个维度映射到颜色通道, 支持所有图表类型
7
+ * - detail: 支持将多个维度映射到详情通道, 支持所有图表类型
8
+ * - tooltip: 支持将多个维度映射到提示通道, 支持所有图表类型
9
+ * - label: 支持将多个维度映射到标签通道, 支持所有图表类型
10
+ * - row: 支持将多个维度映射到行通道, 支持所有图表类型
11
+ * - column: 支持将多个维度映射到列通道, 支持所有图表类型
12
+ */
13
+ export type DimensionEncoding = 'xAxis' | 'yAxis' | 'angle' | 'color' | 'detail' | 'tooltip' | 'label' | 'row' | 'column';
@@ -1,2 +1,6 @@
1
1
  export type { Encoding } from './encoding';
2
+ export type { DimensionEncoding } from './dimensionEncoding';
3
+ export type { MeasureEncoding } from './measureEncoding';
2
4
  export { zEncoding } from './zEncoding';
5
+ export { zDimensionEncoding } from './zDimensionEncoding';
6
+ export { zMeasureEncoding } from './zMeasureEncoding';
@@ -1,2 +1,4 @@
1
1
  import { zEncoding } from "./zEncoding.js";
2
- export { zEncoding };
2
+ import { zDimensionEncoding } from "./zDimensionEncoding.js";
3
+ import { zMeasureEncoding } from "./zMeasureEncoding.js";
4
+ export { zDimensionEncoding, zEncoding, zMeasureEncoding };
@@ -0,0 +1 @@
1
+ export type MeasureEncoding = 'primaryYAxis' | 'secondaryYAxis' | 'xAxis' | 'yAxis' | 'angle' | 'radius' | 'size' | 'color' | 'detail' | 'column' | 'label' | 'tooltip';