inversify-devtools
Version:
inversify-devtools
50 lines (49 loc) • 1.87 kB
JavaScript
;
var Immutable = require("immutable");
var action_types_1 = require("../constants/action_types");
var defaultWindowState = Immutable.fromJS({
entries: [],
filter: "ALL"
});
function addLogEntry(previousState, action) {
var entries = previousState.get("entries");
if (entries.size === action.logSize) {
var indexToRemove = 0;
var numberToRemove = 1;
entries = entries.splice(indexToRemove, numberToRemove);
}
var updatedEntries = entries.push(action.entry);
return previousState.set("entries", updatedEntries);
}
function selectLogEntry(previousState, action) {
var entries = previousState.get("entries");
var updatedEntries = entries.map(function (entry) {
entry.selected = (entry.details.guid === action.entry.details.guid);
return entry;
});
return previousState.set("entries", updatedEntries);
}
function filterEntries(previousState, action) {
return previousState.set("filter", action.filterBy);
}
function clearEntries(previousState) {
var emptyLog = Immutable.fromJS([]);
return previousState.set("entries", emptyLog);
}
var logReducer = function (previousState, action) {
if (previousState === void 0) { previousState = defaultWindowState; }
switch (action.type) {
case action_types_1.default.ADD_LOG_ENTRY:
return addLogEntry(previousState, action);
case action_types_1.default.SELECT_LOG_ENTRY:
return selectLogEntry(previousState, action);
case action_types_1.default.CLEAR_LOG:
return clearEntries(previousState);
case action_types_1.default.FILTER_LOG_ENTRIES:
return filterEntries(previousState, action);
default:
return previousState;
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = logReducer;