UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

68 lines (61 loc) 2.68 kB
import {createContext as $kmiX2$createContext, useState as $kmiX2$useState, useCallback as $kmiX2$useCallback, useEffect as $kmiX2$useEffect, useContext as $kmiX2$useContext} from "react"; import $kmiX2$immutabilityhelper from "immutability-helper"; import $kmiX2$macrostrathyper from "@macrostrat/hyper"; const $48a88dc8d8ec7d64$export$7bb606b28f318c99 = (0, $kmiX2$createContext)(null); function $48a88dc8d8ec7d64$export$8664be80ce30e576(props) { /* Context to assist with editing a model */ let { model: model, logUpdates: logUpdates = false, children: children, alwaysConfirm: alwaysConfirm = false } = props; console.warn(`Using the ModelEditorContext from @macrostrat/column-components is deprecated. Please use the equivalent class from @macrostrat/ui-components instead.`); const [editedModel, setState] = (0, $kmiX2$useState)(model); // Our model can be initially null, but we want the edited model // to take on the first non-null value const confirmChanges = ()=>props.onConfirmChanges(editedModel); // Zero out edited model when model prop changes const revertChanges = (0, $kmiX2$useCallback)(()=>{ if (model == editedModel) return; if (alwaysConfirm && editedModel != null) { console.log("Confirming model changes"); confirmChanges(); } setState(model); }, [ model ]); (0, $kmiX2$useEffect)(()=>{ revertChanges(); }, [ model ]); const updateModel = (0, $kmiX2$useCallback)(function(spec) { const v = (0, $kmiX2$immutabilityhelper)(editedModel, spec); if (logUpdates) console.log(v); return setState(v); }, [ logUpdates, editedModel ]); const deleteModel = function() { setState(null); return props.onDelete(model); }; const hasChanges = ()=>model === editedModel; const value = { model: model, editedModel: editedModel, updateModel: updateModel, deleteModel: deleteModel, hasChanges: hasChanges, revertChanges: revertChanges, confirmChanges: confirmChanges }; return (0, $kmiX2$macrostrathyper)($48a88dc8d8ec7d64$export$7bb606b28f318c99.Provider, { value: value }, children); } const $48a88dc8d8ec7d64$export$862ca33d4f264f44 = ()=>(0, $kmiX2$useContext)($48a88dc8d8ec7d64$export$7bb606b28f318c99); export {$48a88dc8d8ec7d64$export$7bb606b28f318c99 as ModelEditorContext, $48a88dc8d8ec7d64$export$8664be80ce30e576 as ModelEditorProvider, $48a88dc8d8ec7d64$export$862ca33d4f264f44 as useModelEditor}; //# sourceMappingURL=column-components.ceb8011b.js.map