{"version":3,"file":"get-icon-configuration.mjs","sources":["../../../../../../src/services/icon/utils/get-icon-configuration.ts"],"sourcesContent":["import { mergeDeep } from '../../../utils/merge-deep'\nimport { isMatchDynamicSegments, dynamicSegments } from './dynamic-segment'\nimport { isMatchRegex, regexGroupsValues } from './regex'\nimport {\n  IconConfig,\n  IconConfiguration,\n  IconConfigurationString,\n  IconConfigurationRegex,\n  isIconConfigurationString,\n  isIconConfigurationRegex,\n  IconProps,\n} from '../types'\n\nconst isMatchConfiguration = (iconName: string, iconConfiguration: IconConfiguration) => {\n  if (isIconConfigurationString(iconConfiguration)) {\n    return isMatchDynamicSegments(iconName, iconConfiguration.name)\n  }\n  if (isIconConfigurationRegex(iconConfiguration)) {\n    return isMatchRegex(iconName, iconConfiguration.name)\n  }\n\n  return false\n}\n\nconst resolveIconConfigurationString = (iconName: string, iconConfiguration: IconConfigurationString) => {\n  const args = dynamicSegments(iconName, iconConfiguration.name)\n  return iconConfiguration.resolve && iconConfiguration.resolve(args)\n}\n\nconst resolveIconConfigurationRegex = (iconName: string, iconConfig: IconConfigurationRegex) => {\n  if (iconConfig.name.global) {\n    throw new Error(`Bad icon config with name ${iconConfig.name}. Please, don't use global regex as name.`)\n  }\n  const args = regexGroupsValues(iconName, iconConfig.name) as string[]\n  return iconConfig.resolveFromRegex && iconConfig.resolveFromRegex(...args)\n}\n\nconst resolveIconConfiguration = (iconName: string, iconConfiguration: IconConfiguration): IconProps | undefined => {\n  if (isIconConfigurationString(iconConfiguration)) {\n    return resolveIconConfigurationString(iconName, iconConfiguration)\n  }\n  if (isIconConfigurationRegex(iconConfiguration)) {\n    return resolveIconConfigurationRegex(iconName, iconConfiguration)\n  }\n\n  throw Error('Unknown icon config')\n}\n\nconst findMatchedIconConfiguration = (iconName: string, globalIconConfig: IconConfig, namesToIgnore: string[] = []): IconConfiguration => {\n  const matchedConfig = globalIconConfig.find((config) => {\n    if (namesToIgnore.includes(config.name.toString())) { return false }\n\n    return isMatchConfiguration(iconName, config)\n  })\n\n  if (!matchedConfig) { throw new Error(`Can not find icon config from ${iconName}. Please provide default config.`) }\n\n  return matchedConfig\n}\n\nconst findIconConfiguration = (iconName: string | undefined, globalIconConfig: IconConfig, namesToIgnore: string[] = []): IconConfiguration | undefined => {\n  if (!iconName) { return }\n\n  const matchedIconConfiguration = findMatchedIconConfiguration(iconName, globalIconConfig, namesToIgnore)\n  const resolvedIconConfiguration = mergeDeep(resolveIconConfiguration(iconName, matchedIconConfiguration), matchedIconConfiguration)\n\n  namesToIgnore = [...namesToIgnore, matchedIconConfiguration.name.toString()]\n\n  return mergeDeep(\n    findIconConfiguration(resolvedIconConfiguration.to, globalIconConfig, namesToIgnore),\n    resolvedIconConfiguration,\n  )\n}\n\n/** Removes name, to, resolveFromRegex and resolve from IconConfiguration */\nconst iconPropsFromIconConfiguration = (iconConfiguration: IconConfiguration): IconProps => {\n  const junkKeys = ['name', 'to', 'resolve', 'resolveFromRegex']\n\n  const configuration: Record<string, string> = iconConfiguration as any\n  junkKeys.forEach((key) => { delete configuration[key] })\n  return configuration\n}\n\nexport const getIconConfiguration = (name: string, iconConfig: IconConfig): IconProps => {\n  const configuration = findIconConfiguration(name, iconConfig)\n\n  if (configuration === undefined) { return {} }\n\n  return iconPropsFromIconConfiguration(configuration)\n}\n"],"names":[],"mappings":";;;;AAaA,MAAM,uBAAuB,CAAC,UAAkB,sBAAyC;AACnF,MAAA,0BAA0B,iBAAiB,GAAG;AACzC,WAAA,uBAAuB,UAAU,kBAAkB,IAAI;AAAA,EAChE;AACI,MAAA,yBAAyB,iBAAiB,GAAG;AACxC,WAAA,aAAa,UAAU,kBAAkB,IAAI;AAAA,EACtD;AAEO,SAAA;AACT;AAEA,MAAM,iCAAiC,CAAC,UAAkB,sBAA+C;AACvG,QAAM,OAAO,gBAAgB,UAAU,kBAAkB,IAAI;AAC7D,SAAO,kBAAkB,WAAW,kBAAkB,QAAQ,IAAI;AACpE;AAEA,MAAM,gCAAgC,CAAC,UAAkB,eAAuC;AAC1F,MAAA,WAAW,KAAK,QAAQ;AAC1B,UAAM,IAAI,MAAM,6BAA6B,WAAW,IAAI,2CAA2C;AAAA,EACzG;AACA,QAAM,OAAO,kBAAkB,UAAU,WAAW,IAAI;AACxD,SAAO,WAAW,oBAAoB,WAAW,iBAAiB,GAAG,IAAI;AAC3E;AAEA,MAAM,2BAA2B,CAAC,UAAkB,sBAAgE;AAC9G,MAAA,0BAA0B,iBAAiB,GAAG;AACzC,WAAA,+BAA+B,UAAU,iBAAiB;AAAA,EACnE;AACI,MAAA,yBAAyB,iBAAiB,GAAG;AACxC,WAAA,8BAA8B,UAAU,iBAAiB;AAAA,EAClE;AAEA,QAAM,MAAM,qBAAqB;AACnC;AAEA,MAAM,+BAA+B,CAAC,UAAkB,kBAA8B,gBAA0B,CAAA,MAA0B;AACxI,QAAM,gBAAgB,iBAAiB,KAAK,CAAC,WAAW;AACtD,QAAI,cAAc,SAAS,OAAO,KAAK,SAAU,CAAA,GAAG;AAAS,aAAA;AAAA,IAAM;AAE5D,WAAA,qBAAqB,UAAU,MAAM;AAAA,EAAA,CAC7C;AAED,MAAI,CAAC,eAAe;AAAE,UAAM,IAAI,MAAM,iCAAiC,QAAQ,kCAAkC;AAAA,EAAE;AAE5G,SAAA;AACT;AAEA,MAAM,wBAAwB,CAAC,UAA8B,kBAA8B,gBAA0B,CAAA,MAAsC;AACzJ,MAAI,CAAC,UAAU;AAAE;AAAA,EAAO;AAExB,QAAM,2BAA2B,6BAA6B,UAAU,kBAAkB,aAAa;AACvG,QAAM,4BAA4B,UAAU,yBAAyB,UAAU,wBAAwB,GAAG,wBAAwB;AAElI,kBAAgB,CAAC,GAAG,eAAe,yBAAyB,KAAK,UAAU;AAEpE,SAAA;AAAA,IACL,sBAAsB,0BAA0B,IAAI,kBAAkB,aAAa;AAAA,IACnF;AAAA,EAAA;AAEJ;AAGA,MAAM,iCAAiC,CAAC,sBAAoD;AAC1F,QAAM,WAAW,CAAC,QAAQ,MAAM,WAAW,kBAAkB;AAE7D,QAAM,gBAAwC;AACrC,WAAA,QAAQ,CAAC,QAAQ;AAAE,WAAO,cAAc,GAAG;AAAA,EAAA,CAAG;AAChD,SAAA;AACT;AAEa,MAAA,uBAAuB,CAAC,MAAc,eAAsC;AACjF,QAAA,gBAAgB,sBAAsB,MAAM,UAAU;AAE5D,MAAI,kBAAkB,QAAW;AAAE,WAAO;EAAG;AAE7C,SAAO,+BAA+B,aAAa;AACrD;"}