@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
60 lines (59 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const React = require("react");
const update = require("immutability-helper");
const h = require("@macrostrat/hyper");
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
const update__default = /* @__PURE__ */ _interopDefault(update);
const h__default = /* @__PURE__ */ _interopDefault(h);
const ModelEditorContext = React.createContext(null);
function ModelEditorProvider(props) {
let { model, logUpdates = false, children, 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] = React.useState(model);
const confirmChanges = () => props.onConfirmChanges(editedModel);
const revertChanges = React.useCallback(() => {
if (model == editedModel) return;
if (alwaysConfirm && editedModel != null) {
console.log("Confirming model changes");
confirmChanges();
}
setState(model);
}, [model]);
React.useEffect(() => {
revertChanges();
}, [model]);
const updateModel = React.useCallback(
function(spec) {
const v = update__default.default(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,
editedModel,
updateModel,
deleteModel,
hasChanges,
revertChanges,
confirmChanges
};
return h__default.default(ModelEditorContext.Provider, { value }, children);
}
const useModelEditor = () => React.useContext(ModelEditorContext);
exports.ModelEditorContext = ModelEditorContext;
exports.ModelEditorProvider = ModelEditorProvider;
exports.useModelEditor = useModelEditor;
//# sourceMappingURL=model-editor.cjs.map