@visactor/vgrammar-core 0.10.6 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/cjs/graph/animation/animation/grow-points.js +2 -1
  2. package/cjs/graph/animation/animation/grow-points.js.map +1 -1
  3. package/cjs/index.d.ts +1 -1
  4. package/cjs/index.js +1 -1
  5. package/cjs/index.js.map +1 -1
  6. package/cjs/interactions/brush-filter.js +2 -1
  7. package/cjs/interactions/element-highlight-by-group.js +1 -2
  8. package/cjs/interactions/index.js +2 -1
  9. package/cjs/interactions/legend-filter.js +1 -1
  10. package/cjs/interactions/player-filter.js +1 -1
  11. package/cjs/interactions/roll-up.js +1 -1
  12. package/cjs/interactions/scrollbar-filter.js +1 -1
  13. package/cjs/interactions/slider-filter.js +1 -1
  14. package/cjs/interactions/tooltip.js +1 -1
  15. package/cjs/interactions/utils.js +1 -1
  16. package/cjs/parse/coordinate.js +1 -1
  17. package/cjs/parse/event.js +1 -1
  18. package/cjs/parse/mark.js +1 -1
  19. package/cjs/parse/option.js +1 -1
  20. package/cjs/parse/scale.js +1 -2
  21. package/cjs/parse/transform.js +1 -1
  22. package/cjs/parse/util.js +1 -1
  23. package/cjs/parse/view.js +1 -1
  24. package/cjs/transforms/mark/mark-overlap.js +12 -8
  25. package/cjs/transforms/mark/mark-overlap.js.map +1 -1
  26. package/es/graph/animation/animation/grow-points.js +2 -1
  27. package/es/graph/animation/animation/grow-points.js.map +1 -1
  28. package/es/index.d.ts +1 -1
  29. package/es/index.js +1 -1
  30. package/es/index.js.map +1 -1
  31. package/es/interactions/drill-down.js +1 -2
  32. package/es/interactions/element-highlight-by-group.js +2 -1
  33. package/es/interactions/element-select.js +1 -1
  34. package/es/interactions/filter.js +1 -1
  35. package/es/interactions/fish-eye.js +1 -1
  36. package/es/semantic-marks/cell.js +1 -1
  37. package/es/semantic-marks/interval.js +1 -1
  38. package/es/semantic-marks/text.js +1 -1
  39. package/es/transforms/mark/mark-overlap.js +13 -7
  40. package/es/transforms/mark/mark-overlap.js.map +1 -1
  41. package/package.json +8 -8
@@ -13,7 +13,8 @@ const vutils_1 = require("@visactor/vutils"), getCenterPoints = (element, option
13
13
  center.x += point.x, center.y += point.y;
14
14
  })), center.x /= points.length, center.y /= points.length, options && options.center && ((0,
15
15
  vutils_1.isValidNumber)(options.center.x) && (center.x = options.center.x), (0,
16
- vutils_1.isValidNumber)(options.center.y) && (center.y = options.center.y)), points.map((() => Object.assign(center)));
16
+ vutils_1.isValidNumber)(options.center.y) && (center.y = options.center.y)), "area" === element.mark.markType && (center.x1 = center.x,
17
+ center.y1 = center.y), points.map((() => Object.assign(center)));
17
18
  }, growPointsIn = (element, options, animationParameters) => ({
18
19
  from: {
19
20
  points: getCenterPoints(element, options)
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animation/grow-points.ts"],"names":[],"mappings":"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","file":"grow-points.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber } from '@visactor/vutils';\nimport type {\n IElement,\n IGrowPointsOverallAnimationOptions,\n IAnimationParameters,\n IGrowPointsAnimationOptions,\n TypeAnimation\n} from '../../../types';\n\nconst getCenterPoints = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points: IPointLike[] = element.getGraphicAttribute('points', false);\n const center: IPointLike = { x: 0, y: 0 };\n points.forEach(point => {\n center.x += point.x;\n center.y += point.y;\n });\n center.x /= points.length;\n center.y /= points.length;\n\n if (options && options.center) {\n if (isValidNumber(options.center.x)) {\n center.x = options.center.x;\n }\n if (isValidNumber(options.center.y)) {\n center.y = options.center.y;\n }\n }\n\n return points.map(() => Object.assign(center));\n};\n\nexport const growPointsIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: getCenterPoints(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: getCenterPoints(element, options, animationParameters) }\n };\n};\n\n// grow points x\n\nconst changePointsX = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupRight = animationParameters.width;\n\n if (animationParameters.group) {\n groupRight = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n\n (animationParameters as any).groupWidth = groupRight;\n }\n\n return {\n x: groupRight,\n y: point.y,\n x1: groupRight,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: 0,\n y: point.y,\n x1: 0,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsXIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsX(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsXOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsX(element, options, animationParameters) }\n };\n};\n\n// grow points y\n\nconst changePointsY = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupBottom = animationParameters.height;\n\n if (animationParameters.group) {\n groupBottom = (animationParameters as any).groupHeight ?? animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = groupBottom;\n }\n\n return {\n x: point.x,\n y: groupBottom,\n x1: point.x1,\n y1: groupBottom,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: point.x,\n y: 0,\n x1: point.x1,\n y1: 0,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsYIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsY(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsYOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsY(element, options, animationParameters) }\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animation/grow-points.ts"],"names":[],"mappings":"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","file":"grow-points.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber } from '@visactor/vutils';\nimport type {\n IElement,\n IGrowPointsOverallAnimationOptions,\n IAnimationParameters,\n IGrowPointsAnimationOptions,\n TypeAnimation\n} from '../../../types';\n\nconst getCenterPoints = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points: IPointLike[] = element.getGraphicAttribute('points', false);\n const center: IPointLike = { x: 0, y: 0 };\n points.forEach(point => {\n center.x += point.x;\n center.y += point.y;\n });\n center.x /= points.length;\n center.y /= points.length;\n\n if (options && options.center) {\n if (isValidNumber(options.center.x)) {\n center.x = options.center.x;\n }\n if (isValidNumber(options.center.y)) {\n center.y = options.center.y;\n }\n }\n\n if (element.mark.markType === 'area') {\n center.x1 = center.x;\n center.y1 = center.y;\n }\n\n return points.map(() => Object.assign(center));\n};\n\nexport const growPointsIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: getCenterPoints(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: getCenterPoints(element, options, animationParameters) }\n };\n};\n\n// grow points x\n\nconst changePointsX = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupRight = animationParameters.width;\n\n if (animationParameters.group) {\n groupRight = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n\n (animationParameters as any).groupWidth = groupRight;\n }\n\n return {\n x: groupRight,\n y: point.y,\n x1: groupRight,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: 0,\n y: point.y,\n x1: 0,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsXIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsX(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsXOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsX(element, options, animationParameters) }\n };\n};\n\n// grow points y\n\nconst changePointsY = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupBottom = animationParameters.height;\n\n if (animationParameters.group) {\n groupBottom = (animationParameters as any).groupHeight ?? animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = groupBottom;\n }\n\n return {\n x: point.x,\n y: groupBottom,\n x1: point.x1,\n y1: groupBottom,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: point.x,\n y: 0,\n x1: point.x1,\n y1: 0,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsYIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsY(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsYOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsY(element, options, animationParameters) }\n };\n};\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.10.6";
1
+ export declare const version = "0.10.7";
2
2
  export * from './graph';
