@visactor/vchart-extension 2.0.4-alpha.6 → 2.0.4

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.
@@ -12,4 +12,5 @@ const vchart_1 = require("@visactor/vchart"), theme_1 = require("./theme"), vuti
12
12
  }), (0, vutils_1.mixin)(AxisCls, axis_3d_mixin_1.Axis3dMixin);
13
13
  };
14
14
 
15
- exports.registerCartesianLinearAxis3d = registerCartesianLinearAxis3d;
15
+ exports.registerCartesianLinearAxis3d = registerCartesianLinearAxis3d;
16
+ //# sourceMappingURL=linear-axis.js.map
@@ -11,5 +11,4 @@ Object.defineProperty(exports, "__esModule", {
11
11
  name: "bar3d",
12
12
  type: "rect3d"
13
13
  }
14
- };
15
- //# sourceMappingURL=constant.js.map
14
+ };
@@ -12,4 +12,5 @@ class Bar3dSeriesSpecTransformer extends vchart_1.BarSeriesSpecTransformer {
12
12
  }
13
13
  }
14
14
 
15
- exports.Bar3dSeriesSpecTransformer = Bar3dSeriesSpecTransformer;
15
+ exports.Bar3dSeriesSpecTransformer = Bar3dSeriesSpecTransformer;
16
+ //# sourceMappingURL=series-spec-transformer.js.map
@@ -22,5 +22,4 @@ const registerCandlestickChart = () => {
22
22
  (0, candlestick_1.registerCandlestickSeries)(), vchart_1.Factory.registerChart(CandlestickChart.type, CandlestickChart);
23
23
  };
24
24
 
25
- exports.registerCandlestickChart = registerCandlestickChart;
26
- //# sourceMappingURL=candlestick.js.map
25
+ exports.registerCandlestickChart = registerCandlestickChart;
@@ -115,6 +115,7 @@ export declare class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends B
115
115
  createCanvas: (params: import("@visactor/vrender-core").ICreateCanvasParams) => any;
116
116
  createImage: typeof createImage;
117
117
  onUpdateMaskCanvas: (inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => void;
118
+ onLayoutFinished: () => void;
118
119
  };
119
120
  protected _buildMarkAttributeContext(): void;
120
121
  initAnimation(): void;
@@ -105,7 +105,11 @@ class ImageCloudSeries extends vchart_1.BaseSeries {
105
105
  inputImage && this._maskMark && this._maskMark.getProduct().getChildren().forEach((element => {
106
106
  element.setAttribute("background", inputImage);
107
107
  })), maskImage && "masked" === (null === (_a = this._spec.layoutConfig) || void 0 === _a ? void 0 : _a.placement) && this._rootMark.getProduct().setAttribute("background", maskImage);
108
- }).bind(this)
108
+ }).bind(this),
109
+ onLayoutFinished: () => {
110
+ var _a, _b;
111
+ return null === (_b = null === (_a = this._option.globalInstance.getChart().getOption().performanceHook) || void 0 === _a ? void 0 : _a.afterWordcloudShapeDraw) || void 0 === _b ? void 0 : _b.call(_a, this._option.globalInstance);
112
+ }
109
113
  };
110
114
  }
