UNPKG

red-redux-class

Version:

Use objects and composition for creating complex reducers which can be easily maintained.

149 lines 5.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var ReduxClass_class_1 = require("./ReduxClass.class"); var ReduxClass_constants_1 = require("./ReduxClass.constants"); var reflection_utils_1 = require("./reflection.utils"); var immutableMethods = [ 'includes', 'indexOf', 'keys', 'entries', 'forEach', 'every', 'some', 'reduce', 'reduceRight', 'toString', 'toLocaleString', 'join', 'reverse', 'lastIndexOf', 'find', 'findIndex', 'values', 'slice', 'filter', 'map', ]; var mutableMethods = [ 'pop', 'push', 'shift', 'unshift', 'reverse', 'copyWithin', 'fill', 'sort', 'splice', ]; var ReduxClassArray = (function (_super) { tslib_1.__extends(ReduxClassArray, _super); function ReduxClassArray(initialState, attributes) { if (initialState === void 0) { initialState = []; } if (attributes === void 0) { attributes = {}; } var _this = this; var _a = ReduxClassArray.initialData(initialState, attributes), state = _a.state, array = _a.array; _this = _super.call(this, state) || this; _this.initArray(array); return _this; } ReduxClassArray.isReduxClassArray = function (object) { var _object = object; return ReduxClass_class_1.ReduxClass.isReduxClass(_object) && Array.isArray(_object[ReduxClass_constants_1.ARRAY_KEY]); }; ReduxClassArray.initialData = function (initialState, attributes) { if (attributes === void 0) { attributes = {}; } var array; var state = {}; if (ReduxClass_class_1.ReduxClass.isReduxClass(initialState)) { array = initialState.getArray(); state = tslib_1.__assign(tslib_1.__assign({}, initialState), attributes); } else if (Array.isArray(initialState)) { array = tslib_1.__spread(initialState); state = tslib_1.__assign({}, attributes); } else { array = []; state = initialState; } return { array: array, state: state, }; }; ReduxClassArray.prototype.initialize = function (initialState) { var _a = ReduxClassArray.initialData(initialState), state = _a.state, array = _a.array; this.set(ReduxClass_constants_1.ARRAY_KEY, array); _super.prototype.initialize.call(this, state); }; ReduxClassArray.prototype.initArray = function (_array) { var arrayType = this.constructor.types[0]; if (arrayType && arrayType.constructor) { _array = _array.map(function (el) { return el instanceof arrayType ? el : new arrayType(el); }); } this._initHiddenProperty(ReduxClass_constants_1.ARRAY_KEY, _array); }; ReduxClassArray.prototype.get = function (key) { if (typeof key === 'number' || parseInt(key.toString(), 10).toString() === key) { return this.getArrayElement(key); } return this[key]; }; ReduxClassArray.prototype.getArrayElement = function (key) { return this[ReduxClass_constants_1.ARRAY_KEY][key]; }; ReduxClassArray.prototype.getArray = function () { return this[ReduxClass_constants_1.ARRAY_KEY]; }; ReduxClassArray.prototype.getFullArray = function () { return this.getArray(); }; ReduxClassArray.prototype.getLength = function () { return this[ReduxClass_constants_1.ARRAY_KEY].length; }; ReduxClassArray.prototype.set = function (key, value) { var _key = key + ''; if (parseInt(_key, 10) + '' === _key) { this.setArrayElement(parseInt(_key, 10), value); return this; } _super.prototype.set.call(this, _key, value); return this; }; ReduxClassArray.prototype.setArray = function (_array) { this._shouldBeNew(); var arrayType = this.constructor.types[0]; this[ReduxClass_constants_1.ARRAY_KEY] = _array.map(function (value) { if (arrayType && !(value instanceof arrayType)) { value = new arrayType(value); } return value; }); return this; }; ReduxClassArray.prototype.setArrayElement = function (key, value) { this._shouldBeNew(); var arrayType = this.constructor.types[0]; if (arrayType && !(value instanceof arrayType)) { value = new arrayType(value); } this[ReduxClass_constants_1.ARRAY_KEY][key] = value; return this; }; ReduxClassArray.prototype.isEmpty = function () { return this[ReduxClass_constants_1.ARRAY_KEY].length === 0; }; ReduxClassArray.prototype.toJSON = function () { return this[ReduxClass_constants_1.ARRAY_KEY]; }; return ReduxClassArray; }(ReduxClass_class_1.ReduxClass)); exports.ReduxClassArray = ReduxClassArray; reflection_utils_1.bindMethods(ReduxClassArray, Array, immutableMethods, false, reflection_utils_1.bindPrototype); reflection_utils_1.bindMethods(ReduxClassArray, Array, mutableMethods, true, reflection_utils_1.bindPrototype); //# sourceMappingURL=ReduxClassArray.class.js.map