@sanity/color-input

6.0.126.0.13
dist/_chunks-es/ColorInput.js.map
+dist/_chunks-es/ColorInput.js.mapNew file
+1
Index: package/dist/_chunks-es/ColorInput.js.map
===================================================================
--- package/dist/_chunks-es/ColorInput.js.map
+++ package/dist/_chunks-es/ColorInput.js.map
@@ -0,0 +1,1 @@
+{"version":3,"file":"ColorInput.js","names":["Flex","styled","tinycolor","Color","ColorChangeHandler","ColorListWrap","ColorBoxContainer","div","ColorBox","ValidatedColor","key","color","backgroundColor","ColorListProps","colors","Array","onChange","validateColors","seen","Set","reduce","cls","c","hex","isValid","toRgbString","JSON","stringify","has","add","push","ColorList","t0","$","_c","t1","t2","t3","background","map","checkboardCache","Record","render","c1","c2","size","serverCanvas","HTMLCanvasElement","document","canvas","createElement","width","height","ctx","getContext","fillStyle","fillRect","translate","toDataURL","get","key","cached","checkboard","ReactElement","checkboard","CheckboardRenderers","RenderersProps","EMPTY_RENDERERS","CheckboardProps","white","grey","size","borderRadius","boxShadow","Checkboard","t0","$","_c","t1","t2","t3","renderers","t4","undefined","t5","canvas","get","background","t6","t7","position","inset","AlphaColorResult","HSLColor","PickerEvent","calculateChange","e","hsl","direction","initialA","container","HTMLElement","containerWidth","clientWidth","containerHeight","clientHeight","x","touches","pageX","y","pageY","left","getBoundingClientRect","window","scrollX","top","scrollY","a","Math","round","h","s","l","source","Component","CSSProperties","ReactElement","Checkboard","alpha","AlphaColorResult","CheckboardRenderers","ColorChangeHandler","HSLColor","PickerEvent","RGBColor","AlphaProps","rgb","hsl","a","direction","radius","shadow","renderers","onChange","Alpha","container","HTMLDivElement","componentWillUnmount","unbindEventListeners","setContainerRef","node","handleChange","event","change","calculateChange","props","handleMouseDown","React","MouseEvent","nativeEvent","window","addEventListener","handleMouseUp","removeEventListener","render","alphaValue","gradient","r","g","b","pointerStyle","position","left","top","inset","borderRadius","overflow","background","boxShadow","height","margin","width","marginTop","transform","tinycolor","Color","ColorState","VALIDATION_KEYS","Set","PERCENT_PATTERN","simpleCheckForValidColor","data","checked","passed","key","value","Object","entries","has","Number","isNaN","test","String","toState","oldHue","instance","hex","hsl","toHsl","hsv","toHsv","rgb","toRgb","toHex","s","h","transparent","a","incomingHue","undefined","source","isValidHex","lh","charAt","length","isValid","PureComponent","ComponentType","ReactElement","simpleCheckForValidColor","toState","Color","ColorState","CustomPickerInjectedProps","CustomPickerProps","Diff","Pick","T","Exclude","U","DEFAULT_COLOR","h","s","l","a","CustomPicker","Picker","A","OuterProps","ColorPicker","getDerivedStateFromProps","nextProps","state","color","oldHue","constructor","props","handleChange","data","incomingHue","undefined","colors","setState","onChange","render","injected","hsl","hsv","rgb","hex","source","pickerProps","Component","ChangeEvent","CSSProperties","KeyboardEvent","ReactKeyboardEvent","ReactElement","EditableInputStyles","DEFAULT_ARROW_OFFSET","getNumberValue","value","Number","String","replace","idCounter","EditableInputEvent","HTMLInputElement","MouseEvent","EditableInputProps","label","style","arrowOffset","placeholder","hideLabel","dragLabel","dragMax","onChange","Record","event","EditableInputState","blurValue","EditableInput","inputId","input","constructor","props","initialValue","toUpperCase","state","componentDidUpdate","prevProps","prevState","nextValue","isFocused","document","activeElement","setState","componentWillUnmount","unbindEventListeners","setInputRef","getValueObjectWithLabel","getArrowOffset","setUpdatedValue","handleBlur","handleChange","target","handleKeyDown","currentTarget","isUp","key","isDown","isNaN","offset","updatedValue","handleDrag","numericValue","newValue","Math","round","movementX","undefined","handleMouseDown","React","HTMLLabelElement","preventDefault","nativeEvent","window","addEventListener","handleMouseUp","removeEventListener","render","wrapStyle","position","wrap","inputStyle","labelStyle","cursor","HSLColor","HueColorResult","PickerEvent","calculateChange","e","direction","hsl","container","HTMLElement","containerWidth","clientWidth","containerHeight","clientHeight","x","touches","pageX","y","pageY","left","getBoundingClientRect","window","scrollX","top","scrollY","h","percent","s","l","a","source","Component","CSSProperties","ReactElement","styled","hue","ColorChangeHandler","HSLColor","HueColorResult","PickerEvent","HueGradient","div","$direction","HueProps","hsl","direction","radius","shadow","onChange","Hue","container","HTMLDivElement","componentWillUnmount","unbindEventListeners","setContainerRef","node","handleChange","event","change","calculateChange","props","handleMouseDown","React","MouseEvent","nativeEvent","window","addEventListener","handleMouseUp","removeEventListener","render","pointerStyle","position","left","top","h","inset","borderRadius","boxShadow","padding","height","marginTop","width","background","transform","HSLColor","PickerEvent","SaturationColorResult","calculateChange","e","hsl","container","HTMLElement","width","containerWidth","height","containerHeight","getBoundingClientRect","x","touches","pageX","y","pageY","left","window","scrollX","top","scrollY","saturation","bright","h","s","v","a","source","throttle","Component","CSSProperties","ReactElement","styled","saturation","ColorChangeHandler","HSLColor","HSVColor","PickerEvent","SaturationColorResult","ThrottledChange","ReturnType","handler","data","SaturationWhite","div","SaturationBlack","SaturationProps","hsl","hsv","radius","shadow","onChange","Saturation","container","HTMLDivElement","componentWillUnmount","cancel","unbindEventListeners","setContainerRef","node","getContainerRenderWindow","Window","renderWindow","window","document","contains","parent","handleChange","event","props","calculateChange","handleMouseDown","React","MouseEvent","nativeEvent","addEventListener","handleMouseUp","removeEventListener","render","pointerStyle","position","top","v","left","s","cursor","inset","background","h","borderRadius","boxShadow","width","height","transform","Box","Flex","useTheme","useCallback","useMemo","Color","ColorChangeHandler","EditableInput","EditableInputStyles","HSLColor","isValidHex","RGBColor","ColorPickerFieldsProps","rgb","hsl","hex","disableAlpha","onChange","ColorPickerFields","t0","$","_c","sanity","t1","color","input","default","enabled","border","t2","fonts","text","sizes","fontSize","t3","bg","fg","width","padding","boxShadow","backgroundColor","textAlign","t4","label","t5","base","display","paddingTop","paddingBottom","textTransform","t6","inputStyles","t7","data","source","r","g","b","Number","a","alpha","h","s","l","handleChange","t8","replace","t9","t10","t11","t12","t13","t14","t15","t16","Math","round","t17","AddIcon","TrashIcon","Box","Button","Card","Flex","Inline","Stack","Text","startTransition","useOptimistic","useRef","ObjectInputProps","set","setIfMissing","unset","styled","ColorList","ColorPickerFields","Alpha","Checkboard","Color","CustomPicker","CustomPickerInjectedProps","Hue","Saturation","ColorSchemaType","ColorValue","ColorBox","ReadOnlyContainer","ColorPickerProps","width","disableAlpha","colorList","Array","readOnly","onUnset","color","ColorPickerInner","props","$","_c","t0","onChange","rgb","hex","hsv","hsl","t1","t2","position","height","background","t3","t4","Symbol","for","minWidth","t5","r","g","b","a","t6","backgroundColor","t7","h","l","s","Math","round","t8","t9","t10","t11","t12","t13","ColorPicker","DEFAULT_COLOR","source","v","ColorInput","_value","value","setColorOptimistic","type","schemaType","focusRef","handleChange","nextColor","fieldPatches","fields","filter","field","name","map","field_0","nextFieldValue","isObject","jsonType","Object","assign","_type","nextColor_0","options","undefined","Boolean"],"sources":["../../src/ColorList.tsx","../../src/react-color/helpers/checkboard.ts","../../src/react-color/Checkboard.tsx","../../src/react-color/helpers/alpha.ts","../../src/react-color/Alpha.tsx","../../src/react-color/helpers/color.ts","../../src/react-color/ColorWrap.tsx","../../src/react-color/EditableInput.tsx","../../src/react-color/helpers/hue.ts","../../src/react-color/Hue.tsx","../../src/react-color/helpers/saturation.ts","../../src/react-color/Saturation.tsx","../../src/ColorPickerFields.tsx","../../src/ColorInput.tsx"],"sourcesContent":["import {Flex} from '@sanity/ui'\nimport {styled} from 'styled-components'\nimport tinycolor from 'tinycolor2'\n\nimport type {Color, ColorChangeHandler} from './react-color'\n\nconst ColorListWrap = styled(Flex)`\n  gap: 0.25em;\n`\n\nconst ColorBoxContainer = styled.div`\n  width: 2.1em;\n  height: 2.1em;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n  border-radius: 3px;\n  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADFJREFUOE9jZGBgEGHAD97gk2YcNYBhmIQBgWSAP52AwoAQwJvQRg1gACckQoC2gQgAIF8IscwEtKYAAAAASUVORK5CYII=')\n    left center #fff;\n`\n\nconst ColorBox = styled.div`\n  border-radius: inherit;\n  box-shadow: inset 0 0 0 1px var(--card-shadow-outline-color);\n  content: '';\n  position: absolute;\n  inset: 0;\n  z-index: 1;\n`\n\ninterface ValidatedColor {\n  key: string\n  color: Color\n  backgroundColor: string\n}\n\ninterface ColorListProps {\n  colors?: Array<Color>\n  onChange: ColorChangeHandler<Color>\n}\n\nconst validateColors = (colors: Array<Color>) => {\n  const seen = new Set<string>()\n  return colors.reduce((cls: Array<ValidatedColor>, c) => {\n    // @ts-expect-error fix types later\n    const color = c.hex ? tinycolor(c.hex) : tinycolor(c)\n    if (color.isValid()) {\n      const backgroundColor = color.toRgbString()\n      const key = JSON.stringify({color: c, backgroundColor})\n      if (!seen.has(key)) {\n        seen.add(key)\n        cls.push({key, color: c, backgroundColor})\n      }\n    }\n    return cls\n  }, [])\n}\n\nexport function ColorList({colors, onChange}: ColorListProps): React.JSX.Element | null {\n  if (!colors) return null\n  return (\n    <ColorListWrap wrap=\"wrap\">\n      {validateColors(colors).map(({key, color, backgroundColor}) => (\n        <ColorBoxContainer\n          key={key}\n          onClick={() => {\n            onChange(color)\n          }}\n        >\n          <ColorBox style={{background: backgroundColor}} />\n        </ColorBoxContainer>\n      ))}\n    </ColorListWrap>\n  )\n}\n","/**\n * Renders a checkerboard pattern as a data URL, used as the transparency backdrop.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/checkboard.js | react-color's checkboard helper}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n */\n\nconst checkboardCache: Record<string, string | null> = {}\n\nfunction render(\n  c1: string,\n  c2: string,\n  size: number,\n  serverCanvas?: new () => HTMLCanvasElement,\n): string | null {\n  if (typeof document === 'undefined' && !serverCanvas) {\n    return null\n  }\n  const canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas')\n  canvas.width = size * 2\n  canvas.height = size * 2\n  const ctx = canvas.getContext('2d')\n  if (!ctx) {\n    // If no context can be found, return early.\n    return null\n  }\n  ctx.fillStyle = c1\n  ctx.fillRect(0, 0, canvas.width, canvas.height)\n  ctx.fillStyle = c2\n  ctx.fillRect(0, 0, size, size)\n  ctx.translate(size, size)\n  ctx.fillRect(0, 0, size, size)\n  return canvas.toDataURL()\n}\n\nexport function get(\n  c1: string,\n  c2: string,\n  size: number,\n  serverCanvas?: new () => HTMLCanvasElement,\n): string | null {\n  const key = `${c1}-${c2}-${size}${serverCanvas ? '-server' : ''}`\n  const cached = checkboardCache[key]\n  if (cached) {\n    return cached\n  }\n  const checkboard = render(c1, c2, size, serverCanvas)\n  checkboardCache[key] = checkboard\n  return checkboard\n}\n","/**\n * Checkerboard transparency backdrop.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/Checkboard.js | react-color's Checkboard}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE. The upstream\n * `children` cloning branch is dropped as it is unused here.\n */\nimport type {ReactElement} from 'react'\n\nimport * as checkboard from './helpers/checkboard'\nimport type {CheckboardRenderers, RenderersProps} from './types'\n\nconst EMPTY_RENDERERS: CheckboardRenderers = {}\n\nexport interface CheckboardProps extends RenderersProps {\n  white?: string | undefined\n  grey?: string | undefined\n  size?: number | undefined\n  borderRadius?: string | undefined\n  boxShadow?: string | undefined\n}\n\nexport function Checkboard({\n  white = 'transparent',\n  grey = 'rgba(0,0,0,.08)',\n  size = 8,\n  renderers = EMPTY_RENDERERS,\n  borderRadius,\n  boxShadow,\n}: CheckboardProps): ReactElement {\n  const background = checkboard.get(white, grey, size, renderers.canvas)\n  return (\n    <div\n      style={{\n        borderRadius,\n        boxShadow,\n        position: 'absolute',\n        inset: 0,\n        background: background ? `url(${background}) center left` : undefined,\n      }}\n    />\n  )\n}\n","/**\n * Translates a pointer event over the alpha track into a new alpha value.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/alpha.js | react-color's alpha helper}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n */\nimport type {AlphaColorResult, HSLColor, PickerEvent} from '../types'\n\nexport function calculateChange(\n  e: PickerEvent,\n  hsl: HSLColor,\n  direction: 'horizontal' | 'vertical' | undefined,\n  initialA: number | undefined,\n  container: HTMLElement,\n): AlphaColorResult | null {\n  const containerWidth = container.clientWidth\n  const containerHeight = container.clientHeight\n  const x = 'touches' in e ? (e.touches[0]?.pageX ?? 0) : e.pageX\n  const y = 'touches' in e ? (e.touches[0]?.pageY ?? 0) : e.pageY\n  const left = x - (container.getBoundingClientRect().left + window.scrollX)\n  const top = y - (container.getBoundingClientRect().top + window.scrollY)\n\n  if (direction === 'vertical') {\n    let a: number\n    if (top < 0) {\n      a = 0\n    } else if (top > containerHeight) {\n      a = 1\n    } else {\n      a = Math.round((top * 100) / containerHeight) / 100\n    }\n\n    if (hsl.a !== a) {\n      return {h: hsl.h, s: hsl.s, l: hsl.l, a, source: 'rgb'}\n    }\n    return null\n  }\n\n  let a: number\n  if (left < 0) {\n    a = 0\n  } else if (left > containerWidth) {\n    a = 1\n  } else {\n    a = Math.round((left * 100) / containerWidth) / 100\n  }\n\n  if (initialA !== a) {\n    return {h: hsl.h, s: hsl.s, l: hsl.l, a, source: 'rgb'}\n  }\n  return null\n}\n","/**\n * Alpha (transparency) slider.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/Alpha.js | react-color's Alpha}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n *\n * @remarks\n * Kept as a class component for this round (function-component conversion is a\n * follow-up PR). `reactcss` has been removed in favor of plain inline styles,\n * and the unused custom `pointer` slot dropped.\n */\nimport {Component} from 'react'\nimport type {CSSProperties, ReactElement} from 'react'\n\nimport {Checkboard} from './Checkboard'\nimport * as alpha from './helpers/alpha'\nimport type {\n  AlphaColorResult,\n  CheckboardRenderers,\n  ColorChangeHandler,\n  HSLColor,\n  PickerEvent,\n  RGBColor,\n} from './types'\n\nexport interface AlphaProps {\n  rgb: RGBColor\n  hsl: HSLColor\n  a?: number | undefined\n  direction?: 'horizontal' | 'vertical' | undefined\n  radius?: string | undefined\n  shadow?: string | undefined\n  renderers?: CheckboardRenderers | undefined\n  onChange?: ColorChangeHandler<AlphaColorResult> | undefined\n}\n\nexport class Alpha extends Component<AlphaProps> {\n  private container: HTMLDivElement | null = null\n\n  override componentWillUnmount(): void {\n    this.unbindEventListeners()\n  }\n\n  private readonly setContainerRef = (node: HTMLDivElement | null): void => {\n    this.container = node\n  }\n\n  private readonly handleChange = (event: PickerEvent): void => {\n    if (!this.container) {\n      return\n    }\n    const change = alpha.calculateChange(\n      event,\n      this.props.hsl,\n      this.props.direction,\n      this.props.a,\n      this.container,\n    )\n    if (change && typeof this.props.onChange === 'function') {\n      this.props.onChange(change)\n    }\n  }\n\n  private readonly handleMouseDown = (event: React.MouseEvent<HTMLDivElement>): void => {\n    this.handleChange(event.nativeEvent)\n    window.addEventListener('mousemove', this.handleChange)\n    window.addEventListener('mouseup', this.handleMouseUp)\n  }\n\n  private readonly handleMouseUp = (): void => {\n    this.unbindEventListeners()\n  }\n\n  private readonly unbindEventListeners = (): void => {\n    window.removeEventListener('mousemove', this.handleChange)\n    window.removeEventListener('mouseup', this.handleMouseUp)\n  }\n\n  override render(): ReactElement {\n    const {rgb, direction, radius, shadow, renderers} = this.props\n    const alphaValue = rgb.a ?? 1\n    const gradient =\n      direction === 'vertical'\n        ? `linear-gradient(to bottom, rgba(${rgb.r},${rgb.g},${rgb.b}, 0) 0%, rgba(${rgb.r},${rgb.g},${rgb.b}, 1) 100%)`\n        : `linear-gradient(to right, rgba(${rgb.r},${rgb.g},${rgb.b}, 0) 0%, rgba(${rgb.r},${rgb.g},${rgb.b}, 1) 100%)`\n    const pointerStyle: CSSProperties =\n      direction === 'vertical'\n        ? {position: 'absolute', left: 0, top: `${alphaValue * 100}%`}\n        : {position: 'absolute', left: `${alphaValue * 100}%`}\n\n    return (\n      <div style={{position: 'absolute', inset: 0, borderRadius: radius}}>\n        <div style={{position: 'absolute', inset: 0, overflow: 'hidden', borderRadius: radius}}>\n          <Checkboard renderers={renderers} />\n        </div>\n        <div\n          style={{\n            position: 'absolute',\n            inset: 0,\n            background: gradient,\n            boxShadow: shadow,\n            borderRadius: radius,\n          }}\n        />\n        {/* oxlint-disable-next-line jsx-a11y/no-static-element-interactions -- the slider surface is dragged via pointer coordinates, which have no keyboard equivalent */}\n        <div\n          style={{position: 'relative', height: '100%', margin: '0 3px'}}\n          ref={this.setContainerRef}\n          onMouseDown={this.handleMouseDown}\n          onTouchMove={this.handleChange}\n          onTouchStart={this.handleChange}\n        >\n          <div style={pointerStyle}>\n            <div\n              style={{\n                width: '4px',\n                borderRadius: '1px',\n                height: '8px',\n                boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n                background: '#fff',\n                marginTop: '1px',\n                transform: 'translateX(-2px)',\n              }}\n            />\n          </div>\n        </div>\n      </div>\n    )\n  }\n}\n","/**\n * Color conversion and validation helpers built on `tinycolor2`.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/color.js | react-color's color helpers}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n */\nimport tinycolor from 'tinycolor2'\n\nimport type {Color, ColorState} from '../types'\n\nconst VALIDATION_KEYS = new Set(['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'])\nconst PERCENT_PATTERN = /^\\d+%$/\n\nexport function simpleCheckForValidColor(data: Color): Color | false {\n  if (typeof data === 'string') {\n    return data\n  }\n\n  let checked = 0\n  let passed = 0\n  for (const [key, value] of Object.entries(data)) {\n    if (!VALIDATION_KEYS.has(key) || !value) {\n      continue\n    }\n    checked += 1\n    if (!Number.isNaN(Number(value))) {\n      passed += 1\n    }\n    if ((key === 's' || key === 'l') && PERCENT_PATTERN.test(String(value))) {\n      passed += 1\n    }\n  }\n\n  return checked === passed ? data : false\n}\n\nexport function toState(data: Color, oldHue?: number): ColorState {\n  const instance =\n    typeof data === 'string'\n      ? tinycolor(data)\n      : 'hex' in data\n        ? tinycolor(data.hex)\n        : tinycolor(data)\n  const hsl = instance.toHsl()\n  const hsv = instance.toHsv()\n  const rgb = instance.toRgb()\n  const hex = instance.toHex()\n\n  if (hsl.s === 0) {\n    hsl.h = oldHue ?? 0\n    hsv.h = oldHue ?? 0\n  }\n\n  const transparent = hex === '000000' && rgb.a === 0\n  const incomingHue = typeof data === 'string' ? undefined : 'h' in data ? data.h : undefined\n  const source = typeof data === 'string' ? undefined : data.source\n\n  return {\n    hsl,\n    hex: transparent ? 'transparent' : `#${hex}`,\n    rgb,\n    hsv,\n    oldHue: incomingHue || oldHue || hsl.h,\n    source: source ?? '',\n  }\n}\n\nexport function isValidHex(hex: string): boolean {\n  if (hex === 'transparent') {\n    return true\n  }\n  // Disallow hex4 and hex8 (with alpha) to match the original behavior.\n  const lh = hex.charAt(0) === '#' ? 1 : 0\n  return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid()\n}\n","/**\n * `CustomPicker` higher-order component: manages color state and injects the\n * normalized color (`hsl`/`hsv`/`rgb`/`hex`) plus an `onChange` handler into the\n * wrapped picker.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/ColorWrap.js | react-color's ColorWrap}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n *\n * @remarks\n * Kept as a class component for this round (function-component conversion is a\n * follow-up PR). `prop-types` and the unused `lodash` `debounce` of\n * `onChangeComplete` have been removed.\n */\nimport {PureComponent} from 'react'\nimport type {ComponentType, ReactElement} from 'react'\n\nimport {simpleCheckForValidColor, toState} from './helpers/color'\nimport type {Color, ColorState, CustomPickerInjectedProps, CustomPickerProps} from './types'\n\ntype Diff<T, U> = Pick<T, Exclude<keyof T, keyof U>>\n\nconst DEFAULT_COLOR: Color = {h: 250, s: 0.5, l: 0.2, a: 1}\n\nexport function CustomPicker<A extends object>(\n  Picker: ComponentType<A & CustomPickerInjectedProps>,\n): ComponentType<Diff<A, CustomPickerProps> & CustomPickerProps> {\n  type OuterProps = Diff<A, CustomPickerProps> & CustomPickerProps\n\n  class ColorPicker extends PureComponent<OuterProps, ColorState> {\n    static getDerivedStateFromProps(nextProps: CustomPickerProps, state: ColorState): ColorState {\n      return {...toState(nextProps.color ?? DEFAULT_COLOR, state.oldHue)}\n    }\n\n    constructor(props: OuterProps) {\n      super(props)\n      this.state = {...toState(props.color ?? DEFAULT_COLOR, 0)}\n    }\n\n    private readonly handleChange = (data: Color): void => {\n      if (!simpleCheckForValidColor(data)) {\n        return\n      }\n      const incomingHue = typeof data === 'string' ? undefined : 'h' in data ? data.h : undefined\n      const colors = toState(data, incomingHue || this.state.oldHue)\n      this.setState(colors)\n      this.props.onChange?.(colors)\n    }\n\n    override render(): ReactElement {\n      const injected: CustomPickerInjectedProps = {\n        hsl: this.state.hsl,\n        hsv: this.state.hsv,\n        rgb: this.state.rgb,\n        hex: this.state.hex,\n        oldHue: this.state.oldHue,\n        source: this.state.source,\n        onChange: this.handleChange,\n      }\n      // The merged props satisfy the wrapped picker's contract at runtime, but the\n      // generic `Diff` plumbing can't be expressed to the type-checker.\n      // oxlint-disable-next-line no-unsafe-type-assertion\n      const pickerProps = {...this.props, ...injected} as A & CustomPickerInjectedProps\n      return <Picker {...pickerProps} />\n    }\n  }\n\n  return ColorPicker\n}\n","/**\n * Labeled text input with arrow-key stepping and drag-to-change support.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/EditableInput.js | react-color's EditableInput}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n *\n * @remarks\n * Kept as a class component for this round; converting to a function component\n * (with `useId`, `useRef`, etc.) is deferred to a follow-up PR. `reactcss` and\n * `prop-types` have been removed, and deprecated `keyCode` checks replaced with\n * `event.key`.\n */\nimport {Component} from 'react'\nimport type {\n  ChangeEvent,\n  CSSProperties,\n  KeyboardEvent as ReactKeyboardEvent,\n  ReactElement,\n} from 'react'\n\nimport type {EditableInputStyles} from './types'\n\nconst DEFAULT_ARROW_OFFSET = 1\n\nconst getNumberValue = (value: string | number): number => Number(String(value).replace(/%/g, ''))\n\nlet idCounter = 1\n\ntype EditableInputEvent =\n  | ChangeEvent<HTMLInputElement>\n  | ReactKeyboardEvent<HTMLInputElement>\n  | MouseEvent\n\nexport interface EditableInputProps {\n  label: string\n  value?: string | number | undefined\n  style?: EditableInputStyles | undefined\n  arrowOffset?: number | undefined\n  placeholder?: string | undefined\n  hideLabel?: boolean | undefined\n  dragLabel?: boolean | undefined\n  dragMax?: number | undefined\n  onChange?: ((value: Record<string, string>, event: EditableInputEvent) => void) | undefined\n}\n\ninterface EditableInputState {\n  value: string\n  blurValue: string\n}\n\nexport class EditableInput extends Component<EditableInputProps, EditableInputState> {\n  private readonly inputId: string\n  private input: HTMLInputElement | null = null\n\n  constructor(props: EditableInputProps) {\n    super(props)\n    const initialValue = String(props.value ?? '').toUpperCase()\n    this.state = {value: initialValue, blurValue: initialValue}\n    this.inputId = `rc-editable-input-${idCounter++}`\n  }\n\n  override componentDidUpdate(prevProps: EditableInputProps, prevState: EditableInputState): void {\n    if (\n      this.props.value !== this.state.value &&\n      (prevProps.value !== this.props.value || prevState.value !== this.state.value)\n    ) {\n      const nextValue = String(this.props.value ?? '').toUpperCase()\n      const isFocused = this.input === document.activeElement\n      // Sync the controlled value into local state, but only when the input is\n      // not focused so we don't clobber what the user is typing. This needs a\n      // post-update `activeElement` check that `getDerivedStateFromProps` can't do.\n      // oxlint-disable-next-line react/no-did-update-set-state\n      this.setState(\n        isFocused\n          ? {blurValue: nextValue}\n          : {value: nextValue, blurValue: this.state.blurValue ? '' : nextValue},\n      )\n    }\n  }\n\n  override componentWillUnmount(): void {\n    this.unbindEventListeners()\n  }\n\n  private readonly setInputRef = (input: HTMLInputElement | null): void => {\n    this.input = input\n  }\n\n  private readonly getValueObjectWithLabel = (value: string | number): Record<string, string> => {\n    return {[this.props.label]: String(value)}\n  }\n\n  private readonly getArrowOffset = (): number => this.props.arrowOffset ?? DEFAULT_ARROW_OFFSET\n\n  private readonly setUpdatedValue = (value: string | number, event: EditableInputEvent): void => {\n    this.props.onChange?.(this.getValueObjectWithLabel(value), event)\n    this.setState({value: String(value)})\n  }\n\n  private readonly handleBlur = (): void => {\n    if (this.state.blurValue) {\n      this.setState({value: this.state.blurValue, blurValue: ''})\n    }\n  }\n\n  private readonly handleChange = (event: ChangeEvent<HTMLInputElement>): void => {\n    this.setUpdatedValue(event.target.value, event)\n  }\n\n  private readonly handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>): void => {\n    // If `event.target.value` is a percentage, drop the `%` before stepping.\n    // https://github.com/casesandberg/react-color/issues/383\n    const value = getNumberValue(event.currentTarget.value)\n    const isUp = event.key === 'ArrowUp'\n    const isDown = event.key === 'ArrowDown'\n    if (!Number.isNaN(value) && (isUp || isDown)) {\n      const offset = this.getArrowOffset()\n      const updatedValue = isUp ? value + offset : value - offset\n      this.setUpdatedValue(updatedValue, event)\n    }\n  }\n\n  private readonly handleDrag = (event: MouseEvent): void => {\n    if (!this.props.dragLabel) {\n      return\n    }\n    const {dragMax, value} = this.props\n    const numericValue = typeof value === 'number' ? value : Number(value)\n    const newValue = Math.round(numericValue + event.movementX)\n    if (dragMax !== undefined && newValue >= 0 && newValue <= dragMax) {\n      this.props.onChange?.(this.getValueObjectWithLabel(newValue), event)\n    }\n  }\n\n  private readonly handleMouseDown = (event: React.MouseEvent<HTMLLabelElement>): void => {\n    if (!this.props.dragLabel) {\n      return\n    }\n    event.preventDefault()\n    this.handleDrag(event.nativeEvent)\n    window.addEventListener('mousemove', this.handleDrag)\n    window.addEventListener('mouseup', this.handleMouseUp)\n  }\n\n  private readonly handleMouseUp = (): void => {\n    this.unbindEventListeners()\n  }\n\n  private readonly unbindEventListeners = (): void => {\n    window.removeEventListener('mousemove', this.handleDrag)\n    window.removeEventListener('mouseup', this.handleMouseUp)\n  }\n\n  override render(): ReactElement {\n    const style = this.props.style ?? {}\n    const wrapStyle: CSSProperties = {position: 'relative', ...style.wrap}\n    const inputStyle: CSSProperties = {...style.input}\n    const labelStyle: CSSProperties = {\n      ...style.label,\n      ...(this.props.dragLabel ? {cursor: 'ew-resize'} : null),\n    }\n\n    return (\n      <div style={wrapStyle}>\n        <input\n          id={this.inputId}\n          style={inputStyle}\n          ref={this.setInputRef}\n          value={this.state.value}\n          onKeyDown={this.handleKeyDown}\n          onChange={this.handleChange}\n          onBlur={this.handleBlur}\n          placeholder={this.props.placeholder}\n          spellCheck=\"false\"\n        />\n        {this.props.label && !this.props.hideLabel ? (\n          // oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- the label is a drag affordance using pointer coordinates; the input also supports arrow-key stepping\n          <label htmlFor={this.inputId} style={labelStyle} onMouseDown={this.handleMouseDown}>\n            {this.props.label}\n          </label>\n        ) : null}\n      </div>\n    )\n  }\n}\n","/**\n * Translates a pointer event over the hue track into a new hue value.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/hue.js | react-color's hue helper}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n */\nimport type {HSLColor, HueColorResult, PickerEvent} from '../types'\n\nexport function calculateChange(\n  e: PickerEvent,\n  direction: 'horizontal' | 'vertical' | undefined,\n  hsl: HSLColor,\n  container: HTMLElement,\n): HueColorResult | null {\n  const containerWidth = container.clientWidth\n  const containerHeight = container.clientHeight\n  const x = 'touches' in e ? (e.touches[0]?.pageX ?? 0) : e.pageX\n  const y = 'touches' in e ? (e.touches[0]?.pageY ?? 0) : e.pageY\n  const left = x - (container.getBoundingClientRect().left + window.scrollX)\n  const top = y - (container.getBoundingClientRect().top + window.scrollY)\n\n  if (direction === 'vertical') {\n    let h: number\n    if (top < 0) {\n      h = 359\n    } else if (top > containerHeight) {\n      h = 0\n    } else {\n      const percent = -((top * 100) / containerHeight) + 100\n      h = (360 * percent) / 100\n    }\n\n    if (hsl.h !== h) {\n      return {h, s: hsl.s, l: hsl.l, a: hsl.a ?? 1, source: 'hsl'}\n    }\n    return null\n  }\n\n  let h: number\n  if (left < 0) {\n    h = 0\n  } else if (left > containerWidth) {\n    h = 359\n  } else {\n    const percent = (left * 100) / containerWidth\n    h = (360 * percent) / 100\n  }\n\n  if (hsl.h !== h) {\n    return {h, s: hsl.s, l: hsl.l, a: hsl.a ?? 1, source: 'hsl'}\n  }\n  return null\n}\n","/**\n * Hue slider.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/Hue.js | react-color's Hue}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n *\n * @remarks\n * Kept as a class component for this round (function-component conversion is a\n * follow-up PR). The upstream raw `<style>` tag holding the static hue gradient\n * has been replaced with a `styled-components` element, and `reactcss` removed.\n */\nimport {Component} from 'react'\nimport type {CSSProperties, ReactElement} from 'react'\nimport {styled} from 'styled-components'\n\nimport * as hue from './helpers/hue'\nimport type {ColorChangeHandler, HSLColor, HueColorResult, PickerEvent} from './types'\n\nconst HueGradient = styled.div<{$direction: 'horizontal' | 'vertical'}>`\n  background: ${({$direction}) =>\n    $direction === 'vertical'\n      ? 'linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)'\n      : 'linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)'};\n`\n\nexport interface HueProps {\n  hsl: HSLColor\n  direction?: 'horizontal' | 'vertical' | undefined\n  radius?: string | undefined\n  shadow?: string | undefined\n  onChange?: ColorChangeHandler<HueColorResult> | undefined\n}\n\nexport class Hue extends Component<HueProps> {\n  private container: HTMLDivElement | null = null\n\n  override componentWillUnmount(): void {\n    this.unbindEventListeners()\n  }\n\n  private readonly setContainerRef = (node: HTMLDivElement | null): void => {\n    this.container = node\n  }\n\n  private readonly handleChange = (event: PickerEvent): void => {\n    if (!this.container) {\n      return\n    }\n    const change = hue.calculateChange(event, this.props.direction, this.props.hsl, this.container)\n    if (change && typeof this.props.onChange === 'function') {\n      this.props.onChange(change)\n    }\n  }\n\n  private readonly handleMouseDown = (event: React.MouseEvent<HTMLDivElement>): void => {\n    this.handleChange(event.nativeEvent)\n    window.addEventListener('mousemove', this.handleChange)\n    window.addEventListener('mouseup', this.handleMouseUp)\n  }\n\n  private readonly handleMouseUp = (): void => {\n    this.unbindEventListeners()\n  }\n\n  private readonly unbindEventListeners = (): void => {\n    window.removeEventListener('mousemove', this.handleChange)\n    window.removeEventListener('mouseup', this.handleMouseUp)\n  }\n\n  override render(): ReactElement {\n    const {hsl, direction = 'horizontal', radius, shadow} = this.props\n    const pointerStyle: CSSProperties =\n      direction === 'vertical'\n        ? {position: 'absolute', left: '0px', top: `${-((hsl.h * 100) / 360) + 100}%`}\n        : {position: 'absolute', left: `${(hsl.h * 100) / 360}%`}\n\n    return (\n      <div style={{position: 'absolute', inset: 0, borderRadius: radius, boxShadow: shadow}}>\n        <HueGradient\n          $direction={direction}\n          style={{padding: '0 2px', position: 'relative', height: '100%', borderRadius: radius}}\n          ref={this.setContainerRef}\n          onMouseDown={this.handleMouseDown}\n          onTouchMove={this.handleChange}\n          onTouchStart={this.handleChange}\n        >\n          <div style={pointerStyle}>\n            <div\n              style={{\n                marginTop: '1px',\n                width: '4px',\n                borderRadius: '1px',\n                height: '8px',\n                boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n                background: '#fff',\n                transform: 'translateX(-2px)',\n              }}\n            />\n          </div>\n        </HueGradient>\n      </div>\n    )\n  }\n}\n","/**\n * Translates a pointer event over the saturation/value box into a new color.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/saturation.js | react-color's saturation helper}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n */\nimport type {HSLColor, PickerEvent, SaturationColorResult} from '../types'\n\nexport function calculateChange(\n  e: PickerEvent,\n  hsl: HSLColor,\n  container: HTMLElement,\n): SaturationColorResult {\n  const {width: containerWidth, height: containerHeight} = container.getBoundingClientRect()\n  const x = 'touches' in e ? (e.touches[0]?.pageX ?? 0) : e.pageX\n  const y = 'touches' in e ? (e.touches[0]?.pageY ?? 0) : e.pageY\n  let left = x - (container.getBoundingClientRect().left + window.scrollX)\n  let top = y - (container.getBoundingClientRect().top + window.scrollY)\n\n  if (left < 0) {\n    left = 0\n  } else if (left > containerWidth) {\n    left = containerWidth\n  }\n\n  if (top < 0) {\n    top = 0\n  } else if (top > containerHeight) {\n    top = containerHeight\n  }\n\n  const saturation = left / containerWidth\n  const bright = 1 - top / containerHeight\n\n  return {h: hsl.h, s: saturation, v: bright, a: hsl.a ?? 1, source: 'hsv'}\n}\n","/**\n * Saturation / value box.\n *\n * Forked from\n * {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/Saturation.js | react-color's Saturation}\n * (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.\n *\n * @remarks\n * Kept as a class component for this round (function-component conversion is a\n * follow-up PR). The upstream raw `<style>` tag holding the static white/black\n * gradients has been replaced with `styled-components` elements, `reactcss`\n * removed, and `lodash` swapped for `lodash-es`.\n */\nimport throttle from 'lodash-es/throttle'\nimport {Component} from 'react'\nimport type {CSSProperties, ReactElement} from 'react'\nimport {styled} from 'styled-components'\n\nimport * as saturation from './helpers/saturation'\nimport type {\n  ColorChangeHandler,\n  HSLColor,\n  HSVColor,\n  PickerEvent,\n  SaturationColorResult,\n} from './types'\n\ntype ThrottledChange = ReturnType<\n  typeof throttle<\n    (handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult) => void\n  >\n>\n\nconst SaturationWhite = styled.div`\n  background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0));\n`\n\nconst SaturationBlack = styled.div`\n  background: linear-gradient(to top, #000, rgba(0, 0, 0, 0));\n`\n\nexport interface SaturationProps {\n  hsl: HSLColor\n  hsv: HSVColor\n  radius?: string | undefined\n  shadow?: string | undefined\n  onChange?: ColorChangeHandler<SaturationColorResult> | undefined\n}\n\nexport class Saturation extends Component<SaturationProps> {\n  private container: HTMLDivElement | null = null\n\n  private readonly throttle: ThrottledChange = throttle(\n    (handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult): void => {\n      handler(data)\n    },\n    50,\n  )\n\n  override componentWillUnmount(): void {\n    this.throttle.cancel()\n    this.unbindEventListeners()\n  }\n\n  private readonly setContainerRef = (node: HTMLDivElement | null): void => {\n    this.container = node\n  }\n\n  private getContainerRenderWindow(): Window {\n    const {container} = this\n    let renderWindow: Window = window\n    while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n      renderWindow = renderWindow.parent\n    }\n    return renderWindow\n  }\n\n  private readonly handleChange = (event: PickerEvent): void => {\n    if (!this.container || typeof this.props.onChange !== 'function') {\n      return\n    }\n    this.throttle(\n      this.props.onChange,\n      saturation.calculateChange(event, this.props.hsl, this.container),\n    )\n  }\n\n  private readonly handleMouseDown = (event: React.MouseEvent<HTMLDivElement>): void => {\n    this.handleChange(event.nativeEvent)\n    const renderWindow = this.getContainerRenderWindow()\n    renderWindow.addEventListener('mousemove', this.handleChange)\n    renderWindow.addEventListener('mouseup', this.handleMouseUp)\n  }\n\n  private readonly handleMouseUp = (): void => {\n    this.unbindEventListeners()\n  }\n\n  private readonly unbindEventListeners = (): void => {\n    const renderWindow = this.getContainerRenderWindow()\n    renderWindow.removeEventListener('mousemove', this.handleChange)\n    renderWindow.removeEventListener('mouseup', this.handleMouseUp)\n  }\n\n  override render(): ReactElement {\n    const {hsl, hsv, radius, shadow} = this.props\n    const pointerStyle: CSSProperties = {\n      position: 'absolute',\n      top: `${-(hsv.v * 100) + 100}%`,\n      left: `${hsv.s * 100}%`,\n      cursor: 'default',\n    }\n\n    return (\n      // oxlint-disable-next-line jsx-a11y/no-static-element-interactions -- the picker surface is dragged via pointer coordinates, which have no keyboard equivalent\n      <div\n        style={{\n          position: 'absolute',\n          inset: 0,\n          background: `hsl(${hsl.h},100%, 50%)`,\n          borderRadius: radius,\n        }}\n        ref={this.setContainerRef}\n        onMouseDown={this.handleMouseDown}\n        onTouchMove={this.handleChange}\n        onTouchStart={this.handleChange}\n      >\n        <SaturationWhite style={{position: 'absolute', inset: 0, borderRadius: radius}}>\n          <SaturationBlack\n            style={{position: 'absolute', inset: 0, boxShadow: shadow, borderRadius: radius}}\n          />\n          <div style={pointerStyle}>\n            <div\n              style={{\n                width: '4px',\n                height: '4px',\n                boxShadow:\n                  '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3), 0 0 1px 2px rgba(0,0,0,.4)',\n                borderRadius: '50%',\n                cursor: 'pointer',\n                transform: 'translate(-2px, -2px)',\n              }}\n            />\n          </div>\n        </SaturationWhite>\n      </div>\n    )\n  }\n}\n","import {Box, Flex, useTheme} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\n\nimport {\n  type Color,\n  type ColorChangeHandler,\n  EditableInput,\n  type EditableInputStyles,\n  type HSLColor,\n  isValidHex,\n  type RGBColor,\n} from './react-color'\n\ninterface ColorPickerFieldsProps {\n  rgb?: RGBColor\n  hsl?: HSLColor\n  hex?: string\n  disableAlpha: boolean\n  onChange: ColorChangeHandler<Color>\n}\n\nexport const ColorPickerFields = ({\n  onChange,\n  rgb,\n  hsl,\n  hex,\n  disableAlpha,\n}: ColorPickerFieldsProps): React.JSX.Element => {\n  const {sanity} = useTheme()\n\n  const inputStyles: EditableInputStyles = useMemo(\n    () => ({\n      input: {\n        width: '80%',\n        padding: '4px 10% 3px',\n        border: 'none',\n        // TODO: when upgrading to @sanity/ui@4 start using the new tokens\n        // oxlint-disable-next-line typescript/no-deprecated\n        boxShadow: `inset 0 0 0 1px ${sanity.color.input.default.enabled.border}`,\n        // oxlint-disable-next-line typescript/no-deprecated\n        color: sanity.color.input.default.enabled.fg,\n        // oxlint-disable-next-line typescript/no-deprecated\n        backgroundColor: sanity.color.input.default.enabled.bg,\n        // oxlint-disable-next-line typescript/no-deprecated\n        fontSize: sanity.fonts.text.sizes[0]?.fontSize,\n        textAlign: 'center',\n      },\n      label: {\n        display: 'block',\n        textAlign: 'center',\n        // oxlint-disable-next-line typescript/no-deprecated\n        fontSize: sanity.fonts.label.sizes[0]?.fontSize,\n        // oxlint-disable-next-line typescript/no-deprecated\n        color: sanity.color.base.fg,\n        paddingTop: '3px',\n        paddingBottom: '4px',\n        textTransform: 'capitalize',\n      },\n    }),\n    [sanity],\n  )\n\n  const handleChange: ColorChangeHandler<Record<string, string>> = useCallback(\n    (data) => {\n      if ('hex' in data && data['hex'] && isValidHex(data['hex'])) {\n        onChange({\n          hex: data['hex'],\n          source: 'hex',\n        })\n      } else if (\n        rgb &&\n        (('r' in data && data['r']) || ('g' in data && data['g']) || ('b' in data && data['b']))\n      ) {\n        onChange({\n          r: Number(data['r']) || rgb.r,\n          g: Number(data['g']) || rgb.g,\n          b: Number(data['b']) || rgb.b,\n          a: rgb.a,\n          source: 'rgb',\n        })\n      } else if (hsl && 'a' in data && data['a']) {\n        let alpha = Number(data['a'])\n        if (alpha < 0) {\n          alpha = 0\n        } else if (alpha > 100) {\n          alpha = 100\n        }\n        alpha /= 100\n\n        onChange({\n          h: hsl.h,\n          s: hsl.s,\n          l: hsl.l,\n          a: alpha,\n          source: 'hsl',\n        })\n      }\n    },\n    [onChange, hsl, rgb],\n  )\n\n  return (\n    <Flex>\n      <Box flex={2} marginRight={1}>\n        <EditableInput\n          style={inputStyles}\n          label=\"hex\"\n          value={hex?.replace('#', '')}\n          onChange={handleChange}\n        />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput\n          style={inputStyles}\n          label=\"r\"\n          value={rgb?.r}\n          onChange={handleChange}\n          dragLabel\n          dragMax={255}\n        />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput\n          style={inputStyles}\n          label=\"g\"\n          value={rgb?.g}\n          onChange={handleChange}\n          dragLabel\n          dragMax={255}\n        />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput\n          style={inputStyles}\n          label=\"b\"\n          value={rgb?.b}\n          onChange={handleChange}\n          dragLabel\n          dragMax={255}\n        />\n      </Box>\n      {!disableAlpha && (\n        <Box flex={1}>\n          <EditableInput\n            style={inputStyles}\n            label=\"a\"\n            value={Math.round((rgb?.a ?? 1) * 100)}\n            onChange={handleChange}\n            dragLabel\n            dragMax={100}\n          />\n        </Box>\n      )}\n    </Flex>\n  )\n}\n","import {AddIcon} from '@sanity/icons/Add'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {Box, Button, Card, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {startTransition, useOptimistic, useRef} from 'react'\nimport {type ObjectInputProps, set, setIfMissing, unset} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {ColorList} from './ColorList'\nimport {ColorPickerFields} from './ColorPickerFields'\nimport {\n  Alpha,\n  Checkboard,\n  type Color,\n  CustomPicker,\n  type CustomPickerInjectedProps,\n  Hue,\n  Saturation,\n} from './react-color'\nimport type {ColorSchemaType, ColorValue} from './types'\n\nconst ColorBox = styled(Box)`\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n`\n\nconst ReadOnlyContainer = styled(Flex)`\n  margin-top: 6rem;\n  background-color: var(--card-bg-color);\n  position: relative;\n  width: 100%;\n`\n\ninterface ColorPickerProps extends CustomPickerInjectedProps<Color> {\n  width?: string\n  disableAlpha: boolean\n  colorList?: Array<Color> | undefined\n  readOnly?: boolean\n  onUnset: () => void\n  color: ColorValue\n}\n\nconst ColorPickerInner = (props: ColorPickerProps) => {\n  const {\n    width,\n    color: {rgb, hex, hsv, hsl},\n    onChange,\n    onUnset,\n    disableAlpha,\n    colorList,\n    readOnly,\n  } = props\n\n  if (!hsl || !hsv) {\n    return null\n  }\n\n  return (\n    <div style={{width}}>\n      <Card padding={1} border radius={1}>\n        <Stack gap={2}>\n          {!readOnly && (\n            <>\n              <Card overflow=\"hidden\" style={{position: 'relative', height: '5em'}}>\n                <Saturation onChange={onChange} hsl={hsl} hsv={hsv} />\n              </Card>\n\n              <Card\n                shadow={1}\n                radius={3}\n                overflow=\"hidden\"\n                style={{position: 'relative', height: '10px'}}\n              >\n                <Hue hsl={hsl} onChange={!readOnly && onChange} />\n              </Card>\n\n              {!disableAlpha && (\n                <Card\n                  shadow={1}\n                  radius={3}\n                  overflow=\"hidden\"\n                  style={{position: 'relative', height: '10px', background: '#fff'}}\n                >\n                  <Alpha rgb={rgb} hsl={hsl} onChange={onChange} />\n                </Card>\n              )}\n            </>\n          )}\n          <Flex>\n            <Card\n              flex={1}\n              radius={2}\n              overflow=\"hidden\"\n              style={{position: 'relative', minWidth: '4em', background: '#fff'}}\n            >\n              <Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />\n              <ColorBox\n                style={{\n                  backgroundColor: `rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`,\n                }}\n              />\n\n              {readOnly && (\n                <ReadOnlyContainer\n                  padding={2}\n                  paddingBottom={1}\n                  sizing=\"border\"\n                  justify=\"space-between\"\n                >\n                  <Stack gap={3} marginTop={1}>\n                    <Text size={3} weight=\"bold\">\n                      {hex}\n                    </Text>\n\n                    <Inline gap={3}>\n                      <Text size={1}>\n                        <strong>RGB: </strong>\n                        {rgb?.r} {rgb?.g} {rgb?.b}\n                      </Text>\n                      <Text size={1}>\n                        <strong>HSL: </strong> {Math.round(hsl?.h ?? 0)}{' '}\n                        {Math.round((hsl?.s ?? 0) * 100)}% {Math.round((hsl?.l ?? 0) * 100)}%\n                      </Text>\n                    </Inline>\n                  </Stack>\n                </ReadOnlyContainer>\n              )}\n            </Card>\n\n            {!readOnly && (\n              <Flex align=\"flex-start\" marginLeft={2}>\n                <Box style={{width: 200}}>\n                  <ColorPickerFields\n                    rgb={rgb}\n                    hsl={hsl}\n                    hex={hex}\n                    onChange={onChange}\n                    disableAlpha={disableAlpha}\n                  />\n                </Box>\n                <Box marginLeft={2}>\n                  <Button onClick={onUnset} title=\"Delete color\" icon={TrashIcon} tone=\"critical\" />\n                </Box>\n              </Flex>\n            )}\n          </Flex>\n          {colorList && <ColorList colors={colorList} onChange={onChange} />}\n        </Stack>\n      </Card>\n    </div>\n  )\n}\n\nconst ColorPicker = CustomPicker(ColorPickerInner)\n\nconst DEFAULT_COLOR: ColorValue & {source: string} = {\n  hex: '#24a3e3',\n  hsl: {h: 200, s: 0.7732, l: 0.5156, a: 1},\n  hsv: {h: 200, s: 0.8414, v: 0.8901, a: 1},\n  rgb: {r: 46, g: 163, b: 227, a: 1},\n  source: 'hex',\n}\n\nexport default function ColorInput(props: ObjectInputProps): React.JSX.Element {\n  const {onChange, readOnly} = props\n  // oxlint-disable-next-line no-unsafe-type-assertion\n  const _value = props.value as ColorValue | undefined\n  const [value, setColorOptimistic] = useOptimistic(_value)\n  const type = props.schemaType as ColorSchemaType\n  const focusRef = useRef<HTMLButtonElement>(null)\n\n  function handleChange(nextColor: ColorValue) {\n    const fieldPatches = type.fields\n      .filter((field) => field.name in nextColor)\n      .map((field) => {\n        // oxlint-disable-next-line no-unsafe-type-assertion\n        const nextFieldValue = nextColor[field.name as keyof ColorValue]\n        const isObject = field.type.jsonType === 'object'\n        return set(\n          isObject ? Object.assign({_type: field.type.name}, nextFieldValue) : nextFieldValue,\n          [field.name],\n        )\n      })\n\n    onChange([\n      setIfMissing({_type: type.name}),\n      set(type.name, ['_type']),\n      set(nextColor.rgb?.a, ['alpha']),\n      ...fieldPatches,\n    ])\n  }\n\n  return (\n    <>\n      {value && value.hex ? (\n        <ColorPicker\n          color={value}\n          onChange={(nextColor) =>\n            startTransition(() => {\n              setColorOptimistic(nextColor)\n              handleChange(nextColor)\n            })\n          }\n          readOnly={readOnly || (typeof type.readOnly === 'boolean' && type.readOnly)}\n          disableAlpha={!!type.options?.disableAlpha}\n          colorList={type.options?.colorList}\n          onUnset={() =>\n            startTransition(() => {\n              setColorOptimistic(undefined)\n              onChange(unset())\n            })\n          }\n        />\n      ) : (\n        <Button\n          icon={AddIcon}\n          mode=\"ghost\"\n          text=\"Create color\"\n          ref={focusRef}\n          disabled={Boolean(readOnly)}\n          onClick={() =>\n            startTransition(() => {\n              setColorOptimistic(DEFAULT_COLOR)\n              handleChange(DEFAULT_COLOR)\n            })\n          }\n        />\n      )}\n    </>\n  )\n}\n"],"mappings":"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"}
\ No newline at end of file