3
3
  export * from './interactions';
4
4
  export { View } from './view';
package/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
20
  }), exports.vglobal = exports.ThemeManager = exports.SIGNAL_VIEW_BOX = exports.SIGNAL_WIDTH = exports.SIGNAL_VIEW_WIDTH = exports.SIGNAL_VIEW_HEIGHT = exports.SIGNAL_PADDING = exports.SIGNAL_HEIGHT = exports.SIGNAL_AUTOFIT = exports.Factory = exports.GrammarBase = exports.invokeFunctionType = exports.parseFunctionType = exports.registerCoordinate = exports.Coordinate = exports.registerScale = exports.Scale = exports.View = exports.version = void 0,
21
- exports.version = "0.10.6", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
21
+ exports.version = "0.10.7", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
22
22
 
23
23
  var view_1 = require("./view");
24
24
 
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.10.6\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.10.7\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
@@ -31,4 +31,5 @@ class BrushFilter extends brush_base_1.BrushBase {
31
31
  }
32
32
  }
33
33
 
34
- exports.BrushFilter = BrushFilter, BrushFilter.type = "brush-filter", BrushFilter.defaultOptions = {};
34
+ exports.BrushFilter = BrushFilter, BrushFilter.type = "brush-filter", BrushFilter.defaultOptions = {};
35
+ //# sourceMappingURL=brush-filter.js.map
@@ -48,5 +48,4 @@ ElementHighlightByGroup.defaultOptions = {
48
48
  blurState: enums_1.InteractionStateEnum.blur,
49
49
  trigger: "pointerover",
50
50
  resetTrigger: "pointerout"
51
- };
52
- //# sourceMappingURL=element-highlight-by-group.js.map
51
+ };
@@ -383,4 +383,5 @@ const registerFishEye = () => {
383
383
  factory_1.Factory.registerInteraction(fish_eye_1.FishEye.type, fish_eye_1.FishEye);
384
384
  };
385
385
 
386
- exports.registerFishEye = registerFishEye;
386
+ exports.registerFishEye = registerFishEye;
387
+ //# sourceMappingURL=index.js.map
@@ -30,4 +30,4 @@ class LegendFilter extends filter_1.Filter {
30
30
  }
31
31
 
32
32
  exports.LegendFilter = LegendFilter, LegendFilter.type = "legend-filter", LegendFilter.defaultOptions = {};
33
- //# sourceMappingURL=legend-filter.js.map
33
+ //# sourceMappingURL=legend-filter.js.map
@@ -29,4 +29,4 @@ class PlayerFilter extends filter_1.Filter {
29
29
  }
30
30
 
31
31
  exports.PlayerFilter = PlayerFilter, PlayerFilter.type = "player-filter", PlayerFilter.defaultOptions = {};
32
- //# sourceMappingURL=player-filter.js.map
32
+ //# sourceMappingURL=player-filter.js.map
@@ -44,4 +44,4 @@ exports.RollUp = RollUp, RollUp.type = "roll-up", RollUp.defaultOptions = {
44
44
  trigger: "click",
45
45
  resetTrigger: "empty"
46
46
  };
