"use client"

import NextImage from "next/image"

import type { ImageLoaderProps } from "next/image"
import type { CSSProperties } from "react"

import type { ImageProps } from "@/types/components/image"

function imageLoader({ quality, src, width }: ImageLoaderProps) {
  const hasQS = src.indexOf("?") !== -1
  return `${src}${hasQS ? "&" : "?"}w=${width}${quality ? "&q=" + quality : ""}`
}

// Next/Image adds & instead of ? before the params
export default function Image({ focalPoint, style, ...props }: ImageProps) {
  const styles: CSSProperties = focalPoint
    ? {
        objectFit: "cover",
        objectPosition: `${focalPoint.x}% ${focalPoint.y}%`,
        ...style,
      }
    : { ...style }

  return <NextImage {...props} style={styles} loader={imageLoader} />
}
