UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

98 lines (94 loc) 2.7 kB
"use strict"; var Class = require("../core/class"), inArray = require("../core/utils/array").inArray, each = require("../core/utils/iterator").each; var MemoryKeyValueStorage = Class.inherit({ ctor: function ctor() { this.storage = {}; }, getItem: function getItem(key) { return this.storage[key]; }, setItem: function setItem(key, value) { this.storage[key] = value; }, removeItem: function removeItem(key) { delete this.storage[key]; } }); /** * @name StateManager * @publicName StateManager * @type object * @module framework/state_manager * @export default */ var StateManager = Class.inherit({ /** * @name StateManageroptions.storage * @publicName storage * @type object */ ctor: function ctor(options) { options = options || {}; this.storage = options.storage || new MemoryKeyValueStorage(); this.stateSources = options.stateSources || []; }, /** * @name StateManagerMethods.addStateSource * @publicName addStateSource(stateSource) * @type method * @param1 stateSource:object */ addStateSource: function addStateSource(stateSource) { this.stateSources.push(stateSource); }, /** * @name StateManagerMethods.removeStateSource * @publicName removeStateSource(stateSource) * @type method * @param1 stateSource:object */ removeStateSource: function removeStateSource(stateSource) { var index = inArray(stateSource, this.stateSources); if (index > -1) { this.stateSources.splice(index, 1); stateSource.removeState(this.storage); } }, /** * @name StateManagerMethods.saveState * @publicName saveState() * @type method */ saveState: function saveState() { var that = this; each(this.stateSources, function (index, stateSource) { stateSource.saveState(that.storage); }); }, /** * @name StateManagerMethods.restoreState * @publicName restoreState() * @type method */ restoreState: function restoreState() { var that = this; each(this.stateSources, function (index, stateSource) { stateSource.restoreState(that.storage); }); }, /** * @name StateManagerMethods.clearState * @publicName clearState() * @type method */ clearState: function clearState() { var that = this; each(this.stateSources, function (index, stateSource) { stateSource.removeState(that.storage); }); } }); module.exports = StateManager; module.exports.MemoryKeyValueStorage = MemoryKeyValueStorage;