@visactor/vchart-extension 2.0.4-alpha.6 → 2.0.4-alpha.7
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.
- package/build/index.js +71 -33
- package/build/index.min.js +1 -1
- package/cjs/charts/bar-3d/series-spec-transformer.js +2 -1
- package/cjs/charts/candlestick/candlestick.js +1 -2
- package/cjs/charts/image-cloud/series/image-cloud.d.ts +1 -0
- package/cjs/charts/image-cloud/series/image-cloud.js +5 -1
- package/cjs/charts/image-cloud/series/image-cloud.js.map +1 -1
- package/esm/charts/bar-3d/series-spec-transformer.js +2 -1
- package/esm/charts/candlestick/candlestick.js +1 -2
- package/esm/charts/image-cloud/series/image-cloud.d.ts +1 -0
- package/esm/charts/image-cloud/series/image-cloud.js +5 -1
- package/esm/charts/image-cloud/series/image-cloud.js.map +1 -1
- package/package.json +6 -6
|
@@ -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"]}
|
|
@@ -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":"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;IAgQjC,CAAC;IAzPC,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;SACd,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;;AAhQe,qBAAI,GAAW,uBAAuB,CAAC;AAGvC,qBAAI,GAAG,oBAAoB,CAAC;AAgQ9C,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 };\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vchart-extension",
|
|
3
|
-
"version": "2.0.4-alpha.
|
|
3
|
+
"version": "2.0.4-alpha.7",
|
|
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.
|
|
16
|
-
"@visactor/vrender-kits": "1.0.
|
|
17
|
-
"@visactor/vrender-components": "1.0.
|
|
18
|
-
"@visactor/vrender-animate": "1.0.
|
|
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.
|
|
22
|
+
"@visactor/vchart": "2.0.4-alpha.7"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@rushstack/eslint-patch": "~1.1.4",
|