@visactor/vgrammar-core 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/cjs/component/axis.js +9 -9
  2. package/cjs/component/axis.js.map +1 -1
  3. package/cjs/component/datazoom.js +9 -9
  4. package/cjs/component/datazoom.js.map +1 -1
  5. package/cjs/component/grid.js +18 -18
  6. package/cjs/component/grid.js.map +1 -1
  7. package/cjs/component/label.js +27 -22
  8. package/cjs/component/label.js.map +1 -1
  9. package/cjs/component/legend.js +13 -13
  10. package/cjs/component/legend.js.map +1 -1
  11. package/cjs/component/scrollbar.js +7 -7
  12. package/cjs/component/scrollbar.js.map +1 -1
  13. package/cjs/component/slider.js +5 -5
  14. package/cjs/component/slider.js.map +1 -1
  15. package/cjs/component/title.js +5 -5
  16. package/cjs/component/title.js.map +1 -1
  17. package/cjs/core/factory.d.ts +5 -1
  18. package/cjs/core/factory.js +13 -3
  19. package/cjs/core/factory.js.map +1 -1
  20. package/cjs/graph/animation/animate.d.ts +1 -0
  21. package/cjs/graph/animation/animate.js +4 -0
  22. package/cjs/graph/animation/animate.js.map +1 -1
  23. package/cjs/graph/animation/animation/move.js +10 -8
  24. package/cjs/graph/animation/animation/move.js.map +1 -1
  25. package/cjs/graph/attributes/common.js +2 -10
  26. package/cjs/graph/attributes/common.js.map +1 -1
  27. package/cjs/graph/attributes/helpers.d.ts +2 -2
  28. package/cjs/graph/attributes/helpers.js +50 -17
  29. package/cjs/graph/attributes/helpers.js.map +1 -1
  30. package/cjs/graph/attributes/index.d.ts +4 -10
  31. package/cjs/graph/attributes/index.js +16 -251
  32. package/cjs/graph/attributes/index.js.map +1 -1
  33. package/cjs/graph/attributes/line.d.ts +3 -0
  34. package/cjs/graph/attributes/line.js +46 -0
  35. package/cjs/graph/attributes/line.js.map +1 -0
  36. package/cjs/graph/attributes/transform.d.ts +5 -0
  37. package/cjs/graph/attributes/transform.js +167 -0
  38. package/cjs/graph/attributes/transform.js.map +1 -0
  39. package/cjs/graph/canvas-renderer.js +1 -1
  40. package/cjs/graph/canvas-renderer.js.map +1 -1
  41. package/cjs/graph/constants.d.ts +0 -1
  42. package/cjs/graph/constants.js +2 -3
  43. package/cjs/graph/constants.js.map +1 -1
  44. package/cjs/graph/element.js +12 -14
  45. package/cjs/graph/element.js.map +1 -1
  46. package/cjs/graph/glyph-element.js +6 -7
  47. package/cjs/graph/glyph-element.js.map +1 -1
  48. package/cjs/graph/layout/relative.js.map +1 -1
  49. package/cjs/graph/mark/encode.js +4 -4
  50. package/cjs/graph/mark/encode.js.map +1 -1
  51. package/cjs/index.d.ts +3 -1
  52. package/cjs/index.js +3 -2
  53. package/cjs/index.js.map +1 -1
  54. package/cjs/interactions/base.js.map +1 -1
  55. package/cjs/interactions/brush-base.js +2 -2
  56. package/cjs/interactions/brush-base.js.map +1 -1
  57. package/cjs/interactions/brush-filter.js +2 -2
  58. package/cjs/interactions/brush-filter.js.map +1 -1
  59. package/cjs/interactions/crosshair.d.ts +1 -1
  60. package/cjs/interactions/crosshair.js +15 -15
  61. package/cjs/interactions/crosshair.js.map +1 -1
  62. package/cjs/interactions/datazoom-filter.js +3 -3
  63. package/cjs/interactions/datazoom-filter.js.map +1 -1
  64. package/cjs/interactions/drill-down.js +2 -2
  65. package/cjs/interactions/drill-down.js.map +1 -1
  66. package/cjs/interactions/legend-filter.js +3 -3
  67. package/cjs/interactions/legend-filter.js.map +1 -1
  68. package/cjs/interactions/player-filter.js +3 -3
  69. package/cjs/interactions/player-filter.js.map +1 -1
  70. package/cjs/interactions/roll-up.js +2 -2
  71. package/cjs/interactions/roll-up.js.map +1 -1
  72. package/cjs/interactions/scrollbar-filter.js +3 -3
  73. package/cjs/interactions/scrollbar-filter.js.map +1 -1
  74. package/cjs/interactions/slider-filter.js +3 -3
  75. package/cjs/interactions/slider-filter.js.map +1 -1
  76. package/cjs/parse/view.js +1 -1
  77. package/cjs/parse/view.js.map +1 -1
  78. package/cjs/semantic-marks/cell.d.ts +3 -1
  79. package/cjs/semantic-marks/cell.js +10 -4
  80. package/cjs/semantic-marks/cell.js.map +1 -1
  81. package/cjs/semantic-marks/interval.d.ts +2 -0
  82. package/cjs/semantic-marks/interval.js +10 -4
  83. package/cjs/semantic-marks/interval.js.map +1 -1
  84. package/cjs/semantic-marks/text.d.ts +1 -0
  85. package/cjs/semantic-marks/text.js +3 -3
  86. package/cjs/semantic-marks/text.js.map +1 -1
  87. package/cjs/theme/common/component.d.ts +2 -1
  88. package/cjs/theme/common/component.js +13 -1
  89. package/cjs/theme/common/component.js.map +1 -1
  90. package/cjs/theme/dark.js.map +1 -1
  91. package/cjs/transforms/data/sampling.d.ts +2 -0
  92. package/cjs/transforms/data/sampling.js +111 -0
  93. package/cjs/transforms/data/sampling.js.map +1 -0
  94. package/cjs/transforms/index.d.ts +1 -1
  95. package/cjs/transforms/index.js +6 -6
  96. package/cjs/transforms/index.js.map +1 -1
  97. package/cjs/transforms/util/util.d.ts +4 -0
  98. package/cjs/transforms/util/util.js +20 -2
  99. package/cjs/transforms/util/util.js.map +1 -1
  100. package/cjs/types/animate.d.ts +6 -1
  101. package/cjs/types/animate.js.map +1 -1
  102. package/cjs/types/grammar.d.ts +1 -1
  103. package/cjs/types/grammar.js.map +1 -1
  104. package/cjs/types/mark.d.ts +5 -1
  105. package/cjs/types/mark.js.map +1 -1
  106. package/cjs/types/theme.d.ts +2 -1
  107. package/cjs/types/theme.js.map +1 -1
  108. package/cjs/types/transform.d.ts +5 -5
  109. package/cjs/types/transform.js.map +1 -1
  110. package/cjs/types/view.d.ts +2 -0
  111. package/cjs/types/view.js.map +1 -1
  112. package/cjs/view/View.d.ts +0 -1
  113. package/cjs/view/View.js +18 -27
  114. package/cjs/view/View.js.map +1 -1
  115. package/cjs/view/animate.d.ts +1 -0
  116. package/cjs/view/animate.js +12 -12
  117. package/cjs/view/animate.js.map +1 -1
  118. package/cjs/view/constants.d.ts +0 -3
  119. package/cjs/view/constants.js +2 -3
  120. package/cjs/view/constants.js.map +1 -1
  121. package/cjs/view/dataflow.d.ts +1 -0
  122. package/cjs/view/dataflow.js +9 -4
  123. package/cjs/view/dataflow.js.map +1 -1
  124. package/cjs/view/grammar-record.js +5 -5
  125. package/cjs/view/grammar-record.js.map +1 -1
  126. package/cjs/view/mark.js +1 -1
  127. package/cjs/view/mark.js.map +1 -1
  128. package/es/component/axis.js +1 -1
  129. package/es/component/axis.js.map +1 -1
  130. package/es/component/datazoom.js +5 -5
  131. package/es/component/datazoom.js.map +1 -1
  132. package/es/component/grid.js +1 -1
  133. package/es/component/grid.js.map +1 -1
  134. package/es/component/label.js +13 -8
  135. package/es/component/label.js.map +1 -1
  136. package/es/component/legend.js +1 -1
  137. package/es/component/legend.js.map +1 -1
  138. package/es/component/scrollbar.js +1 -1
  139. package/es/component/scrollbar.js.map +1 -1
  140. package/es/component/slider.js +1 -1
  141. package/es/component/slider.js.map +1 -1
  142. package/es/component/title.js +1 -1
  143. package/es/component/title.js.map +1 -1
  144. package/es/core/factory.d.ts +5 -1
  145. package/es/core/factory.js +11 -1
  146. package/es/core/factory.js.map +1 -1
  147. package/es/graph/animation/animate.d.ts +1 -0
  148. package/es/graph/animation/animate.js +4 -0
  149. package/es/graph/animation/animate.js.map +1 -1
  150. package/es/graph/animation/animation/move.js +5 -5
  151. package/es/graph/animation/animation/move.js.map +1 -1
  152. package/es/graph/attributes/common.js +2 -7
  153. package/es/graph/attributes/common.js.map +1 -1
  154. package/es/graph/attributes/helpers.d.ts +2 -2
  155. package/es/graph/attributes/helpers.js +46 -12
  156. package/es/graph/attributes/helpers.js.map +1 -1
  157. package/es/graph/attributes/index.d.ts +4 -10
  158. package/es/graph/attributes/index.js +4 -227
  159. package/es/graph/attributes/index.js.map +1 -1
  160. package/es/graph/attributes/line.d.ts +3 -0
  161. package/es/graph/attributes/line.js +42 -0
  162. package/es/graph/attributes/line.js.map +1 -0
  163. package/es/graph/attributes/transform.d.ts +5 -0
  164. package/es/graph/attributes/transform.js +153 -0
  165. package/es/graph/attributes/transform.js.map +1 -0
  166. package/es/graph/canvas-renderer.js +1 -1
  167. package/es/graph/canvas-renderer.js.map +1 -1
  168. package/es/graph/constants.d.ts +0 -1
  169. package/es/graph/constants.js +0 -2
  170. package/es/graph/constants.js.map +1 -1
  171. package/es/graph/element.js +11 -11
  172. package/es/graph/element.js.map +1 -1
  173. package/es/graph/glyph-element.js +3 -4
  174. package/es/graph/glyph-element.js.map +1 -1
  175. package/es/graph/layout/relative.js.map +1 -1
  176. package/es/graph/mark/encode.js +1 -1
  177. package/es/graph/mark/encode.js.map +1 -1
  178. package/es/index.d.ts +3 -1
  179. package/es/index.js +5 -1
  180. package/es/index.js.map +1 -1
  181. package/es/interactions/base.js.map +1 -1
  182. package/es/interactions/brush-base.js +1 -1
  183. package/es/interactions/brush-base.js.map +1 -1
  184. package/es/interactions/brush-filter.js +2 -3
  185. package/es/interactions/brush-filter.js.map +1 -1
  186. package/es/interactions/crosshair.d.ts +1 -1
  187. package/es/interactions/crosshair.js +1 -1
  188. package/es/interactions/crosshair.js.map +1 -1
  189. package/es/interactions/datazoom-filter.js +1 -1
  190. package/es/interactions/datazoom-filter.js.map +1 -1
  191. package/es/interactions/drill-down.js +1 -1
  192. package/es/interactions/drill-down.js.map +1 -1
  193. package/es/interactions/element-highlight-by-group.js +2 -1
  194. package/es/interactions/index.js +1 -2
  195. package/es/interactions/legend-filter.js +2 -2
  196. package/es/interactions/legend-filter.js.map +1 -1
  197. package/es/interactions/player-filter.js +2 -2
  198. package/es/interactions/player-filter.js.map +1 -1
  199. package/es/interactions/roll-up.js +2 -2
  200. package/es/interactions/roll-up.js.map +1 -1
  201. package/es/interactions/scrollbar-filter.js +2 -2
  202. package/es/interactions/scrollbar-filter.js.map +1 -1
  203. package/es/interactions/slider-filter.js +2 -2
  204. package/es/interactions/slider-filter.js.map +1 -1
  205. package/es/interactions/tooltip.js +1 -1
  206. package/es/interactions/view-drag-mixin.js +1 -1
  207. package/es/parse/coordinate.js +1 -1
  208. package/es/parse/event.js +1 -1
  209. package/es/parse/mark.js +1 -1
  210. package/es/parse/option.js +1 -1
  211. package/es/parse/scale.js +2 -1
  212. package/es/parse/transform.js +1 -1
  213. package/es/parse/util.js +1 -1
  214. package/es/parse/view.js +2 -2
  215. package/es/parse/view.js.map +1 -1
  216. package/es/semantic-marks/cell.d.ts +3 -1
  217. package/es/semantic-marks/cell.js +11 -1
  218. package/es/semantic-marks/cell.js.map +1 -1
  219. package/es/semantic-marks/interval.d.ts +2 -0
  220. package/es/semantic-marks/interval.js +9 -1
  221. package/es/semantic-marks/interval.js.map +1 -1
  222. package/es/semantic-marks/text.d.ts +1 -0
  223. package/es/semantic-marks/text.js +3 -1
  224. package/es/semantic-marks/text.js.map +1 -1
  225. package/es/theme/common/component.d.ts +2 -1
  226. package/es/theme/common/component.js +14 -0
  227. package/es/theme/common/component.js.map +1 -1
  228. package/es/theme/dark.js.map +1 -1
  229. package/es/transforms/data/sampling.d.ts +2 -0
  230. package/es/transforms/data/sampling.js +105 -0
  231. package/es/transforms/data/sampling.js.map +1 -0
  232. package/es/transforms/index.d.ts +1 -1
  233. package/es/transforms/index.js +4 -4
  234. package/es/transforms/index.js.map +1 -1
  235. package/es/transforms/util/util.d.ts +4 -0
  236. package/es/transforms/util/util.js +17 -0
  237. package/es/transforms/util/util.js.map +1 -1
  238. package/es/types/animate.d.ts +6 -1
  239. package/es/types/animate.js.map +1 -1
  240. package/es/types/grammar.d.ts +1 -1
  241. package/es/types/grammar.js.map +1 -1
  242. package/es/types/mark.d.ts +5 -1
  243. package/es/types/mark.js.map +1 -1
  244. package/es/types/theme.d.ts +2 -1
  245. package/es/types/theme.js.map +1 -1
  246. package/es/types/transform.d.ts +5 -5
  247. package/es/types/transform.js.map +1 -1
  248. package/es/types/view.d.ts +2 -0
  249. package/es/types/view.js.map +1 -1
  250. package/es/view/View.d.ts +0 -1
  251. package/es/view/View.js +15 -29
  252. package/es/view/View.js.map +1 -1
  253. package/es/view/animate.d.ts +1 -0
  254. package/es/view/animate.js +6 -6
  255. package/es/view/animate.js.map +1 -1
  256. package/es/view/constants.d.ts +0 -3
  257. package/es/view/constants.js +0 -6
  258. package/es/view/constants.js.map +1 -1
  259. package/es/view/dataflow.d.ts +1 -0
  260. package/es/view/dataflow.js +9 -4
  261. package/es/view/dataflow.js.map +1 -1
  262. package/es/view/grammar-record.js +1 -1
  263. package/es/view/grammar-record.js.map +1 -1
  264. package/es/view/mark.js +1 -1
  265. package/es/view/mark.js.map +1 -1
  266. package/package.json +9 -9
  267. package/cjs/transforms/mark/lttb-sample.d.ts +0 -2
  268. package/cjs/transforms/mark/lttb-sample.js +0 -68
  269. package/cjs/transforms/mark/lttb-sample.js.map +0 -1
  270. package/es/transforms/mark/lttb-sample.d.ts +0 -2
  271. package/es/transforms/mark/lttb-sample.js +0 -60
  272. package/es/transforms/mark/lttb-sample.js.map +0 -1