111
115
  _buildMarkAttributeContext() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/image-cloud/series/image-cloud.ts"],"names":[],"mappings":"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","file":"image-cloud.js","sourcesContent":["import type { IImageCloudSeriesSpec } from './interface';\nimport { IMAGE_CLOUD_SERIES_TYPE, ImageCloudMarkNameEnum, imageCloudSeriesMark } from './constant';\nimport type { IPoint } from '@visactor/vutils';\nimport { isValid } from '@visactor/vutils';\nimport { imagecloudTransform } from '@visactor/vlayouts';\nimport type { GridLayoutConfig } from '@visactor/vlayouts';\nimport { registerImageCloudAnimation } from './animation';\nimport { ImageCloudTooltipHelper } from './tooltip-helper';\nimport { createImage } from '@visactor/vrender-core';\nimport type { Datum, IImageMark, IMark, IRectMark } from '@visactor/vchart';\nimport {\n animationConfig,\n AttributeLevel,\n BaseSeries,\n DEFAULT_DATA_KEY,\n Factory,\n registerImageMark,\n userAnimationConfig,\n vglobal\n} from '@visactor/vchart';\n\nexport class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends BaseSeries<T> {\n static readonly type: string = IMAGE_CLOUD_SERIES_TYPE;\n type = IMAGE_CLOUD_SERIES_TYPE;\n\n static readonly mark = imageCloudSeriesMark;\n\n protected _urlField: string;\n protected _nameField?: string;\n protected _valueField?: string;\n setValueField(field: string) {\n if (isValid(field)) {\n this._valueField = field;\n }\n }\n\n protected _imageMark?: IImageMark;\n protected _maskMark?: IRectMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n this._urlField = this._spec.urlField;\n }\n\n initMark() {\n if (this._spec.imageMask?.visible) {\n this._maskMark = this._createMark(imageCloudSeriesMark.imageMask, {\n dataView: false,\n skipBeforeLayouted: true\n }) as IRectMark;\n }\n\n this._imageMark = this._createMark(imageCloudSeriesMark.image, {\n key: datum => `${datum[DEFAULT_DATA_KEY]}-${datum.frequency}`,\n isSeriesMark: true,\n skipBeforeLayouted: true\n }) as IImageMark;\n }\n\n initMarkStyle() {\n this._initImageMarkStyle();\n this._initMaskMarkStyle();\n }\n\n protected _initImageMarkStyle() {\n if (!this._imageMark) {\n return;\n }\n\n this._imageMark.setTransform([\n {\n type: 'imagecloud',\n ...this._imageCloudTransformOption()\n }\n ]);\n\n this.setMarkStyle(\n this._imageMark,\n {\n x: (datum: Datum) => datum.x,\n y: (datum: Datum) => datum.y,\n width: (datum: Datum) => datum.width,\n height: (datum: Datum) => datum.height,\n visible: (datum: Datum) => datum.visible,\n angle: (datum: Datum) => datum.angle,\n clipConfig: (datum: Datum) => datum.clipConfig,\n image: (datum: Datum) => datum[this._urlField],\n scaleCenter: ['50%', '50%']\n },\n 'normal',\n AttributeLevel.Series\n );\n\n const isMasked = (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked';\n if (isMasked) {\n this.setMarkStyle(\n this._imageMark,\n {\n globalCompositeOperation: 'source-atop'\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._rootMark,\n {\n width: () => this._region.getLayoutRect().width,\n height: () => this._region.getLayoutRect().height,\n globalCompositeOperation: 'destination-in',\n clip: true,\n drawMode: 1\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n if (this._spec.layoutConfig?.layoutMode === 'stack') {\n this.setMarkStyle(\n this._imageMark,\n {\n stroke: 'white',\n lineWidth: 2,\n shadowBlur: 6,\n shadowColor: 'grey'\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected isFillingImage(datum: Datum) {\n return datum._frequency > 1;\n }\n\n protected _initMaskMarkStyle() {\n if (!this._maskMark) {\n return;\n }\n this._maskMark.setMarkConfig({ interactive: false });\n this.setMarkStyle(\n this._maskMark,\n {\n width: () => {\n return this._region.getLayoutRect().width;\n },\n height: () => {\n return this._region.getLayoutRect().height;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n protected initTooltip(): void {\n this._tooltipHelper = new ImageCloudTooltipHelper(this);\n this._imageMark && this._tooltipHelper.activeTriggerSet.mark.add(this._imageMark);\n }\n\n protected _imageCloudTransformOption() {\n return {\n size: () => {\n const { width, height } = this._region.getLayoutRect();\n return [width, height];\n },\n image: { field: this._urlField },\n weight: { field: this._valueField },\n imageConfig: {\n imageSize: this._spec.imageSize,\n imageSizeRange: this._spec.imageSizeRange,\n padding: this._spec.image?.padding\n },\n ratio: this._spec.ratio,\n mask: this._spec.maskShape,\n maskConfig: this._spec.imageMask,\n layoutConfig: this._spec.layoutConfig,\n createCanvas: vglobal.createCanvas.bind(vglobal),\n createImage,\n onUpdateMaskCanvas: ((inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => {\n if (inputImage && this._maskMark) {\n this._maskMark\n .getProduct()\n .getChildren()\n .forEach((element: any) => {\n element.setAttribute('background', inputImage);\n });\n }\n if (maskImage && (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked') {\n this._rootMark.getProduct().setAttribute('background', maskImage);\n }\n }).bind(this)\n };\n }\n\n protected _buildMarkAttributeContext(): void {\n super._buildMarkAttributeContext();\n this._markAttributeContext.isFillingImage = this.isFillingImage.bind(this);\n }\n\n initAnimation(): void {\n [this._imageMark].forEach(mark => {\n if (mark) {\n const appearPreset = (this._spec?.animationAppear as any)?.preset;\n const params = {\n center: () => {\n const { width, height } = this._region.getLayoutRect();\n return { x: width / 2, y: height / 2 };\n },\n height: () => {\n const { height } = this._region.getLayoutRect();\n return height;\n }\n };\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('imageCloud')(params, appearPreset),\n userAnimationConfig(ImageCloudMarkNameEnum.image, this._spec, this._markAttributeContext)\n )\n );\n }\n });\n }\n\n getDimensionField(): string[] {\n return [this._nameField ?? this._spec.urlField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n fields.push({ key: this._nameField, operations: ['values'] });\n fields.push({ key: this._valueField, operations: ['max', 'min'] });\n return fields;\n }\n\n getActiveMarks(): IMark[] {\n return [this._imageMark];\n }\n\n getMarkData(datum: Datum) {\n return datum?.datum ?? datum;\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n dataToPosition(data: Datum): IPoint | null {\n return null;\n }\n\n dataToPositionX(data: Datum): number | null {\n return this.dataToPosition(data)?.x;\n }\n dataToPositionY(data: Datum): number | null {\n return this.dataToPosition(data)?.y;\n }\n\n valueToPosition(value1: any, value2?: any): null {\n return null;\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n}\n\nexport const registerImageCloudSeries = () => {\n registerImageMark();\n registerImageCloudAnimation();\n Factory.registerSeries(ImageCloudSeries.type, ImageCloudSeries);\n Factory.registerGrammarTransform('imagecloud', {\n transform: imagecloudTransform\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/charts/image-cloud/series/image-cloud.ts"],"names":[],"mappings":"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","file":"image-cloud.js","sourcesContent":["import type { IImageCloudSeriesSpec } from './interface';\nimport { IMAGE_CLOUD_SERIES_TYPE, ImageCloudMarkNameEnum, imageCloudSeriesMark } from './constant';\nimport type { IPoint } from '@visactor/vutils';\nimport { isValid } from '@visactor/vutils';\nimport { imagecloudTransform } from '@visactor/vlayouts';\nimport type { GridLayoutConfig } from '@visactor/vlayouts';\nimport { registerImageCloudAnimation } from './animation';\nimport { ImageCloudTooltipHelper } from './tooltip-helper';\nimport { createImage } from '@visactor/vrender-core';\nimport type { Datum, IImageMark, IMark, IRectMark } from '@visactor/vchart';\nimport {\n animationConfig,\n AttributeLevel,\n BaseSeries,\n DEFAULT_DATA_KEY,\n Factory,\n registerImageMark,\n userAnimationConfig,\n vglobal\n} from '@visactor/vchart';\n\nexport class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends BaseSeries<T> {\n static readonly type: string = IMAGE_CLOUD_SERIES_TYPE;\n type = IMAGE_CLOUD_SERIES_TYPE;\n\n static readonly mark = imageCloudSeriesMark;\n\n protected _urlField: string;\n protected _nameField?: string;\n protected _valueField?: string;\n setValueField(field: string) {\n if (isValid(field)) {\n this._valueField = field;\n }\n }\n\n protected _imageMark?: IImageMark;\n protected _maskMark?: IRectMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n this._urlField = this._spec.urlField;\n }\n\n initMark() {\n if (this._spec.imageMask?.visible) {\n this._maskMark = this._createMark(imageCloudSeriesMark.imageMask, {\n dataView: false,\n skipBeforeLayouted: true\n }) as IRectMark;\n }\n\n this._imageMark = this._createMark(imageCloudSeriesMark.image, {\n key: datum => `${datum[DEFAULT_DATA_KEY]}-${datum.frequency}`,\n isSeriesMark: true,\n skipBeforeLayouted: true\n }) as IImageMark;\n }\n\n initMarkStyle() {\n this._initImageMarkStyle();\n this._initMaskMarkStyle();\n }\n\n protected _initImageMarkStyle() {\n if (!this._imageMark) {\n return;\n }\n\n this._imageMark.setTransform([\n {\n type: 'imagecloud',\n ...this._imageCloudTransformOption()\n }\n ]);\n\n this.setMarkStyle(\n this._imageMark,\n {\n x: (datum: Datum) => datum.x,\n y: (datum: Datum) => datum.y,\n width: (datum: Datum) => datum.width,\n height: (datum: Datum) => datum.height,\n visible: (datum: Datum) => datum.visible,\n angle: (datum: Datum) => datum.angle,\n clipConfig: (datum: Datum) => datum.clipConfig,\n image: (datum: Datum) => datum[this._urlField],\n scaleCenter: ['50%', '50%']\n },\n 'normal',\n AttributeLevel.Series\n );\n\n const isMasked = (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked';\n if (isMasked) {\n this.setMarkStyle(\n this._imageMark,\n {\n globalCompositeOperation: 'source-atop'\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._rootMark,\n {\n width: () => this._region.getLayoutRect().width,\n height: () => this._region.getLayoutRect().height,\n globalCompositeOperation: 'destination-in',\n clip: true,\n drawMode: 1\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n if (this._spec.layoutConfig?.layoutMode === 'stack') {\n this.setMarkStyle(\n this._imageMark,\n {\n stroke: 'white',\n lineWidth: 2,\n shadowBlur: 6,\n shadowColor: 'grey'\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected isFillingImage(datum: Datum) {\n return datum._frequency > 1;\n }\n\n protected _initMaskMarkStyle() {\n if (!this._maskMark) {\n return;\n }\n this._maskMark.setMarkConfig({ interactive: false });\n this.setMarkStyle(\n this._maskMark,\n {\n width: () => {\n return this._region.getLayoutRect().width;\n },\n height: () => {\n return this._region.getLayoutRect().height;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n protected initTooltip(): void {\n this._tooltipHelper = new ImageCloudTooltipHelper(this);\n this._imageMark && this._tooltipHelper.activeTriggerSet.mark.add(this._imageMark);\n }\n\n protected _imageCloudTransformOption() {\n return {\n size: () => {\n const { width, height } = this._region.getLayoutRect();\n return [width, height];\n },\n image: { field: this._urlField },\n weight: { field: this._valueField },\n imageConfig: {\n imageSize: this._spec.imageSize,\n imageSizeRange: this._spec.imageSizeRange,\n padding: this._spec.image?.padding\n },\n ratio: this._spec.ratio,\n mask: this._spec.maskShape,\n maskConfig: this._spec.imageMask,\n layoutConfig: this._spec.layoutConfig,\n createCanvas: vglobal.createCanvas.bind(vglobal),\n createImage,\n onUpdateMaskCanvas: ((inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => {\n if (inputImage && this._maskMark) {\n this._maskMark\n .getProduct()\n .getChildren()\n .forEach((element: any) => {\n element.setAttribute('background', inputImage);\n });\n }\n if (maskImage && (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked') {\n this._rootMark.getProduct().setAttribute('background', maskImage);\n }\n }).bind(this),\n onLayoutFinished: () =>\n this._option.globalInstance\n .getChart()\n .getOption()\n .performanceHook?.afterWordcloudShapeDraw?.(this._option.globalInstance)\n };\n }\n\n protected _buildMarkAttributeContext(): void {\n super._buildMarkAttributeContext();\n this._markAttributeContext.isFillingImage = this.isFillingImage.bind(this);\n }\n\n initAnimation(): void {\n [this._imageMark].forEach(mark => {\n if (mark) {\n const appearPreset = (this._spec?.animationAppear as any)?.preset;\n const params = {\n center: () => {\n const { width, height } = this._region.getLayoutRect();\n return { x: width / 2, y: height / 2 };\n },\n height: () => {\n const { height } = this._region.getLayoutRect();\n return height;\n }\n };\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('imageCloud')(params, appearPreset),\n userAnimationConfig(ImageCloudMarkNameEnum.image, this._spec, this._markAttributeContext)\n )\n );\n }\n });\n }\n\n getDimensionField(): string[] {\n return [this._nameField ?? this._spec.urlField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n fields.push({ key: this._nameField, operations: ['values'] });\n fields.push({ key: this._valueField, operations: ['max', 'min'] });\n return fields;\n }\n\n getActiveMarks(): IMark[] {\n return [this._imageMark];\n }\n\n getMarkData(datum: Datum) {\n return datum?.datum ?? datum;\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n dataToPosition(data: Datum): IPoint | null {\n return null;\n }\n\n dataToPositionX(data: Datum): number | null {\n return this.dataToPosition(data)?.x;\n }\n dataToPositionY(data: Datum): number | null {\n return this.dataToPosition(data)?.y;\n }\n\n valueToPosition(value1: any, value2?: any): null {\n return null;\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n}\n\nexport const registerImageCloudSeries = () => {\n registerImageMark();\n registerImageCloudAnimation();\n Factory.registerSeries(ImageCloudSeries.type, ImageCloudSeries);\n Factory.registerGrammarTransform('imagecloud', {\n transform: imagecloudTransform\n });\n};\n"]}
@@ -12,4 +12,5 @@ export const registerCartesianLinearAxis3d = () => {
12
12
  AxisCls.builtInTheme = Object.assign(Object.assign({}, AxisCls.builtInTheme), {
13
13
  axisZ: Object.assign(Object.assign({}, CartesianLinearAxis.builtInTheme.axisX), axisZ)
14
14
  }), mixin(AxisCls, Axis3dMixin);
15
- };
15
+ };
16
+ //# sourceMappingURL=linear-axis.js.map
@@ -7,5 +7,4 @@ export const bar3dSeriesMark = {
7
7
  name: "bar3d",
8
8
  type: "rect3d"
9
9
  }
10
- };
11
- //# sourceMappingURL=constant.js.map
10
+ };
@@ -4,4 +4,5 @@ export class Bar3dSeriesSpecTransformer extends BarSeriesSpecTransformer {
4
4
  _transformLabelSpec(spec) {
5
5
  this._addMarkLabelSpec(spec, "bar3d");
6
6
  }
7
- }
7
+ }
8
+ //# sourceMappingURL=series-spec-transformer.js.map
@@ -19,5 +19,4 @@ CandlestickChart.transformerConstructor = CandlestickChartSpecTransformer;
19
19
  export const registerCandlestickChart = () => {
20
20
  registerDimensionTooltipProcessor(), registerMarkTooltipProcessor(), registerDimensionEvents(),
21
21
  registerDimensionHover(), registerCandlestickSeries(), Factory.registerChart(CandlestickChart.type, CandlestickChart);
22
- };
23
- //# sourceMappingURL=candlestick.js.map
22
+ };
@@ -115,6 +115,7 @@ export declare class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends B
115
115
  createCanvas: (params: import("@visactor/vrender-core").ICreateCanvasParams) => any;