47
- //# sourceMappingURL=roll-up.js.map
47
+ //# sourceMappingURL=roll-up.js.map
@@ -51,4 +51,4 @@ class ScrollbarFilter extends filter_1.Filter {
51
51
 
52
52
  exports.ScrollbarFilter = ScrollbarFilter, ScrollbarFilter.type = "scrollbar-filter",
53
53
  ScrollbarFilter.defaultOptions = {};
54
- //# sourceMappingURL=scrollbar-filter.js.map
54
+ //# sourceMappingURL=scrollbar-filter.js.map
@@ -29,4 +29,4 @@ class SliderFilter extends filter_1.Filter {
29
29
  }
30
30
 
31
31
  exports.SliderFilter = SliderFilter, SliderFilter.type = "slider-filter", SliderFilter.defaultOptions = {};
32
- //# sourceMappingURL=slider-filter.js.map
32
+ //# sourceMappingURL=slider-filter.js.map
@@ -59,4 +59,4 @@ exports.Tooltip = Tooltip, Tooltip.type = "tooltip", Tooltip.defaultOptions = {
59
59
  trigger: "pointermove",
60
60
  resetTrigger: "pointerleave"
61
61
  };
62
- //# sourceMappingURL=tooltip.js.map
62
+ //# sourceMappingURL=tooltip.js.map
@@ -10,4 +10,4 @@ const generateFilterValue = options => options.filterField ? el => {
10
10
  } : el => el[options.filterType];
11
11
 
12
12
  exports.generateFilterValue = generateFilterValue;
13
- //# sourceMappingURL=utils.js.map
13
+ //# sourceMappingURL=utils.js.map
@@ -67,4 +67,4 @@ function configureCoordinate(spec, coordinate, parameters) {
67
67
 
68
68
  exports.createCoordinate = createCoordinate, exports.parseCoordinate = parseCoordinate,
69
69
  exports.configureCoordinate = configureCoordinate;
70
- //# sourceMappingURL=coordinate.js.map
70
+ //# sourceMappingURL=coordinate.js.map
@@ -33,4 +33,4 @@ const parseEventSelector = (selector, source = constants_1.EVENT_SOURCE_VIEW) =>
33
33
  };
34
34
 
35
35
  exports.parseEventSelector = parseEventSelector;
36
- //# sourceMappingURL=event.js.map
36
+ //# sourceMappingURL=event.js.map
package/cjs/parse/mark.js CHANGED
@@ -22,4 +22,4 @@ function parseEncodeType(encoder, view) {
22
22
  }
23
23
 
24
24
  exports.isScaleEncode = isScaleEncode, exports.isFieldEncode = isFieldEncode, exports.parseEncodeType = parseEncodeType;
25
- //# sourceMappingURL=mark.js.map
25
+ //# sourceMappingURL=mark.js.map
@@ -17,4 +17,4 @@ const parseOptions = (options, params) => options ? (0, vutils_1.isObject)(optio
17
17
  }), {}) : options.map((option => (0, exports.parseOptionValue)(option, params))) : options;
18
18
 
19
19
  exports.parseOptions = parseOptions;
20
- //# sourceMappingURL=option.js.map
20
+ //# sourceMappingURL=option.js.map
@@ -362,5 +362,4 @@ function configureScale(spec, scale, parameters) {
362
362
  }
363
363
 
364
364
  exports.createScale = createScale, exports.parseScaleDomainRange = parseScaleDomainRange,
365
- exports.parseScaleConfig = parseScaleConfig, exports.configureScale = configureScale;
366
- //# sourceMappingURL=scale.js.map
365
+ exports.parseScaleConfig = parseScaleConfig, exports.configureScale = configureScale;
@@ -100,4 +100,4 @@ const vutils_1 = require("@visactor/vutils"), factory_1 = require("../core/facto
100
100
  };
101
101
 
102
102
  exports.parseTransformSpec = parseTransformSpec;
103
- //# sourceMappingURL=transform.js.map
103
+ //# sourceMappingURL=transform.js.map
package/cjs/parse/util.js CHANGED
@@ -79,4 +79,4 @@ exports.parseField = parseField;
79
79
  const parseColor = color => (0, vutils_1.isString)(color) && vutils_1.Color.parseColorString(color) ? color : null;
80
80
 
81
81
  exports.parseColor = parseColor;
82
- //# sourceMappingURL=util.js.map
82
+ //# sourceMappingURL=util.js.map
package/cjs/parse/view.js CHANGED
@@ -106,4 +106,4 @@ const normalizeRunningConfig = runningConfig => {
106
106
  };
107
107
 
108
108
  exports.normalizeRunningConfig = normalizeRunningConfig;
109
- //# sourceMappingURL=view.js.map
109
+ //# sourceMappingURL=view.js.map
@@ -4,11 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.transform = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils");
7
+ const vutils_1 = require("@visactor/vutils"), HIDE_KEY = "_mo_hide_";
8
8
 
9
9
  function reset(elements) {
10
10
  return elements.forEach((element => {
11
- element.setGraphicAttribute("visible", !0);
11
+ element.getGraphicAttribute("HIDE_KEY") && (element.setGraphicAttribute("visible", !0),
12
+ element.setGraphicAttribute(HIDE_KEY, !1));
12
13
  })), elements;
13
14
  }
14
15
 
@@ -18,9 +19,10 @@ function overlapX(elements, delta, deltaMul, useRadius) {
18
19
  const useDeltaMul = (0, vutils_1.isNil)(delta);
19
20
  let itemDelta = delta;
20
21
  elements.forEach((element => {
22
+ if (!1 === element.getGraphicAttribute("visible")) return;
21
23
  const r = element.getGraphicAttribute("size") / 2, currentX = element.getGraphicAttribute("x");
22
- useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentX - lastX) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || element.setGraphicAttribute("visible", !1) : lastX = currentX,
23
- lastR = r;
24
+ useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentX - lastX) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || (element.setGraphicAttribute(HIDE_KEY, !0),
25
+ element.setGraphicAttribute("visible", !1)) : lastX = currentX, lastR = r;
24
26
  }));
