{"version":3,"file":"UIcon.mjs","names":["makeComponentProps","IconValue","useIcon","makeSizeProps","useSize","makeTagProps","getIconComponentName","UIconParentContainer","computed","ref","Text","convertToUnit","flattenFragments","genericComponent","propsFactory","useRender","makeUIconProps","_objectSpread","color","type","String","required","icon","isHover","Boolean","isActive","variant","tag","UIcon","name","props","setup","_ref","attrs","slots","slotIcon","_slots$default","_createVNode","_Fragment","call","_slots$default2","slotValue","_flattenFragments$fil","value","filter","node","children","_useIcon","iconData","_useSize","sizeClasses","iconColor","component","concat","onClick","height","size","width","style","undefined","_default"],"sources":["../../../src/components/UIcon/UIcon.tsx"],"sourcesContent":["import { ExtractPropTypes } from 'vue'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { getIconComponentName } from '@/utils'\nimport './UIconStyles.scss'\nimport { UIconParentContainer } from './UIconParentContainer'\n\nimport { computed, ref, Text } from 'vue'\nimport {\n  convertToUnit,\n  flattenFragments,\n  genericComponent,\n  propsFactory,\n  useRender,\n} from '@/utils'\n\nexport const makeUIconProps = propsFactory(\n  {\n    color: { type: String, default: 'primary-700', required: false },\n    icon: IconValue,\n    isHover: Boolean,\n    isActive: Boolean,\n    /**\n     * @variant = [default | lightCircle | lightCircleOutline |\n     * darkCircle | lightSquare | midSquare | darkSquare]\n     * */\n    variant: {\n      type: String,\n      default: 'default',\n      required: false,\n    },\n\n    ...makeComponentProps(),\n    ...makeSizeProps(),\n    ...makeTagProps({ tag: 'i' }),\n  },\n  'UIcon'\n)\n\nexport type UIconProps = ExtractPropTypes<typeof makeUIconProps>\n\nexport const UIcon = genericComponent()({\n  name: 'UIcon',\n\n  props: makeUIconProps(),\n\n  setup(props, { attrs, slots }) {\n    const slotIcon = ref<string>()\n    if (props.icon === '$undefined') {\n      return useRender(() => <>{slots.default?.()}</>)\n    }\n\n    useRender(() => {\n      const slotValue = slots.default?.()\n      if (slotValue) {\n        slotIcon.value = flattenFragments(slotValue).filter(\n          (node) =>\n            node.type === Text &&\n            node.children &&\n            typeof node.children === 'string'\n        )[0]?.children as string\n      }\n\n      const { iconData } = useIcon(\n        computed(() =>\n          getIconComponentName((slotIcon.value || props.icon) as string)\n        )\n      )\n      const { sizeClasses } = useSize(props)\n\n      const iconColor = computed(() => {\n        if (\n          props.variant === 'lightCircleOutline' ||\n          props.variant === 'lightCircle' ||\n          props.variant === 'lightSquare' ||\n          props.variant === 'default'\n        ) {\n          return props.color\n        } else {\n          return 'white'\n        }\n      })\n\n      return props.variant === 'default' ? (\n        <iconData.value.component\n          color={iconColor.value}\n          isHover={props.isHover}\n          isActive={props.isActive}\n          tag={props.tag}\n          icon={iconData.value.icon}\n          class={[\n            `${sizeClasses.value}-icon`,\n            {\n              'v-icon--clickable': !!attrs.onClick,\n            },\n            props.class,\n            'flex box-border',\n          ]}\n          style={[\n            !sizeClasses.value && {\n              height: convertToUnit(props.size),\n              width: convertToUnit(props.size),\n            },\n            props.style,\n          ]}\n          role={attrs.onClick ? 'button' : undefined}\n          aria-hidden={!attrs.onClick}\n        >\n          {slotValue}\n        </iconData.value.component>\n      ) : (\n        <UIconParentContainer\n          variant={props.variant}\n          color={props.color}\n          sizeClasses={sizeClasses.value}\n          class={props.class}\n          size={props.size}\n        >\n          <iconData.value.component\n            color={iconColor.value}\n            isHover={props.isHover}\n            isActive={props.isActive}\n            tag={props.tag}\n            icon={iconData.value.icon}\n            class={[\n              `${sizeClasses.value}-icon`,\n              {\n                'v-icon--clickable': !!attrs.onClick,\n              },\n            ]}\n            style={[\n              !sizeClasses.value && {\n                height: convertToUnit(props.size),\n                width: convertToUnit(props.size),\n              },\n              props.style,\n            ]}\n            role={attrs.onClick ? 'button' : undefined}\n            aria-hidden={!attrs.onClick}\n          >\n            {slotValue}\n          </iconData.value.component>\n        </UIconParentContainer>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type UIcon = InstanceType<typeof UIcon>\n"],"mappings":"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"}