UNPKG

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
'use strict'; 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