@visactor/vgrammar-core 0.12.8-alpha.0 → 0.12.8

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 (198) hide show
  1. package/cjs/core/factory.d.ts +1 -0
  2. package/cjs/core/factory.js +3 -0
  3. package/cjs/core/factory.js.map +1 -1
  4. package/cjs/graph/animation/attribute.js +15 -11
  5. package/cjs/graph/animation/attribute.js.map +1 -1
  6. package/cjs/graph/canvas-renderer.js +2 -1
  7. package/cjs/graph/canvas-renderer.js.map +1 -1
  8. package/cjs/graph/element.d.ts +2 -2
  9. package/cjs/graph/element.js +3 -9
  10. package/cjs/graph/element.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/interactions/base-tooltip.js +4 -1
  15. package/cjs/interactions/base-tooltip.js.map +1 -1
  16. package/cjs/interactions/base.d.ts +1 -0
  17. package/cjs/interactions/base.js +7 -4
  18. package/cjs/interactions/base.js.map +1 -1
  19. package/cjs/interactions/brush-active.d.ts +1 -0
  20. package/cjs/interactions/brush-active.js +3 -0
  21. package/cjs/interactions/brush-active.js.map +1 -1
  22. package/cjs/interactions/brush-base.js +4 -2
  23. package/cjs/interactions/brush-base.js.map +1 -1
  24. package/cjs/interactions/brush-highlight.d.ts +1 -0
  25. package/cjs/interactions/brush-highlight.js +3 -0
  26. package/cjs/interactions/brush-highlight.js.map +1 -1
  27. package/cjs/interactions/crosshair.d.ts +5 -2
  28. package/cjs/interactions/crosshair.js +4 -2
  29. package/cjs/interactions/crosshair.js.map +1 -1
  30. package/cjs/interactions/dimension-tooltip.d.ts +5 -2
  31. package/cjs/interactions/element-active-by-legend.d.ts +1 -0
  32. package/cjs/interactions/element-active-by-legend.js +3 -0
  33. package/cjs/interactions/element-active-by-legend.js.map +1 -1
  34. package/cjs/interactions/element-active.d.ts +2 -1
  35. package/cjs/interactions/element-active.js +3 -0
  36. package/cjs/interactions/element-active.js.map +1 -1
  37. package/cjs/interactions/element-highlight-by-group.d.ts +2 -1
  38. package/cjs/interactions/element-highlight-by-group.js +3 -0
  39. package/cjs/interactions/element-highlight-by-group.js.map +1 -1
  40. package/cjs/interactions/element-highlight-by-key.d.ts +2 -1
  41. package/cjs/interactions/element-highlight-by-key.js +3 -0
  42. package/cjs/interactions/element-highlight-by-key.js.map +1 -1
  43. package/cjs/interactions/element-highlight-by-legend.d.ts +1 -0
  44. package/cjs/interactions/element-highlight-by-legend.js +3 -0
  45. package/cjs/interactions/element-highlight-by-legend.js.map +1 -1
  46. package/cjs/interactions/element-highlight-by-name.d.ts +6 -2
  47. package/cjs/interactions/element-highlight-by-name.js +3 -0
  48. package/cjs/interactions/element-highlight-by-name.js.map +1 -1
  49. package/cjs/interactions/element-highlight.d.ts +1 -0
  50. package/cjs/interactions/element-highlight.js +3 -0
  51. package/cjs/interactions/element-highlight.js.map +1 -1
  52. package/cjs/interactions/element-select.d.ts +1 -0
  53. package/cjs/interactions/element-select.js +5 -2
  54. package/cjs/interactions/element-select.js.map +1 -1
  55. package/cjs/interactions/tooltip.d.ts +5 -2
  56. package/cjs/interactions/view-drag.d.ts +1 -0
  57. package/cjs/interactions/view-drag.js +7 -7
  58. package/cjs/interactions/view-drag.js.map +1 -1
  59. package/cjs/interactions/view-navigation-base.d.ts +2 -2
  60. package/cjs/interactions/view-navigation-base.js +11 -8
  61. package/cjs/interactions/view-navigation-base.js.map +1 -1
  62. package/cjs/interactions/view-roam.d.ts +3 -0
  63. package/cjs/interactions/view-roam.js +12 -8
  64. package/cjs/interactions/view-roam.js.map +1 -1
  65. package/cjs/interactions/view-scroll.d.ts +1 -0
  66. package/cjs/interactions/view-scroll.js +4 -3
  67. package/cjs/interactions/view-scroll.js.map +1 -1
  68. package/cjs/interactions/view-utils.js +8 -3
  69. package/cjs/interactions/view-utils.js.map +1 -1
  70. package/cjs/interactions/view-zoom-mixin.js +7 -3
  71. package/cjs/interactions/view-zoom-mixin.js.map +1 -1
  72. package/cjs/interactions/view-zoom.d.ts +2 -1
  73. package/cjs/interactions/view-zoom.js +6 -6
  74. package/cjs/interactions/view-zoom.js.map +1 -1
  75. package/cjs/types/element.d.ts +2 -2
  76. package/cjs/types/element.js.map +1 -1
  77. package/cjs/types/interaction.d.ts +14 -9
  78. package/cjs/types/interaction.js.map +1 -1
  79. package/cjs/view/View.js +3 -2
  80. package/cjs/view/View.js.map +1 -1
  81. package/cjs/view/animate.js +5 -3
  82. package/cjs/view/animate.js.map +1 -1
  83. package/cjs/view/component.js +5 -2
  84. package/cjs/view/component.js.map +1 -1
  85. package/cjs/view/group.d.ts +4 -1
  86. package/cjs/view/group.js +45 -4
  87. package/cjs/view/group.js.map +1 -1
  88. package/cjs/view/mark.d.ts +6 -3
  89. package/cjs/view/mark.js +20 -27
  90. package/cjs/view/mark.js.map +1 -1
  91. package/es/core/factory.d.ts +1 -0
  92. package/es/core/factory.js +3 -0
  93. package/es/core/factory.js.map +1 -1
  94. package/es/graph/animation/attribute.js +15 -11
  95. package/es/graph/animation/attribute.js.map +1 -1
  96. package/es/graph/canvas-renderer.js +2 -1
  97. package/es/graph/canvas-renderer.js.map +1 -1
  98. package/es/graph/element.d.ts +2 -2
  99. package/es/graph/element.js +3 -7
  100. package/es/graph/element.js.map +1 -1
  101. package/es/index.d.ts +1 -1
  102. package/es/index.js +1 -1
  103. package/es/index.js.map +1 -1
  104. package/es/interactions/base-tooltip.js +4 -1
  105. package/es/interactions/base-tooltip.js.map +1 -1
  106. package/es/interactions/base.d.ts +1 -0
  107. package/es/interactions/base.js +7 -4
  108. package/es/interactions/base.js.map +1 -1
  109. package/es/interactions/brush-active.d.ts +1 -0
  110. package/es/interactions/brush-active.js +3 -0
  111. package/es/interactions/brush-active.js.map +1 -1
  112. package/es/interactions/brush-base.js +4 -2
  113. package/es/interactions/brush-base.js.map +1 -1
  114. package/es/interactions/brush-filter.js +2 -1
  115. package/es/interactions/brush-highlight.d.ts +1 -0
  116. package/es/interactions/brush-highlight.js +3 -0
  117. package/es/interactions/brush-highlight.js.map +1 -1
  118. package/es/interactions/crosshair.d.ts +5 -2
  119. package/es/interactions/crosshair.js +4 -2
  120. package/es/interactions/crosshair.js.map +1 -1
  121. package/es/interactions/dimension-tooltip.d.ts +5 -2
  122. package/es/interactions/element-active-by-legend.d.ts +1 -0
  123. package/es/interactions/element-active-by-legend.js +3 -0
  124. package/es/interactions/element-active-by-legend.js.map +1 -1
  125. package/es/interactions/element-active.d.ts +2 -1
  126. package/es/interactions/element-active.js +3 -0
  127. package/es/interactions/element-active.js.map +1 -1
  128. package/es/interactions/element-highlight-by-group.d.ts +2 -1
  129. package/es/interactions/element-highlight-by-group.js +4 -2
  130. package/es/interactions/element-highlight-by-group.js.map +1 -1
  131. package/es/interactions/element-highlight-by-key.d.ts +2 -1
  132. package/es/interactions/element-highlight-by-key.js +3 -0
  133. package/es/interactions/element-highlight-by-key.js.map +1 -1
  134. package/es/interactions/element-highlight-by-legend.d.ts +1 -0
  135. package/es/interactions/element-highlight-by-legend.js +3 -0
  136. package/es/interactions/element-highlight-by-legend.js.map +1 -1
  137. package/es/interactions/element-highlight-by-name.d.ts +6 -2
  138. package/es/interactions/element-highlight-by-name.js +3 -0
  139. package/es/interactions/element-highlight-by-name.js.map +1 -1
  140. package/es/interactions/element-highlight.d.ts +1 -0
  141. package/es/interactions/element-highlight.js +3 -0
  142. package/es/interactions/element-highlight.js.map +1 -1
  143. package/es/interactions/element-select.d.ts +1 -0
  144. package/es/interactions/element-select.js +5 -1
  145. package/es/interactions/element-select.js.map +1 -1
  146. package/es/interactions/index.js +2 -1
  147. package/es/interactions/legend-filter.js +1 -1
  148. package/es/interactions/player-filter.js +1 -1
  149. package/es/interactions/roll-up.js +1 -1
  150. package/es/interactions/scrollbar-filter.js +1 -1
  151. package/es/interactions/slider-filter.js +1 -1
  152. package/es/interactions/toggle-state-mixin.js +1 -1
  153. package/es/interactions/tooltip.d.ts +5 -2
  154. package/es/interactions/tooltip.js +1 -1
  155. package/es/interactions/view-drag.d.ts +1 -0
  156. package/es/interactions/view-drag.js +7 -7
  157. package/es/interactions/view-drag.js.map +1 -1
  158. package/es/interactions/view-navigation-base.d.ts +2 -2
  159. package/es/interactions/view-navigation-base.js +11 -9
  160. package/es/interactions/view-navigation-base.js.map +1 -1
  161. package/es/interactions/view-roam.d.ts +3 -0
  162. package/es/interactions/view-roam.js +12 -8
  163. package/es/interactions/view-roam.js.map +1 -1
  164. package/es/interactions/view-scroll.d.ts +1 -0
  165. package/es/interactions/view-scroll.js +4 -3
  166. package/es/interactions/view-scroll.js.map +1 -1
  167. package/es/interactions/view-utils.js +6 -3
  168. package/es/interactions/view-utils.js.map +1 -1
  169. package/es/interactions/view-zoom-mixin.js +7 -3
  170. package/es/interactions/view-zoom-mixin.js.map +1 -1
  171. package/es/interactions/view-zoom.d.ts +2 -1
  172. package/es/interactions/view-zoom.js +6 -6
  173. package/es/interactions/view-zoom.js.map +1 -1
  174. package/es/parse/coordinate.js +1 -1
  175. package/es/parse/event.js +1 -1
  176. package/es/parse/mark.js +1 -1
  177. package/es/parse/option.js +1 -1
  178. package/es/parse/scale.js +1 -2
  179. package/es/parse/transform.js +1 -1
  180. package/es/parse/util.js +1 -1
  181. package/es/parse/view.js +1 -1
  182. package/es/types/element.d.ts +2 -2
  183. package/es/types/element.js.map +1 -1
  184. package/es/types/interaction.d.ts +14 -9
  185. package/es/types/interaction.js.map +1 -1
  186. package/es/view/View.js +3 -2
  187. package/es/view/View.js.map +1 -1
  188. package/es/view/animate.js +5 -3
  189. package/es/view/animate.js.map +1 -1
  190. package/es/view/component.js +5 -2
  191. package/es/view/component.js.map +1 -1
  192. package/es/view/group.d.ts +4 -1
  193. package/es/view/group.js +48 -4
  194. package/es/view/group.js.map +1 -1
  195. package/es/view/mark.d.ts +6 -3
  196. package/es/view/mark.js +21 -28
  197. package/es/view/mark.js.map +1 -1
  198. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/component.ts"],"names":[],"mappings":"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","file":"component.js","sourcesContent":["import { DefaultKey } from '../graph/constants';\nimport { GrammarMarkType, HOOK_EVENT } from '../graph/enums';\nimport type {\n IGroupMark,\n IView,\n IComponent,\n ComponentSpec,\n IData,\n Nil,\n MarkFunctionType,\n StateEncodeSpec,\n BaseSingleEncodeSpec\n} from '../types';\nimport { Factory } from '../core/factory';\nimport { Mark } from './mark';\n\nexport class Component extends Mark implements IComponent {\n declare markType: GrammarMarkType.component;\n readonly componentType: string;\n protected declare spec: ComponentSpec;\n\n protected mode?: '2d' | '3d';\n\n protected _componentDatum: any = { [DefaultKey]: 0 };\n protected _encoders: StateEncodeSpec;\n\n constructor(view: IView, componentType: string, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, GrammarMarkType.component, group);\n this.componentType = componentType;\n this.spec.type = 'component';\n this.spec.componentType = componentType;\n this.mode = mode;\n this._updateComponentEncoders();\n }\n\n configureComponent(config: any) {\n this.spec.componentConfig = config;\n this.commit();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n const graphicItem =\n newGraphicItem ??\n Factory.createGraphicComponent(this.componentType, attrs, { mode: this.mode, skipDefault: this.spec.skipTheme });\n this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK);\n (this.graphicParent as any).appendChild(graphicItem);\n\n this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK);\n\n return graphicItem;\n }\n\n join(data: IData | string | Nil) {\n return super.join(data, DefaultKey);\n }\n\n encodeState(state: string, channel: string | BaseSingleEncodeSpec, value?: MarkFunctionType<any>) {\n super.encodeState(state, channel, value);\n this._updateComponentEncoders();\n return this;\n }\n\n parseRenderContext() {\n return { large: false };\n }\n\n protected _prepareRejoin() {\n this._componentDatum[DefaultKey] += 1;\n }\n\n protected evaluateJoin(data: any[]) {\n this.spec.key = DefaultKey;\n\n if (data) {\n (data as any)[DefaultKey] = this._componentDatum[DefaultKey];\n\n this._componentDatum = data;\n } else {\n this._componentDatum = { [DefaultKey]: this._componentDatum[DefaultKey] };\n }\n\n // component mark do not support data join\n return super.evaluateJoin([this._componentDatum]);\n }\n\n protected _updateComponentEncoders() {\n this._encoders = this.spec.encode;\n }\n\n protected _getEncoders() {\n return this._encoders ?? {};\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/view/component.ts"],"names":[],"mappings":"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","file":"component.js","sourcesContent":["import { DefaultKey } from '../graph/constants';\nimport { GrammarMarkType, HOOK_EVENT } from '../graph/enums';\nimport type {\n IGroupMark,\n IView,\n IComponent,\n ComponentSpec,\n IData,\n Nil,\n MarkFunctionType,\n StateEncodeSpec,\n BaseSingleEncodeSpec\n} from '../types';\nimport { Factory } from '../core/factory';\nimport { Mark } from './mark';\n\nexport class Component extends Mark implements IComponent {\n declare markType: GrammarMarkType.component;\n readonly componentType: string;\n protected declare spec: ComponentSpec;\n\n protected mode?: '2d' | '3d';\n\n protected _componentDatum: any = { [DefaultKey]: 0 };\n protected _encoders: StateEncodeSpec;\n\n constructor(view: IView, componentType: string, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, GrammarMarkType.component, group);\n this.componentType = componentType;\n this.spec.type = 'component';\n this.spec.componentType = componentType;\n this.mode = mode;\n this._updateComponentEncoders();\n }\n\n configureComponent(config: any) {\n this.spec.componentConfig = config;\n this.commit();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n const graphicItem =\n newGraphicItem ??\n Factory.createGraphicComponent(this.componentType, attrs, { mode: this.mode, skipDefault: this.spec.skipTheme });\n\n if (graphicItem) {\n this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, { graphicItem });\n (this.graphicParent as any).appendChild(graphicItem);\n\n this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK, { graphicItem });\n }\n\n return graphicItem;\n }\n\n join(data: IData | string | Nil) {\n return super.join(data, DefaultKey);\n }\n\n encodeState(state: string, channel: string | BaseSingleEncodeSpec, value?: MarkFunctionType<any>) {\n super.encodeState(state, channel, value);\n this._updateComponentEncoders();\n return this;\n }\n\n parseRenderContext() {\n return { large: false };\n }\n\n protected _prepareRejoin() {\n this._componentDatum[DefaultKey] += 1;\n }\n\n protected evaluateJoin(data: any[]) {\n this.spec.key = DefaultKey;\n\n if (data) {\n (data as any)[DefaultKey] = this._componentDatum[DefaultKey];\n\n this._componentDatum = data;\n } else {\n this._componentDatum = { [DefaultKey]: this._componentDatum[DefaultKey] };\n }\n\n // component mark do not support data join\n return super.evaluateJoin([this._componentDatum]);\n }\n\n protected _updateComponentEncoders() {\n this._encoders = this.spec.encode;\n }\n\n protected _getEncoders() {\n return this._encoders ?? {};\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { IGlyphMark, IGroupMark, IMark, IView } from '../types';
1
+ import type { IElement, IGlyphMark, IGroupMark, IMark, IView } from '../types';
2
2
  import { Mark } from './mark';
3
3
  export declare class GroupMark extends Mark implements IGroupMark {
4
4
  children: (IMark | IGroupMark | IGlyphMark)[];
@@ -13,5 +13,8 @@ export declare class GroupMark extends Mark implements IGroupMark {
13
13
  updateLayoutChildren(): this;
14
14
  getAttributeTransforms(): import("../types").AttributeTransform[];
15
15
  protected evaluateJoin(data: any[]): void;
16
+ protected getChannelsFromConfig(element?: IElement): any;
17
+ protected evaluateGroupEncode(elements: IElement[], groupEncode: any, parameters: any): {};
18
+ protected evaluateEncode(elements: IElement[], encoders: any, parameters: any, noGroupEncode?: boolean): void;
16
19
  addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any): any;
17
20
  }
package/es/view/group.js CHANGED
@@ -2,7 +2,7 @@ import { transformsByType } from "../graph/attributes";
2
2
 
3
3
  import { DefaultKey, DefaultMarkData } from "../graph/constants";
4
4
 
5
- import { GrammarMarkType, HOOK_EVENT } from "../graph/enums";
5
+ import { BuiltInEncodeNames, GrammarMarkType, HOOK_EVENT } from "../graph/enums";
6
6
 
7
7
  import { createElement } from "../graph/util/element";
8
8
 
@@ -10,6 +10,10 @@ import { createGraphicItem } from "../graph/util/graphic";
10
10
 
11
11
  import { Mark } from "./mark";
12
12
 
13
+ import { isFunction, isNil } from "@visactor/vutils";
14
+
15
+ import { invokeEncoderToItems } from "../graph/mark/encode";
16
+
13
17
  export class GroupMark extends Mark {
14
18
  constructor(view, group) {
15
19
  super(view, GrammarMarkType.group, group), this.children = [];
@@ -42,11 +46,51 @@ export class GroupMark extends Mark {
42
46
  this.elementMap.set(DefaultKey, el);
43
47
  }
44
48
  }
49
+ getChannelsFromConfig(element) {
50
+ const spec = this.spec, initAttrs = {};
51
+ return isNil(spec.clip) || (initAttrs.clip = spec.clip), isNil(spec.zIndex) || (initAttrs.zIndex = spec.zIndex),
52
+ isNil(spec.clipPath) || (initAttrs.path = isFunction(spec.clipPath) ? spec.clipPath([ element ]) : spec.clipPath),
53
+ isNil(spec.interactive) || (initAttrs.pickable = spec.interactive), initAttrs;
54
+ }
55
+ evaluateGroupEncode(elements, groupEncode, parameters) {
56
+ var _a;
57
+ const el = this.elements[0], nextAttrs = {}, items = [ Object.assign({}, null === (_a = el.items) || void 0 === _a ? void 0 : _a[0], {
58
+ nextAttrs: nextAttrs
59
+ }) ];
60
+ return invokeEncoderToItems(el, items, groupEncode, parameters), this._groupEncodeResult = nextAttrs,
61
+ nextAttrs;
62
+ }
63
+ evaluateEncode(elements, encoders, parameters, noGroupEncode) {
64
+ const initAttrs = this.getChannelsFromConfig();
65
+ if (encoders) {
66
+ this.emit(HOOK_EVENT.BEFORE_ELEMENT_ENCODE, {
67
+ encoders: encoders,
68
+ parameters: parameters
69
+ }, this);
70
+ const groupEncodeAttrs = noGroupEncode ? null : this.evaluateGroupEncode(elements, encoders[BuiltInEncodeNames.group], parameters);
71
+ elements.forEach((element => {
72
+ element.items.forEach((item => {
73
+ item.nextAttrs = Object.assign(item.nextAttrs, initAttrs, groupEncodeAttrs);
74
+ })), element.encodeItems(element.items, encoders, this._isReentered, parameters);
75
+ })), this._isReentered = !1, this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters),
76
+ elements.forEach((element => {
77
+ element.encodeGraphic();
78
+ })), this.emit(HOOK_EVENT.AFTER_ELEMENT_ENCODE, {
79
+ encoders: encoders,
80
+ parameters: parameters
81
+ }, this);
82
+ } else elements.forEach((element => {
83
+ element.initGraphicItem(initAttrs);
84
+ }));
85
+ }
45
86
  addGraphicItem(attrs, groupKey, newGraphicItem) {
46
87
  const graphicItem = null != newGraphicItem ? newGraphicItem : createGraphicItem(this, this.markType, attrs);
47
- if (graphicItem) return this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK), graphicItem.name = `${this.id() || this.markType}`,
48
- this.graphicParent.insertIntoKeepIdx(graphicItem, this.graphicIndex), this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK),
49
- graphicItem;
88
+ if (graphicItem) return this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, {
89
+ graphicItem: graphicItem
90
+ }), graphicItem.name = `${this.id() || this.markType}`, this.graphicParent.insertIntoKeepIdx(graphicItem, this.graphicIndex),
91
+ this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK, {
92
+ graphicItem: graphicItem
93
+ }), graphicItem;
50
94
  }
