react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
47 lines (33 loc) • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = autosave;
var _projectActions = require('../actions/project-actions');
var localStorage = window.hasOwnProperty('localStorage') ? window.localStorage : false;
var TIMEOUT_DELAY = 500;
var timeout = null;
function autosave(autosaveKey, delay) {
return function (store, stateExtractor) {
delay = delay || TIMEOUT_DELAY;
if (!autosaveKey) return;
if (!localStorage) return;
//revert
if (localStorage.getItem(autosaveKey) !== null) {
var data = localStorage.getItem(autosaveKey);
var json = JSON.parse(data);
store.dispatch((0, _projectActions.loadProject)(json));
}
//update
store.subscribe(function () {
if (timeout) clearTimeout(timeout);
timeout = setTimeout(function () {
var state = stateExtractor(store.getState());
var scene = state.sceneHistory.last();
var json = JSON.stringify(scene.toJS());
localStorage.setItem(autosaveKey, json);
}, delay);
});
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW5zL2F1dG9zYXZlLmpzIl0sIm5hbWVzIjpbImF1dG9zYXZlIiwibG9jYWxTdG9yYWdlIiwid2luZG93IiwiaGFzT3duUHJvcGVydHkiLCJUSU1FT1VUX0RFTEFZIiwidGltZW91dCIsImF1dG9zYXZlS2V5IiwiZGVsYXkiLCJzdG9yZSIsInN0YXRlRXh0cmFjdG9yIiwiZ2V0SXRlbSIsImRhdGEiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZGlzcGF0Y2giLCJzdWJzY3JpYmUiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwic3RhdGUiLCJnZXRTdGF0ZSIsInNjZW5lIiwic2NlbmVIaXN0b3J5IiwibGFzdCIsInN0cmluZ2lmeSIsInRvSlMiLCJzZXRJdGVtIl0sIm1hcHBpbmdzIjoiOzs7OztrQkFPd0JBLFE7O0FBTnhCOztBQURBLElBQU1DLGVBQWVDLE9BQU9DLGNBQVAsQ0FBc0IsY0FBdEIsSUFBd0NELE9BQU9ELFlBQS9DLEdBQThELEtBQW5GOzs7QUFHQSxJQUFNRyxnQkFBZ0IsR0FBdEI7O0FBRUEsSUFBSUMsVUFBVSxJQUFkOztBQUVlLFNBQVNMLFFBQVQsQ0FBa0JNLFdBQWxCLEVBQStCQyxLQUEvQixFQUFzQzs7QUFFbkQsU0FBTyxVQUFDQyxLQUFELEVBQVFDLGNBQVIsRUFBMkI7O0FBRWhDRixZQUFRQSxTQUFTSCxhQUFqQjs7QUFFQSxRQUFJLENBQUNFLFdBQUwsRUFBa0I7QUFDbEIsUUFBSSxDQUFDTCxZQUFMLEVBQW1COztBQUVuQjtBQUNBLFFBQUlBLGFBQWFTLE9BQWIsQ0FBcUJKLFdBQXJCLE1BQXNDLElBQTFDLEVBQWdEO0FBQzlDLFVBQUlLLE9BQU9WLGFBQWFTLE9BQWIsQ0FBcUJKLFdBQXJCLENBQVg7QUFDQSxVQUFJTSxPQUFPQyxLQUFLQyxLQUFMLENBQVdILElBQVgsQ0FBWDtBQUNBSCxZQUFNTyxRQUFOLENBQWUsaUNBQVlILElBQVosQ0FBZjtBQUNEOztBQUVEO0FBQ0FKLFVBQU1RLFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQixVQUFJWCxPQUFKLEVBQWFZLGFBQWFaLE9BQWI7QUFDYkEsZ0JBQVVhLFdBQVcsWUFBTTs7QUFFekIsWUFBSUMsUUFBUVYsZUFBZUQsTUFBTVksUUFBTixFQUFmLENBQVo7O0FBRUEsWUFBSUMsUUFBUUYsTUFBTUcsWUFBTixDQUFtQkMsSUFBbkIsRUFBWjtBQUNBLFlBQUlYLE9BQU9DLEtBQUtXLFNBQUwsQ0FBZUgsTUFBTUksSUFBTixFQUFmLENBQVg7QUFDQXhCLHFCQUFheUIsT0FBYixDQUFxQnBCLFdBQXJCLEVBQWtDTSxJQUFsQztBQUNELE9BUFMsRUFPUEwsS0FQTyxDQUFWO0FBUUQsS0FWRDtBQVdELEdBMUJEO0FBMkJEIiwiZmlsZSI6ImF1dG9zYXZlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbG9jYWxTdG9yYWdlID0gd2luZG93Lmhhc093blByb3BlcnR5KCdsb2NhbFN0b3JhZ2UnKSA/IHdpbmRvdy5sb2NhbFN0b3JhZ2UgOiBmYWxzZTtcbmltcG9ydCB7bG9hZFByb2plY3R9IGZyb20gJy4uL2FjdGlvbnMvcHJvamVjdC1hY3Rpb25zJztcblxuY29uc3QgVElNRU9VVF9ERUxBWSA9IDUwMDtcblxubGV0IHRpbWVvdXQgPSBudWxsO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdXRvc2F2ZShhdXRvc2F2ZUtleSwgZGVsYXkpIHtcblxuICByZXR1cm4gKHN0b3JlLCBzdGF0ZUV4dHJhY3RvcikgPT4ge1xuXG4gICAgZGVsYXkgPSBkZWxheSB8fCBUSU1FT1VUX0RFTEFZO1xuXG4gICAgaWYgKCFhdXRvc2F2ZUtleSkgcmV0dXJuO1xuICAgIGlmICghbG9jYWxTdG9yYWdlKSByZXR1cm47XG5cbiAgICAvL3JldmVydFxuICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShhdXRvc2F2ZUtleSkgIT09IG51bGwpIHtcbiAgICAgIGxldCBkYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYXV0b3NhdmVLZXkpO1xuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgc3RvcmUuZGlzcGF0Y2gobG9hZFByb2plY3QoanNvbikpO1xuICAgIH1cblxuICAgIC8vdXBkYXRlXG4gICAgc3RvcmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aW1lb3V0KSBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgICAgbGV0IHN0YXRlID0gc3RhdGVFeHRyYWN0b3Ioc3RvcmUuZ2V0U3RhdGUoKSk7XG5cbiAgICAgICAgbGV0IHNjZW5lID0gc3RhdGUuc2NlbmVIaXN0b3J5Lmxhc3QoKTtcbiAgICAgICAgbGV0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzY2VuZS50b0pTKCkpO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShhdXRvc2F2ZUtleSwganNvbik7XG4gICAgICB9LCBkZWxheSlcbiAgICB9KTtcbiAgfVxufVxuIl19