@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
68 lines (61 loc) • 2.68 kB
JavaScript
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