@sanity/color-input

6.1.36.1.4
dist/ColorInput-CMhbbfkK.js.map
+dist/ColorInput-CMhbbfkK.js.mapNew file
+1
Index: package/dist/ColorInput-CMhbbfkK.js.map
===================================================================
--- package/dist/ColorInput-CMhbbfkK.js.map
+++ package/dist/ColorInput-CMhbbfkK.js.map
@@ -0,0 +1,1 @@
+{"version":3,"file":"ColorInput-CMhbbfkK.js","names":["<Flex {...props} className={colorListWrap} />","<div {...props} className={colorBoxContainer} />","{backgroundColor}: {backgroundColor: string}","assignInlineVars({[swatchBackgroundVar]: backgroundColor})","<div className={colorBox} style={assignInlineVars({[swatchBackgroundVar]: backgroundColor})} />","{colors, onChange}: ColorListProps","validateColors(colors).map(({key, color, backgroundColor}) => (\n        <ColorBoxContainer\n          key={key}\n          onClick={() => {\n            onChange(color)\n          }}\n        >\n          <ColorBox backgroundColor={backgroundColor} />\n        </ColorBoxContainer>\n      ))","({key, color, backgroundColor}) => (\n        <ColorBoxContainer\n          key={key}\n          onClick={() => {\n            onChange(color)\n          }}\n        >\n          <ColorBox backgroundColor={backgroundColor} />\n        </ColorBoxContainer>\n      )","{key, color, backgroundColor}","<ColorListWrap wrap=\"wrap\">\n      {validateColors(colors).map(({key, color, backgroundColor}) => (\n        <ColorBoxContainer\n          key={key}\n          onClick={() => {\n            onChange(color)\n          }}\n        >\n          <ColorBox backgroundColor={backgroundColor} />\n        </ColorBoxContainer>\n      ))}\n    </ColorListWrap>","{\n  white = 'transparent',\n  grey = 'rgba(0,0,0,.08)',\n  size = 8,\n  renderers = EMPTY_RENDERERS,\n  borderRadius,\n  boxShadow,\n}: CheckboardProps","white = 'transparent'","grey = 'rgba(0,0,0,.08)'","size = 8","renderers = EMPTY_RENDERERS","checkboardHelper.get(white, grey, size, renderers.canvas)","canvas","assignInlineVars({\n        [borderRadiusVar]: borderRadius,\n        [boxShadowVar]: boxShadow,\n        [backgroundImageVar]: background ? `url(${background}) center left` : undefined,\n      })","background ? `url(${background}) center left` : undefined","<div\n      className={checkboard}\n      style={assignInlineVars({\n        [borderRadiusVar]: borderRadius,\n        [boxShadowVar]: boxShadow,\n        [backgroundImageVar]: background ? `url(${background}) center left` : undefined,\n      })}\n    />","() => window","() => {\n    const target = enabled ? targetRef.current : null\n    if (!target) {\n      return () => {}\n    }\n\n    const controller = new AbortController()\n    let dragController: AbortController | null = null\n\n    target.addEventListener(\n      'mousedown',\n      (event) => {\n        if (!onDragStart(event)) {\n          return\n        }\n        dragController?.abort()\n        dragController = new AbortController()\n        const {signal} = dragController\n        const targetWindow = getWindow()\n        targetWindow.addEventListener('mousemove', (moveEvent) => onDrag(moveEvent), {signal})\n        targetWindow.addEventListener('mouseup', () => dragController?.abort(), {signal})\n      },\n      {signal: controller.signal},\n    )\n\n    return () => {\n      controller.abort()\n      dragController?.abort()\n    }\n  }","targetRef.current","() => {}","[enabled, targetRef]","{\n  rgb,\n  hsl,\n  a,\n  direction,\n  radius,\n  shadow,\n  renderers,\n  onChange,\n}: AlphaProps","(event: PickerEvent) => {\n    const containerEl = containerRef.current\n    if (!containerEl) {\n      return\n    }\n    const change = alpha.calculateChange(event, hsl, direction, a, containerEl)\n    if (change && typeof onChange === 'function') {\n      onChange(change)\n    }\n  }","(event) => {\n      handleChange(event)\n      return true\n    }","event","{\n    onDragStart: (event) => {\n      handleChange(event)\n      return true\n    },\n    onDrag: handleChange,\n  }","assignInlineVars({\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [gradientVar]: gradient,\n        [pointerLeftVar]: pointerDirection === 'horizontal' ? `${alphaValue * 100}%` : undefined,\n        [pointerTopVar]: pointerDirection === 'vertical' ? `${alphaValue * 100}%` : undefined,\n      })","pointerDirection === 'horizontal' ? `${alphaValue * 100}%` : undefined","pointerDirection === 'vertical' ? `${alphaValue * 100}%` : undefined","<div className={checkboardLayer}>\n        <Checkboard renderers={renderers} />\n      </div>","<div className={gradientLayer} />","<div className={pointerKnob} />","<div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>","pointer[pointerDirection]","<div\n        className={container}\n        ref={containerRef}\n        onTouchMove={handleChange}\n        onTouchStart={handleChange}\n      >\n        <div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>\n      </div>","<div\n      className={root}\n      style={assignInlineVars({\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [gradientVar]: gradient,\n        [pointerLeftVar]: pointerDirection === 'horizontal' ? `${alphaValue * 100}%` : undefined,\n        [pointerTopVar]: pointerDirection === 'vertical' ? `${alphaValue * 100}%` : undefined,\n      })}\n    >\n      <div className={checkboardLayer}>\n        <Checkboard renderers={renderers} />\n      </div>\n      <div className={gradientLayer} />\n      <div\n        className={container}\n        ref={containerRef}\n        onTouchMove={handleChange}\n        onTouchStart={handleChange}\n      >\n        <div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>\n      </div>\n    </div>","{\n  label,\n  value: valueProp,\n  arrowOffset,\n  placeholder,\n  hideLabel,\n  dragLabel,\n  dragMax,\n  onChange,\n}: EditableInputProps","normalizeDisplayValue(valueProp)","() => {\n    const nextValue = normalizeDisplayValue(valueProp)\n    if (nextValue === inputValue) {\n      // The prop caught up with what's displayed — drop any blur-sync value\n      // captured from an older prop so blur doesn't restore it.\n      startTransition(() => {\n        setBlurValue('')\n      })\n      return\n    }\n\n    const isFocused = inputRef.current === document.activeElement\n\n    if (isFocused) {\n      setBlurValue(nextValue)\n      return\n    }\n\n    setInputValue(nextValue)\n    setBlurValue((currentBlurValue) => (currentBlurValue ? '' : nextValue))\n  }","[inputValue, valueProp]","() => {\n    if (blurValue) {\n      // Restore from the prop rather than the stored value: the transition\n      // that clears a stale `blurValue` may not have committed yet, but\n      // `valueProp` is always current — so a value the parent already\n      // accepted is never rolled back.\n      setInputValue(normalizeDisplayValue(valueProp))\n      setBlurValue('')\n    }\n  }","(event: ChangeEvent<HTMLInputElement>) => {\n    const {value} = event.target\n    onChange?.({[label]: value}, event)\n    setInputValue(value)\n  }","(event: ReactKeyboardEvent<HTMLInputElement>) => {\n    const numericValue = getNumberValue(event.currentTarget.value)\n    const isUp = event.key === 'ArrowUp'\n    const isDown = event.key === 'ArrowDown'\n    if (!Number.isNaN(numericValue) && (isUp || isDown)) {\n      const offset = arrowOffset ?? DEFAULT_ARROW_OFFSET\n      const updatedValue = isUp ? numericValue + offset : numericValue - offset\n      onChange?.({[label]: String(updatedValue)}, event)\n      setInputValue(String(updatedValue))\n    }\n  }","event","(event: MouseEvent) => {\n    if (!dragLabel) {\n      return\n    }\n    const numericValue = typeof valueProp === 'number' ? valueProp : Number(valueProp)\n    const newValue = Math.round(numericValue + event.movementX)\n    if (dragMax !== undefined && newValue >= 0 && newValue <= dragMax) {\n      onChange?.({[label]: String(newValue)}, event)\n    }\n  }","numericValue","(event) => {\n      if (!dragLabel) {\n        return false\n      }\n      event.preventDefault()\n      handleDrag(event)\n      return true\n    }","{\n    enabled: showLabel,\n    onDragStart: (event) => {\n      if (!dragLabel) {\n        return false\n      }\n      event.preventDefault()\n      handleDrag(event)\n      return true\n    },\n    onDrag: handleDrag,\n  }","<input\n        id={inputId}\n        className={input}\n        ref={inputRef}\n        value={inputValue}\n        onKeyDown={handleKeyDown}\n        onChange={handleChange}\n        onBlur={handleBlur}\n        placeholder={placeholder}\n        spellCheck=\"false\"\n      />","showLabel ? (\n        <label\n          htmlFor={inputId}\n          ref={labelRef}\n          className={dragLabel ? `${labelClass} ${labelDrag}` : labelClass}\n        >\n          {label}\n        </label>\n      ) : null","<div className={wrap}>\n      <input\n        id={inputId}\n        className={input}\n        ref={inputRef}\n        value={inputValue}\n        onKeyDown={handleKeyDown}\n        onChange={handleChange}\n        onBlur={handleBlur}\n        placeholder={placeholder}\n        spellCheck=\"false\"\n      />\n      {showLabel ? (\n        <label\n          htmlFor={inputId}\n          ref={labelRef}\n          className={dragLabel ? `${labelClass} ${labelDrag}` : labelClass}\n        >\n          {label}\n        </label>\n      ) : null}\n    </div>","{\n  hsl,\n  direction = 'horizontal',\n  radius,\n  shadow,\n  onChange,\n}: HueProps","direction = 'horizontal'","(event: PickerEvent) => {\n    const container = containerRef.current\n    if (!container) {\n      return\n    }\n    const change = hue.calculateChange(event, direction, hsl, container)\n    if (change && typeof onChange === 'function') {\n      onChange(change)\n    }\n  }","(event) => {\n      handleChange(event)\n      return true\n    }","event","{\n    onDragStart: (event) => {\n      handleChange(event)\n      return true\n    },\n    onDrag: handleChange,\n  }","assignInlineVars({\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [pointerLeftVar]: pointerDirection === 'horizontal' ? `${(hsl.h * 100) / 360}%` : undefined,\n        [pointerTopVar]:\n          pointerDirection === 'vertical' ? `${-((hsl.h * 100) / 360) + 100}%` : undefined,\n      })","pointerDirection === 'horizontal' ? `${(hsl.h * 100) / 360}%` : undefined","pointerDirection === 'vertical' ? `${-((hsl.h * 100) / 360) + 100}%` : undefined","<div className={pointerKnob} />","<div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>","pointer[pointerDirection]","<div\n        className={gradient[pointerDirection]}\n        ref={containerRef}\n        onTouchMove={handleChange}\n        onTouchStart={handleChange}\n      >\n        <div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>\n      </div>","gradient[pointerDirection]","<div\n      className={root}\n      style={assignInlineVars({\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [pointerLeftVar]: pointerDirection === 'horizontal' ? `${(hsl.h * 100) / 360}%` : undefined,\n        [pointerTopVar]:\n          pointerDirection === 'vertical' ? `${-((hsl.h * 100) / 360) + 100}%` : undefined,\n      })}\n    >\n      <div\n        className={gradient[pointerDirection]}\n        ref={containerRef}\n        onTouchMove={handleChange}\n        onTouchStart={handleChange}\n      >\n        <div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>\n      </div>\n    </div>","{hsl, hsv, radius, shadow, onChange}: SaturationProps","throttle(\n        (handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult): void => {\n          handler(data)\n        },\n        50,\n      )","(handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult): void => {\n          handler(data)\n        }","useMemo<ThrottledChange>(\n    () =>\n      throttle(\n        (handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult): void => {\n          handler(data)\n        },\n        50,\n      ),\n    [],\n  )","() => {\n    return () => {\n      throttledChange.cancel()\n    }\n  }","[throttledChange]","(event: PickerEvent) => {\n    const container = containerRef.current\n    if (!container || typeof onChange !== 'function') {\n      return\n    }\n    throttledChange(onChange, saturation.calculateChange(event, hsl, container))\n  }","(event) => {\n      handleChange(event)\n      return true\n    }","event","() => {\n      let renderWindow: Window = window\n      while (\n        !renderWindow.document.contains(containerRef.current) &&\n        renderWindow.parent !== renderWindow\n      ) {\n        renderWindow = renderWindow.parent\n      }\n      return renderWindow\n    }","{\n    onDragStart: (event) => {\n      handleChange(event)\n      return true\n    },\n    onDrag: handleChange,\n    // Track the drag on the window the container is actually rendered in\n    // (the Studio can render inputs inside nested iframes).\n    getWindow: () => {\n      let renderWindow: Window = window\n      while (\n        !renderWindow.document.contains(containerRef.current) &&\n        renderWindow.parent !== renderWindow\n      ) {\n        renderWindow = renderWindow.parent\n      }\n      return renderWindow\n    },\n  }","assignInlineVars({\n        [hueBackgroundVar]: `hsl(${hsl.h},100%, 50%)`,\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [pointerTopVar]: `${-(hsv.v * 100) + 100}%`,\n        [pointerLeftVar]: `${hsv.s * 100}%`,\n      })","`${hsv.s * 100}%`","`hsl(${hsl.h},100%, 50%)`","`${-(hsv.v * 100) + 100}%`","<div className={black} />","<div className={white}>\n        <div className={black} />\n        <div className={pointer}>\n          <div className={pointerKnob} />\n        </div>\n      </div>","<div\n      className={root}\n      style={assignInlineVars({\n        [hueBackgroundVar]: `hsl(${hsl.h},100%, 50%)`,\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [pointerTopVar]: `${-(hsv.v * 100) + 100}%`,\n        [pointerLeftVar]: `${hsv.s * 100}%`,\n      })}\n      ref={containerRef}\n      onTouchMove={handleChange}\n      onTouchStart={handleChange}\n    >\n      <div className={white}>\n        <div className={black} />\n        <div className={pointer}>\n          <div className={pointerKnob} />\n        </div>\n      </div>\n    </div>","{\n  onChange,\n  rgb,\n  hsl,\n  hex,\n  disableAlpha,\n}: ColorPickerFieldsProps","(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    }","'hex'","'r'","'g'","'b'","'a'","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  )","assignInlineVars({\n        [inputBorderVar]: inputEnabled.border,\n        [inputFgVar]: inputEnabled.fg,\n        [inputBgVar]: inputEnabled.bg,\n        [inputFontSizeVar]: textFontSize === undefined ? undefined : `${textFontSize}px`,\n        [labelFontSizeVar]: labelFontSize === undefined ? undefined : `${labelFontSize}px`,\n        [labelFgVar]: color.fg,\n      })","fg","bg","border","textFontSize === undefined ? undefined : `${textFontSize}px`","labelFontSize === undefined ? undefined : `${labelFontSize}px`","hex?.replace('#', '')","hex?.replace","<Box flex={2} marginRight={1}>\n        <EditableInput label=\"hex\" value={hex?.replace('#', '')} onChange={handleChange} />\n      </Box>","<Box flex={1} marginRight={1}>\n        <EditableInput label=\"r\" value={rgb?.r} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>","rgb?.r","<Box flex={1} marginRight={1}>\n        <EditableInput label=\"g\" value={rgb?.g} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>","rgb?.g","<Box flex={1} marginRight={1}>\n        <EditableInput label=\"b\" value={rgb?.b} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>","rgb?.b","!disableAlpha && (\n        <Box flex={1}>\n          <EditableInput\n            label=\"a\"\n            value={Math.round((rgb?.a ?? 1) * 100)}\n            onChange={handleChange}\n            dragLabel\n            dragMax={100}\n          />\n        </Box>\n      )","a","<Flex\n      style={assignInlineVars({\n        [inputBorderVar]: inputEnabled.border,\n        [inputFgVar]: inputEnabled.fg,\n        [inputBgVar]: inputEnabled.bg,\n        [inputFontSizeVar]: textFontSize === undefined ? undefined : `${textFontSize}px`,\n        [labelFontSizeVar]: labelFontSize === undefined ? undefined : `${labelFontSize}px`,\n        [labelFgVar]: color.fg,\n      })}\n    >\n      <Box flex={2} marginRight={1}>\n        <EditableInput label=\"hex\" value={hex?.replace('#', '')} onChange={handleChange} />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput label=\"r\" value={rgb?.r} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput label=\"g\" value={rgb?.g} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput label=\"b\" value={rgb?.b} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>\n      {!disableAlpha && (\n        <Box flex={1}>\n          <EditableInput\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>","{backgroundColor}: {backgroundColor: string}","assignInlineVars({[previewBackgroundVar]: backgroundColor})","<Box className={colorBox} style={assignInlineVars({[previewBackgroundVar]: backgroundColor})} />","<Flex {...props} className={readOnlyContainer} />","<Box {...props} className={fieldsBox} />","{rgb, hex, hsv, hsl}","(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 oldHue = hsl && hsl.s > 0 ? hsl.h : oldHueRef.current\n    const nextColor = toState(data, incomingHue || oldHue)\n    oldHueRef.current = nextColor.oldHue\n    onChangeProp(nextColor)\n  }","width ? assignInlineVars({[widthVar]: width}) : undefined","!readOnly && (\n            <>\n              <Card overflow=\"hidden\" className={saturationCard}>\n                <Saturation onChange={onChange} hsl={hsl} hsv={hsv} />\n              </Card>\n\n              <Card shadow={1} radius={3} overflow=\"hidden\" className={sliderCard}>\n                <Hue hsl={hsl} onChange={!readOnly && onChange} />\n              </Card>\n\n              {!disableAlpha && (\n                <Card shadow={1} radius={3} overflow=\"hidden\" className={alphaCard}>\n                  <Alpha rgb={rgb} hsl={hsl} onChange={onChange} />\n                </Card>\n              )}\n            </>\n          )","<Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />","<ColorBox backgroundColor={`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`} />","`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`","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              )","h","l","s","b","g","r","<Card flex={1} radius={2} overflow=\"hidden\" className={previewCard}>\n              <Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />\n              <ColorBox backgroundColor={`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`} />\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>","!readOnly && (\n              <Flex align=\"flex-start\" marginLeft={2}>\n                <FieldsBox>\n                  <ColorPickerFields\n                    rgb={rgb}\n                    hsl={hsl}\n                    hex={hex}\n                    onChange={onChange}\n                    disableAlpha={disableAlpha}\n                  />\n                </FieldsBox>\n                <Box marginLeft={2}>\n                  <Button onClick={onUnset} title=\"Delete color\" icon={TrashIcon} tone=\"critical\" />\n                </Box>\n              </Flex>\n            )","<Flex>\n            <Card flex={1} radius={2} overflow=\"hidden\" className={previewCard}>\n              <Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />\n              <ColorBox backgroundColor={`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`} />\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                <FieldsBox>\n                  <ColorPickerFields\n                    rgb={rgb}\n                    hsl={hsl}\n                    hex={hex}\n                    onChange={onChange}\n                    disableAlpha={disableAlpha}\n                  />\n                </FieldsBox>\n                <Box marginLeft={2}>\n                  <Button onClick={onUnset} title=\"Delete color\" icon={TrashIcon} tone=\"critical\" />\n                </Box>\n              </Flex>\n            )}\n          </Flex>","colorList && <ColorList colors={colorList} onChange={onChange} />","<Card padding={1} border radius={1}>\n        <Stack gap={2}>\n          {!readOnly && (\n            <>\n              <Card overflow=\"hidden\" className={saturationCard}>\n                <Saturation onChange={onChange} hsl={hsl} hsv={hsv} />\n              </Card>\n\n              <Card shadow={1} radius={3} overflow=\"hidden\" className={sliderCard}>\n                <Hue hsl={hsl} onChange={!readOnly && onChange} />\n              </Card>\n\n              {!disableAlpha && (\n                <Card shadow={1} radius={3} overflow=\"hidden\" className={alphaCard}>\n                  <Alpha rgb={rgb} hsl={hsl} onChange={onChange} />\n                </Card>\n              )}\n            </>\n          )}\n          <Flex>\n            <Card flex={1} radius={2} overflow=\"hidden\" className={previewCard}>\n              <Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />\n              <ColorBox backgroundColor={`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`} />\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                <FieldsBox>\n                  <ColorPickerFields\n                    rgb={rgb}\n                    hsl={hsl}\n                    hex={hex}\n                    onChange={onChange}\n                    disableAlpha={disableAlpha}\n                  />\n                </FieldsBox>\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>","<div className={root} style={width ? assignInlineVars({[widthVar]: width}) : undefined}>\n      <Card padding={1} border radius={1}>\n        <Stack gap={2}>\n          {!readOnly && (\n            <>\n              <Card overflow=\"hidden\" className={saturationCard}>\n                <Saturation onChange={onChange} hsl={hsl} hsv={hsv} />\n              </Card>\n\n              <Card shadow={1} radius={3} overflow=\"hidden\" className={sliderCard}>\n                <Hue hsl={hsl} onChange={!readOnly && onChange} />\n              </Card>\n\n              {!disableAlpha && (\n                <Card shadow={1} radius={3} overflow=\"hidden\" className={alphaCard}>\n                  <Alpha rgb={rgb} hsl={hsl} onChange={onChange} />\n                </Card>\n              )}\n            </>\n          )}\n          <Flex>\n            <Card flex={1} radius={2} overflow=\"hidden\" className={previewCard}>\n              <Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />\n              <ColorBox backgroundColor={`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`} />\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                <FieldsBox>\n                  <ColorPickerFields\n                    rgb={rgb}\n                    hsl={hsl}\n                    hex={hex}\n                    onChange={onChange}\n                    disableAlpha={disableAlpha}\n                  />\n                </FieldsBox>\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>","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  }","type.fields","field","<>\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    </>","type.readOnly","nextColor"],"sources":["../src/ColorList.css.ts","../src/ColorList.tsx","../src/react-color/helpers/checkboard.ts","../src/react-color/Checkboard.css.ts","../src/react-color/Checkboard.tsx","../src/react-color/helpers/alpha.ts","../src/react-color/helpers/useDrag.ts","../src/react-color/Alpha.css.ts","../src/react-color/Alpha.tsx","../src/react-color/EditableInput.css.ts","../src/react-color/EditableInput.tsx","../src/react-color/helpers/color.ts","../src/react-color/helpers/hue.ts","../src/react-color/Hue.css.ts","../src/react-color/Hue.tsx","../src/react-color/helpers/saturation.ts","../src/react-color/Saturation.css.ts","../src/react-color/Saturation.tsx","../src/ColorPickerFields.tsx","../src/ColorInput.css.ts","../src/ColorInput.tsx"],"sourcesContent":["import {createVar, style} from '@vanilla-extract/css'\n\nexport const swatchBackgroundVar = createVar()\n\nexport const colorListWrap = style({\n  gap: '0.25em',\n})\n\nexport const colorBoxContainer = style({\n  width: '2.1em',\n  height: '2.1em',\n  cursor: 'pointer',\n  position: 'relative',\n  overflow: 'hidden',\n  borderRadius: '3px',\n  background:\n    \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADFJREFUOE9jZGBgEGHAD97gk2YcNYBhmIQBgWSAP52AwoAQwJvQRg1gACckQoC2gQgAIF8IscwEtKYAAAAASUVORK5CYII=') left center #fff\",\n})\n\nexport const colorBox = style({\n  borderRadius: 'inherit',\n  boxShadow: 'inset 0 0 0 1px var(--card-shadow-outline-color)',\n  position: 'absolute',\n  inset: 0,\n  zIndex: 1,\n  background: swatchBackgroundVar,\n})\n","import {Flex} from '@sanity/ui'\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport type {ComponentProps} from 'react'\nimport tinycolor from 'tinycolor2'\n\nimport type {Color, ColorChangeHandler} from './react-color'\n\nimport {colorBox, colorBoxContainer, colorListWrap, swatchBackgroundVar} from './ColorList.css'\n\nfunction ColorListWrap(props: ComponentProps<typeof Flex>) {\n  return <Flex {...props} className={colorListWrap} />\n}\n\nfunction ColorBoxContainer(props: ComponentProps<'div'>) {\n  return <div {...props} className={colorBoxContainer} />\n}\n\nfunction ColorBox({backgroundColor}: {backgroundColor: string}) {\n  return (\n    <div className={colorBox} style={assignInlineVars({[swatchBackgroundVar]: backgroundColor})} />\n  )\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 backgroundColor={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","import {createVar, style} from '@vanilla-extract/css'\n\nexport const borderRadiusVar = createVar()\nexport const boxShadowVar = createVar()\nexport const backgroundImageVar = createVar()\n\nexport const checkboard = style({\n  borderRadius: borderRadiusVar,\n  boxShadow: boxShadowVar,\n  position: 'absolute',\n  inset: 0,\n  background: backgroundImageVar,\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 {assignInlineVars} from '@vanilla-extract/dynamic'\nimport type {ReactElement} from 'react'\n\nimport * as checkboardHelper from './helpers/checkboard'\nimport type {CheckboardRenderers, RenderersProps} from './types'\n\nimport {backgroundImageVar, borderRadiusVar, boxShadowVar, checkboard} from './Checkboard.css'\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 = checkboardHelper.get(white, grey, size, renderers.canvas)\n  return (\n    <div\n      className={checkboard}\n      style={assignInlineVars({\n        [borderRadiusVar]: borderRadius,\n        [boxShadowVar]: boxShadow,\n        [backgroundImageVar]: 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 * Drag plumbing shared by the picker surfaces (Saturation/Hue/Alpha) and the\n * draggable `EditableInput` label.\n *\n * Attaches a native `mousedown` listener to the target element; each drag then\n * tracks `mousemove`/`mouseup` on a window until the pointer is released or the\n * component unmounts. The callbacks are Effect Events, so every event reads the\n * latest render's props — mirroring how the original react-color class methods\n * read `this.props` on each event.\n *\n * Note: this deliberately does not use a React 19 ref-callback with cleanup —\n * the React Compiler memoizes ref callbacks against their captured deps, so a\n * mid-drag prop update (every `mousemove` triggers `onChange`) would detach and\n * re-attach the ref, aborting the in-flight drag.\n */\nimport {useEffectEvent, useLayoutEffect, type RefObject} from 'react'\n\nexport interface UseDragOptions {\n  /** Called on `mousedown`; return `false` to ignore the gesture. */\n  onDragStart: (event: MouseEvent) => boolean\n  /** Called for every `mousemove` while dragging. */\n  onDrag: (event: MouseEvent) => void\n  /** Window to track the drag on (e.g. the nearest render window in nested iframes). */\n  getWindow?: () => Window\n  /** Set when the target element renders conditionally, to re-attach when it appears. */\n  enabled?: boolean\n}\n\nexport function useDrag(targetRef: RefObject<HTMLElement | null>, options: UseDragOptions): void {\n  const onDragStart = useEffectEvent(options.onDragStart)\n  const onDrag = useEffectEvent(options.onDrag)\n  const getWindow = useEffectEvent(options.getWindow ?? (() => window))\n  const enabled = options.enabled ?? true\n\n  // useLayoutEffect so the listener is attached before paint — with useEffect\n  // there is a small post-mount window where a drag could start unnoticed.\n  useLayoutEffect(() => {\n    const target = enabled ? targetRef.current : null\n    if (!target) {\n      return () => {}\n    }\n\n    const controller = new AbortController()\n    let dragController: AbortController | null = null\n\n    target.addEventListener(\n      'mousedown',\n      (event) => {\n        if (!onDragStart(event)) {\n          return\n        }\n        dragController?.abort()\n        dragController = new AbortController()\n        const {signal} = dragController\n        const targetWindow = getWindow()\n        targetWindow.addEventListener('mousemove', (moveEvent) => onDrag(moveEvent), {signal})\n        targetWindow.addEventListener('mouseup', () => dragController?.abort(), {signal})\n      },\n      {signal: controller.signal},\n    )\n\n    return () => {\n      controller.abort()\n      dragController?.abort()\n    }\n  }, [enabled, targetRef])\n}\n","import {createVar, style, styleVariants} from '@vanilla-extract/css'\n\nexport const radiusVar = createVar()\nexport const shadowVar = createVar()\nexport const gradientVar = createVar()\nexport const pointerLeftVar = createVar()\nexport const pointerTopVar = createVar()\n\nexport const root = style({\n  position: 'absolute',\n  inset: 0,\n  borderRadius: radiusVar,\n})\n\nexport const checkboardLayer = style({\n  position: 'absolute',\n  inset: 0,\n  overflow: 'hidden',\n  borderRadius: radiusVar,\n})\n\nexport const gradientLayer = style({\n  position: 'absolute',\n  inset: 0,\n  background: gradientVar,\n  boxShadow: shadowVar,\n  borderRadius: radiusVar,\n})\n\nexport const container = style({\n  position: 'relative',\n  height: '100%',\n  margin: '0 3px',\n})\n\nexport const pointer = styleVariants({\n  horizontal: {\n    position: 'absolute',\n    left: pointerLeftVar,\n  },\n  vertical: {\n    position: 'absolute',\n    left: 0,\n    top: pointerTopVar,\n  },\n})\n\nexport const pointerKnob = 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 * 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 */\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport {useRef, type ReactElement} from 'react'\n\nimport {Checkboard} from './Checkboard'\nimport * as alpha from './helpers/alpha'\nimport {useDrag} from './helpers/useDrag'\nimport type {\n  AlphaColorResult,\n  CheckboardRenderers,\n  ColorChangeHandler,\n  HSLColor,\n  PickerEvent,\n  RGBColor,\n} from './types'\n\nimport {\n  checkboardLayer,\n  container,\n  gradientLayer,\n  gradientVar,\n  pointer,\n  pointerKnob,\n  pointerLeftVar,\n  pointerTopVar,\n  radiusVar,\n  root,\n  shadowVar,\n} from './Alpha.css'\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 function Alpha({\n  rgb,\n  hsl,\n  a,\n  direction,\n  radius,\n  shadow,\n  renderers,\n  onChange,\n}: AlphaProps): ReactElement {\n  const containerRef = useRef<HTMLDivElement | null>(null)\n\n  const handleChange = (event: PickerEvent) => {\n    const containerEl = containerRef.current\n    if (!containerEl) {\n      return\n    }\n    const change = alpha.calculateChange(event, hsl, direction, a, containerEl)\n    if (change && typeof onChange === 'function') {\n      onChange(change)\n    }\n  }\n\n  useDrag(containerRef, {\n    onDragStart: (event) => {\n      handleChange(event)\n      return true\n    },\n    onDrag: handleChange,\n  })\n\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 pointerDirection = direction === 'vertical' ? 'vertical' : 'horizontal'\n\n  return (\n    <div\n      className={root}\n      style={assignInlineVars({\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [gradientVar]: gradient,\n        [pointerLeftVar]: pointerDirection === 'horizontal' ? `${alphaValue * 100}%` : undefined,\n        [pointerTopVar]: pointerDirection === 'vertical' ? `${alphaValue * 100}%` : undefined,\n      })}\n    >\n      <div className={checkboardLayer}>\n        <Checkboard renderers={renderers} />\n      </div>\n      <div className={gradientLayer} />\n      <div\n        className={container}\n        ref={containerRef}\n        onTouchMove={handleChange}\n        onTouchStart={handleChange}\n      >\n        <div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>\n      </div>\n    </div>\n  )\n}\n","import {createVar, style} from '@vanilla-extract/css'\n\nexport const inputBorderVar = createVar()\nexport const inputFgVar = createVar()\nexport const inputBgVar = createVar()\nexport const inputFontSizeVar = createVar()\nexport const labelFontSizeVar = createVar()\nexport const labelFgVar = createVar()\n\nexport const wrap = style({\n  position: 'relative',\n})\n\nexport const input = style({\n  width: '80%',\n  padding: '4px 10% 3px',\n  border: 'none',\n  boxShadow: `inset 0 0 0 1px ${inputBorderVar}`,\n  color: inputFgVar,\n  backgroundColor: inputBgVar,\n  fontSize: inputFontSizeVar,\n  textAlign: 'center',\n})\n\nexport const label = style({\n  display: 'block',\n  textAlign: 'center',\n  fontSize: labelFontSizeVar,\n  color: labelFgVar,\n  paddingTop: '3px',\n  paddingBottom: '4px',\n  textTransform: 'capitalize',\n})\n\nexport const labelDrag = style({\n  cursor: 'ew-resize',\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 * Theme-driven colors are applied via vanilla-extract CSS variables set by the\n * parent (`ColorPickerFields`).\n */\nimport {\n  startTransition,\n  useEffect,\n  useId,\n  useRef,\n  useState,\n  type ChangeEvent,\n  type KeyboardEvent as ReactKeyboardEvent,\n  type ReactElement,\n} from 'react'\n\nimport {useDrag} from './helpers/useDrag'\n\nimport {input, label as labelClass, labelDrag, wrap} from './EditableInput.css'\n\nconst DEFAULT_ARROW_OFFSET = 1\n\nconst getNumberValue = (value: string | number): number => Number(String(value).replace(/%/g, ''))\n\nconst normalizeDisplayValue = (value: string | number | undefined): string =>\n  String(value ?? '').toUpperCase()\n\ntype EditableInputEvent =\n  | ChangeEvent<HTMLInputElement>\n  | ReactKeyboardEvent<HTMLInputElement>\n  | MouseEvent\n\nexport interface EditableInputProps {\n  label: string\n  value?: string | number | 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\nexport function EditableInput({\n  label,\n  value: valueProp,\n  arrowOffset,\n  placeholder,\n  hideLabel,\n  dragLabel,\n  dragMax,\n  onChange,\n}: EditableInputProps): ReactElement {\n  const inputId = useId()\n  const inputRef = useRef<HTMLInputElement | null>(null)\n  const labelRef = useRef<HTMLLabelElement | null>(null)\n  const initialValue = normalizeDisplayValue(valueProp)\n  const [inputValue, setInputValue] = useState(initialValue)\n  const [blurValue, setBlurValue] = useState(initialValue)\n\n  useEffect(() => {\n    const nextValue = normalizeDisplayValue(valueProp)\n    if (nextValue === inputValue) {\n      // The prop caught up with what's displayed — drop any blur-sync value\n      // captured from an older prop so blur doesn't restore it.\n      startTransition(() => {\n        setBlurValue('')\n      })\n      return\n    }\n\n    const isFocused = inputRef.current === document.activeElement\n\n    if (isFocused) {\n      setBlurValue(nextValue)\n      return\n    }\n\n    setInputValue(nextValue)\n    setBlurValue((currentBlurValue) => (currentBlurValue ? '' : nextValue))\n  }, [inputValue, valueProp])\n\n  const handleBlur = () => {\n    if (blurValue) {\n      // Restore from the prop rather than the stored value: the transition\n      // that clears a stale `blurValue` may not have committed yet, but\n      // `valueProp` is always current — so a value the parent already\n      // accepted is never rolled back.\n      setInputValue(normalizeDisplayValue(valueProp))\n      setBlurValue('')\n    }\n  }\n\n  const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n    const {value} = event.target\n    onChange?.({[label]: value}, event)\n    setInputValue(value)\n  }\n\n  const handleKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n    const numericValue = getNumberValue(event.currentTarget.value)\n    const isUp = event.key === 'ArrowUp'\n    const isDown = event.key === 'ArrowDown'\n    if (!Number.isNaN(numericValue) && (isUp || isDown)) {\n      const offset = arrowOffset ?? DEFAULT_ARROW_OFFSET\n      const updatedValue = isUp ? numericValue + offset : numericValue - offset\n      onChange?.({[label]: String(updatedValue)}, event)\n      setInputValue(String(updatedValue))\n    }\n  }\n\n  const handleDrag = (event: MouseEvent) => {\n    if (!dragLabel) {\n      return\n    }\n    const numericValue = typeof valueProp === 'number' ? valueProp : Number(valueProp)\n    const newValue = Math.round(numericValue + event.movementX)\n    if (dragMax !== undefined && newValue >= 0 && newValue <= dragMax) {\n      onChange?.({[label]: String(newValue)}, event)\n    }\n  }\n\n  const showLabel = Boolean(label && !hideLabel)\n\n  useDrag(labelRef, {\n    enabled: showLabel,\n    onDragStart: (event) => {\n      if (!dragLabel) {\n        return false\n      }\n      event.preventDefault()\n      handleDrag(event)\n      return true\n    },\n    onDrag: handleDrag,\n  })\n\n  return (\n    <div className={wrap}>\n      <input\n        id={inputId}\n        className={input}\n        ref={inputRef}\n        value={inputValue}\n        onKeyDown={handleKeyDown}\n        onChange={handleChange}\n        onBlur={handleBlur}\n        placeholder={placeholder}\n        spellCheck=\"false\"\n      />\n      {showLabel ? (\n        <label\n          htmlFor={inputId}\n          ref={labelRef}\n          className={dragLabel ? `${labelClass} ${labelDrag}` : labelClass}\n        >\n          {label}\n        </label>\n      ) : null}\n    </div>\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 * 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","import {createVar, style, styleVariants} from '@vanilla-extract/css'\n\nexport const radiusVar = createVar()\nexport const shadowVar = createVar()\nexport const pointerLeftVar = createVar()\nexport const pointerTopVar = createVar()\n\nexport const root = style({\n  position: 'absolute',\n  inset: 0,\n  borderRadius: radiusVar,\n  boxShadow: shadowVar,\n})\n\nexport const gradient = styleVariants({\n  horizontal: {\n    background:\n      'linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)',\n    padding: '0 2px',\n    position: 'relative',\n    height: '100%',\n    borderRadius: radiusVar,\n  },\n  vertical: {\n    background:\n      'linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)',\n    padding: '0 2px',\n    position: 'relative',\n    height: '100%',\n    borderRadius: radiusVar,\n  },\n})\n\nexport const pointer = styleVariants({\n  horizontal: {\n    position: 'absolute',\n    left: pointerLeftVar,\n  },\n  vertical: {\n    position: 'absolute',\n    left: '0px',\n    top: pointerTopVar,\n  },\n})\n\nexport const pointerKnob = 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 * 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 */\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport {useRef, type ReactElement} from 'react'\n\nimport * as hue from './helpers/hue'\nimport {useDrag} from './helpers/useDrag'\nimport type {ColorChangeHandler, HSLColor, HueColorResult, PickerEvent} from './types'\n\nimport {\n  gradient,\n  pointer,\n  pointerKnob,\n  pointerLeftVar,\n  pointerTopVar,\n  radiusVar,\n  root,\n  shadowVar,\n} from './Hue.css'\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 function Hue({\n  hsl,\n  direction = 'horizontal',\n  radius,\n  shadow,\n  onChange,\n}: HueProps): ReactElement {\n  const containerRef = useRef<HTMLDivElement | null>(null)\n\n  const handleChange = (event: PickerEvent) => {\n    const container = containerRef.current\n    if (!container) {\n      return\n    }\n    const change = hue.calculateChange(event, direction, hsl, container)\n    if (change && typeof onChange === 'function') {\n      onChange(change)\n    }\n  }\n\n  useDrag(containerRef, {\n    onDragStart: (event) => {\n      handleChange(event)\n      return true\n    },\n    onDrag: handleChange,\n  })\n\n  const pointerDirection = direction === 'vertical' ? 'vertical' : 'horizontal'\n\n  return (\n    <div\n      className={root}\n      style={assignInlineVars({\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [pointerLeftVar]: pointerDirection === 'horizontal' ? `${(hsl.h * 100) / 360}%` : undefined,\n        [pointerTopVar]:\n          pointerDirection === 'vertical' ? `${-((hsl.h * 100) / 360) + 100}%` : undefined,\n      })}\n    >\n      <div\n        className={gradient[pointerDirection]}\n        ref={containerRef}\n        onTouchMove={handleChange}\n        onTouchStart={handleChange}\n      >\n        <div className={pointer[pointerDirection]}>\n          <div className={pointerKnob} />\n        </div>\n      </div>\n    </div>\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","import {createVar, style} from '@vanilla-extract/css'\n\nexport const radiusVar = createVar()\nexport const shadowVar = createVar()\nexport const hueBackgroundVar = createVar()\nexport const pointerTopVar = createVar()\nexport const pointerLeftVar = createVar()\n\nexport const root = style({\n  position: 'absolute',\n  inset: 0,\n  background: hueBackgroundVar,\n  borderRadius: radiusVar,\n})\n\nexport const white = style({\n  position: 'absolute',\n  inset: 0,\n  borderRadius: radiusVar,\n  background: 'linear-gradient(to right, #fff, rgba(255, 255, 255, 0))',\n})\n\nexport const black = style({\n  position: 'absolute',\n  inset: 0,\n  boxShadow: shadowVar,\n  borderRadius: radiusVar,\n  background: 'linear-gradient(to top, #000, rgba(0, 0, 0, 0))',\n})\n\nexport const pointer = style({\n  position: 'absolute',\n  top: pointerTopVar,\n  left: pointerLeftVar,\n  cursor: 'default',\n})\n\nexport const pointerKnob = style({\n  width: '4px',\n  height: '4px',\n  boxShadow: '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 * 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 */\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport throttle from 'lodash-es/throttle'\nimport {useEffect, useMemo, useRef, type ReactElement} from 'react'\n\nimport * as saturation from './helpers/saturation'\nimport {useDrag} from './helpers/useDrag'\nimport type {\n  ColorChangeHandler,\n  HSLColor,\n  HSVColor,\n  PickerEvent,\n  SaturationColorResult,\n} from './types'\n\nimport {\n  black,\n  hueBackgroundVar,\n  pointer,\n  pointerKnob,\n  pointerLeftVar,\n  pointerTopVar,\n  radiusVar,\n  root,\n  shadowVar,\n  white,\n} from './Saturation.css'\n\ntype ThrottledChange = ReturnType<\n  typeof throttle<\n    (handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult) => void\n  >\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 function Saturation({hsl, hsv, radius, shadow, onChange}: SaturationProps): ReactElement {\n  const containerRef = useRef<HTMLDivElement | null>(null)\n\n  const throttledChange = useMemo<ThrottledChange>(\n    () =>\n      throttle(\n        (handler: ColorChangeHandler<SaturationColorResult>, data: SaturationColorResult): void => {\n          handler(data)\n        },\n        50,\n      ),\n    [],\n  )\n\n  useEffect(() => {\n    return () => {\n      throttledChange.cancel()\n    }\n  }, [throttledChange])\n\n  const handleChange = (event: PickerEvent) => {\n    const container = containerRef.current\n    if (!container || typeof onChange !== 'function') {\n      return\n    }\n    throttledChange(onChange, saturation.calculateChange(event, hsl, container))\n  }\n\n  useDrag(containerRef, {\n    onDragStart: (event) => {\n      handleChange(event)\n      return true\n    },\n    onDrag: handleChange,\n    // Track the drag on the window the container is actually rendered in\n    // (the Studio can render inputs inside nested iframes).\n    getWindow: () => {\n      let renderWindow: Window = window\n      while (\n        !renderWindow.document.contains(containerRef.current) &&\n        renderWindow.parent !== renderWindow\n      ) {\n        renderWindow = renderWindow.parent\n      }\n      return renderWindow\n    },\n  })\n\n  return (\n    <div\n      className={root}\n      style={assignInlineVars({\n        [hueBackgroundVar]: `hsl(${hsl.h},100%, 50%)`,\n        [radiusVar]: radius,\n        [shadowVar]: shadow,\n        [pointerTopVar]: `${-(hsv.v * 100) + 100}%`,\n        [pointerLeftVar]: `${hsv.s * 100}%`,\n      })}\n      ref={containerRef}\n      onTouchMove={handleChange}\n      onTouchStart={handleChange}\n    >\n      <div className={white}>\n        <div className={black} />\n        <div className={pointer}>\n          <div className={pointerKnob} />\n        </div>\n      </div>\n    </div>\n  )\n}\n","import {Box, Flex, useTheme_v2} from '@sanity/ui'\nimport {assignInlineVars} from '@vanilla-extract/dynamic'\nimport {useCallback} from 'react'\n\nimport {\n  type Color,\n  type ColorChangeHandler,\n  EditableInput,\n  type HSLColor,\n  isValidHex,\n  type RGBColor,\n} from './react-color'\n\nimport {\n  inputBgVar,\n  inputBorderVar,\n  inputFgVar,\n  inputFontSizeVar,\n  labelFgVar,\n  labelFontSizeVar,\n} from './react-color/EditableInput.css'\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 {color, font} = useTheme_v2()\n  const inputEnabled = color.input.default.enabled\n  const textFontSize = font.text.sizes[0]?.fontSize\n  const labelFontSize = font.label.sizes[0]?.fontSize\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      style={assignInlineVars({\n        [inputBorderVar]: inputEnabled.border,\n        [inputFgVar]: inputEnabled.fg,\n        [inputBgVar]: inputEnabled.bg,\n        [inputFontSizeVar]: textFontSize === undefined ? undefined : `${textFontSize}px`,\n        [labelFontSizeVar]: labelFontSize === undefined ? undefined : `${labelFontSize}px`,\n        [labelFgVar]: color.fg,\n      })}\n    >\n      <Box flex={2} marginRight={1}>\n        <EditableInput label=\"hex\" value={hex?.replace('#', '')} onChange={handleChange} />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput label=\"r\" value={rgb?.r} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput label=\"g\" value={rgb?.g} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>\n      <Box flex={1} marginRight={1}>\n        <EditableInput label=\"b\" value={rgb?.b} onChange={handleChange} dragLabel dragMax={255} />\n      </Box>\n      {!disableAlpha && (\n        <Box flex={1}>\n          <EditableInput\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 {createVar, style} from '@vanilla-extract/css'\n\nexport const widthVar = createVar()\nexport const previewBackgroundVar = createVar()\n\nexport const root = style({\n  width: widthVar,\n})\n\nexport const saturationCard = style({\n  position: 'relative',\n  height: '5em',\n})\n\nexport const sliderCard = style({\n  position: 'relative',\n  height: '10px',\n})\n\nexport const alphaCard = style({\n  position: 'relative',\n  height: '10px',\n  selectors: {\n    // Doubled class doubles specificity so the white checkerboard base wins\n    // over Card's own `background-color` (same 0-1-0 specificity, but the\n    // styled-components rule is injected later and would win the tie).\n    '&&': {\n      background: '#fff',\n    },\n  },\n})\n\nexport const previewCard = style({\n  position: 'relative',\n  minWidth: '4em',\n  selectors: {\n    '&&': {\n      background: '#fff',\n    },\n  },\n})\n\nexport const colorBox = style({\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  width: '100%',\n  height: '100%',\n  backgroundColor: previewBackgroundVar,\n})\n\nexport const readOnlyContainer = style({\n  marginTop: '6rem',\n  backgroundColor: 'var(--card-bg-color)',\n  position: 'relative',\n  width: '100%',\n})\n\nexport const fieldsBox = style({\n  width: 200,\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 {assignInlineVars} from '@vanilla-extract/dynamic'\nimport {startTransition, useOptimistic, useRef, type ComponentProps} from 'react'\nimport {type ObjectInputProps, set, setIfMissing, unset} from 'sanity'\n\nimport {ColorList} from './ColorList'\nimport {ColorPickerFields} from './ColorPickerFields'\nimport {\n  Alpha,\n  Checkboard,\n  type Color,\n  type ColorState,\n  Hue,\n  Saturation,\n  simpleCheckForValidColor,\n  toState,\n} from './react-color'\nimport type {ColorSchemaType, ColorValue} from './types'\n\nimport {\n  alphaCard,\n  colorBox,\n  fieldsBox,\n  previewBackgroundVar,\n  previewCard,\n  readOnlyContainer,\n  root,\n  saturationCard,\n  sliderCard,\n  widthVar,\n} from './ColorInput.css'\n\nfunction ColorBox({backgroundColor}: {backgroundColor: string}) {\n  return (\n    <Box className={colorBox} style={assignInlineVars({[previewBackgroundVar]: backgroundColor})} />\n  )\n}\n\nfunction ReadOnlyContainer(props: ComponentProps<typeof Flex>) {\n  return <Flex {...props} className={readOnlyContainer} />\n}\n\nfunction FieldsBox(props: ComponentProps<typeof Box>) {\n  return <Box {...props} className={fieldsBox} />\n}\n\ninterface ColorPickerProps {\n  width?: string\n  disableAlpha: boolean\n  colorList?: Array<Color> | undefined\n  readOnly?: boolean\n  onChange: (color: ColorState) => void\n  onUnset: () => void\n  color: ColorValue\n}\n\nconst ColorPicker = (props: ColorPickerProps) => {\n  const {\n    width,\n    color: {rgb, hex, hsv, hsl},\n    onChange: onChangeProp,\n    onUnset,\n    disableAlpha,\n    colorList,\n    readOnly,\n  } = props\n\n  // Remembers the hue across achromatic colors (saturation 0), where the hue\n  // can't be recovered from the color value itself. While the color is\n  // chromatic the live `hsl` prop is authoritative — so external value changes\n  // (undo, remote sync) are picked up — and the ref only bridges achromatic\n  // spans. Adapted from react-color's `ColorWrap` HOC (MIT, Copyright (c) 2015\n  // Case Sandberg).\n  const oldHueRef = useRef(hsl?.h ?? 0)\n\n  const onChange = (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 oldHue = hsl && hsl.s > 0 ? hsl.h : oldHueRef.current\n    const nextColor = toState(data, incomingHue || oldHue)\n    oldHueRef.current = nextColor.oldHue\n    onChangeProp(nextColor)\n  }\n\n  if (!hsl || !hsv) {\n    return null\n  }\n\n  return (\n    <div className={root} style={width ? assignInlineVars({[widthVar]: width}) : undefined}>\n      <Card padding={1} border radius={1}>\n        <Stack gap={2}>\n          {!readOnly && (\n            <>\n              <Card overflow=\"hidden\" className={saturationCard}>\n                <Saturation onChange={onChange} hsl={hsl} hsv={hsv} />\n              </Card>\n\n              <Card shadow={1} radius={3} overflow=\"hidden\" className={sliderCard}>\n                <Hue hsl={hsl} onChange={!readOnly && onChange} />\n              </Card>\n\n              {!disableAlpha && (\n                <Card shadow={1} radius={3} overflow=\"hidden\" className={alphaCard}>\n                  <Alpha rgb={rgb} hsl={hsl} onChange={onChange} />\n                </Card>\n              )}\n            </>\n          )}\n          <Flex>\n            <Card flex={1} radius={2} overflow=\"hidden\" className={previewCard}>\n              <Checkboard size={8} white=\"transparent\" grey=\"rgba(0,0,0,.08)\" />\n              <ColorBox backgroundColor={`rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`} />\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                <FieldsBox>\n                  <ColorPickerFields\n                    rgb={rgb}\n                    hsl={hsl}\n                    hex={hex}\n                    onChange={onChange}\n                    disableAlpha={disableAlpha}\n                  />\n                </FieldsBox>\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 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