{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/adaptor/pattern.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IAAnC,iBA8CC;IA7CC,OAAO,UAAgE,MAAiB;;QAC9E,IAAA,OAAO,GAAY,MAAM,QAAlB,EAAE,KAAK,GAAK,MAAM,MAAX,CAAY;QAC1B,IAAS,aAAa,GAAK,OAAO,QAAZ,CAAa;QAE3C,sBAAsB;QACtB,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO,MAAM,CAAC;SACf;QAED,+BAA+B;QAE/B,IAAM,KAAK,GAAc,UAAC,KAAa;;YAAE,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,6BAAc;;YAC7C,IAAA,YAAY,GAAK,KAAK,CAAC,QAAQ,EAAE,aAArB,CAAsB;YAC1C,IAAI,KAAK,GAAG,YAAY,CAAC;YAEzB,IAAM,cAAc,GAAG,MAAA,MAAA,KAAK,CAAC,UAAU,0CAAG,CAAC,CAAC,0CAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,cAAc,EAAE;gBAClB,IAAM,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAM,WAAW,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAC3C,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,EAAE,CAAA,MAAA,cAAc,CAAC,MAAM,0CAAG,CAAC,CAAC,KAAI,YAAY,CAAC,CAAC;aACvG;YAED,IAAI,OAAO,GAAkB,aAA8B,CAAC;YAE5D,qFAAqF;YACrF,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;gBACvC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,KAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;aAClD;YAED,qDAAqD;YACrD,IAAI,OAAO,YAAY,aAAa,KAAK,KAAK,EAAE;gBAC9C,mDAAmD;gBACnD,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;aAC1F;YAED,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAc,CAAC;YAE9C,6BACK,CAAC,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,OAAhB,WAAW,iBAAM,KAAI,EAAE,KAAK,GAAK,IAAI,UAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,KACnG,IAAI,EAAE,OAAO,IAAI,KAAK,IACtB;QACJ,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,YAAI,GAAC,GAAG,IAAG,KAAK,KAAE,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { Util } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { Params } from '../core/adaptor';\nimport { Datum, Options, StyleAttr } from '../types';\nimport { deepAssign } from '../utils';\nimport { getCanvasPattern } from '../utils/pattern';\n\n/**\n * 使用 Pattern 通道的 options,要求有 colorField/seriesField/stackField 作为分类字段(进行颜色映射)\n */\ntype OptionsRequiredInPattern = Omit;\n\n/**\n * Pattern 通道,处理图案填充\n * 🚀 目前支持图表类型:饼图、柱状图、条形图、玉珏图等(不支持在多 view 图表中,后续按需扩展)\n *\n * @param key key of style property\n * @returns\n */\nexport function pattern(key: string) {\n return (params: Params): Params => {\n const { options, chart } = params;\n const { pattern: patternOption } = options;\n\n // 没有 pattern 配置,则直接返回\n if (!patternOption) {\n return params;\n }\n\n /** ~~~~~~~ 进行贴图图案处理 ~~~~~~~ */\n\n const style: StyleAttr = (datum?: Datum, ...args: any[]) => {\n const { defaultColor } = chart.getTheme();\n let color = defaultColor;\n\n const colorAttribute = chart.geometries?.[0]?.getAttribute('color');\n if (colorAttribute) {\n const colorField = colorAttribute.getFields()[0];\n const seriesValue = get(datum, colorField);\n color = Util.getMappingValue(colorAttribute, seriesValue, colorAttribute.values?.[0] || defaultColor);\n }\n\n let pattern: CanvasPattern = patternOption as CanvasPattern;\n\n // 1. 如果 patternOption 是一个回调,则获取回调结果。`(datum: Datum, color: string) => CanvasPattern`\n if (typeof patternOption === 'function') {\n pattern = patternOption.call(this, datum, color);\n }\n\n // 2. 如果 pattern 不是 CanvasPattern,则进一步处理,否则直接赋予给 fill\n if (pattern instanceof CanvasPattern === false) {\n // 通过 createPattern(PatternStyle) 转换为 CanvasPattern\n pattern = getCanvasPattern(deepAssign({}, { cfg: { backgroundColor: color } }, pattern));\n }\n\n const styleOption = options[key] as StyleAttr;\n\n return {\n ...(typeof styleOption === 'function' ? styleOption.call(this, datum, ...args) : styleOption || {}),\n fill: pattern || color,\n };\n };\n\n return deepAssign({}, params, { options: { [key]: style } });\n };\n}\n"]}