51
95
  }
52
96
  //# sourceMappingURL=group.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { INode } from '@visactor/vrender-core';\nimport { transformsByType } from '../graph/attributes';\nimport { DefaultKey, DefaultMarkData } from '../graph/constants';\nimport { GrammarMarkType, HOOK_EVENT } from '../graph/enums';\nimport { createElement } from '../graph/util/element';\nimport { createGraphicItem } from '../graph/util/graphic';\nimport type { IGlyphMark, IGroupMark, IMark, IView } from '../types';\nimport { Mark } from './mark';\n\nexport class GroupMark extends Mark implements IGroupMark {\n children: (IMark | IGroupMark | IGlyphMark)[];\n\n layoutChildren?: (IMark | IGroupMark | IGlyphMark)[];\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, GrammarMarkType.group, group);\n this.children = [];\n }\n\n parseRenderContext() {\n return { large: false };\n }\n\n appendChild(mark: IMark) {\n this.children.push(mark);\n return this;\n }\n removeChild(mark: IMark) {\n this.children = this.children.filter(child => child !== mark);\n return this;\n }\n\n includesChild(mark: IMark, descendant: boolean = true) {\n if (this.children.includes(mark)) {\n return true;\n }\n if (!descendant) {\n return false;\n }\n return this.children.some(child => {\n if (child.markType === GrammarMarkType.group) {\n return (child as IGroupMark).includesChild(mark, true);\n }\n return false;\n });\n }\n\n updateLayoutChildren() {\n if (!this.children.length) {\n return this;\n }\n if (!this.layoutChildren) {\n this.layoutChildren = [];\n }\n\n this.layoutChildren = this.children.filter(child => child.needLayout());\n\n return this;\n }\n\n getAttributeTransforms() {\n return transformsByType.rect;\n }\n\n protected evaluateJoin(data: any[]) {\n if (!this.elements.length) {\n const el = createElement(this);\n\n el.updateData(DefaultKey, DefaultMarkData, () => '', this.view);\n this.elements = [el];\n this.elementMap.set(DefaultKey, el);\n }\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n const graphicItem: any = newGraphicItem ?? createGraphicItem(this, this.markType, attrs);\n\n if (!graphicItem) {\n return;\n }\n\n this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK);\n\n graphicItem.name = `${this.id() || this.markType}`;\n\n this.graphicParent.insertIntoKeepIdx(graphicItem as unknown as INode, this.graphicIndex);\n this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK);\n\n return graphicItem;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/view/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { INode } from '@visactor/vrender-core';\nimport { transformsByType } from '../graph/attributes';\nimport { DefaultKey, DefaultMarkData } from '../graph/constants';\nimport { BuiltInEncodeNames, GrammarMarkType, HOOK_EVENT } from '../graph/enums';\nimport { createElement } from '../graph/util/element';\nimport { createGraphicItem } from '../graph/util/graphic';\nimport type { IElement, IGlyphMark, IGroupMark, IMark, IView } from '../types';\nimport { Mark } from './mark';\nimport { isFunction, isNil } from '@visactor/vutils';\nimport { invokeEncoderToItems } from '../graph/mark/encode';\n\nexport class GroupMark extends Mark implements IGroupMark {\n children: (IMark | IGroupMark | IGlyphMark)[];\n\n layoutChildren?: (IMark | IGroupMark | IGlyphMark)[];\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, GrammarMarkType.group, group);\n this.children = [];\n }\n\n parseRenderContext() {\n return { large: false };\n }\n\n appendChild(mark: IMark) {\n this.children.push(mark);\n return this;\n }\n removeChild(mark: IMark) {\n this.children = this.children.filter(child => child !== mark);\n return this;\n }\n\n includesChild(mark: IMark, descendant: boolean = true) {\n if (this.children.includes(mark)) {\n return true;\n }\n if (!descendant) {\n return false;\n }\n return this.children.some(child => {\n if (child.markType === GrammarMarkType.group) {\n return (child as IGroupMark).includesChild(mark, true);\n }\n return false;\n });\n }\n\n updateLayoutChildren() {\n if (!this.children.length) {\n return this;\n }\n if (!this.layoutChildren) {\n this.layoutChildren = [];\n }\n\n this.layoutChildren = this.children.filter(child => child.needLayout());\n\n return this;\n }\n\n getAttributeTransforms() {\n return transformsByType.rect;\n }\n\n protected evaluateJoin(data: any[]) {\n if (!this.elements.length) {\n const el = createElement(this);\n\n el.updateData(DefaultKey, DefaultMarkData, () => '', this.view);\n this.elements = [el];\n this.elementMap.set(DefaultKey, el);\n }\n }\n\n protected getChannelsFromConfig(element?: IElement) {\n const spec = this.spec;\n\n const initAttrs: any = {};\n\n if (!isNil(spec.clip)) {\n initAttrs.clip = spec.clip;\n }\n\n if (!isNil(spec.zIndex)) {\n initAttrs.zIndex = spec.zIndex;\n }\n\n if (!isNil(spec.clipPath)) {\n initAttrs.path = isFunction(spec.clipPath) ? spec.clipPath([element]) : spec.clipPath;\n }\n\n if (!isNil(spec.interactive)) {\n initAttrs.pickable = spec.interactive;\n }\n\n return initAttrs;\n }\n\n protected evaluateGroupEncode(elements: IElement[], groupEncode: any, parameters: any) {\n const el = this.elements[0];\n const nextAttrs = {};\n const items = [Object.assign({}, el.items?.[0], { nextAttrs })];\n invokeEncoderToItems(el, items, groupEncode, parameters);\n\n this._groupEncodeResult = nextAttrs;\n return nextAttrs;\n }\n\n protected evaluateEncode(elements: IElement[], encoders: any, parameters: any, noGroupEncode?: boolean) {\n const initAttrs = this.getChannelsFromConfig();\n\n if (encoders) {\n this.emit(HOOK_EVENT.BEFORE_ELEMENT_ENCODE, { encoders, parameters }, this);\n\n const groupEncodeAttrs = noGroupEncode\n ? null\n : this.evaluateGroupEncode(elements, encoders[BuiltInEncodeNames.group], parameters);\n\n elements.forEach(element => {\n element.items.forEach(item => {\n item.nextAttrs = Object.assign(item.nextAttrs, initAttrs, groupEncodeAttrs);\n });\n\n element.encodeItems(element.items, encoders, this._isReentered, parameters);\n });\n\n this._isReentered = false;\n\n this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters);\n\n elements.forEach(element => {\n element.encodeGraphic();\n });\n this.emit(HOOK_EVENT.AFTER_ELEMENT_ENCODE, { encoders, parameters }, this);\n } else {\n elements.forEach(element => {\n element.initGraphicItem(initAttrs);\n });\n }\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n const graphicItem: any = newGraphicItem ?? createGraphicItem(this, this.markType, attrs);\n\n if (!graphicItem) {\n return;\n }\n\n this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, { graphicItem });\n\n graphicItem.name = `${this.id() || this.markType}`;\n\n this.graphicParent.insertIntoKeepIdx(graphicItem as unknown as INode, this.graphicIndex);\n this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK, { graphicItem });\n\n return graphicItem;\n }\n}\n"]}
