{"version":3,"file":"index.mjs","names":[],"sources":["../../src/resolver/index.ts"],"sourcesContent":["import type { ComponentResolverObject } from 'unplugin-vue-components';\n\nexport const components = [\n  'Button',\n  'Card',\n  'Icon',\n  'Input',\n  'Placeholder',\n  'Surface',\n] as const;\n\nexport const themeComponents = [\n  'ThemeScheme',\n] as const;\n\nexport type ComponentName = typeof components[number];\nexport type ThemeComponentName = typeof themeComponents[number];\n\nexport const DEFAULT_PREFIX = 'P';\n\nexport interface ResolverOptions {\n  /** @defaultValue 'P' */\n  prefix?: string\n}\n\n/** @returns kebab-case and snake_case to CamelCase to be used\n * as component prefix\n */\nexport const normalizedComponentPrefix = (s: string): string => {\n  return s.replaceAll(/^[-_]+|[-_]+$/g, '')\n    .replaceAll(/(^|[-_]+)([a-z])/g, (_, prefix, char) => char.toUpperCase());\n};\n\nexport const createResolver = (options: ResolverOptions = {}): ComponentResolverObject => {\n  const { prefix: $prefix = DEFAULT_PREFIX } = options;\n  const prefix = normalizedComponentPrefix($prefix);\n\n  return {\n    type: 'component',\n    resolve: (name: string) => {\n      const componentName = prefix ? stripPrefix(name, prefix) : name;\n      if (componentName) {\n        if (components.includes(componentName as ComponentName)) {\n          return {\n            name: componentName,\n            from: '@poupe/vue',\n          };\n        }\n        if (themeComponents.includes(componentName as ThemeComponentName)) {\n          return {\n            name: componentName,\n            from: '@poupe/vue/theme-scheme',\n          };\n        }\n      }\n    },\n  };\n};\n\nexport default createResolver;\n\nconst stripPrefix = (name: string, prefix: string) => name.startsWith(prefix) ? name.slice(prefix.length) : undefined;\n"],"mappings":"AAEA,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAa,kBAAkB,CAC7B,aACF;AAKA,MAAa,iBAAiB;;;AAU9B;MACE,kBAAoB,UAAA,CAAA,MAAoB;CAE1C,MAAA,EAAA,QAAA,UAAA,QAAA;CAEA,MAAa,SAAA,0BAA6E,OAAA;CACxF,OAAM;EACN,MAAM;EAEN,UAAO,SAAA;GACL,MAAM,gBAAA,SAAA,YAAA,MAAA,MAAA,IAAA;GACN,IAAA,eAA2B;IACzB,IAAA,WAAM,SAAgB,aAAS,GAAA,OAAY;KAC3C,MAAI;KACF,MAAI;;QAGA,gBAAM,SAAA,aAAA,GAAA,OAAA;KACR,MAAA;KAEF,MAAI;;;;;;MAQV,eAAA,MAAA,WAAA,KAAA,WAAA,MAAA,IAAA,KAAA,MAAA,OAAA,MAAA,IAAA,KAAA;AAKF,SAAM,gBAAe,YAAc,gBAAwB,kBAA0B,SAAM,2BAAiB"}