{"version":3,"sources":["../src/use-color-selector.ts"],"sourcesContent":["import type {\n  CSSUIObject,\n  HTMLUIProps,\n  PropGetter,\n  RequiredPropGetter,\n  ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { InputProps } from \"@yamada-ui/input\"\nimport type { ColorFormat, Dict } from \"@yamada-ui/utils\"\nimport type { ChangeEvent } from \"react\"\nimport type { AlphaSliderProps } from \"./alpha-slider\"\nimport type { ColorSwatchProps } from \"./color-swatch\"\nimport type { HueSliderProps } from \"./hue-slider\"\nimport type { SaturationSliderProps } from \"./saturation-slider\"\nimport {\n  formControlProperties,\n  useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { useEyeDropper } from \"@yamada-ui/use-eye-dropper\"\nimport {\n  calcFormat,\n  convertColor,\n  createContext,\n  handlerAll,\n  hslaTo,\n  hsvTo,\n  isString,\n  parseToHsla,\n  parseToHsv,\n  parseToRgba,\n  rgbaTo,\n  splitObject,\n  useCallbackRef,\n  useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useMemo, useRef, useState } from \"react\"\n\ntype Space = keyof Hsla | keyof Rgba\ninterface Hsla {\n  a: number\n  h: number\n  l: number\n  s: number\n}\ninterface Rgba {\n  a: number\n  b: number\n  g: number\n  r: number\n}\ninterface Hsva {\n  a: number\n  h: number\n  s: number\n  v: number\n}\ninterface Channel {\n  label: string\n  max: number\n  min: number\n  space: Space\n  value: number\n}\n\nconst convertHsla = (value: string, fallback?: string): Hsla => {\n  let [h, s, l, a] = parseToHsla(value, fallback) ?? [0, 0, 1, 1]\n\n  if (a > 1) a = 1\n\n  return { a, h, l, s }\n}\n\nconst convertRgba = (value: string, fallback?: string): Rgba => {\n  let [r, g, b, a] = parseToRgba(value, fallback) ?? [255, 255, 255, 1]\n\n  if (r > 255) r = 255\n  if (g > 255) g = 255\n  if (b > 255) b = 255\n  if (a > 1) a = 1\n\n  return { a, b, g, r }\n}\n\nconst convertHsva = (value: string, fallback?: string): Hsva => {\n  const [h, s, v, a] = parseToHsv(value, fallback)\n\n  return { a, h, s, v }\n}\n\ninterface ColorSelectorContext {\n  channels: Channel[]\n  eyeDropperSupported: boolean\n  interactive: boolean\n  styles: { [key: string]: CSSUIObject | undefined }\n  value: string\n  withAlpha: boolean\n  getAlphaSliderProps: PropGetter<AlphaSliderProps>\n  getChannelProps: RequiredPropGetter<{ space: Space } & InputProps, InputProps>\n  getEyeDropperProps: PropGetter<\"button\">\n  getHueSliderProps: PropGetter<HueSliderProps>\n  getSwatchProps: PropGetter<ColorSwatchProps>\n  onChange: (value: Partial<Hsva> | string) => void\n  size?: ThemeProps<\"ColorSelector\">[\"size\"]\n  disabled?: boolean\n  readOnly?: boolean\n}\n\nexport const [ColorSelectorProvider, useColorSelectorContext] =\n  createContext<ColorSelectorContext>({\n    name: \"ColorSelectorContext\",\n    errorMessage: `useColorSelectorContext returned is 'undefined'. Seems you forgot to wrap the components in \"<ColorSelector />\"`,\n  })\n\ninterface UseColorSelectorOptions {\n  /**\n   * The base `id` to use for the color selector.\n   */\n  id?: string\n  /**\n   * The name attribute of the hidden `input` field.\n   * This is particularly useful in forms.\n   */\n  name?: string\n  /**\n   * The initial value of the color selector.\n   */\n  defaultValue?: string\n  /**\n   * The fallback value returned when color determination fails.\n   */\n  fallbackValue?: string\n  /**\n   * Color format. For example, `hex`, `rgba`, etc.\n   *\n   * @default \"hexa\"\n   */\n  format?: ColorFormat\n  /**\n   * The value of the color selector.\n   */\n  value?: string\n  /**\n   * Function called whenever the color selector value changes.\n   */\n  onChange?: (value: string) => void\n  /**\n   * Function called when the user is done selecting a new value.\n   */\n  onChangeEnd?: (value: string) => void\n  /**\n   * Function called when the user starts selecting a new value.\n   */\n  onChangeStart?: (value: string) => void\n  /**\n   * Function called whenever the color swatch click.\n   */\n  onSwatchClick?: (value: string) => void\n}\n\nexport interface UseColorSelectorBaseProps\n  extends UseColorSelectorOptions,\n    FormControlOptions {}\n\nexport interface UseColorSelectorProps\n  extends Omit<HTMLUIProps, \"children\" | \"defaultValue\" | \"onChange\">,\n    UseColorSelectorBaseProps {}\n\nexport const useColorSelector = ({\n  isInvalid,\n  ...props\n}: UseColorSelectorProps) => {\n  const {\n    id,\n    name,\n    defaultValue,\n    fallbackValue,\n    format: formatProp,\n    value: valueProp,\n    onChange: onChangeProp,\n    onChangeEnd: onChangeEndProp,\n    onChangeStart: onChangeStartProp,\n    onSwatchClick,\n    ...rest\n  } = useFormControlProps({ isInvalid, ...props })\n  const [\n    {\n      \"aria-readonly\": ariaReadonly,\n      disabled,\n      readOnly,\n      required,\n      ...formControlProps\n    },\n    containerProps,\n  ] = splitObject(rest, formControlProperties)\n\n  const onChangeStartRef = useCallbackRef(onChangeStartProp)\n  const onChangeEndRef = useCallbackRef(onChangeEndProp)\n  const { supported: eyeDropperSupported, onOpen } = useEyeDropper()\n  const [value, setValue] = useControllableState({\n    defaultValue: defaultValue ?? fallbackValue,\n    value: valueProp,\n    onChange: onChangeProp,\n  })\n  const format = useMemo(\n    () => formatProp ?? calcFormat(value || \"#ffffff\"),\n    [value, formatProp],\n  )\n  const resolvedValue = convertColor(value, \"#ffffff\")(format) as string\n  const timeoutId = useRef<any>(undefined)\n  const draggingRef = useRef<boolean>(false)\n  const [parsedValue, setParsedValue] = useState<Hsva>(\n    convertHsva(resolvedValue, fallbackValue),\n  )\n  const { a, h, s, v } = parsedValue\n  const withAlpha = format.endsWith(\"a\")\n  const interactive = !(disabled || readOnly)\n\n  const channels: Channel[] = useMemo(() => {\n    if (resolvedValue.startsWith(\"hsl\")) {\n      const { a, h, l, s } = convertHsla(resolvedValue, fallbackValue)\n\n      const channels: Channel[] = [\n        { label: \"H\", max: 360, min: 0, space: \"h\", value: Math.round(h) },\n        {\n          label: \"S(%)\",\n          max: 100,\n          min: 0,\n          space: \"s\",\n          value: Math.round(s * 100),\n        },\n        {\n          label: \"L(%)\",\n          max: 100,\n          min: 0,\n          space: \"l\",\n          value: Math.round(l * 100),\n        },\n      ]\n\n      if (withAlpha) {\n        channels.push({\n          label: \"A(%)\",\n          max: 100,\n          min: 0,\n          space: \"a\",\n          value: Math.round(a * 100),\n        })\n      }\n\n      return channels\n    } else {\n      const { a, b, g, r } = convertRgba(resolvedValue, fallbackValue)\n\n      const channels: Channel[] = [\n        { label: \"R\", max: 255, min: 0, space: \"r\", value: Math.round(r) },\n        { label: \"G\", max: 255, min: 0, space: \"g\", value: Math.round(g) },\n        { label: \"B\", max: 255, min: 0, space: \"b\", value: Math.round(b) },\n      ]\n\n      if (withAlpha) {\n        channels.push({\n          label: \"A(%)\",\n          max: 100,\n          min: 0,\n          space: \"a\",\n          value: Math.round(a * 100),\n        })\n      }\n\n      return channels\n    }\n  }, [resolvedValue, withAlpha, fallbackValue])\n\n  const onChange = useCallback(\n    (value: Partial<Hsva> | string) => {\n      if (isString(value)) {\n        setParsedValue(convertHsva(value, fallbackValue))\n      } else {\n        setParsedValue((prev) => ({ ...prev, ...value }))\n      }\n    },\n    [fallbackValue],\n  )\n\n  const onChangeStart = useCallback(\n    (value: Partial<Hsva>) => {\n      window.clearTimeout(timeoutId.current)\n\n      draggingRef.current = true\n\n      const { a, h, s, v } = { ...parsedValue, ...value }\n\n      const nextValue = hsvTo([h, s, v, a], fallbackValue)(format)\n\n      if (nextValue) onChangeStartRef(nextValue)\n    },\n    [onChangeStartRef, fallbackValue, parsedValue, format],\n  )\n\n  const onChangeEnd = useCallback(\n    (value: Partial<Hsva> | string) => {\n      window.clearTimeout(timeoutId.current)\n\n      timeoutId.current = window.setTimeout(() => {\n        draggingRef.current = false\n      }, 200)\n\n      let nextValue: string | undefined\n\n      if (isString(value)) {\n        nextValue = convertColor(value, fallbackValue)(format)\n      } else {\n        const { a, h, s, v } = { ...parsedValue, ...value }\n\n        nextValue = hsvTo([h, s, v, a], fallbackValue)(format)\n      }\n\n      if (nextValue) onChangeEndRef(nextValue)\n    },\n    [onChangeEndRef, fallbackValue, parsedValue, format],\n  )\n\n  const onChannelChange = useCallback(\n    (ev: ChangeEvent<HTMLInputElement>, space: Space) => {\n      let n = Math.floor(parseFloat(ev.target.value))\n\n      if (isNaN(n)) n = 0\n\n      if ([\"a\", \"l\", \"s\"].includes(space)) n = n / 100\n\n      let nextValue: string | undefined\n\n      if (resolvedValue.startsWith(\"hsl\")) {\n        const { a, h, l, s } = Object.assign(\n          convertHsla(resolvedValue, fallbackValue),\n          { [space]: n },\n        )\n\n        nextValue = hslaTo([h, s, l, a], fallbackValue)(format)\n      } else {\n        const { a, b, g, r } = Object.assign(\n          convertRgba(resolvedValue, fallbackValue),\n          { [space]: n },\n        )\n\n        nextValue = rgbaTo([r, g, b, a], fallbackValue)(format)\n      }\n\n      if (!nextValue) return\n\n      onChange(nextValue)\n      onChangeEnd(nextValue)\n    },\n    [resolvedValue, onChange, onChangeEnd, fallbackValue, format],\n  )\n\n  const onEyeDropperClick = useCallback(async () => {\n    try {\n      const { sRGBHex } = (await onOpen()) ?? {}\n\n      if (!sRGBHex) return\n\n      onChange(sRGBHex)\n      onChangeEnd(sRGBHex)\n    } catch {}\n  }, [onOpen, onChange, onChangeEnd])\n\n  useUpdateEffect(() => {\n    const nextValue = hsvTo([h, s, v, a], fallbackValue)(format)\n\n    if (nextValue) setValue(nextValue)\n  }, [h, s, v, a])\n\n  useUpdateEffect(() => {\n    if (draggingRef.current) return\n\n    if (valueProp) setParsedValue(convertHsva(valueProp, fallbackValue))\n  }, [valueProp])\n\n  useUpdateEffect(() => {\n    if (!value) return\n\n    const nextValue = convertColor(value, fallbackValue)(format)\n\n    if (nextValue) setValue(nextValue)\n  }, [format])\n\n  const getContainerProps: PropGetter = useCallback(\n    (props = {}, ref = null) => ({\n      ...props,\n      ref,\n      ...formControlProps,\n      ...containerProps,\n    }),\n    [containerProps, formControlProps],\n  )\n\n  const getInputProps: PropGetter<\"input\"> = useCallback(\n    (props = {}, ref = null) => ({\n      ...formControlProps,\n      \"aria-readonly\": ariaReadonly,\n      ...props,\n      id,\n      ref,\n      type: \"hidden\",\n      name,\n      disabled,\n      readOnly,\n      required,\n      value: resolvedValue,\n    }),\n    [\n      formControlProps,\n      ariaReadonly,\n      id,\n      name,\n      resolvedValue,\n      required,\n      disabled,\n      readOnly,\n    ],\n  )\n\n  const getSaturationSliderProps: PropGetter<SaturationSliderProps> =\n    useCallback(\n      (props = {}, ref = null) => ({\n        disabled,\n        isInvalid,\n        readOnly,\n        required,\n        ...props,\n        ref,\n        value: [h, s, v],\n        onChange: handlerAll(props.onChange, ([, s, v]) => onChange({ s, v })),\n        onChangeEnd: handlerAll(props.onChangeEnd, ([, s, v]) =>\n          onChangeEnd({ s, v }),\n        ),\n        onChangeStart: handlerAll(props.onChangeStart, ([, s, v]) =>\n          onChangeStart({ s, v }),\n        ),\n      }),\n      [\n        required,\n        disabled,\n        readOnly,\n        isInvalid,\n        h,\n        s,\n        v,\n        onChange,\n        onChangeStart,\n        onChangeEnd,\n      ],\n    )\n\n  const getHueSliderProps: PropGetter<HueSliderProps> = useCallback(\n    (props = {}, ref = null) => ({\n      disabled,\n      isInvalid,\n      readOnly,\n      required,\n      ...props,\n      ref,\n      value: h,\n      onChange: handlerAll(props.onChange, (h) => onChange({ h })),\n      onChangeEnd: handlerAll(props.onChangeEnd, (h) => onChangeEnd({ h })),\n      onChangeStart: handlerAll(props.onChangeStart, (h) =>\n        onChangeStart({ h }),\n      ),\n    }),\n    [\n      required,\n      disabled,\n      readOnly,\n      isInvalid,\n      h,\n      onChange,\n      onChangeStart,\n      onChangeEnd,\n    ],\n  )\n\n  const getAlphaSliderProps: PropGetter<AlphaSliderProps> = useCallback(\n    (props = {}, ref = null) => ({\n      disabled,\n      isInvalid,\n      readOnly,\n      required,\n      ...props,\n      ref,\n      color: hsvTo([h, s, v, a], fallbackValue)(format),\n      value: a,\n      onChange: handlerAll(props.onChange, (a) => onChange({ a })),\n      onChangeEnd: handlerAll(props.onChangeEnd, (a) => onChangeEnd({ a })),\n      onChangeStart: handlerAll(props.onChangeStart, (a) =>\n        onChangeStart({ a }),\n      ),\n    }),\n    [\n      fallbackValue,\n      required,\n      disabled,\n      readOnly,\n      isInvalid,\n      format,\n      h,\n      s,\n      v,\n      a,\n      onChange,\n      onChangeStart,\n      onChangeEnd,\n    ],\n  )\n\n  const getChannelProps: RequiredPropGetter<\n    { space: Space } & InputProps,\n    InputProps\n  > = useCallback(\n    ({ space, ...props }, ref = null) => {\n      return {\n        disabled,\n        isInvalid,\n        readOnly,\n        required,\n        ...props,\n        ref,\n        type: \"number\",\n        step: 1,\n        onChange: handlerAll(props.onChange, (ev) =>\n          onChannelChange(ev, space),\n        ),\n      } as Dict\n    },\n    [required, disabled, readOnly, isInvalid, onChannelChange],\n  )\n\n  const getEyeDropperProps: PropGetter<\"button\"> = useCallback(\n    (props = {}, ref = null) => ({\n      \"aria-label\": \"Pick a color\",\n      disabled,\n      ...props,\n      ref,\n      onClick: handlerAll(props.onClick, onEyeDropperClick),\n    }),\n    [disabled, onEyeDropperClick],\n  )\n\n  const getSwatchProps: PropGetter<ColorSwatchProps> = useCallback(\n    ({ color, ...props } = {}, ref = null) => ({\n      \"aria-label\": `Select ${color} as the color`,\n      disabled,\n      readOnly,\n      role: \"button\",\n      ...props,\n      ref,\n      color,\n      onClick: handlerAll(props.onClick, () => {\n        if (!isString(color)) return\n\n        onSwatchClick?.(color)\n        onChange(color)\n        onChangeEnd(color)\n      }),\n    }),\n    [disabled, readOnly, onSwatchClick, onChange, onChangeEnd],\n  )\n\n  return {\n    channels,\n    disabled,\n    eyeDropperSupported,\n    interactive,\n    readOnly,\n    value: resolvedValue,\n    withAlpha,\n    getAlphaSliderProps,\n    getChannelProps,\n    getContainerProps,\n    getEyeDropperProps,\n    getHueSliderProps,\n    getInputProps,\n    getSaturationSliderProps,\n    getSwatchProps,\n    onChange,\n  }\n}\n\nexport type UseColorSelectorReturn = ReturnType<typeof useColorSelector>\n"],"mappings":"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","names":["a","h","s","channels","value","v","props"]}