116
116
  createImage: typeof createImage;
117
117
  onUpdateMaskCanvas: (inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => void;
118
+ onLayoutFinished: () => void;
118
119
  };
119
120
  protected _buildMarkAttributeContext(): void;
120
121
  initAnimation(): void;
@@ -111,7 +111,11 @@ export class ImageCloudSeries extends BaseSeries {
111
111
  inputImage && this._maskMark && this._maskMark.getProduct().getChildren().forEach((element => {
112
112
  element.setAttribute("background", inputImage);
113
113
  })), maskImage && "masked" === (null === (_a = this._spec.layoutConfig) || void 0 === _a ? void 0 : _a.placement) && this._rootMark.getProduct().setAttribute("background", maskImage);
114
- }).bind(this)
114
+ }).bind(this),
115
+ onLayoutFinished: () => {
116
+ var _a, _b;
117
+ return null === (_b = null === (_a = this._option.globalInstance.getChart().getOption().performanceHook) || void 0 === _a ? void 0 : _a.afterWordcloudShapeDraw) || void 0 === _b ? void 0 : _b.call(_a, this._option.globalInstance);
118
+ }
115
119
  };
116
120
  }
117
121
  _buildMarkAttributeContext() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/charts/image-cloud/series/image-cloud.ts"],"names":[],"mappings":"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","file":"image-cloud.js","sourcesContent":["import type { IImageCloudSeriesSpec } from './interface';\nimport { IMAGE_CLOUD_SERIES_TYPE, ImageCloudMarkNameEnum, imageCloudSeriesMark } from './constant';\nimport type { IPoint } from '@visactor/vutils';\nimport { isValid } from '@visactor/vutils';\nimport { imagecloudTransform } from '@visactor/vlayouts';\nimport type { GridLayoutConfig } from '@visactor/vlayouts';\nimport { registerImageCloudAnimation } from './animation';\nimport { ImageCloudTooltipHelper } from './tooltip-helper';\nimport { createImage } from '@visactor/vrender-core';\nimport type { Datum, IImageMark, IMark, IRectMark } from '@visactor/vchart';\nimport {\n animationConfig,\n AttributeLevel,\n BaseSeries,\n DEFAULT_DATA_KEY,\n Factory,\n registerImageMark,\n userAnimationConfig,\n vglobal\n} from '@visactor/vchart';\n\nexport class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends BaseSeries<T> {\n static readonly type: string = IMAGE_CLOUD_SERIES_TYPE;\n type = IMAGE_CLOUD_SERIES_TYPE;\n\n static readonly mark = imageCloudSeriesMark;\n\n protected _urlField: string;\n protected _nameField?: string;\n protected _valueField?: string;\n setValueField(field: string) {\n if (isValid(field)) {\n this._valueField = field;\n }\n }\n\n protected _imageMark?: IImageMark;\n protected _maskMark?: IRectMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n this._urlField = this._spec.urlField;\n }\n\n initMark() {\n if (this._spec.imageMask?.visible) {\n this._maskMark = this._createMark(imageCloudSeriesMark.imageMask, {\n dataView: false,\n skipBeforeLayouted: true\n }) as IRectMark;\n }\n\n this._imageMark = this._createMark(imageCloudSeriesMark.image, {\n key: datum => `${datum[DEFAULT_DATA_KEY]}-${datum.frequency}`,\n isSeriesMark: true,\n skipBeforeLayouted: true\n }) as IImageMark;\n }\n\n initMarkStyle() {\n this._initImageMarkStyle();\n this._initMaskMarkStyle();\n }\n\n protected _initImageMarkStyle() {\n if (!this._imageMark) {\n return;\n }\n\n this._imageMark.setTransform([\n {\n type: 'imagecloud',\n ...this._imageCloudTransformOption()\n }\n ]);\n\n this.setMarkStyle(\n this._imageMark,\n {\n x: (datum: Datum) => datum.x,\n y: (datum: Datum) => datum.y,\n width: (datum: Datum) => datum.width,\n height: (datum: Datum) => datum.height,\n visible: (datum: Datum) => datum.visible,\n angle: (datum: Datum) => datum.angle,\n clipConfig: (datum: Datum) => datum.clipConfig,\n image: (datum: Datum) => datum[this._urlField],\n scaleCenter: ['50%', '50%']\n },\n 'normal',\n AttributeLevel.Series\n );\n\n const isMasked = (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked';\n if (isMasked) {\n this.setMarkStyle(\n this._imageMark,\n {\n globalCompositeOperation: 'source-atop'\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._rootMark,\n {\n width: () => this._region.getLayoutRect().width,\n height: () => this._region.getLayoutRect().height,\n globalCompositeOperation: 'destination-in',\n clip: true,\n drawMode: 1\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n if (this._spec.layoutConfig?.layoutMode === 'stack') {\n this.setMarkStyle(\n this._imageMark,\n {\n stroke: 'white',\n lineWidth: 2,\n shadowBlur: 6,\n shadowColor: 'grey'\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected isFillingImage(datum: Datum) {\n return datum._frequency > 1;\n }\n\n protected _initMaskMarkStyle() {\n if (!this._maskMark) {\n return;\n }\n this._maskMark.setMarkConfig({ interactive: false });\n this.setMarkStyle(\n this._maskMark,\n {\n width: () => {\n return this._region.getLayoutRect().width;\n },\n height: () => {\n return this._region.getLayoutRect().height;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n protected initTooltip(): void {\n this._tooltipHelper = new ImageCloudTooltipHelper(this);\n this._imageMark && this._tooltipHelper.activeTriggerSet.mark.add(this._imageMark);\n }\n\n protected _imageCloudTransformOption() {\n return {\n size: () => {\n const { width, height } = this._region.getLayoutRect();\n return [width, height];\n },\n image: { field: this._urlField },\n weight: { field: this._valueField },\n imageConfig: {\n imageSize: this._spec.imageSize,\n imageSizeRange: this._spec.imageSizeRange,\n padding: this._spec.image?.padding\n },\n ratio: this._spec.ratio,\n mask: this._spec.maskShape,\n maskConfig: this._spec.imageMask,\n layoutConfig: this._spec.layoutConfig,\n createCanvas: vglobal.createCanvas.bind(vglobal),\n createImage,\n onUpdateMaskCanvas: ((inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => {\n if (inputImage && this._maskMark) {\n this._maskMark\n .getProduct()\n .getChildren()\n .forEach((element: any) => {\n element.setAttribute('background', inputImage);\n });\n }\n if (maskImage && (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked') {\n this._rootMark.getProduct().setAttribute('background', maskImage);\n }\n }).bind(this)\n };\n }\n\n protected _buildMarkAttributeContext(): void {\n super._buildMarkAttributeContext();\n this._markAttributeContext.isFillingImage = this.isFillingImage.bind(this);\n }\n\n initAnimation(): void {\n [this._imageMark].forEach(mark => {\n if (mark) {\n const appearPreset = (this._spec?.animationAppear as any)?.preset;\n const params = {\n center: () => {\n const { width, height } = this._region.getLayoutRect();\n return { x: width / 2, y: height / 2 };\n },\n height: () => {\n const { height } = this._region.getLayoutRect();\n return height;\n }\n };\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('imageCloud')(params, appearPreset),\n userAnimationConfig(ImageCloudMarkNameEnum.image, this._spec, this._markAttributeContext)\n )\n );\n }\n });\n }\n\n getDimensionField(): string[] {\n return [this._nameField ?? this._spec.urlField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n fields.push({ key: this._nameField, operations: ['values'] });\n fields.push({ key: this._valueField, operations: ['max', 'min'] });\n return fields;\n }\n\n getActiveMarks(): IMark[] {\n return [this._imageMark];\n }\n\n getMarkData(datum: Datum) {\n return datum?.datum ?? datum;\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n dataToPosition(data: Datum): IPoint | null {\n return null;\n }\n\n dataToPositionX(data: Datum): number | null {\n return this.dataToPosition(data)?.x;\n }\n dataToPositionY(data: Datum): number | null {\n return this.dataToPosition(data)?.y;\n }\n\n valueToPosition(value1: any, value2?: any): null {\n return null;\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n}\n\nexport const registerImageCloudSeries = () => {\n registerImageMark();\n registerImageCloudAnimation();\n Factory.registerSeries(ImageCloudSeries.type, ImageCloudSeries);\n Factory.registerGrammarTransform('imagecloud', {\n transform: imagecloudTransform\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/charts/image-cloud/series/image-cloud.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA0B,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,mBAAmB,EACnB,OAAO,EACR,MAAM,kBAAkB,CAAC;AAE1B,MAAM,OAAO,gBAAkD,SAAQ,UAAa;IAApF;;QAEE,SAAI,GAAG,uBAAuB,CAAC;IAqQjC,CAAC;IA9PC,aAAa,CAAC,KAAa;QACzB,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;IACH,CAAC;IAKD,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,QAAQ;;QACN,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAChE,QAAQ,EAAE,KAAK;gBACf,kBAAkB,EAAE,IAAI;aACzB,CAAc,CAAC;SACjB;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,EAAE;YAC7D,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE;YAC7D,YAAY,EAAE,IAAI;YAClB,kBAAkB,EAAE,IAAI;SACzB,CAAe,CAAC;IACnB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAES,mBAAmB;;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QAED,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;4BAEzB,IAAI,EAAE,YAAY,IACf,IAAI,CAAC,0BAA0B,EAAE;SAEvC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,UAAU,EACf;YACE,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;YACpC,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM;YACtC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO;YACxC,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;YACpC,UAAU,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU;YAC9C,KAAK,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9C,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;SAC5B,EACD,QAAQ,EACR,cAAc,CAAC,MAAM,CACtB,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAA,MAAC,IAAI,CAAC,KAAK,CAAC,YAAiC,0CAAE,SAAS,MAAK,QAAQ,CAAC;QACvF,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,UAAU,EACf;gBACE,wBAAwB,EAAE,aAAa;aACxC,EACD,QAAQ,EACR,cAAc,CAAC,MAAM,CACtB,CAAC;YACF,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,SAAS,EACd;gBACE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK;gBAC/C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM;gBACjD,wBAAwB,EAAE,gBAAgB;gBAC1C,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,CAAC;aACZ,EACD,QAAQ,EACR,cAAc,CAAC,MAAM,CACtB,CAAC;SACH;QAED,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,0CAAE,UAAU,MAAK,OAAO,EAAE;YACnD,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,UAAU,EACf;gBACE,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,MAAM;aACpB,EACD,QAAQ,EACR,cAAc,CAAC,MAAM,CACtB,CAAC;SACH;IACH,CAAC;IAES,cAAc,CAAC,KAAY;QACnC,OAAO,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;IAC9B,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,SAAS,EACd;YACE,KAAK,EAAE,GAAG,EAAE;gBACV,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;YAC5C,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YAC7C,CAAC;SACF,EACD,QAAQ,EACR,cAAc,CAAC,MAAM,CACtB,CAAC;IACJ,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpF,CAAC;IAES,0BAA0B;;QAClC,OAAO;YACL,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACvD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzB,CAAC;YACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;YAChC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc;gBACzC,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,0CAAE,OAAO;aACnC;YACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAChC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YACrC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;YAChD,WAAW;YACX,kBAAkB,EAAE,CAAC,CAAC,UAA8B,EAAE,SAA6B,EAAE,EAAE;;gBACrF,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChC,IAAI,CAAC,SAAS;yBACX,UAAU,EAAE;yBACZ,WAAW,EAAE;yBACb,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE;wBACxB,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;iBACN;gBACD,IAAI,SAAS,IAAI,CAAA,MAAC,IAAI,CAAC,KAAK,CAAC,YAAiC,0CAAE,SAAS,MAAK,QAAQ,EAAE;oBACtF,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;iBACnE;YACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACb,gBAAgB,EAAE,GAAG,EAAE;;gBACrB,OAAA,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,cAAc;qBACxB,QAAQ,EAAE;qBACV,SAAS,EAAE;qBACX,eAAe,0CAAE,uBAAuB,mDAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;aAAA;SAC7E,CAAC;IACJ,CAAC;IAES,0BAA0B;QAClC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,aAAa;QACX,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;YAC/B,IAAI,IAAI,EAAE;gBACR,MAAM,YAAY,GAAG,MAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,eAAuB,0CAAE,MAAM,CAAC;gBAClE,MAAM,MAAM,GAAG;oBACb,MAAM,EAAE,GAAG,EAAE;wBACX,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;wBACvD,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzC,CAAC;oBACD,MAAM,EAAE,GAAG,EAAE;wBACX,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;wBAChD,OAAO,MAAM,CAAC;oBAChB,CAAC;iBACF,CAAC;gBACF,IAAI,CAAC,kBAAkB,CACrB,eAAe,CACb,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7D,mBAAmB,UAA+B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAC1F,CACF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;;QACf,OAAO,CAAC,MAAA,IAAI,CAAC,UAAU,mCAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,eAAe;QACb,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,kBAAkB;QAChB,MAAM,MAAM,GAAmE,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,KAAY;;QACtB,OAAO,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,KAAK,CAAC;IAC/B,CAAC;IAED,cAAc;QAEZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc,CAAC,IAAW;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,IAAW;;QACzB,OAAO,MAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,0CAAE,CAAC,CAAC;IACtC,CAAC;IACD,eAAe,CAAC,IAAW;;QACzB,OAAO,MAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,0CAAE,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,MAAW,EAAE,MAAY;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;QAEjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,kBAAkB;QAEhB,OAAO,EAAE,CAAC;IACZ,CAAC;;AArQe,qBAAI,GAAW,uBAAuB,CAAC;AAGvC,qBAAI,GAAG,oBAAoB,CAAC;AAqQ9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,iBAAiB,EAAE,CAAC;IACpB,2BAA2B,EAAE,CAAC;IAC9B,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAChE,OAAO,CAAC,wBAAwB,CAAC,YAAY,EAAE;QAC7C,SAAS,EAAE,mBAAmB;KAC/B,CAAC,CAAC;AACL,CAAC,CAAC","file":"image-cloud.js","sourcesContent":["import type { IImageCloudSeriesSpec } from './interface';\nimport { IMAGE_CLOUD_SERIES_TYPE, ImageCloudMarkNameEnum, imageCloudSeriesMark } from './constant';\nimport type { IPoint } from '@visactor/vutils';\nimport { isValid } from '@visactor/vutils';\nimport { imagecloudTransform } from '@visactor/vlayouts';\nimport type { GridLayoutConfig } from '@visactor/vlayouts';\nimport { registerImageCloudAnimation } from './animation';\nimport { ImageCloudTooltipHelper } from './tooltip-helper';\nimport { createImage } from '@visactor/vrender-core';\nimport type { Datum, IImageMark, IMark, IRectMark } from '@visactor/vchart';\nimport {\n animationConfig,\n AttributeLevel,\n BaseSeries,\n DEFAULT_DATA_KEY,\n Factory,\n registerImageMark,\n userAnimationConfig,\n vglobal\n} from '@visactor/vchart';\n\nexport class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends BaseSeries<T> {\n static readonly type: string = IMAGE_CLOUD_SERIES_TYPE;\n type = IMAGE_CLOUD_SERIES_TYPE;\n\n static readonly mark = imageCloudSeriesMark;\n\n protected _urlField: string;\n protected _nameField?: string;\n protected _valueField?: string;\n setValueField(field: string) {\n if (isValid(field)) {\n this._valueField = field;\n }\n }\n\n protected _imageMark?: IImageMark;\n protected _maskMark?: IRectMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n this._urlField = this._spec.urlField;\n }\n\n initMark() {\n if (this._spec.imageMask?.visible) {\n this._maskMark = this._createMark(imageCloudSeriesMark.imageMask, {\n dataView: false,\n skipBeforeLayouted: true\n }) as IRectMark;\n }\n\n this._imageMark = this._createMark(imageCloudSeriesMark.image, {\n key: datum => `${datum[DEFAULT_DATA_KEY]}-${datum.frequency}`,\n isSeriesMark: true,\n skipBeforeLayouted: true\n }) as IImageMark;\n }\n\n initMarkStyle() {\n this._initImageMarkStyle();\n this._initMaskMarkStyle();\n }\n\n protected _initImageMarkStyle() {\n if (!this._imageMark) {\n return;\n }\n\n this._imageMark.setTransform([\n {\n type: 'imagecloud',\n ...this._imageCloudTransformOption()\n }\n ]);\n\n this.setMarkStyle(\n this._imageMark,\n {\n x: (datum: Datum) => datum.x,\n y: (datum: Datum) => datum.y,\n width: (datum: Datum) => datum.width,\n height: (datum: Datum) => datum.height,\n visible: (datum: Datum) => datum.visible,\n angle: (datum: Datum) => datum.angle,\n clipConfig: (datum: Datum) => datum.clipConfig,\n image: (datum: Datum) => datum[this._urlField],\n scaleCenter: ['50%', '50%']\n },\n 'normal',\n AttributeLevel.Series\n );\n\n const isMasked = (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked';\n if (isMasked) {\n this.setMarkStyle(\n this._imageMark,\n {\n globalCompositeOperation: 'source-atop'\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._rootMark,\n {\n width: () => this._region.getLayoutRect().width,\n height: () => this._region.getLayoutRect().height,\n globalCompositeOperation: 'destination-in',\n clip: true,\n drawMode: 1\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n if (this._spec.layoutConfig?.layoutMode === 'stack') {\n this.setMarkStyle(\n this._imageMark,\n {\n stroke: 'white',\n lineWidth: 2,\n shadowBlur: 6,\n shadowColor: 'grey'\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected isFillingImage(datum: Datum) {\n return datum._frequency > 1;\n }\n\n protected _initMaskMarkStyle() {\n if (!this._maskMark) {\n return;\n }\n this._maskMark.setMarkConfig({ interactive: false });\n this.setMarkStyle(\n this._maskMark,\n {\n width: () => {\n return this._region.getLayoutRect().width;\n },\n height: () => {\n return this._region.getLayoutRect().height;\n }\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n protected initTooltip(): void {\n this._tooltipHelper = new ImageCloudTooltipHelper(this);\n this._imageMark && this._tooltipHelper.activeTriggerSet.mark.add(this._imageMark);\n }\n\n protected _imageCloudTransformOption() {\n return {\n size: () => {\n const { width, height } = this._region.getLayoutRect();\n return [width, height];\n },\n image: { field: this._urlField },\n weight: { field: this._valueField },\n imageConfig: {\n imageSize: this._spec.imageSize,\n imageSizeRange: this._spec.imageSizeRange,\n padding: this._spec.image?.padding\n },\n ratio: this._spec.ratio,\n mask: this._spec.maskShape,\n maskConfig: this._spec.imageMask,\n layoutConfig: this._spec.layoutConfig,\n createCanvas: vglobal.createCanvas.bind(vglobal),\n createImage,\n onUpdateMaskCanvas: ((inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => {\n if (inputImage && this._maskMark) {\n this._maskMark\n .getProduct()\n .getChildren()\n .forEach((element: any) => {\n element.setAttribute('background', inputImage);\n });\n }\n if (maskImage && (this._spec.layoutConfig as GridLayoutConfig)?.placement === 'masked') {\n this._rootMark.getProduct().setAttribute('background', maskImage);\n }\n }).bind(this),\n onLayoutFinished: () =>\n this._option.globalInstance\n .getChart()\n .getOption()\n .performanceHook?.afterWordcloudShapeDraw?.(this._option.globalInstance)\n };\n }\n\n protected _buildMarkAttributeContext(): void {\n super._buildMarkAttributeContext();\n this._markAttributeContext.isFillingImage = this.isFillingImage.bind(this);\n }\n\n initAnimation(): void {\n [this._imageMark].forEach(mark => {\n if (mark) {\n const appearPreset = (this._spec?.animationAppear as any)?.preset;\n const params = {\n center: () => {\n const { width, height } = this._region.getLayoutRect();\n return { x: width / 2, y: height / 2 };\n },\n height: () => {\n const { height } = this._region.getLayoutRect();\n return height;\n }\n };\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('imageCloud')(params, appearPreset),\n userAnimationConfig(ImageCloudMarkNameEnum.image, this._spec, this._markAttributeContext)\n )\n );\n }\n });\n }\n\n getDimensionField(): string[] {\n return [this._nameField ?? this._spec.urlField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n fields.push({ key: this._nameField, operations: ['values'] });\n fields.push({ key: this._valueField, operations: ['max', 'min'] });\n return fields;\n }\n\n getActiveMarks(): IMark[] {\n return [this._imageMark];\n }\n\n getMarkData(datum: Datum) {\n return datum?.datum ?? datum;\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n dataToPosition(data: Datum): IPoint | null {\n return null;\n }\n\n dataToPositionX(data: Datum): number | null {\n return this.dataToPosition(data)?.x;\n }\n dataToPositionY(data: Datum): number | null {\n return this.dataToPosition(data)?.y;\n }\n\n valueToPosition(value1: any, value2?: any): null {\n return null;\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n}\n\nexport const registerImageCloudSeries = () => {\n registerImageMark();\n registerImageCloudAnimation();\n Factory.registerSeries(ImageCloudSeries.type, ImageCloudSeries);\n Factory.registerGrammarTransform('imagecloud', {\n transform: imagecloudTransform\n });\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart-extension",
3
- "version": "2.0.4-alpha.6",
3
+ "version": "2.0.4",
4
4
  "description": "vchart extension package, including extension plugins and components",
5
5
  "sideEffects": false,
6
6
  "main": "cjs/index.js",
@@ -12,14 +12,14 @@
12
12
  "build"
13
13
  ],
14
14
  "dependencies": {
15
- "@visactor/vrender-core": "1.0.9",
16
- "@visactor/vrender-kits": "1.0.9",
17
- "@visactor/vrender-components": "1.0.9",
18
- "@visactor/vrender-animate": "1.0.9",
15
+ "@visactor/vrender-core": "1.0.13",
16
+ "@visactor/vrender-kits": "1.0.13",
17
+ "@visactor/vrender-components": "1.0.13",
18
+ "@visactor/vrender-animate": "1.0.13",
19
19
  "@visactor/vutils": "~1.0.6",
20
20
  "@visactor/vdataset": "~1.0.6",
21
21
  "@visactor/vlayouts": "~1.0.6",
22
- "@visactor/vchart": "2.0.4-alpha.6"
22
+ "@visactor/vchart": "2.0.4"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@rushstack/eslint-patch": "~1.1.4",
@@ -43,9 +43,9 @@
43
43
  "rollup-plugin-bundle-size": "1.0.3",
44
44
  "rollup-plugin-sizes": "1.0.5",
45
45
  "rollup": "3.20.5",
46
- "@internal/bundler": "0.0.1",
47
46
  "@internal/ts-config": "0.0.1",
48
- "@internal/eslint-config": "0.0.1"
47
+ "@internal/eslint-config": "0.0.1",
48
+ "@internal/bundler": "0.0.1"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public",