@visactor/vgrammar-core 0.8.1 → 0.8.2

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 (209) hide show
  1. package/cjs/component/axis.js +9 -9
  2. package/cjs/component/axis.js.map +1 -1
  3. package/cjs/component/datazoom.js +5 -5
  4. package/cjs/component/datazoom.js.map +1 -1
  5. package/cjs/component/grid.js +18 -18
  6. package/cjs/component/grid.js.map +1 -1
  7. package/cjs/component/label.js +16 -16
  8. package/cjs/component/label.js.map +1 -1
  9. package/cjs/component/legend.js +13 -13
  10. package/cjs/component/legend.js.map +1 -1
  11. package/cjs/component/scrollbar.js +7 -7
  12. package/cjs/component/scrollbar.js.map +1 -1
  13. package/cjs/component/slider.js +5 -5
  14. package/cjs/component/slider.js.map +1 -1
  15. package/cjs/component/title.js +5 -5
  16. package/cjs/component/title.js.map +1 -1
  17. package/cjs/core/factory.d.ts +5 -1
  18. package/cjs/core/factory.js +13 -3
  19. package/cjs/core/factory.js.map +1 -1
  20. package/cjs/graph/animation/animation/move.js +10 -8
  21. package/cjs/graph/animation/animation/move.js.map +1 -1
  22. package/cjs/graph/attributes/common.js +2 -10
  23. package/cjs/graph/attributes/common.js.map +1 -1
  24. package/cjs/graph/attributes/helpers.d.ts +2 -2
  25. package/cjs/graph/attributes/helpers.js +50 -17
  26. package/cjs/graph/attributes/helpers.js.map +1 -1
  27. package/cjs/graph/attributes/index.d.ts +4 -10
  28. package/cjs/graph/attributes/index.js +16 -251
  29. package/cjs/graph/attributes/index.js.map +1 -1
  30. package/cjs/graph/attributes/line.d.ts +3 -0
  31. package/cjs/graph/attributes/line.js +46 -0
  32. package/cjs/graph/attributes/line.js.map +1 -0
  33. package/cjs/graph/attributes/transform.d.ts +5 -0
  34. package/cjs/graph/attributes/transform.js +167 -0
  35. package/cjs/graph/attributes/transform.js.map +1 -0
  36. package/cjs/graph/canvas-renderer.js +1 -1
  37. package/cjs/graph/canvas-renderer.js.map +1 -1
  38. package/cjs/graph/constants.d.ts +0 -1
  39. package/cjs/graph/constants.js +2 -3
  40. package/cjs/graph/constants.js.map +1 -1
  41. package/cjs/graph/element.js +5 -5
  42. package/cjs/graph/element.js.map +1 -1
  43. package/cjs/graph/glyph-element.js +4 -4
  44. package/cjs/graph/glyph-element.js.map +1 -1
  45. package/cjs/graph/layout/relative.js.map +1 -1
  46. package/cjs/graph/mark/encode.js +4 -4
  47. package/cjs/graph/mark/encode.js.map +1 -1
  48. package/cjs/index.d.ts +3 -1
  49. package/cjs/index.js +3 -2
  50. package/cjs/index.js.map +1 -1
  51. package/cjs/interactions/base.js.map +1 -1
  52. package/cjs/interactions/brush-base.js +2 -2
  53. package/cjs/interactions/brush-base.js.map +1 -1
  54. package/cjs/interactions/brush-filter.js +2 -2
  55. package/cjs/interactions/brush-filter.js.map +1 -1
  56. package/cjs/interactions/crosshair.d.ts +1 -1
  57. package/cjs/interactions/crosshair.js +15 -15
  58. package/cjs/interactions/crosshair.js.map +1 -1
  59. package/cjs/interactions/datazoom-filter.js +3 -3
  60. package/cjs/interactions/datazoom-filter.js.map +1 -1
  61. package/cjs/interactions/drill-down.js +2 -2
  62. package/cjs/interactions/drill-down.js.map +1 -1
  63. package/cjs/interactions/legend-filter.js +3 -3
  64. package/cjs/interactions/legend-filter.js.map +1 -1
  65. package/cjs/interactions/player-filter.js +3 -3
  66. package/cjs/interactions/player-filter.js.map +1 -1
  67. package/cjs/interactions/roll-up.js +2 -2
  68. package/cjs/interactions/roll-up.js.map +1 -1
  69. package/cjs/interactions/scrollbar-filter.js +3 -3
  70. package/cjs/interactions/scrollbar-filter.js.map +1 -1
  71. package/cjs/interactions/slider-filter.js +3 -3
  72. package/cjs/interactions/slider-filter.js.map +1 -1
  73. package/cjs/parse/view.js +1 -1
  74. package/cjs/parse/view.js.map +1 -1
  75. package/cjs/semantic-marks/cell.d.ts +3 -1
  76. package/cjs/semantic-marks/cell.js +10 -4
  77. package/cjs/semantic-marks/cell.js.map +1 -1
  78. package/cjs/semantic-marks/interval.d.ts +2 -0
  79. package/cjs/semantic-marks/interval.js +10 -4
  80. package/cjs/semantic-marks/interval.js.map +1 -1
  81. package/cjs/semantic-marks/text.d.ts +1 -0
  82. package/cjs/semantic-marks/text.js +3 -3
  83. package/cjs/semantic-marks/text.js.map +1 -1
  84. package/cjs/types/animate.d.ts +5 -1
  85. package/cjs/types/animate.js.map +1 -1
  86. package/cjs/types/grammar.d.ts +1 -1
  87. package/cjs/types/grammar.js.map +1 -1
  88. package/cjs/types/mark.d.ts +5 -1
  89. package/cjs/types/mark.js.map +1 -1
  90. package/cjs/types/view.d.ts +1 -0
  91. package/cjs/types/view.js.map +1 -1
  92. package/cjs/view/View.d.ts +0 -1
  93. package/cjs/view/View.js +15 -25
  94. package/cjs/view/View.js.map +1 -1
  95. package/cjs/view/animate.d.ts +1 -0
  96. package/cjs/view/animate.js +12 -12
  97. package/cjs/view/animate.js.map +1 -1
  98. package/cjs/view/constants.d.ts +0 -3
  99. package/cjs/view/constants.js +2 -3
  100. package/cjs/view/constants.js.map +1 -1
  101. package/cjs/view/grammar-record.js +5 -5
  102. package/cjs/view/grammar-record.js.map +1 -1
  103. package/cjs/view/mark.js +1 -1
  104. package/cjs/view/mark.js.map +1 -1
  105. package/es/component/axis.js +1 -1
  106. package/es/component/axis.js.map +1 -1
  107. package/es/component/datazoom.js +1 -1
  108. package/es/component/datazoom.js.map +1 -1
  109. package/es/component/grid.js +1 -1
  110. package/es/component/grid.js.map +1 -1
  111. package/es/component/label.js +1 -1
  112. package/es/component/label.js.map +1 -1
  113. package/es/component/legend.js +1 -1
  114. package/es/component/legend.js.map +1 -1
  115. package/es/component/scrollbar.js +1 -1
  116. package/es/component/scrollbar.js.map +1 -1
  117. package/es/component/slider.js +1 -1
  118. package/es/component/slider.js.map +1 -1
  119. package/es/component/title.js +1 -1
  120. package/es/component/title.js.map +1 -1
  121. package/es/core/factory.d.ts +5 -1
  122. package/es/core/factory.js +11 -1
  123. package/es/core/factory.js.map +1 -1
  124. package/es/graph/animation/animation/move.js +5 -5
  125. package/es/graph/animation/animation/move.js.map +1 -1
  126. package/es/graph/attributes/common.js +2 -7
  127. package/es/graph/attributes/common.js.map +1 -1
  128. package/es/graph/attributes/helpers.d.ts +2 -2
  129. package/es/graph/attributes/helpers.js +46 -12
  130. package/es/graph/attributes/helpers.js.map +1 -1
  131. package/es/graph/attributes/index.d.ts +4 -10
  132. package/es/graph/attributes/index.js +4 -227
  133. package/es/graph/attributes/index.js.map +1 -1
  134. package/es/graph/attributes/line.d.ts +3 -0
  135. package/es/graph/attributes/line.js +42 -0
  136. package/es/graph/attributes/line.js.map +1 -0
  137. package/es/graph/attributes/transform.d.ts +5 -0
  138. package/es/graph/attributes/transform.js +153 -0
  139. package/es/graph/attributes/transform.js.map +1 -0
  140. package/es/graph/canvas-renderer.js +1 -1
  141. package/es/graph/canvas-renderer.js.map +1 -1
  142. package/es/graph/constants.d.ts +0 -1
  143. package/es/graph/constants.js +0 -2
  144. package/es/graph/constants.js.map +1 -1
  145. package/es/graph/element.js +4 -2
  146. package/es/graph/element.js.map +1 -1
  147. package/es/graph/glyph-element.js +1 -1
  148. package/es/graph/glyph-element.js.map +1 -1
  149. package/es/graph/layout/relative.js.map +1 -1
  150. package/es/graph/mark/encode.js +1 -1
  151. package/es/graph/mark/encode.js.map +1 -1
  152. package/es/index.d.ts +3 -1
  153. package/es/index.js +5 -1
  154. package/es/index.js.map +1 -1
  155. package/es/interactions/base.js.map +1 -1
  156. package/es/interactions/brush-base.js +1 -1
  157. package/es/interactions/brush-base.js.map +1 -1
  158. package/es/interactions/brush-filter.js +1 -1
  159. package/es/interactions/brush-filter.js.map +1 -1
  160. package/es/interactions/crosshair.d.ts +1 -1
  161. package/es/interactions/crosshair.js +1 -1
  162. package/es/interactions/crosshair.js.map +1 -1
  163. package/es/interactions/datazoom-filter.js +1 -1
  164. package/es/interactions/datazoom-filter.js.map +1 -1
  165. package/es/interactions/drill-down.js +1 -1
  166. package/es/interactions/drill-down.js.map +1 -1
  167. package/es/interactions/legend-filter.js +1 -1
  168. package/es/interactions/legend-filter.js.map +1 -1
  169. package/es/interactions/player-filter.js +1 -1
  170. package/es/interactions/player-filter.js.map +1 -1
  171. package/es/interactions/roll-up.js +1 -1
  172. package/es/interactions/roll-up.js.map +1 -1
  173. package/es/interactions/scrollbar-filter.js +1 -1
  174. package/es/interactions/scrollbar-filter.js.map +1 -1
  175. package/es/interactions/slider-filter.js +1 -1
  176. package/es/interactions/slider-filter.js.map +1 -1
  177. package/es/parse/view.js +1 -1
  178. package/es/parse/view.js.map +1 -1
  179. package/es/semantic-marks/cell.d.ts +3 -1
  180. package/es/semantic-marks/cell.js +11 -1
  181. package/es/semantic-marks/cell.js.map +1 -1
  182. package/es/semantic-marks/interval.d.ts +2 -0
  183. package/es/semantic-marks/interval.js +9 -1
  184. package/es/semantic-marks/interval.js.map +1 -1
  185. package/es/semantic-marks/text.d.ts +1 -0
  186. package/es/semantic-marks/text.js +3 -1
  187. package/es/semantic-marks/text.js.map +1 -1
  188. package/es/types/animate.d.ts +5 -1
  189. package/es/types/animate.js.map +1 -1
  190. package/es/types/grammar.d.ts +1 -1
  191. package/es/types/grammar.js.map +1 -1
  192. package/es/types/mark.d.ts +5 -1
  193. package/es/types/mark.js.map +1 -1
  194. package/es/types/view.d.ts +1 -0
  195. package/es/types/view.js.map +1 -1
  196. package/es/view/View.d.ts +0 -1
  197. package/es/view/View.js +13 -27
  198. package/es/view/View.js.map +1 -1
  199. package/es/view/animate.d.ts +1 -0
  200. package/es/view/animate.js +6 -6
  201. package/es/view/animate.js.map +1 -1
  202. package/es/view/constants.d.ts +0 -3
  203. package/es/view/constants.js +0 -6
  204. package/es/view/constants.js.map +1 -1
  205. package/es/view/grammar-record.js +1 -1
  206. package/es/view/grammar-record.js.map +1 -1
  207. package/es/view/mark.js +1 -1
  208. package/es/view/mark.js.map +1 -1
  209. package/package.json +3 -3
