@visactor/vgrammar-core 0.14.0-alpha.1 → 0.14.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/cjs/component/axis.d.ts +0 -2
  2. package/cjs/component/axis.js +1 -15
  3. package/cjs/component/axis.js.map +1 -1
  4. package/cjs/component/grid.d.ts +0 -2
  5. package/cjs/component/grid.js +1 -15
  6. package/cjs/component/grid.js.map +1 -1
  7. package/cjs/component/index.d.ts +2 -2
  8. package/cjs/component/index.js +1 -21
  9. package/cjs/component/index.js.map +1 -1
  10. package/cjs/core/factory.d.ts +1 -8
  11. package/cjs/core/factory.js +1 -8
  12. package/cjs/core/factory.js.map +1 -1
  13. package/cjs/glyph/boxplot.js +5 -5
  14. package/cjs/glyph/boxplot.js.map +1 -1
  15. package/cjs/glyph/link-path.js +2 -2
  16. package/cjs/glyph/link-path.js.map +1 -1
  17. package/cjs/glyph/ripple.js +2 -3
  18. package/cjs/glyph/ripple.js.map +1 -1
  19. package/cjs/glyph/tree-path.js +2 -2
  20. package/cjs/glyph/tree-path.js.map +1 -1
  21. package/cjs/glyph/violin.js +4 -4
  22. package/cjs/glyph/violin.js.map +1 -1
  23. package/cjs/glyph/wave.js +2 -3
  24. package/cjs/glyph/wave.js.map +1 -1
  25. package/cjs/graph/animation/animation/fade.js +4 -4
  26. package/cjs/graph/animation/animation/fade.js.map +1 -1
  27. package/cjs/graph/animation/animation/grow-cartesian.js +14 -14
  28. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  29. package/cjs/graph/animation/animation/grow-interval.js +9 -9
  30. package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
  31. package/cjs/graph/animation/animation/grow-points.js +9 -9
  32. package/cjs/graph/animation/animation/grow-points.js.map +1 -1
  33. package/cjs/graph/animation/animation/grow-polar.js +24 -24
  34. package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
  35. package/cjs/graph/animation/animation/move.js +6 -6
  36. package/cjs/graph/animation/animation/move.js.map +1 -1
  37. package/cjs/graph/animation/animation/rotate.js +5 -5
  38. package/cjs/graph/animation/animation/rotate.js.map +1 -1
  39. package/cjs/graph/animation/animation/scale.js +5 -5
  40. package/cjs/graph/animation/animation/scale.js.map +1 -1
  41. package/cjs/graph/animation/animation/update.js +2 -2
  42. package/cjs/graph/animation/animation/update.js.map +1 -1
  43. package/cjs/graph/animation/animator.js +6 -1
  44. package/cjs/graph/animation/animator.js.map +1 -1
  45. package/cjs/graph/animation/morph.d.ts +12 -2
  46. package/cjs/graph/animation/morph.js +163 -76
  47. package/cjs/graph/animation/morph.js.map +1 -1
  48. package/cjs/graph/attributes/line.js.map +1 -1
  49. package/cjs/graph/canvas-renderer.d.ts +1 -1
  50. package/cjs/graph/canvas-renderer.js +4 -4
  51. package/cjs/graph/canvas-renderer.js.map +1 -1
  52. package/cjs/graph/element.d.ts +2 -1
  53. package/cjs/graph/element.js +20 -19
  54. package/cjs/graph/element.js.map +1 -1
  55. package/cjs/graph/glyph-element.js +3 -4
  56. package/cjs/graph/glyph-element.js.map +1 -1
  57. package/cjs/graph/layout/layout.d.ts +0 -1
  58. package/cjs/graph/layout/layout.js +2 -8
  59. package/cjs/graph/layout/layout.js.map +1 -1
  60. package/cjs/graph/mark/graphic.js +8 -14
  61. package/cjs/graph/mark/graphic.js.map +1 -1
  62. package/cjs/graph/util/element.d.ts +2 -0
  63. package/cjs/graph/util/element.js +10 -0
  64. package/cjs/graph/util/element.js.map +1 -0
  65. package/cjs/graph/util/point.js +26 -10
  66. package/cjs/graph/util/point.js.map +1 -1
  67. package/cjs/index.d.ts +1 -8
  68. package/cjs/index.js +2 -66
  69. package/cjs/index.js.map +1 -1
  70. package/cjs/interactions/brush-base.js +2 -1
  71. package/cjs/interactions/brush-filter.js +1 -2
  72. package/cjs/interactions/fish-eye.js +2 -1
  73. package/cjs/interactions/index.js +1 -2
  74. package/cjs/interactions/tooltip.js +1 -1
  75. package/cjs/parse/event.d.ts +2 -0
  76. package/cjs/parse/event.js +10 -4
  77. package/cjs/parse/event.js.map +1 -1
  78. package/cjs/parse/util.js.map +1 -1
  79. package/cjs/types/animate.d.ts +1 -0
  80. package/cjs/types/animate.js.map +1 -1
  81. package/cjs/types/element.d.ts +5 -1
  82. package/cjs/types/element.js.map +1 -1
  83. package/cjs/types/morph.d.ts +2 -1
  84. package/cjs/types/morph.js.map +1 -1
  85. package/cjs/types/renderer.d.ts +1 -6
  86. package/cjs/types/renderer.js.map +1 -1
  87. package/cjs/view/View.d.ts +6 -3
  88. package/cjs/view/View.js +105 -52
  89. package/cjs/view/View.js.map +1 -1
  90. package/cjs/view/animate.js +1 -2
  91. package/cjs/view/animate.js.map +1 -1
  92. package/cjs/view/constants.d.ts +0 -2
  93. package/cjs/view/constants.js +2 -3
  94. package/cjs/view/constants.js.map +1 -1
  95. package/cjs/view/events.d.ts +1 -0
  96. package/cjs/view/events.js +17 -3
  97. package/cjs/view/events.js.map +1 -1
  98. package/cjs/view/glyph.d.ts +0 -4
  99. package/cjs/view/glyph.js +3 -12
  100. package/cjs/view/glyph.js.map +1 -1
  101. package/cjs/view/grammar-record.js +2 -3
  102. package/cjs/view/grammar-record.js.map +1 -1
  103. package/cjs/view/group.js +3 -3
  104. package/cjs/view/group.js.map +1 -1
  105. package/cjs/view/mark.d.ts +0 -2
  106. package/cjs/view/mark.js +28 -31
  107. package/cjs/view/mark.js.map +1 -1
  108. package/es/component/axis.d.ts +0 -2
  109. package/es/component/axis.js +0 -10
  110. package/es/component/axis.js.map +1 -1
  111. package/es/component/grid.d.ts +0 -2
  112. package/es/component/grid.js +0 -10
  113. package/es/component/grid.js.map +1 -1
  114. package/es/component/index.d.ts +2 -2
  115. package/es/component/index.js +2 -2
  116. package/es/component/index.js.map +1 -1
  117. package/es/core/factory.d.ts +1 -8
  118. package/es/core/factory.js +1 -8
  119. package/es/core/factory.js.map +1 -1
  120. package/es/glyph/boxplot.js +2 -4
  121. package/es/glyph/boxplot.js.map +1 -1
  122. package/es/glyph/link-path.js +2 -4
  123. package/es/glyph/link-path.js.map +1 -1
  124. package/es/glyph/ripple.js +1 -3
  125. package/es/glyph/ripple.js.map +1 -1
  126. package/es/glyph/tree-path.js +2 -4
  127. package/es/glyph/tree-path.js.map +1 -1
  128. package/es/glyph/violin.js +2 -4
  129. package/es/glyph/violin.js.map +1 -1
  130. package/es/glyph/wave.js +1 -3
  131. package/es/glyph/wave.js.map +1 -1
  132. package/es/graph/animation/animation/fade.js +4 -4
  133. package/es/graph/animation/animation/fade.js.map +1 -1
  134. package/es/graph/animation/animation/grow-cartesian.js +14 -14
  135. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  136. package/es/graph/animation/animation/grow-interval.js +9 -9
  137. package/es/graph/animation/animation/grow-interval.js.map +1 -1
  138. package/es/graph/animation/animation/grow-points.js +9 -9
  139. package/es/graph/animation/animation/grow-points.js.map +1 -1
  140. package/es/graph/animation/animation/grow-polar.js +24 -24
  141. package/es/graph/animation/animation/grow-polar.js.map +1 -1
  142. package/es/graph/animation/animation/move.js +6 -6
  143. package/es/graph/animation/animation/move.js.map +1 -1
  144. package/es/graph/animation/animation/rotate.js +4 -4
  145. package/es/graph/animation/animation/rotate.js.map +1 -1
  146. package/es/graph/animation/animation/scale.js +5 -5
  147. package/es/graph/animation/animation/scale.js.map +1 -1
  148. package/es/graph/animation/animation/update.js +3 -1
  149. package/es/graph/animation/animation/update.js.map +1 -1
  150. package/es/graph/animation/animator.js +6 -1
  151. package/es/graph/animation/animator.js.map +1 -1
  152. package/es/graph/animation/morph.d.ts +12 -2
  153. package/es/graph/animation/morph.js +159 -72
  154. package/es/graph/animation/morph.js.map +1 -1
  155. package/es/graph/attributes/line.js.map +1 -1
  156. package/es/graph/canvas-renderer.d.ts +1 -1
  157. package/es/graph/canvas-renderer.js +5 -5
  158. package/es/graph/canvas-renderer.js.map +1 -1
  159. package/es/graph/element.d.ts +2 -1
  160. package/es/graph/element.js +20 -17
  161. package/es/graph/element.js.map +1 -1
  162. package/es/graph/glyph-element.js +5 -3
  163. package/es/graph/glyph-element.js.map +1 -1
  164. package/es/graph/layout/layout.d.ts +0 -1
  165. package/es/graph/layout/layout.js +0 -6
  166. package/es/graph/layout/layout.js.map +1 -1
  167. package/es/graph/mark/graphic.js +7 -13
  168. package/es/graph/mark/graphic.js.map +1 -1
  169. package/es/graph/util/element.d.ts +2 -0
  170. package/es/graph/util/element.js +8 -0
  171. package/es/graph/util/element.js.map +1 -0
  172. package/es/graph/util/point.js +26 -10
  173. package/es/graph/util/point.js.map +1 -1
  174. package/es/index.d.ts +1 -8
  175. package/es/index.js +1 -29
  176. package/es/index.js.map +1 -1
  177. package/es/interactions/element-active.js +2 -1
  178. package/es/interactions/element-highlight-by-group.js +1 -2
  179. package/es/interactions/fish-eye.js +1 -1
  180. package/es/parse/event.d.ts +2 -0
  181. package/es/parse/event.js +7 -3
  182. package/es/parse/event.js.map +1 -1
  183. package/es/parse/option.js +2 -1
  184. package/es/parse/scale.js +1 -2
  185. package/es/parse/util.js.map +1 -1
  186. package/es/types/animate.d.ts +1 -0
  187. package/es/types/animate.js.map +1 -1
  188. package/es/types/element.d.ts +5 -1
  189. package/es/types/element.js.map +1 -1
  190. package/es/types/morph.d.ts +2 -1
  191. package/es/types/morph.js.map +1 -1
  192. package/es/types/renderer.d.ts +1 -6
  193. package/es/types/renderer.js.map +1 -1
  194. package/es/view/View.d.ts +6 -3
  195. package/es/view/View.js +114 -53
  196. package/es/view/View.js.map +1 -1
  197. package/es/view/animate.js +1 -2
  198. package/es/view/animate.js.map +1 -1
  199. package/es/view/constants.d.ts +0 -2
  200. package/es/view/constants.js +0 -4
  201. package/es/view/constants.js.map +1 -1
  202. package/es/view/events.d.ts +1 -0
  203. package/es/view/events.js +15 -1
  204. package/es/view/events.js.map +1 -1
  205. package/es/view/glyph.d.ts +0 -4
  206. package/es/view/glyph.js +0 -11
  207. package/es/view/glyph.js.map +1 -1
  208. package/es/view/grammar-record.js +2 -3
  209. package/es/view/grammar-record.js.map +1 -1
  210. package/es/view/group.js +4 -2
  211. package/es/view/group.js.map +1 -1
  212. package/es/view/mark.d.ts +0 -2
  213. package/es/view/mark.js +30 -32
  214. package/es/view/mark.js.map +1 -1
  215. package/package.json +12 -12
  216. package/cjs/graph/view-diff.d.ts +0 -8
  217. package/cjs/graph/view-diff.js +0 -93
  218. package/cjs/graph/view-diff.js.map +0 -1
  219. package/cjs/view/mark-animate-mixin.d.ts +0 -1
  220. package/cjs/view/mark-animate-mixin.js +0 -29
  221. package/cjs/view/mark-animate-mixin.js.map +0 -1
  222. package/cjs/view/view-animate-mixin.d.ts +0 -1
  223. package/cjs/view/view-animate-mixin.js +0 -26
  224. package/cjs/view/view-animate-mixin.js.map +0 -1
  225. package/cjs/view/view-event-mixin.d.ts +0 -1
  226. package/cjs/view/view-event-mixin.js +0 -92
  227. package/cjs/view/view-event-mixin.js.map +0 -1
  228. package/cjs/view/view-morph-mixin.d.ts +0 -1
  229. package/cjs/view/view-morph-mixin.js +0 -32
  230. package/cjs/view/view-morph-mixin.js.map +0 -1
  231. package/es/graph/view-diff.d.ts +0 -8
  232. package/es/graph/view-diff.js +0 -89
  233. package/es/graph/view-diff.js.map +0 -1
  234. package/es/view/mark-animate-mixin.d.ts +0 -1
  235. package/es/view/mark-animate-mixin.js +0 -25
  236. package/es/view/mark-animate-mixin.js.map +0 -1
  237. package/es/view/view-animate-mixin.d.ts +0 -1
  238. package/es/view/view-animate-mixin.js +0 -16
  239. package/es/view/view-animate-mixin.js.map +0 -1
  240. package/es/view/view-event-mixin.d.ts +0 -1
  241. package/es/view/view-event-mixin.js +0 -90
  242. package/es/view/view-event-mixin.js.map +0 -1
  243. package/es/view/view-morph-mixin.d.ts +0 -1
  244. package/es/view/view-morph-mixin.js +0 -22
  245. package/es/view/view-morph-mixin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/grammar-record.ts"],"names":[],"mappings":"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","file":"grammar-record.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n BuiltInGrammarType,\n ICoordinate,\n IData,\n IGrammarBase,\n IMark,\n IScale,\n ISignal,\n IRecordedGrammars,\n IGroupMark,\n IMarkTreeNode,\n IRecordedTreeGrammars\n} from '../types';\nimport { GrammarMarkType } from '../graph/enums';\n\nexport class RecordedGrammars implements IRecordedGrammars {\n private _warning: (key: string, grammar: IGrammarBase) => void;\n private _mapKey: (grammar: IGrammarBase) => string;\n private _grammars: Record<BuiltInGrammarType | 'customized', IGrammarBase[]> = {\n signal: [],\n data: [],\n scale: [],\n coordinate: [],\n mark: [],\n customized: []\n };\n // map key might not be unique\n private _grammarMap: Record<BuiltInGrammarType | 'customized', Record<string, IGrammarBase>> = {\n signal: {},\n data: {},\n scale: {},\n coordinate: {},\n mark: {},\n customized: {}\n };\n private _size: number = 0;\n\n constructor(\n mapKey: string | ((grammar: IGrammarBase) => string),\n warningWhenDuplicated?: (key: string, grammar: IGrammarBase) => void\n ) {\n this._mapKey = isString(mapKey) ? grammar => grammar[mapKey] : mapKey;\n this._warning = warningWhenDuplicated;\n }\n\n record(grammar: IGrammarBase) {\n const grammarType = grammar.grammarType;\n const key = this._mapKey(grammar);\n if (this._grammarMap[grammarType]) {\n this._grammars[grammarType].push(grammar);\n if (!isNil(key)) {\n // ignore grammar if key is duplicated\n if (this._grammarMap[grammarType][key]) {\n this._warning?.(key, grammar);\n } else {\n this._grammarMap[grammarType][key] = grammar;\n }\n }\n } else {\n this._grammars.customized.push(grammar);\n if (!isNil(key)) {\n // ignore grammar if key is duplicated\n if (this._grammarMap.customized[key]) {\n this._warning?.(key, grammar);\n } else {\n this._grammarMap.customized[key] = grammar;\n }\n }\n }\n this._size += 1;\n return this;\n }\n\n unrecord(grammar: IGrammarBase) {\n const grammarType = grammar.grammarType;\n const key = this._mapKey(grammar);\n if (this._grammarMap[grammarType]) {\n this._grammars[grammarType] = this._grammars[grammarType].filter(\n (storedGrammar: IGrammarBase) => storedGrammar !== grammar\n );\n if (!isNil(key) && this._grammarMap[grammarType][key] === grammar) {\n delete this._grammarMap[grammarType][key];\n }\n } else {\n this._grammars.customized = this._grammars.customized.filter(\n (storedGrammar: IGrammarBase) => storedGrammar !== grammar\n );\n if (!isNil(key) && this._grammarMap.customized[key] === grammar) {\n delete this._grammarMap.customized[key];\n }\n }\n this._size -= 1;\n return this;\n }\n\n size() {\n return this._size;\n }\n\n getSignal<T>(key: string): ISignal<T> | null {\n return (this._grammarMap.signal[key] as ISignal<T>) ?? null;\n }\n getData(key: string): IData | null {\n return (this._grammarMap.data[key] as IData) ?? null;\n }\n getScale(key: string): IScale | null {\n return (this._grammarMap.scale[key] as IScale) ?? null;\n }\n getCoordinate(key: string): ICoordinate | null {\n return (this._grammarMap.coordinate[key] as ICoordinate) ?? null;\n }\n getMark(key: string): IMark | null {\n return (this._grammarMap.mark[key] as IMark) ?? null;\n }\n getCustomized(key: string): IGrammarBase | null {\n return this._grammarMap.customized[key] ?? null;\n }\n getGrammar(key: string): IGrammarBase | null {\n if (this._grammarMap.data[key]) {\n return this._grammarMap.data[key];\n } else if (this._grammarMap.signal[key]) {\n return this._grammarMap.signal[key];\n } else if (this._grammarMap.scale[key]) {\n return this._grammarMap.scale[key];\n } else if (this._grammarMap.coordinate[key]) {\n return this._grammarMap.coordinate[key];\n } else if (this._grammarMap.mark[key]) {\n return this._grammarMap.mark[key];\n } else if (this._grammarMap.customized[key]) {\n return this._grammarMap.customized[key];\n }\n return null;\n }\n\n getAllSignals(): ISignal<any>[] {\n return this._grammars.signal as ISignal<any>[];\n }\n getAllData(): IData[] {\n return this._grammars.data as IData[];\n }\n getAllScales(): IScale[] {\n return this._grammars.scale as IScale[];\n }\n getAllCoordinates(): ICoordinate[] {\n return this._grammars.coordinate as ICoordinate[];\n }\n getAllMarks(): IMark[] {\n return this._grammars.mark as IMark[];\n }\n getAllCustomized(): IGrammarBase[] {\n return this._grammars.customized;\n }\n\n traverse(func: (grammar: IGrammarBase) => boolean | void) {\n Object.values(this._grammars ?? {}).forEach(grammars =>\n (grammars ?? []).forEach(grammar => {\n // stop traversing when func returns true\n if (func.call(null, grammar)) {\n return;\n }\n })\n );\n }\n\n find(func: (grammar: IGrammarBase) => boolean) {\n let targetGrammar: IGrammarBase = null;\n this.traverse(grammar => {\n if (func.call(null, grammar) === true) {\n targetGrammar = grammar;\n return true;\n }\n return false;\n });\n return targetGrammar;\n }\n\n filter(func: (grammar: IGrammarBase) => boolean) {\n const targetGrammars: IGrammarBase[] = [];\n this.traverse(grammar => {\n if (func.call(null, grammar) === true) {\n targetGrammars.push(grammar);\n }\n });\n return targetGrammars;\n }\n\n clear() {\n this._size = 0;\n this._grammars = { signal: [], data: [], scale: [], coordinate: [], mark: [], customized: [] };\n this._grammarMap = { signal: {}, data: {}, scale: {}, coordinate: {}, mark: {}, customized: {} };\n }\n\n release() {\n this._size = 0;\n this._grammars = null;\n this._grammarMap = null;\n }\n}\n\nexport class RecordedTreeGrammars extends RecordedGrammars implements IRecordedTreeGrammars {\n private _markNodes: IMarkTreeNode[] = [];\n\n record(grammar: IGrammarBase) {\n super.record(grammar);\n if (grammar.grammarType === 'mark') {\n const mark = grammar as IMark;\n const currentNode: IMarkTreeNode = {\n mark: mark,\n parent: null,\n children: []\n };\n this._markNodes.forEach(node => {\n const targetMark = node.mark;\n if (targetMark.markType === GrammarMarkType.group && (targetMark as IGroupMark).includesChild(mark, false)) {\n node.children.push(currentNode);\n currentNode.parent = node;\n } else if (mark.markType === GrammarMarkType.group && (mark as IGroupMark).includesChild(targetMark, false)) {\n currentNode.children.push(node);\n node.parent = currentNode;\n }\n });\n this._markNodes.push(currentNode);\n }\n return this;\n }\n\n unrecord(grammar: IGrammarBase) {\n super.unrecord(grammar);\n if (grammar.grammarType === 'mark') {\n const mark = grammar as IMark;\n const currentNode = this._markNodes.find(node => node.mark === mark);\n this._markNodes.forEach(node => {\n const targetMark = node.mark;\n if (targetMark.markType === GrammarMarkType.group && (targetMark as IGroupMark).includesChild(mark, false)) {\n node.children = node.children.filter(n => n !== currentNode);\n currentNode.parent = null;\n } else if (mark.markType === GrammarMarkType.group && (mark as IGroupMark).includesChild(targetMark, false)) {\n currentNode.children = currentNode.children.filter(n => n !== node);\n node.parent = null;\n }\n });\n this._markNodes = this._markNodes.filter(n => n !== currentNode);\n }\n return this;\n }\n\n getAllMarkNodes() {\n return this._markNodes;\n }\n\n clear() {\n super.clear();\n this._markNodes = [];\n }\n\n release() {\n super.release();\n this._markNodes = null;\n }\n}\n\nexport const releaseUpMarkNode = (node: IMarkTreeNode) => {\n // if (node.mark.get)\n};\n"]}
1
+ {"version":3,"sources":["../src/view/grammar-record.ts"],"names":[],"mappings":"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","file":"grammar-record.js","sourcesContent":["import { isNil, isString } from '@visactor/vutils';\nimport type {\n BuiltInGrammarType,\n ICoordinate,\n IData,\n IGrammarBase,\n IMark,\n IScale,\n ISignal,\n IRecordedGrammars,\n IGroupMark,\n IMarkTreeNode,\n IRecordedTreeGrammars\n} from '../types';\nimport { GrammarMarkType } from '../graph/enums';\n\nexport class RecordedGrammars implements IRecordedGrammars {\n private _warning: (key: string, grammar: IGrammarBase) => void;\n private _mapKey: (grammar: IGrammarBase) => string;\n private _grammars: Record<BuiltInGrammarType | 'customized', IGrammarBase[]> = {\n signal: [],\n data: [],\n scale: [],\n coordinate: [],\n mark: [],\n customized: []\n };\n // map key might not be unique\n private _grammarMap: Record<BuiltInGrammarType | 'customized', Record<string, IGrammarBase>> = {\n signal: {},\n data: {},\n scale: {},\n coordinate: {},\n mark: {},\n customized: {}\n };\n private _size: number = 0;\n\n constructor(\n mapKey: string | ((grammar: IGrammarBase) => string),\n warningWhenDuplicated?: (key: string, grammar: IGrammarBase) => void\n ) {\n this._mapKey = isString(mapKey) ? grammar => grammar[mapKey] : mapKey;\n this._warning = warningWhenDuplicated;\n }\n\n record(grammar: IGrammarBase) {\n const grammarType = grammar.grammarType;\n const key = this._mapKey(grammar);\n if (this._grammarMap[grammarType]) {\n this._grammars[grammarType].push(grammar);\n if (!isNil(key)) {\n // ignore grammar if key is duplicated\n if (this._grammarMap[grammarType][key]) {\n this._warning?.(key, grammar);\n } else {\n this._grammarMap[grammarType][key] = grammar;\n }\n }\n } else {\n this._grammars.customized.push(grammar);\n if (!isNil(key)) {\n // ignore grammar if key is duplicated\n if (this._grammarMap.customized[key]) {\n this._warning?.(key, grammar);\n } else {\n this._grammarMap.customized[key] = grammar;\n }\n }\n }\n this._size += 1;\n return this;\n }\n\n unrecord(grammar: IGrammarBase) {\n const grammarType = grammar.grammarType;\n const key = this._mapKey(grammar);\n if (this._grammarMap[grammarType]) {\n this._grammars[grammarType] = this._grammars[grammarType].filter(\n (storedGrammar: IGrammarBase) => storedGrammar !== grammar\n );\n if (!isNil(key) && this._grammarMap[grammarType][key] === grammar) {\n delete this._grammarMap[grammarType][key];\n }\n } else {\n this._grammars.customized = this._grammars.customized.filter(\n (storedGrammar: IGrammarBase) => storedGrammar !== grammar\n );\n if (!isNil(key) && this._grammarMap.customized[key] === grammar) {\n delete this._grammarMap.customized[key];\n }\n }\n this._size -= 1;\n return this;\n }\n\n size() {\n return this._size;\n }\n\n getSignal<T>(key: string): ISignal<T> | null {\n return (this._grammarMap.signal[key] as ISignal<T>) ?? null;\n }\n getData(key: string): IData | null {\n return (this._grammarMap.data[key] as IData) ?? null;\n }\n getScale(key: string): IScale | null {\n return (this._grammarMap.scale[key] as IScale) ?? null;\n }\n getCoordinate(key: string): ICoordinate | null {\n return (this._grammarMap.coordinate[key] as ICoordinate) ?? null;\n }\n getMark(key: string): IMark | null {\n return (this._grammarMap.mark[key] as IMark) ?? null;\n }\n getCustomized(key: string): IGrammarBase | null {\n return this._grammarMap.customized[key] ?? null;\n }\n getGrammar(key: string): IGrammarBase | null {\n if (this._grammarMap.data[key]) {\n return this._grammarMap.data[key];\n } else if (this._grammarMap.signal[key]) {\n return this._grammarMap.signal[key];\n } else if (this._grammarMap.scale[key]) {\n return this._grammarMap.scale[key];\n } else if (this._grammarMap.coordinate[key]) {\n return this._grammarMap.coordinate[key];\n } else if (this._grammarMap.mark[key]) {\n return this._grammarMap.mark[key];\n } else if (this._grammarMap.customized[key]) {\n return this._grammarMap.customized[key];\n }\n return null;\n }\n\n getAllSignals(): ISignal<any>[] {\n return this._grammars.signal as ISignal<any>[];\n }\n getAllData(): IData[] {\n return this._grammars.data as IData[];\n }\n getAllScales(): IScale[] {\n return this._grammars.scale as IScale[];\n }\n getAllCoordinates(): ICoordinate[] {\n return this._grammars.coordinate as ICoordinate[];\n }\n getAllMarks(): IMark[] {\n return this._grammars.mark as IMark[];\n }\n getAllCustomized(): IGrammarBase[] {\n return this._grammars.customized;\n }\n\n traverse(func: (grammar: IGrammarBase) => boolean | void) {\n Object.values(this._grammars ?? {}).forEach(grammars =>\n (grammars ?? []).forEach(grammar => {\n // stop traversing when func returns true\n if (func.call(null, grammar)) {\n return;\n }\n })\n );\n }\n\n find(func: (grammar: IGrammarBase) => boolean) {\n let targetGrammar: IGrammarBase = null;\n this.traverse(grammar => {\n if (func.call(null, grammar) === true) {\n targetGrammar = grammar;\n return true;\n }\n return false;\n });\n return targetGrammar;\n }\n\n filter(func: (grammar: IGrammarBase) => boolean) {\n const targetGrammars: IGrammarBase[] = [];\n this.traverse(grammar => {\n if (func.call(null, grammar) === true) {\n targetGrammars.push(grammar);\n }\n });\n return targetGrammars;\n }\n\n clear() {\n this._size = 0;\n this._grammars = { signal: [], data: [], scale: [], coordinate: [], mark: [], customized: [] };\n this._grammarMap = { signal: {}, data: {}, scale: {}, coordinate: {}, mark: {}, customized: {} };\n }\n\n release() {\n this._size = 0;\n this._grammars = null;\n this._grammarMap = null;\n }\n}\n\nexport class RecordedTreeGrammars extends RecordedGrammars implements IRecordedTreeGrammars {\n private _markNodes: IMarkTreeNode[] = [];\n\n record(grammar: IGrammarBase) {\n super.record(grammar);\n if (grammar.grammarType === 'mark') {\n const mark = grammar as IMark;\n const currentNode: IMarkTreeNode = {\n mark: mark,\n parent: null,\n children: []\n };\n this._markNodes.forEach(node => {\n const targetMark = node.mark;\n if (targetMark.markType === GrammarMarkType.group && (targetMark as IGroupMark).includesChild(mark, false)) {\n node.children.push(currentNode);\n currentNode.parent = node;\n } else if (mark.markType === GrammarMarkType.group && (mark as IGroupMark).includesChild(targetMark, false)) {\n currentNode.children.push(node);\n node.parent = currentNode;\n }\n });\n this._markNodes.push(currentNode);\n }\n return this;\n }\n\n unrecord(grammar: IGrammarBase) {\n super.unrecord(grammar);\n if (grammar.grammarType === 'mark') {\n const mark = grammar as IMark;\n const currentNode = this._markNodes.find(node => node.mark === mark);\n this._markNodes.forEach(node => {\n const targetMark = node.mark;\n if (targetMark.markType === GrammarMarkType.group && node.children.includes(currentNode)) {\n node.children = node.children.filter(n => n !== currentNode);\n currentNode.parent = null;\n } else if (mark.markType === GrammarMarkType.group && currentNode.children.includes(node)) {\n currentNode.children = currentNode.children.filter(n => n !== node);\n node.parent = null;\n }\n });\n this._markNodes = this._markNodes.filter(n => n !== currentNode);\n }\n return this;\n }\n\n getAllMarkNodes() {\n return this._markNodes;\n }\n\n clear() {\n super.clear();\n this._markNodes = [];\n }\n\n release() {\n super.release();\n this._markNodes = null;\n }\n}\n\nexport const releaseUpMarkNode = (node: IMarkTreeNode) => {\n // if (node.mark.get)\n};\n"]}
package/es/view/group.js CHANGED
@@ -4,6 +4,8 @@ import { DefaultKey, DefaultMarkData } from "../graph/constants";
4
4
 
5
5
  import { BuiltInEncodeNames, GrammarMarkType, HOOK_EVENT } from "../graph/enums";
6
6
 
7
+ import { createElement } from "../graph/util/element";
8
+
7
9
  import { createGraphicItem } from "../graph/util/graphic";
8
10
 
9
11
  import { Mark } from "./mark";
@@ -39,8 +41,8 @@ export class GroupMark extends Mark {
39
41
  }
40
42
  evaluateJoin(data) {
41
43
  if (!this.elements.length) {
42
- const el = this.createElement();
43
- el.updateData(DefaultKey, DefaultMarkData, (() => "")), this.elements = [ el ],
44
+ const el = createElement(this);
45
+ el.updateData(DefaultKey, DefaultMarkData, (() => ""), this.view), this.elements = [ el ],
44
46
  this.elementMap.set(DefaultKey, el);
45
47
  }
46
48
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/group.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,OAAO,SAAU,SAAQ,IAAI;IAKjC,YAAY,IAAW,EAAE,KAAkB;QACzC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,kBAAkB;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,IAAW;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,WAAW,CAAC,IAAW;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,IAAW,EAAE,aAAsB,IAAI;QACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe,CAAC,KAAK,EAAE;gBAC5C,OAAQ,KAAoB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACxD;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;SAC1B;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;QACpB,OAAO,gBAAgB,CAAC,IAAI,CAAC;IAC/B,CAAC;IAES,YAAY,CAAC,IAAW;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAEhC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACrC;IACH,CAAC;IAES,qBAAqB,CAAC,OAAkB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,MAAM,SAAS,GAAQ,EAAE,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACvB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAChC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAEnF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACzB,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;aACxB;iBAAM;gBACL,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;gBACtB,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;aACxB;SACF;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC5B,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;SACvC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,mBAAmB,CAAC,QAAoB,EAAE,WAAgB,EAAE,UAAe;;QACnF,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAA,EAAE,CAAC,KAAK,0CAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAChE,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEzD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,cAAc,CAAC,QAAoB,EAAE,QAAa,EAAE,UAAe,EAAE,aAAuB;QACpG,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE/C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;YAE5E,MAAM,gBAAgB,GAAG,aAAa;gBACpC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;YAEvF,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC3B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEpF,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;SAC5E;aAAM;YACL,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,cAAc,CAAC,KAAU,EAAE,QAAiB,EAAE,cAAoB;QAChE,MAAM,WAAW,GAAQ,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEzF,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAE/D,WAAW,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEnD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAA+B,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO,WAAW,CAAC;IACrB,CAAC;CACF","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 { 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 = this.createElement();\n\n el.updateData(DefaultKey, DefaultMarkData, () => '');\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 const paths = isFunction(spec.clipPath) ? spec.clipPath([element]) : spec.clipPath;\n\n if (paths && paths.length) {\n initAttrs.path = paths;\n } else {\n initAttrs.path = null;\n initAttrs.clip = false;\n }\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"]}
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 const paths = isFunction(spec.clipPath) ? spec.clipPath([element]) : spec.clipPath;\n\n if (paths && paths.length) {\n initAttrs.path = paths;\n } else {\n initAttrs.path = null;\n initAttrs.clip = false;\n }\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
@@ -4,7 +4,6 @@ import { Differ } from '../graph/mark/differ';
4
4
  import { GrammarBase } from './grammar-base';
5
5
  import type { GrammarType, ICoordinate, IData, IElement, IGrammarBase, IGroupMark, IMark, IMarkConfig, IView, MarkAnimationSpec, MarkFunctionType, MarkKeySpec, MarkLayoutCallback, MarkLayoutSpec, MarkSortSpec, MarkSpec, MarkStateSpec, MarkType, TransformSpec, Nil, IAnimate, MarkStateSortSpec, BaseSingleEncodeSpec } from '../types';
6
6
  import type { IBaseScale } from '@visactor/vscale';
7
- import { Element } from '../graph/element';
8
7
  export declare class Mark extends GrammarBase implements IMark {
9
8
  readonly grammarType: GrammarType;
10
9
  protected spec: MarkSpec;
@@ -66,7 +65,6 @@ export declare class Mark extends GrammarBase implements IMark {
66
65
  getFieldsByChannel(): Record<string, string>;
67
66
  protected init(stage: any, parameters: any): void;
68
67
  protected update(spec: MarkSpec): void;
69
- createElement(): Element;
70
68
  protected evaluateJoin(data: any[]): void;
71
69
  protected evaluateState(elements: IElement[], stateSpec: MarkStateSpec, parameters: any): void;
72
70
  protected evaluateGroupEncode(elements: IElement[], groupEncode: any, parameters: any): {};
package/es/view/mark.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isArray, isNil, isString } from "@visactor/vutils";
1
+ import { isArray, isNil, isString, isValid } from "@visactor/vutils";
2
2
 
3
3
  import { BridgeElementKey, CollectionMarkType, DefaultKey, DefaultMarkData, Mark3DType } from "../graph/constants";
4
4
 
@@ -6,6 +6,8 @@ import { DiffState, GrammarMarkType, LayoutState, HOOK_EVENT, GrammarTypeEnum, B
6
6
 
7
7
  import { Differ, groupData } from "../graph/mark/differ";
8
8
 
9
+ import { Animate } from "../graph/animation/animate";
10
+
9
11
  import { createGraphicItem, removeGraphicItem } from "../graph/util/graphic";
10
12
 
11
13
  import { GrammarBase } from "./grammar-base";
@@ -16,6 +18,8 @@ import { getGrammarOutput, parseField, isFunctionType } from "../parse/util";
16
18
 
17
19
  import { parseTransformSpec } from "../parse/transform";
18
20
 
21
+ import { createElement } from "../graph/util/element";
22
+
19
23
  import { invokeEncoder } from "../graph/mark/encode";
20
24
 
21
25
  import { transformsByType } from "../graph/attributes";
@@ -24,13 +28,12 @@ import getExtendedEvents from "../graph/util/events-extend";
24
28
 
25
29
  import { EVENT_SOURCE_VIEW } from "./constants";
26
30
 
27
- import { Element } from "../graph/element";
28
-
29
31
  export class Mark extends GrammarBase {
30
32
  constructor(view, markType, group) {
31
33
  super(view), this.grammarType = "mark", this.elements = [], this.elementMap = new Map,
32
- this.isUpdated = !0, this._isReentered = !1, this.differ = new Differ([]), this.markType = markType,
33
- this.spec.type = markType, this.spec.encode = {
34
+ this.isUpdated = !0, this._isReentered = !1, this.animate = new Animate(this, {}),
35
+ this.differ = new Differ([]), this.markType = markType, this.spec.type = markType,
36
+ this.spec.encode = {
34
37
  update: {}
35
38
  }, this.spec.group = group, group && (this.group = group, this.attach(group), group.appendChild(this));
36
39
  }
@@ -59,12 +62,11 @@ export class Mark extends GrammarBase {
59
62
  return this;
60
63
  }
61
64
  reuse(grammar) {
62
- var _b;
63
65
  if (grammar.grammarType !== this.grammarType) return this;
64
66
  const mark = grammar;
65
67
  return this.markType = mark.markType, this.coord = mark.coord, this.elementMap = mark.elementMap,
66
68
  this.elements = mark.elements, this.elementMap.forEach((element => element.mark = this)),
67
- this.differ = mark.differ, null === (_b = this.reuseAnimate) || void 0 === _b || _b.call(this, mark),
69
+ this.differ = mark.differ, this.animate = mark.animate, this.animate.mark = this,
68
70
  this._context = mark._context, this.graphicItem = mark.graphicItem, this.graphicIndex = mark.graphicIndex,
69
71
  this.graphicParent = mark.graphicParent, this.needClear = mark.needClear, this.isUpdated = mark.isUpdated,
70
72
  this;
@@ -233,7 +235,7 @@ export class Mark extends GrammarBase {
233
235
  })), res;
234
236
  }
235
237
  init(stage, parameters) {
236
- var _b, _c, _d, _e, _f;
238
+ var _a, _b, _c, _d;
237
239
  if (this._delegateEvent || (this._delegateEvent = (event, type) => {
238
240
  var _a;
239
241
  const activeElement = null === (_a = event.target) || void 0 === _a ? void 0 : _a[BridgeElementKey];
@@ -241,17 +243,17 @@ export class Mark extends GrammarBase {
241
243
  const extendedEvt = getExtendedEvents(this.view, event, activeElement, type, EVENT_SOURCE_VIEW);
242
244
  this.emitGrammarEvent(type, extendedEvt, activeElement);
243
245
  }
244
- }, this.initEvent()), null === (_b = this.initAnimate) || void 0 === _b || _b.call(this, this.spec),
245
- !this.group) {
246
+ }, this.initEvent()), this.animate || (this.animate = new Animate(this, this.spec.animation),
247
+ this.needAnimate() && this.animate.updateState(this.spec.animationState)), !this.group) {
246
248
  const group = getGrammarOutput(this.spec.group, parameters);
247
249
  this.group = group, group && group.appendChild(this);
248
250
  }
249
- const groupGraphicItem = this.group ? this.group.getGroupGraphicItem() : stage.defaultLayer, markIndex = null !== (_e = null === (_d = null === (_c = this.group) || void 0 === _c ? void 0 : _c.children) || void 0 === _d ? void 0 : _d.indexOf(this)) && void 0 !== _e ? _e : 0;
251
+ const groupGraphicItem = this.group ? this.group.getGroupGraphicItem() : stage.defaultLayer, markIndex = null !== (_c = null === (_b = null === (_a = this.group) || void 0 === _a ? void 0 : _a.children) || void 0 === _b ? void 0 : _b.indexOf(this)) && void 0 !== _c ? _c : 0;
250
252
  if (this.markType !== GrammarMarkType.group) {
251
253
  if (!this.graphicItem) {
252
254
  const graphicItem = createGraphicItem(this, GrammarMarkType.group, {
253
255
  pickable: !1,
254
- zIndex: null !== (_f = this.spec.zIndex) && void 0 !== _f ? _f : 0
256
+ zIndex: null !== (_d = this.spec.zIndex) && void 0 !== _d ? _d : 0
255
257
  });
256
258
  (this.spec.support3d || Mark3DType.includes(this.markType)) && graphicItem.setMode("3d"),
257
259
  graphicItem.name = `${this.id() || this.markType}`, this.graphicItem = graphicItem;
@@ -261,9 +263,8 @@ export class Mark extends GrammarBase {
261
263
  this.graphicIndex = markIndex;
262
264
  }
263
265
  update(spec) {
264
- var _b;
265
- if (this._context = this.spec.context, this.isUpdated = !0, this.renderContext.progressive || null === (_b = this.updateAnimate) || void 0 === _b || _b.call(this, spec),
266
- this.markType !== GrammarMarkType.group) {
266
+ if (this._context = this.spec.context, this.isUpdated = !0, this.renderContext.progressive || (this.animate.updateConfig(spec.animation),
267
+ this.animate.updateState(spec.animationState)), this.markType !== GrammarMarkType.group) {
267
268
  if (isNil(spec.zIndex) || this.graphicItem.setAttribute("zIndex", spec.zIndex),
268
269
  isNil(spec.clip) || this.graphicItem.setAttribute("clip", spec.clip), !isNil(spec.clipPath)) {
269
270
  const paths = isArray(spec.clipPath) ? spec.clipPath : spec.clipPath(this.elements);
@@ -279,32 +280,27 @@ export class Mark extends GrammarBase {
279
280
  element.updateGraphicItem();
280
281
  }));
281
282
  }
282
- createElement() {
283
- return new Element(this);
284
- }
285
283
  evaluateJoin(data) {
286
284
  var _a, _b, _c, _d;
287
285
  this.needClear = !0;
288
286
  const keyGetter = parseField(null !== (_c = null !== (_a = this.spec.key) && void 0 !== _a ? _a : null === (_b = this.grammarSource) || void 0 === _b ? void 0 : _b.getDataIDKey()) && void 0 !== _c ? _c : () => DefaultKey), groupKeyGetter = parseField(null !== (_d = this.spec.groupBy) && void 0 !== _d ? _d : () => DefaultKey), sort = this.spec.sort, isCollectionMark = this.isCollectionMark(), enterElements = new Set(this.elements.filter((element => element.diffState === DiffState.enter))), elements = [];
289
287
  this.differ.setCallback(((key, data, prevData) => {
290
- var _a;
291
288
  const elementKey = key;
292
289
  let element;
293
290
  if (isNil(data)) element = this.elementMap.get(elementKey), element && (element.diffState = DiffState.exit); else if (isNil(prevData)) {
294
- if (element = this.elementMap.has(elementKey) ? this.elementMap.get(elementKey) : this.createElement(),
291
+ if (element = this.elementMap.has(elementKey) ? this.elementMap.get(elementKey) : createElement(this),
295
292
  element.diffState === DiffState.exit) {
296
293
  element.diffState = DiffState.enter;
297
- const animators = null === (_a = this.animate) || void 0 === _a ? void 0 : _a.getElementAnimators(element, DiffState.exit);
298
- animators && animators.forEach((animator => animator.stop("start")));
294
+ this.animate.getElementAnimators(element, DiffState.exit).forEach((animator => animator.stop("start")));
299
295
  }
300
296
  element.diffState = DiffState.enter;
301
297
  const groupKey = isCollectionMark ? key : groupKeyGetter(data[0]);
302
- element.updateData(groupKey, data, keyGetter), this.elementMap.set(elementKey, element),
298
+ element.updateData(groupKey, data, keyGetter, this.view), this.elementMap.set(elementKey, element),
303
299
  elements.push(element);
304
300
  } else if (element = this.elementMap.get(elementKey), element) {
305
301
  element.diffState = DiffState.update;
306
302
  const groupKey = isCollectionMark ? key : groupKeyGetter(data[0]);
307
- element.updateData(groupKey, data, keyGetter), elements.push(element);
303
+ element.updateData(groupKey, data, keyGetter, this.view), elements.push(element);
308
304
  }
309
305
  enterElements.delete(element);
310
306
  }));
@@ -349,7 +345,10 @@ export class Mark extends GrammarBase {
349
345
  item.nextAttrs = Object.assign(item.nextAttrs, initAttrs, groupEncodeAttrs[element.groupKey]);
350
346
  })) : initAttrs && element.items.forEach((item => {
351
347
  item.nextAttrs = Object.assign(item.nextAttrs, initAttrs);
352
- })), element.encodeItems(element.items, encoders, this._isReentered, parameters);
348
+ })), element.encodeItems(element.items, encoders, this._isReentered, parameters),
349
+ this.isCollectionMark() && (null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey]) && isValid(groupEncodeAttrs[element.groupKey].defined) && (element.items.forEach((item => {
350
+ item.nextAttrs.defined = groupEncodeAttrs[element.groupKey].defined;
351
+ })), delete groupEncodeAttrs[element.groupKey].defined);
353
352
  })), this._isReentered = !1, this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters),