25
27
  }
26
28
  }
@@ -31,9 +33,10 @@ function overlapY(elements, delta, deltaMul, useRadius) {
31
33
  const useDeltaMul = (0, vutils_1.isNil)(delta);
32
34
  let itemDelta = delta;
33
35
  elements.forEach((element => {
36
+ if (!1 === element.getGraphicAttribute("visible")) return;
34
37
  const r = element.getGraphicAttribute("size") / 2, currentY = element.getGraphicAttribute("y");
35
- useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentY - lastY) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || element.setGraphicAttribute("visible", !1) : lastY = currentY,
36
- lastR = r;
38
+ useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentY - lastY) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || (element.setGraphicAttribute(HIDE_KEY, !0),
39
+ element.setGraphicAttribute("visible", !1)) : lastY = currentY, lastR = r;
37
40
  }));
38
41
  }
39
42
  }
@@ -45,10 +48,11 @@ function overlapXY(elements, delta, deltaMul, useRadius) {
45
48
  const useDeltaMul = (0, vutils_1.isNil)(delta);
46
49
  let itemDelta = delta;
47
50
  elements.forEach((element => {
51
+ if (!1 === element.getGraphicAttribute("visible")) return;
48
52
  const r = element.getGraphicAttribute("size") / 2, currentX = element.getGraphicAttribute("x"), currentY = element.getGraphicAttribute("y");
49
53
  useDeltaMul && (itemDelta = (r + lastR) * deltaMul), dis = (lastX - currentX) ** 2 + (lastY - currentY) ** 2,
50
- dis < (itemDelta + lastR + r) ** 2 ? element.getGraphicAttribute("forceShow") || element.setGraphicAttribute("visible", !1) : lastY = currentY,
51
- lastR = r;
54
+ dis < (itemDelta + lastR + r) ** 2 ? element.getGraphicAttribute("forceShow") || (element.setGraphicAttribute(HIDE_KEY, !0),
55
+ element.setGraphicAttribute("visible", !1)) : lastY = currentY, lastR = r;
52
56
  }));
53
57
  }
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transforms/mark/mark-overlap.ts"],"names":[],"mappings":"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","file":"mark-overlap.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IElement, MarkOverlapTransformOptions } from '../../types';\n\nfunction reset(elements: IElement[]) {\n elements.forEach(element => {\n element.setGraphicAttribute('visible', true);\n });\n return elements;\n}\n\nfunction overlapX(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastX = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentX - lastX) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastX = currentX;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastY = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n const r = element.getGraphicAttribute('size') / 2;\n const currentY = element.getGraphicAttribute('y');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentY - lastY) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapXY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n const lastX = -Infinity;\n let lastY = -Infinity;\n let lastR = 0;\n let dis = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n const currentY = element.getGraphicAttribute('y');\n\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n dis = (lastX - currentX) ** 2 + (lastY - currentY) ** 2;\n if (dis < (itemDelta + lastR + r) ** 2) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\n/**\n * 针对mark的防重叠\n * @param {object} options - The parameters for this operator.\n * @param {data} [options.followMark]\n * @constructor\n */\nexport const transform = (options: MarkOverlapTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0) {\n return;\n }\n let { radius } = options;\n if (isNil(radius)) {\n if (upstreamData[0].mark.markType === 'symbol') {\n radius = true;\n }\n }\n\n const { direction, delta, deltaMul = 1, groupBy } = options;\n\n const handleOverlap = (elements: IElement[]) => {\n reset(elements);\n\n const sortedElements = elements.slice().sort((a, b) => {\n return a.getGraphicAttribute('x') - b.getGraphicAttribute('x');\n });\n\n if (direction === 0) {\n overlapXY(sortedElements, delta, deltaMul, radius);\n } else if (direction === 1) {\n overlapX(sortedElements, delta, deltaMul, radius);\n } else {\n overlapY(sortedElements, delta, deltaMul, radius);\n }\n };\n\n if (!groupBy) {\n handleOverlap(upstreamData);\n } else {\n // 分组\n const map = upstreamData.reduce((res: { [key: string]: IElement[] }, element: IElement) => {\n const groupName = element.getDatum()[groupBy];\n\n if (res[groupName]) {\n res[groupName].push(element);\n } else {\n res[groupName] = [element];\n }\n\n return res;\n }, {});\n\n Object.keys(map).forEach(key => {\n handleOverlap(map[key]);\n });\n }\n\n return upstreamData;\n};\n"]}
1
+ {"version":3,"sources":["../src/transforms/mark/mark-overlap.ts"],"names":[],"mappings":"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","file":"mark-overlap.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IElement, MarkOverlapTransformOptions } from '../../types';\n\nconst HIDE_KEY = '_mo_hide_';\n\nfunction reset(elements: IElement[]) {\n elements.forEach(element => {\n const hide = element.getGraphicAttribute('HIDE_KEY');\n\n if (hide) {\n element.setGraphicAttribute('visible', true);\n element.setGraphicAttribute(HIDE_KEY, false);\n }\n });\n return elements;\n}\n\nfunction overlapX(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastX = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n if (element.getGraphicAttribute('visible') === false) {\n // skip hidden points\n return;\n }\n\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentX - lastX) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute(HIDE_KEY, true);\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastX = currentX;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastY = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n if (element.getGraphicAttribute('visible') === false) {\n // skip hidden points\n return;\n }\n\n const r = element.getGraphicAttribute('size') / 2;\n const currentY = element.getGraphicAttribute('y');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentY - lastY) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute(HIDE_KEY, true);\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapXY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n const lastX = -Infinity;\n let lastY = -Infinity;\n let lastR = 0;\n let dis = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n if (element.getGraphicAttribute('visible') === false) {\n // skip hidden points\n return;\n }\n\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n const currentY = element.getGraphicAttribute('y');\n\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n dis = (lastX - currentX) ** 2 + (lastY - currentY) ** 2;\n if (dis < (itemDelta + lastR + r) ** 2) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute(HIDE_KEY, true);\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\n/**\n * 针对mark的防重叠\n * @param {object} options - The parameters for this operator.\n * @param {data} [options.followMark]\n * @constructor\n */\nexport const transform = (options: MarkOverlapTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0) {\n return;\n }\n let { radius } = options;\n if (isNil(radius)) {\n if (upstreamData[0].mark.markType === 'symbol') {\n radius = true;\n }\n }\n\n const { direction, delta, deltaMul = 1, groupBy } = options;\n\n const handleOverlap = (elements: IElement[]) => {\n reset(elements);\n\n const sortedElements = elements.slice().sort((a, b) => {\n return a.getGraphicAttribute('x') - b.getGraphicAttribute('x');\n });\n\n if (direction === 0) {\n overlapXY(sortedElements, delta, deltaMul, radius);\n } else if (direction === 1) {\n overlapX(sortedElements, delta, deltaMul, radius);\n } else {\n overlapY(sortedElements, delta, deltaMul, radius);\n }\n };\n\n if (!groupBy) {\n handleOverlap(upstreamData);\n } else {\n // 分组\n const map = upstreamData.reduce((res: { [key: string]: IElement[] }, element: IElement) => {\n const groupName = element.getDatum()[groupBy];\n\n if (res[groupName]) {\n res[groupName].push(element);\n } else {\n res[groupName] = [element];\n }\n\n return res;\n }, {});\n\n Object.keys(map).forEach(key => {\n handleOverlap(map[key]);\n });\n }\n\n return upstreamData;\n};\n"]}
@@ -8,7 +8,8 @@ const getCenterPoints = (element, options, animationParameters) => {
8
8
  return points.forEach((point => {
9
9
  center.x += point.x, center.y += point.y;
10
10
  })), center.x /= points.length, center.y /= points.length, options && options.center && (isValidNumber(options.center.x) && (center.x = options.center.x),
11
- isValidNumber(options.center.y) && (center.y = options.center.y)), points.map((() => Object.assign(center)));
11
+ isValidNumber(options.center.y) && (center.y = options.center.y)), "area" === element.mark.markType && (center.x1 = center.x,
12
+ center.y1 = center.y), points.map((() => Object.assign(center)));
12
13
  };
