{"version":3,"file":"VIcon.mjs","names":["IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","useTextColor","computed","Text","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","attrs","slots","slotIcon","default","slot","filter","node","type","children","themeClasses","iconData","sizeClasses","textColorClasses","textColorStyles","value","onClick","fontSize","size","height","width","undefined"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, Text, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef } from 'vue'\n\nexport const makeVIconProps = propsFactory({\n  color: String,\n  start: Boolean,\n  end: Boolean,\n  icon: IconValue,\n\n  ...makeSizeProps(),\n  ...makeTagProps({ tag: 'i' }),\n  ...makeThemeProps(),\n}, 'v-icon')\n\nexport const VIcon = genericComponent()({\n  name: 'VIcon',\n\n  props: makeVIconProps(),\n\n  setup (props, { attrs, slots }) {\n    let slotIcon: ComputedRef<string | undefined> | undefined\n    if (slots.default) {\n      slotIcon = computed(() => {\n        const slot = slots.default?.()\n        if (!slot) return\n\n        return slot.filter(node =>\n          node.type === Text && node.children && typeof node.children === 'string'\n        )[0]?.children as string\n      })\n    }\n\n    const { themeClasses } = provideTheme(props)\n    const { iconData } = useIcon(slotIcon || props)\n    const { sizeClasses } = useSize(props)\n    const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n    useRender(() => (\n      <iconData.value.component\n        tag={ props.tag }\n        icon={ iconData.value.icon }\n        class={[\n          'v-icon',\n          'notranslate',\n          themeClasses.value,\n          sizeClasses.value,\n          textColorClasses.value,\n          {\n            'v-icon--clickable': !!attrs.onClick,\n            'v-icon--start': props.start,\n            'v-icon--end': props.end,\n          },\n        ]}\n        style={[\n          !sizeClasses.value ? ({\n            fontSize: convertToUnit(props.size),\n            height: convertToUnit(props.size),\n            width: convertToUnit(props.size),\n          }) : undefined,\n          textColorStyles.value,\n        ]}\n        role={ attrs.onClick ? 'button' : undefined }\n        aria-hidden={ !attrs.onClick }\n      >\n        { slots.default?.() }\n      </iconData.value.component>\n    ))\n\n    return {}\n  },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,SAAS,EAAEC,OAAO;AAAA,SAClBC,aAAa,EAAEC,OAAO;AAAA,SACtBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,YAAY,uCAErB;AACA,SAASC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAClCC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAEjE;AAGA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,KAAK,EAAEC,MAAM;EACbC,KAAK,EAAEC,OAAO;EACdC,GAAG,EAAED,OAAO;EACZE,IAAI,EAAErB,SAAS;EAEf,GAAGE,aAAa,EAAE;EAClB,GAAGE,YAAY,CAAC;IAAEkB,GAAG,EAAE;EAAI,CAAC,CAAC;EAC7B,GAAGjB,cAAc;AACnB,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,MAAMkB,KAAK,GAAGX,gBAAgB,EAAE,CAAC;EACtCY,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEV,cAAc,EAAE;EAEvBW,KAAK,CAAED,KAAK,QAAoB;IAAA,IAAlB;MAAEE,KAAK;MAAEC;IAAM,CAAC;IAC5B,IAAIC,QAAqD;IACzD,IAAID,KAAK,CAACE,OAAO,EAAE;MACjBD,QAAQ,GAAGrB,QAAQ,CAAC,MAAM;QACxB,MAAMuB,IAAI,GAAGH,KAAK,CAACE,OAAO,IAAI;QAC9B,IAAI,CAACC,IAAI,EAAE;QAEX,OAAOA,IAAI,CAACC,MAAM,CAACC,IAAI,IACrBA,IAAI,CAACC,IAAI,KAAKzB,IAAI,IAAIwB,IAAI,CAACE,QAAQ,IAAI,OAAOF,IAAI,CAACE,QAAQ,KAAK,QAAQ,CACzE,CAAC,CAAC,CAAC,EAAEA,QAAQ;MAChB,CAAC,CAAC;IACJ;IAEA,MAAM;MAAEC;IAAa,CAAC,GAAG9B,YAAY,CAACmB,KAAK,CAAC;IAC5C,MAAM;MAAEY;IAAS,CAAC,GAAGpC,OAAO,CAAC4B,QAAQ,IAAIJ,KAAK,CAAC;IAC/C,MAAM;MAAEa;IAAY,CAAC,GAAGnC,OAAO,CAACsB,KAAK,CAAC;IACtC,MAAM;MAAEc,gBAAgB;MAAEC;IAAgB,CAAC,GAAGjC,YAAY,CAACG,KAAK,CAACe,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjFX,SAAS,CAAC;MAAA,OAEAW,KAAK,CAACH,GAAG;MAAA,QACRe,QAAQ,CAACI,KAAK,CAACpB,IAAI;MAAA,SACnB,CACL,QAAQ,EACR,aAAa,EACbe,YAAY,CAACK,KAAK,EAClBH,WAAW,CAACG,KAAK,EACjBF,gBAAgB,CAACE,KAAK,EACtB;QACE,mBAAmB,EAAE,CAAC,CAACd,KAAK,CAACe,OAAO;QACpC,eAAe,EAAEjB,KAAK,CAACP,KAAK;QAC5B,aAAa,EAAEO,KAAK,CAACL;MACvB,CAAC,CACF;MAAA,SACM,CACL,CAACkB,WAAW,CAACG,KAAK,GAAI;QACpBE,QAAQ,EAAEhC,aAAa,CAACc,KAAK,CAACmB,IAAI,CAAC;QACnCC,MAAM,EAAElC,aAAa,CAACc,KAAK,CAACmB,IAAI,CAAC;QACjCE,KAAK,EAAEnC,aAAa,CAACc,KAAK,CAACmB,IAAI;MACjC,CAAC,GAAIG,SAAS,EACdP,eAAe,CAACC,KAAK,CACtB;MAAA,QACMd,KAAK,CAACe,OAAO,GAAG,QAAQ,GAAGK,SAAS;MAAA,eAC7B,CAACpB,KAAK,CAACe;IAAO;MAAA,gBAE1Bd,KAAK,CAACE,OAAO,IAAI;IAAA,EAEtB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}