All files / xstate/lib history.js

0% Statements 0/30
0% Branches 0/14
0% Functions 0/5
0% Lines 0/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44                                                                                       
"use strict";
var __assign = (this && this.__assign) || Object.assign || function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
        s = arguments[i];
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
            t[p] = s[p];
    }
    return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
function createHistory(config) {
    if (!config.states) {
        return undefined;
    }
    var history = {};
    Object.keys(config.states).forEach(function (stateId) {
        var state = config.states[stateId];
        if (!state.states) {
            return;
        }
        history[stateId] = createHistory(state);
    });
    history.$current = config.initial;
    return history;
}
exports.createHistory = createHistory;
function updateHistory(history, stateValue) {
    var nextHistory = __assign({}, history, { $current: stateValue });
    if (typeof stateValue === 'string') {
        return nextHistory;
    }
    Object.keys(stateValue).forEach(function (subStatePath) {
        var subHistory = history[subStatePath];
        var subStateValue = stateValue[subStatePath];
        if (typeof subHistory === 'string') {
            // this will never happen, just making TS happy
            return;
        }
        nextHistory[subStatePath] = updateHistory(subHistory, subStateValue);
    });
    return nextHistory;
}
exports.updateHistory = updateHistory;