{"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/useIsomorphicLayoutEffect.ts","../src/hooks/useStyleSheet.ts","../src/components/common/ColorPicker.tsx","../src/components/HexColorPicker.tsx","../src/components/common/Alpha.tsx","../src/components/common/AlphaColorPicker.tsx","../src/components/HexAlphaColorPicker.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(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 onEnd?: () => void;\n children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, onEnd, ...rest }: Props) => {\n const container = useRef(null);\n const onMoveCallback = useEventCallback(onMove);\n const onKeyCallback = useEventCallback(onKey);\n const onEndCallback = useEventCallback(onEnd);\n const touchId = useRef(null);\n const hasTouch = useRef(false);\n\n const [handleMoveStart, handleKeyDown, handleKeyUp, 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 onEndCallback();\n }\n };\n\n const handleMoveEnd = () => {\n toggleDocumentEvents(false);\n onEndCallback();\n };\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 const handleKeyUp = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if (keyCode >= 37 && keyCode <= 40) onEndCallback();\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, handleKeyUp, toggleDocumentEvents];\n }, [onKeyCallback, onMoveCallback, onEndCallback]);\n\n // Remove window event listeners before unmounting\n useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n return (\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): React.ReactElement => {\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
\n
\n
\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 units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record = {\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 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, 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 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 onChangeEnd?: () => void;\n}\n\nconst HueBase = ({ className, hue, onChange, onChangeEnd }: 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
\n \n \n \n
\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 onChangeEnd?: () => void;\n}\n\nconst SaturationBase = ({ hsva, onChange, onChangeEnd }: 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
\n \n \n \n
\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` 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)[prop] !==\n ((second as unknown) as Record)[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(\n colorModel: ColorModel,\n color: T,\n onChange?: (color: T) => void,\n onChangeEnd?: (color: T) => void\n): [HsvaColor, (color: Partial) => void, () => void] {\n // Save onChange callback in the ref for avoiding \"useCallback hell\"\n const onChangeCallback = useEventCallback(onChange);\n const onChangeEndCallback = useEventCallback(onChangeEnd);\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(() => 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 const isDirty = useRef(false);\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 isDirty.current = false;\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 isDirty.current = true;\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) => {\n updateHsva((current) => Object.assign({}, current, params));\n }, []);\n\n const commitChange = useCallback(() => {\n if (isDirty.current) {\n isDirty.current = false;\n onChangeEndCallback(cache.current.color);\n }\n }, [onChangeEndCallback]);\n\n return [hsva, handleChange, commitChange];\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 { 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 { 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\ntype Root = Document | ShadowRoot;\n\n// `WeakMap` lets detached shadow roots / iframe documents be garbage-collected\n// once nothing else references them. Available in IE11 for the operations we use\n// (`has`, `set` as a statement — we don't chain or pass an iterable constructor).\nconst styleElementMap: WeakMap = new WeakMap();\n\n/**\n * Injects CSS code into the closest root node (Document or ShadowRoot)\n * so the picker is styled correctly when mounted inside a shadow tree\n * or a separate document (e.g. an iframe).\n */\nexport const useStyleSheet = (nodeRef: RefObject): void => {\n useIsomorphicLayoutEffect(() => {\n const node = nodeRef.current;\n if (typeof document === \"undefined\" || !node) return;\n\n // `getRootNode()` returns the closest ShadowRoot if the picker lives in one,\n // otherwise the owning Document. Falls back to `ownerDocument` for IE11,\n // which has neither `getRootNode` nor Shadow DOM. For disconnected nodes\n // `getRootNode()` can return an arbitrary ancestor (e.g. an Element), so\n // we discriminate via `head`/`host` and fall back to `ownerDocument`.\n const raw = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n const root = (raw && (\"head\" in raw || \"host\" in raw) ? raw : node.ownerDocument) as Root;\n if (styleElementMap.has(root)) return;\n\n // Document has `head`; ShadowRoot doesn't — use it to pick the injection target.\n const target = \"head\" in root ? root.head : root;\n const styleElement = (target.ownerDocument || 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 styleElementMap.set(root, styleElement);\n target.appendChild(styleElement);\n }, []);\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\";\n\ninterface Props extends Partial> {\n colorModel: ColorModel;\n}\n\nexport const ColorPicker = ({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n onChangeEnd,\n ...rest\n}: Props): React.ReactElement => {\n const nodeRef = useRef(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva, commitChange] = useColorManipulation(\n colorModel,\n color,\n onChange,\n onChangeEnd\n );\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n
\n \n \n
\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 = {\n defaultColor: \"000\",\n toHsva: hexToHsva,\n fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n equal: equalHex,\n};\n\nexport const HexColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 onChangeEnd?: () => void;\n}\n\nexport const Alpha = ({ className, hsva, onChange, onChangeEnd }: Props): React.ReactElement => {\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
\n
\n \n \n \n
\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\";\n\ninterface Props extends Partial> {\n colorModel: ColorModel;\n}\n\nexport const AlphaColorPicker = ({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n onChangeEnd,\n ...rest\n}: Props): React.ReactElement => {\n const nodeRef = useRef(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva, commitChange] = useColorManipulation(\n colorModel,\n color,\n onChange,\n onChangeEnd\n );\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n
\n \n \n \n
\n );\n};\n","import React from \"react\";\n\nimport { AlphaColorPicker } from \"./common/AlphaColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel = {\n defaultColor: \"0001\",\n toHsva: hexToHsva,\n fromHsva: hsvaToHex,\n equal: equalHex,\n};\n\nexport const HexAlphaColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: { h: 0, s: 0, l: 0, a: 1 },\n toHsva: hslaToHsva,\n fromHsva: hsvaToHsla,\n equal: equalColorObjects,\n};\n\nexport const HslaColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: \"hsla(0, 0%, 0%, 1)\",\n toHsva: hslaStringToHsva,\n fromHsva: hsvaToHslaString,\n equal: equalColorString,\n};\n\nexport const HslaStringColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\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 = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: \"hsl(0, 0%, 0%)\",\n toHsva: hslStringToHsva,\n fromHsva: hsvaToHslString,\n equal: equalColorString,\n};\n\nexport const HslStringColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\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 = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: \"hsva(0, 0%, 0%, 1)\",\n toHsva: hsvaStringToHsva,\n fromHsva: hsvaToHsvaString,\n equal: equalColorString,\n};\n\nexport const HsvaStringColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\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 = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: \"hsv(0, 0%, 0%)\",\n toHsva: hsvStringToHsva,\n fromHsva: hsvaToHsvString,\n equal: equalColorString,\n};\n\nexport const HsvStringColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: { r: 0, g: 0, b: 0, a: 1 },\n toHsva: rgbaToHsva,\n fromHsva: hsvaToRgba,\n equal: equalColorObjects,\n};\n\nexport const RgbaColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: \"rgba(0, 0, 0, 1)\",\n toHsva: rgbaStringToHsva,\n fromHsva: hsvaToRgbaString,\n equal: equalColorString,\n};\n\nexport const RgbaStringColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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 = {\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 = (\n props: Partial>\n): React.ReactElement => ;\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 = {\n defaultColor: \"rgb(0, 0, 0)\",\n toHsva: rgbStringToHsva,\n fromHsva: hsvaToRgbString,\n equal: equalColorString,\n};\n\nexport const RgbStringColorPicker = (\n props: Partial>\n): React.ReactElement => ;\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): React.ReactElement => {\n const { color = \"\", onChange, onBlur, escape, validate, format, process, ...rest } = props;\n const [value, setValue] = useState(() => escape(color));\n const onChangeCallback = useEventCallback(onChange);\n const onBlurCallback = useEventCallback>(onBlur);\n\n // Trigger `onChange` handler only if the input value is a valid color\n const handleChange = useCallback(\n (e: React.ChangeEvent) => {\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) => {\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 \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): React.ReactElement => {\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 \n );\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","onMove","onKey","onEnd","rest","container","onMoveCallback","onKeyCallback","onEndCallback","hasTouch","useMemo","handleMove","buttons","toggleDocumentEvents","handleMoveEnd","state","touch","parentWindow","toggleEvent","addEventListener","removeEventListener","nativeEvent","el","isInvalid","changedTouches","focus","keyCode","which","handleMoveStart","handleKeyDown","handleKeyUp","useEffect","onTouchStart","onMouseDown","className","ref","onKeyDown","onKeyUp","tabIndex","role","formatClassName","names","filter","Boolean","join","Pointer","color","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","hslStringToHsva","hsvaToHex","hsva","rgbaToHex","hsvaToRgba","hsvaToHsla","hh","hsvaToHslString","hsvaToHslaString","floor","c","d","module","hsvaStringToHsva","hsvString","roundHsva","hsvStringToHsva","rgbaStringToHsva","rgbaString","rgbStringToHsva","format","toString","alphaHex","delta","Hue","hue","onChange","onChangeEnd","interaction","offset","aria-label","aria-valuenow","aria-valuemax","aria-valuemin","Saturation","containerStyle","aria-valuetext","equalColorObjects","first","second","prop","equalColorString","replace","equalHex","toLowerCase","useColorManipulation","colorModel","onChangeCallback","onChangeEndCallback","useState","toHsva","updateHsva","cache","isDirty","equal","newHsva","newColor","fromHsva","handleChange","useCallback","params","Object","assign","commitChange","nonce","useIsomorphicLayoutEffect","window","useLayoutEffect","getNonce","__webpack_nonce__","setNonce","hash","styleElementMap","WeakMap","useStyleSheet","nodeRef","document","raw","getRootNode","root","has","target","head","styleElement","createElement","innerHTML","setAttribute","set","appendChild","ColorPicker","defaultColor","HexColorPicker","props","Alpha","gradientStyle","backgroundImage","ariaValue","AlphaColorPicker","HexAlphaColorPicker","HslaColorPicker","HslaStringColorPicker","HslColorPicker","HslStringColorPicker","HsvaColorPicker","HsvaStringColorPicker","HsvColorPicker","HsvStringColorPicker","RgbaColorPicker","RgbaStringColorPicker","RgbColorPicker","RgbStringColorPicker","matcher","ColorInput","onBlur","escape","validate","process","setValue","onBlurCallback","e","inputValue","handleBlur","spellCheck","prefix","HexColorInput","prefixed","alpha","validHex"],"mappings":"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"}