@@ -3,6 +3,7 @@ export declare class ViewAnimate implements IViewAnimate {
3
3
  private _view;
4
4
  private _animations;
5
5
  private _additionalAnimateMarks;
6
+ private isEnabled;
6
7
  constructor(view: IView);
7
8
  stop(): this;
8
9
  pause(): this;
@@ -4,15 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ViewAnimate = void 0;
6
6
 
7
- const graph_1 = require("../graph");
7
+ const enums_1 = require("../graph/enums");
8
8
 
9
9
  class ViewAnimate {
10
10
  constructor(view) {
11
- this._animations = [], this._additionalAnimateMarks = [], this._onAnimationStart = event => {
11
+ this._animations = [], this._additionalAnimateMarks = [], this.isEnabled = !0, this._onAnimationStart = event => {
12
12
  this._additionalAnimateMarks = this._additionalAnimateMarks.filter((mark => {
13
13
  var _a;
14
14
  return null === (_a = null == mark ? void 0 : mark.animate) || void 0 === _a ? void 0 : _a.isAnimating();
15
- })), 0 === this._animations.length && 0 === this._additionalAnimateMarks.length && this._view.emit(graph_1.HOOK_EVENT.ALL_ANIMATION_START, {}),
15
+ })), 0 === this._animations.length && 0 === this._additionalAnimateMarks.length && this._view.emit(enums_1.HOOK_EVENT.ALL_ANIMATION_START, {}),
16
16
  this._animations = this._animations.concat({
17
17
  config: event.animationConfig,
18
18
  mark: event.mark
@@ -22,9 +22,9 @@ class ViewAnimate {
22
22
  var _a;
23
23
  return null === (_a = null == mark ? void 0 : mark.animate) || void 0 === _a ? void 0 : _a.isAnimating();
24
24
  })), this._animations = this._animations.filter((animation => animation.config !== event.animationConfig || animation.mark !== event.mark)),
25
- 0 === this._animations.length && 0 === this._additionalAnimateMarks.length && this._view.emit(graph_1.HOOK_EVENT.ALL_ANIMATION_END, {});
26
- }, this._view = view, this._view.addEventListener(graph_1.HOOK_EVENT.ANIMATION_START, this._onAnimationStart),
27
- this._view.addEventListener(graph_1.HOOK_EVENT.ANIMATION_END, this._onAnimationEnd);
25
+ 0 === this._animations.length && 0 === this._additionalAnimateMarks.length && this._view.emit(enums_1.HOOK_EVENT.ALL_ANIMATION_END, {});
26
+ }, this._view = view, this._view.addEventListener(enums_1.HOOK_EVENT.ANIMATION_START, this._onAnimationStart),
27
+ this._view.addEventListener(enums_1.HOOK_EVENT.ANIMATION_END, this._onAnimationEnd);
28
28
  }
