@visactor/vchart 1.11.11-alpha.0 → 1.11.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +600 -293
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/stack.js +2 -1
  6. package/cjs/compile/grammar-item.js +1 -2
  7. package/cjs/component/crosshair/base.d.ts +1 -0
  8. package/cjs/component/crosshair/base.js +17 -20
  9. package/cjs/component/crosshair/base.js.map +1 -1
  10. package/cjs/component/data-zoom/data-filter-base-component.js +1 -1
  11. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  12. package/cjs/component/indicator/interface.d.ts +3 -1
  13. package/cjs/component/indicator/interface.js.map +1 -1
  14. package/cjs/component/marker/interface.d.ts +3 -3
  15. package/cjs/component/marker/interface.js.map +1 -1
  16. package/cjs/component/tooltip/tooltip.d.ts +1 -0
  17. package/cjs/component/tooltip/tooltip.js +10 -6
  18. package/cjs/component/tooltip/tooltip.js.map +1 -1
  19. package/cjs/constant/index.d.ts +1 -0
  20. package/cjs/constant/index.js +2 -1
  21. package/cjs/constant/index.js.map +1 -1
  22. package/cjs/constant/scroll-bar.js +1 -2
  23. package/cjs/constant/waterfall.js +2 -1
  24. package/cjs/core/index.d.ts +1 -1
  25. package/cjs/core/index.js +1 -1
  26. package/cjs/core/index.js.map +1 -1
  27. package/cjs/core/vchart.js +9 -7
  28. package/cjs/core/vchart.js.map +1 -1
  29. package/cjs/interaction/config.js +1 -1
  30. package/cjs/interaction/dimension-trigger.js +1 -1
  31. package/cjs/interaction/index.js +1 -1
  32. package/cjs/interaction/interaction.js +1 -1
  33. package/cjs/layout/base-layout.js +1 -1
  34. package/cjs/layout/index.js +1 -1
  35. package/cjs/layout/interface.js +1 -1
  36. package/cjs/layout/layout-item.js +1 -1
  37. package/cjs/mark/base/base-line.js +1 -2
  38. package/cjs/mark/base/base-line.js.map +1 -1
  39. package/cjs/mark/base/base-mark.js +6 -2
  40. package/cjs/mark/base/base-mark.js.map +1 -1
  41. package/cjs/mark/utils/common.d.ts +1 -0
  42. package/cjs/mark/utils/common.js +7 -2
  43. package/cjs/mark/utils/common.js.map +1 -1
  44. package/cjs/series/base/base-series.js +2 -2
  45. package/cjs/series/base/base-series.js.map +1 -1
  46. package/cjs/series/interface/type.d.ts +1 -0
  47. package/cjs/series/interface/type.js +4 -3
  48. package/cjs/series/interface/type.js.map +1 -1
  49. package/cjs/series/liquid/animation.d.ts +1 -0
  50. package/cjs/series/liquid/animation.js +30 -2
  51. package/cjs/series/liquid/animation.js.map +1 -1
  52. package/cjs/series/liquid/constant.js +5 -1
  53. package/cjs/series/liquid/constant.js.map +1 -1
  54. package/cjs/series/liquid/liquid.d.ts +3 -0
  55. package/cjs/series/liquid/liquid.js +70 -41
  56. package/cjs/series/liquid/liquid.js.map +1 -1
  57. package/cjs/series/liquid/util.js +1 -1
  58. package/cjs/series/liquid/util.js.map +1 -1
  59. package/cjs/series/pie/interface.d.ts +3 -1
  60. package/cjs/series/pie/interface.js.map +1 -1
  61. package/cjs/typings/interpolate.d.ts +1 -3
  62. package/cjs/typings/interpolate.js +2 -3
  63. package/cjs/typings/interpolate.js.map +1 -1
  64. package/esm/chart/stack.js +2 -1
  65. package/esm/compile/grammar-item.js +1 -2
  66. package/esm/component/crosshair/base.d.ts +1 -0
  67. package/esm/component/crosshair/base.js +18 -22
  68. package/esm/component/crosshair/base.js.map +1 -1
  69. package/esm/component/data-zoom/data-filter-base-component.js +1 -1
  70. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  71. package/esm/component/indicator/interface.d.ts +3 -1
  72. package/esm/component/indicator/interface.js.map +1 -1
  73. package/esm/component/marker/interface.d.ts +3 -3
  74. package/esm/component/marker/interface.js.map +1 -1
  75. package/esm/component/tooltip/tooltip.d.ts +1 -0
  76. package/esm/component/tooltip/tooltip.js +10 -6
  77. package/esm/component/tooltip/tooltip.js.map +1 -1
  78. package/esm/constant/index.d.ts +1 -0
  79. package/esm/constant/index.js +2 -1
  80. package/esm/constant/index.js.map +1 -1
  81. package/esm/constant/scroll-bar.js +1 -2
  82. package/esm/constant/waterfall.js +2 -1
  83. package/esm/core/index.d.ts +1 -1
  84. package/esm/core/index.js +1 -1
  85. package/esm/core/index.js.map +1 -1
  86. package/esm/core/vchart.js +11 -10
  87. package/esm/core/vchart.js.map +1 -1
  88. package/esm/interaction/config.js +1 -1
  89. package/esm/interaction/dimension-trigger.js +1 -1
  90. package/esm/interaction/index.js +1 -1
  91. package/esm/interaction/interaction.js +1 -1
  92. package/esm/layout/base-layout.js +1 -1
  93. package/esm/layout/index.js +1 -1
  94. package/esm/layout/interface.js +1 -1
  95. package/esm/layout/layout-item.js +1 -1
  96. package/esm/mark/base/base-line.js +1 -2
  97. package/esm/mark/base/base-line.js.map +1 -1
  98. package/esm/mark/base/base-mark.js +7 -1
  99. package/esm/mark/base/base-mark.js.map +1 -1
  100. package/esm/mark/utils/common.d.ts +1 -0
  101. package/esm/mark/utils/common.js +4 -0
  102. package/esm/mark/utils/common.js.map +1 -1
  103. package/esm/series/base/base-series.js +2 -2
  104. package/esm/series/base/base-series.js.map +1 -1
  105. package/esm/series/interface/type.d.ts +1 -0
  106. package/esm/series/interface/type.js +4 -3
  107. package/esm/series/interface/type.js.map +1 -1
  108. package/esm/series/liquid/animation.d.ts +1 -0
  109. package/esm/series/liquid/animation.js +28 -0
  110. package/esm/series/liquid/animation.js.map +1 -1
  111. package/esm/series/liquid/constant.js +5 -1
  112. package/esm/series/liquid/constant.js.map +1 -1
  113. package/esm/series/liquid/liquid.d.ts +3 -0
  114. package/esm/series/liquid/liquid.js +69 -42
  115. package/esm/series/liquid/liquid.js.map +1 -1
  116. package/esm/series/liquid/util.js +1 -1
  117. package/esm/series/liquid/util.js.map +1 -1
  118. package/esm/series/pie/interface.d.ts +3 -1
  119. package/esm/series/pie/interface.js.map +1 -1
  120. package/esm/typings/interpolate.d.ts +1 -3
  121. package/esm/typings/interpolate.js +0 -4
  122. package/esm/typings/interpolate.js.map +1 -1
  123. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mark/base/base-line.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,6CAAqD;AACrD,2CAAuC;AAGvC,MAAsB,YAA8D,SAAQ,oBAAW;IAWrG,QAAQ,CACN,KAAkE,EAClE,QAAwB,QAAQ,EAChC,QAAgB,CAAC,EACjB,UAAU,GAAG,IAAI,CAAC,UAAU;QAE5B,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE;YAChB,OAAO;SACR;QAED,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;YACnC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACxB;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,MAAM,iBAAiB,GAAG;YACxB,aAAa;YACb,WAAW;YACX,UAAU;YACV,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,eAAe;YACf,SAAS;YACT,MAAM;YACN,aAAa;YACb,SAAS;YACT,gBAAgB;YAChB,aAAa;YACb,cAAc;SACf,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,IAAA,cAAK,EAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACvD,OAAO;aACR;YACD,IACE,WAAW;gBACX,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,CAAC,IAAA,yBAAgB,EAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,KAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAA,IAAI,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC,EAChF;gBACA,cAAc,GAAG,IAAI,CAAC;aACvB;YAED,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAEnD,IAAI,WAAW,IAAI,IAAI,KAAK,OAAO,EAAE;gBACnC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAsC,CAAC,CAAC;aACpF;YAED,IAAI,CAAC,YAAY,CAAC,IAAW,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACxC;IACH,CAAC;CACF;AArED,oCAqEC","file":"base-line.js","sourcesContent":["import { isValidScaleType } from '@visactor/vscale';\nimport type { StateValueType } from '../../compile/mark';\nimport type { ConvertToMarkStyleSpec, ILineLikeMarkSpec } from '../../typings/visual';\nimport { isFunction, isNil } from '@visactor/vutils';\nimport { BaseMark } from './base-mark';\nimport type { IMarkStyle, StyleConvert } from '../interface';\n\nexport abstract class BaseLineMark<T extends ILineLikeMarkSpec = ILineLikeMarkSpec> extends BaseMark<T> {\n protected abstract _getIgnoreAttributes(): string[];\n\n /**\n * @override\n * 之所以覆写是因为 vgrammar 侧默认都会处理 lineSegments,非常耗性能,所以需要 VChart 给一个标志位用于是否执行。\n * 由外部series调用,设置markStyle的接口。\n * @param style\n * @param level\n * @param state\n */\n setStyle<T>(\n style: Partial<ConvertToMarkStyleSpec<T>> | Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n const ignoreAttributes = this._getIgnoreAttributes();\n const segmentAttributes = [\n 'strokeWidth',\n 'lineWidth',\n 'lineDash',\n 'strokeDash',\n 'lineJoin',\n 'stroke',\n 'strokeOpacity',\n 'opacity',\n 'fill',\n 'fillOpacity',\n 'texture',\n 'texturePadding',\n 'textureSize',\n 'textureColor'\n ];\n const isUserLevel = this.isUserLevel(level);\n let enableSegments = false;\n Object.keys(style).forEach(attr => {\n const attrStyle = style[attr];\n if (isNil(attrStyle) || ignoreAttributes.includes(attr)) {\n return;\n }\n if (\n isUserLevel &&\n segmentAttributes.includes(attr) &&\n (isValidScaleType(attrStyle?.type) || attrStyle?.scale || isFunction(attrStyle))\n ) {\n enableSegments = true;\n }\n\n let styleConverter = this._styleConvert(attrStyle);\n\n if (isUserLevel && attr === 'angle') {\n styleConverter = this.convertAngleToRadian(styleConverter as StyleConvert<number>);\n }\n\n this.setAttribute(attr as any, styleConverter, state, level, stateStyle);\n });\n if (enableSegments) {\n this.setEnableSegments(enableSegments);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/mark/base/base-line.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,6CAA8D;AAC9D,2CAAsD;AAItD,MAAsB,YAA8D,SAAQ,oBAAW;IAWrG,QAAQ,CACN,KAAkE,EAClE,QAAwB,QAAQ,EAChC,QAAgB,CAAC,EACjB,UAAU,GAAG,IAAI,CAAC,UAAU;QAE5B,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE;YAChB,OAAO;SACR;QAED,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;YACnC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACxB;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrD,MAAM,iBAAiB,GAAG;YACxB,aAAa;YACb,WAAW;YACX,UAAU;YACV,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,eAAe;YACf,SAAS;YACT,MAAM;YACN,aAAa;YACb,SAAS;YACT,gBAAgB;YAChB,aAAa;YACb,cAAc;SACf,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,IAAA,cAAK,EAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACvD,OAAO;aACR;YACD,IACE,WAAW;gBACX,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,CAAC,IAAA,yBAAgB,EAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,KAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAA,IAAI,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC,EAChF;gBACA,cAAc,GAAG,IAAI,CAAC;aACvB;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAW,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YAE5G,IAAI,CAAC,YAAY,CAAC,IAAW,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACxC;IACH,CAAC;CACF;AAjED,oCAiEC","file":"base-line.js","sourcesContent":["import { isValidScaleType } from '@visactor/vscale';\nimport type { StateValueType } from '../../compile/mark';\nimport type { ConvertToMarkStyleSpec, ILineLikeMarkSpec } from '../../typings/visual';\nimport { isFunction, isNil, isValid } from '@visactor/vutils';\nimport { BaseMark, ExChannelCall } from './base-mark';\nimport type { IMarkOption, IMarkStyle, StyleConvert } from '../interface';\nimport { Datum } from '../../typings';\n\nexport abstract class BaseLineMark<T extends ILineLikeMarkSpec = ILineLikeMarkSpec> extends BaseMark<T> {\n protected abstract _getIgnoreAttributes(): string[];\n\n /**\n * @override\n * 之所以覆写是因为 vgrammar 侧默认都会处理 lineSegments,非常耗性能,所以需要 VChart 给一个标志位用于是否执行。\n * 由外部series调用,设置markStyle的接口。\n * @param style\n * @param level\n * @param state\n */\n setStyle<T>(\n style: Partial<ConvertToMarkStyleSpec<T>> | Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n const ignoreAttributes = this._getIgnoreAttributes();\n const segmentAttributes = [\n 'strokeWidth',\n 'lineWidth',\n 'lineDash',\n 'strokeDash',\n 'lineJoin',\n 'stroke',\n 'strokeOpacity',\n 'opacity',\n 'fill',\n 'fillOpacity',\n 'texture',\n 'texturePadding',\n 'textureSize',\n 'textureColor'\n ];\n const isUserLevel = this.isUserLevel(level);\n let enableSegments = false;\n Object.keys(style).forEach(attr => {\n const attrStyle = style[attr];\n if (isNil(attrStyle) || ignoreAttributes.includes(attr)) {\n return;\n }\n if (\n isUserLevel &&\n segmentAttributes.includes(attr) &&\n (isValidScaleType(attrStyle?.type) || attrStyle?.scale || isFunction(attrStyle))\n ) {\n enableSegments = true;\n }\n\n const styleConverter = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel, stateStyle);\n\n this.setAttribute(attr as any, styleConverter, state, level, stateStyle);\n });\n if (enableSegments) {\n this.setEnableSegments(enableSegments);\n }\n }\n}\n"]}
@@ -14,7 +14,7 @@ Object.defineProperty(exports, "__esModule", {
14
14
  value: !0
15
15
  }), exports.BaseMark = void 0;
16
16
 
17
- const vutils_extension_1 = require("@visactor/vutils-extension"), color_1 = require("../../util/color"), scale_1 = require("../../util/scale"), constant_1 = require("../../constant"), vscale_1 = require("@visactor/vscale"), util_1 = require("../../theme/color-scheme/util"), compilable_mark_1 = require("../../compile/mark/compilable-mark"), vutils_1 = require("@visactor/vutils");
17
+ const vutils_extension_1 = require("@visactor/vutils-extension"), color_1 = require("../../util/color"), scale_1 = require("../../util/scale"), constant_1 = require("../../constant"), vscale_1 = require("@visactor/vscale"), util_1 = require("../../theme/color-scheme/util"), compilable_mark_1 = require("../../compile/mark/compilable-mark"), vutils_1 = require("@visactor/vutils"), utils_1 = require("../utils");
18
18
 
19
19
  class BaseMark extends compilable_mark_1.CompilableMark {
20
20
  constructor(name, option) {
@@ -41,7 +41,7 @@ class BaseMark extends compilable_mark_1.CompilableMark {
41
41
  return this._transformStyleValue(styleConverter, vutils_1.degreeToRadian);
42
42
  }
43
43
  isUserLevel(level) {
44
- return [ constant_1.AttributeLevel.User_Mark, constant_1.AttributeLevel.User_Series, constant_1.AttributeLevel.User_Chart ].includes(level);
44
+ return [ constant_1.AttributeLevel.User_Mark, constant_1.AttributeLevel.User_Series, constant_1.AttributeLevel.User_Chart, constant_1.AttributeLevel.User_SeriesStyle ].includes(level);
45
45
  }
46
46
  setStyle(style, state = "normal", level = 0, stateStyle = this.stateStyle) {
47
47
  if ((0, vutils_1.isNil)(style)) return;
@@ -67,6 +67,10 @@ class BaseMark extends compilable_mark_1.CompilableMark {
67
67
  case "innerPadding":
68
68
  case "outerPadding":
69
69
  newStyle = this._transformStyleValue(newStyle, (value => -value));
70
+ break;
71
+
72
+ case "curveType":
73
+ newStyle = this._transformStyleValue(newStyle, (value => (0, utils_1.curveTypeTransform)(value, this._option.model.direction)));
70
74
  }
71
75
  return newStyle;
72
76
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mark/base/base-mark.ts"],"names":[],"mappings":"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","file":"base-mark.js","sourcesContent":["import type { IStateInfo, IAttributeOpt, IModelMarkAttributeContext } from '../../compile/mark/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport type {\n Datum,\n IMarkSpec,\n ConvertToMarkStyleSpec,\n GradientStop,\n IVisual,\n IVisualScale,\n IVisualSpecStyle,\n ICommonSpec,\n FunctionType,\n ValueType\n} from '../../typings';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { Color } from '../../util/color';\nimport { createScaleWithSpec } from '../../util/scale';\nimport type {\n IMarkRaw,\n IMarkStateStyle,\n IMarkStyle,\n IMark,\n IMarkOption,\n StyleConvert,\n VisualScaleType,\n MarkInputStyle\n} from '../interface';\nimport { AttributeLevel, GradientType, DEFAULT_GRADIENT_CONFIG } from '../../constant';\nimport { isValidScaleType } from '@visactor/vscale';\nimport { computeActualDataScheme, getDataScheme } from '../../theme/color-scheme/util';\nimport type { ISeries } from '../../series/interface';\nimport { CompilableMark } from '../../compile/mark/compilable-mark';\nimport type { StateValueType } from '../../compile/mark';\nimport { degreeToRadian, isBoolean, isFunction, isNil, isValid } from '@visactor/vutils';\n\nexport type ExChannelCall = (\n key: string | number | symbol,\n datum: Datum,\n states: StateValueType,\n opt: unknown,\n baseValue: unknown\n) => unknown;\n\nexport class BaseMark<T extends ICommonSpec> extends CompilableMark implements IMarkRaw<T> {\n declare stateStyle: IMarkStateStyle<T>;\n\n protected declare _option: IMarkOption;\n\n protected _attributeContext: IModelMarkAttributeContext;\n\n /** by _unCompileChannel, some channel need add default channel to make sure update available */\n _extensionChannel: {\n [key: string | number | symbol]: string[];\n } = {};\n /** same as _extensionChannel. when compute channel, add extension channel effect */\n _computeExChannel: {\n [key: string | number | symbol]: ExChannelCall;\n } = {};\n\n constructor(name: string, option: IMarkOption) {\n super(option, name, option.model);\n // 这里的上下文多数情况下与 mark 是什么是没有关系的,与mark的使用者,也就是series,component有的逻辑有关。\n this._attributeContext = option.attributeContext;\n option.map?.set(this.id, this as unknown as IMark);\n }\n\n created(): void {\n this._initStyle();\n }\n\n /**\n * 外部调用,根据 spec 初始化 style(如果由 IModel 派生类调用,请使用 IModel.initMarkStyleWithSpec)\n * @param spec\n * @param key\n * @returns\n */\n initStyleWithSpec(spec: IMarkSpec<T>, key?: string) {\n if (!spec) {\n return;\n }\n\n if (isValid(spec.id)) {\n this._userId = spec.id;\n }\n\n // interactive\n if (isBoolean(spec.interactive)) {\n this._interactive = spec.interactive;\n }\n // zIndex\n if (isValid(spec.zIndex)) {\n this.setZIndex(spec.zIndex);\n }\n // visible\n if (isBoolean(spec.visible)) {\n this.setVisible(spec.visible);\n }\n // style\n this._initSpecStyle(spec, this.stateStyle, key);\n }\n\n protected _transformStyleValue<T>(\n styleConverter: StyleConvert<T>,\n transform: (value: ValueType<T>) => ValueType<T>\n ): StyleConvert<any> {\n if ((styleConverter as VisualScaleType).scale) {\n const scale = (styleConverter as VisualScaleType).scale;\n const range = scale.range();\n scale.range(range.map(transform));\n return styleConverter as StyleConvert<T>;\n } else if (typeof styleConverter === 'function') {\n return ((...args) => {\n return transform((styleConverter as FunctionType<number>)(...args) as ValueType<T>);\n }) as StyleConvert<T>;\n }\n return transform(styleConverter as ValueType<T>);\n }\n\n convertAngleToRadian(styleConverter: StyleConvert<number>) {\n // 用户传入的角度配置,需要做一层转换\n return this._transformStyleValue(styleConverter, degreeToRadian);\n }\n\n isUserLevel(level: number) {\n return [AttributeLevel.User_Mark, AttributeLevel.User_Series, AttributeLevel.User_Chart].includes(level);\n }\n\n /**\n * 由外部series调用,设置markStyle的接口(如果由 IModel 派生类调用,请使用 IModel.setMarkStyle)\n * @param style\n * @param level\n * @param state\n */\n setStyle<U extends keyof T>(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach((attr: string) => {\n let attrStyle = style[attr] as MarkInputStyle<T[U]>;\n if (isNil(attrStyle)) {\n return;\n }\n\n attrStyle = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel, stateStyle);\n\n this.setAttribute(attr as any, attrStyle, state, level, stateStyle);\n });\n }\n\n getStyle(key: string, state: StateValueType = 'normal'): any {\n return this.stateStyle[state][key]?.style;\n }\n\n /** 过滤单个 attribute */\n protected _filterAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType,\n level: number,\n isUserLevel: boolean,\n stateStyle = this.stateStyle\n ): StyleConvert<T[U]> {\n let newStyle = this._styleConvert(style);\n if (isUserLevel) {\n switch (attr) {\n case 'angle':\n newStyle = this.convertAngleToRadian(newStyle);\n break;\n case 'innerPadding':\n case 'outerPadding':\n // VRender 的 padding 定义基于 centent-box 盒模型,默认正方向是向外扩,与 VChart 不一致。这里将 padding 符号取反\n newStyle = this._transformStyleValue(newStyle, (value: number) => -value);\n break;\n }\n }\n return newStyle;\n }\n\n /**\n * TODO: 没有外部调用\n * 设置mark样式所参考的图元\n */\n setReferer<U extends keyof T>(mark: IMarkRaw<T>, styleKey?: U, state?: StateValueType, stateStyle = this.stateStyle) {\n if (!mark) {\n return;\n }\n if (styleKey && state) {\n const style = stateStyle[state] ?? { [styleKey]: {} };\n stateStyle[state][styleKey] = {\n ...(style[styleKey] as unknown as any),\n ...{ referer: mark }\n };\n return;\n }\n\n Object.entries(stateStyle).forEach(([state, style]) => {\n Object.entries(style).forEach(([styleKey, style]) => {\n stateStyle[state][styleKey].referer = mark;\n });\n });\n }\n\n setPostProcess<U extends keyof T>(key: U, postProcessFunc: any, state: StateValueType = 'normal') {\n if (this.stateStyle[state]?.[key]) {\n this.stateStyle[state][key].postProcess = postProcessFunc;\n }\n }\n\n getAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType = 'normal', opt?: IAttributeOpt) {\n return this._computeAttribute(key, state)(datum, opt);\n }\n\n setAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ) {\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n if (stateStyle[state][attr] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][attr] = {\n level,\n style,\n referer: undefined\n };\n }\n const attrLevel = stateStyle[state][attr]?.level;\n if (isValid(attrLevel) && attrLevel <= level) {\n mergeSpec(stateStyle[state][attr], { style, level });\n }\n\n // some attr has extension channel in VChart to make some effect\n if (state !== 'normal') {\n if (attr in this._extensionChannel) {\n this._extensionChannel[attr].forEach(key => {\n if (stateStyle[state][key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][key as keyof T] = stateStyle.normal[key];\n }\n });\n }\n }\n }\n\n /**\n * 与 vgrammar 默认值一致的样式可以不设置默认值或设置为undefined, 减少encode属性\n */\n protected _getDefaultStyle() {\n return {\n visible: true,\n // mark的层级应该在mark层 不在encode属性层\n // zIndex: LayoutZIndex.Mark,\n x: 0,\n y: 0\n } as IMarkStyle<T>;\n }\n\n // /**\n // * 获取该 mark 不支持的图形属性,由子类覆写\n // * @returns\n // */\n // protected getIgnoreAttributes(): string[] {\n // return [];\n // }\n\n protected _styleConvert<U extends keyof T>(style?: MarkInputStyle<T[U]>): StyleConvert<T[U]> | undefined {\n if (!style) {\n return style as undefined;\n }\n // visual spec 转换为 scale 类型的mark style\n if (isValidScaleType((style as IVisualSpecStyle<unknown, T[U]>).type) || (style as IVisualScale).scale) {\n // const _style = style as IVisual<T[U]>;\n const scale = createScaleWithSpec(style as IVisual<T[U]>, {\n globalScale: this._option.globalScale,\n seriesId: this._option.seriesId\n });\n if (scale) {\n return {\n scale,\n field: (style as IVisual<T[U]>).field,\n changeDomain: (style as IVisualScale).changeDomain\n };\n }\n }\n return style as StyleConvert<T[U]>;\n }\n\n protected _computeAttribute<U extends keyof T>(key: U, state: StateValueType) {\n let stateStyle = this.stateStyle[state]?.[key];\n if (!stateStyle) {\n stateStyle = this.stateStyle.normal[key];\n }\n const baseValueFunctor = this._computeStateAttribute(stateStyle, key, state);\n const hasPostProcess = isFunction(stateStyle?.postProcess);\n const hasExCompute = key in this._computeExChannel;\n\n if (hasPostProcess && hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum, opt: IAttributeOpt) => {\n let baseValue = baseValueFunctor(datum, opt);\n\n baseValue = stateStyle.postProcess(baseValue, datum, this._attributeContext, opt, this.getDataView());\n\n return exCompute(key, datum, state, opt, baseValue);\n };\n } else if (hasPostProcess) {\n return (datum: Datum, opt: IAttributeOpt) => {\n return stateStyle.postProcess(\n baseValueFunctor(datum, opt),\n datum,\n this._attributeContext,\n opt,\n this.getDataView()\n );\n };\n } else if (hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum, opt: IAttributeOpt) => {\n return exCompute(key, datum, state, opt, baseValueFunctor(datum, opt));\n };\n }\n return baseValueFunctor;\n }\n\n protected _computeStateAttribute<U extends keyof T>(stateStyle: any, key: U, state: StateValueType) {\n if (!stateStyle) {\n return (datum: Datum, opt: IAttributeOpt) => undefined as any;\n }\n if (stateStyle.referer) {\n return stateStyle.referer._computeAttribute(key, state);\n }\n if (!stateStyle.style) {\n return (datum: Datum, opt: IAttributeOpt) => stateStyle.style;\n }\n\n if (typeof stateStyle.style === 'function') {\n return (datum: Datum, opt: IAttributeOpt) =>\n stateStyle.style(datum, this._attributeContext, opt, this.getDataView());\n }\n\n if (GradientType.includes(stateStyle.style.gradient)) {\n // 渐变色处理,支持各个属性回调\n return this._computeGradientAttr(stateStyle.style);\n }\n\n if (['outerBorder', 'innerBorder'].includes(key as string)) {\n // 内外描边处理,支持各个属性回调\n return this._computeBorderAttr(stateStyle.style);\n }\n\n if (isValidScaleType(stateStyle.style.scale?.type)) {\n return (datum: Datum, opt: IAttributeOpt) => stateStyle.style.scale.scale(datum[stateStyle.style.field]);\n }\n return (datum: Datum, opt: IAttributeOpt) => {\n return stateStyle.style;\n };\n }\n\n private _initStyle(): void {\n const defaultStyle = this._getDefaultStyle();\n this.setStyle(defaultStyle, 'normal', 0);\n }\n\n private _initSpecStyle(spec: IMarkSpec<T>, stateStyle: IMarkStateStyle<T>, key?: string) {\n // style\n if (spec.style) {\n this.setStyle(spec.style, 'normal', AttributeLevel.User_Mark, stateStyle);\n }\n const state = spec.state;\n if (state) {\n Object.keys(state).forEach(key => {\n const stateTemp = state[key];\n if ('style' in stateTemp) {\n const style = stateTemp.style;\n let stateInfo: IStateInfo = { stateValue: key };\n if ('level' in stateTemp) {\n stateInfo.level = stateTemp.level as number;\n }\n if ('filter' in stateTemp) {\n if (isFunction(stateTemp.filter)) {\n stateInfo = {\n filter: stateTemp.filter as (datum: any, options: Record<string, any>) => boolean,\n ...stateInfo\n };\n } else {\n stateInfo = { ...stateTemp.filter, ...stateInfo };\n }\n }\n this.state.addStateInfo(stateInfo);\n this.setStyle(style as ConvertToMarkStyleSpec<T>, key, AttributeLevel.User_Mark, stateStyle);\n } else {\n this.setStyle(stateTemp, key, AttributeLevel.User_Mark, stateStyle);\n }\n });\n }\n }\n\n private _computeGradientAttr(gradientStyle: any) {\n const { gradient, scale, field, ...rest } = gradientStyle;\n\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n }\n\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n // 默认配置处理\n const mergedStyle = {\n ...DEFAULT_GRADIENT_CONFIG[gradient],\n ...rest\n };\n return (data: Datum, opt: IAttributeOpt) => {\n const computeStyle: any = {};\n const markData = this.getDataView();\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (key === 'stops') {\n computeStyle.stops = value.map((stop: GradientStop) => {\n const { opacity, color, offset } = stop;\n let computeColor = color ?? colorScale?.scale(data[colorField]);\n if (isFunction(color)) {\n computeColor = color(data, this._attributeContext, opt, markData);\n }\n\n if (isValid(opacity)) {\n computeColor = Color.SetOpacity(computeColor as string, opacity);\n }\n\n return {\n offset: isFunction(offset) ? offset(data, this._attributeContext, opt, markData) : offset,\n color: computeColor || themeColor[0]\n };\n });\n } else if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, markData);\n } else {\n computeStyle[key] = value;\n }\n });\n\n computeStyle.gradient = gradient;\n\n return computeStyle;\n };\n }\n\n private _computeBorderAttr(borderStyle: any) {\n const { scale, field, ...mergedStyle } = borderStyle;\n\n return (data: Datum, opt: IAttributeOpt) => {\n const computeStyle: any = {};\n\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, this.getDataView());\n } else {\n computeStyle[key] = value;\n }\n });\n if (!('stroke' in computeStyle)) {\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n computeStyle.stroke = colorScale?.scale(data[colorField]) || themeColor[0];\n }\n } else if (GradientType.includes(mergedStyle.stroke?.gradient)) {\n computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke)(data, opt);\n }\n return computeStyle;\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/mark/base/base-mark.ts"],"names":[],"mappings":"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","file":"base-mark.js","sourcesContent":["import type { IStateInfo, IAttributeOpt, IModelMarkAttributeContext } from '../../compile/mark/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport type {\n Datum,\n IMarkSpec,\n ConvertToMarkStyleSpec,\n GradientStop,\n IVisual,\n IVisualScale,\n IVisualSpecStyle,\n ICommonSpec,\n FunctionType,\n ValueType\n} from '../../typings';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { Color } from '../../util/color';\nimport { createScaleWithSpec } from '../../util/scale';\nimport type {\n IMarkRaw,\n IMarkStateStyle,\n IMarkStyle,\n IMark,\n IMarkOption,\n StyleConvert,\n VisualScaleType,\n MarkInputStyle\n} from '../interface';\nimport { AttributeLevel, GradientType, DEFAULT_GRADIENT_CONFIG } from '../../constant';\nimport { isValidScaleType } from '@visactor/vscale';\nimport { computeActualDataScheme, getDataScheme } from '../../theme/color-scheme/util';\nimport type { ISeries } from '../../series/interface';\nimport { CompilableMark } from '../../compile/mark/compilable-mark';\nimport type { StateValueType } from '../../compile/mark';\nimport { degreeToRadian, isBoolean, isFunction, isNil, isValid } from '@visactor/vutils';\nimport { curveTypeTransform } from '../utils';\n\nexport type ExChannelCall = (\n key: string | number | symbol,\n datum: Datum,\n states: StateValueType,\n opt: unknown,\n baseValue: unknown\n) => unknown;\n\nexport class BaseMark<T extends ICommonSpec> extends CompilableMark implements IMarkRaw<T> {\n declare stateStyle: IMarkStateStyle<T>;\n\n protected declare _option: IMarkOption;\n\n protected _attributeContext: IModelMarkAttributeContext;\n\n /** by _unCompileChannel, some channel need add default channel to make sure update available */\n _extensionChannel: {\n [key: string | number | symbol]: string[];\n } = {};\n /** same as _extensionChannel. when compute channel, add extension channel effect */\n _computeExChannel: {\n [key: string | number | symbol]: ExChannelCall;\n } = {};\n\n constructor(name: string, option: IMarkOption) {\n super(option, name, option.model);\n // 这里的上下文多数情况下与 mark 是什么是没有关系的,与mark的使用者,也就是series,component有的逻辑有关。\n this._attributeContext = option.attributeContext;\n option.map?.set(this.id, this as unknown as IMark);\n }\n\n created(): void {\n this._initStyle();\n }\n\n /**\n * 外部调用,根据 spec 初始化 style(如果由 IModel 派生类调用,请使用 IModel.initMarkStyleWithSpec)\n * @param spec\n * @param key\n * @returns\n */\n initStyleWithSpec(spec: IMarkSpec<T>, key?: string) {\n if (!spec) {\n return;\n }\n\n if (isValid(spec.id)) {\n this._userId = spec.id;\n }\n\n // interactive\n if (isBoolean(spec.interactive)) {\n this._interactive = spec.interactive;\n }\n // zIndex\n if (isValid(spec.zIndex)) {\n this.setZIndex(spec.zIndex);\n }\n // visible\n if (isBoolean(spec.visible)) {\n this.setVisible(spec.visible);\n }\n // style\n this._initSpecStyle(spec, this.stateStyle, key);\n }\n\n protected _transformStyleValue<T>(\n styleConverter: StyleConvert<T>,\n transform: (value: ValueType<T>) => ValueType<T>\n ): StyleConvert<any> {\n if ((styleConverter as VisualScaleType).scale) {\n const scale = (styleConverter as VisualScaleType).scale;\n const range = scale.range();\n scale.range(range.map(transform));\n return styleConverter as StyleConvert<T>;\n } else if (typeof styleConverter === 'function') {\n return ((...args) => {\n return transform((styleConverter as FunctionType<number>)(...args) as ValueType<T>);\n }) as StyleConvert<T>;\n }\n return transform(styleConverter as ValueType<T>);\n }\n\n convertAngleToRadian(styleConverter: StyleConvert<number>) {\n // 用户传入的角度配置,需要做一层转换\n return this._transformStyleValue(styleConverter, degreeToRadian);\n }\n\n isUserLevel(level: number) {\n return [\n AttributeLevel.User_Mark,\n AttributeLevel.User_Series,\n AttributeLevel.User_Chart,\n AttributeLevel.User_SeriesStyle\n ].includes(level);\n }\n\n /**\n * 由外部series调用,设置markStyle的接口(如果由 IModel 派生类调用,请使用 IModel.setMarkStyle)\n * @param style\n * @param level\n * @param state\n */\n setStyle<U extends keyof T>(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach((attr: string) => {\n let attrStyle = style[attr] as MarkInputStyle<T[U]>;\n if (isNil(attrStyle)) {\n return;\n }\n\n attrStyle = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel, stateStyle);\n\n this.setAttribute(attr as any, attrStyle, state, level, stateStyle);\n });\n }\n\n getStyle(key: string, state: StateValueType = 'normal'): any {\n return this.stateStyle[state][key]?.style;\n }\n\n /** 过滤单个 attribute */\n protected _filterAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType,\n level: number,\n isUserLevel: boolean,\n stateStyle = this.stateStyle\n ): StyleConvert<T[U]> {\n let newStyle = this._styleConvert(style);\n if (isUserLevel) {\n switch (attr) {\n case 'angle':\n newStyle = this.convertAngleToRadian(newStyle);\n break;\n case 'innerPadding':\n case 'outerPadding':\n // VRender 的 padding 定义基于 centent-box 盒模型,默认正方向是向外扩,与 VChart 不一致。这里将 padding 符号取反\n newStyle = this._transformStyleValue(newStyle, (value: number) => -value);\n break;\n case 'curveType':\n newStyle = this._transformStyleValue(newStyle, (value: string) =>\n curveTypeTransform(value, (this._option.model as any).direction)\n );\n break;\n }\n }\n return newStyle;\n }\n\n /**\n * TODO: 没有外部调用\n * 设置mark样式所参考的图元\n */\n setReferer<U extends keyof T>(mark: IMarkRaw<T>, styleKey?: U, state?: StateValueType, stateStyle = this.stateStyle) {\n if (!mark) {\n return;\n }\n if (styleKey && state) {\n const style = stateStyle[state] ?? { [styleKey]: {} };\n stateStyle[state][styleKey] = {\n ...(style[styleKey] as unknown as any),\n ...{ referer: mark }\n };\n return;\n }\n\n Object.entries(stateStyle).forEach(([state, style]) => {\n Object.entries(style).forEach(([styleKey, style]) => {\n stateStyle[state][styleKey].referer = mark;\n });\n });\n }\n\n setPostProcess<U extends keyof T>(key: U, postProcessFunc: any, state: StateValueType = 'normal') {\n if (this.stateStyle[state]?.[key]) {\n this.stateStyle[state][key].postProcess = postProcessFunc;\n }\n }\n\n getAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType = 'normal', opt?: IAttributeOpt) {\n return this._computeAttribute(key, state)(datum, opt);\n }\n\n setAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ) {\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n if (stateStyle[state][attr] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][attr] = {\n level,\n style,\n referer: undefined\n };\n }\n const attrLevel = stateStyle[state][attr]?.level;\n if (isValid(attrLevel) && attrLevel <= level) {\n mergeSpec(stateStyle[state][attr], { style, level });\n }\n\n // some attr has extension channel in VChart to make some effect\n if (state !== 'normal') {\n if (attr in this._extensionChannel) {\n this._extensionChannel[attr].forEach(key => {\n if (stateStyle[state][key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][key as keyof T] = stateStyle.normal[key];\n }\n });\n }\n }\n }\n\n /**\n * 与 vgrammar 默认值一致的样式可以不设置默认值或设置为undefined, 减少encode属性\n */\n protected _getDefaultStyle() {\n return {\n visible: true,\n // mark的层级应该在mark层 不在encode属性层\n // zIndex: LayoutZIndex.Mark,\n x: 0,\n y: 0\n } as IMarkStyle<T>;\n }\n\n // /**\n // * 获取该 mark 不支持的图形属性,由子类覆写\n // * @returns\n // */\n // protected getIgnoreAttributes(): string[] {\n // return [];\n // }\n\n protected _styleConvert<U extends keyof T>(style?: MarkInputStyle<T[U]>): StyleConvert<T[U]> | undefined {\n if (!style) {\n return style as undefined;\n }\n // visual spec 转换为 scale 类型的mark style\n if (isValidScaleType((style as IVisualSpecStyle<unknown, T[U]>).type) || (style as IVisualScale).scale) {\n // const _style = style as IVisual<T[U]>;\n const scale = createScaleWithSpec(style as IVisual<T[U]>, {\n globalScale: this._option.globalScale,\n seriesId: this._option.seriesId\n });\n if (scale) {\n return {\n scale,\n field: (style as IVisual<T[U]>).field,\n changeDomain: (style as IVisualScale).changeDomain\n };\n }\n }\n return style as StyleConvert<T[U]>;\n }\n\n protected _computeAttribute<U extends keyof T>(key: U, state: StateValueType) {\n let stateStyle = this.stateStyle[state]?.[key];\n if (!stateStyle) {\n stateStyle = this.stateStyle.normal[key];\n }\n const baseValueFunctor = this._computeStateAttribute(stateStyle, key, state);\n const hasPostProcess = isFunction(stateStyle?.postProcess);\n const hasExCompute = key in this._computeExChannel;\n\n if (hasPostProcess && hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum, opt: IAttributeOpt) => {\n let baseValue = baseValueFunctor(datum, opt);\n\n baseValue = stateStyle.postProcess(baseValue, datum, this._attributeContext, opt, this.getDataView());\n\n return exCompute(key, datum, state, opt, baseValue);\n };\n } else if (hasPostProcess) {\n return (datum: Datum, opt: IAttributeOpt) => {\n return stateStyle.postProcess(\n baseValueFunctor(datum, opt),\n datum,\n this._attributeContext,\n opt,\n this.getDataView()\n );\n };\n } else if (hasExCompute) {\n const exCompute = this._computeExChannel[key];\n return (datum: Datum, opt: IAttributeOpt) => {\n return exCompute(key, datum, state, opt, baseValueFunctor(datum, opt));\n };\n }\n return baseValueFunctor;\n }\n\n protected _computeStateAttribute<U extends keyof T>(stateStyle: any, key: U, state: StateValueType) {\n if (!stateStyle) {\n return (datum: Datum, opt: IAttributeOpt) => undefined as any;\n }\n if (stateStyle.referer) {\n return stateStyle.referer._computeAttribute(key, state);\n }\n if (!stateStyle.style) {\n return (datum: Datum, opt: IAttributeOpt) => stateStyle.style;\n }\n\n if (typeof stateStyle.style === 'function') {\n return (datum: Datum, opt: IAttributeOpt) =>\n stateStyle.style(datum, this._attributeContext, opt, this.getDataView());\n }\n\n if (GradientType.includes(stateStyle.style.gradient)) {\n // 渐变色处理,支持各个属性回调\n return this._computeGradientAttr(stateStyle.style);\n }\n\n if (['outerBorder', 'innerBorder'].includes(key as string)) {\n // 内外描边处理,支持各个属性回调\n return this._computeBorderAttr(stateStyle.style);\n }\n\n if (isValidScaleType(stateStyle.style.scale?.type)) {\n return (datum: Datum, opt: IAttributeOpt) => stateStyle.style.scale.scale(datum[stateStyle.style.field]);\n }\n return (datum: Datum, opt: IAttributeOpt) => {\n return stateStyle.style;\n };\n }\n\n private _initStyle(): void {\n const defaultStyle = this._getDefaultStyle();\n this.setStyle(defaultStyle, 'normal', 0);\n }\n\n private _initSpecStyle(spec: IMarkSpec<T>, stateStyle: IMarkStateStyle<T>, key?: string) {\n // style\n if (spec.style) {\n this.setStyle(spec.style, 'normal', AttributeLevel.User_Mark, stateStyle);\n }\n const state = spec.state;\n if (state) {\n Object.keys(state).forEach(key => {\n const stateTemp = state[key];\n if ('style' in stateTemp) {\n const style = stateTemp.style;\n let stateInfo: IStateInfo = { stateValue: key };\n if ('level' in stateTemp) {\n stateInfo.level = stateTemp.level as number;\n }\n if ('filter' in stateTemp) {\n if (isFunction(stateTemp.filter)) {\n stateInfo = {\n filter: stateTemp.filter as (datum: any, options: Record<string, any>) => boolean,\n ...stateInfo\n };\n } else {\n stateInfo = { ...stateTemp.filter, ...stateInfo };\n }\n }\n this.state.addStateInfo(stateInfo);\n this.setStyle(style as ConvertToMarkStyleSpec<T>, key, AttributeLevel.User_Mark, stateStyle);\n } else {\n this.setStyle(stateTemp, key, AttributeLevel.User_Mark, stateStyle);\n }\n });\n }\n }\n\n private _computeGradientAttr(gradientStyle: any) {\n const { gradient, scale, field, ...rest } = gradientStyle;\n\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n }\n\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n // 默认配置处理\n const mergedStyle = {\n ...DEFAULT_GRADIENT_CONFIG[gradient],\n ...rest\n };\n return (data: Datum, opt: IAttributeOpt) => {\n const computeStyle: any = {};\n const markData = this.getDataView();\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (key === 'stops') {\n computeStyle.stops = value.map((stop: GradientStop) => {\n const { opacity, color, offset } = stop;\n let computeColor = color ?? colorScale?.scale(data[colorField]);\n if (isFunction(color)) {\n computeColor = color(data, this._attributeContext, opt, markData);\n }\n\n if (isValid(opacity)) {\n computeColor = Color.SetOpacity(computeColor as string, opacity);\n }\n\n return {\n offset: isFunction(offset) ? offset(data, this._attributeContext, opt, markData) : offset,\n color: computeColor || themeColor[0]\n };\n });\n } else if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, markData);\n } else {\n computeStyle[key] = value;\n }\n });\n\n computeStyle.gradient = gradient;\n\n return computeStyle;\n };\n }\n\n private _computeBorderAttr(borderStyle: any) {\n const { scale, field, ...mergedStyle } = borderStyle;\n\n return (data: Datum, opt: IAttributeOpt) => {\n const computeStyle: any = {};\n\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, this.getDataView());\n } else {\n computeStyle[key] = value;\n }\n });\n if (!('stroke' in computeStyle)) {\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getColorScheme(),\n this.model.modelType === 'series' ? this.model.getSpec?.() : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n computeStyle.stroke = colorScale?.scale(data[colorField]) || themeColor[0];\n }\n } else if (GradientType.includes(mergedStyle.stroke?.gradient)) {\n computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke)(data, opt);\n }\n return computeStyle;\n };\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
1
  import { MarkTypeEnum } from '../interface/type';
2
2
  export declare const MultiDatumMark: string[];
3
3
  export declare function isMultiDatumMark(type: MarkTypeEnum): boolean;
4
+ export declare function curveTypeTransform(type: string, direction: string): string;
@@ -4,8 +4,13 @@ function isMultiDatumMark(type) {
4
4
  return exports.MultiDatumMark.includes(type);
5
5
  }
6
6
 
7
+ function curveTypeTransform(type, direction) {
8
+ return "monotone" === type ? "horizontal" === direction ? "monotoneY" : "monotoneX" : type;
9
+ }
10
+
7
11
  Object.defineProperty(exports, "__esModule", {
8
12
  value: !0
9
- }), exports.isMultiDatumMark = exports.MultiDatumMark = void 0, exports.MultiDatumMark = [ "line", "area", "trail" ],
10
- exports.isMultiDatumMark = isMultiDatumMark;
13
+ }), exports.curveTypeTransform = exports.isMultiDatumMark = exports.MultiDatumMark = void 0,
14
+ exports.MultiDatumMark = [ "line", "area", "trail" ], exports.isMultiDatumMark = isMultiDatumMark,
15
+ exports.curveTypeTransform = curveTypeTransform;
11
16
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mark/utils/common.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,iBAAuC,OAAO,CAAC,CAAC;AAE9E,SAAgB,gBAAgB,CAAC,IAAkB;IACjD,OAAO,sBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAFD,4CAEC","file":"common.js","sourcesContent":["import { MarkTypeEnum } from '../interface/type';\n\nexport const MultiDatumMark = [MarkTypeEnum.line, MarkTypeEnum.area, 'trail'];\n\nexport function isMultiDatumMark(type: MarkTypeEnum) {\n return MultiDatumMark.includes(type);\n}\n"]}
1
+ {"version":3,"sources":["../src/mark/utils/common.ts"],"names":[],"mappings":";;;AAGa,QAAA,cAAc,GAAG,iBAAuC,OAAO,CAAC,CAAC;AAE9E,SAAgB,gBAAgB,CAAC,IAAkB;IACjD,OAAO,sBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAFD,4CAEC;AAED,SAAgB,kBAAkB,CAAC,IAAY,EAAE,SAAiB;IAChE,IAAI,IAAI,KAAK,UAAU,EAAE;QACvB,OAAO,SAAS,iBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;KACvE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,gDAKC","file":"common.js","sourcesContent":["import { MarkTypeEnum } from '../interface/type';\nimport { Direction } from '../../typings';\n\nexport const MultiDatumMark = [MarkTypeEnum.line, MarkTypeEnum.area, 'trail'];\n\nexport function isMultiDatumMark(type: MarkTypeEnum) {\n return MultiDatumMark.includes(type);\n}\n\nexport function curveTypeTransform(type: string, direction: string) {\n if (type === 'monotone') {\n return direction === Direction.horizontal ? 'monotoneY' : 'monotoneX';\n }\n return type;\n}\n"]}
@@ -484,9 +484,9 @@ class BaseSeries extends base_model_1.BaseModel {
484
484
  style = null === (_a = markStyle[datum[0][groupBy]]) || void 0 === _a ? void 0 : _a[key];
485
485
  }
486
486
  return style = null === (_b = markStyle[datum[groupBy]]) || void 0 === _b ? void 0 : _b[key],
487
- style || mark.getAttribute(key, datum);
487
+ (0, vutils_1.isValid)(style) ? style : mark.getAttribute(key, datum);
488
488
  };
489
- })), this.setMarkStyle(mark, style, index_1.DEFAULT_SERIES_STYLE_NAME);
489
+ })), this.setMarkStyle(mark, style, index_1.DEFAULT_SERIES_STYLE_NAME, index_1.AttributeLevel.User_SeriesStyle);
490
490
  }));
491
491
  }
492
492
  afterInitMark() {