@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.
- package/cjs/component/axis.d.ts +0 -2
- package/cjs/component/axis.js +1 -15
- package/cjs/component/axis.js.map +1 -1
- package/cjs/component/grid.d.ts +0 -2
- package/cjs/component/grid.js +1 -15
- package/cjs/component/grid.js.map +1 -1
- package/cjs/component/index.d.ts +2 -2
- package/cjs/component/index.js +1 -21
- package/cjs/component/index.js.map +1 -1
- package/cjs/core/factory.d.ts +1 -8
- package/cjs/core/factory.js +1 -8
- package/cjs/core/factory.js.map +1 -1
- package/cjs/glyph/boxplot.js +5 -5
- package/cjs/glyph/boxplot.js.map +1 -1
- package/cjs/glyph/link-path.js +2 -2
- package/cjs/glyph/link-path.js.map +1 -1
- package/cjs/glyph/ripple.js +2 -3
- package/cjs/glyph/ripple.js.map +1 -1
- package/cjs/glyph/tree-path.js +2 -2
- package/cjs/glyph/tree-path.js.map +1 -1
- package/cjs/glyph/violin.js +4 -4
- package/cjs/glyph/violin.js.map +1 -1
- package/cjs/glyph/wave.js +2 -3
- package/cjs/glyph/wave.js.map +1 -1
- package/cjs/graph/animation/animation/fade.js +4 -4
- package/cjs/graph/animation/animation/fade.js.map +1 -1
- package/cjs/graph/animation/animation/grow-cartesian.js +14 -14
- package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
- package/cjs/graph/animation/animation/grow-interval.js +9 -9
- package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
- package/cjs/graph/animation/animation/grow-points.js +9 -9
- package/cjs/graph/animation/animation/grow-points.js.map +1 -1
- package/cjs/graph/animation/animation/grow-polar.js +24 -24
- package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
- package/cjs/graph/animation/animation/move.js +6 -6
- package/cjs/graph/animation/animation/move.js.map +1 -1
- package/cjs/graph/animation/animation/rotate.js +5 -5
- package/cjs/graph/animation/animation/rotate.js.map +1 -1
- package/cjs/graph/animation/animation/scale.js +5 -5
- package/cjs/graph/animation/animation/scale.js.map +1 -1
- package/cjs/graph/animation/animation/update.js +2 -2
- package/cjs/graph/animation/animation/update.js.map +1 -1
- package/cjs/graph/animation/animator.js +6 -1
- package/cjs/graph/animation/animator.js.map +1 -1
- package/cjs/graph/animation/morph.d.ts +12 -2
- package/cjs/graph/animation/morph.js +163 -76
- package/cjs/graph/animation/morph.js.map +1 -1
- package/cjs/graph/attributes/line.js.map +1 -1
- package/cjs/graph/canvas-renderer.d.ts +1 -1
- package/cjs/graph/canvas-renderer.js +4 -4
- package/cjs/graph/canvas-renderer.js.map +1 -1
- package/cjs/graph/element.d.ts +2 -1
- package/cjs/graph/element.js +20 -19
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/glyph-element.js +3 -4
- package/cjs/graph/glyph-element.js.map +1 -1
- package/cjs/graph/layout/layout.d.ts +0 -1
- package/cjs/graph/layout/layout.js +2 -8
- package/cjs/graph/layout/layout.js.map +1 -1
- package/cjs/graph/mark/graphic.js +8 -14
- package/cjs/graph/mark/graphic.js.map +1 -1
- package/cjs/graph/util/element.d.ts +2 -0
- package/cjs/graph/util/element.js +10 -0
- package/cjs/graph/util/element.js.map +1 -0
- package/cjs/graph/util/point.js +26 -10
- package/cjs/graph/util/point.js.map +1 -1
- package/cjs/index.d.ts +1 -8
- package/cjs/index.js +2 -66
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/brush-base.js +2 -1
- package/cjs/interactions/brush-filter.js +1 -2
- package/cjs/interactions/fish-eye.js +2 -1
- package/cjs/interactions/index.js +1 -2
- package/cjs/interactions/tooltip.js +1 -1
- package/cjs/parse/event.d.ts +2 -0
- package/cjs/parse/event.js +10 -4
- package/cjs/parse/event.js.map +1 -1
- package/cjs/parse/util.js.map +1 -1
- package/cjs/types/animate.d.ts +1 -0
- package/cjs/types/animate.js.map +1 -1
- package/cjs/types/element.d.ts +5 -1
- package/cjs/types/element.js.map +1 -1
- package/cjs/types/morph.d.ts +2 -1
- package/cjs/types/morph.js.map +1 -1
- package/cjs/types/renderer.d.ts +1 -6
- package/cjs/types/renderer.js.map +1 -1
- package/cjs/view/View.d.ts +6 -3
- package/cjs/view/View.js +105 -52
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/animate.js +1 -2
- package/cjs/view/animate.js.map +1 -1
- package/cjs/view/constants.d.ts +0 -2
- package/cjs/view/constants.js +2 -3
- package/cjs/view/constants.js.map +1 -1
- package/cjs/view/events.d.ts +1 -0
- package/cjs/view/events.js +17 -3
- package/cjs/view/events.js.map +1 -1
- package/cjs/view/glyph.d.ts +0 -4
- package/cjs/view/glyph.js +3 -12
- package/cjs/view/glyph.js.map +1 -1
- package/cjs/view/grammar-record.js +2 -3
- package/cjs/view/grammar-record.js.map +1 -1
- package/cjs/view/group.js +3 -3
- package/cjs/view/group.js.map +1 -1
- package/cjs/view/mark.d.ts +0 -2
- package/cjs/view/mark.js +28 -31
- package/cjs/view/mark.js.map +1 -1
- package/es/component/axis.d.ts +0 -2
- package/es/component/axis.js +0 -10
- package/es/component/axis.js.map +1 -1
- package/es/component/grid.d.ts +0 -2
- package/es/component/grid.js +0 -10
- package/es/component/grid.js.map +1 -1
- package/es/component/index.d.ts +2 -2
- package/es/component/index.js +2 -2
- package/es/component/index.js.map +1 -1
- package/es/core/factory.d.ts +1 -8
- package/es/core/factory.js +1 -8
- package/es/core/factory.js.map +1 -1
- package/es/glyph/boxplot.js +2 -4
- package/es/glyph/boxplot.js.map +1 -1
- package/es/glyph/link-path.js +2 -4
- package/es/glyph/link-path.js.map +1 -1
- package/es/glyph/ripple.js +1 -3
- package/es/glyph/ripple.js.map +1 -1
- package/es/glyph/tree-path.js +2 -4
- package/es/glyph/tree-path.js.map +1 -1
- package/es/glyph/violin.js +2 -4
- package/es/glyph/violin.js.map +1 -1
- package/es/glyph/wave.js +1 -3
- package/es/glyph/wave.js.map +1 -1
- package/es/graph/animation/animation/fade.js +4 -4
- package/es/graph/animation/animation/fade.js.map +1 -1
- package/es/graph/animation/animation/grow-cartesian.js +14 -14
- package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
- package/es/graph/animation/animation/grow-interval.js +9 -9
- package/es/graph/animation/animation/grow-interval.js.map +1 -1
- package/es/graph/animation/animation/grow-points.js +9 -9
- package/es/graph/animation/animation/grow-points.js.map +1 -1
- package/es/graph/animation/animation/grow-polar.js +24 -24
- package/es/graph/animation/animation/grow-polar.js.map +1 -1
- package/es/graph/animation/animation/move.js +6 -6
- package/es/graph/animation/animation/move.js.map +1 -1
- package/es/graph/animation/animation/rotate.js +4 -4
- package/es/graph/animation/animation/rotate.js.map +1 -1
- package/es/graph/animation/animation/scale.js +5 -5
- package/es/graph/animation/animation/scale.js.map +1 -1
- package/es/graph/animation/animation/update.js +3 -1
- package/es/graph/animation/animation/update.js.map +1 -1
- package/es/graph/animation/animator.js +6 -1
- package/es/graph/animation/animator.js.map +1 -1
- package/es/graph/animation/morph.d.ts +12 -2
- package/es/graph/animation/morph.js +159 -72
- package/es/graph/animation/morph.js.map +1 -1
- package/es/graph/attributes/line.js.map +1 -1
- package/es/graph/canvas-renderer.d.ts +1 -1
- package/es/graph/canvas-renderer.js +5 -5
- package/es/graph/canvas-renderer.js.map +1 -1
- package/es/graph/element.d.ts +2 -1
- package/es/graph/element.js +20 -17
- package/es/graph/element.js.map +1 -1
- package/es/graph/glyph-element.js +5 -3
- package/es/graph/glyph-element.js.map +1 -1
- package/es/graph/layout/layout.d.ts +0 -1
- package/es/graph/layout/layout.js +0 -6
- package/es/graph/layout/layout.js.map +1 -1
- package/es/graph/mark/graphic.js +7 -13
- package/es/graph/mark/graphic.js.map +1 -1
- package/es/graph/util/element.d.ts +2 -0
- package/es/graph/util/element.js +8 -0
- package/es/graph/util/element.js.map +1 -0
- package/es/graph/util/point.js +26 -10
- package/es/graph/util/point.js.map +1 -1
- package/es/index.d.ts +1 -8
- package/es/index.js +1 -29
- package/es/index.js.map +1 -1
- package/es/interactions/element-active.js +2 -1
- package/es/interactions/element-highlight-by-group.js +1 -2
- package/es/interactions/fish-eye.js +1 -1
- package/es/parse/event.d.ts +2 -0
- package/es/parse/event.js +7 -3
- package/es/parse/event.js.map +1 -1
- package/es/parse/option.js +2 -1
- package/es/parse/scale.js +1 -2
- package/es/parse/util.js.map +1 -1
- package/es/types/animate.d.ts +1 -0
- package/es/types/animate.js.map +1 -1
- package/es/types/element.d.ts +5 -1
- package/es/types/element.js.map +1 -1
- package/es/types/morph.d.ts +2 -1
- package/es/types/morph.js.map +1 -1
- package/es/types/renderer.d.ts +1 -6
- package/es/types/renderer.js.map +1 -1
- package/es/view/View.d.ts +6 -3
- package/es/view/View.js +114 -53
- package/es/view/View.js.map +1 -1
- package/es/view/animate.js +1 -2
- package/es/view/animate.js.map +1 -1
- package/es/view/constants.d.ts +0 -2
- package/es/view/constants.js +0 -4
- package/es/view/constants.js.map +1 -1
- package/es/view/events.d.ts +1 -0
- package/es/view/events.js +15 -1
- package/es/view/events.js.map +1 -1
- package/es/view/glyph.d.ts +0 -4
- package/es/view/glyph.js +0 -11
- package/es/view/glyph.js.map +1 -1
- package/es/view/grammar-record.js +2 -3
- package/es/view/grammar-record.js.map +1 -1
- package/es/view/group.js +4 -2
- package/es/view/group.js.map +1 -1
- package/es/view/mark.d.ts +0 -2
- package/es/view/mark.js +30 -32
- package/es/view/mark.js.map +1 -1
- package/package.json +12 -12
- package/cjs/graph/view-diff.d.ts +0 -8
- package/cjs/graph/view-diff.js +0 -93
- package/cjs/graph/view-diff.js.map +0 -1
- package/cjs/view/mark-animate-mixin.d.ts +0 -1
- package/cjs/view/mark-animate-mixin.js +0 -29
- package/cjs/view/mark-animate-mixin.js.map +0 -1
- package/cjs/view/view-animate-mixin.d.ts +0 -1
- package/cjs/view/view-animate-mixin.js +0 -26
- package/cjs/view/view-animate-mixin.js.map +0 -1
- package/cjs/view/view-event-mixin.d.ts +0 -1
- package/cjs/view/view-event-mixin.js +0 -92
- package/cjs/view/view-event-mixin.js.map +0 -1
- package/cjs/view/view-morph-mixin.d.ts +0 -1
- package/cjs/view/view-morph-mixin.js +0 -32
- package/cjs/view/view-morph-mixin.js.map +0 -1
- package/es/graph/view-diff.d.ts +0 -8
- package/es/graph/view-diff.js +0 -89
- package/es/graph/view-diff.js.map +0 -1
- package/es/view/mark-animate-mixin.d.ts +0 -1
- package/es/view/mark-animate-mixin.js +0 -25
- package/es/view/mark-animate-mixin.js.map +0 -1
- package/es/view/view-animate-mixin.d.ts +0 -1
- package/es/view/view-animate-mixin.js +0 -16
- package/es/view/view-animate-mixin.js.map +0 -1
- package/es/view/view-event-mixin.d.ts +0 -1
- package/es/view/view-event-mixin.js +0 -90
- package/es/view/view-event-mixin.js.map +0 -1
- package/es/view/view-morph-mixin.d.ts +0 -1
- package/es/view/view-morph-mixin.js +0 -22
- 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"]}
|
package/es/graph/view-diff.d.ts
DELETED
|
@@ -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
|
-
}
|
package/es/graph/view-diff.js
DELETED
|
@@ -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"]}
|