@visactor/react-vchart
Version:
The react version of VChart 4.x
130 lines (115 loc) • 4.75 kB
JavaScript
export const REACT_TO_VCHART_EVENTS = {
onPointerDown: "pointerdown",
onPointerUp: "pointerup",
onPointerUpOutside: "pointerupoutside",
onPointerTap: "pointertap",
onPointerOver: "pointerover",
onPointerMove: "pointermove",
onPointerEnter: "pointerenter",
onPointerLeave: "pointerleave",
onPointerOut: "pointerout",
onMouseDown: "mousedown",
onMouseUp: "mouseup",
onMouseUpOutside: "mouseupoutside",
onMouseMove: "mousemove",
onMouseOver: "mouseover",
onMouseOut: "mouseout",
onMouseEnter: "mouseenter",
onMouseLeave: "mouseleave",
onPinch: "pinch",
onPinchStart: "pinchstart",
onPinchEnd: "pinchend",
onPan: "pan",
onPanStart: "panstart",
onPanEnd: "panend",
onDrag: "drag",
onDragStart: "dragstart",
onDragEnter: "dragenter",
onDragLeave: "dragleave",
onDragOver: "dragover",
onDragEnd: "dragend",
onRightDown: "rightdown",
onRightUp: "rightup",
onRightUpOutside: "rightupoutside",
onTouchStart: "touchstart",
onTouchEnd: "touchend",
onTouchEndOutside: "touchendoutside",
onTouchMove: "touchmove",
onTouchCancel: "touchcancel",
onPress: "press",
onPressUp: "pressup",
onPressEnd: "pressend",
onSwipe: "swipe",
onDrop: "drop",
onWeel: "wheel",
onClick: "click",
onDblClick: "dblclick"
};
export const LEGEND_CUSTOMIZED_EVENTS = {
onLegendItemHover: "legendItemHover",
onLegendItemUnHover: "legendItemUnHover",
onLegendItemClick: "legendItemClick",
onLegendFilter: "legendFilter",
onLegendSelectedDataChange: "legendSelectedDataChange"
};
export const BRUSH_CUSTOMIZED_EVENTS = {
onBrushStart: "brushStart",
onBrushChange: "brushChange",
onBrushEnd: "brushEnd",
onBrushClear: "brushClear"
};
export const DATAZOOM_CUSTOMIZED_EVENTS = {
onDataZoomChange: "dataZoomChange"
};
export const PLAYER_CUSTOMIZED_EVENTS = {
onPlayerPlay: "playerPlay",
onPlayerPause: "playerPause",
onPlayerEnd: "playerEnd",
onPlayerChange: "playerChange",
onPlayerForward: "playerForward",
onPlayerBackward: "playerBackward"
};
export const SCROLLBAR_CUSTOMIZED_EVENTS = {
onScrollBarChange: "scrollBarChange"
};
export const DIMENSION_EVENTS = {
onDimensionHover: "dimensionHover",
onDimensionClick: "dimensionClick"
};
export const HIERARCHY_EVENTS = {
onDrill: "drill"
};
export const CHART_LIFECYCLE_EVENTS = {
onInitialized: "initialized",
onRendered: "rendered",
onRenderFinished: "renderFinished",
onAnimationFinished: "animationFinished",
onLayoutStart: "layoutStart",
onLayoutEnd: "layoutEnd"
};
export const CHART_EVENTS = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, LEGEND_CUSTOMIZED_EVENTS), BRUSH_CUSTOMIZED_EVENTS), PLAYER_CUSTOMIZED_EVENTS), DATAZOOM_CUSTOMIZED_EVENTS), SCROLLBAR_CUSTOMIZED_EVENTS), DIMENSION_EVENTS), CHART_LIFECYCLE_EVENTS), HIERARCHY_EVENTS), REACT_TO_VCHART_EVENTS);
export const CHART_EVENTS_KEYS = Object.keys(CHART_EVENTS).concat(Object.keys(REACT_TO_VCHART_EVENTS).map((evt => `${evt}Filter`)));
export const COMMON_EVENTK_KEYS = Object.keys(REACT_TO_VCHART_EVENTS);
export const VCHART_TO_REACT_EVENTS = Object.keys(REACT_TO_VCHART_EVENTS).reduce(((res, key) => (res[REACT_TO_VCHART_EVENTS[key]] = key,
res)), {});
export const findEventProps = (props, supportedEvents = REACT_TO_VCHART_EVENTS) => {
const result = {};
return Object.keys(props).forEach((key => {
supportedEvents[key] && props[key] && (result[key] = props[key]);
})), result;
};
export const bindEventsToChart = (chart, newProps, prevProps, supportedEvents = REACT_TO_VCHART_EVENTS) => {
if (!newProps && !prevProps || !chart) return !1;
const prevEventProps = prevProps ? findEventProps(prevProps, supportedEvents) : null, newEventProps = newProps ? findEventProps(newProps, supportedEvents) : null;
return prevEventProps && Object.keys(prevEventProps).forEach((eventKey => {
if (!newEventProps || !newEventProps[eventKey] || newEventProps[eventKey] !== prevEventProps[eventKey]) {
chart.off(supportedEvents[eventKey], prevEventProps[eventKey]);
}
})), newEventProps && Object.keys(newEventProps).forEach((eventKey => {
if (!prevEventProps || !prevEventProps[eventKey] || prevEventProps[eventKey] !== newEventProps[eventKey]) {
const filter = newProps[`${eventKey}Filter`];
filter ? chart.on(supportedEvents[eventKey], filter, newEventProps[eventKey]) : chart.on(supportedEvents[eventKey], newEventProps[eventKey]);
}
})), !0;
};
//# sourceMappingURL=eventsUtils.js.map