respond-framework
Version:
create as fast you think
33 lines (32 loc) • 862 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _kinds = require("../kinds.js");
const stack = function (state = {
entries: [],
index: -1
}, e, {
respond
}) {
if (e.kind !== _kinds.navigation) return state;
if (e.meta.parallel) return state;
const {
entries,
index: i
} = state;
if (respond.isEqualNavigations(e, entries[i])) {// current event repeated
} else if (respond.isEqualNavigations(e, entries[i - 1])) {
// back
state.index = Math.max(i - 1, 0);
} else if (respond.isEqualNavigations(e, entries[i + 1])) {
// next
state.index = i + 1;
} else {
entries.splice(i + 1, entries.length, e); // push -- delete stale tail like browser history.push
state.index = entries.length - 1;
}
return state;
};
var _default = exports.default = stack;