react-quizz-spanish
Version:
Quizz en react, traducido al español, autor original: hugobarragon
63 lines • 2.62 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.reducer = exports.initialState = void 0;
var lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
function mapClone(map) {
return lodash_clonedeep_1.default(map);
}
exports.initialState = function (initialValue) {
return new Map([["data", initialValue || []]]);
};
function reducer(state, action) {
switch (action.type) {
case "ADD_ELEMENT": {
var new_state = mapClone(state), new_data = new_state.get("data");
var item = action.item;
new_data.push(item);
return new_state.set("data", new_data);
}
case "DELETE_ELEMENT": {
var new_state = mapClone(state), new_data = new_state.get("data"), id = action.id;
for (var index = 0; index < new_data.length; index++) {
var element = new_data[index];
if (element["id"] === id) {
// if it finds equal id on list deletes it
new_data.splice(index, 1);
}
}
return new_state.set("data", new_data);
}
case "PATCH_ELEMENT": {
var new_state = mapClone(state), new_data = new_state.get("data"), id = action.id, newitem = action.newitem;
for (var index = 0; index < new_data.length; index++) {
var element = new_data[index];
if (element["id"] === id) {
// if it finds equal id on list updates it
new_data[index] = Object.assign(element, newitem);
break;
}
}
return new_state.set("data", new_data);
}
case "MOVE_ELEMENT": {
var new_state = mapClone(state);
var new_data = new_state.get("data");
var newIndex = action.newIndex, oldIndex = action.oldIndex;
if (newIndex >= new_data.length) {
var k = newIndex - new_data.length + 1;
while (k--) {
new_data.push(undefined);
}
}
new_data.splice(newIndex, 0, new_data.splice(oldIndex, 1)[0]);
return new_state.set("data", new_data);
}
default:
throw new Error("unkown reducer action type");
}
}
exports.reducer = reducer;
//# sourceMappingURL=reducer.js.map