@sanity/color-input 6.0.16 → 6.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { set, setIfMissing, unset } from "sanity";
|
|
2
|
-
import { Component,
|
|
2
|
+
import { Component, createRef, startTransition, useOptimistic, useRef } from "react";
|
|
3
3
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
5
5
|
import { AddIcon } from "@sanity/icons/Add";
|
|
@@ -125,26 +125,23 @@ function calculateChange$2(e, hsl, direction, initialA, container) {
|
|
|
125
125
|
* and the unused custom `pointer` slot dropped.
|
|
126
126
|
*/
|
|
127
127
|
var Alpha = class extends Component {
|
|
128
|
-
|
|
128
|
+
containerRef = createRef();
|
|
129
|
+
abortControllerRef = createRef();
|
|
129
130
|
componentWillUnmount() {
|
|
130
|
-
this.
|
|
131
|
+
this.abortControllerRef.current?.abort();
|
|
131
132
|
}
|
|
132
|
-
setContainerRef = (node) => {
|
|
133
|
-
this.container = node;
|
|
134
|
-
};
|
|
135
133
|
handleChange = (event) => {
|
|
136
|
-
if (!this.
|
|
137
|
-
let change = calculateChange$2(event, this.props.hsl, this.props.direction, this.props.a, this.
|
|
134
|
+
if (!this.containerRef.current) return;
|
|
135
|
+
let change = calculateChange$2(event, this.props.hsl, this.props.direction, this.props.a, this.containerRef.current);
|
|
138
136
|
change && typeof this.props.onChange == "function" && this.props.onChange(change);
|
|
139
137
|
};
|
|
140
138
|
handleMouseDown = (event) => {
|
|
141
|
-
this.handleChange(event.nativeEvent),
|
|
139
|
+
this.handleChange(event.nativeEvent), this.abortControllerRef.current && this.abortControllerRef.current.abort(), this.abortControllerRef.current = new AbortController();
|
|
140
|
+
let { signal } = this.abortControllerRef.current;
|
|
141
|
+
window.addEventListener("mousemove", this.handleChange, { signal }), window.addEventListener("mouseup", this.handleMouseUp, { signal });
|
|
142
142
|
};
|
|
143
143
|
handleMouseUp = () => {
|
|
144
|
-
this.
|
|
145
|
-
};
|
|
146
|
-
unbindEventListeners = () => {
|
|
147
|
-
window.removeEventListener("mousemove", this.handleChange), window.removeEventListener("mouseup", this.handleMouseUp);
|
|
144
|
+
this.abortControllerRef.current?.abort();
|
|
148
145
|
};
|
|
149
146
|
render() {
|
|
150
147
|
let { rgb, direction, radius, shadow, renderers } = this.props, alphaValue = rgb.a ?? 1, gradient = direction === "vertical" ? `linear-gradient(to bottom, rgba(${rgb.r},${rgb.g},${rgb.b}, 0) 0%, rgba(${rgb.r},${rgb.g},${rgb.b}, 1) 100%)` : `linear-gradient(to right, rgba(${rgb.r},${rgb.g},${rgb.b}, 0) 0%, rgba(${rgb.r},${rgb.g},${rgb.b}, 1) 100%)`, pointerStyle = direction === "vertical" ? {
|
|
@@ -184,7 +181,7 @@ var Alpha = class extends Component {
|
|
|
184
181
|
height: "100%",
|
|
185
182
|
margin: "0 3px"
|
|
186
183
|
},
|
|
187
|
-
ref: this.
|
|
184
|
+
ref: this.containerRef,
|
|
188
185
|
onMouseDown: this.handleMouseDown,
|
|
189
186
|
onTouchMove: this.handleChange,
|
|
190
187
|
onTouchStart: this.handleChange,
|
|
@@ -206,98 +203,6 @@ var Alpha = class extends Component {
|
|
|
206
203
|
}
|
|
207
204
|
};
|
|
208
205
|
/**
|
|
209
|
-
* Color conversion and validation helpers built on `tinycolor2`.
|
|
210
|
-
*
|
|
211
|
-
* Forked from
|
|
212
|
-
* {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/color.js | react-color's color helpers}
|
|
213
|
-
* (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.
|
|
214
|
-
*/
|
|
215
|
-
const VALIDATION_KEYS = /* @__PURE__ */ new Set([
|
|
216
|
-
"r",
|
|
217
|
-
"g",
|
|
218
|
-
"b",
|
|
219
|
-
"a",
|
|
220
|
-
"h",
|
|
221
|
-
"s",
|
|
222
|
-
"l",
|
|
223
|
-
"v"
|
|
224
|
-
]), PERCENT_PATTERN = /^\d+%$/;
|
|
225
|
-
function simpleCheckForValidColor(data) {
|
|
226
|
-
if (typeof data == "string") return data;
|
|
227
|
-
let checked = 0, passed = 0;
|
|
228
|
-
for (let [key, value] of Object.entries(data)) !VALIDATION_KEYS.has(key) || !value || (checked += 1, Number.isNaN(Number(value)) || (passed += 1), (key === "s" || key === "l") && PERCENT_PATTERN.test(String(value)) && (passed += 1));
|
|
229
|
-
return checked === passed && data;
|
|
230
|
-
}
|
|
231
|
-
function toState(data, oldHue) {
|
|
232
|
-
let instance = typeof data == "string" ? tinycolor(data) : "hex" in data ? tinycolor(data.hex) : tinycolor(data), hsl = instance.toHsl(), hsv = instance.toHsv(), rgb = instance.toRgb(), hex = instance.toHex();
|
|
233
|
-
hsl.s === 0 && (hsl.h = oldHue ?? 0, hsv.h = oldHue ?? 0);
|
|
234
|
-
let transparent = hex === "000000" && rgb.a === 0, incomingHue = typeof data == "string" ? void 0 : "h" in data ? data.h : void 0, source = typeof data == "string" ? void 0 : data.source;
|
|
235
|
-
return {
|
|
236
|
-
hsl,
|
|
237
|
-
hex: transparent ? "transparent" : `#${hex}`,
|
|
238
|
-
rgb,
|
|
239
|
-
hsv,
|
|
240
|
-
oldHue: incomingHue || oldHue || hsl.h,
|
|
241
|
-
source: source ?? ""
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
function isValidHex(hex) {
|
|
245
|
-
if (hex === "transparent") return !0;
|
|
246
|
-
let lh = +(hex.charAt(0) === "#");
|
|
247
|
-
return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* `CustomPicker` higher-order component: manages color state and injects the
|
|
251
|
-
* normalized color (`hsl`/`hsv`/`rgb`/`hex`) plus an `onChange` handler into the
|
|
252
|
-
* wrapped picker.
|
|
253
|
-
*
|
|
254
|
-
* Forked from
|
|
255
|
-
* {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/components/common/ColorWrap.js | react-color's ColorWrap}
|
|
256
|
-
* (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.
|
|
257
|
-
*
|
|
258
|
-
* @remarks
|
|
259
|
-
* Kept as a class component for this round (function-component conversion is a
|
|
260
|
-
* follow-up PR). `prop-types` and the unused `lodash` `debounce` of
|
|
261
|
-
* `onChangeComplete` have been removed.
|
|
262
|
-
*/
|
|
263
|
-
const DEFAULT_COLOR$1 = {
|
|
264
|
-
h: 250,
|
|
265
|
-
s: .5,
|
|
266
|
-
l: .2,
|
|
267
|
-
a: 1
|
|
268
|
-
};
|
|
269
|
-
function CustomPicker(Picker) {
|
|
270
|
-
class ColorPicker extends PureComponent {
|
|
271
|
-
static getDerivedStateFromProps(nextProps, state) {
|
|
272
|
-
return { ...toState(nextProps.color ?? DEFAULT_COLOR$1, state.oldHue) };
|
|
273
|
-
}
|
|
274
|
-
constructor(props) {
|
|
275
|
-
super(props), this.state = { ...toState(props.color ?? DEFAULT_COLOR$1, 0) };
|
|
276
|
-
}
|
|
277
|
-
handleChange = (data) => {
|
|
278
|
-
if (!simpleCheckForValidColor(data)) return;
|
|
279
|
-
let colors = toState(data, (typeof data == "string" ? void 0 : "h" in data ? data.h : void 0) || this.state.oldHue);
|
|
280
|
-
this.setState(colors), this.props.onChange?.(colors);
|
|
281
|
-
};
|
|
282
|
-
render() {
|
|
283
|
-
let injected = {
|
|
284
|
-
hsl: this.state.hsl,
|
|
285
|
-
hsv: this.state.hsv,
|
|
286
|
-
rgb: this.state.rgb,
|
|
287
|
-
hex: this.state.hex,
|
|
288
|
-
oldHue: this.state.oldHue,
|
|
289
|
-
source: this.state.source,
|
|
290
|
-
onChange: this.handleChange
|
|
291
|
-
};
|
|
292
|
-
return /* @__PURE__ */ jsx(Picker, {
|
|
293
|
-
...this.props,
|
|
294
|
-
...injected
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
return ColorPicker;
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
206
|
* Labeled text input with arrow-key stepping and drag-to-change support.
|
|
302
207
|
*
|
|
303
208
|
* Forked from
|
|
@@ -314,7 +219,8 @@ const getNumberValue = (value) => Number(String(value).replace(/%/g, ""));
|
|
|
314
219
|
let idCounter = 1;
|
|
315
220
|
var EditableInput = class extends Component {
|
|
316
221
|
inputId;
|
|
317
|
-
|
|
222
|
+
inputRef = createRef();
|
|
223
|
+
abortControllerRef = createRef();
|
|
318
224
|
constructor(props) {
|
|
319
225
|
super(props);
|
|
320
226
|
let initialValue = String(props.value ?? "").toUpperCase();
|
|
@@ -325,7 +231,7 @@ var EditableInput = class extends Component {
|
|
|
325
231
|
}
|
|
326
232
|
componentDidUpdate(prevProps, prevState) {
|
|
327
233
|
if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {
|
|
328
|
-
let nextValue = String(this.props.value ?? "").toUpperCase(), isFocused = this.
|
|
234
|
+
let nextValue = String(this.props.value ?? "").toUpperCase(), isFocused = this.inputRef.current === document.activeElement;
|
|
329
235
|
this.setState(isFocused ? { blurValue: nextValue } : {
|
|
330
236
|
value: nextValue,
|
|
331
237
|
blurValue: this.state.blurValue ? "" : nextValue
|
|
@@ -333,11 +239,8 @@ var EditableInput = class extends Component {
|
|
|
333
239
|
}
|
|
334
240
|
}
|
|
335
241
|
componentWillUnmount() {
|
|
336
|
-
this.
|
|
242
|
+
this.abortControllerRef.current?.abort();
|
|
337
243
|
}
|
|
338
|
-
setInputRef = (input) => {
|
|
339
|
-
this.input = input;
|
|
340
|
-
};
|
|
341
244
|
getValueObjectWithLabel = (value) => ({ [this.props.label]: String(value) });
|
|
342
245
|
getArrowOffset = () => this.props.arrowOffset ?? 1;
|
|
343
246
|
setUpdatedValue = (value, event) => {
|
|
@@ -365,13 +268,13 @@ var EditableInput = class extends Component {
|
|
|
365
268
|
dragMax !== void 0 && newValue >= 0 && newValue <= dragMax && this.props.onChange?.(this.getValueObjectWithLabel(newValue), event);
|
|
366
269
|
};
|
|
367
270
|
handleMouseDown = (event) => {
|
|
368
|
-
this.props.dragLabel
|
|
271
|
+
if (!this.props.dragLabel) return;
|
|
272
|
+
event.preventDefault(), this.handleDrag(event.nativeEvent), this.abortControllerRef.current && this.abortControllerRef.current.abort(), this.abortControllerRef.current = new AbortController();
|
|
273
|
+
let { signal } = this.abortControllerRef.current;
|
|
274
|
+
window.addEventListener("mousemove", this.handleDrag, { signal }), window.addEventListener("mouseup", this.handleMouseUp, { signal });
|
|
369
275
|
};
|
|
370
276
|
handleMouseUp = () => {
|
|
371
|
-
this.
|
|
372
|
-
};
|
|
373
|
-
unbindEventListeners = () => {
|
|
374
|
-
window.removeEventListener("mousemove", this.handleDrag), window.removeEventListener("mouseup", this.handleMouseUp);
|
|
277
|
+
this.abortControllerRef.current?.abort();
|
|
375
278
|
};
|
|
376
279
|
render() {
|
|
377
280
|
let style = this.props.style ?? {}, wrapStyle = {
|
|
@@ -386,7 +289,7 @@ var EditableInput = class extends Component {
|
|
|
386
289
|
children: [/* @__PURE__ */ jsx("input", {
|
|
387
290
|
id: this.inputId,
|
|
388
291
|
style: inputStyle,
|
|
389
|
-
ref: this.
|
|
292
|
+
ref: this.inputRef,
|
|
390
293
|
value: this.state.value,
|
|
391
294
|
onKeyDown: this.handleKeyDown,
|
|
392
295
|
onChange: this.handleChange,
|
|
@@ -402,6 +305,47 @@ var EditableInput = class extends Component {
|
|
|
402
305
|
});
|
|
403
306
|
}
|
|
404
307
|
};
|
|
308
|
+
/**
|
|
309
|
+
* Color conversion and validation helpers built on `tinycolor2`.
|
|
310
|
+
*
|
|
311
|
+
* Forked from
|
|
312
|
+
* {@link https://github.com/casesandberg/react-color/blob/v2.19.3/src/helpers/color.js | react-color's color helpers}
|
|
313
|
+
* (MIT, Copyright (c) 2015 Case Sandberg). See the plugin LICENSE.
|
|
314
|
+
*/
|
|
315
|
+
const VALIDATION_KEYS = /* @__PURE__ */ new Set([
|
|
316
|
+
"r",
|
|
317
|
+
"g",
|
|
318
|
+
"b",
|
|
319
|
+
"a",
|
|
320
|
+
"h",
|
|
321
|
+
"s",
|
|
322
|
+
"l",
|
|
323
|
+
"v"
|
|
324
|
+
]), PERCENT_PATTERN = /^\d+%$/;
|
|
325
|
+
function simpleCheckForValidColor(data) {
|
|
326
|
+
if (typeof data == "string") return data;
|
|
327
|
+
let checked = 0, passed = 0;
|
|
328
|
+
for (let [key, value] of Object.entries(data)) !VALIDATION_KEYS.has(key) || !value || (checked += 1, Number.isNaN(Number(value)) || (passed += 1), (key === "s" || key === "l") && PERCENT_PATTERN.test(String(value)) && (passed += 1));
|
|
329
|
+
return checked === passed && data;
|
|
330
|
+
}
|
|
331
|
+
function toState(data, oldHue) {
|
|
332
|
+
let instance = typeof data == "string" ? tinycolor(data) : "hex" in data ? tinycolor(data.hex) : tinycolor(data), hsl = instance.toHsl(), hsv = instance.toHsv(), rgb = instance.toRgb(), hex = instance.toHex();
|
|
333
|
+
hsl.s === 0 && (hsl.h = oldHue ?? 0, hsv.h = oldHue ?? 0);
|
|
334
|
+
let transparent = hex === "000000" && rgb.a === 0, incomingHue = typeof data == "string" ? void 0 : "h" in data ? data.h : void 0, source = typeof data == "string" ? void 0 : data.source;
|
|
335
|
+
return {
|
|
336
|
+
hsl,
|
|
337
|
+
hex: transparent ? "transparent" : `#${hex}`,
|
|
338
|
+
rgb,
|
|
339
|
+
hsv,
|
|
340
|
+
oldHue: incomingHue || oldHue || hsl.h,
|
|
341
|
+
source: source ?? ""
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
function isValidHex(hex) {
|
|
345
|
+
if (hex === "transparent") return !0;
|
|
346
|
+
let lh = +(hex.charAt(0) === "#");
|
|
347
|
+
return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();
|
|
348
|
+
}
|
|
405
349
|
function calculateChange$1(e, direction, hsl, container) {
|
|
406
350
|
let containerWidth = container.clientWidth, containerHeight = container.clientHeight, x = "touches" in e ? e.touches[0]?.pageX ?? 0 : e.pageX, y = "touches" in e ? e.touches[0]?.pageY ?? 0 : e.pageY, left = x - (container.getBoundingClientRect().left + window.scrollX), top = y - (container.getBoundingClientRect().top + window.scrollY);
|
|
407
351
|
if (direction === "vertical") {
|
|
@@ -437,29 +381,26 @@ function calculateChange$1(e, direction, hsl, container) {
|
|
|
437
381
|
*/
|
|
438
382
|
const HueGradient = styled.div.withConfig({
|
|
439
383
|
displayName: "HueGradient",
|
|
440
|
-
componentId: "sc-
|
|
384
|
+
componentId: "sc-xk84ve-0"
|
|
441
385
|
})`background:${({ $direction }) => $direction === "vertical" ? "linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)" : "linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%)"};`;
|
|
442
386
|
var Hue = class extends Component {
|
|
443
|
-
|
|
387
|
+
containerRef = createRef();
|
|
388
|
+
abortControllerRef = createRef();
|
|
444
389
|
componentWillUnmount() {
|
|
445
|
-
this.
|
|
390
|
+
this.abortControllerRef.current?.abort();
|
|
446
391
|
}
|
|
447
|
-
setContainerRef = (node) => {
|
|
448
|
-
this.container = node;
|
|
449
|
-
};
|
|
450
392
|
handleChange = (event) => {
|
|
451
|
-
if (!this.
|
|
452
|
-
let change = calculateChange$1(event, this.props.direction, this.props.hsl, this.
|
|
393
|
+
if (!this.containerRef.current) return;
|
|
394
|
+
let change = calculateChange$1(event, this.props.direction, this.props.hsl, this.containerRef.current);
|
|
453
395
|
change && typeof this.props.onChange == "function" && this.props.onChange(change);
|
|
454
396
|
};
|
|
455
397
|
handleMouseDown = (event) => {
|
|
456
|
-
this.handleChange(event.nativeEvent),
|
|
398
|
+
this.handleChange(event.nativeEvent), this.abortControllerRef.current && this.abortControllerRef.current.abort(), this.abortControllerRef.current = new AbortController();
|
|
399
|
+
let { signal } = this.abortControllerRef.current;
|
|
400
|
+
window.addEventListener("mousemove", this.handleChange, { signal }), window.addEventListener("mouseup", this.handleMouseUp, { signal });
|
|
457
401
|
};
|
|
458
402
|
handleMouseUp = () => {
|
|
459
|
-
this.
|
|
460
|
-
};
|
|
461
|
-
unbindEventListeners = () => {
|
|
462
|
-
window.removeEventListener("mousemove", this.handleChange), window.removeEventListener("mouseup", this.handleMouseUp);
|
|
403
|
+
this.abortControllerRef.current?.abort();
|
|
463
404
|
};
|
|
464
405
|
render() {
|
|
465
406
|
let { hsl, direction = "horizontal", radius, shadow } = this.props, pointerStyle = direction === "vertical" ? {
|
|
@@ -485,7 +426,7 @@ var Hue = class extends Component {
|
|
|
485
426
|
height: "100%",
|
|
486
427
|
borderRadius: radius
|
|
487
428
|
},
|
|
488
|
-
ref: this.
|
|
429
|
+
ref: this.containerRef,
|
|
489
430
|
onMouseDown: this.handleMouseDown,
|
|
490
431
|
onTouchMove: this.handleChange,
|
|
491
432
|
onTouchStart: this.handleChange,
|
|
@@ -532,41 +473,37 @@ function calculateChange(e, hsl, container) {
|
|
|
532
473
|
*/
|
|
533
474
|
const SaturationWhite = styled.div.withConfig({
|
|
534
475
|
displayName: "SaturationWhite",
|
|
535
|
-
componentId: "sc-
|
|
476
|
+
componentId: "sc-pljli8-0"
|
|
536
477
|
})`background:linear-gradient(to right,#fff,rgba(255,255,255,0));`, SaturationBlack = styled.div.withConfig({
|
|
537
478
|
displayName: "SaturationBlack",
|
|
538
|
-
componentId: "sc-
|
|
479
|
+
componentId: "sc-pljli8-1"
|
|
539
480
|
})`background:linear-gradient(to top,#000,rgba(0,0,0,0));`;
|
|
540
481
|
var Saturation = class extends Component {
|
|
541
|
-
|
|
482
|
+
containerRef = createRef();
|
|
483
|
+
abortControllerRef = createRef();
|
|
542
484
|
throttle = throttle((handler, data) => {
|
|
543
485
|
handler(data);
|
|
544
486
|
}, 50);
|
|
545
487
|
componentWillUnmount() {
|
|
546
|
-
this.throttle.cancel(), this.
|
|
488
|
+
this.throttle.cancel(), this.abortControllerRef.current?.abort();
|
|
547
489
|
}
|
|
548
|
-
setContainerRef = (node) => {
|
|
549
|
-
this.container = node;
|
|
550
|
-
};
|
|
551
490
|
getContainerRenderWindow() {
|
|
552
|
-
let {
|
|
553
|
-
for (; !renderWindow.document.contains(
|
|
491
|
+
let { containerRef } = this, renderWindow = window;
|
|
492
|
+
for (; !renderWindow.document.contains(containerRef.current) && renderWindow.parent !== renderWindow;) renderWindow = renderWindow.parent;
|
|
554
493
|
return renderWindow;
|
|
555
494
|
}
|
|
556
495
|
handleChange = (event) => {
|
|
557
|
-
!this.
|
|
496
|
+
!this.containerRef.current || typeof this.props.onChange != "function" || this.throttle(this.props.onChange, calculateChange(event, this.props.hsl, this.containerRef.current));
|
|
558
497
|
};
|
|
559
498
|
handleMouseDown = (event) => {
|
|
560
499
|
this.handleChange(event.nativeEvent);
|
|
561
500
|
let renderWindow = this.getContainerRenderWindow();
|
|
562
|
-
|
|
501
|
+
this.abortControllerRef.current && this.abortControllerRef.current.abort(), this.abortControllerRef.current = new AbortController();
|
|
502
|
+
let { signal } = this.abortControllerRef.current;
|
|
503
|
+
renderWindow.addEventListener("mousemove", this.handleChange, { signal }), renderWindow.addEventListener("mouseup", this.handleMouseUp, { signal });
|
|
563
504
|
};
|
|
564
505
|
handleMouseUp = () => {
|
|
565
|
-
this.
|
|
566
|
-
};
|
|
567
|
-
unbindEventListeners = () => {
|
|
568
|
-
let renderWindow = this.getContainerRenderWindow();
|
|
569
|
-
renderWindow.removeEventListener("mousemove", this.handleChange), renderWindow.removeEventListener("mouseup", this.handleMouseUp);
|
|
506
|
+
this.abortControllerRef.current?.abort();
|
|
570
507
|
};
|
|
571
508
|
render() {
|
|
572
509
|
let { hsl, hsv, radius, shadow } = this.props, pointerStyle = {
|
|
@@ -582,7 +519,7 @@ var Saturation = class extends Component {
|
|
|
582
519
|
background: `hsl(${hsl.h},100%, 50%)`,
|
|
583
520
|
borderRadius: radius
|
|
584
521
|
},
|
|
585
|
-
ref: this.
|
|
522
|
+
ref: this.containerRef,
|
|
586
523
|
onMouseDown: this.handleMouseDown,
|
|
587
524
|
onTouchMove: this.handleChange,
|
|
588
525
|
onTouchStart: this.handleChange,
|
|
@@ -737,17 +674,23 @@ const ColorPickerFields = (t0) => {
|
|
|
737
674
|
] }), $[38] = t11, $[39] = t13, $[40] = t15, $[41] = t16, $[42] = t9, $[43] = t17) : t17 = $[43], t17;
|
|
738
675
|
}, ColorBox = styled(Box).withConfig({
|
|
739
676
|
displayName: "ColorBox",
|
|
740
|
-
componentId: "sc-
|
|
677
|
+
componentId: "sc-ngkz6o-0"
|
|
741
678
|
})`position:absolute;top:0;left:0;width:100%;height:100%;`, ReadOnlyContainer = styled(Flex).withConfig({
|
|
742
679
|
displayName: "ReadOnlyContainer",
|
|
743
|
-
componentId: "sc-
|
|
744
|
-
})`margin-top:6rem;background-color:var(--card-bg-color);position:relative;width:100%;`, ColorPicker =
|
|
745
|
-
let $ = c(
|
|
680
|
+
componentId: "sc-ngkz6o-1"
|
|
681
|
+
})`margin-top:6rem;background-color:var(--card-bg-color);position:relative;width:100%;`, ColorPicker = (props) => {
|
|
682
|
+
let $ = c(49), { width, color: t0, onChange: onChangeProp, onUnset, disableAlpha, colorList, readOnly } = props, { rgb, hex, hsv, hsl } = t0, oldHueRef = useRef(hsl?.h ?? 0), t1;
|
|
683
|
+
$[0] !== hsl || $[1] !== onChangeProp ? (t1 = (data) => {
|
|
684
|
+
if (!simpleCheckForValidColor(data)) return;
|
|
685
|
+
let incomingHue = typeof data == "string" ? void 0 : "h" in data ? data.h : void 0, oldHue = hsl && hsl.s > 0 ? hsl.h : oldHueRef.current, nextColor = toState(data, incomingHue || oldHue);
|
|
686
|
+
oldHueRef.current = nextColor.oldHue, onChangeProp(nextColor);
|
|
687
|
+
}, $[0] = hsl, $[1] = onChangeProp, $[2] = t1) : t1 = $[2];
|
|
688
|
+
let onChange = t1;
|
|
746
689
|
if (!hsl || !hsv) return null;
|
|
747
|
-
let t1;
|
|
748
|
-
$[0] === width ? t1 = $[1] : (t1 = { width }, $[0] = width, $[1] = t1);
|
|
749
690
|
let t2;
|
|
750
|
-
$[
|
|
691
|
+
$[3] === width ? t2 = $[4] : (t2 = { width }, $[3] = width, $[4] = t2);
|
|
692
|
+
let t3;
|
|
693
|
+
$[5] !== disableAlpha || $[6] !== hsl || $[7] !== hsv || $[8] !== onChange || $[9] !== readOnly || $[10] !== rgb ? (t3 = !readOnly && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
751
694
|
/* @__PURE__ */ jsx(Card, {
|
|
752
695
|
overflow: "hidden",
|
|
753
696
|
style: {
|
|
@@ -788,21 +731,21 @@ const ColorPickerFields = (t0) => {
|
|
|
788
731
|
onChange
|
|
789
732
|
})
|
|
790
733
|
})
|
|
791
|
-
] }), $[
|
|
792
|
-
let
|
|
793
|
-
$[
|
|
734
|
+
] }), $[5] = disableAlpha, $[6] = hsl, $[7] = hsv, $[8] = onChange, $[9] = readOnly, $[10] = rgb, $[11] = t3) : t3 = $[11];
|
|
735
|
+
let t4, t5;
|
|
736
|
+
$[12] === Symbol.for("react.memo_cache_sentinel") ? (t4 = {
|
|
794
737
|
position: "relative",
|
|
795
738
|
minWidth: "4em",
|
|
796
739
|
background: "#fff"
|
|
797
|
-
},
|
|
740
|
+
}, t5 = /* @__PURE__ */ jsx(Checkboard, {
|
|
798
741
|
size: 8,
|
|
799
742
|
white: "transparent",
|
|
800
743
|
grey: "rgba(0,0,0,.08)"
|
|
801
|
-
}), $[
|
|
802
|
-
let
|
|
803
|
-
$[
|
|
804
|
-
let
|
|
805
|
-
$[
|
|
744
|
+
}), $[12] = t4, $[13] = t5) : (t4 = $[12], t5 = $[13]);
|
|
745
|
+
let t6 = `rgba(${rgb?.r},${rgb?.g},${rgb?.b},${rgb?.a})`, t7;
|
|
746
|
+
$[14] === t6 ? t7 = $[15] : (t7 = /* @__PURE__ */ jsx(ColorBox, { style: { backgroundColor: t6 } }), $[14] = t6, $[15] = t7);
|
|
747
|
+
let t8;
|
|
748
|
+
$[16] !== hex || $[17] !== hsl?.h || $[18] !== hsl?.l || $[19] !== hsl?.s || $[20] !== readOnly || $[21] !== rgb?.b || $[22] !== rgb?.g || $[23] !== rgb?.r ? (t8 = readOnly && /* @__PURE__ */ jsx(ReadOnlyContainer, {
|
|
806
749
|
padding: 2,
|
|
807
750
|
paddingBottom: 1,
|
|
808
751
|
sizing: "border",
|
|
@@ -841,21 +784,21 @@ const ColorPickerFields = (t0) => {
|
|
|
841
784
|
})]
|
|
842
785
|
})]
|
|
843
786
|
})
|
|
844
|
-
}), $[
|
|
845
|
-
let
|
|
846
|
-
$[
|
|
787
|
+
}), $[16] = hex, $[17] = hsl?.h, $[18] = hsl?.l, $[19] = hsl?.s, $[20] = readOnly, $[21] = rgb?.b, $[22] = rgb?.g, $[23] = rgb?.r, $[24] = t8) : t8 = $[24];
|
|
788
|
+
let t9;
|
|
789
|
+
$[25] !== t7 || $[26] !== t8 ? (t9 = /* @__PURE__ */ jsxs(Card, {
|
|
847
790
|
flex: 1,
|
|
848
791
|
radius: 2,
|
|
849
792
|
overflow: "hidden",
|
|
850
|
-
style:
|
|
793
|
+
style: t4,
|
|
851
794
|
children: [
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
795
|
+
t5,
|
|
796
|
+
t7,
|
|
797
|
+
t8
|
|
855
798
|
]
|
|
856
|
-
}), $[
|
|
857
|
-
let
|
|
858
|
-
$[
|
|
799
|
+
}), $[25] = t7, $[26] = t8, $[27] = t9) : t9 = $[27];
|
|
800
|
+
let t10;
|
|
801
|
+
$[28] !== disableAlpha || $[29] !== hex || $[30] !== hsl || $[31] !== onChange || $[32] !== onUnset || $[33] !== readOnly || $[34] !== rgb ? (t10 = !readOnly && /* @__PURE__ */ jsxs(Flex, {
|
|
859
802
|
align: "flex-start",
|
|
860
803
|
marginLeft: 2,
|
|
861
804
|
children: [/* @__PURE__ */ jsx(Box, {
|
|
@@ -876,34 +819,34 @@ const ColorPickerFields = (t0) => {
|
|
|
876
819
|
tone: "critical"
|
|
877
820
|
})
|
|
878
821
|
})]
|
|
879
|
-
}), $[
|
|
880
|
-
let t10;
|
|
881
|
-
$[33] !== t8 || $[34] !== t9 ? (t10 = /* @__PURE__ */ jsxs(Flex, { children: [t8, t9] }), $[33] = t8, $[34] = t9, $[35] = t10) : t10 = $[35];
|
|
822
|
+
}), $[28] = disableAlpha, $[29] = hex, $[30] = hsl, $[31] = onChange, $[32] = onUnset, $[33] = readOnly, $[34] = rgb, $[35] = t10) : t10 = $[35];
|
|
882
823
|
let t11;
|
|
883
|
-
$[36] !==
|
|
824
|
+
$[36] !== t10 || $[37] !== t9 ? (t11 = /* @__PURE__ */ jsxs(Flex, { children: [t9, t10] }), $[36] = t10, $[37] = t9, $[38] = t11) : t11 = $[38];
|
|
825
|
+
let t12;
|
|
826
|
+
$[39] !== colorList || $[40] !== onChange ? (t12 = colorList && /* @__PURE__ */ jsx(ColorList, {
|
|
884
827
|
colors: colorList,
|
|
885
828
|
onChange
|
|
886
|
-
}), $[
|
|
887
|
-
let
|
|
888
|
-
$[
|
|
829
|
+
}), $[39] = colorList, $[40] = onChange, $[41] = t12) : t12 = $[41];
|
|
830
|
+
let t13;
|
|
831
|
+
$[42] !== t11 || $[43] !== t12 || $[44] !== t3 ? (t13 = /* @__PURE__ */ jsx(Card, {
|
|
889
832
|
padding: 1,
|
|
890
833
|
border: !0,
|
|
891
834
|
radius: 1,
|
|
892
835
|
children: /* @__PURE__ */ jsxs(Stack, {
|
|
893
836
|
gap: 2,
|
|
894
837
|
children: [
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
838
|
+
t3,
|
|
839
|
+
t11,
|
|
840
|
+
t12
|
|
898
841
|
]
|
|
899
842
|
})
|
|
900
|
-
}), $[
|
|
901
|
-
let
|
|
902
|
-
return $[
|
|
903
|
-
style:
|
|
904
|
-
children:
|
|
905
|
-
}), $[
|
|
906
|
-
}
|
|
843
|
+
}), $[42] = t11, $[43] = t12, $[44] = t3, $[45] = t13) : t13 = $[45];
|
|
844
|
+
let t14;
|
|
845
|
+
return $[46] !== t13 || $[47] !== t2 ? (t14 = /* @__PURE__ */ jsx("div", {
|
|
846
|
+
style: t2,
|
|
847
|
+
children: t13
|
|
848
|
+
}), $[46] = t13, $[47] = t2, $[48] = t14) : t14 = $[48], t14;
|
|
849
|
+
}, DEFAULT_COLOR = {
|
|
907
850
|
hex: "#24a3e3",
|
|
908
851
|
hsl: {
|
|
909
852
|
h: 200,
|
|
@@ -964,4 +907,4 @@ function ColorInput(props) {
|
|
|
964
907
|
}
|
|
965
908
|
export { ColorInput as default };
|
|
966
909
|
|
|
967
|
-
//# sourceMappingURL=ColorInput-
|
|
910
|
+
//# sourceMappingURL=ColorInput-C2ZSNt70.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorInput-C2ZSNt70.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","createRef","CSSProperties","ReactElement","Checkboard","alpha","AlphaColorResult","CheckboardRenderers","ColorChangeHandler","HSLColor","PickerEvent","RGBColor","AlphaProps","rgb","hsl","a","direction","radius","shadow","renderers","onChange","Alpha","containerRef","HTMLDivElement","abortControllerRef","AbortController","componentWillUnmount","current","abort","handleChange","event","change","calculateChange","props","handleMouseDown","React","MouseEvent","nativeEvent","signal","window","addEventListener","handleMouseUp","render","alphaValue","gradient","r","g","b","pointerStyle","position","left","top","inset","borderRadius","overflow","background","boxShadow","height","margin","width","marginTop","transform","Component","createRef","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","inputRef","abortControllerRef","AbortController","constructor","props","initialValue","toUpperCase","state","componentDidUpdate","prevProps","prevState","nextValue","isFocused","current","document","activeElement","setState","componentWillUnmount","abort","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","signal","window","addEventListener","handleMouseUp","render","wrapStyle","position","wrap","inputStyle","input","labelStyle","cursor","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","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","createRef","CSSProperties","ReactElement","styled","hue","ColorChangeHandler","HSLColor","HueColorResult","PickerEvent","HueGradient","div","$direction","HueProps","hsl","direction","radius","shadow","onChange","Hue","containerRef","HTMLDivElement","abortControllerRef","AbortController","componentWillUnmount","current","abort","handleChange","event","change","calculateChange","props","handleMouseDown","React","MouseEvent","nativeEvent","signal","window","addEventListener","handleMouseUp","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","createRef","CSSProperties","ReactElement","styled","saturation","ColorChangeHandler","HSLColor","HSVColor","PickerEvent","SaturationColorResult","ThrottledChange","ReturnType","handler","data","SaturationWhite","div","SaturationBlack","SaturationProps","hsl","hsv","radius","shadow","onChange","Saturation","containerRef","HTMLDivElement","abortControllerRef","AbortController","componentWillUnmount","cancel","current","abort","getContainerRenderWindow","Window","renderWindow","window","document","contains","parent","handleChange","event","props","calculateChange","handleMouseDown","React","MouseEvent","nativeEvent","signal","addEventListener","handleMouseUp","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","ColorState","Hue","Saturation","simpleCheckForValidColor","toState","ColorSchemaType","ColorValue","ColorBox","ReadOnlyContainer","ColorPickerProps","width","disableAlpha","colorList","Array","readOnly","onChange","color","onUnset","ColorPicker","props","$","_c","t0","onChangeProp","rgb","hex","hsv","hsl","oldHueRef","h","t1","data","incomingHue","undefined","oldHue","s","current","nextColor","t2","t3","position","height","background","t4","t5","Symbol","for","minWidth","t6","r","g","b","a","t7","backgroundColor","t8","l","Math","round","t9","t10","t11","t12","t13","t14","DEFAULT_COLOR","source","v","ColorInput","_value","value","setColorOptimistic","type","schemaType","focusRef","handleChange","fieldPatches","fields","filter","field","name","map","field_0","nextFieldValue","isObject","jsonType","Object","assign","_type","nextColor_0","options","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/EditableInput.tsx","../src/react-color/helpers/color.ts","../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, createRef, type CSSProperties, type 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 containerRef = createRef<HTMLDivElement | null>()\n private abortControllerRef = createRef<AbortController | null>()\n\n override componentWillUnmount(): void {\n this.abortControllerRef.current?.abort()\n }\n\n private readonly handleChange = (event: PickerEvent): void => {\n if (!this.containerRef.current) {\n return\n }\n const change = alpha.calculateChange(\n event,\n this.props.hsl,\n this.props.direction,\n this.props.a,\n this.containerRef.current,\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 if (this.abortControllerRef.current) {\n this.abortControllerRef.current.abort()\n }\n this.abortControllerRef.current = new AbortController()\n const {signal} = this.abortControllerRef.current\n window.addEventListener('mousemove', this.handleChange, {signal})\n window.addEventListener('mouseup', this.handleMouseUp, {signal})\n }\n\n private readonly handleMouseUp = (): void => {\n this.abortControllerRef.current?.abort()\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.containerRef}\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 * 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 {\n Component,\n createRef,\n type ChangeEvent,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type 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 inputRef = createRef<HTMLInputElement | null>()\n private abortControllerRef = createRef<AbortController | 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.inputRef.current === 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.abortControllerRef.current?.abort()\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 if (this.abortControllerRef.current) {\n this.abortControllerRef.current.abort()\n }\n this.abortControllerRef.current = new AbortController()\n const {signal} = this.abortControllerRef.current\n window.addEventListener('mousemove', this.handleDrag, {signal})\n window.addEventListener('mouseup', this.handleMouseUp, {signal})\n }\n\n private readonly handleMouseUp = (): void => {\n this.abortControllerRef.current?.abort()\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.inputRef}\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 * 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","/**\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, createRef, type CSSProperties, type 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 containerRef = createRef<HTMLDivElement | null>()\n private abortControllerRef = createRef<AbortController | null>()\n\n override componentWillUnmount(): void {\n this.abortControllerRef.current?.abort()\n }\n\n private readonly handleChange = (event: PickerEvent): void => {\n if (!this.containerRef.current) {\n return\n }\n const change = hue.calculateChange(\n event,\n this.props.direction,\n this.props.hsl,\n this.containerRef.current,\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 if (this.abortControllerRef.current) {\n this.abortControllerRef.current.abort()\n }\n this.abortControllerRef.current = new AbortController()\n const {signal} = this.abortControllerRef.current\n window.addEventListener('mousemove', this.handleChange, {signal})\n window.addEventListener('mouseup', this.handleMouseUp, {signal})\n }\n\n private readonly handleMouseUp = (): void => {\n this.abortControllerRef.current?.abort()\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.containerRef}\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, createRef, type CSSProperties, type 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 containerRef = createRef<HTMLDivElement | null>()\n private abortControllerRef = createRef<AbortController | 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.abortControllerRef.current?.abort()\n }\n\n private getContainerRenderWindow(): Window {\n const {containerRef} = this\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 private readonly handleChange = (event: PickerEvent): void => {\n if (!this.containerRef.current || typeof this.props.onChange !== 'function') {\n return\n }\n this.throttle(\n this.props.onChange,\n saturation.calculateChange(event, this.props.hsl, this.containerRef.current),\n )\n }\n\n private readonly handleMouseDown = (event: React.MouseEvent<HTMLDivElement>): void => {\n this.handleChange(event.nativeEvent)\n const renderWindow = this.getContainerRenderWindow()\n if (this.abortControllerRef.current) {\n this.abortControllerRef.current.abort()\n }\n this.abortControllerRef.current = new AbortController()\n const {signal} = this.abortControllerRef.current\n renderWindow.addEventListener('mousemove', this.handleChange, {signal})\n renderWindow.addEventListener('mouseup', this.handleMouseUp, {signal})\n }\n\n private readonly handleMouseUp = (): void => {\n this.abortControllerRef.current?.abort()\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.containerRef}\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 type ColorState,\n Hue,\n Saturation,\n simpleCheckForValidColor,\n toState,\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 {\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 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 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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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/react-color/types.ts","../src/types.ts","../src/schemas/color.tsx","../src/schemas/hslaColor.ts","../src/schemas/hsvaColor.ts","../src/schemas/rgbaColor.ts","../src/ColorInput.tsx","../src/LazyColorInput.tsx","../src/index.ts"],"mappings":";;UAeiB;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;KAGU,iBAAiB,WAAW,WAAW,WAAW;UCxC7C;EACf;EACA,KAAK;EACL,KAAK;EACL,KAAK;;UAGU,qBAAqB,KAAK;EACzC;EACA,YAAY,MAAM;;KAGR,kBAAkB,KAAK;EACjC,UAAU;;KAEA,kBAAkB,iBAAiB,YAAY;cCZrD;;;;UAKW,wBAAwB,KAAK;EAC5C,aAAa;EACb,UAAU;;;YAKO;IACf,OAAO;;;cAIE;;;;;;;;;;;cCtBA;;;;;;cCAA;;;;;;cCAA;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/react-color/types.ts","../src/types.ts","../src/schemas/color.tsx","../src/schemas/hslaColor.ts","../src/schemas/hsvaColor.ts","../src/schemas/rgbaColor.ts","../src/ColorInput.tsx","../src/LazyColorInput.tsx","../src/index.ts"],"mappings":";;UAeiB;EACf;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA;EACA;;KAGU,iBAAiB,WAAW,WAAW,WAAW;UCxC7C;EACf;EACA,KAAK;EACL,KAAK;EACL,KAAK;;UAGU,qBAAqB,KAAK;EACzC;EACA,YAAY,MAAM;;KAGR,kBAAkB,KAAK;EACjC,UAAU;;KAEA,kBAAkB,iBAAiB,YAAY;cCZrD;;;;UAKW,wBAAwB,KAAK;EAC5C,aAAa;EACb,UAAU;;;YAKO;IACf,OAAO;;;cAIE;;;;;;;;;;;cCtBA;;;;;;cCAA;;;;;;cCAA;;;;;;iBCsLW,aAAW,OAAO,mBAAmB,MAAM,IAAI;cCtL1D,4BAAU,2BAAV;cCKA,6BAAU"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { definePlugin, defineType } from "sanity";
|
|
2
2
|
import { lazy } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
const ColorInput = lazy(() => import("./ColorInput-
|
|
4
|
+
const ColorInput = lazy(() => import("./ColorInput-C2ZSNt70.js")), round = (val = 1) => Math.round(val * 100), color = defineType({
|
|
5
5
|
name: "color",
|
|
6
6
|
type: "object",
|
|
7
7
|
title: "Color",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/color-input",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.17",
|
|
4
4
|
"description": "Color input",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cms",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@sanity/tsconfig": "^2.2.1",
|
|
42
|
-
"@sanity/tsdown-config": "^0.19.
|
|
42
|
+
"@sanity/tsdown-config": "^0.19.6",
|
|
43
43
|
"@types/lodash-es": "^4.17.12",
|
|
44
44
|
"@types/node": "^24.13.3",
|
|
45
45
|
"@types/react": "^19.2.17",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
48
48
|
"react": "^19.2.7",
|
|
49
49
|
"sanity": "^6.5.0",
|
|
50
|
-
"styled-components": "^6.4.
|
|
51
|
-
"tsdown": "^0.22.
|
|
50
|
+
"styled-components": "^6.4.4",
|
|
51
|
+
"tsdown": "^0.22.12"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"react": "^19.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ColorInput-DVFi-Bal.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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"}
|