Files
MoviePilot-Frontend/src/@layouts/utils.ts
2023-06-24 08:22:59 +08:00

39 lines
1.2 KiB
TypeScript

import type { NavLink, NavLinkProps } from '@layouts/types'
/**
* Return nav link props to use
* @param {Object, String} item navigation routeName or route Object provided in navigation data
*/
export const getComputedNavLinkToProp = computed(() => (link: NavLink) => {
const props: NavLinkProps = {
target: link.target,
rel: link.rel,
}
// If route is string => it assumes string is route name => Create route object from route name
// If route is not string => It assumes it's route object => returns passed route object
if (link.to)
props.to = typeof link.to === 'string' ? { name: link.to } : link.to
else props.href = link.href
return props
})
/**
* Convert Hex color to rgb
* @param hex
*/
export const hexToRgb = (hex: string) => {
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i
hex = hex.replace(shorthandRegex, (m: string, r: string, g: string, b: string) => {
return r + r + g + g + b + b
})
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)
return result ? `${parseInt(result[1], 16)},${parseInt(result[2], 16)},${parseInt(result[3], 16)}` : null
}