@@ -2,20 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.transformCommonAttribute = exports.commonAttributes = void 0;
6
-
7
- const helpers_1 = require("./helpers");
8
-
9
- exports.commonAttributes = [ "fillOpacity", "x", "y", "dx", "dy" ];
5
+ }), exports.transformCommonAttribute = exports.commonAttributes = void 0, exports.commonAttributes = [ "fillOpacity" ];
10
6
 
11
7
  const transformCommonAttribute = (graphicAttributes, changedKey, nextAttrs) => {
12
8
  var _a;
13
9
  return "fillOpacity" === changedKey ? (graphicAttributes.fillOpacity = null !== (_a = nextAttrs.fillOpacity) && void 0 !== _a ? _a : 1,
14
- [ "fillOpacity" ]) : "x" === changedKey ? (graphicAttributes.x = (0, helpers_1.parseXY)(nextAttrs.x),
15
- [ "x" ]) : "y" === changedKey ? (graphicAttributes.y = (0, helpers_1.parseXY)(nextAttrs.y),
16
- [ "y" ]) : "dx" === changedKey ? (graphicAttributes.dx = (0, helpers_1.parseXY)(nextAttrs.dx),
17
- [ "dx" ]) : "dy" === changedKey ? (graphicAttributes.dy = (0, helpers_1.parseXY)(nextAttrs.dy),
18
- [ "dy" ]) : [];
10
+ [ "fillOpacity" ]) : [];
19
11
  };
20
12
 