29
29
  stop() {
30
30
  return this._view.traverseMarkTree((mark => {
@@ -54,13 +54,13 @@ class ViewAnimate {
54
54
  })), this;
55
55
  }
56
56
  enable() {
57
- return this._view.traverseMarkTree((mark => {
57
+ return this.isEnabled = !0, this._view.traverseMarkTree((mark => {
58
58
  var _a, _b;
59
59
  null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.enable) || void 0 === _b || _b.call(_a);
60
60
  })), this;
61
61
  }
62
62
  disable() {
63
- return this._view.traverseMarkTree((mark => {
63
+ return this.isEnabled = !1, this._view.traverseMarkTree((mark => {
64
64
  var _a, _b;
65
65
  null === (_b = null === (_a = mark.animate) || void 0 === _a ? void 0 : _a.disable) || void 0 === _b || _b.call(_a);
66
66
  })), this._additionalAnimateMarks.forEach((mark => {
@@ -87,18 +87,18 @@ class ViewAnimate {
87
87
  }));
88
88
  }
89
89
  animate() {
90
- return this._view.traverseMarkTree((mark => {
90
+ return this.isEnabled ? (this._view.traverseMarkTree((mark => {
91
91
  mark.isUpdated && mark.animate && mark.animate.animate(), mark.cleanExitElements(),
92
92
  mark.isUpdated = !1;
93
- }), null, !0), this;
93
+ }), null, !0), this) : this;
94
94
  }
95
95
  animateAddition(additionMark) {
96
96
  return additionMark.animate.animate(), this._additionalAnimateMarks.push(additionMark),
97
97
  this;
98
98
  }
99
99
  release() {
100
- this._additionalAnimateMarks = [], this._view.removeEventListener(graph_1.HOOK_EVENT.ALL_ANIMATION_START, this._onAnimationStart),
101
- this._view.removeEventListener(graph_1.HOOK_EVENT.ALL_ANIMATION_END, this._onAnimationEnd);
100
+ this._additionalAnimateMarks = [], this._view.removeEventListener(enums_1.HOOK_EVENT.ALL_ANIMATION_START, this._onAnimationStart),
101
+ this._view.removeEventListener(enums_1.HOOK_EVENT.ALL_ANIMATION_END, this._onAnimationEnd);
102
102
  }
103
103
  }
104
104
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/animate.ts"],"names":[],"mappings":"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","file":"animate.js","sourcesContent":["import { HOOK_EVENT } from '../graph';\nimport type { IView, AnimationEvent, IMark, IAnimationConfig, IViewAnimate } from '../types';\n\nexport class ViewAnimate implements IViewAnimate {\n private _view: IView;\n // animation start/end events are triggered on specific animation configuration\n private _animations: { config: IAnimationConfig; mark: IMark }[] = [];\n private _additionalAnimateMarks: IMark[] = [];\n\n constructor(view: IView) {\n this._view = view;\n\n this._view.addEventListener(HOOK_EVENT.ANIMATION_START, this._onAnimationStart);\n this._view.addEventListener(HOOK_EVENT.ANIMATION_END, this._onAnimationEnd);\n }\n\n stop() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.stop?.();\n });\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.stop?.();\n }\n });\n // clear all additional animate marks after animations are stopped\n this._additionalAnimateMarks = [];\n return this;\n }\n\n pause() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.pause?.();\n });\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.pause?.();\n }\n });\n return this;\n }\n\n resume() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.resume?.();\n });\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.resume?.();\n }\n });\n return this;\n }\n\n enable() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.enable?.();\n });\n return this;\n }\n\n disable() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.disable?.();\n });\n // stop all addition animations when animate is disabled\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.stop?.();\n }\n });\n // clear all additional animate marks after animations are stopped\n this._additionalAnimateMarks = [];\n return this;\n }\n\n enableAnimationState(state: string | string[]) {\n this._view.traverseMarkTree(mark => {\n mark.animate?.enableAnimationState?.(state);\n });\n return this;\n }\n\n disableAnimationState(state: string | string[]) {\n this._view.traverseMarkTree(mark => {\n mark.animate?.disableAnimationState?.(state);\n });\n return this;\n }\n\n isAnimating() {\n return (\n this._animations.length !== 0 || this._additionalAnimateMarks.some(mark => mark?.animate?.isAnimating() || false)\n );\n }\n\n animate() {\n this._view.traverseMarkTree(\n mark => {\n if (mark.isUpdated && mark.animate) {\n mark.animate.animate();\n }\n mark.cleanExitElements();\n mark.isUpdated = false;\n },\n null,\n true\n );\n return this;\n }\n\n animateAddition(additionMark: IMark) {\n additionMark.animate.animate();\n this._additionalAnimateMarks.push(additionMark);\n return this;\n }\n\n private _onAnimationStart = (event: AnimationEvent) => {\n this._additionalAnimateMarks = this._additionalAnimateMarks.filter(mark => mark?.animate?.isAnimating());\n\n if (this._animations.length === 0 && this._additionalAnimateMarks.length === 0) {\n this._view.emit(HOOK_EVENT.ALL_ANIMATION_START, {});\n }\n this._animations = this._animations.concat({ config: event.animationConfig, mark: event.mark });\n };\n\n private _onAnimationEnd = (event: AnimationEvent) => {\n this._additionalAnimateMarks = this._additionalAnimateMarks.filter(mark => mark?.animate?.isAnimating());\n\n this._animations = this._animations.filter(animation => {\n return animation.config !== event.animationConfig || animation.mark !== event.mark;\n });\n if (this._animations.length === 0 && this._additionalAnimateMarks.length === 0) {\n this._view.emit(HOOK_EVENT.ALL_ANIMATION_END, {});\n }\n };\n\n release() {\n this._additionalAnimateMarks = [];\n this._view.removeEventListener(HOOK_EVENT.ALL_ANIMATION_START, this._onAnimationStart);\n this._view.removeEventListener(HOOK_EVENT.ALL_ANIMATION_END, this._onAnimationEnd);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/view/animate.ts"],"names":[],"mappings":"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","file":"animate.js","sourcesContent":["import { HOOK_EVENT } from '../graph/enums';\nimport type { IView, AnimationEvent, IMark, IAnimationConfig, IViewAnimate } from '../types';\n\nexport class ViewAnimate implements IViewAnimate {\n private _view: IView;\n // animation start/end events are triggered on specific animation configuration\n private _animations: { config: IAnimationConfig; mark: IMark }[] = [];\n private _additionalAnimateMarks: IMark[] = [];\n private isEnabled: boolean = true;\n\n constructor(view: IView) {\n this._view = view;\n\n this._view.addEventListener(HOOK_EVENT.ANIMATION_START, this._onAnimationStart);\n this._view.addEventListener(HOOK_EVENT.ANIMATION_END, this._onAnimationEnd);\n }\n\n stop() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.stop?.();\n });\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.stop?.();\n }\n });\n // clear all additional animate marks after animations are stopped\n this._additionalAnimateMarks = [];\n return this;\n }\n\n pause() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.pause?.();\n });\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.pause?.();\n }\n });\n return this;\n }\n\n resume() {\n this._view.traverseMarkTree(mark => {\n mark.animate?.resume?.();\n });\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.resume?.();\n }\n });\n return this;\n }\n\n enable() {\n this.isEnabled = true;\n this._view.traverseMarkTree(mark => {\n mark.animate?.enable?.();\n });\n return this;\n }\n\n disable() {\n this.isEnabled = false;\n this._view.traverseMarkTree(mark => {\n mark.animate?.disable?.();\n });\n // stop all addition animations when animate is disabled\n this._additionalAnimateMarks.forEach(mark => {\n // if mark is not released\n if (mark.view) {\n mark.animate?.stop?.();\n }\n });\n // clear all additional animate marks after animations are stopped\n this._additionalAnimateMarks = [];\n return this;\n }\n\n enableAnimationState(state: string | string[]) {\n this._view.traverseMarkTree(mark => {\n mark.animate?.enableAnimationState?.(state);\n });\n return this;\n }\n\n disableAnimationState(state: string | string[]) {\n this._view.traverseMarkTree(mark => {\n mark.animate?.disableAnimationState?.(state);\n });\n return this;\n }\n\n isAnimating() {\n return (\n this._animations.length !== 0 || this._additionalAnimateMarks.some(mark => mark?.animate?.isAnimating() || false)\n );\n }\n\n animate() {\n if (!this.isEnabled) {\n return this;\n }\n\n this._view.traverseMarkTree(\n mark => {\n if (mark.isUpdated && mark.animate) {\n mark.animate.animate();\n }\n mark.cleanExitElements();\n mark.isUpdated = false;\n },\n null,\n true\n );\n return this;\n }\n\n animateAddition(additionMark: IMark) {\n additionMark.animate.animate();\n this._additionalAnimateMarks.push(additionMark);\n return this;\n }\n\n private _onAnimationStart = (event: AnimationEvent) => {\n this._additionalAnimateMarks = this._additionalAnimateMarks.filter(mark => mark?.animate?.isAnimating());\n\n if (this._animations.length === 0 && this._additionalAnimateMarks.length === 0) {\n this._view.emit(HOOK_EVENT.ALL_ANIMATION_START, {});\n }\n this._animations = this._animations.concat({ config: event.animationConfig, mark: event.mark });\n };\n\n private _onAnimationEnd = (event: AnimationEvent) => {\n this._additionalAnimateMarks = this._additionalAnimateMarks.filter(mark => mark?.animate?.isAnimating());\n\n this._animations = this._animations.filter(animation => {\n return animation.config !== event.animationConfig || animation.mark !== event.mark;\n });\n if (this._animations.length === 0 && this._additionalAnimateMarks.length === 0) {\n this._view.emit(HOOK_EVENT.ALL_ANIMATION_END, {});\n }\n };\n\n release() {\n this._additionalAnimateMarks = [];\n this._view.removeEventListener(HOOK_EVENT.ALL_ANIMATION_START, this._onAnimationStart);\n this._view.removeEventListener(HOOK_EVENT.ALL_ANIMATION_END, this._onAnimationEnd);\n }\n}\n"]}
@@ -4,9 +4,6 @@ export declare const BROWSER = "browser";
4
4
  export declare const NO_TRAP: {
5
5
  trap: boolean;
6
6
  };
7
- export declare const DEFAULT_WIDTH = 500;
8
- export declare const DEFAULT_HEIGHT = 500;
9
- export declare const CURSOR_DEFAULT = "default";
10
7
  export declare const SIGNAL_WIDTH = "width";
11
8
  export declare const SIGNAL_HEIGHT = "height";
12
9
  export declare const SIGNAL_VIEW_WIDTH = "viewWidth";
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.DEFAULT_HOVER_STATE = exports.SIGNAL_AUTOFIT = exports.SIGNAL_VIEW_BOX = exports.SIGNAL_PADDING = exports.SIGNAL_VIEW_HEIGHT = exports.SIGNAL_VIEW_WIDTH = exports.SIGNAL_HEIGHT = exports.SIGNAL_WIDTH = exports.CURSOR_DEFAULT = exports.DEFAULT_HEIGHT = exports.DEFAULT_WIDTH = exports.NO_TRAP = exports.BROWSER = exports.EVENT_SOURCE_VIEW = exports.EVENT_SOURCE_WINDOW = void 0,
5
+ }), exports.DEFAULT_HOVER_STATE = exports.SIGNAL_AUTOFIT = exports.SIGNAL_VIEW_BOX = exports.SIGNAL_PADDING = exports.SIGNAL_VIEW_HEIGHT = exports.SIGNAL_VIEW_WIDTH = exports.SIGNAL_HEIGHT = exports.SIGNAL_WIDTH = exports.NO_TRAP = exports.BROWSER = exports.EVENT_SOURCE_VIEW = exports.EVENT_SOURCE_WINDOW = void 0,
6
6
  exports.EVENT_SOURCE_WINDOW = "window", exports.EVENT_SOURCE_VIEW = "view", exports.BROWSER = "browser",
7
7
  exports.NO_TRAP = {
8
8
  trap: !1
9
- }, exports.DEFAULT_WIDTH = 500, exports.DEFAULT_HEIGHT = 500, exports.CURSOR_DEFAULT = "default",
10
- exports.SIGNAL_WIDTH = "width", exports.SIGNAL_HEIGHT = "height", exports.SIGNAL_VIEW_WIDTH = "viewWidth",
9
+ }, exports.SIGNAL_WIDTH = "width", exports.SIGNAL_HEIGHT = "height", exports.SIGNAL_VIEW_WIDTH = "viewWidth",
11
10
  exports.SIGNAL_VIEW_HEIGHT = "viewHeight", exports.SIGNAL_PADDING = "padding", exports.SIGNAL_VIEW_BOX = "viewBox",
12
11
  exports.SIGNAL_AUTOFIT = "autoFit", exports.DEFAULT_HOVER_STATE = "hover";
13
12
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAE1B,QAAA,aAAa,GAAG,GAAG,CAAC;AACpB,QAAA,cAAc,GAAG,GAAG,CAAC;AAErB,QAAA,cAAc,GAAG,SAAS,CAAC;AAE3B,QAAA,YAAY,GAAG,OAAO,CAAC;AACvB,QAAA,aAAa,GAAG,QAAQ,CAAC;AACzB,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAChC,QAAA,kBAAkB,GAAG,YAAY,CAAC;AAClC,QAAA,cAAc,GAAG,SAAS,CAAC;AAC3B,QAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,QAAA,cAAc,GAAG,SAAS,CAAC;AAE3B,QAAA,mBAAmB,GAAG,OAAO,CAAC","file":"constants.js","sourcesContent":["export const EVENT_SOURCE_WINDOW = 'window';\nexport const EVENT_SOURCE_VIEW = 'view';\nexport const BROWSER = 'browser';\nexport const NO_TRAP = { trap: false };\n\nexport const DEFAULT_WIDTH = 500;\nexport const DEFAULT_HEIGHT = 500;\n\nexport const CURSOR_DEFAULT = 'default';\n\nexport const SIGNAL_WIDTH = 'width';\nexport const SIGNAL_HEIGHT = 'height';\nexport const SIGNAL_VIEW_WIDTH = 'viewWidth';\nexport const SIGNAL_VIEW_HEIGHT = 'viewHeight';\nexport const SIGNAL_PADDING = 'padding';\nexport const SIGNAL_VIEW_BOX = 'viewBox';\nexport const SIGNAL_AUTOFIT = 'autoFit';\n\nexport const DEFAULT_HOVER_STATE = 'hover';\n"]}
1
+ {"version":3,"sources":["../src/view/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAE1B,QAAA,YAAY,GAAG,OAAO,CAAC;AACvB,QAAA,aAAa,GAAG,QAAQ,CAAC;AACzB,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAChC,QAAA,kBAAkB,GAAG,YAAY,CAAC;AAClC,QAAA,cAAc,GAAG,SAAS,CAAC;AAC3B,QAAA,eAAe,GAAG,SAAS,CAAC;AAC5B,QAAA,cAAc,GAAG,SAAS,CAAC;AAE3B,QAAA,mBAAmB,GAAG,OAAO,CAAC","file":"constants.js","sourcesContent":["export const EVENT_SOURCE_WINDOW = 'window';\nexport const EVENT_SOURCE_VIEW = 'view';\nexport const BROWSER = 'browser';\nexport const NO_TRAP = { trap: false };\n\nexport const SIGNAL_WIDTH = 'width';\nexport const SIGNAL_HEIGHT = 'height';\nexport const SIGNAL_VIEW_WIDTH = 'viewWidth';\nexport const SIGNAL_VIEW_HEIGHT = 'viewHeight';\nexport const SIGNAL_PADDING = 'padding';\nexport const SIGNAL_VIEW_BOX = 'viewBox';\nexport const SIGNAL_AUTOFIT = 'autoFit';\n\nexport const DEFAULT_HOVER_STATE = 'hover';\n"]}
@@ -26,6 +26,7 @@ export default class Dataflow implements IDataflow {
26
26
  private _enqueueTargets;
27
27
  evaluate(): Promise<boolean>;
28
28
  evaluateSync(): boolean;
29
+ private stop;
29
30
  runBefore(callback?: IDataflowCallback): void;
30
31
  runAfter(callback?: IDataflowCallback): void;
31
32
  release(): void;
@@ -108,9 +108,10 @@ class Dataflow {
108
108
  this.logger.canLogInfo() && (dt = Date.now(), this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`)),
109
109
  this._beforeEvaluate();
110
110
  try {
111
- for (;this._heap.size() > 0; ) grammar = this._heap.pop(), grammar.rank === grammar.qrank ? (next = grammar.run(),
112
- next && next.then && (next = yield next), this._logGrammarRunInfo(grammar), this._enqueueTargets(grammar),
113
- count += 1) : this._enqueue(grammar);
111
+ for (;this._heap.size() > 0; ) if (grammar = this._heap.pop(), grammar.rank === grammar.qrank) {
112
+ if (next = grammar.run(), next && next.then && (next = yield next), !this._isRunning) return !1;
113
+ this._logGrammarRunInfo(grammar), this._enqueueTargets(grammar), count += 1;
114
+ } else this._enqueue(grammar);
114
115
  } catch (err) {
115
116
  this._heap.clear(), error = err;
116
117
  }
@@ -131,6 +132,9 @@ class Dataflow {
131
132
  this.logger.info(`> ${count} grammars updated; ${dt} ms`)), this._afterRunner && this._afterRunner(this),
132
133
  this._finishFirstRender = !0, !0;
133
134
  }
135
+ stop() {
136
+ this._isRunning && (this._isRunning = !1);
137
+ }
134
138
  runBefore(callback) {
135
139
  this._beforeRunner = callback;
136
140
  }
@@ -138,7 +142,8 @@ class Dataflow {
138
142
  this._afterRunner = callback;
139
143
  }
140
144
  release() {
141
- this._heap && (this._heap.clear(), this._heap = null), this.logger = null, this._committed = null;
145
+ this.stop(), this._heap && (this._heap.clear(), this._heap = null), this.logger = null,
146
+ this._committed = null;
142
147
  }
143
148
  }
144
149
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/view/dataflow.ts"],"names":[],"mappings":"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","file":"dataflow.js","sourcesContent":["import type { ILogger } from '@visactor/vutils';\nimport type { IDataflow } from '../types/dataflow';\nimport { isNil, Logger } from '@visactor/vutils';\nimport { Heap } from '../util/grammar-heap';\nimport { UniqueList } from '../util/unique-list';\nimport type { IDataflowCallback, IGrammarBase } from '../types';\n\n/**\n * A dataflow to run all the grammar elements\n */\nexport default class Dataflow implements IDataflow {\n logger: ILogger;\n private grammars: IGrammarBase[] = [];\n /** 当前排序 */\n private _curRank: number;\n /** 发生了变更的元素 */\n private _committed?: UniqueList<IGrammarBase>;\n private _heap?: Heap;\n private _beforeRunner?: IDataflowCallback;\n private _afterRunner?: IDataflowCallback;\n /** 正在运行dataflow */\n private _isRunning?: boolean;\n private _updateCounter: number;\n /** 是否完成初次渲染 */\n private _finishFirstRender?: boolean;\n\n constructor() {\n this.logger = Logger.getInstance();\n\n this._curRank = 0;\n\n this._committed = new UniqueList(grammar => grammar.uid);\n\n this._heap = new Heap((a, b) => a.qrank - b.qrank);\n this._beforeRunner = null;\n this._afterRunner = null;\n this._isRunning = false;\n this._updateCounter = 0;\n this._finishFirstRender = false;\n }\n\n async asyncCallback(callback: (context: IDataflow) => any) {\n try {\n await callback(this);\n } catch (err) {\n this.logger.error(err);\n }\n }\n\n add(grammar: IGrammarBase) {\n if (!grammar) {\n return;\n }\n this._setRankOfGrammar(grammar);\n this.commit(grammar);\n if (!this.grammars.includes(grammar)) {\n this.grammars.push(grammar);\n\n return true;\n }\n\n return false;\n }\n\n remove(grammar: IGrammarBase) {\n if (grammar) {\n this._committed.remove(grammar);\n this._heap.remove(grammar);\n this.grammars = this.grammars.filter(storedGrammar => storedGrammar !== grammar);\n }\n }\n\n private _setRankOfGrammar(grammar?: IGrammarBase) {\n grammar.rank = ++this._curRank;\n }\n\n private _reRank(grammar?: IGrammarBase) {\n const queue = [grammar];\n\n while (queue.length) {\n const cur = queue.pop();\n this._setRankOfGrammar(cur);\n const list = cur.targets;\n\n if (list) {\n list.forEach((entry: IGrammarBase) => {\n queue.push(entry);\n if (entry === grammar) {\n this.logger.error('Cycle detected in dataflow graph.');\n }\n });\n }\n }\n }\n\n private _enqueue(grammar: IGrammarBase) {\n (grammar as any).qrank = grammar.rank;\n // push and reRank in the heap\n this._heap.push(grammar);\n }\n\n private _logGrammarRunInfo(grammar: IGrammarBase) {\n if (this.logger.canLogError()) {\n const debugInfos = [\n { key: 'id', value: grammar.id() },\n { key: 'name', value: grammar.name() }\n ];\n const debugStr = debugInfos.reduce((str, entry, index) => {\n if (!isNil(entry.value)) {\n return `${str}${index ? ' , ' : ''}${entry.key}: ${entry.value}`;\n }\n\n return str;\n }, '');\n\n this.logger.debug('Run Operator: ', grammar, debugStr);\n }\n }\n\n hasCommitted() {\n return !!this._committed.length;\n }\n\n // OPERATOR UPDATES\n commit(grammar: IGrammarBase) {\n if (this._isRunning) {\n // this may lead to a problem, the same op may be added to the queue multiple times\n // if in midst of propagation, add to priority queue\n this._enqueue(grammar);\n } else {\n // otherwise, queue for next propagation\n this._committed.add(grammar);\n }\n\n return this;\n }\n\n private _beforeEvaluate() {\n // reRank grammar element which has higher rank than its targets\n this.grammars.forEach(grammar => {\n if (grammar.targets.some(target => target.rank < grammar.rank)) {\n this._reRank(grammar);\n }\n });\n // initialize priority queue, reset committed grammars\n this._committed.forEach(grammar => this._enqueue(grammar));\n this._committed = new UniqueList(grammar => grammar.uid);\n }\n\n private _enqueueTargets(grammar: IGrammarBase) {\n if (grammar.targets && grammar.targets.length && this._finishFirstRender) {\n grammar.targets.forEach((target: IGrammarBase) => this._enqueue(target));\n }\n }\n\n async evaluate() {\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n await this.asyncCallback(this._beforeRunner);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._isRunning = true;\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let next;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n try {\n while (this._heap.size() > 0) {\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n next = grammar.run();\n\n // await if grammar returned a promise\n if (next && next.then) {\n next = await next;\n }\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n } catch (err) {\n this._heap.clear();\n error = err;\n }\n\n this._isRunning = false;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n // invoke callbacks queued via runAfter\n await this.asyncCallback(this._afterRunner);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n evaluateSync() {\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n this._beforeRunner(this);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._isRunning = true;\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n while (this._heap.size() > 0) {\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n grammar.runSync();\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n\n this._isRunning = false;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars updated; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n this._afterRunner(this);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n runBefore(callback?: IDataflowCallback) {\n this._beforeRunner = callback;\n }\n\n runAfter(callback?: IDataflowCallback) {\n this._afterRunner = callback;\n }\n\n release() {\n if (this._heap) {\n this._heap.clear();\n this._heap = null;\n }\n\n this.logger = null;\n this._committed = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/view/dataflow.ts"],"names":[],"mappings":"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","file":"dataflow.js","sourcesContent":["import type { ILogger } from '@visactor/vutils';\nimport type { IDataflow } from '../types/dataflow';\nimport { isNil, Logger } from '@visactor/vutils';\nimport { Heap } from '../util/grammar-heap';\nimport { UniqueList } from '../util/unique-list';\nimport type { IDataflowCallback, IGrammarBase } from '../types';\n\n/**\n * A dataflow to run all the grammar elements\n */\nexport default class Dataflow implements IDataflow {\n logger: ILogger;\n private grammars: IGrammarBase[] = [];\n /** 当前排序 */\n private _curRank: number;\n /** 发生了变更的元素 */\n private _committed?: UniqueList<IGrammarBase>;\n private _heap?: Heap;\n private _beforeRunner?: IDataflowCallback;\n private _afterRunner?: IDataflowCallback;\n /** 正在运行dataflow */\n private _isRunning?: boolean;\n private _updateCounter: number;\n /** 是否完成初次渲染 */\n private _finishFirstRender?: boolean;\n\n constructor() {\n this.logger = Logger.getInstance();\n\n this._curRank = 0;\n\n this._committed = new UniqueList(grammar => grammar.uid);\n\n this._heap = new Heap((a, b) => a.qrank - b.qrank);\n this._beforeRunner = null;\n this._afterRunner = null;\n this._isRunning = false;\n this._updateCounter = 0;\n this._finishFirstRender = false;\n }\n\n async asyncCallback(callback: (context: IDataflow) => any) {\n try {\n await callback(this);\n } catch (err) {\n this.logger.error(err);\n }\n }\n\n add(grammar: IGrammarBase) {\n if (!grammar) {\n return;\n }\n this._setRankOfGrammar(grammar);\n this.commit(grammar);\n if (!this.grammars.includes(grammar)) {\n this.grammars.push(grammar);\n\n return true;\n }\n\n return false;\n }\n\n remove(grammar: IGrammarBase) {\n if (grammar) {\n this._committed.remove(grammar);\n this._heap.remove(grammar);\n this.grammars = this.grammars.filter(storedGrammar => storedGrammar !== grammar);\n }\n }\n\n private _setRankOfGrammar(grammar?: IGrammarBase) {\n grammar.rank = ++this._curRank;\n }\n\n private _reRank(grammar?: IGrammarBase) {\n const queue = [grammar];\n\n while (queue.length) {\n const cur = queue.pop();\n this._setRankOfGrammar(cur);\n const list = cur.targets;\n\n if (list) {\n list.forEach((entry: IGrammarBase) => {\n queue.push(entry);\n if (entry === grammar) {\n this.logger.error('Cycle detected in dataflow graph.');\n }\n });\n }\n }\n }\n\n private _enqueue(grammar: IGrammarBase) {\n (grammar as any).qrank = grammar.rank;\n // push and reRank in the heap\n this._heap.push(grammar);\n }\n\n private _logGrammarRunInfo(grammar: IGrammarBase) {\n if (this.logger.canLogError()) {\n const debugInfos = [\n { key: 'id', value: grammar.id() },\n { key: 'name', value: grammar.name() }\n ];\n const debugStr = debugInfos.reduce((str, entry, index) => {\n if (!isNil(entry.value)) {\n return `${str}${index ? ' , ' : ''}${entry.key}: ${entry.value}`;\n }\n\n return str;\n }, '');\n\n this.logger.debug('Run Operator: ', grammar, debugStr);\n }\n }\n\n hasCommitted() {\n return !!this._committed.length;\n }\n\n // OPERATOR UPDATES\n commit(grammar: IGrammarBase) {\n if (this._isRunning) {\n // this may lead to a problem, the same op may be added to the queue multiple times\n // if in midst of propagation, add to priority queue\n this._enqueue(grammar);\n } else {\n // otherwise, queue for next propagation\n this._committed.add(grammar);\n }\n\n return this;\n }\n\n private _beforeEvaluate() {\n // reRank grammar element which has higher rank than its targets\n this.grammars.forEach(grammar => {\n if (grammar.targets.some(target => target.rank < grammar.rank)) {\n this._reRank(grammar);\n }\n });\n // initialize priority queue, reset committed grammars\n this._committed.forEach(grammar => this._enqueue(grammar));\n this._committed = new UniqueList(grammar => grammar.uid);\n }\n\n private _enqueueTargets(grammar: IGrammarBase) {\n if (grammar.targets && grammar.targets.length && this._finishFirstRender) {\n grammar.targets.forEach((target: IGrammarBase) => this._enqueue(target));\n }\n }\n\n async evaluate() {\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n await this.asyncCallback(this._beforeRunner);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._isRunning = true;\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let next;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n try {\n while (this._heap.size() > 0) {\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n next = grammar.run();\n\n // await if grammar returned a promise\n if (next && next.then) {\n next = await next;\n }\n\n // finish evaluation if dataflow is stopped during asynchronous process\n if (!this._isRunning) {\n return false;\n }\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n } catch (err) {\n this._heap.clear();\n error = err;\n }\n\n this._isRunning = false;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n // invoke callbacks queued via runAfter\n await this.asyncCallback(this._afterRunner);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n evaluateSync() {\n // invoke prerun function, if provided\n if (this._beforeRunner) {\n this._beforeRunner(this);\n }\n\n // exit early if there are no updates\n if (!this._committed.length) {\n this.logger.info('Dataflow invoked, but nothing to do.');\n return false;\n }\n\n this._isRunning = true;\n this._updateCounter += 1;\n let count = 0;\n let grammar;\n let dt;\n let error;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now();\n this.logger.debug(`-- START PROPAGATION (${this._updateCounter}) -----`);\n }\n\n this._beforeEvaluate();\n\n while (this._heap.size() > 0) {\n // dequeue grammar with highest priority\n grammar = this._heap.pop();\n\n // re-queue if rank changed\n if (grammar.rank !== grammar.qrank) {\n this._enqueue(grammar);\n continue;\n }\n\n grammar.runSync();\n\n this._logGrammarRunInfo(grammar);\n this._enqueueTargets(grammar);\n count += 1;\n }\n\n this._isRunning = false;\n\n if (this.logger.canLogInfo()) {\n dt = Date.now() - dt;\n this.logger.info(`> ${count} grammars updated; ${dt} ms`);\n }\n\n if (error) {\n this.logger.error(error);\n } else if (this._afterRunner) {\n this._afterRunner(this);\n }\n\n this._finishFirstRender = true;\n\n return true;\n }\n\n private stop() {\n if (!this._isRunning) {\n return;\n }\n this._isRunning = false;\n }\n\n runBefore(callback?: IDataflowCallback) {\n this._beforeRunner = callback;\n }\n\n runAfter(callback?: IDataflowCallback) {\n this._afterRunner = callback;\n }\n\n release() {\n // stop asynchronous evaluation\n this.stop();\n\n if (this._heap) {\n this._heap.clear();\n this._heap = null;\n }\n\n this.logger = null;\n this._committed = null;\n }\n}\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.releaseUpMarkNode = exports.RecordedTreeGrammars = exports.RecordedGrammars = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), graph_1 = require("../graph");
7
+ const vutils_1 = require("@visactor/vutils"), enums_1 = require("../graph/enums");
8
8
 
9
9
  class RecordedGrammars {
10
10
  constructor(mapKey, warningWhenDuplicated) {
@@ -142,8 +142,8 @@ class RecordedTreeGrammars extends RecordedGrammars {
142
142
  };
143
143
  this._markNodes.forEach((node => {
144
144
  const targetMark = node.mark;
145
- targetMark.markType === graph_1.GrammarMarkType.group && targetMark.includesChild(mark, !1) ? (node.children.push(currentNode),
146
- currentNode.parent = node) : mark.markType === graph_1.GrammarMarkType.group && mark.includesChild(targetMark, !1) && (currentNode.children.push(node),
145
+ targetMark.markType === enums_1.GrammarMarkType.group && targetMark.includesChild(mark, !1) ? (node.children.push(currentNode),
146
+ currentNode.parent = node) : mark.markType === enums_1.GrammarMarkType.group && mark.includesChild(targetMark, !1) && (currentNode.children.push(node),
147
147
  node.parent = currentNode);
148
148
  })), this._markNodes.push(currentNode);
149
149
  }
@@ -154,8 +154,8 @@ class RecordedTreeGrammars extends RecordedGrammars {
154
154
  const mark = grammar, currentNode = this._markNodes.find((node => node.mark === mark));
155
155
  this._markNodes.forEach((node => {
156
156
  const targetMark = node.mark;
157
- targetMark.markType === graph_1.GrammarMarkType.group && targetMark.includesChild(mark, !1) ? (node.children = node.children.filter((n => n !== currentNode)),
158
- currentNode.parent = null) : mark.markType === graph_1.GrammarMarkType.group && mark.includesChild(targetMark, !1) && (currentNode.children = currentNode.children.filter((n => n !== node)),
157
+ targetMark.markType === enums_1.GrammarMarkType.group && targetMark.includesChild(mark, !1) ? (node.children = node.children.filter((n => n !== currentNode)),
158
+ currentNode.parent = null) : mark.markType === enums_1.GrammarMarkType.group && mark.includesChild(targetMark, !1) && (currentNode.children = currentNode.children.filter((n => n !== node)),
159
159
  node.parent = null);
160
160
  })), this._markNodes = this._markNodes.filter((n => n !== currentNode));
161
161
  }
@@ -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';\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 && (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"]}
package/cjs/view/mark.js CHANGED
@@ -324,7 +324,7 @@ class Mark extends grammar_base_1.GrammarBase {
324
324
  this.differ.doDiff(), enterElements.forEach((element => {
325
325
  this.elementMap.delete(isCollectionMark ? element.groupKey : `${element.groupKey}-${element.key}`),
326
326
  element.remove(), element.release();
327
- })), this.elements = elements, sort && this.elements.sort(((elementA, elementB) => sort(elementA.getDatum(), elementB.getDatum())));
327
+ })), this.elements = elements, sort && this.elements.length >= 2 && this.elements.sort(((elementA, elementB) => sort(elementA.getDatum(), elementB.getDatum())));
328
328
  }
329
329
  evaluateState(elements, stateSpec, parameters) {
330
330
  stateSpec && elements.forEach((element => {