{"version":3,"file":"react-color-picker.umd.cjs","sources":["../node_modules/@radial-color-picker/rotator/dist/rotator.esm.js","../src/ColorPicker.jsx"],"sourcesContent":["/**\n * radial-color-picker/rotator v3.0.2\n *\n * https://github.com/radial-color-picker/rotator\n *\n * Copyright (c) 2018-present, Rosen Kanev\n * Released under the MIT License.\n */\nconst TO_DEGREES = 180 / Math.PI;\nconst normalizeAngle = angle => {\n  const mod = angle % 360;\n  return mod < 0 ? 360 + mod : mod;\n};\nconst getRotationFromCoords = ({\n  x,\n  y\n}, rect) => {\n  const cx = rect.left + rect.width / 2;\n  const cy = rect.top + rect.height / 2;\n  return Math.atan2(y - cy, x - cx) * TO_DEGREES;\n};\nconst noop = () => {};\n\n/**\n * Modified version of Denis Radin's\n * {@link https://github.com/PixelsCommander/Propeller Propeller}.\n */\n\nclass Rotator {\n  constructor(element, options) {\n    this.active = false;\n    this.element = element;\n    this.element.style.willChange = 'transform';\n    this.initOptions(options);\n    this.updateCSS();\n    this.bindHandlers();\n    this.addListeners();\n  }\n\n  get angle() {\n    return this._angle;\n  }\n\n  set angle(value) {\n    if (this._angle !== value) {\n      this._angle = normalizeAngle(value);\n      this.updateCSS();\n    }\n  }\n\n  initOptions(options) {\n    options = options || {};\n    this.onRotate = options.onRotate || noop;\n    this.onDragStart = options.onDragStart || noop;\n    this.onDragStop = options.onDragStop || noop;\n    this._angle = options.angle || 0;\n  }\n\n  bindHandlers() {\n    this.onRotationStart = this.onRotationStart.bind(this);\n    this.onRotated = this.onRotated.bind(this);\n    this.onRotationStop = this.onRotationStop.bind(this);\n  }\n\n  addListeners() {\n    this.element.addEventListener('touchstart', this.onRotationStart, {\n      passive: true\n    });\n    document.addEventListener('touchmove', this.onRotated, {\n      passive: false\n    });\n    document.addEventListener('touchend', this.onRotationStop, {\n      passive: true\n    });\n    document.addEventListener('touchcancel', this.onRotationStop, {\n      passive: true\n    });\n    this.element.addEventListener('mousedown', this.onRotationStart, {\n      passive: true\n    });\n    document.addEventListener('mousemove', this.onRotated, {\n      passive: false\n    });\n    document.addEventListener('mouseup', this.onRotationStop, {\n      passive: true\n    });\n    document.addEventListener('mouseleave', this.onRotationStop, {\n      passive: false\n    });\n  }\n\n  removeListeners() {\n    this.element.removeEventListener('touchstart', this.onRotationStart);\n    document.removeEventListener('touchmove', this.onRotated);\n    document.removeEventListener('touchend', this.onRotationStop);\n    document.removeEventListener('touchcancel', this.onRotationStop);\n    this.element.removeEventListener('mousedown', this.onRotationStart);\n    document.removeEventListener('mousemove', this.onRotated);\n    document.removeEventListener('mouseup', this.onRotationStop);\n    document.removeEventListener('mouseleave', this.onRotationStop);\n  }\n\n  destroy() {\n    this.onRotationStop();\n    this.removeListeners();\n  }\n\n  onRotationStart(event) {\n    if (event.type === 'touchstart' || event.button === 0) {\n      this.active = true;\n      this.onDragStart(event);\n      this.setAngleFromEvent(event);\n    }\n  }\n\n  onRotationStop() {\n    if (this.active) {\n      this.active = false;\n      this.onDragStop();\n    }\n\n    this.active = false;\n  }\n\n  onRotated(event) {\n    if (this.active) {\n      event.preventDefault();\n      this.setAngleFromEvent(event);\n    }\n  }\n\n  setAngleFromEvent(event) {\n    const ev = event.targetTouches ? event.targetTouches[0] : event;\n    const newAngle = getRotationFromCoords({\n      x: ev.clientX,\n      y: ev.clientY\n    }, this.element.getBoundingClientRect()); // atan2 gives values between -180 to 180 deg\n    // add 90 degrees offset so that it starts from 0 deg (or red)\n    // and then normalize negative values\n\n    this._angle = normalizeAngle(newAngle + 90);\n    this.updateCSS();\n    this.onRotate(this._angle);\n  }\n\n  updateCSS() {\n    this.element.style.transform = \"rotate(\" + this._angle + \"deg)\";\n  }\n\n}\n\nexport default Rotator;\n","import { useRef, useState, useEffect } from 'react';\nimport Rotator from '@radial-color-picker/rotator';\n\nimport './style.css';\n\nconst noop = () => {};\nconst colors = ['red', 'yellow', 'green', 'cyan', 'blue', 'magenta', 'red'];\nconst keys = {\n    ArrowUp: (oldAngle, step) => oldAngle + step,\n    ArrowRight: (oldAngle, step) => oldAngle + step,\n    ArrowDown: (oldAngle, step) => oldAngle - step,\n    ArrowLeft: (oldAngle, step) => oldAngle - step,\n    PageUp: (oldAngle, step) => oldAngle + step * 10,\n    PageDown: (oldAngle, step) => oldAngle - step * 10,\n    Home: () => 0,\n    End: () => 359,\n};\n\nconst ColorPicker = ({\n    hue = 0,\n    saturation = 100,\n    luminosity = 50,\n    alpha = 1,\n    disabled = false,\n    step = 1,\n    variant = 'collapsible', // collapsible | persistent\n    initiallyCollapsed = false,\n    mouseScroll = false,\n    ariaLabelColorWell = 'color well',\n    onInput = noop,\n    onChange = noop,\n    onSelect = noop,\n    className,\n    ...rest\n}) => {\n    const rotatorRef = useRef(null);\n    const elRef = useRef(null);\n    const rotator = useRef(null);\n\n    const angleRef = useRef(hue);\n\n    // set the SSR value just once when the component is created\n    // prevents knob jumping when using Server Side Rendering\n    // where the knob's position is updated only after the client-side code is executed (on mount)\n    const [ssrHue, setSsrHue] = useState(hue);\n\n    const [isKnobIn, setIsKnobIn] = useState(!initiallyCollapsed);\n    const [isPaletteIn, setIsPaletteIn] = useState(!initiallyCollapsed);\n    const [isPressed, setIsPressed] = useState(false);\n    const [isRippling, setIsRippling] = useState(false);\n    const [isDragging, setIsDragging] = useState(false);\n\n    useEffect(() => {\n        if (mouseScroll) {\n            rotatorRef.current.addEventListener('wheel', onScroll);\n        }\n\n        rotator.current = new Rotator(rotatorRef.current, {\n            angle: angleRef.current,\n            onRotate(value) {\n                angleRef.current = value;\n                onInput(value);\n            },\n            onDragStart() {\n                setIsDragging(true);\n            },\n            onDragStop() {\n                setIsDragging(false);\n                onChange(angleRef.current);\n            },\n        });\n\n        return () => {\n            rotator.current.destroy();\n            rotator.current = null;\n\n            if (mouseScroll) {\n                rotatorRef.current.removeEventListener('wheel', onScroll);\n            }\n        };\n    }, []);\n\n    useEffect(() => {\n        angleRef.current = hue;\n        rotator.current.angle = hue;\n    }, [hue]);\n\n    const onScroll = (ev) => {\n        if (isPressed || !isKnobIn) return;\n\n        ev.preventDefault();\n\n        const newAngle = ev.deltaY > 0 ? rotator.current.angle + step : rotator.current.angle - step;\n\n        rotator.current.angle = newAngle;\n\n        angleRef.current = newAngle;\n        onInput(newAngle);\n        onChange(newAngle);\n    };\n\n    const onKeyUp = (ev) => {\n        if (ev.key === 'Enter' && ev.target === elRef.current) {\n            selectColor();\n        }\n    };\n\n    const onKeyDown = (ev) => {\n        if (disabled || isPressed || !isKnobIn || !(ev.key in keys)) return;\n\n        ev.preventDefault();\n\n        const newAngle = keys[ev.key](rotator.current.angle, step);\n\n        rotator.current.angle = newAngle;\n\n        angleRef.current = newAngle;\n        onInput(newAngle);\n        onChange(newAngle);\n    };\n\n    const rotateToMouse = (ev) => {\n        if (isPressed || !isKnobIn || ev.target !== rotatorRef.current) return;\n\n        rotator.current.setAngleFromEvent(ev);\n    };\n\n    const selectColor = () => {\n        setIsPressed(true);\n\n        if (isPaletteIn && isKnobIn) {\n            onSelect(angleRef.current);\n            setIsRippling(true);\n        } else {\n            setIsPaletteIn(true);\n        }\n    };\n\n    const togglePicker = () => {\n        if (variant !== 'persistent') {\n            if (isKnobIn) {\n                setIsKnobIn(false);\n            } else {\n                setIsKnobIn(true);\n                setIsPaletteIn(true);\n            }\n        }\n\n        setIsRippling(false);\n        setIsPressed(false);\n    };\n\n    const hidePalette = () => {\n        if (!isKnobIn) {\n            setIsPaletteIn(false);\n        }\n    };\n\n    const color = `hsla(${angleRef.current}, ${saturation}%, ${luminosity}%, ${alpha})`;\n    const wrapperClassNames = ['rcp', className, isDragging && 'dragging', disabled && 'disabled']\n        .filter(Boolean)\n        .join(' ');\n\n    return (\n        <div\n            aria-roledescription=\"radial slider\"\n            aria-label=\"color picker\"\n            aria-valuetext={colors[Math.round(angleRef.current / 60)]}\n            {...rest}\n            aria-expanded={isPaletteIn}\n            aria-valuenow={angleRef.current}\n            aria-disabled={disabled}\n            aria-valuemin={0}\n            aria-valuemax={359}\n            ref={elRef}\n            role=\"slider\"\n            className={wrapperClassNames}\n            tabIndex={disabled ? -1 : 0}\n            onKeyUp={onKeyUp}\n            onKeyDown={onKeyDown}\n        >\n            <div className={`rcp__palette ${isPaletteIn ? 'in' : 'out'}`}>\n                <canvas />\n            </div>\n\n            <div\n                ref={rotatorRef}\n                className=\"rcp__rotator\"\n                style={{\n                    pointerEvents: disabled || isPressed || !isKnobIn ? 'none' : null,\n                    transform: `rotate(${ssrHue}deg)`,\n                }}\n            >\n                <div className={`rcp__knob ${isKnobIn ? 'in' : 'out'}`} onTransitionEnd={hidePalette} />\n            </div>\n\n            <div className={`rcp__ripple ${isRippling ? 'rippling' : ''}`.trim()} style={{ borderColor: color }} />\n\n            <button\n                type=\"button\"\n                className={`rcp__well ${isPressed ? 'pressed' : ''}`.trim()}\n                style={{ backgroundColor: color }}\n                aria-label={ariaLabelColorWell}\n                disabled={disabled}\n                tabIndex={disabled ? -1 : 0}\n                onAnimationEnd={togglePicker}\n                onClick={selectColor}\n            />\n        </div>\n    );\n};\n\nexport default ColorPicker;\n"],"names":["TO_DEGREES","normalizeAngle","angle","mod","getRotationFromCoords","x","y","rect","cx","cy","noop","Rotator","element","options","value","event","ev","newAngle","colors","keys","oldAngle","step","hue","saturation","luminosity","alpha","disabled","variant","initiallyCollapsed","mouseScroll","ariaLabelColorWell","onInput","onChange","onSelect","className","rest","rotatorRef","useRef","elRef","rotator","angleRef","ssrHue","setSsrHue","useState","isKnobIn","setIsKnobIn","isPaletteIn","setIsPaletteIn","isPressed","setIsPressed","isRippling","setIsRippling","isDragging","setIsDragging","useEffect","onScroll","onKeyUp","selectColor","onKeyDown","togglePicker","hidePalette","color","wrapperClassNames","jsxs","jsx"],"mappings":"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","x_google_ignoreList":[0]}