UNPKG

zent

Version:

一套前端设计语言和基于React的实现

95 lines (65 loc) 2.62 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _assign = require('lodash/assign'); var _assign2 = _interopRequireDefault(_assign); var _get = require('lodash/get'); var _get2 = _interopRequireDefault(_get); var _has = require('lodash/has'); var _has2 = _interopRequireDefault(_has); var _indexOf = require('lodash/indexOf'); var _indexOf2 = _interopRequireDefault(_indexOf); var _isArray = require('lodash/isArray'); var _isArray2 = _interopRequireDefault(_isArray); var _keys = require('lodash/keys'); var _keys2 = _interopRequireDefault(_keys); var _forEach = require('lodash/forEach'); var _forEach2 = _interopRequireDefault(_forEach); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var Store = function Store() { var _this = this; (0, _classCallCheck3['default'])(this, Store); this.setState = function (nextState) { _this.state = (0, _assign2['default'])({}, _this.state, nextState); (0, _forEach2['default'])((0, _keys2['default'])(nextState), function (stateName) { (0, _forEach2['default'])((0, _get2['default'])(_this.listeners, stateName), function (listener) { listener(); }); }); }; this.getState = function (propsName, callBack) { if (propsName) { var props = (0, _get2['default'])(_this.state, propsName); if (callBack && !(0, _has2['default'])(_this.state, propsName)) { _this.setState((0, _defineProperty3['default'])({}, propsName, callBack())); return _this.getState(propsName); } return props; } return _this.state; }; this.trigger = function (eventName) { (0, _forEach2['default'])((0, _get2['default'])(_this.listeners, eventName), function (listener) { listener(); }); }; this.subscribe = function (eventName, listener) { _this.listeners[eventName] = _this.listeners[eventName] || []; _this.listeners[eventName].push(listener); return function () { var listeners = (0, _get2['default'])(_this.listeners, eventName); var index = (0, _indexOf2['default'])(listeners, listener); if ((0, _isArray2['default'])(listeners)) { _this.listeners[eventName].splice(index, 1); } }; }; this.state = {}; this.listeners = {}; }; exports['default'] = Store;