@visactor/react-vchart
Version:
The react version of VChart 4.x
53 lines (48 loc) • 3.01 kB
JavaScript
;
var __importDefault = this && this.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : {
default: mod
};
};
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.createSeries = void 0;
const react_1 = __importDefault(require("react")), vutils_1 = require("@visactor/vutils"), chart_1 = __importDefault(require("../context/chart")), eventsUtils_1 = require("../eventsUtils"), vchart_1 = require("@visactor/vchart"), createSeries = (componentName, markNames, type, registers) => {
registers && registers.length && vchart_1.VChart.useRegisters(registers);
const notSpecKeys = eventsUtils_1.COMMON_EVENTK_KEYS.concat([ "updateId", "componentId" ]), Comp = props => {
var _a;
const context = react_1.default.useContext(chart_1.default), id = null !== (_a = props.id) && void 0 !== _a ? _a : props.componentId, bindedEvents = react_1.default.useRef({}), handleEvent = e => {
const markIds = markNames.map((markName => `${id}-${markName}`));
(null == e ? void 0 : e.mark) && markIds.includes(e.mark.getUserId()) && props[eventsUtils_1.VCHART_TO_REACT_EVENTS[e.event.type]](e);
}, addMarkEvent = events => {
events && context.chart && (bindedEvents.current && Object.keys(bindedEvents.current).forEach((eventKey => {
context.chart.off(eventsUtils_1.REACT_TO_VCHART_EVENTS[eventKey], bindedEvents.current[eventKey]),
bindedEvents.current[eventKey] = null;
})), events && Object.keys(events).forEach((eventKey => {
var _a;
(null === (_a = bindedEvents.current) || void 0 === _a ? void 0 : _a[eventKey]) || (context.chart.on(eventsUtils_1.REACT_TO_VCHART_EVENTS[eventKey], handleEvent),
bindedEvents.current || (bindedEvents.current = {}), bindedEvents.current[eventKey] = handleEvent);
})));
};
return addMarkEvent((0, eventsUtils_1.findEventProps)(props)), react_1.default.useEffect((() => () => {
addMarkEvent({}), bindedEvents.current = {};
}), []), null;
};
return Comp.displayName = componentName, Comp.parseSpec = compProps => {
var _a;
const newSeriesSpec = (0, vutils_1.pickWithout)(compProps, notSpecKeys);
var spec, seriesId;
return spec = newSeriesSpec, seriesId = null !== (_a = compProps.id) && void 0 !== _a ? _a : compProps.componentId,
markNames.forEach((markName => {
const defaultMarkId = `${seriesId}-${markName}`;
(0, vutils_1.isNil)(spec[markName]) ? spec[markName] = {
id: defaultMarkId
} : (0, vutils_1.isNil)(spec[markName].id) && (spec[markName].id = defaultMarkId);
})), (0, vutils_1.isNil)(type) || (newSeriesSpec.type = type), {
spec: newSeriesSpec,
specName: "series"
};
}, Comp;
};
exports.createSeries = createSeries;
//# sourceMappingURL=BaseSeries.js.map