@visactor/vchart 1.12.5 → 1.12.7-alpha.0

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 (175) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +464 -373
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart.js +2 -2
  6. package/cjs/chart/base/base-chart.js.map +1 -1
  7. package/cjs/chart/mosaic/mosaic.d.ts +0 -1
  8. package/cjs/chart/mosaic/mosaic.js +0 -3
  9. package/cjs/chart/mosaic/mosaic.js.map +1 -1
  10. package/cjs/chart/pie/interface.d.ts +2 -2
  11. package/cjs/chart/pie/interface.js.map +1 -1
  12. package/cjs/chart/polar/interface.d.ts +2 -0
  13. package/cjs/chart/polar/interface.js.map +1 -1
  14. package/cjs/compile/compilable-base.js +2 -1
  15. package/cjs/compile/mark/compilable-mark.d.ts +1 -1
  16. package/cjs/compile/mark/compilable-mark.js +4 -4
  17. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  18. package/cjs/compile/mark/interface.d.ts +1 -0
  19. package/cjs/compile/mark/interface.js.map +1 -1
  20. package/cjs/compile/util.js +1 -2
  21. package/cjs/component/axis/base-axis.d.ts +1 -2
  22. package/cjs/component/axis/base-axis.js +0 -3
  23. package/cjs/component/axis/base-axis.js.map +1 -1
  24. package/cjs/component/axis/cartesian/axis.js +1 -1
  25. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  26. package/cjs/component/axis/polar/axis.d.ts +0 -1
  27. package/cjs/component/axis/polar/axis.js +4 -20
  28. package/cjs/component/axis/polar/axis.js.map +1 -1
  29. package/cjs/component/axis/polar/interface/spec.d.ts +3 -1
  30. package/cjs/component/axis/polar/interface/spec.js.map +1 -1
  31. package/cjs/component/base/base-component.js +1 -3
  32. package/cjs/component/base/base-component.js.map +1 -1
  33. package/cjs/component/custom-mark/custom-mark.d.ts +0 -1
  34. package/cjs/component/custom-mark/custom-mark.js +1 -12
  35. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  36. package/cjs/component/label/base-label.d.ts +1 -2
  37. package/cjs/component/label/base-label.js +0 -3
  38. package/cjs/component/label/base-label.js.map +1 -1
  39. package/cjs/component/label/label.d.ts +0 -1
  40. package/cjs/component/label/label.js +2 -12
  41. package/cjs/component/label/label.js.map +1 -1
  42. package/cjs/component/label/total-label.d.ts +1 -1
  43. package/cjs/component/label/total-label.js +5 -12
  44. package/cjs/component/label/total-label.js.map +1 -1
  45. package/cjs/component/label/util.d.ts +1 -1
  46. package/cjs/component/label/util.js +12 -7
  47. package/cjs/component/label/util.js.map +1 -1
  48. package/cjs/component/legend/continuous/legend.js +2 -1
  49. package/cjs/component/legend/continuous/legend.js.map +1 -1
  50. package/cjs/component/legend/discrete/legend.js +2 -1
  51. package/cjs/component/legend/discrete/legend.js.map +1 -1
  52. package/cjs/component/legend/interface.d.ts +1 -0
  53. package/cjs/component/legend/interface.js.map +1 -1
  54. package/cjs/component/legend/util.d.ts +2 -2
  55. package/cjs/core/index.d.ts +1 -1
  56. package/cjs/core/index.js +1 -1
  57. package/cjs/core/index.js.map +1 -1
  58. package/cjs/core/vchart.d.ts +1 -1
  59. package/cjs/core/vchart.js +20 -20
  60. package/cjs/core/vchart.js.map +1 -1
  61. package/cjs/data/transforms/legend-data/continuous/continuous.d.ts +1 -1
  62. package/cjs/data/transforms/legend-data/continuous/continuous.js +3 -2
  63. package/cjs/data/transforms/legend-data/continuous/continuous.js.map +1 -1
  64. package/cjs/data/transforms/legend-data/continuous/interface.d.ts +1 -0
  65. package/cjs/data/transforms/legend-data/continuous/interface.js.map +1 -1
  66. package/cjs/data/transforms/legend-data/discrete/discrete.d.ts +1 -1
  67. package/cjs/data/transforms/legend-data/discrete/discrete.js +3 -3
  68. package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  69. package/cjs/data/transforms/legend-data/discrete/interface.d.ts +1 -0
  70. package/cjs/data/transforms/legend-data/discrete/interface.js.map +1 -1
  71. package/cjs/region/region.js +2 -3
  72. package/cjs/region/region.js.map +1 -1
  73. package/cjs/series/base/base-series.d.ts +6 -5
  74. package/cjs/series/base/base-series.js +22 -11
  75. package/cjs/series/base/base-series.js.map +1 -1
  76. package/cjs/series/base/constant.js +1 -0
  77. package/cjs/series/base/constant.js.map +1 -1
  78. package/cjs/series/gauge/interface.d.ts +1 -1
  79. package/cjs/series/gauge/interface.js.map +1 -1
  80. package/cjs/series/polar/animation.d.ts +8 -11
  81. package/cjs/series/polar/animation.js +18 -23
  82. package/cjs/series/polar/animation.js.map +1 -1
  83. package/cjs/series/radar/animation.d.ts +0 -3
  84. package/cjs/series/radar/animation.js +4 -4
  85. package/cjs/series/radar/animation.js.map +1 -1
  86. package/cjs/series/radar/radar.js +10 -7
  87. package/cjs/series/radar/radar.js.map +1 -1
  88. package/cjs/typings/spec/common.d.ts +5 -2
  89. package/cjs/typings/spec/common.js.map +1 -1
  90. package/esm/chart/base/base-chart.js +2 -2
  91. package/esm/chart/base/base-chart.js.map +1 -1
  92. package/esm/chart/mosaic/mosaic.d.ts +0 -1
  93. package/esm/chart/mosaic/mosaic.js +0 -3
  94. package/esm/chart/mosaic/mosaic.js.map +1 -1
  95. package/esm/chart/pie/interface.d.ts +2 -2
  96. package/esm/chart/pie/interface.js.map +1 -1
  97. package/esm/chart/polar/interface.d.ts +2 -0
  98. package/esm/chart/polar/interface.js.map +1 -1
  99. package/esm/compile/compilable-base.js +2 -1
  100. package/esm/compile/mark/compilable-mark.d.ts +1 -1
  101. package/esm/compile/mark/compilable-mark.js +5 -4
  102. package/esm/compile/mark/compilable-mark.js.map +1 -1
  103. package/esm/compile/mark/interface.d.ts +1 -0
  104. package/esm/compile/mark/interface.js.map +1 -1
  105. package/esm/compile/util.js +1 -2
  106. package/esm/component/axis/base-axis.d.ts +1 -2
  107. package/esm/component/axis/base-axis.js +0 -3
  108. package/esm/component/axis/base-axis.js.map +1 -1
  109. package/esm/component/axis/cartesian/axis.js +1 -1
  110. package/esm/component/axis/cartesian/axis.js.map +1 -1
  111. package/esm/component/axis/polar/axis.d.ts +0 -1
  112. package/esm/component/axis/polar/axis.js +4 -22
  113. package/esm/component/axis/polar/axis.js.map +1 -1
  114. package/esm/component/axis/polar/interface/spec.d.ts +3 -1
  115. package/esm/component/axis/polar/interface/spec.js.map +1 -1
  116. package/esm/component/base/base-component.js +1 -3
  117. package/esm/component/base/base-component.js.map +1 -1
  118. package/esm/component/custom-mark/custom-mark.d.ts +0 -1
  119. package/esm/component/custom-mark/custom-mark.js +0 -13
  120. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  121. package/esm/component/label/base-label.d.ts +1 -2
  122. package/esm/component/label/base-label.js +0 -3
  123. package/esm/component/label/base-label.js.map +1 -1
  124. package/esm/component/label/label.d.ts +0 -1
  125. package/esm/component/label/label.js +1 -13
  126. package/esm/component/label/label.js.map +1 -1
  127. package/esm/component/label/total-label.d.ts +1 -1
  128. package/esm/component/label/total-label.js +4 -13
  129. package/esm/component/label/total-label.js.map +1 -1
  130. package/esm/component/label/util.d.ts +1 -1
  131. package/esm/component/label/util.js +12 -7
  132. package/esm/component/label/util.js.map +1 -1
  133. package/esm/component/legend/continuous/legend.js +2 -1
  134. package/esm/component/legend/continuous/legend.js.map +1 -1
  135. package/esm/component/legend/discrete/legend.js +2 -1
  136. package/esm/component/legend/discrete/legend.js.map +1 -1
  137. package/esm/component/legend/interface.d.ts +1 -0
  138. package/esm/component/legend/interface.js.map +1 -1
  139. package/esm/component/legend/util.d.ts +2 -2
  140. package/esm/core/index.d.ts +1 -1
  141. package/esm/core/index.js +1 -1
  142. package/esm/core/index.js.map +1 -1
  143. package/esm/core/vchart.d.ts +1 -1
  144. package/esm/core/vchart.js +22 -22
  145. package/esm/core/vchart.js.map +1 -1
  146. package/esm/data/transforms/legend-data/continuous/continuous.d.ts +1 -1
  147. package/esm/data/transforms/legend-data/continuous/continuous.js +2 -2
  148. package/esm/data/transforms/legend-data/continuous/continuous.js.map +1 -1
  149. package/esm/data/transforms/legend-data/continuous/interface.d.ts +1 -0
  150. package/esm/data/transforms/legend-data/continuous/interface.js.map +1 -1
  151. package/esm/data/transforms/legend-data/discrete/discrete.d.ts +1 -1
  152. package/esm/data/transforms/legend-data/discrete/discrete.js +3 -3
  153. package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  154. package/esm/data/transforms/legend-data/discrete/interface.d.ts +1 -0
  155. package/esm/data/transforms/legend-data/discrete/interface.js.map +1 -1
  156. package/esm/region/region.js +2 -3
  157. package/esm/region/region.js.map +1 -1
  158. package/esm/series/base/base-series.d.ts +6 -5
  159. package/esm/series/base/base-series.js +20 -10
  160. package/esm/series/base/base-series.js.map +1 -1
  161. package/esm/series/base/constant.js +1 -0
  162. package/esm/series/base/constant.js.map +1 -1
  163. package/esm/series/gauge/interface.d.ts +1 -1
  164. package/esm/series/gauge/interface.js.map +1 -1
  165. package/esm/series/polar/animation.d.ts +8 -11
  166. package/esm/series/polar/animation.js +17 -24
  167. package/esm/series/polar/animation.js.map +1 -1
  168. package/esm/series/radar/animation.d.ts +0 -3
  169. package/esm/series/radar/animation.js +4 -4
  170. package/esm/series/radar/animation.js.map +1 -1
  171. package/esm/series/radar/radar.js +10 -7
  172. package/esm/series/radar/radar.js.map +1 -1
  173. package/esm/typings/spec/common.d.ts +5 -2
  174. package/esm/typings/spec/common.js.map +1 -1
  175. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/legend-data/continuous/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IContinuousLegendDataMakeOption {\n series: () => ISeries[];\n field: () => string | undefined;\n scale?: () => IBaseScale;\n}\n\nexport interface IContinuousLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string | undefined;\n data: () => StringOrNumber[];\n isHierarchyData?: () => boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/legend-data/continuous/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IContinuousLegendDataMakeOption {\n series: () => ISeries[];\n field: () => string | undefined;\n scale?: () => IBaseScale;\n}\n\nexport interface IContinuousLegendFilterOption {\n selected: () => StringOrNumber[];\n field: () => string | undefined;\n data: () => StringOrNumber[];\n isHierarchyData?: () => boolean;\n customFilter?: (data: any, selectedRange: StringOrNumber[], datumField: string) => any;\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  import type { ISeries } from '../../../../series/interface';
2
2
  import type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';
3
3
  export declare const discreteLegendDataMake: (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => IDiscreteLegendData[];
4
- export declare const discreteLegendFilter: (data: Array<any>, op: IDiscreteLegendFilterOption) => any[];
4
+ export declare const discreteLegendFilter: (data: Array<any>, op: IDiscreteLegendFilterOption) => any;
@@ -20,7 +20,7 @@ exports.discreteLegendDataMake = discreteLegendDataMake;
20
20
 
21
21
  const discreteLegendFilter = (data, op) => {
22
22
  var _a, _b, _c;
23
- const {series: series, selected: selected, field: field, data: legendData} = op, selectedData = selected(), legendKeys = legendData();
23
+ const {series: series, selected: selected, field: field, data: legendData, customFilter: customFilter} = op, selectedData = selected(), legendKeys = legendData();
24
24
  if (0 === selectedData.length && legendKeys.length) return [];
25
25
  if (selectedData.length === legendKeys.length) return data;
26
26
  const selectedFilter = {};
@@ -28,10 +28,10 @@ const discreteLegendFilter = (data, op) => {
28
28
  selectedFilter[s] = !0;
29
29
  }));
30
30
  const datumField = null !== (_a = field()) && void 0 !== _a ? _a : data_1.DEFAULT_DATA_SERIES_FIELD;
31
- return (0, vutils_1.isArray)(data) && (null === (_b = data[0]) || void 0 === _b ? void 0 : _b.nodes) ? (data[0].nodes = data[0].nodes.filter((d => !0 === selectedFilter[d.key])),
31
+ return customFilter ? customFilter(data, selectedData, datumField) : ((0, vutils_1.isArray)(data) && (null === (_b = data[0]) || void 0 === _b ? void 0 : _b.nodes) ? (data[0].nodes = data[0].nodes.filter((d => !0 === selectedFilter[d.key])),
32
32
  (null === (_c = data[0]) || void 0 === _c ? void 0 : _c.links) && (data[0].links = data[0].links.filter((d => !0 === selectedFilter[d.source] && !0 === selectedFilter[d.target])))) : (0,
33
33
  vutils_1.isValid)(datumField) && (data = data.filter((d => !0 === selectedFilter[series.getSeriesFieldValue(d, datumField)]))),
34
- data;
34
+ data);
35
35
  };
36
36
 
37
37
  exports.discreteLegendFilter = discreteLegendFilter;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":"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","file":"discrete.js","sourcesContent":["import { isValid, isArray } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';\nimport { DEFAULT_DATA_SERIES_FIELD } from '../../../../constant/data';\n\nexport const discreteLegendDataMake = (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => {\n const result: IDiscreteLegendData[] = [];\n const tempKey: { [key in string]: boolean } = {};\n const { series, seriesField } = op;\n series().forEach(s => {\n const field = seriesField(s);\n let infoList;\n if (field === s.getSeriesField()) {\n infoList = s.getSeriesInfoList();\n } else {\n infoList = s.getSeriesInfoInField(field);\n }\n infoList.forEach(info => {\n if (tempKey[info.key]) {\n return;\n }\n tempKey[info.key] = true;\n result.push(info);\n });\n });\n return result;\n};\n\nexport const discreteLegendFilter = (data: Array<any>, op: IDiscreteLegendFilterOption) => {\n const { series, selected, field, data: legendData } = op;\n const selectedData = selected();\n const legendKeys = legendData(); // 全量的图例项\n if (selectedData.length === 0 && legendKeys.length) {\n return [];\n }\n\n if (selectedData.length === legendKeys.length) {\n return data;\n }\n\n const selectedFilter = {};\n selectedData.forEach(s => {\n selectedFilter[s] = true;\n });\n\n const datumField = field() ?? DEFAULT_DATA_SERIES_FIELD;\n\n if (isArray(data) && data[0]?.nodes) {\n // data silter for sankey chart\n data[0].nodes = data[0].nodes.filter((d: any) => selectedFilter[d.key] === true);\n if (data[0]?.links) {\n data[0].links = data[0].links.filter(\n (d: any) => selectedFilter[d.source] === true && selectedFilter[d.target] === true\n );\n }\n } else {\n if (isValid(datumField)) {\n data = data.filter(d => selectedFilter[series.getSeriesFieldValue(d, datumField)] === true);\n }\n }\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/legend-data/discrete/discrete.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,oDAAsE;AAE/D,MAAM,sBAAsB,GAAG,CAAC,IAAoB,EAAE,EAAiC,EAAE,EAAE;IAChG,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,OAAO,GAAiC,EAAE,CAAC;IACjD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACnB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;YAChC,QAAQ,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;SAClC;aAAM;YACL,QAAQ,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAC1C;QACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACrB,OAAO;aACR;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AArBW,QAAA,sBAAsB,0BAqBjC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAgB,EAAE,EAA+B,EAAE,EAAE;;IACxF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;IACvE,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAChC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE;QAClD,OAAO,EAAE,CAAC;KACX;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACvB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAA,KAAK,EAAE,mCAAI,gCAAyB,CAAC;IAExD,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;KACrD;SAAM,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAI,MAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,EAAE;QAE1C,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACjF,IAAI,MAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,KAAK,EAAE;YAClB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAClC,CAAC,CAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CACnF,CAAC;SACH;KACF;SAAM;QACL,IAAI,IAAA,gBAAO,EAAC,UAAU,CAAC,EAAE;YACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;SAC7F;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AApCW,QAAA,oBAAoB,wBAoC/B","file":"discrete.js","sourcesContent":["import { isValid, isArray } from '@visactor/vutils';\nimport type { ISeries } from '../../../../series/interface';\nimport type { IDiscreteLegendData, IDiscreteLegendDataMakeOption, IDiscreteLegendFilterOption } from './interface';\nimport { DEFAULT_DATA_SERIES_FIELD } from '../../../../constant/data';\n\nexport const discreteLegendDataMake = (data: Array<ISeries>, op: IDiscreteLegendDataMakeOption) => {\n const result: IDiscreteLegendData[] = [];\n const tempKey: { [key in string]: boolean } = {};\n const { series, seriesField } = op;\n series().forEach(s => {\n const field = seriesField(s);\n let infoList;\n if (field === s.getSeriesField()) {\n infoList = s.getSeriesInfoList();\n } else {\n infoList = s.getSeriesInfoInField(field);\n }\n infoList.forEach(info => {\n if (tempKey[info.key]) {\n return;\n }\n tempKey[info.key] = true;\n result.push(info);\n });\n });\n return result;\n};\n\nexport const discreteLegendFilter = (data: Array<any>, op: IDiscreteLegendFilterOption) => {\n const { series, selected, field, data: legendData, customFilter } = op;\n const selectedData = selected();\n const legendKeys = legendData(); // 全量的图例项\n if (selectedData.length === 0 && legendKeys.length) {\n return [];\n }\n\n if (selectedData.length === legendKeys.length) {\n return data;\n }\n\n const selectedFilter = {};\n selectedData.forEach(s => {\n selectedFilter[s] = true;\n });\n\n const datumField = field() ?? DEFAULT_DATA_SERIES_FIELD;\n\n if (customFilter) {\n return customFilter(data, selectedData, datumField);\n } else if (isArray(data) && data[0]?.nodes) {\n // data silter for sankey chart\n data[0].nodes = data[0].nodes.filter((d: any) => selectedFilter[d.key] === true);\n if (data[0]?.links) {\n data[0].links = data[0].links.filter(\n (d: any) => selectedFilter[d.source] === true && selectedFilter[d.target] === true\n );\n }\n } else {\n if (isValid(datumField)) {\n data = data.filter(d => selectedFilter[series.getSeriesFieldValue(d, datumField)] === true);\n }\n }\n\n return data;\n};\n"]}
@@ -14,4 +14,5 @@ export interface IDiscreteLegendFilterOption {
14
14
  selected: () => StringOrNumber[];
15
15
  field: () => string;
16
16
  data: () => StringOrNumber[];
17
+ customFilter?: (data: any, selectedRange: StringOrNumber[], datumField: string) => any;
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n /** 图例的原始 key,直接取 datum 里的原始值 */\n originalKey: any;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n seriesField: (s: ISeries) => string;\n}\n\nexport interface IDiscreteLegendFilterOption {\n series: ISeries;\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n}\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/legend-data/discrete/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeries } from '../../../../series/interface';\nimport type { StringOrNumber } from '../../../../typings';\n\nexport interface IDiscreteLegendData {\n key: string;\n /** 图例的原始 key,直接取 datum 里的原始值 */\n originalKey: any;\n style: (attribute: string) => any;\n}\n\nexport interface IDiscreteLegendDataMakeOption {\n series: () => ISeries[];\n seriesField: (s: ISeries) => string;\n}\n\nexport interface IDiscreteLegendFilterOption {\n series: ISeries;\n selected: () => StringOrNumber[];\n field: () => string;\n data: () => StringOrNumber[];\n customFilter?: (data: any, selectedRange: StringOrNumber[], datumField: string) => any;\n}\n"]}
@@ -214,12 +214,11 @@ class Region extends layout_model_1.LayoutModel {
214
214
  this.getMarks().forEach((m => {
215
215
  var _a;
216
216
  m.compile({
217
- group: group
218
- }), null === (_a = m.getProduct()) || void 0 === _a || _a.configure({
217
+ group: group,
219
218
  context: {
220
219
  model: this
221
220
  }
222
- }).layout(((group, children, parentLayoutBounds, options) => {}));
221
+ }), null === (_a = m.getProduct()) || void 0 === _a || _a.layout(((group, children, parentLayoutBounds, options) => {}));
223
222
  }));
