stateSaver.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _stateSaver;
  4. var _array = require('./../helpers/array');
  5. var _object = require('./../helpers/object');
  6. function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  7. var MIXIN_NAME = 'stateSaver';
  8. var STATE_PREFIX = 'state_';
  9. var PROP_PREFIX = '_states';
  10. var getState = function getState(object, stateId) {
  11. return object[PROP_PREFIX][STATE_PREFIX + stateId];
  12. };
  13. var setState = function setState(object, stateId, value) {
  14. object[PROP_PREFIX][STATE_PREFIX + stateId] = value;
  15. };
  16. /**
  17. * Mixin object to extend functionality for save/restore object state.
  18. *
  19. * @type {Object}
  20. */
  21. var stateSaver = (_stateSaver = {}, _defineProperty(_stateSaver, PROP_PREFIX, {}), _defineProperty(_stateSaver, 'getCachedState', function getCachedState(stateId) {
  22. return getState(this, stateId);
  23. }), _defineProperty(_stateSaver, 'setCachedState', function setCachedState(stateId, value) {
  24. setState(this, stateId, value);
  25. }), _defineProperty(_stateSaver, 'saveState', function saveState(stateId) {
  26. setState(this, stateId, this.getState());
  27. }), _defineProperty(_stateSaver, 'restoreState', function restoreState(stateId) {
  28. this.setState(getState(this, stateId));
  29. }), _defineProperty(_stateSaver, 'hasSavedState', function hasSavedState(stateId) {
  30. return getState(this, stateId) !== void 0;
  31. }), _defineProperty(_stateSaver, 'clearState', function clearState(stateId) {
  32. setState(this, stateId);
  33. }), _defineProperty(_stateSaver, 'clearStates', function clearStates() {
  34. this[PROP_PREFIX] = {};
  35. }), _stateSaver);
  36. (0, _object.defineGetter)(stateSaver, 'MIXIN_NAME', MIXIN_NAME, {
  37. writable: false,
  38. enumerable: false
  39. });
  40. exports.default = stateSaver;