13
14
 
14
15
  export const growPointsIn = (element, options, animationParameters) => ({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/animation/animation/grow-points.ts"],"names":[],"mappings":"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","file":"grow-points.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber } from '@visactor/vutils';\nimport type {\n IElement,\n IGrowPointsOverallAnimationOptions,\n IAnimationParameters,\n IGrowPointsAnimationOptions,\n TypeAnimation\n} from '../../../types';\n\nconst getCenterPoints = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points: IPointLike[] = element.getGraphicAttribute('points', false);\n const center: IPointLike = { x: 0, y: 0 };\n points.forEach(point => {\n center.x += point.x;\n center.y += point.y;\n });\n center.x /= points.length;\n center.y /= points.length;\n\n if (options && options.center) {\n if (isValidNumber(options.center.x)) {\n center.x = options.center.x;\n }\n if (isValidNumber(options.center.y)) {\n center.y = options.center.y;\n }\n }\n\n return points.map(() => Object.assign(center));\n};\n\nexport const growPointsIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: getCenterPoints(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: getCenterPoints(element, options, animationParameters) }\n };\n};\n\n// grow points x\n\nconst changePointsX = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupRight = animationParameters.width;\n\n if (animationParameters.group) {\n groupRight = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n\n (animationParameters as any).groupWidth = groupRight;\n }\n\n return {\n x: groupRight,\n y: point.y,\n x1: groupRight,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: 0,\n y: point.y,\n x1: 0,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsXIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsX(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsXOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsX(element, options, animationParameters) }\n };\n};\n\n// grow points y\n\nconst changePointsY = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupBottom = animationParameters.height;\n\n if (animationParameters.group) {\n groupBottom = (animationParameters as any).groupHeight ?? animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = groupBottom;\n }\n\n return {\n x: point.x,\n y: groupBottom,\n x1: point.x1,\n y1: groupBottom,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: point.x,\n y: 0,\n x1: point.x1,\n y1: 0,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsYIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsY(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsYOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsY(element, options, animationParameters) }\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/graph/animation/animation/grow-points.ts"],"names":[],"mappings":"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","file":"grow-points.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidNumber } from '@visactor/vutils';\nimport type {\n IElement,\n IGrowPointsOverallAnimationOptions,\n IAnimationParameters,\n IGrowPointsAnimationOptions,\n TypeAnimation\n} from '../../../types';\n\nconst getCenterPoints = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points: IPointLike[] = element.getGraphicAttribute('points', false);\n const center: IPointLike = { x: 0, y: 0 };\n points.forEach(point => {\n center.x += point.x;\n center.y += point.y;\n });\n center.x /= points.length;\n center.y /= points.length;\n\n if (options && options.center) {\n if (isValidNumber(options.center.x)) {\n center.x = options.center.x;\n }\n if (isValidNumber(options.center.y)) {\n center.y = options.center.y;\n }\n }\n\n if (element.mark.markType === 'area') {\n center.x1 = center.x;\n center.y1 = center.y;\n }\n\n return points.map(() => Object.assign(center));\n};\n\nexport const growPointsIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: getCenterPoints(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsOverallAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: getCenterPoints(element, options, animationParameters) }\n };\n};\n\n// grow points x\n\nconst changePointsX = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupRight = animationParameters.width;\n\n if (animationParameters.group) {\n groupRight = (animationParameters as any).groupWidth ?? animationParameters.group.getBounds().width();\n\n (animationParameters as any).groupWidth = groupRight;\n }\n\n return {\n x: groupRight,\n y: point.y,\n x1: groupRight,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: 0,\n y: point.y,\n x1: 0,\n y1: point.y1,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsXIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsX(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsXOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsX(element, options, animationParameters) }\n };\n};\n\n// grow points y\n\nconst changePointsY = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const points = element.getGraphicAttribute('points', false);\n return points.map((point: IPointLike) => {\n if (options && options.orient === 'negative') {\n let groupBottom = animationParameters.height;\n\n if (animationParameters.group) {\n groupBottom = (animationParameters as any).groupHeight ?? animationParameters.group.getBounds().height();\n\n (animationParameters as any).groupHeight = groupBottom;\n }\n\n return {\n x: point.x,\n y: groupBottom,\n x1: point.x1,\n y1: groupBottom,\n defined: point.defined !== false\n } as IPointLike;\n }\n return {\n x: point.x,\n y: 0,\n x1: point.x1,\n y1: 0,\n defined: point.defined !== false\n } as IPointLike;\n });\n};\n\nexport const growPointsYIn: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: changePointsY(element, options, animationParameters) },\n to: { points: element.getGraphicAttribute('points', false) }\n };\n};\n\nexport const growPointsYOut: TypeAnimation<IElement> = (\n element: IElement,\n options: IGrowPointsAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n return {\n from: { points: element.getGraphicAttribute('points', true) },\n to: { points: changePointsY(element, options, animationParameters) }\n };\n};\n"]}
