UNPKG

vuestic-ui

Version:
77 lines (76 loc) 3.21 kB
import { m as mergeDeep } from "../../../utils/merge-deep.mjs"; import { i as isMatchDynamicSegments, d as dynamicSegments } from "./dynamic-segment.mjs"; import { i as isMatchRegex, r as regexGroupsValues } from "./regex.mjs"; import { i as isIconConfigurationString, a as isIconConfigurationRegex } from "../types.mjs"; const isMatchConfiguration = (iconName, iconConfiguration) => { if (isIconConfigurationString(iconConfiguration)) { return isMatchDynamicSegments(iconName, iconConfiguration.name); } if (isIconConfigurationRegex(iconConfiguration)) { return isMatchRegex(iconName, iconConfiguration.name); } return false; }; const resolveIconConfigurationString = (iconName, iconConfiguration) => { const args = dynamicSegments(iconName, iconConfiguration.name); return iconConfiguration.resolve && iconConfiguration.resolve(args); }; const resolveIconConfigurationRegex = (iconName, iconConfig) => { if (iconConfig.name.global) { throw new Error(`Bad icon config with name ${iconConfig.name}. Please, don't use global regex as name.`); } const args = regexGroupsValues(iconName, iconConfig.name); return iconConfig.resolveFromRegex && iconConfig.resolveFromRegex(...args); }; const resolveIconConfiguration = (iconName, iconConfiguration) => { if (isIconConfigurationString(iconConfiguration)) { return resolveIconConfigurationString(iconName, iconConfiguration); } if (isIconConfigurationRegex(iconConfiguration)) { return resolveIconConfigurationRegex(iconName, iconConfiguration); } throw Error("Unknown icon config"); }; const findMatchedIconConfiguration = (iconName, globalIconConfig, namesToIgnore = []) => { const matchedConfig = globalIconConfig.find((config) => { if (namesToIgnore.includes(config.name.toString())) { return false; } return isMatchConfiguration(iconName, config); }); if (!matchedConfig) { throw new Error(`Can not find icon config from ${iconName}. Please provide default config.`); } return matchedConfig; }; const findIconConfiguration = (iconName, globalIconConfig, namesToIgnore = []) => { if (!iconName) { return; } const matchedIconConfiguration = findMatchedIconConfiguration(iconName, globalIconConfig, namesToIgnore); const resolvedIconConfiguration = mergeDeep(resolveIconConfiguration(iconName, matchedIconConfiguration), matchedIconConfiguration); namesToIgnore = [...namesToIgnore, matchedIconConfiguration.name.toString()]; return mergeDeep( findIconConfiguration(resolvedIconConfiguration.to, globalIconConfig, namesToIgnore), resolvedIconConfiguration ); }; const iconPropsFromIconConfiguration = (iconConfiguration) => { const junkKeys = ["name", "to", "resolve", "resolveFromRegex"]; const configuration = iconConfiguration; junkKeys.forEach((key) => { delete configuration[key]; }); return configuration; }; const getIconConfiguration = (name, iconConfig) => { const configuration = findIconConfiguration(name, iconConfig); if (configuration === void 0) { return {}; } return iconPropsFromIconConfiguration(configuration); }; export { getIconConfiguration as g }; //# sourceMappingURL=get-icon-configuration.mjs.map