UNPKG

respond-framework

Version:
33 lines (32 loc) 862 B
"use strict"; 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;