"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NamespaceConfigProvider = NamespaceConfigProvider;
exports.useNamespaceConfigs = useNamespaceConfigs;
exports.useNamespaceConfig = useNamespaceConfig;
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const NamespaceConfigContext = react_1.default.createContext({
    configs: {},
});
function normalizeNamespaceKey(namespace) {
    return String(namespace || '').replace(/^\/+|\/+$/g, '');
}
function NamespaceConfigProvider(props) {
    const { configs = {}, children } = props;
    const value = (0, react_1.useMemo)(() => ({ configs }), [configs]);
    return (<NamespaceConfigContext.Provider value={value}>
            {children}
        </NamespaceConfigContext.Provider>);
}
function useNamespaceConfigs() {
    return (0, react_1.useContext)(NamespaceConfigContext).configs;
}
function useNamespaceConfig(namespace) {
    const configs = useNamespaceConfigs();
    const normalizedNamespace = normalizeNamespaceKey(namespace);
    const directConfig = configs[normalizedNamespace] || configs[namespace];
    if (directConfig) {
        return directConfig;
    }
    return Object.values(configs).find((config) => (normalizeNamespaceKey(config.route?.path || '') === normalizedNamespace));
}
