UNPKG

@visactor/react-vchart

Version:

The react version of VChart 4.x

53 lines (48 loc) 3.01 kB
"use strict"; 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