@sanity/color-input
6.0.126.0.13
dist/ColorInput.js.map−
dist/ColorInput.js.mapDeleted−1
Index: package/dist/ColorInput.js.map
===================================================================
--- package/dist/ColorInput.js.map
+++ package/dist/ColorInput.js.map
@@ -1,1 +0,0 @@
-{"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