package/es/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.10.6";
1
+ export declare const version = "0.10.7";
2
2
  export * from './graph';
3
3
  export * from './interactions';
4
4
  export { View } from './view';
package/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const version = "0.10.6";
1
+ export const version = "0.10.7";
2
2
 
3
3
  export * from "./graph";
4
4
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.10.6\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.10.7\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
@@ -42,5 +42,4 @@ export class DrillDown extends BrushBase {
42
42
  DrillDown.type = "drill-down", DrillDown.defaultOptions = {
43
43
  brush: !1,
44
44
  trigger: "click"
45
- };
46
- //# sourceMappingURL=drill-down.js.map
45
+ };
@@ -45,4 +45,5 @@ ElementHighlightByGroup.type = "element-highlight-by-group", ElementHighlightByG
45
45
  blurState: InteractionStateEnum.blur,
46
46
  trigger: "pointerover",
47
47
  resetTrigger: "pointerout"
48
- };
48
+ };
49
+ //# sourceMappingURL=element-highlight-by-group.js.map
@@ -58,4 +58,4 @@ ElementSelect.type = "element-select", ElementSelect.defaultOptions = {
58
58
  state: InteractionStateEnum.selected,
59
59
  trigger: "click"
60
60
  };
61
- //# sourceMappingURL=element-select.js.map
61
+ //# sourceMappingURL=element-select.js.map
@@ -28,4 +28,4 @@ export class Filter extends BaseInteraction {
28
28
  }
29
29
 
30
30
  Filter.defaultOptions = {};
31
- //# sourceMappingURL=filter.js.map
31
+ //# sourceMappingURL=filter.js.map
@@ -96,4 +96,4 @@ FishEye.type = "fish-eye", FishEye.defaultOptions = {
96
96
  distortionY: 2,
97
97
  throttle: 100
98
98
  };
99
- //# sourceMappingURL=fish-eye.js.map
99
+ //# sourceMappingURL=fish-eye.js.map
@@ -66,4 +66,4 @@ Cell.markType = GrammarMarkType.cell;
66
66
  export const registerCellMark = () => {
67
67
  Factory.registerMark(GrammarMarkType.cell, Cell);
68
68
  };
69
- //# sourceMappingURL=cell.js.map
69
+ //# sourceMappingURL=cell.js.map
@@ -92,4 +92,4 @@ Interval.markType = GrammarMarkType.interval;
92
92
  export const registerIntervalMark = () => {
93
93
  Factory.registerMark(GrammarMarkType.interval, Interval);
94
94
  };
95
- //# sourceMappingURL=interval.js.map
95
+ //# sourceMappingURL=interval.js.map
@@ -21,4 +21,4 @@ export class Text extends Mark {
21
21
  }
22
22
 
23
23
  Text.markType = GrammarMarkType.text;
24
- //# sourceMappingURL=text.js.map
24
+ //# sourceMappingURL=text.js.map
@@ -1,8 +1,11 @@
1
1
  import { isNil } from "@visactor/vutils";
2
2
 
3
+ const HIDE_KEY = "_mo_hide_";
4
+
3
5
  function reset(elements) {
4
6
  return elements.forEach((element => {
5
- element.setGraphicAttribute("visible", !0);
7
+ element.getGraphicAttribute("HIDE_KEY") && (element.setGraphicAttribute("visible", !0),
8
+ element.setGraphicAttribute(HIDE_KEY, !1));
6
9
  })), elements;
7
10
  }