21
13
  exports.transformCommonAttribute = transformCommonAttribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/attributes/common.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAEvB,QAAA,gBAAgB,GAAG,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE/D,MAAM,wBAAwB,GAAG,CAAC,iBAAsB,EAAE,UAAkB,EAAE,SAAc,EAAE,EAAE;;IACrG,IAAI,UAAU,KAAK,aAAa,EAAE;QAChC,iBAAiB,CAAC,WAAW,GAAG,MAAA,SAAS,CAAC,WAAW,mCAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,aAAa,CAAC,CAAC;KACxB;IAED,IAAI,UAAU,KAAK,GAAG,EAAE;QACtB,iBAAiB,CAAC,CAAC,GAAG,IAAA,iBAAO,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;IAED,IAAI,UAAU,KAAK,GAAG,EAAE;QACtB,iBAAiB,CAAC,CAAC,GAAG,IAAA,iBAAO,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;IAED,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,iBAAiB,CAAC,EAAE,GAAG,IAAA,iBAAO,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;KACf;IAED,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,iBAAiB,CAAC,EAAE,GAAG,IAAA,iBAAO,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;KACf;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AA3BW,QAAA,wBAAwB,4BA2BnC","file":"common.js","sourcesContent":["import { parseXY } from './helpers';\n\nexport const commonAttributes = ['fillOpacity', 'x', 'y', 'dx', 'dy'];\n\nexport const transformCommonAttribute = (graphicAttributes: any, changedKey: string, nextAttrs: any) => {\n if (changedKey === 'fillOpacity') {\n graphicAttributes.fillOpacity = nextAttrs.fillOpacity ?? 1;\n return ['fillOpacity'];\n }\n\n if (changedKey === 'x') {\n graphicAttributes.x = parseXY(nextAttrs.x);\n return ['x'];\n }\n\n if (changedKey === 'y') {\n graphicAttributes.y = parseXY(nextAttrs.y);\n return ['y'];\n }\n\n if (changedKey === 'dx') {\n graphicAttributes.dx = parseXY(nextAttrs.dx);\n return ['dx'];\n }\n\n if (changedKey === 'dy') {\n graphicAttributes.dy = parseXY(nextAttrs.dy);\n return ['dy'];\n }\n\n return [];\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/attributes/common.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,CAAC,aAAa,CAAC,CAAC;AAEzC,MAAM,wBAAwB,GAAG,CAAC,iBAAsB,EAAE,UAAkB,EAAE,SAAc,EAAE,EAAE;;IACrG,IAAI,UAAU,KAAK,aAAa,EAAE;QAChC,iBAAiB,CAAC,WAAW,GAAG,MAAA,SAAS,CAAC,WAAW,mCAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,aAAa,CAAC,CAAC;KACxB;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAPW,QAAA,wBAAwB,4BAOnC","file":"common.js","sourcesContent":["export const commonAttributes = ['fillOpacity'];\n\nexport const transformCommonAttribute = (graphicAttributes: any, changedKey: string, nextAttrs: any) => {\n if (changedKey === 'fillOpacity') {\n graphicAttributes.fillOpacity = nextAttrs.fillOpacity ?? 1;\n return ['fillOpacity'];\n }\n\n return [];\n};\n"]}
@@ -1,7 +1,5 @@
1
1
  import type { IPointLike } from '@visactor/vutils';
2
2
  import type { MarkElementItem, MarkType } from '../../types';
3
- export declare function colorEqual(c1: any, c2: any): boolean;
4
- export declare function parseXY(val: number): number;
5
3
  export declare function isValidPointsChannel(channels: string[], markType: MarkType): boolean;
6
4
  export declare function getRulePoints(nextAttrs: {
7
5
  x: number;
@@ -15,3 +13,5 @@ export declare function getRulePoints(nextAttrs: {
15
13
  export declare function getLinePoints(items?: MarkElementItem[], includeOnePoint?: boolean, lastPoints?: IPointLike[], isArea?: boolean): IPointLike[];
16
14
  export declare function getLargeRectsPoints(items?: MarkElementItem[], includeOnePoint?: boolean, lastPoints?: Float32Array | number[]): Float32Array | number[];
17
15
  export declare function getLargeSymbolsPoints(items?: MarkElementItem[], includeOnePoint?: boolean, lastPoints?: Float32Array | number[]): Float32Array | number[];
16
+ export declare function isPositionOrSizeChannel(type: string, channel: string): boolean;
17
+ export declare function isPointsMarkType(markType: MarkType): boolean;
@@ -2,17 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.getLargeSymbolsPoints = exports.getLargeRectsPoints = exports.getLinePoints = exports.getRulePoints = exports.isValidPointsChannel = exports.parseXY = exports.colorEqual = void 0;
5
+ }), exports.isPointsMarkType = exports.isPositionOrSizeChannel = exports.getLargeSymbolsPoints = exports.getLargeRectsPoints = exports.getLinePoints = exports.getRulePoints = exports.isValidPointsChannel = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils");
8
-
9
- function colorEqual(c1, c2) {
10
- return c1 === c2 || !(!c1 || !c2) && (!(0, vutils_1.isString)(c1) && (![ "gradient", "x0", "x1", "r0", "r1", "y0", "y1" ].some((key => c1[key] !== c2[key])) && (c1.stops.length === c2.stops.length && !c1.stops.some(((s, i) => s.offset !== c2.stops[i].offset || s.color !== c2.stops[i].color)))));
11
- }
12
-
13
- function parseXY(val) {
14
- return null === val ? 0 : val;
15
- }
7
+ const vutils_1 = require("@visactor/vutils"), enums_1 = require("../enums");
16
8
 
17
9
  function isValidPointsChannel(channels, markType) {
18
10
  switch (markType) {
@@ -47,13 +39,13 @@ function getLinePoints(items, includeOnePoint, lastPoints, isArea) {
47
39
  if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
48
40
  return items.some((item => isValidPointsChannel(Object.keys(item.nextAttrs), "line"))) ? items.map(((item, index) => {
49
41
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
50
- const attrs = item.nextAttrs, x = parseXY(null !== (_a = attrs.x) && void 0 !== _a ? _a : null === (_b = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _b ? void 0 : _b.x), y = parseXY(null !== (_c = attrs.y) && void 0 !== _c ? _c : null === (_d = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _d ? void 0 : _d.y), defined = null !== (_e = attrs.defined) && void 0 !== _e ? _e : null === (_f = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _f ? void 0 : _f.defined, point = {
42
+ const attrs = item.nextAttrs, x = null !== (_a = attrs.x) && void 0 !== _a ? _a : null === (_b = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _b ? void 0 : _b.x, y = null !== (_c = attrs.y) && void 0 !== _c ? _c : null === (_d = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _d ? void 0 : _d.y, defined = null !== (_e = attrs.defined) && void 0 !== _e ? _e : null === (_f = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _f ? void 0 : _f.defined, point = {
51
43
  x: x,
52
44
  y: y,
53
45
  context: item.key
54
46
  };
55
47
  if (isArea) {
56
- const x1 = parseXY(null !== (_g = attrs.x1) && void 0 !== _g ? _g : null === (_h = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _h ? void 0 : _h.x1), y1 = parseXY(null !== (_j = attrs.y1) && void 0 !== _j ? _j : null === (_k = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _k ? void 0 : _k.y1);
48
+ const x1 = null !== (_g = attrs.x1) && void 0 !== _g ? _g : null === (_h = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _h ? void 0 : _h.x1, y1 = null !== (_j = attrs.y1) && void 0 !== _j ? _j : null === (_k = null == lastPoints ? void 0 : lastPoints[index]) || void 0 === _k ? void 0 : _k.y1;
57
49
  point.x1 = x1, point.y1 = y1;
58
50
  }
59
51
  return !1 === defined && (point.defined = !1), point;
@@ -65,7 +57,7 @@ function getLargeRectsPoints(items, includeOnePoint, lastPoints) {
65
57
  const arr = new Float32Array(4 * items.length);
66
58
  return items.forEach(((item, index) => {
67
59
  var _a, _b, _c, _d;
68
- const attrs = item.nextAttrs, x = parseXY(null !== (_a = attrs.x) && void 0 !== _a ? _a : null == lastPoints ? void 0 : lastPoints[4 * index]), y = parseXY(null !== (_b = attrs.y) && void 0 !== _b ? _b : null == lastPoints ? void 0 : lastPoints[4 * index + 1]), width = parseXY(null !== (_c = attrs.width) && void 0 !== _c ? _c : null == lastPoints ? void 0 : lastPoints[4 * index + 2]), y1 = parseXY(null !== (_d = attrs.y1) && void 0 !== _d ? _d : null == lastPoints ? void 0 : lastPoints[4 * index + 3]);
60
+ const attrs = item.nextAttrs, x = null !== (_a = attrs.x) && void 0 !== _a ? _a : null == lastPoints ? void 0 : lastPoints[4 * index], y = null !== (_b = attrs.y) && void 0 !== _b ? _b : null == lastPoints ? void 0 : lastPoints[4 * index + 1], width = null !== (_c = attrs.width) && void 0 !== _c ? _c : null == lastPoints ? void 0 : lastPoints[4 * index + 2], y1 = null !== (_d = attrs.y1) && void 0 !== _d ? _d : null == lastPoints ? void 0 : lastPoints[4 * index + 3];
69
61
  arr[4 * index] = x, arr[4 * index + 1] = y, arr[4 * index + 2] = width, arr[4 * index + 3] = y1 - y;
70
62
  })), arr;
71
63
  }
@@ -75,12 +67,53 @@ function getLargeSymbolsPoints(items, includeOnePoint, lastPoints) {
75
67
  const arr = new Float32Array(2 * items.length);
76
68
  return items.forEach(((item, index) => {
77
69
  var _a, _b;
78
- const attrs = item.nextAttrs, x = parseXY(null !== (_a = attrs.x) && void 0 !== _a ? _a : null == lastPoints ? void 0 : lastPoints[2 * index]), y = parseXY(null !== (_b = attrs.y) && void 0 !== _b ? _b : null == lastPoints ? void 0 : lastPoints[2 * index + 1]);
70
+ const attrs = item.nextAttrs, x = null !== (_a = attrs.x) && void 0 !== _a ? _a : null == lastPoints ? void 0 : lastPoints[2 * index], y = null !== (_b = attrs.y) && void 0 !== _b ? _b : null == lastPoints ? void 0 : lastPoints[2 * index + 1];
79
71
  arr[2 * index] = x, arr[2 * index + 1] = y;
80
72
  })), arr;
81
73
  }
82
74
 
83
- exports.colorEqual = colorEqual, exports.parseXY = parseXY, exports.isValidPointsChannel = isValidPointsChannel,
84
- exports.getRulePoints = getRulePoints, exports.getLinePoints = getLinePoints, exports.getLargeRectsPoints = getLargeRectsPoints,
85
- exports.getLargeSymbolsPoints = getLargeSymbolsPoints;
75
+ function isPositionOrSizeChannel(type, channel) {
76
+ if ([ "x", "y", "dx", "dy" ].includes(channel)) return !0;
77
+ switch (type) {
78
+ case enums_1.GrammarMarkType.arc:
79
+ return [ "innerRadius", "outerRadius", "startAngle", "endAngle" ].includes(channel);
80
+
81
+ case enums_1.GrammarMarkType.group:
82
+ case enums_1.GrammarMarkType.rect:
83
+ case enums_1.GrammarMarkType.image:
84
+ return [ "width", "height", "y1" ].includes(channel);
85
+
86
+ case enums_1.GrammarMarkType.path:
87
+ case enums_1.GrammarMarkType.shape:
88
+ return [ "path", "customPath" ].includes(channel);
89
+
90
+ case enums_1.GrammarMarkType.line:
91
+ return "defined" === channel;
92
+
93
+ case enums_1.GrammarMarkType.area:
94
+ return [ "x1", "y1", "defined" ].includes(channel);
95
+
96
+ case enums_1.GrammarMarkType.rule:
97
+ return [ "x1", "y1" ].includes(channel);
98
+
99
+ case enums_1.GrammarMarkType.symbol:
100
+ return "size" === channel;
101
+
102
+ case enums_1.GrammarMarkType.polygon:
103
+ return "points" === channel;
104
+
105
+ case enums_1.GrammarMarkType.text:
106
+ return "text" === channel;
107
+ }
108
+ return !1;
109
+ }
110
+
111
+ function isPointsMarkType(markType) {
112
+ return [ enums_1.GrammarMarkType.line, enums_1.GrammarMarkType.area, enums_1.GrammarMarkType.largeRects, enums_1.GrammarMarkType.largeSymbols ].includes(markType);
113
+ }
114
+
115
+ exports.isValidPointsChannel = isValidPointsChannel, exports.getRulePoints = getRulePoints,
116
+ exports.getLinePoints = getLinePoints, exports.getLargeRectsPoints = getLargeRectsPoints,
117
+ exports.getLargeSymbolsPoints = getLargeSymbolsPoints, exports.isPositionOrSizeChannel = isPositionOrSizeChannel,
118
+ exports.isPointsMarkType = isPointsMarkType;
86
119
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/attributes/helpers.ts"],"names":[],"mappings":";;;AAEA,6CAA2D;AAS3D,SAAgB,UAAU,CAAC,EAAO,EAAE,EAAO;IACzC,IAAI,EAAE,KAAK,EAAE,EAAE;QACb,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,OAAO,KAAK,CAAC;KACd;IACD,IAAI,IAAA,iBAAQ,EAAC,EAAE,CAAC,EAAE;QAChB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;QACrF,OAAO,KAAK,CAAC;KACd;IACD,IACE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM;QACnC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACnG;QACA,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AApBD,gCAoBC;AAOD,SAAgB,OAAO,CAAC,GAAW;IACjC,IAAI,GAAG,KAAK,IAAI,EAAE;QAChB,OAAO,CAAC,CAAC;KACV;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AALD,0BAKC;AAED,SAAgB,oBAAoB,CAAC,QAAkB,EAAE,QAAkB;IACzE,QAAQ,QAAQ,EAAE;QAChB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACvF,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,oDAYC;AAQD,SAAgB,aAAa,CAAC,SAA2D;IACvF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC;IAEnC,IAAI,CAAC,IAAA,sBAAa,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,EAAE,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,EAAE,CAAC,EAAE;QACtF,OAAO,EAAE,CAAC;KACX;IACD,OAAO;QACL,EAAE,CAAC,EAAE,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAVD,sCAUC;AAMD,SAAgB,aAAa,CAC3B,KAAyB,EACzB,eAAyB,EACzB,UAAyB,EACzB,MAAgB;IAEhB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE;QACtE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxC,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;KACzB;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,OAAO,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,OAAO,CAAC;QAC9D,MAAM,KAAK,GAAe,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtD,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,EAAE,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,EAAE,CAAC,CAAC;YACxD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,EAAE,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,EAAE,CAAC,CAAC;YACxD,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;SACf;QAED,IAAI,OAAO,KAAK,KAAK,EAAE;YACrB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;SACvB;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAnCD,sCAmCC;AAED,SAAgB,mBAAmB,CACjC,KAAyB,EACzB,eAAyB,EACzB,UAAoC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE;QACtE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,GAAG,GAAiB,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,KAAK,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,EAAE,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAvBD,kDAuBC;AAED,SAAgB,qBAAqB,CACnC,KAAyB,EACzB,eAAyB,EACzB,UAAoC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE;QACtE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,GAAG,GAAiB,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAnBD,sDAmBC","file":"helpers.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber, isString } from '@visactor/vutils';\nimport type { MarkElementItem, MarkType } from '../../types';\n\n/**\n * 比较颜色是否相等\n * @param {*} c1\n * @param {*} c2\n * @returns\n */\nexport function colorEqual(c1: any, c2: any) {\n if (c1 === c2) {\n return true;\n }\n if (!c1 || !c2) {\n return false;\n }\n if (isString(c1)) {\n return false;\n }\n if (['gradient', 'x0', 'x1', 'r0', 'r1', 'y0', 'y1'].some(key => c1[key] !== c2[key])) {\n return false;\n }\n if (\n c1.stops.length !== c2.stops.length ||\n c1.stops.some((s: any, i: any) => s.offset !== c2.stops[i].offset || s.color !== c2.stops[i].color)\n ) {\n return false;\n }\n return true;\n}\n\n/**\n * 解析graphicItem x, y 相关默认值的处理\n * @param val\n * @returns\n */\nexport function parseXY(val: number): number {\n if (val === null) {\n return 0;\n }\n return val;\n}\n\nexport function isValidPointsChannel(channels: string[], markType: MarkType): boolean {\n switch (markType) {\n case 'line':\n return channels.some(channel => ['x', 'y', 'defined'].includes(channel));\n case 'area':\n return channels.some(channel => ['x', 'y', 'x1', 'y1', 'defined'].includes(channel));\n case 'largeRects':\n return channels.some(channel => ['x', 'y', 'width', 'y1'].includes(channel));\n case 'largeSymbols':\n return channels.some(channel => ['x', 'y'].includes(channel));\n }\n return false;\n}\n\n/**\n * 获取rule的points\n * 相对位置\n * @param {*} item\n * @returns\n */\nexport function getRulePoints(nextAttrs: { x: number; y: number; x1: number; y1: number }) {\n const { x, y, x1, y1 } = nextAttrs;\n\n if (!isValidNumber(x) || !isValidNumber(y) || !isValidNumber(x1) || !isValidNumber(y1)) {\n return [];\n }\n return [\n { x, y },\n { x: x1, y: y1 }\n ];\n}\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLinePoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: IPointLike[],\n isArea?: boolean\n) {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const hasValidChannel = items.some(item => {\n return isValidPointsChannel(Object.keys(item.nextAttrs), 'line');\n });\n if (!hasValidChannel) {\n return lastPoints ?? [];\n }\n return items.map((item, index) => {\n const attrs = item.nextAttrs;\n const x = parseXY(attrs.x ?? lastPoints?.[index]?.x);\n const y = parseXY(attrs.y ?? lastPoints?.[index]?.y);\n const defined = attrs.defined ?? lastPoints?.[index]?.defined;\n const point: IPointLike = { x, y, context: item.key };\n\n if (isArea) {\n const x1 = parseXY(attrs.x1 ?? lastPoints?.[index]?.x1);\n const y1 = parseXY(attrs.y1 ?? lastPoints?.[index]?.y1);\n point.x1 = x1;\n point.y1 = y1;\n }\n\n if (defined === false) {\n point.defined = false;\n }\n\n return point;\n });\n}\n\nexport function getLargeRectsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: Float32Array | number[]\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 4);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = parseXY(attrs.x ?? lastPoints?.[index * 4]);\n const y = parseXY(attrs.y ?? lastPoints?.[index * 4 + 1]);\n const width = parseXY(attrs.width ?? lastPoints?.[index * 4 + 2]);\n const y1 = parseXY(attrs.y1 ?? lastPoints?.[index * 4 + 3]);\n arr[index * 4] = x;\n arr[index * 4 + 1] = y;\n arr[index * 4 + 2] = width;\n arr[index * 4 + 3] = y1 - y;\n });\n\n return arr;\n}\n\nexport function getLargeSymbolsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: Float32Array | number[]\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 2);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = parseXY(attrs.x ?? lastPoints?.[index * 2]);\n const y = parseXY(attrs.y ?? lastPoints?.[index * 2 + 1]);\n arr[index * 2] = x;\n arr[index * 2 + 1] = y;\n });\n\n return arr;\n}\n"]}
1
+ {"version":3,"sources":["../src/graph/attributes/helpers.ts"],"names":[],"mappings":";;;AAEA,6CAAiD;AAEjD,oCAA2C;AAE3C,SAAgB,oBAAoB,CAAC,QAAkB,EAAE,QAAkB;IACzE,QAAQ,QAAQ,EAAE;QAChB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACvF,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;KACjE;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,oDAYC;AAQD,SAAgB,aAAa,CAAC,SAA2D;IACvF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC;IAEnC,IAAI,CAAC,IAAA,sBAAa,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,EAAE,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,EAAE,CAAC,EAAE;QACtF,OAAO,EAAE,CAAC;KACX;IACD,OAAO;QACL,EAAE,CAAC,EAAE,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC;AAVD,sCAUC;AAMD,SAAgB,aAAa,CAC3B,KAAyB,EACzB,eAAyB,EACzB,UAAyB,EACzB,MAAgB;IAEhB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE;QACtE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxC,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;KACzB;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,OAAO,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,OAAO,CAAC;QAC9D,MAAM,KAAK,GAAe,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtD,IAAI,MAAM,EAAE;YACV,MAAM,EAAE,GAAG,MAAA,KAAK,CAAC,EAAE,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,MAAA,KAAK,CAAC,EAAE,mCAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,CAAC,0CAAE,EAAE,CAAC;YAC/C,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;SACf;QAED,IAAI,OAAO,KAAK,KAAK,EAAE;YACrB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;SACvB;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAnCD,sCAmCC;AAED,SAAgB,mBAAmB,CACjC,KAAyB,EACzB,eAAyB,EACzB,UAAoC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE;QACtE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,GAAG,GAAiB,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAAK,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,EAAE,GAAG,MAAA,KAAK,CAAC,EAAE,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvB,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAvBD,kDAuBC;AAED,SAAgB,qBAAqB,CACnC,KAAyB,EACzB,eAAyB,EACzB,UAAoC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,EAAE;QACtE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,GAAG,GAAiB,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAnBD,sDAmBC;AAED,SAAgB,uBAAuB,CAAC,IAAY,EAAE,OAAe;IACnE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACZ,KAAK,uBAAe,CAAC,GAAG;YACtB,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpF,KAAK,uBAAe,CAAC,KAAK,CAAC;QAC3B,KAAK,uBAAe,CAAC,IAAI,CAAC;QAC1B,KAAK,uBAAe,CAAC,KAAK;YACxB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrD,KAAK,uBAAe,CAAC,IAAI,CAAC;QAC1B,KAAK,uBAAe,CAAC,KAAK;YACxB,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClD,KAAK,uBAAe,CAAC,IAAI;YACvB,OAAO,OAAO,KAAK,SAAS,CAAC;QAC/B,KAAK,uBAAe,CAAC,IAAI;YACvB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,KAAK,uBAAe,CAAC,IAAI;YACvB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,uBAAe,CAAC,MAAM;YACzB,OAAO,OAAO,KAAK,MAAM,CAAC;QAC5B,KAAK,uBAAe,CAAC,OAAO;YAC1B,OAAO,OAAO,KAAK,QAAQ,CAAC;QAC9B,KAAK,uBAAe,CAAC,IAAI;YACvB,OAAO,OAAO,KAAK,MAAM,CAAC;KAC7B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AA9BD,0DA8BC;AAED,SAAgB,gBAAgB,CAAC,QAAkB;IACjD,OACE,CAAC,uBAAe,CAAC,IAAI,EAAE,uBAAe,CAAC,IAAI,EAAE,uBAAe,CAAC,UAAU,EAAE,uBAAe,CAAC,YAAY,CACtG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC;AAJD,4CAIC","file":"helpers.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber } from '@visactor/vutils';\nimport type { MarkElementItem, MarkType } from '../../types';\nimport { GrammarMarkType } from '../enums';\n\nexport function isValidPointsChannel(channels: string[], markType: MarkType): boolean {\n switch (markType) {\n case 'line':\n return channels.some(channel => ['x', 'y', 'defined'].includes(channel));\n case 'area':\n return channels.some(channel => ['x', 'y', 'x1', 'y1', 'defined'].includes(channel));\n case 'largeRects':\n return channels.some(channel => ['x', 'y', 'width', 'y1'].includes(channel));\n case 'largeSymbols':\n return channels.some(channel => ['x', 'y'].includes(channel));\n }\n return false;\n}\n\n/**\n * 获取rule的points\n * 相对位置\n * @param {*} item\n * @returns\n */\nexport function getRulePoints(nextAttrs: { x: number; y: number; x1: number; y1: number }) {\n const { x, y, x1, y1 } = nextAttrs;\n\n if (!isValidNumber(x) || !isValidNumber(y) || !isValidNumber(x1) || !isValidNumber(y1)) {\n return [];\n }\n return [\n { x, y },\n { x: x1, y: y1 }\n ];\n}\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLinePoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: IPointLike[],\n isArea?: boolean\n) {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const hasValidChannel = items.some(item => {\n return isValidPointsChannel(Object.keys(item.nextAttrs), 'line');\n });\n if (!hasValidChannel) {\n return lastPoints ?? [];\n }\n return items.map((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints?.[index]?.x;\n const y = attrs.y ?? lastPoints?.[index]?.y;\n const defined = attrs.defined ?? lastPoints?.[index]?.defined;\n const point: IPointLike = { x, y, context: item.key };\n\n if (isArea) {\n const x1 = attrs.x1 ?? lastPoints?.[index]?.x1;\n const y1 = attrs.y1 ?? lastPoints?.[index]?.y1;\n point.x1 = x1;\n point.y1 = y1;\n }\n\n if (defined === false) {\n point.defined = false;\n }\n\n return point;\n });\n}\n\nexport function getLargeRectsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: Float32Array | number[]\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 4);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints?.[index * 4];\n const y = attrs.y ?? lastPoints?.[index * 4 + 1];\n const width = attrs.width ?? lastPoints?.[index * 4 + 2];\n const y1 = attrs.y1 ?? lastPoints?.[index * 4 + 3];\n arr[index * 4] = x;\n arr[index * 4 + 1] = y;\n arr[index * 4 + 2] = width;\n arr[index * 4 + 3] = y1 - y;\n });\n\n return arr;\n}\n\nexport function getLargeSymbolsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: Float32Array | number[]\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 2);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints?.[index * 2];\n const y = attrs.y ?? lastPoints?.[index * 2 + 1];\n arr[index * 2] = x;\n arr[index * 2 + 1] = y;\n });\n\n return arr;\n}\n\nexport function isPositionOrSizeChannel(type: string, channel: string) {\n if (['x', 'y', 'dx', 'dy'].includes(channel)) {\n return true;\n }\n\n switch (type) {\n case GrammarMarkType.arc:\n return ['innerRadius', 'outerRadius', 'startAngle', 'endAngle'].includes(channel);\n case GrammarMarkType.group:\n case GrammarMarkType.rect:\n case GrammarMarkType.image:\n return ['width', 'height', 'y1'].includes(channel);\n case GrammarMarkType.path:\n case GrammarMarkType.shape:\n return ['path', 'customPath'].includes(channel);\n case GrammarMarkType.line:\n return channel === 'defined';\n case GrammarMarkType.area:\n return ['x1', 'y1', 'defined'].includes(channel);\n case GrammarMarkType.rule:\n return ['x1', 'y1'].includes(channel);\n case GrammarMarkType.symbol:\n return channel === 'size';\n case GrammarMarkType.polygon:\n return channel === 'points';\n case GrammarMarkType.text:\n return channel === 'text';\n }\n\n return false;\n}\n\nexport function isPointsMarkType(markType: MarkType): boolean {\n return (\n [GrammarMarkType.line, GrammarMarkType.area, GrammarMarkType.largeRects, GrammarMarkType.largeSymbols] as MarkType[]\n ).includes(markType);\n}\n"]}
@@ -1,10 +1,4 @@
1
- import { transformCommonAttribute } from './common';
2
- import type { AttributeTransform, IElement, MarkType } from '../../types';
3
- export { transformCommonAttribute };
4
- export declare function isPointsMarkType(markType: MarkType): boolean;
5
- export declare const transformsByType: Record<string, AttributeTransform[]>;
6
- export declare function cloneTransformAttributes(markType: MarkType, attributes: any): any;
7
- export declare const transformAttributes: (markType: MarkType | AttributeTransform[], nextAttrs: any, element: IElement, markName?: string) => {};
8
- export declare function getLineSegmentConfigs(items: any[], points: any[], element?: IElement): any[];
9
- export declare function getLinePointsFromSegments(segments: any[]): any;
10
- export declare function isPositionOrSizeChannel(type: string, channel: string): boolean;
1
+ export * from './common';
2
+ export * from './helpers';
3
+ export * from './line';
4
+ export * from './transform';
@@ -1,257 +1,22 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: !0
5
- }), exports.isPositionOrSizeChannel = exports.getLinePointsFromSegments = exports.getLineSegmentConfigs = exports.transformAttributes = exports.cloneTransformAttributes = exports.transformsByType = exports.isPointsMarkType = exports.transformCommonAttribute = void 0;
6
-
7
- const vutils_1 = require("@visactor/vutils"), common_1 = require("./common");
8
-
9
- Object.defineProperty(exports, "transformCommonAttribute", {
10
- enumerable: !0,
11
- get: function() {
12
- return common_1.transformCommonAttribute;
13
- }
14
- });
15
-
16
- const helpers_1 = require("./helpers"), enums_1 = require("../enums");
17
-
18
- function isPointsMarkType(markType) {
19
- return [ enums_1.GrammarMarkType.line, enums_1.GrammarMarkType.area, enums_1.GrammarMarkType.largeRects, enums_1.GrammarMarkType.largeSymbols ].includes(markType);
20
- }
21
-
22
- function storeOriginAttributes(name, channels, graphicAttributes, nextAttrs, element, markName) {
23
- var _a;
24
- const prevStoredAttrs = null !== (_a = element.getGraphicAttribute(name, !1, markName)) && void 0 !== _a ? _a : {}, storedAttrs = {};
25
- return channels.forEach((channel => {
26
- var _a;
27
- storedAttrs[channel] = null !== (_a = nextAttrs[channel]) && void 0 !== _a ? _a : prevStoredAttrs[channel];
28
- })), graphicAttributes[name] = storedAttrs, storedAttrs;
29
- }
30
-
31
- function cloneTransformAttributes(markType, attributes) {
32
- var _a;
33
- return (null !== (_a = exports.transformsByType[markType]) && void 0 !== _a ? _a : []).reduce(((clonedAttributes, transform) => (transform.channels.forEach((channel => {
34
- (0, vutils_1.has)(attributes, channel) && (clonedAttributes[channel] = attributes[channel]);
35
- })), clonedAttributes)), {});
36
- }
37
-
38
- exports.isPointsMarkType = isPointsMarkType, exports.transformsByType = {
39
- [enums_1.GrammarMarkType.largeRects]: [ {
40
- channels: [ "x", "y", "y1", "x1", "width", "height" ],
41
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
42
- graphicAttributes.x = 0, graphicAttributes.y = 0;
43
- }
44
- } ],
45
- [enums_1.GrammarMarkType.largeSymbols]: [ {
46
- channels: [ "x", "y", "size" ],
47
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
48
- graphicAttributes.x = 0, graphicAttributes.y = 0;
49
- }
50
- } ],
51
- [enums_1.GrammarMarkType.area]: [ {
52
- channels: [ "x", "y", "x1", "y1" ],
53
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
54
- graphicAttributes.x = 0, graphicAttributes.y = 0, graphicAttributes.x1 = 0, graphicAttributes.y1 = 0;
55
- }
56
- } ],
57
- [enums_1.GrammarMarkType.line]: [ {
58
- channels: [ "x", "y", "defined", "enableSegments" ],
59
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
60
- graphicAttributes.x = 0, graphicAttributes.y = 0;
3
+ var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
4
+ void 0 === k2 && (k2 = k);
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ desc && !("get" in desc ? !m.__esModule : desc.writable || desc.configurable) || (desc = {
7
+ enumerable: !0,
8
+ get: function() {
9
+ return m[k];
61
10
  }
62
- } ],
63
- [enums_1.GrammarMarkType.rect]: [ {
64
- channels: [ "x", "y", "x1", "y1", "width", "height" ],
65
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
66
- var _a, _b, _c, _d, _e, _f, _g, _h;
67
- (0, vutils_1.isValidNumber)(nextAttrs.width) || !(0, vutils_1.isValidNumber)(nextAttrs.x1) && (0,
68
- vutils_1.isValidNumber)(storedAttrs.width) ? (graphicAttributes.x = Math.min(null !== (_a = storedAttrs.x) && void 0 !== _a ? _a : 0, null !== (_b = storedAttrs.x1) && void 0 !== _b ? _b : 1 / 0),
69
- graphicAttributes.width = storedAttrs.width) : (0, vutils_1.isValidNumber)(nextAttrs.x1) || !(0,
70
- vutils_1.isValidNumber)(nextAttrs.width) && (0, vutils_1.isValidNumber)(storedAttrs.x1) ? (graphicAttributes.x = Math.min(storedAttrs.x, storedAttrs.x1),
71
- graphicAttributes.width = Math.abs(storedAttrs.x1 - storedAttrs.x)) : (graphicAttributes.x = Math.min(null !== (_c = storedAttrs.x) && void 0 !== _c ? _c : 0, null !== (_d = storedAttrs.x1) && void 0 !== _d ? _d : 1 / 0),
72
- graphicAttributes.width = storedAttrs.width), (0, vutils_1.isValidNumber)(nextAttrs.height) || !(0,
73
- vutils_1.isValidNumber)(nextAttrs.y1) && (0, vutils_1.isValidNumber)(storedAttrs.height) ? (graphicAttributes.y = Math.min(null !== (_e = storedAttrs.y) && void 0 !== _e ? _e : 0, null !== (_f = storedAttrs.y1) && void 0 !== _f ? _f : 1 / 0),
74
- graphicAttributes.height = storedAttrs.height) : (0, vutils_1.isValidNumber)(nextAttrs.y1) || !(0,
75
- vutils_1.isValidNumber)(nextAttrs.height) && (0, vutils_1.isValidNumber)(storedAttrs.y1) ? (graphicAttributes.y = Math.min(storedAttrs.y, storedAttrs.y1),
76
- graphicAttributes.height = Math.abs(storedAttrs.y1 - storedAttrs.y)) : (graphicAttributes.y = Math.min(null !== (_g = storedAttrs.y) && void 0 !== _g ? _g : 0, null !== (_h = storedAttrs.y1) && void 0 !== _h ? _h : 1 / 0),
77
- graphicAttributes.height = storedAttrs.height);
78
- },
79
- storedAttrs: "sizeAttrs"
80
- } ],
81
- rect3d: [ {
82
- channels: [ "x", "y", "z", "x1", "y1", "width", "height", "length" ],
83
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
84
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
85
- (0, vutils_1.isValidNumber)(nextAttrs.width) || !(0, vutils_1.isValidNumber)(nextAttrs.x1) && (0,
86
- vutils_1.isValidNumber)(storedAttrs.width) ? (graphicAttributes.x = Math.min(null !== (_a = storedAttrs.x) && void 0 !== _a ? _a : 0, null !== (_b = storedAttrs.x1) && void 0 !== _b ? _b : 1 / 0),
87
- graphicAttributes.width = storedAttrs.width) : (0, vutils_1.isValidNumber)(nextAttrs.x1) || !(0,
88
- vutils_1.isValidNumber)(nextAttrs.width) && (0, vutils_1.isValidNumber)(storedAttrs.x1) ? (graphicAttributes.x = Math.min(storedAttrs.x, storedAttrs.x1),
89
- graphicAttributes.width = Math.abs(storedAttrs.x1 - storedAttrs.x)) : (graphicAttributes.x = Math.min(null !== (_c = storedAttrs.x) && void 0 !== _c ? _c : 0, null !== (_d = storedAttrs.x1) && void 0 !== _d ? _d : 1 / 0),
90
- graphicAttributes.width = storedAttrs.width), (0, vutils_1.isValidNumber)(nextAttrs.height) || !(0,
91
- vutils_1.isValidNumber)(nextAttrs.y1) && (0, vutils_1.isValidNumber)(storedAttrs.height) ? (graphicAttributes.y = Math.min(null !== (_e = storedAttrs.y) && void 0 !== _e ? _e : 0, null !== (_f = storedAttrs.y1) && void 0 !== _f ? _f : 1 / 0),
92
- graphicAttributes.height = storedAttrs.height) : (0, vutils_1.isValidNumber)(nextAttrs.y1) || !(0,
93
- vutils_1.isValidNumber)(nextAttrs.height) && (0, vutils_1.isValidNumber)(storedAttrs.y1) ? (graphicAttributes.y = Math.min(storedAttrs.y, storedAttrs.y1),
94
- graphicAttributes.height = Math.abs(storedAttrs.y1 - storedAttrs.y)) : (graphicAttributes.y = Math.min(null !== (_g = storedAttrs.y) && void 0 !== _g ? _g : 0, null !== (_h = storedAttrs.y1) && void 0 !== _h ? _h : 1 / 0),
95
- graphicAttributes.height = storedAttrs.height), (0, vutils_1.isValidNumber)(nextAttrs.length) || !(0,
96
- vutils_1.isValidNumber)(nextAttrs.z1) && (0, vutils_1.isValidNumber)(storedAttrs.length) ? (graphicAttributes.z = Math.min(null !== (_j = storedAttrs.z) && void 0 !== _j ? _j : 0, null !== (_k = storedAttrs.z1) && void 0 !== _k ? _k : 1 / 0),
97
- graphicAttributes.length = storedAttrs.length) : (0, vutils_1.isValidNumber)(nextAttrs.z1) || !(0,
98
- vutils_1.isValidNumber)(nextAttrs.length) && (0, vutils_1.isValidNumber)(storedAttrs.z1) ? (graphicAttributes.z = Math.min(storedAttrs.z, storedAttrs.z1),
99
- graphicAttributes.length = Math.abs(storedAttrs.z1 - storedAttrs.z)) : (graphicAttributes.z = Math.min(null !== (_l = storedAttrs.z) && void 0 !== _l ? _l : 0, null !== (_m = storedAttrs.z1) && void 0 !== _m ? _m : 1 / 0),
100
- graphicAttributes.length = storedAttrs.length);
101
- },
102
- storedAttrs: "sizeAttrs"
103
- } ],
104
- [enums_1.GrammarMarkType.text]: [ {
105
- channels: [ "text", "limit", "autoLimit", "maxLineWidth" ],
106
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
107
- var _a, _b, _c, _d;
108
- const limit = null !== (_a = storedAttrs.limit) && void 0 !== _a ? _a : 1 / 0, autoLimit = null !== (_b = storedAttrs.autoLimit) && void 0 !== _b ? _b : 1 / 0, maxWidth = Math.min(limit, autoLimit), isTextConfig = (0,
109
- vutils_1.isPlainObject)(storedAttrs.text) && !(0, vutils_1.isNil)(storedAttrs.text.text), text = isTextConfig ? storedAttrs.text.text : storedAttrs.text;
110
- Array.isArray(text), graphicAttributes.maxLineWidth = maxWidth === 1 / 0 ? storedAttrs.maxLineWidth : maxWidth,
111
- isTextConfig ? "html" === storedAttrs.text.type ? (graphicAttributes.html = {
112
- dom: text,
113
- width: null !== (_c = nextAttrs.width) && void 0 !== _c ? _c : maxWidth,
114
- height: null !== (_d = nextAttrs.height) && void 0 !== _d ? _d : nextAttrs.fontSize,
115
- anchorType: "position"
116
- }, graphicAttributes.text = "") : "rich" === storedAttrs.text.type ? graphicAttributes.textConfig = text : graphicAttributes.text = text : graphicAttributes.text = text;
117
- },
118
- storedAttrs: "limitAttrs"
119
- } ],
120
- [enums_1.GrammarMarkType.rule]: [ {
121
- channels: [ "x", "y", "x1", "y1" ],
122
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
123
- const points = (0, helpers_1.getRulePoints)(storedAttrs);
124
- graphicAttributes.points = points, graphicAttributes.x = 0, graphicAttributes.y = 0;
125
- },
126
- storedAttrs: "pointAttrs"
127
- } ],
128
- [enums_1.GrammarMarkType.symbol]: [ {
129
- channels: [ "shape", "symbolType" ],
130
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
131
- var _a;
132
- graphicAttributes.symbolType = null !== (_a = nextAttrs.shape) && void 0 !== _a ? _a : nextAttrs.symbolType;
133
- }
134
- }, {
135
- channels: [ "image", "fill", "background" ],
136
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
137
- nextAttrs.image ? (graphicAttributes.background = nextAttrs.image, graphicAttributes.fill = !1) : storedAttrs.image ? (graphicAttributes.background = storedAttrs.image,
138
- graphicAttributes.fill = !1) : (graphicAttributes.fill = storedAttrs.fill, graphicAttributes.background = storedAttrs.background);
139
- },
140
- storedAttrs: "imageAttrs"
141
- } ],
142
- [enums_1.GrammarMarkType.richtext]: [ {
143
- channels: [ "text", "textConfig" ],
144
- transform: (graphicAttributes, nextAttrs, storedAttrs) => {
145
- var _a, _b, _c, _d;
146
- graphicAttributes.text = null, "rich" === (null === (_a = nextAttrs.text) || void 0 === _a ? void 0 : _a.type) ? graphicAttributes.textConfig = nextAttrs.text.text : "html" === (null === (_b = nextAttrs.textConfig) || void 0 === _b ? void 0 : _b.type) ? (graphicAttributes.html = {
147
- dom: nextAttrs.textConfig.text,
148
- width: nextAttrs.width,
149
- height: null !== (_c = nextAttrs.height) && void 0 !== _c ? _c : nextAttrs.fontSize,
150
- anchorType: "position"
151
- }, graphicAttributes.text = "") : "rich" === (null === (_d = nextAttrs.textConfig) || void 0 === _d ? void 0 : _d.type) ? graphicAttributes.textConfig = nextAttrs.textConfig.text : graphicAttributes.textConfig = nextAttrs.textConfig;
152
- }
153
- } ]
154
- }, exports.cloneTransformAttributes = cloneTransformAttributes;
155
-
156
- const transformAttributes = (markType, nextAttrs, element, markName) => {
157
- const graphicAttributes = {}, changedKeys = nextAttrs ? Object.keys(nextAttrs) : [], transforms = (0,
158
- vutils_1.isString)(markType) ? exports.transformsByType[markType] : markType;
159
- if (null == transforms ? void 0 : transforms.length) {
160
- const tags = [];
161
- changedKeys.forEach((key => {
162
- let isTransformed = !1;
163
- transforms.forEach(((transform, index) => {
164
- if (transform.channels.includes(key)) {
165
- if (!tags[index]) if (transform.storedAttrs) {
166
- const storedAttrs = storeOriginAttributes(transform.storedAttrs, transform.channels, graphicAttributes, nextAttrs, element, markName);
167
- transform.transform(graphicAttributes, nextAttrs, storedAttrs);
168
- } else transform.transform(graphicAttributes, nextAttrs, null);
169
- tags[index] = !0, isTransformed = !0;
170
- }
171
- })), isTransformed || (common_1.commonAttributes.includes(key) ? (0, common_1.transformCommonAttribute)(graphicAttributes, key, nextAttrs) : graphicAttributes[key] = nextAttrs[key]);
172
- }));
173
- } else changedKeys.forEach((key => {
174
- common_1.commonAttributes.includes(key) ? (0, common_1.transformCommonAttribute)(graphicAttributes, key, nextAttrs) : graphicAttributes[key] = nextAttrs[key];
175
- }));
176
- return graphicAttributes;
11
+ }), Object.defineProperty(o, k2, desc);
12
+ } : function(o, m, k, k2) {
13
+ void 0 === k2 && (k2 = k), o[k2] = m[k];
14
+ }), __exportStar = this && this.__exportStar || function(m, exports) {
15
+ for (var p in m) "default" === p || Object.prototype.hasOwnProperty.call(exports, p) || __createBinding(exports, m, p);
177
16
  };