package/es/view/mark.d.ts CHANGED
@@ -19,8 +19,8 @@ export declare class Mark extends GrammarBase implements IMark {
19
19
  elementMap: Map<string, IElement>;
20
20
  isUpdated: boolean;
21
21
  private _groupKeys;
22
- private _groupEncodeResult;
23
- private _isReentered;
22
+ protected _groupEncodeResult: Record<string, any>;
23
+ protected _isReentered: boolean;
24
24
  private _context;
25
25
  private renderContext?;
26
26
  animate: IAnimate;
@@ -37,7 +37,7 @@ export declare class Mark extends GrammarBase implements IMark {
37
37
  handleRenderEnd(): void;
38
38
  evaluateMainTasks(data: any[], parameters: any): this;
39
39
  protected evaluateGroup(data: any[]): void;
40
- private _getTransformsAfterEncodeItems;
40
+ protected _getTransformsAfterEncodeItems(): import("../types").IGrammarTask[];
41
41
  private _getTransformsAfterEncode;
42
42
  private _getTransformsBeforeJoin;
43
43
  evaluate(data: any[], parameters: any): this;
@@ -68,6 +68,9 @@ export declare class Mark extends GrammarBase implements IMark {
68
68
  protected evaluateJoin(data: any[]): void;
69
69
  protected evaluateState(elements: IElement[], stateSpec: MarkStateSpec, parameters: any): void;
70
70
  protected evaluateGroupEncode(elements: IElement[], groupEncode: any, parameters: any): {};
71
+ protected getChannelsFromConfig(element?: IElement): {
72
+ pickable: boolean;
73
+ };
71
74
  protected evaluateEncode(elements: IElement[], encoders: any, parameters: any, noGroupEncode?: boolean): void;
72
75
  addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any): any;
73
76
  parseRenderContext(data: any[], parameters: any): {
package/es/view/mark.js CHANGED
@@ -20,7 +20,7 @@ import { parseTransformSpec } from "../parse/transform";
20
20
 
21
21
  import { createElement } from "../graph/util/element";
22
22
 
23
- import { invokeEncoder, invokeEncoderToItems } from "../graph/mark/encode";
23
+ import { invokeEncoder } from "../graph/mark/encode";
24
24
 
25
25
  import { transformsByType } from "../graph/attributes";
26
26
 
@@ -267,16 +267,9 @@ export class Mark extends GrammarBase {
267
267
  this.animate.updateState(spec.animationState)), this.markType !== GrammarMarkType.group ? (isNil(spec.zIndex) || this.graphicItem.setAttribute("zIndex", spec.zIndex),
268
268
  isNil(spec.clip) || this.graphicItem.setAttribute("clip", spec.clip), isNil(spec.clipPath) || this.graphicItem.setAttribute("path", isArray(spec.clipPath) ? spec.clipPath : spec.clipPath(this.elements)),
269
269
  this.elementMap.forEach((element => {
270
- element.updateGraphicItem({
271
- interactive: spec.interactive
272
- });
270
+ element.updateGraphicItem();
273
271
  }))) : this.elementMap.forEach((element => {
274
- element.updateGraphicItem({
275
- clip: spec.clip,
276
- zIndex: spec.zIndex,
277
- interactive: spec.interactive,
278
- clipPath: spec.clipPath
279
- });
272
+ element.updateGraphicItem();
280
273
  }));
281
274
  }
282
275
  evaluateJoin(data) {
@@ -316,14 +309,6 @@ export class Mark extends GrammarBase {
316
309
  }));
317
310
  }
