typedux
Version:
Slightly adjusted Redux (awesome by default) for TS
62 lines • 1.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultLeafReducer = void 0;
const util_1 = require("../util");
/**
* Leaf reducer
*/
class DefaultLeafReducer {
constructor(_leaf, _stateType) {
this._leaf = _leaf;
this._stateType = _stateType;
}
/**
* Inflate from js
*
* @param stateType
* @param o
* @returns {any}
*/
static stateFromJS(stateType, o) {
const { fromJS } = stateType;
return (fromJS) ? fromJS(o) : new stateType(o);
}
/**
* Create a new leaf reducer
*
* @param leaf
* @param stateType
* @returns {AnonLeafReducer}
*/
static create(leaf, stateType) {
class AnonLeafReducer extends DefaultLeafReducer {
constructor() {
super(leaf, stateType);
}
defaultState(o) {
return stateType.fromJS(o);
}
}
return new AnonLeafReducer();
}
stateType() {
return this._stateType;
}
leaf() {
return this._leaf;
}
defaultState(o) {
return new this._stateType(o);
}
equals(o) {
const otherLeaf = util_1.isString(o) ? o :
(o && util_1.isFunction(o.leaf)) ? o.leaf() :
null;
return (otherLeaf && otherLeaf === o.leaf());
}
valueOf() {
return this.leaf();
}
}
exports.DefaultLeafReducer = DefaultLeafReducer;
//# sourceMappingURL=DefaultLeafReducer.js.map
;