react-codemirror-merge
Version:
CodeMirror merge view for React.
53 lines (52 loc) • 2.12 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.initialState = exports.Provider = exports.Context = void 0;
exports.reducer = reducer;
exports.useStore = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _react = _interopRequireWildcard(require("react"));
var _jsxRuntime = require("react/jsx-runtime");
var initialState = exports.initialState = {
modified: {
doc: ''
},
original: {
doc: ''
}
};
var Context = exports.Context = /*#__PURE__*/(0, _react.createContext)(initialState);
function reducer(state, action) {
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), action), {}, {
modified: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state.modified), action.modified),
original: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state.original), action.original)
});
}
var useStore = exports.useStore = function useStore() {
return (0, _react.useContext)(Context);
};
var Provider = exports.Provider = function Provider(_ref) {
var children = _ref.children,
theme = _ref.theme;
var _useReducer = (0, _react.useReducer)(reducer, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, initialState), {}, {
theme: theme
})),
_useReducer2 = (0, _slicedToArray2["default"])(_useReducer, 2),
state = _useReducer2[0],
dispatch = _useReducer2[1];
(0, _react.useEffect)(function () {
return dispatch({
theme: theme
});
}, [theme]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Context.Provider, {
value: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), {}, {
dispatch: dispatch
}),
children: children
});
};
;