178
17
 
179
- exports.transformAttributes = transformAttributes;
180
-
181
- const isStopsEqual = (prev, next) => {
182
- var _a, _b;
183
- if (prev === next) return !0;
184
- const prevLength = null !== (_a = prev && prev.length) && void 0 !== _a ? _a : 0;
185
- return prevLength === (null !== (_b = next && next.length) && void 0 !== _b ? _b : 0) && 0 !== prevLength && prev.every(((prevEntry, prevIndex) => !prevEntry && !next[prevIndex] || prevEntry && next[prevIndex] && prevEntry.color === next[prevIndex].color && prevEntry.offset === next[prevIndex].offset));
186
- }, isColorAttrEqual = (prev, next) => {
187
- if (prev === next) return !0;
188
- if (typeof prev != typeof next) return !1;
189
- if ((0, vutils_1.isString)(prev)) return !1;
190
- if (prev.gradient !== next.gradient) return !1;
191
- const prevKeys = Object.keys(prev), nextKeys = Object.keys(next);
192
- return prevKeys.length === nextKeys.length && prevKeys.every((key => "stops" === key ? isStopsEqual(prev[key], next[key]) : prev[key] === next[key]));
193
- }, isLineDashEqual = (prev, next) => prev.length === next.length && prev.join("-") === next.join("-"), isSegmentAttrEqual = (prev, next, key) => !(!(0,
194
- vutils_1.isNil)(prev) || !(0, vutils_1.isNil)(next)) || !(0, vutils_1.isNil)(prev) && (!(0,
195
- vutils_1.isNil)(next) && ("lineDash" === key ? isLineDashEqual(prev, next) : "stroke" === key || "fill" === key ? isColorAttrEqual(prev, next) : prev === next)), fillAttrs = [ "fill", "fillOpacity", "background", "texture", "texturePadding", "textureSize", "textureColor" ], strokeAttrs = [ "stroke", "strokeOpacity", "lineDash", "lineDashOffset", "lineCap", "lineJoin", "lineWidth", "miterLimit" ], areaAttrs = fillAttrs.concat(strokeAttrs);
196
-
197
- function getLineSegmentConfigs(items, points, element) {
198
- var _a;
199
- if (!items || items.length <= 1) return null;
200
- const checkAttributes = "area" === (null === (_a = null == element ? void 0 : element.mark) || void 0 === _a ? void 0 : _a.markType) ? areaAttrs : strokeAttrs, segments = [];
201
- let prevSegmentAttrs = null;
202
- return items.forEach(((item, index) => {
203
- prevSegmentAttrs && checkAttributes.every((key => isSegmentAttrEqual(prevSegmentAttrs[key], item[key], key))) || (segments.length && (segments[segments.length - 1].endIndex = index),
204
- prevSegmentAttrs = item, segments.push({
205
- attrs: prevSegmentAttrs,
206
- startIndex: index
207
- }));
208
- })), segments.length >= 2 ? segments.map((entry => {
209
- const res = (0, exports.transformAttributes)(enums_1.GrammarMarkType.line, entry.attrs, element);
210
- return res.points = points.slice(entry.startIndex, (0, vutils_1.isNil)(entry.endIndex) ? points.length : entry.endIndex),
211
- res;
212
- })) : null;
213
- }
214
-
215
- function getLinePointsFromSegments(segments) {
216
- return segments ? segments.reduce(((points, segment) => points.concat(segment.points)), []) : null;
217
- }
218
-
219
- function isPositionOrSizeChannel(type, channel) {
220
- if ([ "x", "y", "dx", "dy" ].includes(channel)) return !0;
221
- switch (type) {
222
- case enums_1.GrammarMarkType.arc:
223
- return [ "innerRadius", "outerRadius", "startAngle", "endAngle" ].includes(channel);
224
-
225
- case enums_1.GrammarMarkType.group:
226
- case enums_1.GrammarMarkType.rect:
227
- case enums_1.GrammarMarkType.image:
228
- return [ "width", "height", "y1" ].includes(channel);
229
-
230
- case enums_1.GrammarMarkType.path:
231
- case enums_1.GrammarMarkType.shape:
232
- return [ "path", "customPath" ].includes(channel);
233
-
234
- case enums_1.GrammarMarkType.line:
235
- return "defined" === channel;
236
-
237
- case enums_1.GrammarMarkType.area:
238
- return [ "x1", "y1", "defined" ].includes(channel);
239
-
240
- case enums_1.GrammarMarkType.rule:
241
- return [ "x1", "y1" ].includes(channel);
242
-
243
- case enums_1.GrammarMarkType.symbol:
244
- return "size" === channel;
245
-
246
- case enums_1.GrammarMarkType.polygon:
247
- return "points" === channel;
248
-
249
- case enums_1.GrammarMarkType.text:
250
- return "text" === channel;
251
- }
252
- return !1;
253
- }
254
-
255
- exports.getLineSegmentConfigs = getLineSegmentConfigs, exports.getLinePointsFromSegments = getLinePointsFromSegments,
256
- exports.isPositionOrSizeChannel = isPositionOrSizeChannel;
18
+ Object.defineProperty(exports, "__esModule", {
19
+ value: !0
20
+ }), __exportStar(require("./common"), exports), __exportStar(require("./helpers"), exports),
21
+ __exportStar(require("./line"), exports), __exportStar(require("./transform"), exports);
257
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/attributes/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { has, isNil, isPlainObject, isString, isValidNumber } from '@visactor/vutils';\nimport type { IColor, IColorStop } from '@visactor/vrender-core';\nimport { transformCommonAttribute, commonAttributes } from './common';\nimport { getRulePoints } from './helpers';\nimport { GrammarMarkType } from '../enums';\nimport type { AttributeTransform, IElement, IGlyphElement, MarkType } from '../../types';\n\nexport { transformCommonAttribute };\n\nexport function isPointsMarkType(markType: MarkType): boolean {\n return (\n [GrammarMarkType.line, GrammarMarkType.area, GrammarMarkType.largeRects, GrammarMarkType.largeSymbols] as MarkType[]\n ).includes(markType);\n}\n\nfunction storeOriginAttributes(\n name: string,\n channels: string[],\n graphicAttributes: any,\n nextAttrs: any,\n element: IElement,\n markName: string\n): Record<string, any> {\n const prevStoredAttrs = (element as IGlyphElement).getGraphicAttribute(name, false, markName) ?? {};\n const storedAttrs = {};\n channels.forEach(channel => {\n storedAttrs[channel] = nextAttrs[channel] ?? prevStoredAttrs[channel];\n });\n graphicAttributes[name] = storedAttrs;\n return storedAttrs;\n}\n\nexport const transformsByType: Record<string, AttributeTransform[]> = {\n [GrammarMarkType.largeRects]: [\n {\n channels: ['x', 'y', 'y1', 'x1', 'width', 'height'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n }\n }\n ],\n [GrammarMarkType.largeSymbols]: [\n {\n channels: ['x', 'y', 'size'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n }\n }\n ],\n [GrammarMarkType.area]: [\n {\n channels: ['x', 'y', 'x1', 'y1'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n graphicAttributes.x1 = 0;\n graphicAttributes.y1 = 0;\n }\n }\n ],\n [GrammarMarkType.line]: [\n {\n channels: ['x', 'y', 'defined', 'enableSegments'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n }\n }\n ],\n [GrammarMarkType.rect]: [\n {\n channels: ['x', 'y', 'x1', 'y1', 'width', 'height'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n // width\n if (isValidNumber(nextAttrs.width) || (!isValidNumber(nextAttrs.x1) && isValidNumber(storedAttrs.width))) {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n } else if (isValidNumber(nextAttrs.x1) || (!isValidNumber(nextAttrs.width) && isValidNumber(storedAttrs.x1))) {\n graphicAttributes.x = Math.min(storedAttrs.x, storedAttrs.x1);\n graphicAttributes.width = Math.abs(storedAttrs.x1 - storedAttrs.x);\n } else {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n }\n\n // height\n if (isValidNumber(nextAttrs.height) || (!isValidNumber(nextAttrs.y1) && isValidNumber(storedAttrs.height))) {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n } else if (isValidNumber(nextAttrs.y1) || (!isValidNumber(nextAttrs.height) && isValidNumber(storedAttrs.y1))) {\n graphicAttributes.y = Math.min(storedAttrs.y, storedAttrs.y1);\n graphicAttributes.height = Math.abs(storedAttrs.y1 - storedAttrs.y);\n } else {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n }\n },\n storedAttrs: 'sizeAttrs'\n }\n ],\n rect3d: [\n {\n channels: ['x', 'y', 'z', 'x1', 'y1', 'width', 'height', 'length'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n // width\n if (isValidNumber(nextAttrs.width) || (!isValidNumber(nextAttrs.x1) && isValidNumber(storedAttrs.width))) {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n } else if (isValidNumber(nextAttrs.x1) || (!isValidNumber(nextAttrs.width) && isValidNumber(storedAttrs.x1))) {\n graphicAttributes.x = Math.min(storedAttrs.x, storedAttrs.x1);\n graphicAttributes.width = Math.abs(storedAttrs.x1 - storedAttrs.x);\n } else {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n }\n\n // height\n if (isValidNumber(nextAttrs.height) || (!isValidNumber(nextAttrs.y1) && isValidNumber(storedAttrs.height))) {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n } else if (isValidNumber(nextAttrs.y1) || (!isValidNumber(nextAttrs.height) && isValidNumber(storedAttrs.y1))) {\n graphicAttributes.y = Math.min(storedAttrs.y, storedAttrs.y1);\n graphicAttributes.height = Math.abs(storedAttrs.y1 - storedAttrs.y);\n } else {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n }\n\n // length\n if (isValidNumber(nextAttrs.length) || (!isValidNumber(nextAttrs.z1) && isValidNumber(storedAttrs.length))) {\n graphicAttributes.z = Math.min(storedAttrs.z ?? 0, storedAttrs.z1 ?? Infinity);\n graphicAttributes.length = storedAttrs.length;\n } else if (isValidNumber(nextAttrs.z1) || (!isValidNumber(nextAttrs.length) && isValidNumber(storedAttrs.z1))) {\n graphicAttributes.z = Math.min(storedAttrs.z, storedAttrs.z1);\n graphicAttributes.length = Math.abs(storedAttrs.z1 - storedAttrs.z);\n } else {\n graphicAttributes.z = Math.min(storedAttrs.z ?? 0, storedAttrs.z1 ?? Infinity);\n graphicAttributes.length = storedAttrs.length;\n }\n },\n storedAttrs: 'sizeAttrs'\n }\n ],\n [GrammarMarkType.text]: [\n {\n channels: ['text', 'limit', 'autoLimit', 'maxLineWidth'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n const limit = storedAttrs.limit ?? Infinity;\n const autoLimit = storedAttrs.autoLimit ?? Infinity;\n const maxWidth = Math.min(limit, autoLimit);\n const isTextConfig = isPlainObject(storedAttrs.text) && !isNil(storedAttrs.text.text);\n const text = isTextConfig ? storedAttrs.text.text : storedAttrs.text;\n\n if (Array.isArray(text)) {\n graphicAttributes.maxLineWidth = maxWidth === Infinity ? storedAttrs.maxLineWidth : maxWidth;\n } else {\n graphicAttributes.maxLineWidth = maxWidth === Infinity ? storedAttrs.maxLineWidth : maxWidth;\n }\n\n if (isTextConfig) {\n if (storedAttrs.text.type === 'html') {\n graphicAttributes.html = {\n dom: text,\n width: nextAttrs.width ?? maxWidth,\n height: nextAttrs.height ?? nextAttrs.fontSize,\n anchorType: 'position'\n };\n graphicAttributes.text = '';\n } else if (storedAttrs.text.type === 'rich') {\n graphicAttributes.textConfig = text;\n } else {\n graphicAttributes.text = text;\n }\n } else {\n graphicAttributes.text = text;\n }\n },\n storedAttrs: 'limitAttrs'\n }\n ],\n [GrammarMarkType.rule]: [\n {\n channels: ['x', 'y', 'x1', 'y1'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n const points = getRulePoints(storedAttrs);\n graphicAttributes.points = points;\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n },\n storedAttrs: 'pointAttrs'\n }\n ],\n [GrammarMarkType.symbol]: [\n {\n channels: ['shape', 'symbolType'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.symbolType = nextAttrs.shape ?? nextAttrs.symbolType;\n }\n },\n {\n channels: ['image', 'fill', 'background'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n if (nextAttrs.image) {\n graphicAttributes.background = nextAttrs.image;\n graphicAttributes.fill = false;\n } else if (storedAttrs.image) {\n graphicAttributes.background = storedAttrs.image;\n graphicAttributes.fill = false;\n } else {\n graphicAttributes.fill = storedAttrs.fill;\n graphicAttributes.background = storedAttrs.background;\n }\n },\n storedAttrs: 'imageAttrs'\n }\n ],\n [GrammarMarkType.richtext]: [\n {\n channels: ['text', 'textConfig'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.text = null;\n\n if (nextAttrs.text?.type === 'rich') {\n graphicAttributes.textConfig = nextAttrs.text.text;\n } else if (nextAttrs.textConfig?.type === 'html') {\n graphicAttributes.html = {\n dom: nextAttrs.textConfig.text,\n width: nextAttrs.width,\n height: nextAttrs.height ?? nextAttrs.fontSize,\n anchorType: 'position'\n };\n graphicAttributes.text = '';\n } else if (nextAttrs.textConfig?.type === 'rich') {\n graphicAttributes.textConfig = nextAttrs.textConfig.text;\n } else {\n graphicAttributes.textConfig = nextAttrs.textConfig;\n }\n }\n }\n ]\n};\n\nexport function cloneTransformAttributes(markType: MarkType, attributes: any) {\n const transforms = transformsByType[markType] ?? [];\n return transforms.reduce((clonedAttributes, transform) => {\n transform.channels.forEach(channel => {\n if (has(attributes, channel)) {\n clonedAttributes[channel] = attributes[channel];\n }\n });\n return clonedAttributes;\n }, {} as any);\n}\n\nexport const transformAttributes = (\n markType: MarkType | AttributeTransform[],\n nextAttrs: any,\n element: IElement,\n markName?: string\n) => {\n const graphicAttributes = {};\n const changedKeys = nextAttrs ? Object.keys(nextAttrs) : [];\n const transforms: AttributeTransform[] = isString(markType)\n ? transformsByType[markType]\n : (markType as AttributeTransform[]);\n\n if (transforms?.length) {\n const tags: boolean[] = [];\n\n changedKeys.forEach(key => {\n let isTransformed = false;\n\n transforms.forEach((transform, index) => {\n if (transform.channels.includes(key)) {\n if (!tags[index]) {\n if (transform.storedAttrs) {\n const storedAttrs = storeOriginAttributes(\n transform.storedAttrs,\n transform.channels,\n graphicAttributes,\n nextAttrs,\n element,\n markName\n );\n transform.transform(graphicAttributes, nextAttrs, storedAttrs);\n } else {\n transform.transform(graphicAttributes, nextAttrs, null);\n }\n }\n // 记录一下,不重复处理\n tags[index] = true;\n isTransformed = true;\n }\n });\n\n if (!isTransformed) {\n if (commonAttributes.includes(key)) {\n transformCommonAttribute(graphicAttributes, key, nextAttrs);\n } else {\n graphicAttributes[key] = nextAttrs[key];\n }\n }\n });\n } else {\n changedKeys.forEach(key => {\n if (commonAttributes.includes(key)) {\n transformCommonAttribute(graphicAttributes, key, nextAttrs);\n } else {\n graphicAttributes[key] = nextAttrs[key];\n }\n });\n }\n\n return graphicAttributes;\n};\n\nconst isStopsEqual = (prev: IColorStop[], next: IColorStop[]) => {\n if (prev === next) {\n return true;\n }\n const prevLength = (prev && prev.length) ?? 0;\n const nextLength = (next && next.length) ?? 0;\n\n if (prevLength !== nextLength || prevLength === 0) {\n return false;\n }\n\n return prev.every((prevEntry, prevIndex) => {\n return (\n (!prevEntry && !next[prevIndex]) ||\n (prevEntry &&\n next[prevIndex] &&\n prevEntry.color === next[prevIndex].color &&\n prevEntry.offset === next[prevIndex].offset)\n );\n });\n};\n\nconst isColorAttrEqual = (prev: IColor, next: IColor) => {\n if (prev === next) {\n return true;\n }\n\n if (typeof prev !== typeof next) {\n return false;\n }\n\n if (isString(prev)) {\n return false;\n }\n\n if (prev.gradient !== (next as any).gradient) {\n return false;\n }\n\n const prevKeys = Object.keys(prev);\n const nextKeys = Object.keys(next);\n\n if (prevKeys.length !== nextKeys.length) {\n return false;\n }\n\n return prevKeys.every(key => {\n if (key === 'stops') {\n return isStopsEqual(prev[key], next[key]);\n }\n\n return prev[key] === next[key];\n });\n};\n\nconst isLineDashEqual = (prev: number[], next: number[]) => {\n if (prev.length !== next.length) {\n return false;\n }\n\n if (prev.join('-') === next.join('-')) {\n return true;\n }\n\n return false;\n};\n\nconst isSegmentAttrEqual = (prev: any, next: any, key: string) => {\n if (isNil(prev) && isNil(next)) {\n return true;\n }\n\n if (isNil(prev)) {\n return false;\n }\n\n if (isNil(next)) {\n return false;\n }\n\n if (key === 'lineDash') {\n return isLineDashEqual(prev, next);\n }\n\n if (key === 'stroke' || key === 'fill') {\n return isColorAttrEqual(prev, next);\n }\n\n return prev === next;\n};\n\nconst fillAttrs = ['fill', 'fillOpacity', 'background', 'texture', 'texturePadding', 'textureSize', 'textureColor'];\nconst strokeAttrs = [\n 'stroke',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit'\n];\nconst areaAttrs = fillAttrs.concat(strokeAttrs);\n\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLineSegmentConfigs(items: any[], points: any[], element?: IElement) {\n if (!items || items.length <= 1) {\n return null;\n }\n\n const checkAttributes = element?.mark?.markType === 'area' ? areaAttrs : strokeAttrs;\n\n const segments: any[] = [];\n let prevSegmentAttrs: any = null;\n\n items.forEach((item, index) => {\n if (\n !prevSegmentAttrs ||\n !checkAttributes.every(key => {\n return isSegmentAttrEqual(prevSegmentAttrs[key], item[key], key);\n })\n ) {\n if (segments.length) {\n segments[segments.length - 1].endIndex = index;\n }\n\n prevSegmentAttrs = item;\n segments.push({\n attrs: prevSegmentAttrs,\n startIndex: index\n });\n }\n });\n\n if (segments.length >= 2) {\n return segments.map(entry => {\n const res = transformAttributes(GrammarMarkType.line, entry.attrs, element) as any;\n\n res.points = points.slice(entry.startIndex, isNil(entry.endIndex) ? points.length : entry.endIndex);\n return res;\n });\n }\n\n return null;\n}\n\nexport function getLinePointsFromSegments(segments: any[]) {\n if (!segments) {\n return null;\n }\n return segments.reduce((points, segment) => {\n return points.concat(segment.points);\n }, []);\n}\n\nexport function isPositionOrSizeChannel(type: string, channel: string) {\n if (['x', 'y', 'dx', 'dy'].includes(channel)) {\n return true;\n }\n\n switch (type) {\n case GrammarMarkType.arc:\n return ['innerRadius', 'outerRadius', 'startAngle', 'endAngle'].includes(channel);\n case GrammarMarkType.group:\n case GrammarMarkType.rect:\n case GrammarMarkType.image:\n return ['width', 'height', 'y1'].includes(channel);\n case GrammarMarkType.path:\n case GrammarMarkType.shape:\n return ['path', 'customPath'].includes(channel);\n case GrammarMarkType.line:\n return channel === 'defined';\n case GrammarMarkType.area:\n return ['x1', 'y1', 'defined'].includes(channel);\n case GrammarMarkType.rule:\n return ['x1', 'y1'].includes(channel);\n case GrammarMarkType.symbol:\n return channel === 'size';\n case GrammarMarkType.polygon:\n return channel === 'points';\n case GrammarMarkType.text:\n return channel === 'text';\n }\n\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/graph/attributes/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AACvB,8CAA4B","file":"index.js","sourcesContent":["export * from './common';\nexport * from './helpers';\nexport * from './line';\nexport * from './transform';\n"]}
@@ -0,0 +1,3 @@
1
+ import type { IElement } from '../../types';
2
+ export declare function getLineSegmentConfigs(items: any[], points: any[], element?: IElement): any[];
3
+ export declare function getLinePointsFromSegments(segments: any[]): any;