318
311
  evaluateGroupEncode(elements, groupEncode, parameters) {
319
- var _a;
320
- if (this.markType === GrammarMarkType.group) {
321
- const el = this.elements[0], nextAttrs = {}, items = [ Object.assign({}, null === (_a = el.items) || void 0 === _a ? void 0 : _a[0], {
322
- nextAttrs: nextAttrs
323
- }) ];
324
- return invokeEncoderToItems(el, items, groupEncode, parameters), this._groupEncodeResult = nextAttrs,
325
- nextAttrs;
326
- }
327
312
  if (!this._groupKeys || !groupEncode) return;
328
313
  const res = {};
329
314
  return this._groupKeys.forEach((key => {
@@ -331,7 +316,14 @@ export class Mark extends GrammarBase {
331
316
  el && (res[key] = invokeEncoder(groupEncode, el.items && el.items[0] && el.items[0].datum, el, parameters));
332
317
  })), this._groupEncodeResult = res, res;
333
318
  }
319
+ getChannelsFromConfig(element) {
320
+ const spec = this.spec;
321
+ return isNil(spec.interactive) ? null : {
322
+ pickable: spec.interactive
323
+ };
324
+ }
334
325
  evaluateEncode(elements, encoders, parameters, noGroupEncode) {
326
+ const initAttrs = this.getChannelsFromConfig();
335
327
  if (encoders) {
336
328
  this.emit(HOOK_EVENT.BEFORE_ELEMENT_ENCODE, {
337
329
  encoders: encoders,
@@ -339,12 +331,12 @@ export class Mark extends GrammarBase {
339
331
  }, this);
340
332
  const groupEncodeAttrs = noGroupEncode ? null : this.evaluateGroupEncode(elements, encoders[BuiltInEncodeNames.group], parameters);
341
333
  elements.forEach((element => {
342
- this.markType === GrammarMarkType.group && groupEncodeAttrs ? element.items.forEach((item => {
343
- item.nextAttrs = Object.assign(item.nextAttrs, groupEncodeAttrs);
344
- })) : this.markType === GrammarMarkType.glyph && this._groupEncodeResult ? element.items.forEach((item => {
345
- item.nextAttrs = Object.assign(item.nextAttrs, this._groupEncodeResult[element.groupKey]);
346
- })) : (null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey]) && !this.isCollectionMark() && element.items.forEach((item => {
347
- item.nextAttrs = Object.assign(item.nextAttrs, groupEncodeAttrs[element.groupKey]);
334
+ this.markType === GrammarMarkType.glyph && this._groupEncodeResult ? element.items.forEach((item => {
335
+ item.nextAttrs = Object.assign(item.nextAttrs, initAttrs, this._groupEncodeResult[element.groupKey]);
336
+ })) : (null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey]) && !this.isCollectionMark() ? element.items.forEach((item => {
337
+ item.nextAttrs = Object.assign(item.nextAttrs, initAttrs, groupEncodeAttrs[element.groupKey]);
338
+ })) : initAttrs && element.items.forEach((item => {
339
+ item.nextAttrs = Object.assign(item.nextAttrs, initAttrs);
348
340
  })), element.encodeItems(element.items, encoders, this._isReentered, parameters);
349
341
  })), this._isReentered = !1, this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters),
350
342
  elements.forEach((element => {
@@ -354,7 +346,7 @@ export class Mark extends GrammarBase {
354
346
  parameters: parameters
355
347
  }, this);
356
348
  } else elements.forEach((element => {
357
- element.initGraphicItem();
349
+ element.initGraphicItem(initAttrs);
358
350
  }));
359
351
  }
360
352
  addGraphicItem(attrs, groupKey, newGraphicItem) {
@@ -526,7 +518,8 @@ export class Mark extends GrammarBase {
526
518
  }
527
519
  initEvent() {
528
520
  if (this._delegateEvent) {
529
- this.view.renderer.stage().on("*", this._delegateEvent);
521
+ const stage = this.view.renderer.stage();
522
+ stage && stage.on("*", this._delegateEvent);
530
523
  }
531
524
  }
532
525
  releaseEvent() {
@@ -537,9 +530,9 @@ export class Mark extends GrammarBase {
537
530
  }
538
531
  clear() {
539
532
  var _a;
540
- super.clear(), this.transforms = null, this.elementMap = null, this.elements = null,
533
+ this.releaseEvent(), this.transforms = null, this.elementMap = null, this.elements = null,
541
534
  this.graphicItem = null, this.animate = null, null === (_a = this.group) || void 0 === _a || _a.removeChild(this),
542
- this.group = null;
535
+ this.group = null, super.clear();
543
536
  }
544
537
  prepareRelease() {
545
538
  this.animate.stop(), this.elementMap.forEach((element => element.diffState = DiffState.exit)),