stateSaver.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var _stateSaver;
  2. 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; }
  3. import { arrayEach } from './../helpers/array';
  4. import { defineGetter } from './../helpers/object';
  5. var MIXIN_NAME = 'stateSaver';
  6. var STATE_PREFIX = 'state_';
  7. var PROP_PREFIX = '_states';
  8. var getState = function getState(object, stateId) {
  9. return object[PROP_PREFIX][STATE_PREFIX + stateId];
  10. };
  11. var setState = function setState(object, stateId, value) {
  12. object[PROP_PREFIX][STATE_PREFIX + stateId] = value;
  13. };
  14. /**
  15. * Mixin object to extend functionality for save/restore object state.
  16. *
  17. * @type {Object}
  18. */
  19. var stateSaver = (_stateSaver = {}, _defineProperty(_stateSaver, PROP_PREFIX, {}), _defineProperty(_stateSaver, 'getCachedState', function getCachedState(stateId) {
  20. return getState(this, stateId);
  21. }), _defineProperty(_stateSaver, 'setCachedState', function setCachedState(stateId, value) {
  22. setState(this, stateId, value);
  23. }), _defineProperty(_stateSaver, 'saveState', function saveState(stateId) {
  24. setState(this, stateId, this.getState());
  25. }), _defineProperty(_stateSaver, 'restoreState', function restoreState(stateId) {
  26. this.setState(getState(this, stateId));
  27. }), _defineProperty(_stateSaver, 'hasSavedState', function hasSavedState(stateId) {
  28. return getState(this, stateId) !== void 0;
  29. }), _defineProperty(_stateSaver, 'clearState', function clearState(stateId) {
  30. setState(this, stateId);
  31. }), _defineProperty(_stateSaver, 'clearStates', function clearStates() {
  32. this[PROP_PREFIX] = {};
  33. }), _stateSaver);
  34. defineGetter(stateSaver, 'MIXIN_NAME', MIXIN_NAME, {
  35. writable: false,
  36. enumerable: false
  37. });
  38. export default stateSaver;