import React, { useContext, useMemo } from 'react';
const NamespaceConfigContext = React.createContext({
    configs: {},
});
function normalizeNamespaceKey(namespace) {
    return String(namespace || '').replace(/^\/+|\/+$/g, '');
}
export function NamespaceConfigProvider(props) {
    const { configs = {}, children } = props;
    const value = useMemo(() => ({ configs }), [configs]);
    return (<NamespaceConfigContext.Provider value={value}>
            {children}
        </NamespaceConfigContext.Provider>);
}
export function useNamespaceConfigs() {
    return useContext(NamespaceConfigContext).configs;
}
export 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));
}
