@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,92 +0,0 @@
1
- "use strict";
2
-
3
- var __importDefault = this && this.__importDefault || function(mod) {
4
- return mod && mod.__esModule ? mod : {
5
- default: mod
6
- };
7
- };
8
-
9
- Object.defineProperty(exports, "__esModule", {
10
- value: !0
11
- }), exports.registerViewEventsAPI = void 0;
12
-
13
- const vutils_1 = require("@visactor/vutils"), event_1 = require("../parse/event"), util_1 = require("../parse/util"), constants_1 = require("./constants"), events_1 = require("./events"), vrender_core_1 = require("@visactor/vrender-core"), events_extend_1 = __importDefault(require("../graph/util/events-extend")), View_1 = __importDefault(require("./View"));
14
-
15
- class ViewEventsMixin {
16
- event(eventSpec) {
17
- if ("between" in eventSpec) {
18
- const [starEvent, endEvent] = eventSpec.between, id = `${starEvent.type}-${eventSpec.type}-${endEvent.type}`;
19
- let unbindEndEvent;
20
- this.bindEvents(Object.assign({}, starEvent, {
21
- callback: () => {
22
- if (this._eventCache || (this._eventCache = {}), !this._eventCache[id]) {
23
- const unbindEvent = this.bindEvents(eventSpec);
24
- this._eventCache[id] = unbindEvent;
25
- }
26
- unbindEndEvent || (unbindEndEvent = this.bindEvents(Object.assign({}, endEvent, {
27
- callback: () => {
28
- this._eventCache[id] && (this._eventCache[id](), this._eventCache[id] = null);
29
- }
30
- })));
31
- }
32
- }));
33
- } else "merge" in eventSpec ? eventSpec.merge.forEach((entry => {
34
- const singleEvent = Object.assign({}, eventSpec);
35
- (0, vutils_1.isString)(entry) ? singleEvent.type = entry : (0, vutils_1.isObject)(entry) && Object.assign(singleEvent, entry),
36
- singleEvent.debounce = 50, this.bindEvents(singleEvent);
37
- })) : this.bindEvents(eventSpec);
38
- }
39
- bindEvents(eventSpec) {
40
- if (this._eventConfig.disable) return;
41
- const {type: evtType, filter: filter, callback: callback, throttle: throttle, debounce: debounce, consume: consume, target: target, dependency: dependency} = eventSpec, eventSelector = (0,
42
- event_1.parseEventSelector)(evtType);
43
- if (!eventSelector) return;
44
- const {source: source, type: type} = eventSelector, markFilter = (0, event_1.generateFilterByMark)(eventSelector), validateSignals = (Array.isArray(target) && target.length ? target.map((entry => ({
45
- signal: this.getSignalById(entry.target),
46
- callback: entry.callback
47
- }))) : [ {
48
- signal: (0, vutils_1.isString)(target) ? this.getSignalById(target) : null,
49
- callback: callback
50
- } ]).filter((entry => entry.signal || entry.callback)), refs = (0, util_1.parseReference)(dependency, this), send = (0,
51
- event_1.parseHandler)(((evt, element) => {
52
- const needPreventDefault = source === constants_1.EVENT_SOURCE_VIEW && (0, events_1.prevent)(this._eventConfig, type) || consume && (void 0 === evt.cancelable || evt.cancelable);
53
- source === constants_1.EVENT_SOURCE_WINDOW && (evt = (0, events_extend_1.default)(this, evt, element, type, constants_1.EVENT_SOURCE_WINDOW));
54
- let hasCommitted = !1;
55
- if ((!filter || filter(evt)) && (!markFilter || markFilter(element)) && validateSignals.length) {
56
- const params = refs.reduce(((params, ref) => (params[ref.id()] = ref.output(), params)), {});
57
- validateSignals.forEach((entry => {
58
- if (entry.callback && entry.signal) {
59
- entry.signal.set(entry.callback(evt, params)) && (this.commit(entry.signal), hasCommitted = !0);
60
- } else entry.callback ? entry.callback(evt, params) : (this.commit(entry.signal),
61
- hasCommitted = !0);
62
- }));
63
- }
64
- needPreventDefault && evt.preventDefault(), consume && evt.stopPropagation(), hasCommitted && this.run();
65
- }), {
66
- throttle: throttle,
67
- debounce: debounce
68
- });
69
- if (source === constants_1.EVENT_SOURCE_VIEW) {
70
- if ((0, events_1.permit)(this._eventConfig, constants_1.EVENT_SOURCE_VIEW, type)) return this.addEventListener(type, send, constants_1.NO_TRAP),
71
- () => {
72
- this.removeEventListener(type, send);
73
- };
74
- } else if (source === constants_1.EVENT_SOURCE_WINDOW) return vrender_core_1.vglobal.addEventListener(type, send),
75
- this._eventListeners.push({
76
- type: type,
77
- source: vrender_core_1.vglobal,
78
- handler: send
79
- }), () => {
80
- vrender_core_1.vglobal.removeEventListener(type, send);
81
- const index = this._eventListeners.findIndex((entry => entry.type === type && entry.source === vrender_core_1.vglobal && entry.handler === send));
82
- index >= 0 && this._eventListeners.splice(index, 1);
83
- };
84
- }
85
- }
86
-
87
- const registerViewEventsAPI = () => {
88
- (0, vutils_1.mixin)(View_1.default, ViewEventsMixin);
89
- };
90
-
91
- exports.registerViewEventsAPI = registerViewEventsAPI;
92
- //# sourceMappingURL=view-event-mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/view-event-mixin.ts"],"names":[],"mappings":"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","file":"view-event-mixin.js","sourcesContent":["import { isObject, isString, mixin } from '@visactor/vutils';\nimport type { BaseEventSpec, EventSpec } from '../types/event';\nimport type { IView, IViewEventConfig } from '../types/view';\nimport { generateFilterByMark, parseEventSelector, parseHandler } from '../parse/event';\nimport { parseReference } from '../parse/util';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW, NO_TRAP } from './constants';\nimport { permit, prevent } from './events';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport type { IElement } from '../types/element';\nimport getExtendedEvents from '../graph/util/events-extend';\nimport View from './View';\n\nclass ViewEventsMixin {\n private _eventConfig: IViewEventConfig;\n private _eventCache: Record<string, () => void>;\n private _eventListeners: Array<{\n type: string;\n source: any;\n handler: any;\n }>;\n\n event(eventSpec: EventSpec) {\n if ('between' in eventSpec) {\n const [starEvent, endEvent] = eventSpec.between;\n // FIXME between需要生成唯一ID\n const id = `${starEvent.type}-${eventSpec.type}-${endEvent.type}`;\n\n let unbindEndEvent: any;\n\n this.bindEvents(\n Object.assign({}, starEvent, {\n callback: () => {\n if (!this._eventCache) {\n this._eventCache = {};\n }\n // 中间的事件绑定\n if (!this._eventCache[id]) {\n const unbindEvent = this.bindEvents(eventSpec);\n this._eventCache[id] = unbindEvent;\n }\n if (!unbindEndEvent) {\n // 结束的事件绑定\n unbindEndEvent = this.bindEvents(\n Object.assign({}, endEvent, {\n callback: () => {\n if (this._eventCache[id]) {\n this._eventCache[id]();\n this._eventCache[id] = null;\n }\n }\n })\n );\n }\n }\n })\n );\n } else if ('merge' in eventSpec) {\n eventSpec.merge.forEach(entry => {\n const singleEvent: Partial<BaseEventSpec> = Object.assign({}, eventSpec);\n\n if (isString(entry)) {\n singleEvent.type = entry;\n } else if (isObject(entry)) {\n Object.assign(singleEvent, entry);\n }\n singleEvent.debounce = 50;\n this.bindEvents(singleEvent as BaseEventSpec);\n });\n } else {\n this.bindEvents(eventSpec);\n }\n }\n\n // --- Event ---\n\n private bindEvents(eventSpec: BaseEventSpec) {\n if (this._eventConfig.disable) {\n return;\n }\n const { type: evtType, filter, callback, throttle, debounce, consume, target, dependency } = eventSpec;\n const eventSelector = parseEventSelector(evtType);\n\n if (!eventSelector) {\n return;\n }\n const { source, type } = eventSelector;\n\n const markFilter = generateFilterByMark(eventSelector);\n const targetSignals =\n Array.isArray(target) && target.length\n ? target.map(entry => {\n return {\n signal: (this as unknown as IView).getSignalById(entry.target),\n callback: entry.callback\n };\n })\n : [\n {\n signal: isString(target) ? (this as unknown as IView).getSignalById(target) : null,\n callback\n }\n ];\n const validateSignals = targetSignals.filter(entry => entry.signal || entry.callback);\n const refs = parseReference(dependency, this as unknown as IView);\n\n const send = parseHandler(\n (evt?: any, element?: IElement) => {\n const needPreventDefault =\n (source === EVENT_SOURCE_VIEW && prevent(this._eventConfig, type)) ||\n (consume && (evt.cancelable === undefined || evt.cancelable));\n\n if (source === EVENT_SOURCE_WINDOW) {\n evt = getExtendedEvents(this as unknown as IView, evt, element, type, EVENT_SOURCE_WINDOW);\n }\n\n let hasCommitted = false;\n\n if ((!filter || filter(evt)) && (!markFilter || markFilter(element)) && validateSignals.length) {\n const params = refs.reduce((params, ref) => {\n params[ref.id()] = ref.output();\n return params;\n }, {});\n validateSignals.forEach(entry => {\n if (entry.callback && entry.signal) {\n const changed = entry.signal.set(entry.callback(evt, params));\n\n if (changed) {\n (this as unknown as IView).commit(entry.signal);\n hasCommitted = true;\n }\n } else if (entry.callback) {\n entry.callback(evt, params);\n } else {\n (this as unknown as IView).commit(entry.signal);\n hasCommitted = true;\n }\n });\n }\n\n if (needPreventDefault) {\n evt.preventDefault();\n }\n\n if (consume) {\n evt.stopPropagation();\n }\n\n if (hasCommitted) {\n (this as unknown as IView).run();\n }\n },\n { throttle, debounce }\n );\n\n if (source === EVENT_SOURCE_VIEW) {\n if (permit(this._eventConfig, EVENT_SOURCE_VIEW, type)) {\n // send traps errors, so use {trap: false} option\n (this as unknown as IView).addEventListener(type, send, NO_TRAP);\n\n return () => {\n (this as unknown as IView).removeEventListener(type, send);\n };\n }\n } else if (source === EVENT_SOURCE_WINDOW) {\n vglobal.addEventListener(type, send);\n this._eventListeners.push({\n type: type,\n source: vglobal,\n handler: send\n });\n\n return () => {\n vglobal.removeEventListener(type, send);\n\n const index = this._eventListeners.findIndex((entry: any) => {\n return entry.type === type && entry.source === vglobal && entry.handler === send;\n });\n\n if (index >= 0) {\n this._eventListeners.splice(index, 1);\n }\n };\n }\n }\n}\n\nexport const registerViewEventsAPI = () => {\n mixin(View, ViewEventsMixin);\n};\n"]}
@@ -1 +0,0 @@
1
- export declare const registerViewMorphAPI: () => void;
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- var __importDefault = this && this.__importDefault || function(mod) {
4
- return mod && mod.__esModule ? mod : {
5
- default: mod
6
- };
7
- };
8
-
9
- Object.defineProperty(exports, "__esModule", {
10
- value: !0
11
- }), exports.registerViewMorphAPI = void 0;
12
-
13
- const vutils_1 = require("@visactor/vutils"), View_1 = __importDefault(require("./View")), morph_1 = require("../graph/animation/morph");
14
-
15
- class ViewMorphMixin {
16
- morph(normalizedRunningConfig) {
17
- var _a;
18
- null === (_a = this._willMorphMarks) || void 0 === _a || _a.forEach((morphMarks => {
19
- (0, morph_1.morph)(morphMarks.prev, morphMarks.next, normalizedRunningConfig);
20
- })), this._willMorphMarks = null;
21
- }
22
- addMorphMarks(mark) {
23
- this._willMorphMarks || (this._willMorphMarks = []), this._willMorphMarks.push(mark);
24
- }
25
- }
26
-
27
- const registerViewMorphAPI = () => {
28
- (0, vutils_1.mixin)(View_1.default, ViewMorphMixin);
29
- };
30
-
31
- exports.registerViewMorphAPI = registerViewMorphAPI;
32
- //# sourceMappingURL=view-morph-mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/view-morph-mixin.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AACzC,kDAA0B;AAE1B,oDAAiD;AAGjD,MAAM,cAAc;IAGR,KAAK,CAAC,uBAAwC;;QACtD,MAAA,IAAI,CAAC,eAAe,0CAAE,OAAO,CAAC,UAAU,CAAC,EAAE;YACzC,IAAA,aAAK,EAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAES,aAAa,CAAC,IAAsC;QAC5D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AAEM,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,IAAA,cAAK,EAAC,cAAI,EAAE,cAAc,CAAC,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B","file":"view-morph-mixin.js","sourcesContent":["import { mixin } from '@visactor/vutils';\nimport View from './View';\nimport type { IMark } from '../types/grammar';\nimport { morph } from '../graph/animation/morph';\nimport type { IRunningConfig } from '../types/view';\n\nclass ViewMorphMixin {\n private _willMorphMarks: { prev: IMark[]; next: IMark[] }[];\n\n protected morph(normalizedRunningConfig?: IRunningConfig) {\n this._willMorphMarks?.forEach(morphMarks => {\n morph(morphMarks.prev, morphMarks.next, normalizedRunningConfig);\n });\n this._willMorphMarks = null;\n }\n\n protected addMorphMarks(mark: { prev: IMark[]; next: IMark[] }) {\n if (!this._willMorphMarks) {\n this._willMorphMarks = [];\n }\n\n this._willMorphMarks.push(mark);\n }\n}\n\nexport const registerViewMorphAPI = () => {\n mixin(View, ViewMorphMixin);\n};\n"]}
@@ -1,8 +0,0 @@
1
- import type { IGrammarBase, IMark, IRunningConfig } from '../types';
2
- import type { DiffResult } from '../types/base';
3
- import type { IViewDiff } from '../types/morph';
4
- export declare class ViewDiff implements IViewDiff {
5
- diffGrammar<U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]): DiffResult<U, U>;
6
- diffMark(prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig): DiffResult<IMark[], IMark[]>;
7
- private diffUpdateByGroup;
8
- }
@@ -1,89 +0,0 @@
1
- import { diffSingle, groupData } from "./mark/differ";
2
-
3
- import { GrammarMarkType } from "./enums";
4
-
5
- const EmptyKey = Symbol.for("key");
6
-
7
- export class ViewDiff {
8
- diffGrammar(prevGrammars, nextGrammars) {
9
- return diffSingle(prevGrammars, nextGrammars, (grammar => {
10
- var _a;
11
- return null !== (_a = grammar.id()) && void 0 !== _a ? _a : Symbol();
12
- }));
13
- }
14
- diffMark(prevMarks, nextMarks, runningConfig) {
15
- const diffResult = {
16
- enter: [],
17
- exit: [],
18
- update: []
19
- };
20
- let prevDiffMarks = [], nextDiffMarks = [];
21
- prevMarks.forEach((mark => {
22
- mark.markType !== GrammarMarkType.group && (runningConfig.morph && mark.getMorphConfig().morph || runningConfig.morphAll || runningConfig.reuse) ? prevDiffMarks.push(mark) : diffResult.exit.push({
23
- prev: [ mark ]
24
- });
25
- })), nextMarks.forEach((mark => {
26
- mark.markType !== GrammarMarkType.group && (runningConfig.morph && mark.getMorphConfig().morph || runningConfig.morphAll || runningConfig.reuse) ? nextDiffMarks.push(mark) : diffResult.enter.push({
27
- next: [ mark ]
28
- });
29
- }));
30
- const keyDiffResult = this.diffUpdateByGroup(prevDiffMarks, nextDiffMarks, (mark => mark.getMorphConfig().morphKey), (mark => mark.getMorphConfig().morphKey));
31
- prevDiffMarks = keyDiffResult.prev, nextDiffMarks = keyDiffResult.next, diffResult.update = diffResult.update.concat(keyDiffResult.update);
32
- const nameDiffResult = this.diffUpdateByGroup(prevDiffMarks, nextDiffMarks, (mark => mark.id()), (mark => mark.id()));
33
- prevDiffMarks = nameDiffResult.prev, nextDiffMarks = nameDiffResult.next, diffResult.update = diffResult.update.concat(nameDiffResult.update);
34
- const prevParentGroup = groupData(prevDiffMarks, (mark => {
35
- var _a, _b;
36
- return null === (_b = null === (_a = mark.group) || void 0 === _a ? void 0 : _a.id) || void 0 === _b ? void 0 : _b.call(_a);
37
- })), nextParentGroup = groupData(nextDiffMarks, (mark => {
38
- var _a, _b;
39
- return null === (_b = null === (_a = mark.group) || void 0 === _a ? void 0 : _a.id) || void 0 === _b ? void 0 : _b.call(_a);
40
- }));
41
- return Object.keys(nextParentGroup).forEach((groupName => {
42
- const prevChildren = prevParentGroup.data.get(groupName), nextChildren = nextParentGroup.data.get(groupName);
43
- if (prevChildren && nextChildren) {
44
- for (let i = 0; i < Math.max(prevChildren.length, nextChildren.length); i += 1) {
45
- const prevChild = prevChildren[i], nextChild = nextChildren[i];
46
- prevChild && nextChild ? diffResult.update.push({
47
- prev: [ prevChild ],
48
- next: [ nextChild ]
49
- }) : prevChild ? diffResult.exit.push({
50
- prev: [ prevChild ]
51
- }) : nextChild && diffResult.enter.push({
52
- next: [ nextChild ]
53
- });
54
- }
55
- prevDiffMarks = prevDiffMarks.filter((mark => !prevChildren.includes(mark))), nextDiffMarks = nextDiffMarks.filter((mark => !nextChildren.includes(mark)));
56
- }
57
- })), prevDiffMarks.forEach((mark => diffResult.exit.push({
58
- prev: [ mark ]
59
- }))), nextDiffMarks.forEach((mark => diffResult.enter.push({
60
- next: [ mark ]
61
- }))), diffResult;
62
- }
63
- diffUpdateByGroup(prev, next, prevKey, nextKey) {
64
- const prevGroup = groupData(prev, (datum => {
65
- var _a;
66
- return null !== (_a = prevKey(datum)) && void 0 !== _a ? _a : EmptyKey;
67
- })), nextGroup = groupData(next, (datum => {
68
- var _a;
69
- return null !== (_a = nextKey(datum)) && void 0 !== _a ? _a : EmptyKey;
70
- }));
71
- let prevAfterDiff = prev, nextAfterDiff = next;
72
- const update = [];
73
- return nextGroup.keys.forEach((key => {
74
- if (key !== EmptyKey) {
75
- const prevKeyData = prevGroup.data.get(key), nextKeyData = nextGroup.data.get(key);
76
- prevKeyData && nextKeyData && (update.push({
77
- prev: prevKeyData,
78
- next: nextKeyData
79
- }), prevAfterDiff = prevAfterDiff.filter((datum => !prevKeyData.includes(datum))),
80
- nextAfterDiff = nextAfterDiff.filter((datum => !nextKeyData.includes(datum))));
81
- }
82
- })), {
83
- prev: prevAfterDiff,
84
- next: nextAfterDiff,
85
- update: update
86
- };
87
- }
88
- }
89
- //# sourceMappingURL=view-diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graph/view-diff.ts"],"names":[],"mappings":"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","file":"view-diff.js","sourcesContent":["import type { IGrammarBase, IMark, IRunningConfig, MarkSpec } from '../types';\nimport type { DiffResult } from '../types/base';\nimport type { IViewDiff } from '../types/morph';\nimport { diffSingle, groupData } from './mark/differ';\nimport { GrammarMarkType } from './enums';\n\nconst EmptyKey = Symbol.for('key');\n\nexport class ViewDiff implements IViewDiff {\n diffGrammar<U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]): DiffResult<U, U> {\n const key = (grammar: U) => grammar.id() ?? Symbol();\n return diffSingle(prevGrammars, nextGrammars, key);\n }\n\n diffMark(prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig): DiffResult<IMark[], IMark[]> {\n const diffResult: DiffResult<IMark[], IMark[]> = {\n enter: [],\n exit: [],\n update: []\n };\n\n let prevDiffMarks: IMark[] = [];\n let nextDiffMarks: IMark[] = [];\n\n // filter out marks & specs which will not morph\n prevMarks.forEach(mark => {\n if (\n // group mark does not support reusing or morphing\n mark.markType !== GrammarMarkType.group &&\n ((runningConfig.morph && mark.getMorphConfig().morph) || runningConfig.morphAll || runningConfig.reuse)\n ) {\n prevDiffMarks.push(mark);\n } else {\n diffResult.exit.push({ prev: [mark] });\n }\n });\n nextMarks.forEach(mark => {\n if (\n mark.markType !== GrammarMarkType.group &&\n ((runningConfig.morph && mark.getMorphConfig().morph) || runningConfig.morphAll || runningConfig.reuse)\n ) {\n nextDiffMarks.push(mark);\n } else {\n diffResult.enter.push({ next: [mark] });\n }\n });\n\n // 1. match by custom key\n const keyDiffResult = this.diffUpdateByGroup(\n prevDiffMarks,\n nextDiffMarks,\n mark => mark.getMorphConfig().morphKey,\n mark => mark.getMorphConfig().morphKey\n );\n prevDiffMarks = keyDiffResult.prev;\n nextDiffMarks = keyDiffResult.next;\n diffResult.update = diffResult.update.concat(keyDiffResult.update);\n\n // 2. match by name\n const nameDiffResult = this.diffUpdateByGroup(\n prevDiffMarks,\n nextDiffMarks,\n mark => mark.id(),\n mark => mark.id()\n );\n prevDiffMarks = nameDiffResult.prev;\n nextDiffMarks = nameDiffResult.next;\n diffResult.update = diffResult.update.concat(nameDiffResult.update);\n\n // 3. match by index\n\n // FIXME: mark index cannot be get before executing, index is decided by remove/order for now\n const prevParentGroup = groupData(prevDiffMarks, mark => mark.group?.id?.());\n const nextParentGroup = groupData(nextDiffMarks, mark => mark.group?.id?.());\n\n Object.keys(nextParentGroup).forEach(groupName => {\n const prevChildren = prevParentGroup.data.get(groupName);\n const nextChildren = nextParentGroup.data.get(groupName);\n if (prevChildren && nextChildren) {\n for (let i = 0; i < Math.max(prevChildren.length, nextChildren.length); i += 1) {\n const prevChild = prevChildren[i];\n const nextChild = nextChildren[i];\n if (prevChild && nextChild) {\n diffResult.update.push({ prev: [prevChild], next: [nextChild] });\n } else if (prevChild) {\n diffResult.exit.push({ prev: [prevChild] });\n } else if (nextChild) {\n diffResult.enter.push({ next: [nextChild] });\n }\n }\n\n prevDiffMarks = prevDiffMarks.filter(mark => !prevChildren.includes(mark));\n nextDiffMarks = nextDiffMarks.filter(mark => !nextChildren.includes(mark));\n }\n });\n\n // 4. handle unmatched marks\n prevDiffMarks.forEach(mark => diffResult.exit.push({ prev: [mark] }));\n nextDiffMarks.forEach(mark => diffResult.enter.push({ next: [mark] }));\n\n return diffResult;\n }\n\n private diffUpdateByGroup<U extends IMark | MarkSpec, V extends IMark | MarkSpec>(\n prev: U[],\n next: V[],\n prevKey: (datum: U) => symbol | string,\n nextKey: (datum: V) => symbol | string\n ) {\n const prevGroup = groupData(prev, datum => prevKey(datum) ?? EmptyKey);\n const nextGroup = groupData(next, datum => nextKey(datum) ?? EmptyKey);\n\n let prevAfterDiff = prev;\n let nextAfterDiff = next;\n const update: { prev: U[]; next: V[] }[] = [];\n nextGroup.keys.forEach(key => {\n if (key !== EmptyKey) {\n const prevKeyData = prevGroup.data.get(key);\n const nextKeyData = nextGroup.data.get(key);\n if (prevKeyData && nextKeyData) {\n update.push({ prev: prevKeyData, next: nextKeyData });\n prevAfterDiff = prevAfterDiff.filter(datum => !prevKeyData.includes(datum));\n nextAfterDiff = nextAfterDiff.filter(datum => !nextKeyData.includes(datum));\n }\n }\n });\n return {\n prev: prevAfterDiff,\n next: nextAfterDiff,\n update\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export declare const registerMarkAnimateAPI: () => void;
@@ -1,25 +0,0 @@
1
- import { mixin } from "@visactor/vutils";
2
-
3
- import { Animate } from "../graph/animation/animate";
4
-
5
- import { Mark } from "./mark";
6
-
7
- class MarkAnimateMixin {
8
- constructor() {
9
- this.animate = new Animate(this, {});
10
- }
11
- initAnimate(spec) {
12
- this.animate || (this.animate = new Animate(this, spec.animation), this.needAnimate() && this.animate.updateState(spec.animationState));
13
- }
14
- reuseAnimate(mark) {
15
- this.animate = mark.animate, this.animate.mark = this;
16
- }
17
- updateAnimate(spec) {
18
- spec.animation && this.animate.updateConfig(spec.animation), this.animate.updateState(spec.animationState);
19
- }
20
- }
21
-
22
- export const registerMarkAnimateAPI = () => {
23
- mixin(Mark, MarkAnimateMixin);
24
- };
25
- //# sourceMappingURL=mark-animate-mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/mark-animate-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,gBAAgB;IAAtB;QACE,YAAO,GAAa,IAAI,OAAO,CAAC,IAAwB,EAAE,EAAE,CAAC,CAAC;IAsBhE,CAAC;IApBC,WAAW,CAAC,IAAc;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,IAAK,IAAY,CAAC,WAAW,EAAE,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC/C;SACF;IACH,CAAC;IAED,YAAY,CAAC,IAAW;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAwB,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,IAAc;QAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAChC,CAAC,CAAC","file":"mark-animate-mixin.js","sourcesContent":["import { mixin } from '@visactor/vutils';\nimport { Animate } from '../graph/animation/animate';\nimport type { IMark, MarkSpec } from '../types';\nimport type { IAnimate } from '../types/animate';\nimport { Mark } from './mark';\n\nclass MarkAnimateMixin {\n animate: IAnimate = new Animate(this as unknown as IMark, {});\n\n initAnimate(spec: MarkSpec) {\n if (!this.animate) {\n this.animate = new Animate(this as unknown as IMark, spec.animation);\n if ((this as any).needAnimate()) {\n this.animate.updateState(spec.animationState);\n }\n }\n }\n\n reuseAnimate(mark: IMark) {\n this.animate = mark.animate;\n this.animate.mark = this as unknown as IMark;\n }\n\n updateAnimate(spec: MarkSpec) {\n if (spec.animation) {\n this.animate.updateConfig(spec.animation);\n }\n this.animate.updateState(spec.animationState);\n }\n}\n\nexport const registerMarkAnimateAPI = () => {\n mixin(Mark, MarkAnimateMixin);\n};\n"]}
@@ -1 +0,0 @@
1
- export declare const registerViewAnimateAPI: () => void;
@@ -1,16 +0,0 @@
1
- import { mixin } from "@visactor/vutils";
2
-
3
- import View from "./View";
4
-
5
- import { ViewAnimate } from "./animate";
6
-
7
- class ViewAnimateMixin {
8
- initAnimate(view) {
9
- this.animate = new ViewAnimate(view);
10
- }
11
- }
12
-
13
- export const registerViewAnimateAPI = () => {
14
- mixin(View, ViewAnimateMixin);
15
- };
16
- //# sourceMappingURL=view-animate-mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/view-animate-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAIxC,MAAM,gBAAgB;IAGpB,WAAW,CAAC,IAAW;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAChC,CAAC,CAAC","file":"view-animate-mixin.js","sourcesContent":["import { mixin } from '@visactor/vutils';\nimport View from './View';\nimport { ViewAnimate } from './animate';\nimport type { IViewAnimate } from '../types/animate';\nimport type { IView } from '../types';\n\nclass ViewAnimateMixin {\n animate: IViewAnimate;\n\n initAnimate(view: IView) {\n this.animate = new ViewAnimate(view);\n }\n}\n\nexport const registerViewAnimateAPI = () => {\n mixin(View, ViewAnimateMixin);\n};\n"]}
@@ -1 +0,0 @@
1
- export declare const registerViewEventsAPI: () => void;
@@ -1,90 +0,0 @@
1
- import { isObject, isString, mixin } from "@visactor/vutils";
2
-
3
- import { generateFilterByMark, parseEventSelector, parseHandler } from "../parse/event";
4
-
5
- import { parseReference } from "../parse/util";
6
-
7
- import { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW, NO_TRAP } from "./constants";
8
-
9
- import { permit, prevent } from "./events";
10
-
11
- import { vglobal } from "@visactor/vrender-core";
12
-
13
- import getExtendedEvents from "../graph/util/events-extend";
14
-
15
- import View from "./View";
16
-
17
- class ViewEventsMixin {
18
- event(eventSpec) {
19
- if ("between" in eventSpec) {
20
- const [starEvent, endEvent] = eventSpec.between, id = `${starEvent.type}-${eventSpec.type}-${endEvent.type}`;
21
- let unbindEndEvent;
22
- this.bindEvents(Object.assign({}, starEvent, {
23
- callback: () => {
24
- if (this._eventCache || (this._eventCache = {}), !this._eventCache[id]) {
25
- const unbindEvent = this.bindEvents(eventSpec);
26
- this._eventCache[id] = unbindEvent;
27
- }
28
- unbindEndEvent || (unbindEndEvent = this.bindEvents(Object.assign({}, endEvent, {
29
- callback: () => {
30
- this._eventCache[id] && (this._eventCache[id](), this._eventCache[id] = null);
31
- }
32
- })));
33
- }
34
- }));
35
- } else "merge" in eventSpec ? eventSpec.merge.forEach((entry => {
36
- const singleEvent = Object.assign({}, eventSpec);
37
- isString(entry) ? singleEvent.type = entry : isObject(entry) && Object.assign(singleEvent, entry),
38
- singleEvent.debounce = 50, this.bindEvents(singleEvent);
39
- })) : this.bindEvents(eventSpec);
40
- }
41
- bindEvents(eventSpec) {
42
- if (this._eventConfig.disable) return;
43
- const {type: evtType, filter: filter, callback: callback, throttle: throttle, debounce: debounce, consume: consume, target: target, dependency: dependency} = eventSpec, eventSelector = parseEventSelector(evtType);
44
- if (!eventSelector) return;
45
- const {source: source, type: type} = eventSelector, markFilter = generateFilterByMark(eventSelector), validateSignals = (Array.isArray(target) && target.length ? target.map((entry => ({
46
- signal: this.getSignalById(entry.target),
47
- callback: entry.callback
48
- }))) : [ {
49
- signal: isString(target) ? this.getSignalById(target) : null,
50
- callback: callback
51
- } ]).filter((entry => entry.signal || entry.callback)), refs = parseReference(dependency, this), send = parseHandler(((evt, element) => {
52
- const needPreventDefault = source === EVENT_SOURCE_VIEW && prevent(this._eventConfig, type) || consume && (void 0 === evt.cancelable || evt.cancelable);
53
- source === EVENT_SOURCE_WINDOW && (evt = getExtendedEvents(this, evt, element, type, EVENT_SOURCE_WINDOW));
54
- let hasCommitted = !1;
55
- if ((!filter || filter(evt)) && (!markFilter || markFilter(element)) && validateSignals.length) {
56
- const params = refs.reduce(((params, ref) => (params[ref.id()] = ref.output(), params)), {});
57
- validateSignals.forEach((entry => {
58
- if (entry.callback && entry.signal) {
59
- entry.signal.set(entry.callback(evt, params)) && (this.commit(entry.signal), hasCommitted = !0);
60
- } else entry.callback ? entry.callback(evt, params) : (this.commit(entry.signal),
61
- hasCommitted = !0);
62
- }));
63
- }
64
- needPreventDefault && evt.preventDefault(), consume && evt.stopPropagation(), hasCommitted && this.run();
65
- }), {
66
- throttle: throttle,
67
- debounce: debounce
68
- });
69
- if (source === EVENT_SOURCE_VIEW) {
70
- if (permit(this._eventConfig, EVENT_SOURCE_VIEW, type)) return this.addEventListener(type, send, NO_TRAP),
71
- () => {
72
- this.removeEventListener(type, send);
73
- };
74
- } else if (source === EVENT_SOURCE_WINDOW) return vglobal.addEventListener(type, send),
75
- this._eventListeners.push({
76
- type: type,
77
- source: vglobal,
78
- handler: send
79
- }), () => {
80
- vglobal.removeEventListener(type, send);
81
- const index = this._eventListeners.findIndex((entry => entry.type === type && entry.source === vglobal && entry.handler === send));
82
- index >= 0 && this._eventListeners.splice(index, 1);
83
- };
84
- }
85
- }
86
-
87
- export const registerViewEventsAPI = () => {
88
- mixin(View, ViewEventsMixin);
89
- };
90
- //# sourceMappingURL=view-event-mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/view-event-mixin.ts"],"names":[],"mappings":"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","file":"view-event-mixin.js","sourcesContent":["import { isObject, isString, mixin } from '@visactor/vutils';\nimport type { BaseEventSpec, EventSpec } from '../types/event';\nimport type { IView, IViewEventConfig } from '../types/view';\nimport { generateFilterByMark, parseEventSelector, parseHandler } from '../parse/event';\nimport { parseReference } from '../parse/util';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW, NO_TRAP } from './constants';\nimport { permit, prevent } from './events';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport type { IElement } from '../types/element';\nimport getExtendedEvents from '../graph/util/events-extend';\nimport View from './View';\n\nclass ViewEventsMixin {\n private _eventConfig: IViewEventConfig;\n private _eventCache: Record<string, () => void>;\n private _eventListeners: Array<{\n type: string;\n source: any;\n handler: any;\n }>;\n\n event(eventSpec: EventSpec) {\n if ('between' in eventSpec) {\n const [starEvent, endEvent] = eventSpec.between;\n // FIXME between需要生成唯一ID\n const id = `${starEvent.type}-${eventSpec.type}-${endEvent.type}`;\n\n let unbindEndEvent: any;\n\n this.bindEvents(\n Object.assign({}, starEvent, {\n callback: () => {\n if (!this._eventCache) {\n this._eventCache = {};\n }\n // 中间的事件绑定\n if (!this._eventCache[id]) {\n const unbindEvent = this.bindEvents(eventSpec);\n this._eventCache[id] = unbindEvent;\n }\n if (!unbindEndEvent) {\n // 结束的事件绑定\n unbindEndEvent = this.bindEvents(\n Object.assign({}, endEvent, {\n callback: () => {\n if (this._eventCache[id]) {\n this._eventCache[id]();\n this._eventCache[id] = null;\n }\n }\n })\n );\n }\n }\n })\n );\n } else if ('merge' in eventSpec) {\n eventSpec.merge.forEach(entry => {\n const singleEvent: Partial<BaseEventSpec> = Object.assign({}, eventSpec);\n\n if (isString(entry)) {\n singleEvent.type = entry;\n } else if (isObject(entry)) {\n Object.assign(singleEvent, entry);\n }\n singleEvent.debounce = 50;\n this.bindEvents(singleEvent as BaseEventSpec);\n });\n } else {\n this.bindEvents(eventSpec);\n }\n }\n\n // --- Event ---\n\n private bindEvents(eventSpec: BaseEventSpec) {\n if (this._eventConfig.disable) {\n return;\n }\n const { type: evtType, filter, callback, throttle, debounce, consume, target, dependency } = eventSpec;\n const eventSelector = parseEventSelector(evtType);\n\n if (!eventSelector) {\n return;\n }\n const { source, type } = eventSelector;\n\n const markFilter = generateFilterByMark(eventSelector);\n const targetSignals =\n Array.isArray(target) && target.length\n ? target.map(entry => {\n return {\n signal: (this as unknown as IView).getSignalById(entry.target),\n callback: entry.callback\n };\n })\n : [\n {\n signal: isString(target) ? (this as unknown as IView).getSignalById(target) : null,\n callback\n }\n ];\n const validateSignals = targetSignals.filter(entry => entry.signal || entry.callback);\n const refs = parseReference(dependency, this as unknown as IView);\n\n const send = parseHandler(\n (evt?: any, element?: IElement) => {\n const needPreventDefault =\n (source === EVENT_SOURCE_VIEW && prevent(this._eventConfig, type)) ||\n (consume && (evt.cancelable === undefined || evt.cancelable));\n\n if (source === EVENT_SOURCE_WINDOW) {\n evt = getExtendedEvents(this as unknown as IView, evt, element, type, EVENT_SOURCE_WINDOW);\n }\n\n let hasCommitted = false;\n\n if ((!filter || filter(evt)) && (!markFilter || markFilter(element)) && validateSignals.length) {\n const params = refs.reduce((params, ref) => {\n params[ref.id()] = ref.output();\n return params;\n }, {});\n validateSignals.forEach(entry => {\n if (entry.callback && entry.signal) {\n const changed = entry.signal.set(entry.callback(evt, params));\n\n if (changed) {\n (this as unknown as IView).commit(entry.signal);\n hasCommitted = true;\n }\n } else if (entry.callback) {\n entry.callback(evt, params);\n } else {\n (this as unknown as IView).commit(entry.signal);\n hasCommitted = true;\n }\n });\n }\n\n if (needPreventDefault) {\n evt.preventDefault();\n }\n\n if (consume) {\n evt.stopPropagation();\n }\n\n if (hasCommitted) {\n (this as unknown as IView).run();\n }\n },\n { throttle, debounce }\n );\n\n if (source === EVENT_SOURCE_VIEW) {\n if (permit(this._eventConfig, EVENT_SOURCE_VIEW, type)) {\n // send traps errors, so use {trap: false} option\n (this as unknown as IView).addEventListener(type, send, NO_TRAP);\n\n return () => {\n (this as unknown as IView).removeEventListener(type, send);\n };\n }\n } else if (source === EVENT_SOURCE_WINDOW) {\n vglobal.addEventListener(type, send);\n this._eventListeners.push({\n type: type,\n source: vglobal,\n handler: send\n });\n\n return () => {\n vglobal.removeEventListener(type, send);\n\n const index = this._eventListeners.findIndex((entry: any) => {\n return entry.type === type && entry.source === vglobal && entry.handler === send;\n });\n\n if (index >= 0) {\n this._eventListeners.splice(index, 1);\n }\n };\n }\n }\n}\n\nexport const registerViewEventsAPI = () => {\n mixin(View, ViewEventsMixin);\n};\n"]}
@@ -1 +0,0 @@
1
- export declare const registerViewMorphAPI: () => void;
@@ -1,22 +0,0 @@
1
- import { mixin } from "@visactor/vutils";
2
-
3
- import View from "./View";
4
-
5
- import { morph } from "../graph/animation/morph";
6
-
7
- class ViewMorphMixin {
8
- morph(normalizedRunningConfig) {
9
- var _a;
10
- null === (_a = this._willMorphMarks) || void 0 === _a || _a.forEach((morphMarks => {
11
- morph(morphMarks.prev, morphMarks.next, normalizedRunningConfig);
12
- })), this._willMorphMarks = null;
13
- }
14
- addMorphMarks(mark) {
15
- this._willMorphMarks || (this._willMorphMarks = []), this._willMorphMarks.push(mark);
16
- }
17
- }
18
-
19
- export const registerViewMorphAPI = () => {
20
- mixin(View, ViewMorphMixin);
21
- };
22
- //# sourceMappingURL=view-morph-mixin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/view-morph-mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGjD,MAAM,cAAc;IAGR,KAAK,CAAC,uBAAwC;;QACtD,MAAA,IAAI,CAAC,eAAe,0CAAE,OAAO,CAAC,UAAU,CAAC,EAAE;YACzC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAES,aAAa,CAAC,IAAsC;QAC5D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC9B,CAAC,CAAC","file":"view-morph-mixin.js","sourcesContent":["import { mixin } from '@visactor/vutils';\nimport View from './View';\nimport type { IMark } from '../types/grammar';\nimport { morph } from '../graph/animation/morph';\nimport type { IRunningConfig } from '../types/view';\n\nclass ViewMorphMixin {\n private _willMorphMarks: { prev: IMark[]; next: IMark[] }[];\n\n protected morph(normalizedRunningConfig?: IRunningConfig) {\n this._willMorphMarks?.forEach(morphMarks => {\n morph(morphMarks.prev, morphMarks.next, normalizedRunningConfig);\n });\n this._willMorphMarks = null;\n }\n\n protected addMorphMarks(mark: { prev: IMark[]; next: IMark[] }) {\n if (!this._willMorphMarks) {\n this._willMorphMarks = [];\n }\n\n this._willMorphMarks.push(mark);\n }\n}\n\nexport const registerViewMorphAPI = () => {\n mixin(View, ViewMorphMixin);\n};\n"]}