{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plots/word-cloud/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,WAAW;AACX,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAItD;IAA+B,6BAAsB;IAArD;QAAA,qEAsFC;QA7EC,UAAU;QACH,UAAI,GAAW,YAAY,CAAC;;IA4ErC,CAAC;IArFC;;;OAGG;IACI,2BAAiB,GAAxB;QACE,OAAO,eAAe,CAAC;IACzB,CAAC;IAKD;;;OAGG;IACI,8BAAU,GAAjB,UAAkB,IAAI;QACpB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAChF;IACH,CAAC;IAED;;OAEG;IACO,qCAAiB,GAA3B;QACE,OAAO,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,0BAAM,GAAb;QAAA,iBAwBC;QAvBC,OAAO,IAAI,OAAO,CAAO,UAAC,GAAG;YACnB,IAAA,SAAS,GAAK,KAAI,CAAC,OAAO,UAAjB,CAAkB;YAEnC,IAAI,CAAC,SAAS,EAAE;gBACd,WAAW;gBACX,iBAAM,MAAM,YAAE,CAAC;gBACf,GAAG,EAAE,CAAC;gBACN,OAAO;aACR;YAED,IAAM,OAAO,GAAG,UAAC,GAAqB;gBACpC,KAAI,CAAC,OAAO,yBACP,KAAI,CAAC,OAAO,KACf,SAAS,EAAE,GAAG,IAAI,IAAI,GACvB,CAAC;gBAEF,WAAW;gBACX,iBAAM,MAAM,YAAE,CAAC;gBACf,GAAG,EAAE,CAAC;YACR,CAAC,CAAC;YAEF,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,oCAAgB,GAA1B;QACE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACO,iCAAa,GAAvB;QAAA,iBAcC;QAbC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACzB,6BAA6B;YAC7B,4BAA4B;YAC5B,cAAc;YACd,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,gBAAgB;YAChB,iCAAiC;YACjC,MAAM,CAAC,UAAU,CAAC;gBAChB,UAAU;gBACV,iBAAM,aAAa,YAAE,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IACH,gBAAC;AAAD,CAAC,AAtFD,CAA+B,IAAI,GAsFlC","sourcesContent":["import { Adaptor } from '../../core/adaptor';\nimport { Plot } from '../../core/plot';\nimport { adaptor } from './adaptor';\nimport { DEFAULT_OPTIONS } from './constant';\n// 注册的shape\nimport './shapes/word-cloud';\nimport { WordCloudOptions } from './types';\nimport { processImageMask, transform } from './utils';\n\nexport type { WordCloudOptions };\n\nexport class WordCloud extends Plot {\n /**\n * 获取 词云图 默认配置项\n * 供外部使用\n */\n static getDefaultOptions(): Partial {\n return DEFAULT_OPTIONS;\n }\n\n /** 词云图 */\n public type: string = 'word-cloud';\n\n /**\n * @override\n * @param data\n */\n public changeData(data) {\n this.updateOption({ data });\n if (this.options.imageMask) {\n this.render();\n } else {\n this.chart.changeData(transform({ chart: this.chart, options: this.options }));\n }\n }\n\n /**\n * 获取默认的 options 配置项\n */\n protected getDefaultOptions(): Partial {\n return WordCloud.getDefaultOptions();\n }\n\n /**\n * 覆写父类方法,词云图需要加载图片资源,所以需要异步渲染\n */\n public render() {\n return new Promise((res) => {\n const { imageMask } = this.options;\n\n if (!imageMask) {\n // 调用父类渲染函数\n super.render();\n res();\n return;\n }\n\n const handler = (img: HTMLImageElement) => {\n this.options = {\n ...this.options,\n imageMask: img || null,\n };\n\n // 调用父类渲染函数\n super.render();\n res();\n };\n\n processImageMask(imageMask).then(handler).catch(handler);\n });\n }\n\n /**\n * 获取 词云图 的适配器\n */\n protected getSchemaAdaptor(): Adaptor {\n return adaptor;\n }\n\n /**\n * 覆写父类的方法,因为词云图使用 单独的函数 进行布局,原理上有些不一样\n */\n protected triggerResize() {\n if (!this.chart.destroyed) {\n // 当整个词云图图表的宽高信息发生变化时,每个词语的坐标\n // 需要重新执行 adaptor,不然会出现布局错乱,\n // 如相邻词语重叠的情况。\n this.execAdaptor();\n\n // 延迟执行,有利于动画更流畅\n // TODO: 在多次更改画布尺寸时,动画会越来越卡顿,原因未知\n window.setTimeout(() => {\n // 执行父类的方法\n super.triggerResize();\n });\n }\n }\n}\n"]}