UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

49 lines (41 loc) 1.24 kB
import { createContext } from "react"; import { StatefulComponent } from "@macrostrat/ui-components"; import h from "@macrostrat/hyper"; const FaciesContext = createContext<any>({ facies: [], onColorChanged() {}, }); class FaciesProvider extends StatefulComponent<any, any> { constructor(props) { super(props); this.state = { facies: props.initialFacies || [], __colorMap: {}, }; this.getFaciesColor = this.getFaciesColor.bind(this); this.setFaciesColor = this.setFaciesColor.bind(this); } getFaciesColor(id) { const { __colorMap } = this.state; return __colorMap[id] || null; } setFaciesColor(id, color) { const ix = this.state.facies.findIndex((d) => d.id === id); return this.updateState({ facies: { [ix]: { color: { $set: color } } } }); } render() { const { facies } = this.state; const { children, ...rest } = this.props; const procedures = (() => { let getFaciesColor, setFaciesColor; return ({ getFaciesColor, setFaciesColor } = this); })(); const value = { facies, ...procedures, ...rest, }; return h(FaciesContext.Provider, { value }, children); } } export { FaciesContext, FaciesProvider };