{"version":3,"file":"BLink-DoYZ8dBl.mjs","names":[],"sources":["../src/utils/isLink.ts","../src/composables/useBLinkHelper.ts","../src/composables/useLinkClasses.ts","../src/components/BLink/BLink.vue","../src/components/BLink/BLink.vue"],"sourcesContent":["import type {RouteLocationRaw} from 'vue-router'\n\nexport const isLink = (props: Readonly<{href?: string; to?: RouteLocationRaw}>): boolean =>\n  !!(props.href || props.to)\n","import {\n  type Component,\n  computed,\n  getCurrentInstance,\n  type MaybeRefOrGetter,\n  readonly,\n  resolveDynamicComponent,\n  toRef,\n  toValue,\n} from 'vue'\nimport {isLink} from '../utils/isLink'\nimport {pick} from '../utils/object'\nimport type {RouteLocationRaw, RouterLink} from 'vue-router'\nimport {toPascalCase} from '../utils/stringUtils'\n\nexport const useBLinkHelper = <\n  T extends Record<string, unknown>,\n  const B extends ReadonlyArray<PropertyKey>,\n>(\n  props: MaybeRefOrGetter<T>,\n  pickProps?: MaybeRefOrGetter<B | (keyof T)[]>\n) => {\n  const pickPropsResolved = readonly(toRef(pickProps))\n  const resolvedProps = readonly(toRef(props))\n\n  const computedLink = computed(() => isLink(resolvedProps.value))\n  const computedLinkProps = computed(() =>\n    computedLink.value\n      ? pick(\n          resolvedProps.value,\n          pickPropsResolved.value ?? [\n            'active',\n            'activeClass',\n            'disabled',\n            'exactActiveClass',\n            'href',\n            'icon',\n            'noRel',\n            'opacity',\n            'opacityHover',\n            'noPrefetch',\n            'prefetch',\n            'prefetchOn',\n            'prefetchedClass',\n            'rel',\n            'replace',\n            'routerComponentName',\n            'routerTag',\n            'stretched',\n            'target',\n            'to',\n            'underlineOffset',\n            'underlineOffsetHover',\n            'underlineOpacity',\n            'underlineOpacityHover',\n            'underlineVariant',\n            'variant',\n          ]\n        )\n      : {}\n  )\n\n  return {computedLink, computedLinkProps}\n}\n\nexport const useBLinkTagResolver = ({\n  to,\n  disabled,\n  href,\n  replace,\n  routerComponentName,\n}: {\n  routerComponentName: MaybeRefOrGetter<string | Component>\n  disabled: MaybeRefOrGetter<boolean>\n  to: MaybeRefOrGetter<RouteLocationRaw | undefined>\n  href: MaybeRefOrGetter<string | undefined>\n  replace: MaybeRefOrGetter<boolean>\n}) => {\n  // Getting instance\n  const instance = getCurrentInstance()\n  const router = instance?.appContext?.app?.config?.globalProperties?.$router\n  const route = instance?.appContext?.app?.config?.globalProperties?.$route\n\n  // resolvedynamiccomponent will return a string if the component is not found\n  const RouterLinkComponent = resolveDynamicComponent('RouterLink') as typeof RouterLink | string\n\n  // Resolving props\n  const resolvedTo = computed(() => toValue(to) || '')\n  const resolvedReplace = readonly(toRef(replace))\n\n  const routerName = computed(() => {\n    const routerComponent = toValue(routerComponentName)\n    if (typeof routerComponent === 'string') {\n      return toPascalCase(routerComponent)\n    }\n    return routerComponent\n  })\n  const useLink = (\n    typeof routerName.value !== 'string' && 'useLink' in routerName.value\n      ? routerName.value.useLink\n      : typeof RouterLinkComponent !== 'string' && 'useLink' in RouterLinkComponent\n        ? RouterLinkComponent.useLink\n        : null\n  ) as (typeof RouterLink)['useLink'] | null\n\n  const isNuxtLink = computed(\n    // @ts-expect-error we're doing an explicit check for Nuxt, so we can safely ignore this\n    () => typeof instance?.appContext?.app?.$nuxt !== 'undefined'\n  )\n  const isRouterLink = computed(() => routerName.value === 'RouterLink')\n\n  const tag = computed(() => {\n    // If is disabled or there is no `to` prop, render a simple `<a>` tag\n    if (toValue(disabled) || !resolvedTo.value) {\n      return 'a'\n    }\n\n    // Is it actually a component? Use that\n    if (typeof routerName.value !== 'string') {\n      return routerName.value\n    }\n    // Check if is router link second\n    if (isRouterLink.value && typeof RouterLinkComponent !== 'string') {\n      return RouterLinkComponent\n    }\n\n    // routerName is a string, but we need to check if it's a component first\n    // return the component from the app context if it exists, otherwise fallback to 'a'\n    return instance?.appContext?.app?.component(routerName.value) || 'a'\n  })\n\n  const isNonStandardTag = computed(\n    () => tag.value !== 'a' && !isRouterLink.value && !isNuxtLink.value\n  )\n  const isOfRouterType = computed(() => isRouterLink.value || isNuxtLink.value)\n  const linkProps = computed(() => ({\n    to: resolvedTo.value,\n    replace: resolvedReplace.value,\n  }))\n\n  const _link = useLink?.({\n    to: resolvedTo,\n    replace: resolvedReplace,\n  })\n  const link = computed(() => (isOfRouterType.value && toValue(to) ? _link : null))\n\n  const computedHref = computed(() => {\n    if (link.value?.href.value && resolvedTo.value) return link.value.href.value\n\n    const toFallback = '#'\n    const resolvedHref = toValue(href)\n    if (resolvedHref) return resolvedHref\n\n    if (typeof resolvedTo.value === 'string') return resolvedTo.value || toFallback\n\n    // Stabilize the `to` prop for the callback functions\n    const stableTo = resolvedTo.value\n\n    if (stableTo !== undefined && 'path' in stableTo) {\n      const path = stableTo.path || ''\n      const query = stableTo.query\n        ? `?${Object.keys(stableTo.query)\n            .map((e) => `${e}=${stableTo.query?.[e]}`)\n            .join('=')}`\n        : ''\n      const hash =\n        !stableTo.hash || stableTo.hash.charAt(0) === '#'\n          ? stableTo.hash || ''\n          : `#${stableTo.hash}`\n      return `${path}${query}${hash}` || toFallback\n    }\n    // There is no resolver for `RouteLocationNamedRaw`. Which, I'm not sure there can be one in this context.\n\n    return toFallback\n  })\n\n  return {\n    isNonStandardTag,\n    tag,\n    isRouterLink,\n    isNuxtLink,\n    computedHref,\n    routerName,\n    router,\n    route,\n    link,\n    linkProps,\n  }\n}\n","import {computed, type MaybeRefOrGetter, toValue} from 'vue'\nimport type {\n  LinkIconProps,\n  LinkOpacityProps,\n  LinkUnderlineProps,\n  LinkVariantProps,\n} from '../types/ComponentProps'\n\nexport const useLinkClasses = (\n  linkProps: MaybeRefOrGetter<\n    LinkUnderlineProps & LinkOpacityProps & LinkIconProps & LinkVariantProps\n  >\n) =>\n  computed(() => {\n    const props = toValue(linkProps)\n    return {\n      [`link-${props.variant}`]: props.variant !== null,\n      [`link-opacity-${props.opacity}`]: props.opacity !== undefined,\n      [`link-opacity-${props.opacityHover}-hover`]: props.opacityHover !== undefined,\n      [`link-underline-${props.underlineVariant}`]: props.underlineVariant !== null,\n      [`link-offset-${props.underlineOffset}`]: props.underlineOffset !== undefined,\n      [`link-offset-${props.underlineOffsetHover}-hover`]: props.underlineOffsetHover !== undefined,\n      ['link-underline']:\n        props.underlineVariant === null &&\n        (props.underlineOpacity !== undefined || props.underlineOpacityHover !== undefined),\n      [`link-underline-opacity-${props.underlineOpacity}`]: props.underlineOpacity !== undefined,\n      [`link-underline-opacity-${props.underlineOpacityHover}-hover`]:\n        props.underlineOpacityHover !== undefined,\n      'icon-link': props.icon === true,\n    }\n  })\n","<template>\n  <component\n    :is=\"tag\"\n    :class=\"computedClasses\"\n    :target=\"props.target\"\n    :href=\"computedHref\"\n    :rel=\"computedRel\"\n    :tabindex=\"computedTabIndex\"\n    :aria-disabled=\"props.disabled ? true : null\"\n    v-bind=\"computedSpecificProps\"\n    @click=\"\n      (e: MouseEvent) => {\n        clicked(e)\n        link?.navigate(e)\n      }\n    \"\n  >\n    <slot />\n  </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useLinkClasses} from '../../composables/useLinkClasses'\nimport {collapseInjectionKey, navbarInjectionKey} from '../../utils/keys'\nimport {computed, inject, useAttrs} from 'vue'\nimport {useBLinkTagResolver} from '../../composables/useBLinkHelper'\nimport type {BLinkEmits, BLinkProps, BLinkSlots} from '../../types'\n\nconst defaultActiveClass = 'active'\n\nconst _props = withDefaults(defineProps<BLinkProps>(), {\n  active: undefined,\n  activeClass: 'router-link-active',\n  disabled: false,\n  exactActiveClass: 'router-link-exact-active',\n  href: undefined,\n  icon: false,\n  opacity: undefined,\n  opacityHover: undefined,\n  noPrefetch: undefined,\n  prefetchOn: undefined,\n  noRel: false,\n  prefetchedClass: undefined,\n  prefetch: undefined,\n  rel: undefined,\n  replace: false,\n  routerComponentName: 'router-link',\n  routerTag: 'a',\n  stretched: false,\n  target: undefined,\n  to: undefined,\n  underlineOffset: undefined,\n  underlineOffsetHover: undefined,\n  underlineOpacity: undefined,\n  underlineOpacityHover: undefined,\n  underlineVariant: null,\n  variant: null,\n})\nconst props = useDefaults(_props, 'BLink')\nconst emit = defineEmits<BLinkEmits>()\ndefineSlots<BLinkSlots>()\nconst attrs = useAttrs()\n\nconst {computedHref, tag, link, isNuxtLink, isRouterLink, linkProps, isNonStandardTag} =\n  useBLinkTagResolver({\n    routerComponentName: () => props.routerComponentName,\n    disabled: () => props.disabled,\n    to: () => props.to,\n    replace: () => props.replace,\n    href: () => props.href,\n  })\n\nconst collapseData = inject(collapseInjectionKey, null)\nconst navbarData = inject(navbarInjectionKey, null)\n\n/**\n * Not to be confused with computedLinkClasses\n */\nconst linkValueClasses = useLinkClasses(props)\nconst computedClasses = computed(() => [\n  linkValueClasses.value,\n  attrs.class,\n  computedLinkClasses.value,\n  {\n    [defaultActiveClass]: props.active,\n    [props.activeClass]: link.value?.isActive.value || false,\n    [props.exactActiveClass]: link.value?.isExactActive.value || false,\n    'stretched-link': props.stretched,\n  },\n])\nconst computedLinkClasses = computed(() => ({\n  [defaultActiveClass]: props.active,\n  disabled: props.disabled,\n}))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n  if (props.disabled) {\n    e.preventDefault()\n    e.stopImmediatePropagation()\n    return\n  }\n\n  if (\n    (collapseData?.isNav?.value === true && navbarData === null) ||\n    (navbarData !== null && navbarData.noAutoClose?.value !== true)\n  ) {\n    collapseData?.hide?.()\n  }\n\n  emit('click', e)\n}\n\nconst computedRel = computed(() =>\n  props.target === '_blank' ? (!props.rel && props.noRel ? 'noopener' : props.rel) : undefined\n)\nconst computedTabIndex = computed(() =>\n  props.disabled ? '-1' : typeof attrs.tabindex === 'undefined' ? null : attrs.tabindex\n)\n\nconst nuxtSpecificProps = computed(() => ({\n  ...(props.noPrefetch ? {noPrefetch: props.noPrefetch} : {prefetch: props.prefetch}),\n  prefetchOn: props.prefetchOn,\n  prefetchedClass: props.prefetchedClass,\n  ...linkProps.value,\n}))\nconst computedSpecificProps = computed(() => ({\n  ...(isRouterLink.value ? linkProps.value : undefined),\n  // In addition to being Nuxt specific, we add these values if it's some non-standard tag. We don't know what it is,\n  // So we just add it anyways. It will be made as an attr if it's unused so it's fine\n  ...(isNuxtLink.value || isNonStandardTag.value ? nuxtSpecificProps.value : undefined),\n}))\n</script>\n","<template>\n  <component\n    :is=\"tag\"\n    :class=\"computedClasses\"\n    :target=\"props.target\"\n    :href=\"computedHref\"\n    :rel=\"computedRel\"\n    :tabindex=\"computedTabIndex\"\n    :aria-disabled=\"props.disabled ? true : null\"\n    v-bind=\"computedSpecificProps\"\n    @click=\"\n      (e: MouseEvent) => {\n        clicked(e)\n        link?.navigate(e)\n      }\n    \"\n  >\n    <slot />\n  </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useLinkClasses} from '../../composables/useLinkClasses'\nimport {collapseInjectionKey, navbarInjectionKey} from '../../utils/keys'\nimport {computed, inject, useAttrs} from 'vue'\nimport {useBLinkTagResolver} from '../../composables/useBLinkHelper'\nimport type {BLinkEmits, BLinkProps, BLinkSlots} from '../../types'\n\nconst defaultActiveClass = 'active'\n\nconst _props = withDefaults(defineProps<BLinkProps>(), {\n  active: undefined,\n  activeClass: 'router-link-active',\n  disabled: false,\n  exactActiveClass: 'router-link-exact-active',\n  href: undefined,\n  icon: false,\n  opacity: undefined,\n  opacityHover: undefined,\n  noPrefetch: undefined,\n  prefetchOn: undefined,\n  noRel: false,\n  prefetchedClass: undefined,\n  prefetch: undefined,\n  rel: undefined,\n  replace: false,\n  routerComponentName: 'router-link',\n  routerTag: 'a',\n  stretched: false,\n  target: undefined,\n  to: undefined,\n  underlineOffset: undefined,\n  underlineOffsetHover: undefined,\n  underlineOpacity: undefined,\n  underlineOpacityHover: undefined,\n  underlineVariant: null,\n  variant: null,\n})\nconst props = useDefaults(_props, 'BLink')\nconst emit = defineEmits<BLinkEmits>()\ndefineSlots<BLinkSlots>()\nconst attrs = useAttrs()\n\nconst {computedHref, tag, link, isNuxtLink, isRouterLink, linkProps, isNonStandardTag} =\n  useBLinkTagResolver({\n    routerComponentName: () => props.routerComponentName,\n    disabled: () => props.disabled,\n    to: () => props.to,\n    replace: () => props.replace,\n    href: () => props.href,\n  })\n\nconst collapseData = inject(collapseInjectionKey, null)\nconst navbarData = inject(navbarInjectionKey, null)\n\n/**\n * Not to be confused with computedLinkClasses\n */\nconst linkValueClasses = useLinkClasses(props)\nconst computedClasses = computed(() => [\n  linkValueClasses.value,\n  attrs.class,\n  computedLinkClasses.value,\n  {\n    [defaultActiveClass]: props.active,\n    [props.activeClass]: link.value?.isActive.value || false,\n    [props.exactActiveClass]: link.value?.isExactActive.value || false,\n    'stretched-link': props.stretched,\n  },\n])\nconst computedLinkClasses = computed(() => ({\n  [defaultActiveClass]: props.active,\n  disabled: props.disabled,\n}))\n\nconst clicked = (e: Readonly<MouseEvent>): void => {\n  if (props.disabled) {\n    e.preventDefault()\n    e.stopImmediatePropagation()\n    return\n  }\n\n  if (\n    (collapseData?.isNav?.value === true && navbarData === null) ||\n    (navbarData !== null && navbarData.noAutoClose?.value !== true)\n  ) {\n    collapseData?.hide?.()\n  }\n\n  emit('click', e)\n}\n\nconst computedRel = computed(() =>\n  props.target === '_blank' ? (!props.rel && props.noRel ? 'noopener' : props.rel) : undefined\n)\nconst computedTabIndex = computed(() =>\n  props.disabled ? '-1' : typeof attrs.tabindex === 'undefined' ? null : attrs.tabindex\n)\n\nconst nuxtSpecificProps = computed(() => ({\n  ...(props.noPrefetch ? {noPrefetch: props.noPrefetch} : {prefetch: props.prefetch}),\n  prefetchOn: props.prefetchOn,\n  prefetchedClass: props.prefetchedClass,\n  ...linkProps.value,\n}))\nconst computedSpecificProps = computed(() => ({\n  ...(isRouterLink.value ? linkProps.value : undefined),\n  // In addition to being Nuxt specific, we add these values if it's some non-standard tag. We don't know what it is,\n  // So we just add it anyways. It will be made as an attr if it's unused so it's fine\n  ...(isNuxtLink.value || isNonStandardTag.value ? nuxtSpecificProps.value : undefined),\n}))\n</script>\n"],"mappings":"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"}