UNPKG

scichart-react

Version:

React wrapper for SciChart JS

48 lines 2.32 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SciChartGroup = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const SciChartGroupContext_1 = require("./SciChartGroupContext"); /** * Provides a common context for multiple wrapped {@link SciChartReact} elements. * Accepts callbacks used after all of chart within group are initialized and when they are unmounted. */ const SciChartGroup = (props) => { const { onInit, onDelete } = props; const [groupState, setGroupState] = (0, react_1.useState)({ groupInitialized: false, charts: new Map() }); const addChartToGroup = (chart, isInitialized, initResult) => { groupState.charts.set(chart, { isInitialized, initResult }); const groupInitialized = groupState.charts.size > 0 && Array.from(groupState.charts.values()).every(({ isInitialized }) => isInitialized); setGroupState({ groupInitialized, charts: groupState.charts }); }; const removeChartFromGroup = (chart) => { groupState.charts.delete(chart); const groupInitialized = groupState.charts.size > 0 && Array.from(groupState.charts.values()).every(({ isInitialized }) => isInitialized); setGroupState({ groupInitialized, charts: groupState.charts }); }; const contextState = Object.assign(Object.assign({}, groupState), { addChartToGroup, removeChartFromGroup }); (0, react_1.useEffect)(() => { if (onInit && groupState.groupInitialized) { const initResults = Array.from(groupState.charts.values()).map(({ initResult }) => initResult); onInit(initResults); } }, [groupState.groupInitialized]); (0, react_1.useEffect)(() => { if (onDelete && groupState.groupInitialized) { const initResults = Array.from(groupState.charts.values()).map(({ initResult }) => initResult); return () => { onDelete(initResults); }; } }, [groupState.groupInitialized]); return (0, jsx_runtime_1.jsx)(SciChartGroupContext_1.SciChartGroupContext.Provider, { value: contextState, children: props.children }); }; exports.SciChartGroup = SciChartGroup; //# sourceMappingURL=SciChartGroup.js.map