354
353
  elements.forEach((element => {
355
354
  element.encodeGraphic(this.isCollectionMark() ? null == groupEncodeAttrs ? void 0 : groupEncodeAttrs[element.groupKey] : null);
@@ -419,20 +418,20 @@ export class Mark extends GrammarBase {
419
418
  if (this.isCollectionMark()) return this._groupKeys.forEach(((key, index) => {
420
419
  const data = this.renderContext.progressive.groupedData.get(key), groupStep = this.renderContext.progressive.step, dataSlice = data.slice(currentIndex * groupStep, (currentIndex + 1) * groupStep);
421
420
  if (0 === currentIndex) {
422
- const element = this.createElement();
423
- element.diffState = DiffState.enter, element.updateData(key, dataSlice, keyGetter),
421
+ const element = createElement(this);
422
+ element.diffState = DiffState.enter, element.updateData(key, dataSlice, keyGetter, this.view),
424
423
  elements.push(element);
425
424
  } else {
426
425
  const element = this.elements[index];
427
- element.updateData(key, dataSlice, keyGetter), elements.push(element);
426
+ element.updateData(key, dataSlice, keyGetter, this.view), elements.push(element);
428
427
  }
429
428
  })), elements;
430
429
  const groupElements = {};
431
430
  return this._groupKeys.forEach((key => {
432
431
  const data = this.renderContext.progressive.groupedData.get(key), groupStep = this.renderContext.progressive.step, dataSlice = data.slice(currentIndex * groupStep, (currentIndex + 1) * groupStep), group = [];
433
432
  dataSlice.forEach((entry => {
434
- const element = this.createElement();
435
- element.diffState = DiffState.enter, element.updateData(key, [ entry ], keyGetter),
433
+ const element = createElement(this);
434
+ element.diffState = DiffState.enter, element.updateData(key, [ entry ], keyGetter, this.view),
436
435
  group.push(element), elements.push(element);
437
436
  })), groupElements[key] = group;
438
437
  })), {
@@ -547,8 +546,7 @@ export class Mark extends GrammarBase {
547
546
  this.group = null, super.clear();
548
547
  }
549
548
  prepareRelease() {
550
- var _a;
551
- null === (_a = this.animate) || void 0 === _a || _a.stop(), this.elementMap.forEach((element => element.diffState = DiffState.exit)),
549
+ this.animate.stop(), this.elementMap.forEach((element => element.diffState = DiffState.exit)),
552
550
  this._finalParameters = this.parameters();
553
551
  }
554
552
  release() {