scichart-react
Version:
React wrapper for SciChart JS
48 lines • 2.32 kB
JavaScript
"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
;