8
11
 
@@ -12,9 +15,10 @@ function overlapX(elements, delta, deltaMul, useRadius) {
12
15
  const useDeltaMul = isNil(delta);
13
16
  let itemDelta = delta;
14
17
  elements.forEach((element => {
18
+ if (!1 === element.getGraphicAttribute("visible")) return;
15
19
  const r = element.getGraphicAttribute("size") / 2, currentX = element.getGraphicAttribute("x");
16
- useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentX - lastX) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || element.setGraphicAttribute("visible", !1) : lastX = currentX,
17
- lastR = r;
20
+ useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentX - lastX) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || (element.setGraphicAttribute(HIDE_KEY, !0),
21
+ element.setGraphicAttribute("visible", !1)) : lastX = currentX, lastR = r;
18
22
  }));
19
23
  }
20
24
  }
@@ -25,9 +29,10 @@ function overlapY(elements, delta, deltaMul, useRadius) {
25
29
  const useDeltaMul = isNil(delta);
26
30
  let itemDelta = delta;
27
31
  elements.forEach((element => {
32
+ if (!1 === element.getGraphicAttribute("visible")) return;
28
33
  const r = element.getGraphicAttribute("size") / 2, currentY = element.getGraphicAttribute("y");
29
- useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentY - lastY) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || element.setGraphicAttribute("visible", !1) : lastY = currentY,
30
- lastR = r;
34
+ useDeltaMul && (itemDelta = (r + lastR) * deltaMul), Math.abs(currentY - lastY) < itemDelta + lastR + r ? element.getGraphicAttribute("forceShow") || (element.setGraphicAttribute(HIDE_KEY, !0),
35
+ element.setGraphicAttribute("visible", !1)) : lastY = currentY, lastR = r;
31
36
  }));
32
37
  }
33
38
  }
@@ -39,10 +44,11 @@ function overlapXY(elements, delta, deltaMul, useRadius) {
39
44
  const useDeltaMul = isNil(delta);
40
45
  let itemDelta = delta;
41
46
  elements.forEach((element => {
47
+ if (!1 === element.getGraphicAttribute("visible")) return;
42
48
  const r = element.getGraphicAttribute("size") / 2, currentX = element.getGraphicAttribute("x"), currentY = element.getGraphicAttribute("y");
43
49
  useDeltaMul && (itemDelta = (r + lastR) * deltaMul), dis = (lastX - currentX) ** 2 + (lastY - currentY) ** 2,
44
- dis < (itemDelta + lastR + r) ** 2 ? element.getGraphicAttribute("forceShow") || element.setGraphicAttribute("visible", !1) : lastY = currentY,
45
- lastR = r;
50
+ dis < (itemDelta + lastR + r) ** 2 ? element.getGraphicAttribute("forceShow") || (element.setGraphicAttribute(HIDE_KEY, !0),
51
+ element.setGraphicAttribute("visible", !1)) : lastY = currentY, lastR = r;
46
52
  }));
47
53
  }
