{"version":3,"file":"icons.mjs","names":["aliases","mdi","computed","inject","unref","defineComponent","genericComponent","mergeDeep","propsFactory","getNextColor","makeComponentProps","IconValue","String","Function","Object","Array","IconSymbol","Symbol","makeIconProps","_objectSpread","icon","type","tag","required","UComponentIcon","name","props","setup","_ref","slots","_slots$default","Icon","_createVNode","_default","call","USvgIcon","inheritAttrs","_ref2","attrs","hover","isHover","active","isActive","hoverIconClasses","concat","color","hoverButtonClasses","classes","_ref3","_defineProperty","value","_mergeProps","style","isArray","map","path","ULigatureIcon","UClassIcon","defaultSets","svg","component","createIcons","options","defaultSet","sets","vuetify","useIcon","icons","Error","iconData","iconAlias","_icons$aliases","_icons$aliases2","trim","startsWith","slice","iconSetName","keys","find","setName","iconName","length","iconSet"],"sources":["../../src/composables/icons.tsx"],"sourcesContent":["// Icons\nimport { aliases, mdi } from '@/iconsets/mdi'\n\n// Utilities\nimport { computed, inject, unref } from 'vue'\nimport {\n  defineComponent,\n  genericComponent,\n  mergeDeep,\n  propsFactory,\n} from '@/utils'\n\n// Types\nimport type { InjectionKey, JSXComponent, PropType, Ref } from 'vue'\nimport ColorName from '@/types/colors'\nimport { getNextColor } from '@/utils/useColors'\n\nimport { makeComponentProps } from '@/composables/component'\n\nexport type IconValue =\n  | string\n  | (string | [path: string, opacity: number])[]\n  | JSXComponent\nexport const IconValue = [\n  String,\n  Function,\n  Object,\n  Array,\n] as PropType<IconValue>\n\nexport interface IconAliases {\n  [name: string]: IconValue\n}\n\nexport interface IconProps {\n  tag: string\n  icon?: IconValue\n  disabled?: boolean\n}\n\ntype IconComponent = JSXComponent<IconProps>\n\nexport interface IconSet {\n  component: IconComponent\n}\n\nexport type IconOptions = {\n  defaultSet?: string\n  aliases?: Partial<IconAliases>\n  sets?: Record<string, IconSet>\n}\n\ntype IconInstance = {\n  component: IconComponent\n  icon?: IconValue\n}\n\nexport const IconSymbol: InjectionKey<Required<IconOptions>> =\n  Symbol.for('untitled:icons')\n\nexport const makeIconProps = propsFactory(\n  {\n    icon: {\n      type: IconValue,\n    },\n    // Could not remove this and use makeTagProps, types complained because it is not required\n    tag: {\n      type: String,\n      required: true,\n    },\n\n    ...makeComponentProps(),\n  },\n  'icon'\n)\n\nexport const UComponentIcon = genericComponent()({\n  name: 'UComponentIcon',\n\n  props: makeIconProps(),\n\n  setup(props, { slots }) {\n    return () => {\n      const Icon = props.icon as JSXComponent\n      return <props.tag>{props.icon ? <Icon /> : slots.default?.()}</props.tag>\n    }\n  },\n})\nexport type VComponentIcon = InstanceType<typeof UComponentIcon>\n\nexport const USvgIcon = defineComponent({\n  name: 'USvgIcon',\n\n  inheritAttrs: false,\n\n  props: makeIconProps(),\n\n  setup(props, { attrs }) {\n    const hover = computed(() => {\n      return attrs.isHover\n    })\n\n    const active = computed(() => {\n      return attrs.isActive\n    })\n\n    const hoverIconClasses = computed<string>(\n      () => `hover:stroke-${getNextColor(attrs.color as ColorName)}`\n    )\n\n    const hoverButtonClasses = computed<string>(\n      () => `stroke-${getNextColor(attrs.color as ColorName)}`\n    )\n\n    const classes = computed(() => ({\n      [hoverIconClasses.value]: true,\n      [hoverButtonClasses.value]:\n        hover.value === true && active.value === false,\n      [`stroke-${attrs.color} `]:\n        hover.value === false || active.value === true,\n    }))\n\n    return () => {\n      return (\n        <props.tag {...attrs} style={null} class={props.class}>\n          <svg\n            class={['u-icon__svg', classes.value]}\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            style={props.style}\n            xmlns=\"http://www.w3.org/2000/svg\"\n            viewBox=\"0 0 24 24\"\n            role=\"img\"\n            aria-hidden=\"true\"\n            fill=\"none\"\n          >\n            {Array.isArray(props.icon) ? (\n              props.icon.map((path) =>\n                Array.isArray(path) ? (\n                  <path d={path[0] as string} fill-opacity={path[1]}></path>\n                ) : (\n                  <path\n                    d={path as string}\n                    stroke-width=\"2\"\n                    stroke-linecap=\"round\"\n                    stroke-linejoin=\"round\"\n                  ></path>\n                )\n              )\n            ) : (\n              <path\n                d={props.icon as string}\n                stroke-width=\"2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              ></path>\n            )}\n          </svg>\n        </props.tag>\n      )\n    }\n  },\n})\nexport type USvgIcon = InstanceType<typeof USvgIcon>\n\nexport const ULigatureIcon = defineComponent({\n  name: 'ULigatureIcon',\n\n  props: makeIconProps(),\n\n  setup(props) {\n    return () => {\n      return <props.tag>{props.icon}</props.tag>\n    }\n  },\n})\nexport type ULigatureIcon = InstanceType<typeof ULigatureIcon>\n\nexport const UClassIcon = defineComponent({\n  name: 'UClassIcon',\n\n  props: makeIconProps(),\n\n  setup(props) {\n    return () => {\n      return <props.tag class={props.icon}></props.tag>\n    }\n  },\n})\nexport type UClassIcon = InstanceType<typeof UClassIcon>\n\nexport const defaultSets: Record<string, IconSet> = {\n  svg: {\n    component: USvgIcon,\n  },\n  class: {\n    component: UClassIcon,\n  },\n}\n\n// Composables\nexport function createIcons(options?: IconOptions) {\n  return mergeDeep(\n    {\n      defaultSet: 'mdi',\n      sets: {\n        ...defaultSets,\n        mdi,\n      },\n      aliases: {\n        ...aliases,\n        /* eslint-disable max-len */\n        vuetify: [\n          'M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z',\n          [\n            'M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z',\n            0.6,\n          ],\n        ],\n        'vuetify-outline':\n          'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n        /* eslint-enable max-len */\n      },\n    },\n    options\n  )\n}\n\nexport const useIcon = (props: Ref<IconValue | undefined>) => {\n  const icons = inject(IconSymbol)\n\n  if (!icons) throw new Error('Missing Untitled Icons provide!')\n\n  const iconData = computed<IconInstance>(() => {\n    const iconAlias = unref(props)\n\n    if (!iconAlias) return { component: UComponentIcon }\n\n    let icon: IconValue | undefined = iconAlias\n\n    if (typeof icon === 'string') {\n      icon = icon.trim()\n\n      icon = icon.startsWith('$')\n        ? icons.aliases?.[icon.slice(1)]\n        : icons.aliases?.[icon]\n    }\n\n    if (!icon) throw new Error(`Could not find aliased icon \"${iconAlias}\"`)\n\n    if (Array.isArray(icon)) {\n      return {\n        component: USvgIcon,\n        icon,\n      }\n    } else if (typeof icon !== 'string') {\n      return {\n        component: UComponentIcon,\n        icon,\n      }\n    }\n\n    const iconSetName = Object.keys(icons.sets).find(\n      (setName) => typeof icon === 'string' && icon.startsWith(`${setName}:`)\n    )\n\n    const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon\n    const iconSet = icons.sets[iconSetName ?? icons.defaultSet]\n\n    return {\n      component: iconSet.component,\n      icon: iconName,\n    }\n  })\n\n  return { iconData }\n}\n"],"mappings":"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"}