{"version":3,"file":"index.module.js","sources":["../src/hooks/useEventCallback.ts","../src/utils/clamp.ts","../src/components/common/Interactive.tsx","../src/utils/format.ts","../src/components/common/Pointer.tsx","../src/utils/round.ts","../src/utils/convert.ts","../src/components/common/Hue.tsx","../src/components/common/Saturation.tsx","../src/utils/compare.ts","../src/hooks/useColorManipulation.ts","../src/hooks/useIsomorphicLayoutEffect.ts","../src/utils/nonce.ts","../src/hooks/useStyleSheet.ts","../src/components/common/ContrastWrapper.tsx","../src/components/common/ColorPicker.tsx","../src/utils/validate.ts","../src/components/common/ColorInput.tsx","../src/components/HexColorInput.tsx","../src/components/HexColorPicker.tsx","../src/components/common/Alpha.tsx","../src/components/common/AlphaColorPicker.tsx","../src/components/HexAlphaColorPicker.tsx","../src/components/HslaColorInput.tsx","../src/components/HslaColorPicker.tsx","../src/components/HslaStringColorInput.tsx","../src/components/HslaStringColorPicker.tsx","../src/components/HslColorInput.tsx","../src/components/HslColorPicker.tsx","../src/components/HslStringColorInput.tsx","../src/components/HslStringColorPicker.tsx","../src/components/HsvaColorInput.tsx","../src/components/HsvaColorPicker.tsx","../src/components/HsvaStringColorInput.tsx","../src/components/HsvaStringColorPicker.tsx","../src/components/HsvColorInput.tsx","../src/components/HsvColorPicker.tsx","../src/components/HsvStringColorInput.tsx","../src/components/HsvStringColorPicker.tsx","../src/components/RgbaColorInput.tsx","../src/components/RgbaColorPicker.tsx","../src/components/RgbaStringColorInput.tsx","../src/components/RgbaStringColorPicker.tsx","../src/components/RgbColorInput.tsx","../src/components/RgbColorPicker.tsx","../src/components/RgbStringColorInput.tsx","../src/components/RgbStringColorPicker.tsx"],"sourcesContent":["import { useRef } from \"react\";\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback<T>(handler?: (value: T) => void): (value: T) => void {\n  const callbackRef = useRef(handler);\n  const fn = useRef((value: T) => {\n    callbackRef.current && callbackRef.current(value);\n  });\n  callbackRef.current = handler;\n\n  return fn.current;\n}\n","// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n  return number > max ? max : number < min ? min : number;\n};\n","import React, { useRef, useMemo, useEffect } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { clamp } from \"../../utils/clamp\";\n\nexport interface Interaction {\n  left: number;\n  top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => \"touches\" in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n  for (let i = 0; i < touches.length; i++) {\n    if (touches[i].identifier === touchId) return touches[i];\n  }\n  return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n  return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n  node: HTMLDivElement,\n  event: MouseEvent | TouchEvent,\n  touchId: null | number\n): Interaction => {\n  const rect = node.getBoundingClientRect();\n\n  // Get user's pointer position from `touches` array if it's a `TouchEvent`\n  const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n  return {\n    left: clamp((pointer.pageX - (rect.left + getParentWindow(node).pageXOffset)) / rect.width),\n    top: clamp((pointer.pageY - (rect.top + getParentWindow(node).pageYOffset)) / rect.height),\n  };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n  !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n  return hasTouch && !isTouch(event);\n};\n\ninterface Props {\n  onMove: (interaction: Interaction) => void;\n  onKey: (offset: Interaction) => void;\n  children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, ...rest }: Props) => {\n  const container = useRef<HTMLDivElement>(null);\n  const onMoveCallback = useEventCallback<Interaction>(onMove);\n  const onKeyCallback = useEventCallback<Interaction>(onKey);\n  const touchId = useRef<null | number>(null);\n  const hasTouch = useRef(false);\n\n  const [handleMoveStart, handleKeyDown, toggleDocumentEvents] = useMemo(() => {\n    const handleMoveStart = ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\n      const el = container.current;\n      if (!el) return;\n\n      // Prevent text selection\n      preventDefaultMove(nativeEvent);\n\n      if (isInvalid(nativeEvent, hasTouch.current) || !el) return;\n\n      if (isTouch(nativeEvent)) {\n        hasTouch.current = true;\n        const changedTouches = nativeEvent.changedTouches || [];\n        if (changedTouches.length) touchId.current = changedTouches[0].identifier;\n      }\n\n      el.focus();\n      onMoveCallback(getRelativePosition(el, nativeEvent, touchId.current));\n      toggleDocumentEvents(true);\n    };\n\n    const handleMove = (event: MouseEvent | TouchEvent) => {\n      // Prevent text selection\n      preventDefaultMove(event);\n\n      // If user moves the pointer outside of the window or iframe bounds and release it there,\n      // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n      // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n      // and `event.touches`. It allows us to detect that the user is just moving his pointer\n      // without pressing it down\n      const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n      if (isDown && container.current) {\n        onMoveCallback(getRelativePosition(container.current, event, touchId.current));\n      } else {\n        toggleDocumentEvents(false);\n      }\n    };\n\n    const handleMoveEnd = () => toggleDocumentEvents(false);\n\n    const handleKeyDown = (event: React.KeyboardEvent) => {\n      const keyCode = event.which || event.keyCode;\n\n      // Ignore all keys except arrow ones\n      if (keyCode < 37 || keyCode > 40) return;\n      // Do not scroll page by arrow keys when document is focused on the element\n      event.preventDefault();\n      // Send relative offset to the parent component.\n      // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n      // to reduce the size of the library\n      onKeyCallback({\n        left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n        top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n      });\n    };\n\n    function toggleDocumentEvents(state?: boolean) {\n      const touch = hasTouch.current;\n      const el = container.current;\n      const parentWindow = getParentWindow(el);\n\n      // Add or remove additional pointer event listeners\n      const toggleEvent = state ? parentWindow.addEventListener : parentWindow.removeEventListener;\n      toggleEvent(touch ? \"touchmove\" : \"mousemove\", handleMove);\n      toggleEvent(touch ? \"touchend\" : \"mouseup\", handleMoveEnd);\n    }\n\n    return [handleMoveStart, handleKeyDown, toggleDocumentEvents];\n  }, [onKeyCallback, onMoveCallback]);\n\n  // Remove window event listeners before unmounting\n  useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n  return (\n    <div\n      {...rest}\n      onTouchStart={handleMoveStart}\n      onMouseDown={handleMoveStart}\n      className=\"react-colorful__interactive\"\n      ref={container}\n      onKeyDown={handleKeyDown}\n      tabIndex={0}\n      role=\"slider\"\n    />\n  );\n};\n\nexport const Interactive = React.memo(InteractiveBase);\n","export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(\" \");\n","import React from \"react\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props {\n  className?: string;\n  top?: number;\n  left: number;\n  color: string;\n}\n\nexport const Pointer = ({ className, color, left, top = 0.5 }: Props): JSX.Element => {\n  const nodeClassName = formatClassName([\"react-colorful__pointer\", className]);\n\n  const style = {\n    top: `${top * 100}%`,\n    left: `${left * 100}%`,\n  };\n\n  return (\n    <div className={nodeClassName} style={style}>\n      <div className=\"react-colorful__pointer-fill\" style={{ backgroundColor: color }} />\n    </div>\n  );\n};\n","export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n  return Math.round(base * number) / base;\n};\n","import { round } from \"./round\";\nimport { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from \"../types\";\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record<string, number> = {\n  grad: 360 / 400,\n  turn: 360,\n  rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n  if (hex[0] === \"#\") hex = hex.substring(1);\n\n  if (hex.length < 6) {\n    return {\n      r: parseInt(hex[0] + hex[0], 16),\n      g: parseInt(hex[1] + hex[1], 16),\n      b: parseInt(hex[2] + hex[2], 16),\n      a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1,\n    };\n  }\n\n  return {\n    r: parseInt(hex.substring(0, 2), 16),\n    g: parseInt(hex.substring(2, 4), 16),\n    b: parseInt(hex.substring(4, 6), 16),\n    a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1,\n  };\n};\n\nexport const parseHue = (value: string, unit = \"deg\"): number => {\n  return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n  const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(hslString);\n\n  if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n  return hslaToHsva({\n    h: parseHue(match[1], match[2]),\n    s: Number(match[3]),\n    l: Number(match[4]),\n    a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n  });\n};\n\nexport const hslaStringToHsla = (hslaString: string): HslaColor => {\n  const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(hslaString);\n\n  if (!match) return { h: 0, s: 0, l: 0, a: 1 };\n\n  return {\n    h: parseHue(match[1], match[2]),\n    s: Number(match[3]),\n    l: Number(match[4]),\n    a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n  };\n};\n\nexport const hslaToHslaString = (hsla: HslaColor): string => {\n  const { h, s, l, a } = hsla;\n  return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hslToHslString = (hsl: HslColor): string => {\n  const { h, s, l } = hsl;\n  return `hsla(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslStringToHsl = hslaStringToHsla;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n  s *= (l < 50 ? l : 100 - l) / 100;\n\n  return {\n    h: h,\n    s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n    v: l + s,\n    a,\n  };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n  const hh = ((200 - s) * v) / 100;\n\n  return {\n    h: round(h),\n    s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n    l: round(hh / 2),\n    a: round(a, 2),\n  };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n  const { h, s, l } = hsvaToHsla(hsva);\n  return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n  const { h, s, v } = roundHsva(hsva);\n  return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n  const { h, s, v, a } = roundHsva(hsva);\n  return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n  const { h, s, l, a } = hsvaToHsla(hsva);\n  return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n  h = (h / 360) * 6;\n  s = s / 100;\n  v = v / 100;\n\n  const hh = Math.floor(h),\n    b = v * (1 - s),\n    c = v * (1 - (h - hh) * s),\n    d = v * (1 - (1 - h + hh) * s),\n    module = hh % 6;\n\n  return {\n    r: round([v, c, b, b, d, v][module] * 255),\n    g: round([d, v, v, c, b, b][module] * 255),\n    b: round([b, b, d, v, v, c][module] * 255),\n    a: round(a, 2),\n  };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n  const { r, g, b } = hsvaToRgba(hsva);\n  return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n  const { r, g, b, a } = hsvaToRgba(hsva);\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n  const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(hsvString);\n\n  if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n  return roundHsva({\n    h: parseHue(match[1], match[2]),\n    s: Number(match[3]),\n    v: Number(match[4]),\n    a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n  });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const hsvStringToHsv = (hsvString: string): HsvColor => {\n  const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(hsvString);\n\n  if (!match) return { h: 0, s: 0, v: 0 };\n\n  return roundHsv({\n    h: parseHue(match[1], match[2]),\n    s: Number(match[3]),\n    v: Number(match[4])\n  });\n};\n\nexport const hsvToHsvString = (hsv: HsvColor): string => {\n  const { h, s, v } = roundHsv(hsv);\n  return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n  const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(rgbaString);\n\n  if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n  return rgbaToHsva({\n    r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n    g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n    b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n    a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n  });\n};\n\nexport const rgbaStringToRgba = (rgbaString: string): RgbaColor => {\n  const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(rgbaString);\n\n  if (!match) return { r: 0, g: 0, b: 0, a: 1 };\n\n  return {\n    r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n    g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n    b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n    a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n  };\n};\n\nexport const rgbaToRgbaString = (rgba: RgbaColor): string => {\n  const { r, g, b, a } = rgba;\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nexport const rgbStringToRgb = (rgbString: string): RgbColor => {\n  const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n  const match = matcher.exec(rgbString);\n\n  if (!match) return { r: 0, g: 0, b: 0 };\n\n  return {\n    r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n    g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n    b: Number(match[5]) / (match[6] ? 100 / 255 : 1)\n  };\n};\n\nexport const rgbToRgbString = (rgb: RgbColor): string => {\n  const { r, g, b } = rgb;\n  return `rgb(${r}, ${g}, ${b})`;\n};\n\nconst format = (number: number) => {\n  const hex = number.toString(16);\n  return hex.length < 2 ? \"0\" + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => {\n  const alphaHex = a < 1 ? format(round(a * 255)) : \"\";\n  return \"#\" + format(r) + format(g) + format(b) + alphaHex;\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n  const max = Math.max(r, g, b);\n  const delta = max - Math.min(r, g, b);\n\n  // prettier-ignore\n  const hh = delta\n    ? max === r\n      ? (g - b) / delta\n      : max === g\n        ? 2 + (b - r) / delta\n        : 4 + (r - g) / delta\n    : 0;\n\n  return {\n    h: round(60 * (hh < 0 ? hh + 6 : hh)),\n    s: round(max ? (delta / max) * 100 : 0),\n    v: round((max / 255) * 100),\n    a,\n  };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n  h: round(hsva.h),\n  s: round(hsva.s),\n  v: round(hsva.v),\n  a: round(hsva.a, 2),\n});\n\nexport const roundHsv = (hsva: HsvColor): HsvColor => ({\n  h: round(hsva.h),\n  s: round(hsva.s),\n  v: round(hsva.v)\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n  const { h, s, v } = roundHsva(hsva);\n  return { h, s, v };\n};\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n  className?: string;\n  hue: number;\n  onChange: (newHue: { h: number }) => void;\n}\n\nconst HueBase = ({ className, hue, onChange }: Props) => {\n  const handleMove = (interaction: Interaction) => {\n    onChange({ h: 360 * interaction.left });\n  };\n\n  const handleKey = (offset: Interaction) => {\n    // Hue measured in degrees of the color circle ranging from 0 to 360\n    onChange({\n      h: clamp(hue + offset.left * 360, 0, 360),\n    });\n  };\n\n  const nodeClassName = formatClassName([\"react-colorful__hue\", className]);\n\n  return (\n    <div className={nodeClassName}>\n      <Interactive\n        onMove={handleMove}\n        onKey={handleKey}\n        aria-label=\"Hue\"\n        aria-valuenow={round(hue)}\n        aria-valuemax=\"360\"\n        aria-valuemin=\"0\"\n      >\n        <Pointer\n          className=\"react-colorful__hue-pointer\"\n          left={hue / 360}\n          color={hsvaToHslString({ h: hue, s: 100, v: 100, a: 1 })}\n        />\n      </Interactive>\n    </div>\n  );\n};\n\nexport const Hue = React.memo(HueBase);\n","import React from \"react\";\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\nimport { HsvaColor } from \"../../types\";\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n  hsva: HsvaColor;\n  onChange: (newColor: { s: number; v: number }) => void;\n}\n\nconst SaturationBase = ({ hsva, onChange }: Props) => {\n  const handleMove = (interaction: Interaction) => {\n    onChange({\n      s: interaction.left * 100,\n      v: 100 - interaction.top * 100,\n    });\n  };\n\n  const handleKey = (offset: Interaction) => {\n    // Saturation and brightness always fit into [0, 100] range\n    onChange({\n      s: clamp(hsva.s + offset.left * 100, 0, 100),\n      v: clamp(hsva.v - offset.top * 100, 0, 100),\n    });\n  };\n\n  const containerStyle = {\n    backgroundColor: hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 }),\n  };\n\n  return (\n    <div className=\"react-colorful__saturation\" style={containerStyle}>\n      <Interactive\n        onMove={handleMove}\n        onKey={handleKey}\n        aria-label=\"Color\"\n        aria-valuetext={`Saturation ${round(hsva.s)}%, Brightness ${round(hsva.v)}%`}\n      >\n        <Pointer\n          className=\"react-colorful__saturation-pointer\"\n          top={1 - hsva.v / 100}\n          left={hsva.s / 100}\n          color={hsvaToHslString(hsva)}\n        />\n      </Interactive>\n    </div>\n  );\n};\n\nexport const Saturation = React.memo(SaturationBase);\n","import { hexToRgba } from \"./convert\";\nimport { ObjectColor } from \"../types\";\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n  if (first === second) return true;\n\n  for (const prop in first) {\n    // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n    // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n    // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n    // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n    // there is or not), and then as a type TS can iterate over.\n    if (\n      ((first as unknown) as Record<string, number>)[prop] !==\n      ((second as unknown) as Record<string, number>)[prop]\n    )\n      return false;\n  }\n\n  return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n  return first.replace(/\\s/g, \"\") === second.replace(/\\s/g, \"\");\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n  if (first.toLowerCase() === second.toLowerCase()) return true;\n\n  // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n  return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { ColorModel, AnyColor, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport function useColorManipulation<T extends AnyColor>(\n  colorModel: ColorModel<T>,\n  color: T,\n  onChange?: (color: T) => void\n): [HsvaColor, (color: Partial<HsvaColor>) => void] {\n  // Save onChange callback in the ref for avoiding \"useCallback hell\"\n  const onChangeCallback = useEventCallback<T>(onChange);\n\n  // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n  // all internal calculations are based on HSVA model\n  const [hsva, updateHsva] = useState<HsvaColor>(() => colorModel.toHsva(color));\n\n  // By using this ref we're able to prevent extra updates\n  // and the effects recursion during the color conversion\n  const cache = useRef({ color, hsva });\n\n  // Update local HSVA-value if `color` property value is changed,\n  // but only if that's not the same color that we just sent to the parent\n  useEffect(() => {\n    if (!colorModel.equal(color, cache.current.color)) {\n      const newHsva = colorModel.toHsva(color);\n      cache.current = { hsva: newHsva, color };\n      updateHsva(newHsva);\n    }\n  }, [color, colorModel]);\n\n  // Trigger `onChange` callback only if an updated color is different from cached one;\n  // save the new color to the ref to prevent unnecessary updates\n  useEffect(() => {\n    let newColor;\n    if (\n      !equalColorObjects(hsva, cache.current.hsva) &&\n      !colorModel.equal((newColor = colorModel.fromHsva(hsva)), cache.current.color)\n    ) {\n      cache.current = { hsva, color: newColor };\n      onChangeCallback(newColor);\n    }\n  }, [hsva, colorModel, onChangeCallback]);\n\n  // Merge the current HSVA color object with updated params.\n  // For example, when a child component sends `h` or `s` only\n  const handleChange = useCallback((params: Partial<HsvaColor>) => {\n    updateHsva((current) => Object.assign({}, current, params));\n  }, []);\n\n  return [hsva, handleChange];\n}\n","import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport const useIsomorphicLayoutEffect =\n  typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n  if (nonce) return nonce;\n  if (typeof __webpack_nonce__ !== \"undefined\") return __webpack_nonce__;\n  return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n  nonce = hash;\n};\n","import { RefObject } from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { getNonce } from \"../utils/nonce\";\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../css/styles.css\";\n\nconst styleElementMap: Map<Document, HTMLStyleElement> = new Map();\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (nodeRef: RefObject<HTMLDivElement>): void => {\n  useIsomorphicLayoutEffect(() => {\n    const parentDocument = nodeRef.current ? nodeRef.current.ownerDocument : document;\n\n    if (typeof parentDocument !== \"undefined\" && !styleElementMap.has(parentDocument)) {\n      const styleElement = parentDocument.createElement(\"style\");\n      styleElement.innerHTML = styles;\n      styleElementMap.set(parentDocument, styleElement);\n\n      // Conform to CSP rules by setting `nonce` attribute to the inline styles\n      const nonce = getNonce();\n      if (nonce) styleElement.setAttribute(\"nonce\", nonce);\n\n      parentDocument.head.appendChild(styleElement);\n    }\n  }, []);\n};\n","import React, { useState, useEffect } from \"react\";\n\nimport { HsvaColor } from \"../../types\";\nimport chroma from \"chroma-js\";\n\ninterface ContrastWrapperProps {\n  foregroundColor: HsvaColor;\n  backgroundColor: HsvaColor;\n  children: React.ReactNode;\n}\n\nexport const ContrastWrapper = ({ children, foregroundColor, backgroundColor }: ContrastWrapperProps): JSX.Element => {\n  const [contrastRatio, setContrastRatio] = useState<number>(0)\n  const [pass, setPass] = useState<boolean>(false)\n\n  const hsvaToChromaColor = (hsva: HsvaColor): chroma.Color => {\n    const { h, s, v, a } = hsva\n    return chroma.hsv(h, s / 100, v / 100).alpha(a)\n  }\n\n  const blendColors = (fg: chroma.Color, bg: chroma.Color): chroma.Color => {\n    const alpha = fg.alpha()\n    const fgRgb = fg.rgb()\n    const bgRgb = bg.rgb()\n    const blendedRgb = fgRgb.map((channel, i) => {\n      return channel * alpha + bgRgb[i] * (1 - alpha)\n    })\n    return chroma(blendedRgb)\n  }\n\n  const getContrastCompliance = (ratio: number): { level: string; pass: boolean } => {\n    if (ratio >= 7) return { level: 'AAA (Highest)', pass: true }\n    if (ratio >= 4.5) return { level: 'AA (Good)', pass: true }\n    // if (ratio >= 3) return { level: 'AA (Large Text)', pass: true }\n    return { level: 'Fail', pass: false }\n  }\n\n  useEffect(() => {\n    const foregroundColorChroma = hsvaToChromaColor(foregroundColor)\n    const backgroundColorChroma = hsvaToChromaColor(backgroundColor)\n\n    const blendedForeground = blendColors(foregroundColorChroma, backgroundColorChroma)\n    const ratio = chroma.contrast(blendedForeground, backgroundColorChroma)\n    const { level, pass } = getContrastCompliance(ratio)\n\n    setContrastRatio(ratio)\n    setPass(pass)\n\n    // Debugging log\n    console.log(\"updated version\")\n    console.log('Foreground HSVA:', foregroundColor)\n    console.log('Background HSVA:', backgroundColor)\n    console.log('Contrast Ratio:', ratio)\n    console.log('Compliance Level:', level)\n    console.log('Pass:', pass)\n  }, [foregroundColor, backgroundColor])\n\n  return (\n    <div className=\"contrast-color-picker\">\n      <div className=\"color-picker-container\">\n        {children}\n      </div>\n\n      <div className=\"contrast-analysis\">\n        <div className={`contrast-analysis-section ${pass ? 'result-pass' : 'result-fail'}`}>\n          <span>Contrast Ratio</span>\n          <p>{pass ? 'Pass' : 'Fail'}</p>\n        </div>\n      </div>\n    </div>\n  )\n}","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\nimport { ContrastWrapper } from \"./ContrastWrapper\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n  colorModel: ColorModel<T>;\n  children?: React.ReactNode;\n}\n\nexport const ColorPicker = <T extends AnyColor>({\n  className,\n  colorModel,\n  color = colorModel.defaultColor,\n  backgroundColor = colorModel.defaultBackgroundColor,\n  children,\n  onChange,\n  ...rest\n}: Props<T>): JSX.Element => {\n  const nodeRef = useRef<HTMLDivElement>(null);\n  useStyleSheet(nodeRef);\n\n  const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n  const [backgroundHsva, updateBackgroundHsva] = useColorManipulation<T>(colorModel, backgroundColor, onChange);\n\n  const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n  return (\n    <ContrastWrapper foregroundColor={hsva} backgroundColor={backgroundHsva}>\n      <div {...rest} ref={nodeRef} className={nodeClassName}>\n        <Saturation hsva={hsva} onChange={updateHsva} />\n        <Hue hue={hsva.h} onChange={updateHsva} className=\"react-colorful__last-control\" />\n      </div>\n      { children }\n    </ContrastWrapper>\n  );\n};\n","const matcher = /^#?([0-9A-F]{3,8})$/i;\n\nexport const validHex = (value: string, alpha?: boolean): boolean => {\n  const match = matcher.exec(value);\n  const length = match ? match[1].length : 0;\n\n  return (\n    length === 3 || // '#rgb' format\n    length === 6 || // '#rrggbb' format\n    (!!alpha && length === 4) || // '#rgba' format\n    (!!alpha && length === 8) // '#rrggbbaa' format\n  );\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { ColorInputBaseProps } from \"../../types\";\n\ninterface Props extends ColorInputBaseProps {\n  /** Blocks typing invalid characters and limits string length */\n  escape: (value: string) => string;\n  /** Checks that value is valid color string */\n  validate: (value: string) => boolean;\n  /** Processes value before displaying it in the input */\n  format?: (value: string) => string;\n  /** Processes value before sending it in `onChange` */\n  process?: (value: string) => string;\n}\n\nexport const ColorInput = (props: Props): JSX.Element => {\n  const { color = \"\", onChange, onBlur, escape, validate, format, process, ...rest } = props;\n  const [value, setValue] = useState(() => escape(color));\n  const onChangeCallback = useEventCallback<string>(onChange);\n  const onBlurCallback = useEventCallback<React.FocusEvent<HTMLInputElement>>(onBlur);\n\n  // Trigger `onChange` handler only if the input value is a valid color\n  const handleChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      const inputValue = escape(e.target.value);\n      setValue(inputValue);\n      if (validate(inputValue)) onChangeCallback(process ? process(inputValue) : inputValue);\n    },\n    [escape, process, validate, onChangeCallback]\n  );\n\n  // Take the color from props if the last typed color (in local state) is not valid\n  const handleBlur = useCallback(\n    (e: React.FocusEvent<HTMLInputElement>) => {\n      if (!validate(e.target.value)) setValue(escape(color));\n      onBlurCallback(e);\n    },\n    [color, escape, validate, onBlurCallback]\n  );\n\n  // Update the local state when `color` property value is changed\n  useEffect(() => {\n    setValue(escape(color));\n  }, [color, escape]);\n\n  return (\n    <input\n      {...rest}\n      className=\"color-input\"\n      value={format ? format(value) : value}\n      spellCheck=\"false\" // the element should not be checked for spelling errors\n      onChange={handleChange}\n      onBlur={handleBlur}\n    />\n  );\n};\n","import React, { useCallback } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\n\nimport { validHex } from \"../utils/validate\";\nimport { ColorInput } from \"./common/ColorInput\";\n\ninterface HexColorInputProps extends ColorInputBaseProps {\n  /** Enables `#` prefix displaying */\n  prefixed?: boolean;\n  /** Allows `#rgba` and `#rrggbbaa` color formats */\n  alpha?: boolean;\n  label: string;\n}\n\n/** Adds \"#\" symbol to the beginning of the string */\nconst prefix = (value: string) => \"#\" + value;\n\nexport const HexColorInput = (props: HexColorInputProps): JSX.Element => {\n  const { prefixed, alpha, ...rest } = props;\n\n  /** Escapes all non-hexadecimal characters including \"#\" */\n  const escape = useCallback(\n    (value: string) => value.replace(/([^0-9A-F]+)/gi, \"\").substring(0, alpha ? 8 : 6),\n    [alpha]\n  );\n\n  /** Validates hexadecimal strings */\n  const validate = useCallback((value: string) => validHex(value, alpha), [alpha]);\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={props.label}>{props.label}</label>\n      <ColorInput\n        {...rest}\n        id={props.label}\n        escape={escape}\n        format={prefixed ? prefix : undefined}\n        process={prefix}\n        validate={validate}\n      />\n    </div>\n    \n  );\n};\n","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { HexColorInput } from \"./HexColorInput\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"000\",\n  defaultBackgroundColor: \"fff\",\n  toHsva: hexToHsva,\n  fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n  equal: equalHex,\n};\n\nexport const HexColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    <HexColorInput {...props} label=\"Hex\" prefixed />\n  </ColorPicker>\n);\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslaString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\nimport { HsvaColor } from \"../../types\";\n\ninterface Props {\n  className?: string;\n  hsva: HsvaColor;\n  onChange: (newAlpha: { a: number }) => void;\n}\n\nexport const Alpha = ({ className, hsva, onChange }: Props): JSX.Element => {\n  const handleMove = (interaction: Interaction) => {\n    onChange({ a: interaction.left });\n  };\n\n  const handleKey = (offset: Interaction) => {\n    // Alpha always fit into [0, 1] range\n    onChange({ a: clamp(hsva.a + offset.left) });\n  };\n\n  // We use `Object.assign` instead of the spread operator\n  // to prevent adding the polyfill (about 150 bytes gzipped)\n  const colorFrom = hsvaToHslaString(Object.assign({}, hsva, { a: 0 }));\n  const colorTo = hsvaToHslaString(Object.assign({}, hsva, { a: 1 }));\n\n  const gradientStyle = {\n    backgroundImage: `linear-gradient(90deg, ${colorFrom}, ${colorTo})`,\n  };\n\n  const nodeClassName = formatClassName([\"react-colorful__alpha\", className]);\n  const ariaValue = round(hsva.a * 100);\n\n  return (\n    <div className={nodeClassName}>\n      <div className=\"react-colorful__alpha-gradient\" style={gradientStyle} />\n      <Interactive\n        onMove={handleMove}\n        onKey={handleKey}\n        aria-label=\"Alpha\"\n        aria-valuetext={`${ariaValue}%`}\n        aria-valuenow={ariaValue}\n        aria-valuemin=\"0\"\n        aria-valuemax=\"100\"\n      >\n        <Pointer\n          className=\"react-colorful__alpha-pointer\"\n          left={hsva.a}\n          color={hsvaToHslaString(hsva)}\n        />\n      </Interactive>\n    </div>\n  );\n};\n","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\nimport { Alpha } from \"./Alpha\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\nimport { ContrastWrapper } from \"./ContrastWrapper\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n  colorModel: ColorModel<T>;\n  children?: React.ReactNode;\n}\n\nexport const AlphaColorPicker = <T extends AnyColor>({\n  className,\n  colorModel,\n  color = colorModel.defaultColor,\n  backgroundColor = colorModel.defaultBackgroundColor,\n  children,\n  onChange,\n  ...rest\n}: Props<T>): JSX.Element => {\n  const nodeRef = useRef<HTMLDivElement>(null);\n  useStyleSheet(nodeRef);\n\n  const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n  const [backgroundHsva, updateBackgroundHsva] = useColorManipulation<T>(colorModel, backgroundColor, onChange);\n\n  const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n  return (\n    <ContrastWrapper foregroundColor={hsva} backgroundColor={backgroundHsva}>\n      <div {...rest} ref={nodeRef} className={nodeClassName}>\n        <Saturation hsva={hsva} onChange={updateHsva} />\n        <Hue hue={hsva.h} onChange={updateHsva} />\n        <Alpha hsva={hsva} onChange={updateHsva} className=\"react-colorful__last-control\" />\n      </div>\n      { children }\n    </ContrastWrapper>\n  );\n};\n","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { HexColorInput } from \"./HexColorInput\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"0001\",\n  defaultBackgroundColor: \"0000\",\n  toHsva: hexToHsva,\n  fromHsva: hsvaToHex,\n  equal: equalHex,\n};\n\nexport const HexAlphaColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n  <AlphaColorPicker {...props} colorModel={colorModel}>\n    <HexColorInput {...props} label=\"Hex-Alpha\" prefixed alpha />\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { HslaColor } from \"../types\";\nimport { ObjectColorInputBaseProps } from \"../types\";\n\ninterface HslaColorInputProps extends ObjectColorInputBaseProps<HslaColor> {\n  label?: string;\n}\n\nexport const HslaColorInput = ({color, onChange, label=\"HSLA\"}: HslaColorInputProps): JSX.Element => {\n  const [inputValues, setInputValues] = useState({\n    h: color.h.toString(),\n    s: color.s.toString(),\n    l: color.l.toString(),\n    a: color.a.toString(),\n  })\n\n  useEffect(() => {\n    setInputValues(prev => {\n      if (\n        prev.h === color.h.toString() &&\n        prev.s === color.s.toString() &&\n        prev.l === color.l.toString() &&\n        prev.a === color.a.toString()\n      ) {\n        return prev\n      }\n      return {\n        h: color.h.toString(),\n        s: color.s.toString(),\n        l: color.l.toString(),\n        a: color.a.toString(),\n      }\n    })\n  }, [color])\n\n  const handleInputChange = (field: keyof HslaColor) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValues(prevValues => ({\n      ...prevValues,\n      [field]: value,\n    }))\n  }\n\n  const handleInputBlur = (field: keyof HslaColor) => () => {\n    const value = inputValues[field]\n    const parsedValue = parseFloat(value)\n    if (value === '' || isNaN(parsedValue)) {\n      setInputValues(prevValues => ({\n        ...prevValues,\n        [field]: color[field].toString(),\n      }))\n      return\n    }\n\n    let min = 0\n    let max = 100\n    if (field === 'h') max = 360\n    if (field === 'a') max = 1\n\n    const clampedValue = Math.max(min, Math.min(max, parsedValue))\n    onChange({ ...color, [field]: clampedValue })\n  }\n\n  const handleKeyDown = (field: keyof HslaColor) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      event.preventDefault()\n      handleInputBlur(field)()\n    }\n  }\n\n  return (\n    <div className=\"input-fields\">\n      <label id={`${label}-group-label`} htmlFor={`${label}-hue-input`}>{label}</label>\n      <div className=\"input-fields-container\" role=\"group\" aria-labelledby={`${label}-group-label`}>\n        <input\n          id={`${label}-hue-input`}\n          type=\"text\"\n          value={inputValues.h}\n          onChange={handleInputChange('h')}\n          onBlur={handleInputBlur('h')}\n          onKeyDown={handleKeyDown('h')}\n          aria-label=\"Hue\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.s}\n          onChange={handleInputChange('s')}\n          onBlur={handleInputBlur('s')}\n          onKeyDown={handleKeyDown('s')}\n          aria-label=\"Saturation\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.l}\n          onChange={handleInputChange('l')}\n          onBlur={handleInputBlur('l')}\n          onKeyDown={handleKeyDown('l')}\n          aria-label=\"Lightness\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.a}\n          onChange={handleInputChange('a')}\n          onBlur={handleInputBlur('a')}\n          onKeyDown={handleKeyDown('a')}\n          aria-label=\"Alpha\"\n        />\n      </div>\n    </div>\n  )\n}","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HslaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { hslaToHsva, hsvaToHsla } from \"../utils/convert\";\nimport { HslaColorInput } from \"./HslaColorInput\";\n\nconst colorModel: ColorModel<HslaColor> = {\n  defaultColor: { h: 0, s: 0, l: 0, a: 1 },\n  defaultBackgroundColor: { h: 0, s: 0, l: 100, a: 1 },\n  toHsva: hslaToHsva,\n  fromHsva: hsvaToHsla,\n  equal: equalColorObjects,\n};\n\nexport const HslaColorPicker = (props: Partial<ColorPickerBaseProps<HslaColor>>): JSX.Element => (\n  <AlphaColorPicker {...props} colorModel={colorModel}>\n    {\n      (props.color && props.onChange) \n      &&\n      <HslaColorInput color={props.color} onChange={props.onChange} />\n    }\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\nimport { hslaStringToHsla, hslaToHslaString } from \"../utils/convert\";\n\ninterface HslaColorInputProps extends ColorInputBaseProps {\n  label?: string;\n}\n\nexport const HslaStringColorInput = ({color=\"\", onChange, label}: HslaColorInputProps): JSX.Element => {\n  const [inputValue, setInputValue] = useState<string>(color)\n\n  useEffect(() => {\n    setInputValue(color)\n  }, [color])\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValue(value)\n  }\n\n  const handleInputBlur = () => {\n    const parsed = hslaStringToHsla(inputValue)\n    setInputValue(hslaToHslaString(parsed))\n    if (onChange) {\n      onChange(hslaToHslaString(parsed))\n    }\n  }\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault()\n      const parsed = hslaStringToHsla(inputValue)\n      setInputValue(hslaToHslaString(parsed))\n      if (onChange) {\n        onChange(hslaToHslaString(parsed))\n      }\n    }\n  }\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={label}>{label || 'HSLA'}</label>\n      <input\n        className=\"color-input\"\n        id={label}  \n        type=\"text\"\n        value={inputValue}\n        onChange={handleInputChange}\n        onBlur={handleInputBlur}\n        onKeyDown={handleKeyDown}\n        aria-label=\"HSLA Color\"\n      />\n    </div>\n  )\n}","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hslaStringToHsva, hsvaToHslaString } from \"../utils/convert\";\nimport { HslaStringColorInput } from \"./HslaStringColorInput\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsla(0, 0%, 0%, 1)\",\n  defaultBackgroundColor: \"hsla(0, 0%, 100%, 1)\",\n  toHsva: hslaStringToHsva,\n  fromHsva: hsvaToHslaString,\n  equal: equalColorString,\n};\n\nexport const HslaStringColorPicker = (\n  props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => ( \n  <AlphaColorPicker {...props} colorModel={colorModel}>\n      <HslaStringColorInput {...props} label=\"HSLA\"/>\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { HslColor } from \"../types\";\nimport { ObjectColorInputBaseProps } from \"../types\";\n\ninterface HslColorInputProps extends ObjectColorInputBaseProps<HslColor> {\n  label?: string;\n}\n\nexport const HslColorInput = ({color, onChange, label=\"HSL\"}: HslColorInputProps): JSX.Element => {\n  const [inputValues, setInputValues] = useState({\n    h: color.h.toString(),\n    s: color.s.toString(),\n    l: color.l.toString()\n  })\n\n  useEffect(() => {\n    setInputValues(prev => {\n      if (\n        prev.h === color.h.toString() &&\n        prev.s === color.s.toString() &&\n        prev.l === color.l.toString()\n      ) {\n        return prev\n      }\n      return {\n        h: color.h.toString(),\n        s: color.s.toString(),\n        l: color.l.toString()\n      }\n    })\n  }, [color])\n\n  const handleInputChange = (field: keyof HslColor) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValues(prevValues => ({\n      ...prevValues,\n      [field]: value,\n    }))\n  }\n\n  const handleInputBlur = (field: keyof HslColor) => () => {\n    const value = inputValues[field]\n    const parsedValue = parseFloat(value)\n    if (value === '' || isNaN(parsedValue)) {\n      setInputValues(prevValues => ({\n        ...prevValues,\n        [field]: color[field].toString(),\n      }))\n      return\n    }\n\n    let min = 0\n    let max = 100\n    if (field === 'h') max = 360\n\n    const clampedValue = Math.max(min, Math.min(max, parsedValue))\n    onChange({ ...color, [field]: clampedValue })\n  }\n\n  const handleKeyDown = (field: keyof HslColor) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      event.preventDefault()\n      handleInputBlur(field)()\n    }\n  }\n\n  return (\n    <div className=\"input-fields\">\n      <label id={`${label}-group-label`} htmlFor={`${label}-hue-input`}>{label}</label>\n      <div className=\"input-fields-container\" role=\"group\" aria-labelledby={`${label}-group-label`}>\n        <input\n          id={`${label}-hue-input`}\n          type=\"text\"\n          value={inputValues.h}\n          onChange={handleInputChange('h')}\n          onBlur={handleInputBlur('h')}\n          onKeyDown={handleKeyDown('h')}\n          aria-label=\"Hue\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.s}\n          onChange={handleInputChange('s')}\n          onBlur={handleInputBlur('s')}\n          onKeyDown={handleKeyDown('s')}\n          aria-label=\"Saturation\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.l}\n          onChange={handleInputChange('l')}\n          onBlur={handleInputBlur('l')}\n          onKeyDown={handleKeyDown('l')}\n          aria-label=\"Lightness\"\n        />\n      </div>\n    </div>\n  )\n}","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HslColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { hslaToHsva, hsvaToHsla, hslaToHsl } from \"../utils/convert\";\nimport { HslColorInput } from \"./HslColorInput\";\n\nconst colorModel: ColorModel<HslColor> = {\n  defaultColor: { h: 0, s: 0, l: 0 },\n  defaultBackgroundColor: { h: 0, s: 0, l: 100 },\n  toHsva: ({ h, s, l }) => hslaToHsva({ h, s, l, a: 1 }),\n  fromHsva: (hsva) => hslaToHsl(hsvaToHsla(hsva)),\n  equal: equalColorObjects,\n};\n\nexport const HslColorPicker = (props: Partial<ColorPickerBaseProps<HslColor>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    {\n      (props.color && props.onChange) \n      &&\n      <HslColorInput color={props.color} onChange={props.onChange} />\n    }\n  </ColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\nimport { hslStringToHsl, hslToHslString } from \"../utils/convert\";\n\ninterface HslColorInputProps extends ColorInputBaseProps {\n  label?: string;\n}\n\nexport const HslStringColorInput = ({color=\"\", onChange, label}: HslColorInputProps): JSX.Element => {\n  const [inputValue, setInputValue] = useState<string>(color)\n\n  useEffect(() => {\n    setInputValue(color)\n  }, [color])\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValue(value)\n  }\n\n  const handleInputBlur = () => {\n    const parsed = hslStringToHsl(inputValue)\n    setInputValue(hslToHslString(parsed))\n    if (onChange) {\n      onChange(hslToHslString(parsed))\n    }\n  }\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault()\n      const parsed = hslStringToHsl(inputValue)\n      setInputValue(hslToHslString(parsed))\n      if (onChange) {\n        onChange(hslToHslString(parsed))\n      }\n    }\n  }\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={label}>{label || 'HSL'}</label>\n      <input\n        className=\"color-input\"\n        id={label}  \n        type=\"text\"\n        value={inputValue}\n        onChange={handleInputChange}\n        onBlur={handleInputBlur}\n        onKeyDown={handleKeyDown}\n        aria-label=\"HSL Color\"\n      />\n    </div>\n  )\n}","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hslStringToHsva, hsvaToHslString } from \"../utils/convert\";\nimport { HslStringColorInput } from \"./HslStringColorInput\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsl(0, 0%, 0%)\",\n  defaultBackgroundColor: \"hsl(0, 0%, 100%)\",\n  toHsva: hslStringToHsva,\n  fromHsva: hsvaToHslString,\n  equal: equalColorString,\n};\n\nexport const HslStringColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    <HslStringColorInput {...props} label=\"HSL\" />\n  </ColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { HsvaColor } from \"../types\";\nimport { ObjectColorInputBaseProps } from \"../types\";\n\ninterface HsvaInputFieldsProps extends ObjectColorInputBaseProps<HsvaColor> {\n  label?: string;\n}\n\nexport const HsvaColorInput = ({color, onChange, label=\"HSVA\"}: HsvaInputFieldsProps): JSX.Element => {\n  const [inputValues, setInputValues] = useState({\n    h: color.h.toString(),\n    s: color.s.toString(),\n    v: color.v.toString(),\n    a: color.a.toString(),\n  })\n\n  useEffect(() => {\n    setInputValues(prev => {\n      if (\n        prev.h === color.h.toString() &&\n        prev.s === color.s.toString() &&\n        prev.v === color.v.toString() &&\n        prev.a === color.a.toString()\n      ) {\n        return prev\n      }\n      return {\n        h: color.h.toString(),\n        s: color.s.toString(),\n        v: color.v.toString(),\n        a: color.a.toString(),\n      }\n    })\n  }, [color])\n\n  const handleInputChange = (field: keyof HsvaColor) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValues(prevValues => ({\n      ...prevValues,\n      [field]: value,\n    }))\n  }\n\n  const handleInputBlur = (field: keyof HsvaColor) => () => {\n    const value = inputValues[field]\n    const parsedValue = parseFloat(value)\n    if (value === '' || isNaN(parsedValue)) {\n      setInputValues(prevValues => ({\n        ...prevValues,\n        [field]: color[field].toString(),\n      }))\n      return\n    }\n\n    let min = 0\n    let max = 100\n    if (field === 'h') max = 360\n    if (field === 'a') max = 1\n\n    const clampedValue = Math.max(min, Math.min(max, parsedValue))\n    onChange({ ...color, [field]: clampedValue })\n  }\n\n  const handleKeyDown = (field: keyof HsvaColor) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      event.preventDefault()\n      handleInputBlur(field)()\n    }\n  }\n\n  return (\n    <div className=\"input-fields\">\n      <label id={`${label}-group-label`} htmlFor={`${label}-hue-input`}>{label}</label>\n      <div className=\"input-fields-container\" role=\"group\" aria-labelledby={`${label}-group-label`}>\n        <input\n          id={`${label}-hue-input`}\n          type=\"text\"\n          value={inputValues.h}\n          onChange={handleInputChange('h')}\n          onBlur={handleInputBlur('h')}\n          onKeyDown={handleKeyDown('h')}\n          aria-label=\"Hue\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.s}\n          onChange={handleInputChange('s')}\n          onBlur={handleInputBlur('s')}\n          onKeyDown={handleKeyDown('s')}\n          aria-label=\"Saturation\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.v}\n          onChange={handleInputChange('v')}\n          onBlur={handleInputBlur('v')}\n          onKeyDown={handleKeyDown('v')}\n          aria-label=\"Value\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.a}\n          onChange={handleInputChange('a')}\n          onBlur={handleInputBlur('a')}\n          onKeyDown={handleKeyDown('a')}\n          aria-label=\"Alpha\"\n        />\n      </div>\n    </div>\n  )\n}","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { HsvaColorInput } from \"./HsvaColorInput\";\nimport { ColorModel, ColorPickerBaseProps, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { roundHsva } from \"../utils/convert\";\n\nconst colorModel: ColorModel<HsvaColor> = {\n  defaultColor: { h: 0, s: 0, v: 0, a: 1 },\n  defaultBackgroundColor: { h: 0, s: 0, v: 100, a: 1 },\n  toHsva: (hsva) => hsva,\n  fromHsva: roundHsva,\n  equal: equalColorObjects,\n};\n\nexport const HsvaColorPicker = (props: Partial<ColorPickerBaseProps<HsvaColor>>): JSX.Element => (\n  <AlphaColorPicker {...props} colorModel={colorModel}>\n    {\n      (props.color && props.onChange) \n      &&\n      <HsvaColorInput color={props.color} onChange={props.onChange} />\n    }\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\nimport { hsvaStringToHsva, hsvaToHsvaString } from \"../utils/convert\";\n\ninterface HsvaColorInputProps extends ColorInputBaseProps {\n  label?: string;\n}\n\nexport const HsvaStringColorInput = ({color=\"\", onChange, label}: HsvaColorInputProps): JSX.Element => {\n  const [inputValue, setInputValue] = useState<string>(color)\n\n  useEffect(() => {\n    setInputValue(color)\n  }, [color])\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValue(value)\n  }\n\n  const handleInputBlur = () => {\n    const parsed = hsvaStringToHsva(inputValue)\n    setInputValue(hsvaToHsvaString(parsed))\n    if (onChange) {\n      onChange(hsvaToHsvaString(parsed))\n    }\n  }\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault()\n      const parsed = hsvaStringToHsva(inputValue)\n      setInputValue(hsvaToHsvaString(parsed))\n      if (onChange) {\n        onChange(hsvaToHsvaString(parsed))\n      }\n    }\n  }\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={label}>{label || 'HSVA'}</label>\n      <input\n        className=\"color-input\"\n        id={label}  \n        type=\"text\"\n        value={inputValue}\n        onChange={handleInputChange}\n        onBlur={handleInputBlur}\n        onKeyDown={handleKeyDown}\n        aria-label=\"HSVA Color\"\n      />\n    </div>\n  )\n}","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hsvaStringToHsva, hsvaToHsvaString } from \"../utils/convert\";\nimport { HsvaStringColorInput } from \"./HsvaStringColorInput\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsva(0, 0%, 0%, 1)\",\n  defaultBackgroundColor: \"hsva(0, 0%, 100%, 1)\",\n  toHsva: hsvaStringToHsva,\n  fromHsva: hsvaToHsvaString,\n  equal: equalColorString,\n};\n\nexport const HsvaStringColorPicker = (\n  props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => (\n  <AlphaColorPicker {...props} colorModel={colorModel}>\n    <HsvaStringColorInput {...props} label=\"HSVA\" />\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { HsvColor } from \"../types\";\nimport { ObjectColorInputBaseProps } from \"../types\";\n\ninterface HsvInputFieldsProps extends ObjectColorInputBaseProps<HsvColor> {\n  label?: string;\n}\n\nexport const HsvColorInput = ({color, onChange, label=\"HSV\"}: HsvInputFieldsProps): JSX.Element => {\n  const [inputValues, setInputValues] = useState({\n    h: color.h.toString(),\n    s: color.s.toString(),\n    v: color.v.toString()\n  })\n\n  useEffect(() => {\n    setInputValues(prev => {\n      if (\n        prev.h === color.h.toString() &&\n        prev.s === color.s.toString() &&\n        prev.v === color.v.toString()\n      ) {\n        return prev\n      }\n      return {\n        h: color.h.toString(),\n        s: color.s.toString(),\n        v: color.v.toString()\n      }\n    })\n  }, [color])\n\n  const handleInputChange = (field: keyof HsvColor) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValues(prevValues => ({\n      ...prevValues,\n      [field]: value,\n    }))\n  }\n\n  const handleInputBlur = (field: keyof HsvColor) => () => {\n    const value = inputValues[field]\n    const parsedValue = parseFloat(value)\n    if (value === '' || isNaN(parsedValue)) {\n      setInputValues(prevValues => ({\n        ...prevValues,\n        [field]: color[field].toString(),\n      }))\n      return\n    }\n\n    let min = 0\n    let max = 100\n    if (field === 'h') max = 360\n\n    const clampedValue = Math.max(min, Math.min(max, parsedValue))\n    onChange({ ...color, [field]: clampedValue })\n  }\n\n  const handleKeyDown = (field: keyof HsvColor) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      event.preventDefault()\n      handleInputBlur(field)()\n    }\n  }\n\n  return (\n    <div className=\"input-fields\">\n      <label id={`${label}-group-label`} htmlFor={`${label}-hue-input`}>{label}</label>\n      <div className=\"input-fields-container\" role=\"group\" aria-labelledby={`${label}-group-label`}>\n        <input\n          id={`${label}-hue-input`}\n          type=\"text\"\n          value={inputValues.h}\n          onChange={handleInputChange('h')}\n          onBlur={handleInputBlur('h')}\n          onKeyDown={handleKeyDown('h')}\n          aria-label=\"Hue\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.s}\n          onChange={handleInputChange('s')}\n          onBlur={handleInputBlur('s')}\n          onKeyDown={handleKeyDown('s')}\n          aria-label=\"Saturation\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.v}\n          onChange={handleInputChange('v')}\n          onBlur={handleInputBlur('v')}\n          onKeyDown={handleKeyDown('v')}\n          aria-label=\"Value\"\n        />\n      </div>\n    </div>\n  )\n}","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, HsvColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { hsvaToHsv } from \"../utils/convert\";\nimport { HsvColorInput } from \"./HsvColorInput\";\n\nconst colorModel: ColorModel<HsvColor> = {\n  defaultColor: { h: 0, s: 0, v: 0 },\n  defaultBackgroundColor: { h: 0, s: 0, v: 100 },\n  toHsva: ({ h, s, v }) => ({ h, s, v, a: 1 }),\n  fromHsva: hsvaToHsv,\n  equal: equalColorObjects,\n};\n\nexport const HsvColorPicker = (props: Partial<ColorPickerBaseProps<HsvColor>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    {\n      (props.color && props.onChange) \n      &&\n      <HsvColorInput color={props.color} onChange={props.onChange} />\n    }\n  </ColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\nimport { hsvStringToHsv, hsvToHsvString } from \"../utils/convert\";\n\ninterface HsvColorInputProps extends ColorInputBaseProps {\n  label?: string;\n}\n\nexport const HsvStringColorInput = ({color=\"\", onChange, label}: HsvColorInputProps): JSX.Element => {\n  const [inputValue, setInputValue] = useState<string>(color)\n\n  useEffect(() => {\n    setInputValue(color)\n  }, [color])\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValue(value)\n  }\n\n  const handleInputBlur = () => {\n    const parsed = hsvStringToHsv(inputValue)\n    setInputValue(hsvToHsvString(parsed))\n    if (onChange) {\n      onChange(hsvToHsvString(parsed))\n    }\n  }\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault()\n      const parsed = hsvStringToHsv(inputValue)\n      setInputValue(hsvToHsvString(parsed))\n      if (onChange) {\n        onChange(hsvToHsvString(parsed))\n      }\n    }\n  }\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={label}>{label || 'HSV'}</label>\n      <input\n        className=\"color-input\"\n        id={label}  \n        type=\"text\"\n        value={inputValue}\n        onChange={handleInputChange}\n        onBlur={handleInputBlur}\n        onKeyDown={handleKeyDown}\n        aria-label=\"HSV Color\"\n      />\n    </div>\n  )\n}","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { hsvStringToHsva, hsvaToHsvString } from \"../utils/convert\";\nimport { HsvStringColorInput } from \"./HsvStringColorInput\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsv(0, 0%, 0%)\",\n  defaultBackgroundColor: \"hsv(0, 0%, 100%)\",\n  toHsva: hsvStringToHsva,\n  fromHsva: hsvaToHsvString,\n  equal: equalColorString,\n};\n\nexport const HsvStringColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    <HsvStringColorInput {...props} label=\"HSV\" />\n  </ColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { RgbaColor } from \"../types\";\nimport { ObjectColorInputBaseProps } from \"../types\";\n\ninterface RgbaColorInputProps extends ObjectColorInputBaseProps<RgbaColor> {\n  label?: string;\n}\n\nexport const RgbaColorInput = ({color, onChange, label=\"RGBA\"}: RgbaColorInputProps): JSX.Element => {\n  const [inputValues, setInputValues] = useState({\n    r: color.r.toString(),\n    g: color.g.toString(),\n    b: color.b.toString(),\n    a: color.a.toString(),\n  })\n\n  useEffect(() => {\n    setInputValues(prev => {\n      if (\n        prev.r === color.r.toString() &&\n        prev.g === color.g.toString() &&\n        prev.b === color.b.toString() &&\n        prev.a === color.a.toString()\n      ) {\n        return prev\n      }\n      return {\n        r: color.r.toString(),\n        g: color.g.toString(),\n        b: color.b.toString(),\n        a: color.a.toString(),\n      }\n    })\n  }, [color])\n\n  const handleInputChange = (field: keyof RgbaColor) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValues(prevValues => ({\n      ...prevValues,\n      [field]: value,\n    }))\n  }\n\n  const handleInputBlur = (field: keyof RgbaColor) => () => {\n    const value = inputValues[field]\n    const parsedValue = parseFloat(value)\n    if (value === '' || isNaN(parsedValue)) {\n      setInputValues(prevValues => ({\n        ...prevValues,\n        [field]: color[field].toString(),\n      }))\n      return\n    }\n\n    let min = 0\n    let max = 255\n    if (field === 'a') max = 1\n\n    const clampedValue = Math.max(min, Math.min(max, parsedValue))\n    onChange({ ...color, [field]: clampedValue })\n  }\n\n  const handleKeyDown = (field: keyof RgbaColor) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      event.preventDefault()\n      handleInputBlur(field)()\n    }\n  }\n\n  return (\n    <div className=\"input-fields\">\n      <label id={`${label}-group-label`} htmlFor={`${label}-red-input`}>{label}</label>\n      <div className=\"input-fields-container\" role=\"group\" aria-labelledby={`${label}-group-label`}>\n        <input\n          id={`${label}-red-input`}\n          type=\"text\"\n          value={inputValues.r}\n          onChange={handleInputChange('r')}\n          onBlur={handleInputBlur('r')}\n          onKeyDown={handleKeyDown('r')}\n          aria-label=\"Red\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.g}\n          onChange={handleInputChange('g')}\n          onBlur={handleInputBlur('g')}\n          onKeyDown={handleKeyDown('g')}\n          aria-label=\"Green\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.b}\n          onChange={handleInputChange('b')}\n          onBlur={handleInputBlur('b')}\n          onKeyDown={handleKeyDown('b')}\n          aria-label=\"Blue\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.a}\n          onChange={handleInputChange('a')}\n          onBlur={handleInputBlur('a')}\n          onKeyDown={handleKeyDown('a')}\n          aria-label=\"Alpha\"\n        />\n      </div>\n    </div>\n  )\n}","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, RgbaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { rgbaToHsva, hsvaToRgba } from \"../utils/convert\";\nimport { RgbaColorInput } from \"./RgbaColorInput\";\n\nconst colorModel: ColorModel<RgbaColor> = {\n  defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n  defaultBackgroundColor: { r: 255, g: 255, b: 255, a: 1 },\n  toHsva: rgbaToHsva,\n  fromHsva: hsvaToRgba,\n  equal: equalColorObjects,\n};\n\nexport const RgbaColorPicker = (props: Partial<ColorPickerBaseProps<RgbaColor>>): JSX.Element => (\n  <AlphaColorPicker {...props} colorModel={colorModel}>\n    {\n      (props.color && props.onChange) \n      &&\n      <RgbaColorInput color={props.color} onChange={props.onChange} />\n    }\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\nimport { rgbaStringToRgba, rgbaToRgbaString } from \"../utils/convert\";\n\ninterface RgbaColorInputProps extends ColorInputBaseProps {\n  label?: string;\n}\n\nexport const RgbaStringColorInput = ({color=\"\", onChange, label}: RgbaColorInputProps): JSX.Element => {\n  const [inputValue, setInputValue] = useState<string>(color)\n\n  useEffect(() => {\n    setInputValue(color)\n  }, [color])\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValue(value)\n  }\n\n  const handleInputBlur = () => {\n    const parsed = rgbaStringToRgba(inputValue)\n    setInputValue(rgbaToRgbaString(parsed))\n    if (onChange) {\n      onChange(rgbaToRgbaString(parsed))\n    }\n  }\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault()\n      const parsed = rgbaStringToRgba(inputValue)\n      setInputValue(rgbaToRgbaString(parsed))\n      if (onChange) {\n        onChange(rgbaToRgbaString(parsed))\n      }\n    }\n  }\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={label}>{label || 'RGBA'}</label>\n      <input\n        className=\"color-input\"\n        id={label}  \n        type=\"text\"\n        value={inputValue}\n        onChange={handleInputChange}\n        onBlur={handleInputBlur}\n        onKeyDown={handleKeyDown}\n        aria-label=\"RGBA Color\"\n      />\n    </div>\n  )\n}","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { rgbaStringToHsva, hsvaToRgbaString } from \"../utils/convert\";\nimport { RgbaStringColorInput } from \"./RgbaStringColorInput\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"rgba(0, 0, 0, 1)\",\n  defaultBackgroundColor: \"rgba(0, 0, 0, 0)\",\n  toHsva: rgbaStringToHsva,\n  fromHsva: hsvaToRgbaString,\n  equal: equalColorString,\n};\n\nexport const RgbaStringColorPicker = (\n  props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => (\n  <AlphaColorPicker {...props} colorModel={colorModel}>\n    <RgbaStringColorInput {...props} label=\"RGBA\" />\n  </AlphaColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { RgbColor } from \"../types\";\nimport { ObjectColorInputBaseProps } from \"../types\";\n\ninterface RgbColorInputProps extends ObjectColorInputBaseProps<RgbColor> {\n  label?: string;\n}\n\nexport const RgbColorInput = ({color, onChange, label=\"RGB\"}: RgbColorInputProps): JSX.Element => {\n  const [inputValues, setInputValues] = useState({\n    r: color.r.toString(),\n    g: color.g.toString(),\n    b: color.b.toString()\n  })\n\n  useEffect(() => {\n    setInputValues(prev => {\n      if (\n        prev.r === color.r.toString() &&\n        prev.g === color.g.toString() &&\n        prev.b === color.b.toString()\n      ) {\n        return prev\n      }\n      return {\n        r: color.r.toString(),\n        g: color.g.toString(),\n        b: color.b.toString()\n      }\n    })\n  }, [color])\n\n  const handleInputChange = (field: keyof RgbColor) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValues(prevValues => ({\n      ...prevValues,\n      [field]: value,\n    }))\n  }\n\n  const handleInputBlur = (field: keyof RgbColor) => () => {\n    const value = inputValues[field]\n    const parsedValue = parseFloat(value)\n    if (value === '' || isNaN(parsedValue)) {\n      setInputValues(prevValues => ({\n        ...prevValues,\n        [field]: color[field].toString(),\n      }))\n      return\n    }\n\n    let min = 0\n    let max = 255\n\n    const clampedValue = Math.max(min, Math.min(max, parsedValue))\n    onChange({ ...color, [field]: clampedValue })\n  }\n\n  const handleKeyDown = (field: keyof RgbColor) => (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === 'Enter') {\n      event.preventDefault()\n      handleInputBlur(field)()\n    }\n  }\n\n  return (\n    <div className=\"input-fields\">\n      <label id={`${label}-group-label`} htmlFor={`${label}-red-input`}>{label}</label>\n      <div className=\"input-fields-container\" role=\"group\" aria-labelledby={`${label}-group-label`}>\n        <input\n          id={`${label}-red-input`}\n          type=\"text\"\n          value={inputValues.r}\n          onChange={handleInputChange('r')}\n          onBlur={handleInputBlur('r')}\n          onKeyDown={handleKeyDown('r')}\n          aria-label=\"Red\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.g}\n          onChange={handleInputChange('g')}\n          onBlur={handleInputBlur('g')}\n          onKeyDown={handleKeyDown('g')}\n          aria-label=\"Green\"\n        />\n        <input\n          type=\"text\"\n          value={inputValues.b}\n          onChange={handleInputChange('b')}\n          onBlur={handleInputBlur('b')}\n          onKeyDown={handleKeyDown('b')}\n          aria-label=\"Blue\"\n        />\n      </div>\n    </div>\n  )\n}","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps, RgbColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { rgbaToHsva, hsvaToRgba, rgbaToRgb } from \"../utils/convert\";\nimport { RgbColorInput } from \"./RgbColorInput\";\n\nconst colorModel: ColorModel<RgbColor> = {\n  defaultColor: { r: 0, g: 0, b: 0 },\n  defaultBackgroundColor: { r: 255, g: 255, b: 255 },\n  toHsva: ({ r, g, b }) => rgbaToHsva({ r, g, b, a: 1 }),\n  fromHsva: (hsva) => rgbaToRgb(hsvaToRgba(hsva)),\n  equal: equalColorObjects,\n};\n\nexport const RgbColorPicker = (props: Partial<ColorPickerBaseProps<RgbColor>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    {\n      (props.color && props.onChange) \n      &&\n      <RgbColorInput color={props.color} onChange={props.onChange} />\n    }\n  </ColorPicker>\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\nimport { rgbStringToRgb, rgbToRgbString } from \"../utils/convert\";\n\ninterface RgbColorInputProps extends ColorInputBaseProps {\n  label?: string;\n}\n\nexport const RgbStringColorInput = ({color=\"\", onChange, label}: RgbColorInputProps): JSX.Element => {\n  const [inputValue, setInputValue] = useState<string>(color)\n\n  useEffect(() => {\n    setInputValue(color)\n  }, [color])\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const value = event.target.value\n    setInputValue(value)\n  }\n\n  const handleInputBlur = () => {\n    const parsed = rgbStringToRgb(inputValue)\n    setInputValue(rgbToRgbString(parsed))\n    if (onChange) {\n      onChange(rgbToRgbString(parsed))\n    }\n  }\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    if (event.key === \"Enter\") {\n      event.preventDefault()\n      const parsed = rgbStringToRgb(inputValue)\n      setInputValue(rgbToRgbString(parsed))\n      if (onChange) {\n        onChange(rgbToRgbString(parsed))\n      }\n    }\n  }\n\n  return (\n    <div className=\"color-input-container\">\n      <label htmlFor={label}>{label || 'RGB'}</label>\n      <input\n        className=\"color-input\"\n        id={label}  \n        type=\"text\"\n        value={inputValue}\n        onChange={handleInputChange}\n        onBlur={handleInputBlur}\n        onKeyDown={handleKeyDown}\n        aria-label=\"RGB Color\"\n      />\n    </div>\n  )\n}","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalColorString } from \"../utils/compare\";\nimport { rgbStringToHsva, hsvaToRgbString } from \"../utils/convert\";\nimport { RgbStringColorInput } from \"./RgbStringColorInput\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"rgb(0, 0, 0)\",\n  defaultBackgroundColor: \"rgb(255, 255, 255)\",\n  toHsva: rgbStringToHsva,\n  fromHsva: hsvaToRgbString,\n  equal: equalColorString,\n};\n\nexport const RgbStringColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel}>\n    <RgbStringColorInput {...props} label=\"RGB\" />\n  </ColorPicker>\n);\n"],"names":["useEventCallback","handler","callbackRef","useRef","fn","value","current","clamp","number","min","max","isTouch","event","getParentWindow","node","ownerDocument","defaultView","self","getRelativePosition","touchId","rect","getBoundingClientRect","pointer","touches","i","length","identifier","getTouchPoint","left","pageX","pageXOffset","width","top","pageY","pageYOffset","height","preventDefaultMove","preventDefault","Interactive","React","memo","_ref","onMove","onKey","rest","_objectWithoutPropertiesLoose","_excluded","container","onMoveCallback","onKeyCallback","hasTouch","_useMemo","useMemo","handleMove","buttons","toggleDocumentEvents","handleMoveEnd","state","touch","parentWindow","toggleEvent","addEventListener","removeEventListener","_ref2","nativeEvent","el","isInvalid","changedTouches","focus","keyCode","which","handleMoveStart","handleKeyDown","useEffect","createElement","_extends","onTouchStart","onMouseDown","className","ref","onKeyDown","tabIndex","role","formatClassName","names","filter","Boolean","join","Pointer","color","_ref$top","nodeClassName","style","backgroundColor","round","digits","base","Math","pow","angleUnits","grad","turn","rad","PI","hexToHsva","hex","rgbaToHsva","hexToRgba","substring","r","parseInt","g","b","a","parseHue","unit","Number","hslaStringToHsva","hslString","match","exec","hslaToHsva","h","s","l","undefined","v","hslaStringToHsla","hslaString","hslaToHslaString","hsla","hslToHslString","hsl","hslStringToHsva","hslStringToHsl","hsvaToHex","hsva","rgbaToHex","hsvaToRgba","hsvaToHsla","hh","hsvaToHslString","_hsvaToHsla","hsvaToHsvaString","_roundHsva2","roundHsva","hsvaToHslaString","_hsvaToHsla2","_ref3","floor","c","d","module","hsvaStringToHsva","hsvString","hsvStringToHsva","hsvStringToHsv","roundHsv","hsvToHsvString","hsv","_roundHsv","rgbaStringToHsva","rgbaString","rgbaStringToRgba","rgbaToRgbaString","rgba","rgbStringToHsva","rgbStringToRgb","rgbString","rgbToRgbString","rgb","format","toString","_ref4","alphaHex","_ref5","delta","Hue","hue","onChange","interaction","offset","Saturation","containerStyle","equalColorObjects","first","second","prop","equalColorString","replace","equalHex","toLowerCase","useColorManipulation","colorModel","onChangeCallback","_useState","useState","toHsva","updateHsva","cache","equal","newHsva","newColor","fromHsva","handleChange","useCallback","params","Object","assign","nonce","useIsomorphicLayoutEffect","window","useLayoutEffect","getNonce","__webpack_nonce__","setNonce","hash","styleElementMap","Map","useStyleSheet","nodeRef","parentDocument","document","has","styleElement","innerHTML","set","setAttribute","head","appendChild","ContrastWrapper","children","foregroundColor","setContrastRatio","_useState2","pass","setPass","hsvaToChromaColor","chroma","alpha","fg","bg","fgRgb","bgRgb","blendedRgb","foregroundColorChroma","backgroundColorChroma","blendedForeground","map","channel","ratio","contrast","_getContrastComplianc","level","getContrastCompliance","console","log","ColorPicker","_ref$color","defaultColor","_ref$backgroundColor","defaultBackgroundColor","_useColorManipulation","backgroundHsva","matcher","ColorInput","props","_props$color","onBlur","escape","validate","process","setValue","onBlurCallback","e","inputValue","target","handleBlur","spellCheck","prefix","HexColorInput","prefixed","validHex","htmlFor","label","id","HexColorPicker","Alpha","gradientStyle","backgroundImage","ariaValue","AlphaColorPicker","HexAlphaColorPicker","HslaColorInput","_ref$label","inputValues","setInputValues","prev","handleInputChange","field","prevValues","_extends2","handleInputBlur","_extends4","parsedValue","parseFloat","isNaN","_extends3","clampedValue","key","type","HslaColorPicker","HslaStringColorInput","setInputValue","parsed","HslaStringColorPicker","HslColorInput","_ref7","HslColorPicker","HslStringColorInput","HslStringColorPicker","HsvaColorInput","HsvaColorPicker","HsvaStringColorInput","HsvaStringColorPicker","HsvColorInput","_roundHsva3","HsvColorPicker","HsvStringColorInput","_roundHsva","HsvStringColorPicker","RgbaColorInput","RgbaColorPicker","RgbaStringColorInput","_hsvaToRgba2","RgbaStringColorPicker","RgbColorInput","_ref6","RgbColorPicker","RgbStringColorInput","_hsvaToRgba","RgbStringColorPicker"],"mappings":"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"}