{"version":3,"file":"index.mjs","sources":["../src/ColorInput.tsx","../src/HighlightColorAnnotation.tsx","../src/schemas/highlightColor.tsx","../src/schemas/simplerColor.tsx","../src/TextColorAnnotation.tsx","../src/schemas/textColor.tsx","../src/index.ts"],"sourcesContent":["import {ChevronDownIcon, SearchIcon} from '@sanity/icons'\nimport {CloseIcon} from '@sanity/icons'\nimport {\n  Box,\n  Button,\n  Card,\n  Container,\n  Flex,\n  Inline,\n  Popover,\n  Stack,\n  Text,\n  TextInput,\n} from '@sanity/ui'\nimport {type ColorResult, type HsvaColor} from '@uiw/react-color'\nimport {useCallback, useEffect, useRef, useState} from 'react'\nimport {type ObjectInputProps, type ObjectOptions, type ObjectSchemaType, set, unset} from 'sanity'\n\nexport interface SimplerColorType {\n  label: string\n  value: string\n  _type?: string // included in textColor and highlightColor annotation types\n  _key?: string // included in textColor and highlightColor annotation types\n}\n\nexport type ColorFormatType = 'hex' | 'hexa' | 'rgb' | 'rgba' | 'hsl' | 'hsla'\n\nexport interface ColorOptions extends Omit<ObjectOptions, 'columns'> {\n  colorList?: Array<SimplerColorType>\n  colorFormat?: ColorFormatType\n  defaultColorList?: Array<SimplerColorType>\n  defaultColorFormat?: ColorFormatType\n  enableSearch?: boolean\n  showColorValue?: boolean\n}\n\nexport type SimplerColorSchemaType = Omit<ObjectSchemaType, 'options'> & {\n  options?: ColorOptions\n}\nexport type SimplerColorInputProps = ObjectInputProps<SimplerColorType, SimplerColorSchemaType>\n\nexport const SimplerColorInput = (props: ObjectInputProps) => {\n  const [isOpen, setIsOpen] = useState(false)\n  const [pickerIsOpen, setPickerIsOpen] = useState(false)\n  const [searchValue, setSearchValue] = useState('')\n  const {onChange} = props\n  const value = props.value as SimplerColorType | undefined\n  const type = props.schemaType as SimplerColorSchemaType\n  const showColorValue = Boolean(type.options?.showColorValue ?? true)\n  const [selectedColor, setSelectedColor] = useState<Partial<SimplerColorType> | undefined>(value)\n\n  const handleChange = useCallback(\n    (color: SimplerColorType) => {\n      setSelectedColor(color)\n      setIsOpen(false)\n      onChange(set({...props.value, ...color}))\n    },\n    [onChange, props.value],\n  )\n\n  const colorList: SimplerColorType[] =\n    type.options?.colorList || type.type?.options?.defaultColorList\n  const colorFormat = type.options?.colorFormat ?? type.type?.options?.defaultColorFormat\n  const enableSearch = Boolean(type.options?.enableSearch ?? type.type?.options?.enableSearch)\n\n  const filteredColorList = searchValue.length\n    ? colorList?.filter((color) => {\n        return color.label.toLowerCase().includes(searchValue.toLowerCase())\n      })\n    : colorList\n\n  const handlePickerChange = (color: ColorResult) => {\n    let colorValue: string\n\n    switch (colorFormat) {\n      case 'hexa':\n        colorValue = color.hexa\n        break\n      case 'rgb':\n        colorValue = `rgb(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b})`\n        break\n      case 'rgba':\n        colorValue = `rgba(${color.rgba.r}, ${color.rgba.g}, ${\n          color.rgba.b\n        }, ${color.rgba.a.toFixed(2)})`\n        break\n      case 'hsl':\n        colorValue = `hsl(${color.hsl.h.toFixed(0)}, ${color.hsl.s.toFixed(\n          0,\n        )}%, ${color.hsl.l.toFixed(0)}%)`\n        break\n      case 'hsla':\n        colorValue = `hsla(${color.hsla.h.toFixed(0)}, ${color.hsla.s.toFixed(\n          0,\n        )}%, ${color.hsla.l.toFixed(0)}%, ${color.hsla.a.toFixed(2)})`\n        break\n      default:\n        colorValue = color.hex\n        break\n    }\n\n    const formattedColor = {\n      label: 'Custom',\n      value: colorValue,\n    }\n    setSelectedColor(formattedColor)\n    onChange(set({...props.value, ...formattedColor}))\n  }\n\n  const ref = useRef<HTMLDivElement>(null)\n  useEffect(() => {\n    if (!isOpen) setSearchValue('')\n\n    const handleClickOutside = (event: MouseEvent) => {\n      if (ref.current && !ref.current.contains(event.target as Node)) {\n        setPickerIsOpen(false)\n        setIsOpen(false)\n      }\n    }\n    document.addEventListener('click', handleClickOutside, true)\n    return () => {\n      document.removeEventListener('click', handleClickOutside, true)\n    }\n  }, [isOpen, pickerIsOpen, ref])\n\n  /* @ts-expect-error we can assume type exists */\n  const isRequired: boolean = type.validation[0]._required === 'required'\n\n  const [Component, setComponent] = useState(<div>Loading...</div>)\n\n  useEffect(() => {\n    import('@uiw/react-color').then((module) => {\n      const {Chrome, rgbStringToHsva, hslStringToHsva} = module\n\n      // convert rgb and hsl strings to hsva so they can be read by the picker successfully\n      let pickerColor: string | HsvaColor = selectedColor?.value || '#ffffff'\n      if (pickerColor.startsWith('rgb')) pickerColor = rgbStringToHsva(pickerColor)\n      else if (pickerColor.startsWith('hsl')) pickerColor = hslStringToHsva(pickerColor)\n\n      setComponent(\n        <Container>\n          <Popover\n            ref={ref}\n            content={\n              <Chrome\n                onChange={handlePickerChange}\n                color={pickerColor}\n                showAlpha={colorFormat ? colorFormat.slice(-1) === 'a' : false}\n              />\n            }\n            portal\n            open={pickerIsOpen}\n          >\n            <Flex>\n              <Button\n                style={{\n                  width: '100%',\n                  textAlign: 'center',\n                  borderTopRightRadius: isRequired ? '' : '0',\n                  borderBottomRightRadius: isRequired ? '' : '0',\n                  flexShrink: 1,\n                  overflow: 'hidden',\n                }}\n                mode=\"ghost\"\n                padding={2}\n                onClick={() =>\n                  colorList && colorList.length > 0\n                    ? setIsOpen(!isOpen)\n                    : setPickerIsOpen(!pickerIsOpen)\n                }\n              >\n                <Flex justify=\"center\" gap={4}>\n                  <Flex align=\"center\" gap={1} overflow=\"hidden\">\n                    <Box style={{flexShrink: 0}}>\n                      <Card\n                        style={{backgroundColor: selectedColor?.value || '#ffffff'}}\n                        radius={2}\n                        shadow={1}\n                        padding={2}\n                        margin={1}\n                      />\n                    </Box>\n                    <Box style={{...(showColorValue && {flexShrink: 0})}}>\n                      <Text weight=\"semibold\" textOverflow=\"ellipsis\">\n                        {selectedColor?.label || 'Select a color...'}{' '}\n                      </Text>\n                    </Box>\n                    {showColorValue && (\n                      <Box>\n                        <Text textOverflow=\"ellipsis\">{selectedColor?.value}</Text>\n                      </Box>\n                    )}\n                  </Flex>\n                  <ChevronDownIcon style={{flexShrink: 0}} width={32} height={32} />\n                </Flex>\n              </Button>\n              {!isRequired && (\n                <Button\n                  mode=\"ghost\"\n                  onClick={() => {\n                    if (value !== undefined && value._key) {\n                      // we need to handle annotations differently to\n                      // prevent errors in the Portable Text editor\n                      const annotationValue = {_type: value._type, _key: value._key}\n                      setSelectedColor(annotationValue)\n                      onChange(set(annotationValue))\n                    } else {\n                      setSelectedColor(undefined)\n                      onChange(unset())\n                    }\n                  }}\n                  style={{borderTopLeftRadius: '0', borderBottomLeftRadius: '0'}}\n                >\n                  <Inline space={1}>\n                    <CloseIcon width={24} height={24} />\n                    <Text weight=\"semibold\">Clear</Text>\n                  </Inline>\n                </Button>\n              )}\n            </Flex>\n          </Popover>\n          {isOpen && colorList && (\n            <Card radius={2} shadow={3} marginTop={1} overflow=\"hidden\">\n              {enableSearch && (\n                <Box\n                  padding={3}\n                  style={{\n                    borderBottom: '1px solid var(--card-border-color)',\n                  }}\n                >\n                  <TextInput\n                    icon={SearchIcon}\n                    radius={2}\n                    placeholder=\"Search\"\n                    onChange={(event) => {\n                      setSearchValue(event.currentTarget.value)\n                    }}\n                    autoFocus\n                  />\n                </Box>\n              )}\n              <Stack>\n                {filteredColorList?.map((color: SimplerColorType) =>\n                  color.value === 'custom' ? (\n                    <Button\n                      key={color.label}\n                      radius={0}\n                      mode=\"bleed\"\n                      onClick={() => {\n                        setIsOpen(false)\n                        setPickerIsOpen(true)\n                      }}\n                    >\n                      <Text>{color.label}</Text>\n                    </Button>\n                  ) : (\n                    <Button\n                      key={color.label}\n                      radius={0}\n                      mode=\"bleed\"\n                      onClick={() => handleChange(color)}\n                    >\n                      <Box>\n                        <Inline space={3}>\n                          <Card\n                            style={{backgroundColor: color.value, width: '16px', height: '16px'}}\n                            radius={2}\n                            shadow={1}\n                          />\n                          <Text>{color.label}</Text>\n                        </Inline>\n                      </Box>\n                    </Button>\n                  ),\n                )}\n              </Stack>\n            </Card>\n          )}\n        </Container>,\n      )\n    })\n  }, [isOpen, selectedColor, searchValue, pickerIsOpen])\n\n  return Component\n}\n","import {type BlockAnnotationProps} from 'sanity'\nimport styled from 'styled-components'\n\nconst ColorSpan = styled.span<{color: string}>`\n  & > span {\n    background-color: ${({color}) => color};\n    border-bottom: unset;\n    color: inherit;\n  }\n`\n\nexport const HighlightColorAnnotation = (props: BlockAnnotationProps) => (\n  <ColorSpan color={(props.value?.['value'] as unknown as string) || ''}>\n    {props.renderDefault(props)}\n  </ColorSpan>\n)\n","import {BiHighlight} from 'react-icons/bi'\nimport {defineType} from 'sanity'\n\nimport {SimplerColorInput} from '../ColorInput'\nimport {HighlightColorAnnotation} from '../HighlightColorAnnotation'\n\nexport const highlightColor = defineType({\n  title: 'Highlight color',\n  type: 'object',\n  name: 'highlightColor',\n  icon: BiHighlight,\n  components: {\n    annotation: HighlightColorAnnotation,\n    input: SimplerColorInput,\n  },\n  fields: [\n    {\n      name: 'label',\n      type: 'string',\n    },\n    {\n      name: 'value',\n      type: 'string',\n    },\n  ],\n})\n","import {defineType} from 'sanity'\n\nimport {SimplerColorInput} from '../ColorInput'\n\nexport const simplerColor = defineType({\n  title: 'Simpler Color',\n  type: 'object',\n  name: 'simplerColor',\n  components: {input: SimplerColorInput},\n  fields: [\n    {\n      name: 'label',\n      type: 'string',\n    },\n    {\n      name: 'value',\n      type: 'string',\n    },\n  ],\n})\n","import {type BlockAnnotationProps} from 'sanity'\nimport styled from 'styled-components'\n\nconst ColorSpan = styled.span<{color: string}>`\n  & > span {\n    background-color: inherit;\n    border-bottom: unset;\n    color: ${({color}) => color};\n  }\n`\n\nexport const TextColorAnnotation = (props: BlockAnnotationProps) => (\n  <ColorSpan color={(props.value?.['value'] as unknown as string) || ''}>\n    {props.renderDefault(props)}\n  </ColorSpan>\n)\n","import {BiFontColor} from 'react-icons/bi'\nimport {defineType} from 'sanity'\n\nimport {SimplerColorInput} from '../ColorInput'\nimport {TextColorAnnotation} from '../TextColorAnnotation'\n\nexport const textColor = defineType({\n  title: 'Text color',\n  type: 'object',\n  name: 'textColor',\n  icon: BiFontColor,\n  components: {\n    annotation: TextColorAnnotation,\n    input: SimplerColorInput,\n  },\n  fields: [\n    {\n      name: 'label',\n      type: 'string',\n    },\n    {\n      name: 'value',\n      type: 'string',\n    },\n  ],\n})\n","import {definePlugin} from 'sanity'\n\nimport {type ColorFormatType} from './ColorInput'\nimport {highlightColor} from './schemas/highlightColor'\nimport {simplerColor} from './schemas/simplerColor'\nimport {textColor} from './schemas/textColor'\n\ninterface SimplerColorInputConfig {\n  defaultColorList?: Array<{label: string; value: string}>\n  defaultColorFormat?: ColorFormatType // defaults to 'hex'\n  enableSearch?: boolean // defaults to false\n  showColorValue?: boolean // default to true\n}\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {simplerColorInput} from 'sanity-plugin-simpler-color-input'\n *\n * export default defineConfig({\n *   // ...\n *   plugins: [simplerColorInput()],\n * })\n * ```\n */\nexport const simplerColorInput = definePlugin<SimplerColorInputConfig | void>((options) => {\n  return {\n    name: 'sanity-plugin-simpler-color-input',\n    schema: {\n      types: [\n        {...simplerColor, options},\n        {...textColor, options},\n        {...highlightColor, options},\n      ],\n    },\n  }\n})\n\nexport type {SimplerColorInputProps, SimplerColorSchemaType, SimplerColorType} from './ColorInput'\nexport {SimplerColorInput} from './ColorInput'\n"],"names":["ColorSpan"],"mappings":"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"}