224
223
  }
225
224
  compile() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/region/region.ts"],"names":[],"mappings":"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","file":"region.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isEqual, array, isValid } from '@visactor/vutils';\nimport type { IGroupMark as IVGrammarGroupMark, ILayoutOptions, IMark } from '@visactor/vgrammar-core';\nimport { STATE_VALUE_ENUM_REVERSE } from '../compile/mark/interface';\nimport { DimensionTrigger } from '../interaction/dimension-trigger';\nimport { MarkTypeEnum } from '../mark/interface/type';\nimport type { ISeries } from '../series/interface';\nimport type { IModelOption } from '../model/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IRegion, IRegionSpec, IRegionSpecInfo } from './interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { IInteraction, ITrigger } from '../interaction/interface';\nimport { Interaction } from '../interaction/interaction';\nimport { ChartEvent } from '../constant/event';\nimport { LayoutZIndex } from '../constant/layout';\nimport { AttributeLevel } from '../constant/attribute';\nimport type { IRectMark } from '../mark/rect';\nimport { AnimateManager } from '../animation/animate-manager';\nimport type { IAnimate } from '../animation/interface';\nimport type { ILayoutType, StringOrNumber } from '../typings';\nimport { LayoutModel } from '../model/layout-model';\nimport { RegionSpecTransformer } from './region-transformer';\n\nexport class Region<T extends IRegionSpec = IRegionSpec> extends LayoutModel<T> implements IRegion {\n static type = 'region';\n static readonly transformerConstructor = RegionSpecTransformer;\n readonly transformerConstructor = RegionSpecTransformer as any;\n readonly modelType: string = 'region';\n static specKey = 'region';\n specKey: string = 'region';\n\n type = Region.type;\n protected _series: ISeries[] = [];\n layoutType: ILayoutType = 'region';\n layoutZIndex: number = LayoutZIndex.Region;\n\n animate?: IAnimate;\n\n interaction: IInteraction = new Interaction();\n\n declare getSpecInfo: () => IRegionSpecInfo;\n\n getMaxWidth() {\n return this._layout.maxWidth;\n }\n setMaxWidth(value: number) {\n this._layout.maxWidth = value;\n }\n\n getMaxHeight() {\n return this._layout.maxHeight;\n }\n setMaxHeight(value: number) {\n this._layout.maxHeight = value;\n }\n\n protected _groupMark!: IGroupMark;\n getGroupMark() {\n return this._groupMark;\n }\n\n protected _interactionMark!: IGroupMark;\n getInteractionMark() {\n return this._interactionMark;\n }\n\n getStackInverse() {\n return this._spec.stackInverse === true;\n }\n\n getStackSort() {\n return this._spec.stackSort === true;\n }\n\n protected _backgroundMark?: IRectMark;\n protected _foregroundMark?: IRectMark;\n\n protected _trigger: ITrigger;\n\n constructor(spec: T, ctx: IModelOption) {\n super(spec, ctx);\n this.userId = spec.id;\n this.coordinate = spec.coordinate ?? 'cartesian';\n if (this._option.animation) {\n this.animate = new AnimateManager({\n getCompiler: ctx.getCompiler\n });\n }\n this.interaction.setDisableActiveEffect(this._option.disableTriggerEvent);\n }\n\n protected _getClipDefaultValue() {\n const chartSpec = this._option.getChart().getSpec();\n const hasDataZoom = (chartSpec as any).dataZoom?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? 'filter';\n return filterMode === 'axis';\n });\n const hasScrollBar = (chartSpec as any).scrollBar?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? 'axis';\n return filterMode === 'axis';\n });\n\n return hasDataZoom || hasScrollBar ? true : this._layout.layoutClip;\n }\n\n created(): void {\n this.initLayout();\n super.created();\n const clip = this._spec.clip ?? this._getClipDefaultValue();\n this._groupMark = this._createGroupMark('regionGroup', this.userId, this.layoutZIndex);\n // 交互层\n this._interactionMark = this._createGroupMark(\n 'regionInteractionGroup',\n (this.userId ?? this.type) + '_interaction',\n LayoutZIndex.Interaction\n );\n\n // hack: region 的样式不能设置在groupMark上,因为groupMark目前没有计算dirtyBound,会导致拖影问题\n if (!isEmpty(this._spec.style)) {\n this._backgroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionBackground' }) as IRectMark;\n if (clip) {\n this._foregroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionForeground' }) as IRectMark;\n }\n [this._backgroundMark, this._foregroundMark].forEach(mark => {\n if (mark) {\n mark.created();\n this.setMarkStyle(\n mark,\n {\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._groupMark.addMark(mark);\n }\n });\n this._backgroundMark && this._backgroundMark.setZIndex(LayoutZIndex.SeriesGroup - 1);\n this._foregroundMark && this._foregroundMark.setZIndex(LayoutZIndex.Mark + 1);\n }\n this.createTrigger();\n }\n\n private _createGroupMark(name: string, userId: StringOrNumber, zIndex: number) {\n const groupMark = this._createMark({ type: MarkTypeEnum.group, name }) as IGroupMark;\n groupMark.setUserId(userId);\n groupMark.setZIndex(zIndex);\n const clip = this._spec.clip ?? this._getClipDefaultValue();\n this.setMarkStyle(\n groupMark,\n {\n x: () => this.getLayoutStartPoint().x,\n y: () => this.getLayoutStartPoint().y,\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height,\n clip\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this.setMarkStyle(\n groupMark,\n {\n cornerRadius: this._spec.style?.cornerRadius\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n this._marks.addMark(groupMark);\n return groupMark;\n }\n\n init(option: any) {\n super.init(option);\n this.initMark();\n this.initSeriesDataflow();\n this.initInteraction();\n this.initTrigger();\n }\n initMark() {\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n protected _initBackgroundMarkStyle() {\n if (this._backgroundMark) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n fillOpacity: this._spec.style?.fill ? 1 : 0,\n ...this._spec.style\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n if (this._spec.clip ?? this._getClipDefaultValue()) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n strokeOpacity: 0\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n }\n }\n\n protected _initForegroundMarkStyle() {\n if (this._foregroundMark) {\n this.setMarkStyle(\n this._foregroundMark,\n {\n ...this._spec.style,\n fillOpacity: 0\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec?.style, spec?.style)) {\n result.reMake = true;\n }\n return result;\n }\n\n reInit(spec?: T) {\n super.reInit(spec);\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n addSeries(s: ISeries) {\n if (!s) {\n return;\n }\n if (!this._series.includes(s)) {\n this._series.push(s);\n }\n }\n\n removeSeries(s: ISeries) {\n if (!s) {\n return;\n }\n const index = this._series.findIndex(s_ => s_ === s);\n if (index >= 0) {\n this._series.splice(index, 1);\n }\n }\n\n getSeries(\n opt: {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: StringOrNumber;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n } = {}\n ): ISeries[] {\n return this._series.filter(\n s =>\n (opt.name ? s?.name === opt.name : true) &&\n (opt.userId ? array(opt.userId).includes(s.userId) : true) &&\n (isValid(opt.specIndex) ? array(opt.specIndex).includes(s.getSpecIndex()) : true) &&\n (opt.id ? s.id === opt.id : true) &&\n (opt.type ? s.type === opt.type : true) &&\n (opt.coordinateType ? s.coordinate === opt.coordinateType : true) &&\n (opt.dataName ? s.getRawData?.()?.name === opt.dataName : true)\n );\n }\n\n getSeriesInName(name: string): ISeries {\n return this.getSeries({ name })[0];\n }\n getSeriesInUserId(userId: string): ISeries {\n return this.getSeries({ userId })[0];\n }\n getSeriesInId(id: number): ISeries {\n return this.getSeries({ id })[0];\n }\n getSeriesInType(type: string): ISeries[] {\n return this.getSeries({ type });\n }\n getSeriesInCoordinateType(coordinateType: CoordinateType): ISeries[] {\n return this.getSeries({ coordinateType });\n }\n getSeriesInDataName(dataName: string): ISeries[] {\n return this.getSeries({ dataName });\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n initSeriesDataflow() {\n const viewDataFilters = this._series.map(s => s.getViewDataFilter() ?? s.getViewData()).filter(v => !!v);\n this._option.dataSet.multipleDataViewAddListener(viewDataFilters, 'change', this.seriesDataFilterOver);\n }\n\n seriesDataFilterOver = () => {\n this.event.emit(ChartEvent.regionSeriesDataFilterOver, { model: this, chart: this.getChart() });\n this._series.forEach(s => {\n if (s.getViewDataFilter()) {\n s.reTransformViewData();\n }\n });\n };\n\n release() {\n super.release();\n this._series = [];\n }\n /** dimension */\n createTrigger() {\n const triggerOptions = {\n ...this._option,\n model: this,\n interaction: this.interaction\n };\n this._trigger = new DimensionTrigger(triggerOptions);\n }\n\n initTrigger() {\n // register all mark\n // trigger check mark enable\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n this._trigger.registerMark(m);\n });\n });\n this._trigger.init();\n }\n\n initInteraction() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n // 注册所有支持反选状态mark\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n for (const key in STATE_VALUE_ENUM_REVERSE) {\n if (!isEmpty(m.stateStyle[STATE_VALUE_ENUM_REVERSE[key]])) {\n this.interaction.registerMark(STATE_VALUE_ENUM_REVERSE[key], m);\n }\n }\n });\n });\n }\n\n compileMarks(group?: string | IVGrammarGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n m.getProduct()\n ?.configure({\n context: {\n model: this\n }\n })\n .layout(\n (group: IVGrammarGroupMark, children: IMark[], parentLayoutBounds: IBoundsLike, options?: ILayoutOptions) => {\n // console.log('region mark layout');\n }\n );\n });\n }\n\n compile() {\n this.animate?.compile();\n this.compileMarks();\n }\n\n getBoundsInRect = () => {\n return {\n x1: this._layout.getLayoutStartPoint().x,\n y1: this._layout.getLayoutStartPoint().y,\n x2: this._layout.getLayoutStartPoint().x + this._layout.getLayoutRect().width,\n y2: this._layout.getLayoutStartPoint().y + this._layout.getLayoutRect().height\n };\n };\n\n onLayoutEnd(ctx: any): void {\n this._series.forEach(s => s.onLayoutEnd(ctx));\n super.onLayoutEnd(ctx);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/region/region.ts"],"names":[],"mappings":"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","file":"region.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isEqual, array, isValid } from '@visactor/vutils';\nimport type { IGroupMark as IVGrammarGroupMark, ILayoutOptions, IMark } from '@visactor/vgrammar-core';\nimport { STATE_VALUE_ENUM_REVERSE } from '../compile/mark/interface';\nimport { DimensionTrigger } from '../interaction/dimension-trigger';\nimport { MarkTypeEnum } from '../mark/interface/type';\nimport type { ISeries } from '../series/interface';\nimport type { IModelOption } from '../model/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IRegion, IRegionSpec, IRegionSpecInfo } from './interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { IInteraction, ITrigger } from '../interaction/interface';\nimport { Interaction } from '../interaction/interaction';\nimport { ChartEvent } from '../constant/event';\nimport { LayoutZIndex } from '../constant/layout';\nimport { AttributeLevel } from '../constant/attribute';\nimport type { IRectMark } from '../mark/rect';\nimport { AnimateManager } from '../animation/animate-manager';\nimport type { IAnimate } from '../animation/interface';\nimport type { ILayoutType, StringOrNumber } from '../typings';\nimport { LayoutModel } from '../model/layout-model';\nimport { RegionSpecTransformer } from './region-transformer';\n\nexport class Region<T extends IRegionSpec = IRegionSpec> extends LayoutModel<T> implements IRegion {\n static type = 'region';\n static readonly transformerConstructor = RegionSpecTransformer;\n readonly transformerConstructor = RegionSpecTransformer as any;\n readonly modelType: string = 'region';\n static specKey = 'region';\n specKey: string = 'region';\n\n type = Region.type;\n protected _series: ISeries[] = [];\n layoutType: ILayoutType = 'region';\n layoutZIndex: number = LayoutZIndex.Region;\n\n animate?: IAnimate;\n\n interaction: IInteraction = new Interaction();\n\n declare getSpecInfo: () => IRegionSpecInfo;\n\n getMaxWidth() {\n return this._layout.maxWidth;\n }\n setMaxWidth(value: number) {\n this._layout.maxWidth = value;\n }\n\n getMaxHeight() {\n return this._layout.maxHeight;\n }\n setMaxHeight(value: number) {\n this._layout.maxHeight = value;\n }\n\n protected _groupMark!: IGroupMark;\n getGroupMark() {\n return this._groupMark;\n }\n\n protected _interactionMark!: IGroupMark;\n getInteractionMark() {\n return this._interactionMark;\n }\n\n getStackInverse() {\n return this._spec.stackInverse === true;\n }\n\n getStackSort() {\n return this._spec.stackSort === true;\n }\n\n protected _backgroundMark?: IRectMark;\n protected _foregroundMark?: IRectMark;\n\n protected _trigger: ITrigger;\n\n constructor(spec: T, ctx: IModelOption) {\n super(spec, ctx);\n this.userId = spec.id;\n this.coordinate = spec.coordinate ?? 'cartesian';\n if (this._option.animation) {\n this.animate = new AnimateManager({\n getCompiler: ctx.getCompiler\n });\n }\n this.interaction.setDisableActiveEffect(this._option.disableTriggerEvent);\n }\n\n protected _getClipDefaultValue() {\n const chartSpec = this._option.getChart().getSpec();\n const hasDataZoom = (chartSpec as any).dataZoom?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? 'filter';\n return filterMode === 'axis';\n });\n const hasScrollBar = (chartSpec as any).scrollBar?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? 'axis';\n return filterMode === 'axis';\n });\n\n return hasDataZoom || hasScrollBar ? true : this._layout.layoutClip;\n }\n\n created(): void {\n this.initLayout();\n super.created();\n const clip = this._spec.clip ?? this._getClipDefaultValue();\n this._groupMark = this._createGroupMark('regionGroup', this.userId, this.layoutZIndex);\n // 交互层\n this._interactionMark = this._createGroupMark(\n 'regionInteractionGroup',\n (this.userId ?? this.type) + '_interaction',\n LayoutZIndex.Interaction\n );\n\n // hack: region 的样式不能设置在groupMark上,因为groupMark目前没有计算dirtyBound,会导致拖影问题\n if (!isEmpty(this._spec.style)) {\n this._backgroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionBackground' }) as IRectMark;\n if (clip) {\n this._foregroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionForeground' }) as IRectMark;\n }\n [this._backgroundMark, this._foregroundMark].forEach(mark => {\n if (mark) {\n mark.created();\n this.setMarkStyle(\n mark,\n {\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._groupMark.addMark(mark);\n }\n });\n this._backgroundMark && this._backgroundMark.setZIndex(LayoutZIndex.SeriesGroup - 1);\n this._foregroundMark && this._foregroundMark.setZIndex(LayoutZIndex.Mark + 1);\n }\n this.createTrigger();\n }\n\n private _createGroupMark(name: string, userId: StringOrNumber, zIndex: number) {\n const groupMark = this._createMark({ type: MarkTypeEnum.group, name }) as IGroupMark;\n groupMark.setUserId(userId);\n groupMark.setZIndex(zIndex);\n const clip = this._spec.clip ?? this._getClipDefaultValue();\n this.setMarkStyle(\n groupMark,\n {\n x: () => this.getLayoutStartPoint().x,\n y: () => this.getLayoutStartPoint().y,\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height,\n clip\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this.setMarkStyle(\n groupMark,\n {\n cornerRadius: this._spec.style?.cornerRadius\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n this._marks.addMark(groupMark);\n return groupMark;\n }\n\n init(option: any) {\n super.init(option);\n this.initMark();\n this.initSeriesDataflow();\n this.initInteraction();\n this.initTrigger();\n }\n initMark() {\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n protected _initBackgroundMarkStyle() {\n if (this._backgroundMark) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n fillOpacity: this._spec.style?.fill ? 1 : 0,\n ...this._spec.style\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n if (this._spec.clip ?? this._getClipDefaultValue()) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n strokeOpacity: 0\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n }\n }\n\n protected _initForegroundMarkStyle() {\n if (this._foregroundMark) {\n this.setMarkStyle(\n this._foregroundMark,\n {\n ...this._spec.style,\n fillOpacity: 0\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec?.style, spec?.style)) {\n result.reMake = true;\n }\n return result;\n }\n\n reInit(spec?: T) {\n super.reInit(spec);\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n addSeries(s: ISeries) {\n if (!s) {\n return;\n }\n if (!this._series.includes(s)) {\n this._series.push(s);\n }\n }\n\n removeSeries(s: ISeries) {\n if (!s) {\n return;\n }\n const index = this._series.findIndex(s_ => s_ === s);\n if (index >= 0) {\n this._series.splice(index, 1);\n }\n }\n\n getSeries(\n opt: {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: StringOrNumber;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n } = {}\n ): ISeries[] {\n return this._series.filter(\n s =>\n (opt.name ? s?.name === opt.name : true) &&\n (opt.userId ? array(opt.userId).includes(s.userId) : true) &&\n (isValid(opt.specIndex) ? array(opt.specIndex).includes(s.getSpecIndex()) : true) &&\n (opt.id ? s.id === opt.id : true) &&\n (opt.type ? s.type === opt.type : true) &&\n (opt.coordinateType ? s.coordinate === opt.coordinateType : true) &&\n (opt.dataName ? s.getRawData?.()?.name === opt.dataName : true)\n );\n }\n\n getSeriesInName(name: string): ISeries {\n return this.getSeries({ name })[0];\n }\n getSeriesInUserId(userId: string): ISeries {\n return this.getSeries({ userId })[0];\n }\n getSeriesInId(id: number): ISeries {\n return this.getSeries({ id })[0];\n }\n getSeriesInType(type: string): ISeries[] {\n return this.getSeries({ type });\n }\n getSeriesInCoordinateType(coordinateType: CoordinateType): ISeries[] {\n return this.getSeries({ coordinateType });\n }\n getSeriesInDataName(dataName: string): ISeries[] {\n return this.getSeries({ dataName });\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n initSeriesDataflow() {\n const viewDataFilters = this._series.map(s => s.getViewDataFilter() ?? s.getViewData()).filter(v => !!v);\n this._option.dataSet.multipleDataViewAddListener(viewDataFilters, 'change', this.seriesDataFilterOver);\n }\n\n seriesDataFilterOver = () => {\n this.event.emit(ChartEvent.regionSeriesDataFilterOver, { model: this, chart: this.getChart() });\n this._series.forEach(s => {\n if (s.getViewDataFilter()) {\n s.reTransformViewData();\n }\n });\n };\n\n release() {\n super.release();\n this._series = [];\n }\n /** dimension */\n createTrigger() {\n const triggerOptions = {\n ...this._option,\n model: this,\n interaction: this.interaction\n };\n this._trigger = new DimensionTrigger(triggerOptions);\n }\n\n initTrigger() {\n // register all mark\n // trigger check mark enable\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n this._trigger.registerMark(m);\n });\n });\n this._trigger.init();\n }\n\n initInteraction() {\n if (this._option.disableTriggerEvent) {\n return;\n }\n\n // 注册所有支持反选状态mark\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n for (const key in STATE_VALUE_ENUM_REVERSE) {\n if (!isEmpty(m.stateStyle[STATE_VALUE_ENUM_REVERSE[key]])) {\n this.interaction.registerMark(STATE_VALUE_ENUM_REVERSE[key], m);\n }\n }\n });\n });\n }\n\n compileMarks(group?: string | IVGrammarGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group, context: { model: this } });\n m.getProduct()?.layout(\n (group: IVGrammarGroupMark, children: IMark[], parentLayoutBounds: IBoundsLike, options?: ILayoutOptions) => {\n // console.log('region mark layout');\n }\n );\n });\n }\n\n compile() {\n this.animate?.compile();\n this.compileMarks();\n }\n\n getBoundsInRect = () => {\n return {\n x1: this._layout.getLayoutStartPoint().x,\n y1: this._layout.getLayoutStartPoint().y,\n x2: this._layout.getLayoutStartPoint().x + this._layout.getLayoutRect().width,\n y2: this._layout.getLayoutStartPoint().y + this._layout.getLayoutRect().height\n };\n };\n\n onLayoutEnd(ctx: any): void {\n this._series.forEach(s => s.onLayoutEnd(ctx));\n super.onLayoutEnd(ctx);\n }\n}\n"]}
@@ -2,10 +2,10 @@ import { DataView } from '@visactor/vdataset';
2
2
  import type { DataSet, ITransformOptions } from '@visactor/vdataset';
3
3
  import type { IRegion } from '../../region/interface';
4
4
  import type { IMark } from '../../mark/interface';
5
- import type { CoordinateType, IInvalidType, IPoint, DataKeyType, Datum, Maybe, ISeriesSpec, IGroup, ILayoutType, ILayoutPoint, ILayoutRect } from '../../typings';
5
+ import type { CoordinateType, IInvalidType, IPoint, DataKeyType, Datum, Maybe, ISeriesSpec, IExtensionMarkSpec, IExtensionGroupMarkSpec, EnableMarkType, IGroup, ILayoutType, ILayoutPoint, ILayoutRect } from '../../typings';
6
6
  import { BaseModel } from '../../model/base-model';
7
7
  import type { ISeriesOption, ISeries, ISeriesMarkInitOption, ISeriesStackData, ISeriesTooltipHelper, SeriesMarkMap, ISeriesMarkInfo, ISeriesSpecInfo, ISeriesStackDataLeaf, ISeriesStackDataMeta, ISeriesSeriesInfo } from '../interface';
8
- import type { IModelEvaluateOption, IModelRenderOption } from '../../model/interface';
8
+ import type { IModelEvaluateOption, IModelRenderOption, IUpdateSpecResult } from '../../model/interface';
9
9
  import type { AddVChartPropertyContext } from '../../data/transforms/add-property';
10
10
  import type { IBaseInteractionSpec } from '../../interaction/interface';
11
11
  import type { StatisticOperations } from '../../data/transforms/dimension-statistics';
@@ -15,6 +15,7 @@ import type { ISeriesMarkAttributeContext } from '../../compile/mark';
15
15
  import { STATE_VALUE_ENUM } from '../../compile/mark';
16
16
  import { BaseSeriesSpecTransformer } from './base-series-transformer';
17
17
  import type { EventType } from '@visactor/vgrammar-core';
18
+ import type { ILabelSpec } from '../../component/label/interface';
18
19
  export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseModel<T> implements ISeries {
19
20
  readonly specKey: string;
20
21
  readonly type: string;
@@ -169,9 +170,9 @@ export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseMode
169
170
  protected initEvent(): void;
170
171
  protected _releaseEvent(): void;
171
172
  protected initTooltip(): void;
172
- _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: {
173
- [key: string]: true;
174
- }): {
173
+ _compareExtensionMarksSpec(newMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[], prevMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[], compareResult: IUpdateSpecResult): void;
174
+ _compareLabelSpec(newLabels: ILabelSpec[], prevLabels: ILabelSpec[], compareResult: IUpdateSpecResult): void;
175
+ _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: Record<string, boolean>): {
175
176
  change: boolean;
176
177
  reMake: boolean;
177
178
  reRender: boolean;
@@ -519,20 +519,31 @@ class BaseSeries extends base_model_1.BaseModel {
519
519
  initTooltip() {
520
520
  this._tooltipHelper = new tooltip_helper_1.BaseSeriesTooltipHelper(this);
521
521
  }
522
+ _compareExtensionMarksSpec(newMarks, prevMarks, compareResult) {
523
+ newMarks.length !== prevMarks.length || prevMarks.some(((prev, index) => prev.type !== newMarks[index].type || prev.id !== newMarks[index].id)) ? compareResult.reMake = !0 : prevMarks.some(((prev, index) => prev.visible !== newMarks[index].visible)) && (compareResult.reCompile = !0);
524
+ }
525
+ _compareLabelSpec(newLabels, prevLabels, compareResult) {
526
+ newLabels.length !== prevLabels.length || prevLabels.some(((prev, index) => prev.labelLayout !== newLabels[index].labelLayout)) ? compareResult.reMake = !0 : !compareResult.reCompile && prevLabels.some(((prev, index) => !(0,
527
+ vutils_1.isEqual)(prev, newLabels[index]))) && (compareResult.reCompile = !0);
528
+ }
522
529
  _compareSpec(spec, prevSpec, ignoreCheckKeys) {
523
- var _a, _b;
524
530
  const result = super._compareSpec(spec, prevSpec), currentKeys = Object.keys(prevSpec || {}).sort(), nextKeys = Object.keys(spec || {}).sort();
525
- return (0, vutils_1.isEqual)(currentKeys, nextKeys) ? ((ignoreCheckKeys = Object.assign(Object.assign(Object.assign({}, constant_1.defaultSeriesIgnoreCheckKeys), constant_1.defaultSeriesCompileCheckKeys), ignoreCheckKeys)).invalidType = !0,
526
- spec.invalidType !== prevSpec.invalidType && (result.reCompile = !0), ignoreCheckKeys.extensionMark = !0,
527
- ((0, vutils_1.array)(spec.extensionMark).length !== (0, vutils_1.array)(prevSpec.extensionMark).length || (null === (_a = prevSpec.extensionMark) || void 0 === _a ? void 0 : _a.some(((mark, index) => mark.type !== spec.extensionMark[index].type || mark.id !== spec.extensionMark[index].id)))) && (result.reMake = !0),
528
- result.reMake ? result : ((null === (_b = prevSpec.extensionMark) || void 0 === _b ? void 0 : _b.some(((mark, index) => mark.visible !== spec.extensionMark[index].visible))) && (result.reCompile = !0),
529
- this._marks.getMarks().some((m => {
531
+ if (!(0, vutils_1.isEqual)(currentKeys, nextKeys)) return result.reMake = !0, result;
532
+ const ignores = Object.assign(Object.assign(Object.assign(Object.assign({}, constant_1.defaultSeriesIgnoreCheckKeys), constant_1.defaultSeriesCompileCheckKeys), ignoreCheckKeys), {
533
+ extensionMark: !0,
534
+ label: !0,
535
+ totalLabel: !0
536
+ });
537
+ return this._compareExtensionMarksSpec((0, vutils_1.array)(spec.extensionMark), (0,
538
+ vutils_1.array)(prevSpec.extensionMark), result), !result.reMake && this._compareLabelSpec((0,
539
+ vutils_1.array)(spec.label), (0, vutils_1.array)(prevSpec.label), result), !result.reMake && this._compareLabelSpec((0,
540
+ vutils_1.array)(spec.totalLabel), (0, vutils_1.array)(prevSpec.totalLabel), result),
541
+ result.reMake ? result : (!result.reCompile && this._marks.getMarks().some((m => {
530
542
  var _a, _b;
531
- return ignoreCheckKeys[m.name] = !0, (null === (_a = prevSpec[m.name]) || void 0 === _a ? void 0 : _a.visible) !== (null === (_b = spec[m.name]) || void 0 === _b ? void 0 : _b.visible);
532
- })) && (result.reCompile = !0), currentKeys.some((k => constant_1.defaultSeriesCompileCheckKeys[k] && !(0,
533
- vutils_1.isEqual)(spec[k], prevSpec[k]))) && (result.reCompile = !0), currentKeys.some((k => !ignoreCheckKeys[k] && !(0,
534
- vutils_1.isEqual)(spec[k], prevSpec[k]))) ? (result.reMake = !0, result) : result)) : (result.reMake = !0,
535
- result);
543
+ return ignores[m.name] = !0, (null === (_a = prevSpec[m.name]) || void 0 === _a ? void 0 : _a.visible) !== (null === (_b = spec[m.name]) || void 0 === _b ? void 0 : _b.visible);
544
+ })) && (result.reCompile = !0), !result.reCompile && currentKeys.some((k => constant_1.defaultSeriesCompileCheckKeys[k] && !(0,
545
+ vutils_1.isEqual)(spec[k], prevSpec[k]))) && (result.reCompile = !0), currentKeys.some((k => !ignores[k] && !(0,
546
+ vutils_1.isEqual)(spec[k], prevSpec[k]))) ? (result.reMake = !0, result) : result);
536
547
  }
537
548
  _updateSpecData() {
538
549
  !this._rawData || !this._spec.data || this._spec.data instanceof vdataset_1.DataView || (0,