UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

60 lines (59 loc) 2.04 kB
"use strict"; 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