vuestic-ui
Version:
Vue 3 UI Framework
77 lines (76 loc) • 3.21 kB
JavaScript
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