UNPKG

banggood-store

Version:

bang data store

99 lines (85 loc) 2.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DisposeFunction = exports.default = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); exports.dispose = dispose; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var StateManage = function () { function StateManage() { (0, _classCallCheck3.default)(this, StateManage); this.states = {}; } (0, _createClass3.default)(StateManage, [{ key: 'get', value: function get(type) { var Name = type.Name, namespace = type.meta.namespace; var name = Name; var states = this.states[namespace]; return states ? states[name] : null; } }, { key: 'set', value: function set(type, value) { var Name = type.Name, namespace = type.meta.namespace; var name = Name; var states = this.states[namespace]; if (!states) { states = this.states[namespace] = {}; } var state = states[name]; if (state && state != value) { dispose(state); } states[name] = value; } }, { key: 'remove', value: function remove(type) { var Name = type.Name, namespace = type.meta.namespace; var name = Name; var states = this.states[namespace]; if (!states) { return; } var state = states[name]; if (state) { dispose(state); delete states[name]; } } }, { key: 'clear', value: function clear() { for (var namespace in this.states) { var states = this.states[namespace]; //console.info(this.states); for (var name in states) { // console.info(states[name]); dispose(states[name]); } } this.states = {}; } }]); return StateManage; }(); exports.default = StateManage; var DisposeFunction = exports.DisposeFunction = 'onDispose'; function dispose(state) { //console.info(state[DisposeFunction]); if (state && state[DisposeFunction] && typeof state[DisposeFunction] === 'function') { try { state[DisposeFunction](); } catch (e) { console.error(e); } } }