<commit_before>import {autorun} from "mobx";

import {Router, RouterConfig} from "./director";
import {ViewStore} from "./store";
export {ViewStore};

/**
 * Crée un routeur et le lance.
 * @param config La config du routeur ([director](https://github.com/flatiron/director)).
 * @param stores Des ViewStore précédemment créé. S'il y a plus d'un ViewStore, tous doivent avoir un préfixe.
 */
export function startRouter(config: RouterConfig, ...stores: ViewStore<any>[]) {
    if (stores.length > 1 && stores.some(store => !store.prefix)) {
        throw new Error("Tous les stores doivent avoir un préfixe.");
    }

    // Le premier store est le store par défaut, il est donc actif à l'initialisation.
    stores[0].isActive = true;

    new Router(stores.reduce((routes, store) => {
        routes[`/${store.prefix ? `${store.prefix}/` : ""}${store.paramNames.map(p => `([^\/]*)?`).join("/?")}`] = (...params: string[]) => store.updateView(store.prefix, params);
        return routes;
    }, {} as {[route: string]: (...params: string[]) => void})).configure(
        Object.assign({}, {
        notfound: () => stores[0].updateView(),
    }, config)).init();

    for (const store of stores) {
        autorun(() => {
            const {currentPath, prefix} = store;
            if (config.html5history) {
                if (currentPath !== window.location.pathname) {
                    window.history.pushState(null, "", (prefix ? `${prefix}/` : "") + currentPath);
                    store.isActive = true;
                } else {
                    store.isActive = false;
                }
            } else {
                if (currentPath !== window.location.hash) {
                    window.location.hash = (prefix ? `${prefix}/` : "") + currentPath;
                    store.isActive = true;
                } else {
                    store.isActive = false;
                }
            }
        });
    }
}<commit_msg>Correction partielle multiple viewStore<commit_after>import {autorun} from "mobx";

import {Router, RouterConfig} from "./director";
import {ViewStore} from "./store";
export {ViewStore};

/**
 * Crée un routeur et le lance.
 * @param config La config du routeur ([director](https://github.com/flatiron/director)).
 * @param stores Des ViewStore précédemment créé. S'il y a plus d'un ViewStore, tous doivent avoir un préfixe.
 */
export function startRouter(config: RouterConfig, ...stores: ViewStore<any>[]) {
    if (stores.length > 1 && stores.some(store => !store.prefix)) {
        throw new Error("Tous les stores doivent avoir un préfixe.");
    }

    // Le premier store est le store par défaut, il est donc actif à l'initialisation.
    stores[0].isActive = true;

    new Router(stores.reduce((routes, store) => {
        routes[`/${store.prefix ? `${store.prefix}/` : ""}${store.paramNames.map(p => `([^\/]*)?`).join("/?")}`] = (...params: string[]) => store.updateView(store.prefix, params);
        return routes;
    }, {} as {[route: string]: (...params: string[]) => void})).configure(
        Object.assign({}, {
        notfound: () => stores[0].updateView(),
    }, config)).init();

    for (const store of stores) {
        autorun(() => {
            const {currentPath, prefix} = store;
            if (config.html5history) {
                if (currentPath !== window.location.pathname) {
                    window.history.pushState(null, "", (prefix ? `${prefix}/` : "") + currentPath);
                    store.isActive = true;
                    stores.filter(s => s !== store).forEach(s => s.isActive = false);
                }
            } else {
                if (currentPath !== window.location.hash) {
                    window.location.hash = (prefix ? `${prefix}/` : "") + currentPath;
                    store.isActive = true;
                    stores.filter(s => s !== store).forEach(s => s.isActive = false);
                }
            }
        });
    }
}
{'fraction_non_alphanumeric': 0.16776149570490145, 'fraction_numerical': 0.00202122283981809, 'mean_word_length': 2.182475884244373, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 25, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '876504', 'n_tokens_mistral': 1161, 'n_tokens_neox': 1139, 'n_words': 289}