mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-13 08:59:58 +08:00
39 lines
1.2 KiB
TypeScript
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
|
|
}
|