{"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/utils/nonce.ts","../src/hooks/useStyleSheet.ts","../src/hooks/useIsomorphicLayoutEffect.ts","../src/components/common/ColorPicker.tsx","../src/components/HexColorPicker.tsx","../src/components/common/Alpha.tsx","../src/components/common/AlphaColorPicker.tsx","../src/components/HslaColorPicker.tsx","../src/components/HslaStringColorPicker.tsx","../src/components/HslColorPicker.tsx","../src/components/HslStringColorPicker.tsx","../src/components/HsvaColorPicker.tsx","../src/components/HsvaStringColorPicker.tsx","../src/components/HsvColorPicker.tsx","../src/components/HsvStringColorPicker.tsx","../src/components/RgbaColorPicker.tsx","../src/components/RgbaStringColorPicker.tsx","../src/components/RgbColorPicker.tsx","../src/components/RgbStringColorPicker.tsx","../src/utils/validate.ts","../src/components/common/ColorInput.tsx","../src/components/HexColorInput.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\";\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// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (node: HTMLDivElement, event: MouseEvent | TouchEvent): 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) ? event.touches[0] : (event as MouseEvent);\n\n  return {\n    left: clamp((pointer.pageX - (rect.left + window.pageXOffset)) / rect.width),\n    top: clamp((pointer.pageY - (rect.top + window.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 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      hasTouch.current = isTouch(nativeEvent);\n\n      // The node/ref must actually exist when user start an interaction.\n      // We won't suppress the ESLint warning though, as it should probably be something to be aware of.\n      el.focus();\n      onMoveCallback(getRelativePosition(el, nativeEvent));\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));\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      // add or remove additional pointer event listeners\n      const toggleEvent = state ? self.addEventListener : self.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.substr(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: 1,\n    };\n  }\n\n  return {\n    r: parseInt(hex.substr(0, 2), 16),\n    g: parseInt(hex.substr(2, 2), 16),\n    b: parseInt(hex.substr(4, 2), 16),\n    a: 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 hslStringToHsva = hslaStringToHsva;\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 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 rgbStringToHsva = rgbaStringToHsva;\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 }: RgbaColor): string => {\n  return \"#\" + format(r) + format(g) + format(b);\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 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-valuetext={round(hue)}\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","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 { 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\nlet styleElement: HTMLStyleElement | undefined;\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (): void => {\n  useIsomorphicLayoutEffect(() => {\n    if (typeof document !== \"undefined\" && !styleElement) {\n      styleElement = document.createElement(\"style\");\n      styleElement.innerHTML = styles;\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      document.head.appendChild(styleElement);\n    }\n  }, []);\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","import React 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\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n  colorModel: ColorModel<T>;\n}\n\nexport const ColorPicker = <T extends AnyColor>({\n  className,\n  colorModel,\n  color = colorModel.defaultColor,\n  onChange,\n  ...rest\n}: Props<T>): JSX.Element => {\n  useStyleSheet();\n\n  const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n\n  const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n  return (\n    <div {...rest} className={nodeClassName}>\n      <Saturation hsva={hsva} onChange={updateHsva} />\n      <Hue hue={hsva.h} onChange={updateHsva} className=\"react-colorful__last-control\" />\n    </div>\n  );\n};\n","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\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  toHsva: hexToHsva,\n  fromHsva: hsvaToHex,\n  equal: equalHex,\n};\n\nexport const HexColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n  <ColorPicker {...props} colorModel={colorModel} />\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\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={`${round(hsva.a * 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 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\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n  colorModel: ColorModel<T>;\n}\n\nexport const AlphaColorPicker = <T extends AnyColor>({\n  className,\n  colorModel,\n  color = colorModel.defaultColor,\n  onChange,\n  ...rest\n}: Props<T>): JSX.Element => {\n  useStyleSheet();\n\n  const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n\n  const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n  return (\n    <div {...rest} 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  );\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\";\n\nconst colorModel: ColorModel<HslaColor> = {\n  defaultColor: { h: 0, s: 0, l: 0, 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","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\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsla(0, 0%, 0%, 1)\",\n  toHsva: hslaStringToHsva,\n  fromHsva: hsvaToHslaString,\n  equal: equalColorString,\n};\n\nexport const HslaStringColorPicker = (\n  props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => <AlphaColorPicker {...props} colorModel={colorModel} />;\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\";\n\nconst colorModel: ColorModel<HslColor> = {\n  defaultColor: { h: 0, s: 0, l: 0 },\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","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\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsl(0, 0%, 0%)\",\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);\n","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\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  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","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\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsva(0, 0%, 0%, 1)\",\n  toHsva: hsvaStringToHsva,\n  fromHsva: hsvaToHsvaString,\n  equal: equalColorString,\n};\n\nexport const HsvaStringColorPicker = (\n  props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => <AlphaColorPicker {...props} colorModel={colorModel} />;\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\";\n\nconst colorModel: ColorModel<HsvColor> = {\n  defaultColor: { h: 0, s: 0, v: 0 },\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","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\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"hsv(0, 0%, 0%)\",\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);\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\";\n\nconst colorModel: ColorModel<RgbaColor> = {\n  defaultColor: { r: 0, g: 0, b: 0, 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","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\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"rgba(0, 0, 0, 1)\",\n  toHsva: rgbaStringToHsva,\n  fromHsva: hsvaToRgbaString,\n  equal: equalColorString,\n};\n\nexport const RgbaStringColorPicker = (\n  props: Partial<ColorPickerBaseProps<string>>\n): JSX.Element => <AlphaColorPicker {...props} colorModel={colorModel} />;\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\";\n\nconst colorModel: ColorModel<RgbColor> = {\n  defaultColor: { r: 0, g: 0, b: 0 },\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","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\";\n\nconst colorModel: ColorModel<string> = {\n  defaultColor: \"rgb(0, 0, 0)\",\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);\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      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}\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, \"\").substr(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    <ColorInput\n      {...rest}\n      escape={escape}\n      format={prefixed ? prefix : undefined}\n      process={prefix}\n      validate={validate}\n    />\n  );\n};\n"],"names":["useEventCallback","handler","callbackRef","useRef","fn","value","current","clamp","number","min","max","isTouch","event","getRelativePosition","node","rect","getBoundingClientRect","pointer","touches","left","pageX","window","pageXOffset","width","top","pageY","pageYOffset","height","preventDefaultMove","preventDefault","Interactive","React","memo","onMove","onKey","rest","container","onMoveCallback","onKeyCallback","hasTouch","useMemo","handleMove","length","buttons","toggleDocumentEvents","handleMoveEnd","state","touch","toggleEvent","self","addEventListener","removeEventListener","nativeEvent","el","isInvalid","focus","keyCode","which","handleMoveStart","handleKeyDown","useEffect","onTouchStart","onMouseDown","className","ref","onKeyDown","tabIndex","role","formatClassName","names","filter","Boolean","join","Pointer","color","nodeClassName","style","backgroundColor","round","digits","base","Math","pow","angleUnits","grad","turn","rad","PI","hexToRgba","hex","substr","r","parseInt","g","b","a","parseHue","unit","Number","hslaStringToHsva","hslString","match","exec","hslaToHsva","h","s","l","undefined","v","hslStringToHsva","hsvaToHsla","hh","hsvaToHslString","hsva","hsvaToHslaString","hsvaToRgba","floor","c","d","module","hsvaStringToHsva","hsvString","roundHsva","hsvStringToHsva","rgbaStringToHsva","rgbaString","rgbaToHsva","rgbStringToHsva","format","toString","delta","Hue","hue","onChange","interaction","offset","aria-label","aria-valuetext","Saturation","containerStyle","equalColorObjects","first","second","prop","equalColorString","replace","useColorManipulation","colorModel","onChangeCallback","useState","toHsva","updateHsva","cache","equal","newHsva","newColor","fromHsva","handleChange","useCallback","params","Object","assign","nonce","styleElement","useIsomorphicLayoutEffect","useLayoutEffect","getNonce","__webpack_nonce__","setNonce","hash","useStyleSheet","document","createElement","innerHTML","setAttribute","head","appendChild","ColorPicker","defaultColor","toLowerCase","HexColorPicker","props","Alpha","gradientStyle","backgroundImage","AlphaColorPicker","HslaColorPicker","HslaStringColorPicker","HslColorPicker","HslStringColorPicker","HsvaColorPicker","HsvaStringColorPicker","HsvColorPicker","HsvStringColorPicker","RgbaColorPicker","RgbaStringColorPicker","RgbColorPicker","RgbStringColorPicker","matcher","ColorInput","onBlur","escape","validate","process","setValue","onBlurCallback","e","inputValue","target","handleBlur","spellCheck","prefix","HexColorInput","prefixed","alpha","validHex"],"mappings":"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"}