48
54
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transforms/mark/mark-overlap.ts"],"names":[],"mappings":"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","file":"mark-overlap.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IElement, MarkOverlapTransformOptions } from '../../types';\n\nfunction reset(elements: IElement[]) {\n elements.forEach(element => {\n element.setGraphicAttribute('visible', true);\n });\n return elements;\n}\n\nfunction overlapX(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastX = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentX - lastX) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastX = currentX;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastY = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n const r = element.getGraphicAttribute('size') / 2;\n const currentY = element.getGraphicAttribute('y');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentY - lastY) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapXY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n const lastX = -Infinity;\n let lastY = -Infinity;\n let lastR = 0;\n let dis = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n const currentY = element.getGraphicAttribute('y');\n\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n dis = (lastX - currentX) ** 2 + (lastY - currentY) ** 2;\n if (dis < (itemDelta + lastR + r) ** 2) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\n/**\n * 针对mark的防重叠\n * @param {object} options - The parameters for this operator.\n * @param {data} [options.followMark]\n * @constructor\n */\nexport const transform = (options: MarkOverlapTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0) {\n return;\n }\n let { radius } = options;\n if (isNil(radius)) {\n if (upstreamData[0].mark.markType === 'symbol') {\n radius = true;\n }\n }\n\n const { direction, delta, deltaMul = 1, groupBy } = options;\n\n const handleOverlap = (elements: IElement[]) => {\n reset(elements);\n\n const sortedElements = elements.slice().sort((a, b) => {\n return a.getGraphicAttribute('x') - b.getGraphicAttribute('x');\n });\n\n if (direction === 0) {\n overlapXY(sortedElements, delta, deltaMul, radius);\n } else if (direction === 1) {\n overlapX(sortedElements, delta, deltaMul, radius);\n } else {\n overlapY(sortedElements, delta, deltaMul, radius);\n }\n };\n\n if (!groupBy) {\n handleOverlap(upstreamData);\n } else {\n // 分组\n const map = upstreamData.reduce((res: { [key: string]: IElement[] }, element: IElement) => {\n const groupName = element.getDatum()[groupBy];\n\n if (res[groupName]) {\n res[groupName].push(element);\n } else {\n res[groupName] = [element];\n }\n\n return res;\n }, {});\n\n Object.keys(map).forEach(key => {\n handleOverlap(map[key]);\n });\n }\n\n return upstreamData;\n};\n"]}
1
+ {"version":3,"sources":["../src/transforms/mark/mark-overlap.ts"],"names":[],"mappings":"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","file":"mark-overlap.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { IElement, MarkOverlapTransformOptions } from '../../types';\n\nconst HIDE_KEY = '_mo_hide_';\n\nfunction reset(elements: IElement[]) {\n elements.forEach(element => {\n const hide = element.getGraphicAttribute('HIDE_KEY');\n\n if (hide) {\n element.setGraphicAttribute('visible', true);\n element.setGraphicAttribute(HIDE_KEY, false);\n }\n });\n return elements;\n}\n\nfunction overlapX(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastX = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n if (element.getGraphicAttribute('visible') === false) {\n // skip hidden points\n return;\n }\n\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentX - lastX) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute(HIDE_KEY, true);\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastX = currentX;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n let lastY = -Infinity;\n let lastR = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n if (element.getGraphicAttribute('visible') === false) {\n // skip hidden points\n return;\n }\n\n const r = element.getGraphicAttribute('size') / 2;\n const currentY = element.getGraphicAttribute('y');\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n if (Math.abs(currentY - lastY) < itemDelta + lastR + r) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute(HIDE_KEY, true);\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\nfunction overlapXY(elements: IElement[], delta: number, deltaMul: number, useRadius: boolean) {\n if (useRadius) {\n const lastX = -Infinity;\n let lastY = -Infinity;\n let lastR = 0;\n let dis = 0;\n const useDeltaMul = isNil(delta);\n let itemDelta = delta;\n\n elements.forEach(element => {\n if (element.getGraphicAttribute('visible') === false) {\n // skip hidden points\n return;\n }\n\n const r = element.getGraphicAttribute('size') / 2;\n const currentX = element.getGraphicAttribute('x');\n const currentY = element.getGraphicAttribute('y');\n\n if (useDeltaMul) {\n itemDelta = (r + lastR) * deltaMul;\n }\n dis = (lastX - currentX) ** 2 + (lastY - currentY) ** 2;\n if (dis < (itemDelta + lastR + r) ** 2) {\n if (!element.getGraphicAttribute('forceShow')) {\n element.setGraphicAttribute(HIDE_KEY, true);\n element.setGraphicAttribute('visible', false);\n }\n } else {\n lastY = currentY;\n }\n\n lastR = r;\n });\n }\n}\n\n/**\n * 针对mark的防重叠\n * @param {object} options - The parameters for this operator.\n * @param {data} [options.followMark]\n * @constructor\n */\nexport const transform = (options: MarkOverlapTransformOptions, upstreamData: IElement[]) => {\n if (!upstreamData || upstreamData.length === 0) {\n return;\n }\n let { radius } = options;\n if (isNil(radius)) {\n if (upstreamData[0].mark.markType === 'symbol') {\n radius = true;\n }\n }\n\n const { direction, delta, deltaMul = 1, groupBy } = options;\n\n const handleOverlap = (elements: IElement[]) => {\n reset(elements);\n\n const sortedElements = elements.slice().sort((a, b) => {\n return a.getGraphicAttribute('x') - b.getGraphicAttribute('x');\n });\n\n if (direction === 0) {\n overlapXY(sortedElements, delta, deltaMul, radius);\n } else if (direction === 1) {\n overlapX(sortedElements, delta, deltaMul, radius);\n } else {\n overlapY(sortedElements, delta, deltaMul, radius);\n }\n };\n\n if (!groupBy) {\n handleOverlap(upstreamData);\n } else {\n // 分组\n const map = upstreamData.reduce((res: { [key: string]: IElement[] }, element: IElement) => {\n const groupName = element.getDatum()[groupBy];\n\n if (res[groupName]) {\n res[groupName].push(element);\n } else {\n res[groupName] = [element];\n }\n\n return res;\n }, {});\n\n Object.keys(map).forEach(key => {\n handleOverlap(map[key]);\n });\n }\n\n return upstreamData;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vgrammar-core",
3
- "version": "0.10.6",
3
+ "version": "0.10.7",
4
4
  "description": "VGrammar is a visual grammar library",
5
5
  "keywords": [
6
6
  "grammar",
@@ -24,12 +24,12 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@visactor/vgrammar-coordinate": "0.10.6",
28
- "@visactor/vgrammar-util": "0.10.6",
27
+ "@visactor/vgrammar-coordinate": "0.10.7",
28
+ "@visactor/vgrammar-util": "0.10.7",
29
29
  "@visactor/vscale": "~0.17.3",
30
- "@visactor/vrender-core": "~0.17.10",
31
- "@visactor/vrender-kits": "~0.17.10",
32
- "@visactor/vrender-components": "~0.17.10",
30
+ "@visactor/vrender-core": "~0.17.11",
31
+ "@visactor/vrender-kits": "~0.17.11",
32
+ "@visactor/vrender-components": "~0.17.11",
33
33
  "@visactor/vutils": "~0.17.3",
34
34
  "@visactor/vdataset": "~0.17.3"
35
35
  },
@@ -44,9 +44,9 @@
44
44
  "ts-jest": "~29.1.0",
45
45
  "@types/jest": "~29.5.0",
46
46
  "typescript": "4.9.5",
47
- "@internal/bundler": "0.0.1",
48
- "@internal/eslint-config": "0.0.1",
49
47
  "@internal/ts-config": "0.0.1",
48
+ "@internal/eslint-config": "0.0.1",
49
+ "@internal/bundler": "0.0.1",
50
50
  "@internal/jest-config": "0.0.1"
51
51
  },
52
52
  "publishConfig": {