@react-aria/color 3.0.0-beta.6 → 3.0.0-beta.9

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.
package/dist/main.js CHANGED
@@ -1,535 +1,926 @@
1
- var {
2
- useSpinButton
3
- } = require("@react-aria/spinbutton");
4
-
5
- var {
6
- useFormattedTextField
7
- } = require("@react-aria/textfield");
8
-
9
- var {
10
- useKeyboard,
11
- useMove,
12
- useFocusWithin,
13
- useScrollWheel
14
- } = require("@react-aria/interactions");
15
-
16
- var {
17
- useCallback,
18
- useRef,
19
- useState
20
- } = require("react");
21
-
22
- var {
23
- useSlider,
24
- useSliderThumb
25
- } = require("@react-aria/slider");
26
-
27
- var {
28
- useLocale
29
- } = require("@react-aria/i18n");
30
-
31
- var {
32
- mergeProps,
33
- focusWithoutScrolling,
34
- useGlobalListeners,
35
- useLabels,
36
- useId
37
- } = require("@react-aria/utils");
38
-
39
- var _babelRuntimeHelpersExtends = $parcel$interopDefault(require("@babel/runtime/helpers/extends"));
1
+ var $kZqDi$reactariautils = require("@react-aria/utils");
2
+ var $kZqDi$react = require("react");
3
+ var $kZqDi$reactariainteractions = require("@react-aria/interactions");
4
+ var $kZqDi$reactariai18n = require("@react-aria/i18n");
5
+ var $kZqDi$reactariavisuallyhidden = require("@react-aria/visually-hidden");
6
+ var $kZqDi$reactariaslider = require("@react-aria/slider");
7
+ var $kZqDi$reactariatextfield = require("@react-aria/textfield");
8
+ var $kZqDi$reactariaspinbutton = require("@react-aria/spinbutton");
9
+
10
+ function $parcel$exportWildcard(dest, source) {
11
+ Object.keys(source).forEach(function(key) {
12
+ if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
13
+ return;
14
+ }
15
+
16
+ Object.defineProperty(dest, key, {
17
+ enumerable: true,
18
+ get: function get() {
19
+ return source[key];
20
+ }
21
+ });
22
+ });
40
23
 
24
+ return dest;
25
+ }
41
26
  function $parcel$interopDefault(a) {
42
27
  return a && a.__esModule ? a.default : a;
43
28
  }
29
+ function $parcel$export(e, n, v, s) {
30
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
31
+ }
32
+ var $47925bd68062ac17$exports = {};
44
33
 
45
- /**
46
- * Provides the behavior and accessibility implementation for a color slider component.
47
- * Color sliders allow users to adjust an individual channel of a color value.
48
- */
49
- function useColorSlider(props, state) {
50
- let {
51
- trackRef,
52
- inputRef,
53
- orientation,
54
- channel,
55
- 'aria-label': ariaLabel
56
- } = props;
57
- let {
58
- locale,
59
- direction
60
- } = useLocale(); // Provide a default aria-label if there is no other label provided.
61
-
62
- if (!props.label && !ariaLabel && !props['aria-labelledby']) {
63
- ariaLabel = state.value.getChannelName(channel, locale);
64
- } // @ts-ignore - ignore unused incompatible props
65
-
66
-
67
- let {
68
- groupProps,
69
- trackProps,
70
- labelProps,
71
- outputProps
72
- } = useSlider(_babelRuntimeHelpersExtends({}, props, {
73
- 'aria-label': ariaLabel
74
- }), state, trackRef);
75
- let {
76
- inputProps,
77
- thumbProps
78
- } = useSliderThumb({
79
- index: 0,
80
- orientation,
81
- isDisabled: props.isDisabled,
82
- trackRef,
83
- inputRef
84
- }, state);
85
-
86
- let generateBackground = () => {
87
- let value = state.getDisplayColor();
88
- let to;
89
-
90
- if (orientation === 'vertical') {
91
- to = 'top';
92
- } else if (direction === 'ltr') {
93
- to = 'right';
94
- } else {
95
- to = 'left';
96
- }
34
+ $parcel$export($47925bd68062ac17$exports, "useColorArea", () => $47925bd68062ac17$export$2f92a7a615a014f6);
97
35
 
98
- switch (channel) {
99
- case 'hue':
100
- return "linear-gradient(to " + to + ", rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)";
101
-
102
- case 'lightness':
103
- {
104
- // We have to add an extra color stop in the middle so that the hue shows up at all.
105
- // Otherwise it will always just be black to white.
106
- let min = state.getThumbMinValue(0);
107
- let max = state.getThumbMaxValue(0);
108
- let start = value.withChannelValue(channel, min).toString('css');
109
- let middle = value.withChannelValue(channel, (max - min) / 2).toString('css');
110
- let end = value.withChannelValue(channel, max).toString('css');
111
- return "linear-gradient(to " + to + ", " + start + ", " + middle + ", " + end + ")";
112
- }
36
+ var $4f97b428b4cbcd4e$exports = {};
37
+ var $f141a15c3076a67b$exports = {};
38
+ $f141a15c3076a67b$exports = JSON.parse("{\"twoDimensionalSlider\":\"شريط تمرير ثنائي الأبعاد\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
113
39
 
114
- case 'saturation':
115
- case 'brightness':
116
- case 'red':
117
- case 'green':
118
- case 'blue':
119
- case 'alpha':
120
- {
121
- let start = value.withChannelValue(channel, state.getThumbMinValue(0)).toString('css');
122
- let end = value.withChannelValue(channel, state.getThumbMaxValue(0)).toString('css');
123
- return "linear-gradient(to " + to + ", " + start + ", " + end + ")";
124
- }
125
40
 
126
- default:
127
- throw new Error('Unknown color channel: ' + channel);
128
- }
129
- };
41
+ var $435ac2a9fdd2ae5e$exports = {};
42
+ $435ac2a9fdd2ae5e$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D плъзгач\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
130
43
 
131
- let thumbPosition = state.getThumbPercent(0);
132
44
 
133
- if (orientation === 'vertical' || direction === 'rtl') {
134
- thumbPosition = 1 - thumbPosition;
135
- }
45
+ var $6b29758b432284f5$exports = {};
46
+ $6b29758b432284f5$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D posuvník\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
136
47
 
137
- return {
138
- trackProps: _babelRuntimeHelpersExtends({}, mergeProps(groupProps, trackProps), {
139
- style: {
140
- position: 'relative',
141
- touchAction: 'none',
142
- background: generateBackground()
143
- }
144
- }),
145
- inputProps,
146
- thumbProps: _babelRuntimeHelpersExtends({}, thumbProps, {
147
- style: {
148
- touchAction: 'none',
149
- position: 'absolute',
150
- [orientation === 'vertical' ? 'top' : 'left']: thumbPosition * 100 + "%",
151
- transform: 'translate(-50%, -50%)'
152
- }
153
- }),
154
- labelProps,
155
- outputProps
156
- };
157
- }
158
48
 
159
- exports.useColorSlider = useColorSlider;
160
- const $c5e318998f160f365e09b073e8447c3d$var$PAGE_MIN_STEP_SIZE = 6;
161
- /**
162
- * Provides the behavior and accessibility implementation for a color wheel component.
163
- * Color wheels allow users to adjust the hue of an HSL or HSB color value on a circular track.
164
- */
165
-
166
- function useColorWheel(props, state, inputRef) {
167
- let {
168
- isDisabled,
169
- step = 1,
170
- innerRadius,
171
- outerRadius,
172
- 'aria-label': ariaLabel
173
- } = props;
174
- let {
175
- addGlobalListener,
176
- removeGlobalListener
177
- } = useGlobalListeners();
178
- let thumbRadius = (innerRadius + outerRadius) / 2;
179
- let focusInput = useCallback(() => {
180
- if (inputRef.current) {
181
- focusWithoutScrolling(inputRef.current);
182
- }
183
- }, [inputRef]);
184
- let stateRef = useRef(null);
185
- stateRef.current = state;
186
- let currentPosition = useRef(null);
187
- let moveHandler = {
188
- onMoveStart() {
189
- currentPosition.current = null;
190
- state.setDragging(true);
191
- },
192
-
193
- onMove(_ref) {
194
- let {
195
- deltaX,
196
- deltaY,
197
- pointerType
198
- } = _ref;
199
-
200
- if (currentPosition.current == null) {
201
- currentPosition.current = stateRef.current.getThumbPosition(thumbRadius);
202
- }
49
+ var $357597bcf4afd6fb$exports = {};
50
+ $357597bcf4afd6fb$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-skyder\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
203
51
 
204
- currentPosition.current.x += deltaX;
205
- currentPosition.current.y += deltaY;
206
52
 
207
- if (pointerType === 'keyboard') {
208
- if (deltaX > 0 || deltaY < 0) {
209
- state.increment();
210
- } else if (deltaX < 0 || deltaY > 0) {
211
- state.decrement();
212
- }
213
- } else {
214
- stateRef.current.setHueFromPoint(currentPosition.current.x, currentPosition.current.y, thumbRadius);
215
- }
216
- },
53
+ var $ddc6333960e2b591$exports = {};
54
+ $ddc6333960e2b591$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-Schieberegler\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
217
55
 
218
- onMoveEnd() {
219
- isOnTrack.current = undefined;
220
- state.setDragging(false);
221
- focusInput();
222
- }
223
56
 
224
- };
225
- let {
226
- moveProps: movePropsThumb
227
- } = useMove(moveHandler);
228
- let currentPointer = useRef(undefined);
229
- let isOnTrack = useRef(false);
230
- let {
231
- moveProps: movePropsContainer
232
- } = useMove({
233
- onMoveStart() {
234
- if (isOnTrack.current) {
235
- moveHandler.onMoveStart();
236
- }
237
- },
57
+ var $417ee93d3ca474c0$exports = {};
58
+ $417ee93d3ca474c0$exports = JSON.parse("{\"twoDimensionalSlider\":\"Ρυθμιστικό 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
238
59
 
239
- onMove(e) {
240
- if (isOnTrack.current) {
241
- moveHandler.onMove(e);
242
- }
243
- },
244
60
 
245
- onMoveEnd() {
246
- if (isOnTrack.current) {
247
- moveHandler.onMoveEnd();
248
- }
249
- }
61
+ var $519561bc6dcff98b$exports = {};
62
+ $519561bc6dcff98b$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D slider\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
250
63
 
251
- });
252
64
 
253
- let onThumbDown = id => {
254
- if (!state.isDragging) {
255
- currentPointer.current = id;
256
- focusInput();
257
- state.setDragging(true);
258
-
259
- if (typeof PointerEvent !== 'undefined') {
260
- addGlobalListener(window, 'pointerup', onThumbUp, false);
261
- } else {
262
- addGlobalListener(window, 'mouseup', onThumbUp, false);
263
- addGlobalListener(window, 'touchend', onThumbUp, false);
264
- }
265
- }
266
- };
65
+ var $7a34c3fcc03402b8$exports = {};
66
+ $7a34c3fcc03402b8$exports = JSON.parse("{\"twoDimensionalSlider\":\"Control deslizante en 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
267
67
 
268
- let onThumbUp = e => {
269
- var _e$pointerId, _e$changedTouches;
270
68
 
271
- let id = (_e$pointerId = e.pointerId) != null ? _e$pointerId : (_e$changedTouches = e.changedTouches) == null ? void 0 : _e$changedTouches[0].identifier;
69
+ var $860f86d6eae22cba$exports = {};
70
+ $860f86d6eae22cba$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-liugur\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
272
71
 
273
- if (id === currentPointer.current) {
274
- focusInput();
275
- state.setDragging(false);
276
- currentPointer.current = undefined;
277
- isOnTrack.current = false;
278
72
 
279
- if (typeof PointerEvent !== 'undefined') {
280
- removeGlobalListener(window, 'pointerup', onThumbUp, false);
281
- } else {
282
- removeGlobalListener(window, 'mouseup', onThumbUp, false);
283
- removeGlobalListener(window, 'touchend', onThumbUp, false);
284
- }
285
- }
286
- };
287
-
288
- let onTrackDown = (track, id, pageX, pageY) => {
289
- let rect = track.getBoundingClientRect();
290
- let x = pageX - rect.x - rect.width / 2;
291
- let y = pageY - rect.y - rect.height / 2;
292
- let radius = Math.sqrt(x * x + y * y);
293
-
294
- if (innerRadius < radius && radius < outerRadius && !state.isDragging && currentPointer.current === undefined) {
295
- isOnTrack.current = true;
296
- currentPointer.current = id;
297
- stateRef.current.setHueFromPoint(x, y, radius);
298
- focusInput();
299
- state.setDragging(true);
300
-
301
- if (typeof PointerEvent !== 'undefined') {
302
- addGlobalListener(window, 'pointerup', onTrackUp, false);
303
- } else {
304
- addGlobalListener(window, 'mouseup', onTrackUp, false);
305
- addGlobalListener(window, 'touchend', onTrackUp, false);
306
- }
307
- }
308
- };
73
+ var $8525d3c77b8a51b0$exports = {};
74
+ $8525d3c77b8a51b0$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-liukusäädin\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
309
75
 
310
- let onTrackUp = e => {
311
- var _e$pointerId2, _e$changedTouches2;
312
76
 
313
- let id = (_e$pointerId2 = e.pointerId) != null ? _e$pointerId2 : (_e$changedTouches2 = e.changedTouches) == null ? void 0 : _e$changedTouches2[0].identifier;
77
+ var $8240fe6825e900ec$exports = {};
78
+ $8240fe6825e900ec$exports = JSON.parse("{\"twoDimensionalSlider\":\"Curseur 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
314
79
 
315
- if (isOnTrack.current && id === currentPointer.current) {
316
- isOnTrack.current = false;
317
- currentPointer.current = undefined;
318
- state.setDragging(false);
319
- focusInput();
320
80
 
321
- if (typeof PointerEvent !== 'undefined') {
322
- removeGlobalListener(window, 'pointerup', onTrackUp, false);
323
- } else {
324
- removeGlobalListener(window, 'mouseup', onTrackUp, false);
325
- removeGlobalListener(window, 'touchend', onTrackUp, false);
326
- }
327
- }
328
- };
329
-
330
- let {
331
- keyboardProps
332
- } = useKeyboard({
333
- onKeyDown(e) {
334
- switch (e.key) {
335
- case 'PageUp':
336
- e.preventDefault();
337
- state.increment($c5e318998f160f365e09b073e8447c3d$var$PAGE_MIN_STEP_SIZE);
338
- break;
339
-
340
- case 'PageDown':
341
- e.preventDefault();
342
- state.decrement($c5e318998f160f365e09b073e8447c3d$var$PAGE_MIN_STEP_SIZE);
343
- break;
344
- }
345
- }
81
+ var $377849238307c673$exports = {};
82
+ $377849238307c673$exports = JSON.parse("{\"twoDimensionalSlider\":\"מחוון דו-ממדי\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
346
83
 
347
- });
348
- let trackInteractions = isDisabled ? {} : mergeProps(_babelRuntimeHelpersExtends({}, typeof PointerEvent !== 'undefined' ? {
349
- onPointerDown: e => {
350
- if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {
351
- return;
352
- }
353
84
 
354
- onTrackDown(e.currentTarget, e.pointerId, e.clientX, e.clientY);
355
- }
356
- } : {
357
- onMouseDown: e => {
358
- if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
359
- return;
360
- }
85
+ var $5a6f44e0ec14b083$exports = {};
86
+ $5a6f44e0ec14b083$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D kliznik\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
361
87
 
362
- onTrackDown(e.currentTarget, undefined, e.clientX, e.clientY);
363
- },
364
- onTouchStart: e => {
365
- onTrackDown(e.currentTarget, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY);
366
- }
367
- }), movePropsContainer);
368
- let thumbInteractions = isDisabled ? {} : mergeProps({
369
- onMouseDown: e => {
370
- if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) {
371
- return;
372
- }
373
88
 
374
- onThumbDown(undefined);
375
- },
376
- onPointerDown: e => {
377
- if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) {
378
- return;
379
- }
89
+ var $82327d6e71e3e273$exports = {};
90
+ $82327d6e71e3e273$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D csúszka\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
380
91
 
381
- onThumbDown(e.pointerId);
382
- },
383
- onTouchStart: e => {
384
- onThumbDown(e.changedTouches[0].identifier);
385
- }
386
- }, movePropsThumb, keyboardProps);
387
- let {
388
- x,
389
- y
390
- } = state.getThumbPosition(thumbRadius); // Provide a default aria-label if none is given
391
-
392
- let {
393
- locale
394
- } = useLocale();
395
-
396
- if (ariaLabel == null && props['aria-labelledby'] == null) {
397
- ariaLabel = state.value.getChannelName('hue', locale);
398
- }
399
-
400
- let inputLabellingProps = useLabels(_babelRuntimeHelpersExtends({}, props, {
401
- 'aria-label': ariaLabel
402
- }));
403
- return {
404
- trackProps: _babelRuntimeHelpersExtends({}, trackInteractions, {
405
- style: {
406
- position: 'relative',
407
- touchAction: 'none',
408
- width: outerRadius * 2,
409
- height: outerRadius * 2,
410
- background: "\n conic-gradient(\n from 90deg,\n hsl(0, 100%, 50%),\n hsl(30, 100%, 50%),\n hsl(60, 100%, 50%),\n hsl(90, 100%, 50%),\n hsl(120, 100%, 50%),\n hsl(150, 100%, 50%),\n hsl(180, 100%, 50%),\n hsl(210, 100%, 50%),\n hsl(240, 100%, 50%),\n hsl(270, 100%, 50%),\n hsl(300, 100%, 50%),\n hsl(330, 100%, 50%),\n hsl(360, 100%, 50%)\n )\n ",
411
- clipPath: "path(evenodd, \"" + $c5e318998f160f365e09b073e8447c3d$var$circlePath(outerRadius, outerRadius, outerRadius) + " " + $c5e318998f160f365e09b073e8447c3d$var$circlePath(outerRadius, outerRadius, innerRadius) + "\")"
412
- }
413
- }),
414
- thumbProps: _babelRuntimeHelpersExtends({}, thumbInteractions, {
415
- style: {
416
- position: 'absolute',
417
- left: '50%',
418
- top: '50%',
419
- transform: "translate(calc(" + x + "px - 50%), calc(" + y + "px - 50%))",
420
- touchAction: 'none'
421
- }
422
- }),
423
- inputProps: mergeProps(inputLabellingProps, {
424
- type: 'range',
425
- min: '0',
426
- max: '360',
427
- step: String(step),
428
- 'aria-valuetext': state.value.formatChannelValue('hue', locale),
429
- disabled: isDisabled,
430
- value: "" + state.value.getChannelValue('hue'),
431
- onChange: e => {
432
- state.setHue(parseFloat(e.target.value));
433
- }
434
- })
435
- };
436
- } // Creates an SVG path string for a circle.
92
+
93
+ var $b1e297275c248ab8$exports = {};
94
+ $b1e297275c248ab8$exports = JSON.parse("{\"twoDimensionalSlider\":\"Dispositivo di scorrimento 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
95
+
96
+
97
+ var $b39c9f2638b4d2b9$exports = {};
98
+ $b39c9f2638b4d2b9$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D スライダー\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
99
+
100
+
101
+ var $2d2fbf4195848a62$exports = {};
102
+ $2d2fbf4195848a62$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D 슬라이더\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
103
+
104
+
105
+ var $ea88350d0828fa2c$exports = {};
106
+ $ea88350d0828fa2c$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D slankiklis\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
107
+
108
+
109
+ var $0e0acd541630120a$exports = {};
110
+ $0e0acd541630120a$exports = JSON.parse("{\"twoDimensionalSlider\":\"Plaknes slīdnis\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
111
+
112
+
113
+ var $952a458224052046$exports = {};
114
+ $952a458224052046$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-glidebryter\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
115
+
116
+
117
+ var $2d8e195bc5683483$exports = {};
118
+ $2d8e195bc5683483$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-schuifregelaar\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
119
+
120
+
121
+ var $750d83f83c5f38d4$exports = {};
122
+ $750d83f83c5f38d4$exports = JSON.parse("{\"twoDimensionalSlider\":\"Suwak 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
437
123
 
438
124
 
439
- exports.useColorWheel = useColorWheel;
125
+ var $656b2846f611067c$exports = {};
126
+ $656b2846f611067c$exports = JSON.parse("{\"twoDimensionalSlider\":\"Controle deslizante 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
440
127
 
441
- function $c5e318998f160f365e09b073e8447c3d$var$circlePath(cx, cy, r) {
442
- return "M " + cx + ", " + cy + " m " + -r + ", 0 a " + r + ", " + r + ", 0, 1, 0, " + r * 2 + ", 0 a " + r + ", " + r + ", 0, 1, 0 " + -r * 2 + ", 0";
128
+
129
+ var $58ce120874d069dd$exports = {};
130
+ $58ce120874d069dd$exports = JSON.parse("{\"twoDimensionalSlider\":\"Controlo de deslize 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
131
+
132
+
133
+ var $fd6c85b4eba18825$exports = {};
134
+ $fd6c85b4eba18825$exports = JSON.parse("{\"twoDimensionalSlider\":\"Cursor 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
135
+
136
+
137
+ var $8849a15ecc435984$exports = {};
138
+ $8849a15ecc435984$exports = JSON.parse("{\"twoDimensionalSlider\":\"Двумерный ползунок\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
139
+
140
+
141
+ var $5192372f064be783$exports = {};
142
+ $5192372f064be783$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D jazdec\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
143
+
144
+
145
+ var $094525f9176df65d$exports = {};
146
+ $094525f9176df65d$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-drsnik\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
147
+
148
+
149
+ var $9795aa59b4ad40ed$exports = {};
150
+ $9795aa59b4ad40ed$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D клизач\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
151
+
152
+
153
+ var $9ebaa0b485f13e4d$exports = {};
154
+ $9ebaa0b485f13e4d$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D-reglage\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
155
+
156
+
157
+ var $ad58e2e4e0f2e750$exports = {};
158
+ $ad58e2e4e0f2e750$exports = JSON.parse("{\"twoDimensionalSlider\":\"2B slayt gösterisi\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
159
+
160
+
161
+ var $dafc19306f8b2dfc$exports = {};
162
+ $dafc19306f8b2dfc$exports = JSON.parse("{\"twoDimensionalSlider\":\"Повзунок 2D\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
163
+
164
+
165
+ var $d31a8b80af5acc16$exports = {};
166
+ $d31a8b80af5acc16$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D 滑块\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
167
+
168
+
169
+ var $7377d28aec5fa200$exports = {};
170
+ $7377d28aec5fa200$exports = JSON.parse("{\"twoDimensionalSlider\":\"2D 滑桿\",\"colorNameAndValue\":\"{name}: {value}\",\"x/y\":\"{x} / {y}\"}");
171
+
172
+
173
+ $4f97b428b4cbcd4e$exports = {
174
+ "ar-AE": $f141a15c3076a67b$exports,
175
+ "bg-BG": $435ac2a9fdd2ae5e$exports,
176
+ "cs-CZ": $6b29758b432284f5$exports,
177
+ "da-DK": $357597bcf4afd6fb$exports,
178
+ "de-DE": $ddc6333960e2b591$exports,
179
+ "el-GR": $417ee93d3ca474c0$exports,
180
+ "en-US": $519561bc6dcff98b$exports,
181
+ "es-ES": $7a34c3fcc03402b8$exports,
182
+ "et-EE": $860f86d6eae22cba$exports,
183
+ "fi-FI": $8525d3c77b8a51b0$exports,
184
+ "fr-FR": $8240fe6825e900ec$exports,
185
+ "he-IL": $377849238307c673$exports,
186
+ "hr-HR": $5a6f44e0ec14b083$exports,
187
+ "hu-HU": $82327d6e71e3e273$exports,
188
+ "it-IT": $b1e297275c248ab8$exports,
189
+ "ja-JP": $b39c9f2638b4d2b9$exports,
190
+ "ko-KR": $2d2fbf4195848a62$exports,
191
+ "lt-LT": $ea88350d0828fa2c$exports,
192
+ "lv-LV": $0e0acd541630120a$exports,
193
+ "nb-NO": $952a458224052046$exports,
194
+ "nl-NL": $2d8e195bc5683483$exports,
195
+ "pl-PL": $750d83f83c5f38d4$exports,
196
+ "pt-BR": $656b2846f611067c$exports,
197
+ "pt-PT": $58ce120874d069dd$exports,
198
+ "ro-RO": $fd6c85b4eba18825$exports,
199
+ "ru-RU": $8849a15ecc435984$exports,
200
+ "sk-SK": $5192372f064be783$exports,
201
+ "sl-SI": $094525f9176df65d$exports,
202
+ "sr-SP": $9795aa59b4ad40ed$exports,
203
+ "sv-SE": $9ebaa0b485f13e4d$exports,
204
+ "tr-TR": $ad58e2e4e0f2e750$exports,
205
+ "uk-UA": $dafc19306f8b2dfc$exports,
206
+ "zh-CN": $d31a8b80af5acc16$exports,
207
+ "zh-TW": $7377d28aec5fa200$exports
208
+ };
209
+
210
+
211
+
212
+
213
+
214
+
215
+ function $47925bd68062ac17$export$2f92a7a615a014f6(props, state) {
216
+ let { isDisabled: isDisabled , inputXRef: inputXRef , inputYRef: inputYRef , containerRef: containerRef } = props;
217
+ let formatMessage = $kZqDi$reactariai18n.useMessageFormatter((/*@__PURE__*/$parcel$interopDefault($4f97b428b4cbcd4e$exports)));
218
+ let { addGlobalListener: addGlobalListener , removeGlobalListener: removeGlobalListener } = $kZqDi$reactariautils.useGlobalListeners();
219
+ let { direction: direction , locale: locale } = $kZqDi$reactariai18n.useLocale();
220
+ let focusedInputRef = $kZqDi$react.useRef(null);
221
+ let focusInput = $kZqDi$react.useCallback((inputRef = inputXRef)=>{
222
+ if (inputRef.current) $kZqDi$reactariautils.focusWithoutScrolling(inputRef.current);
223
+ }, [
224
+ inputXRef
225
+ ]);
226
+ let stateRef = $kZqDi$react.useRef(null);
227
+ stateRef.current = state;
228
+ let { xChannel: xChannel , yChannel: yChannel } = stateRef.current.channels;
229
+ let xChannelStep1 = stateRef.current.xChannelStep;
230
+ let yChannelStep1 = stateRef.current.xChannelStep;
231
+ let currentPosition = $kZqDi$react.useRef(null);
232
+ let { keyboardProps: keyboardProps } = $kZqDi$reactariainteractions.useKeyboard({
233
+ onKeyDown (e) {
234
+ // these are the cases that useMove doesn't handle
235
+ if (!/^(PageUp|PageDown|Home|End)$/.test(e.key)) {
236
+ e.continuePropagation();
237
+ return;
238
+ }
239
+ // same handling as useMove, don't need to stop propagation, useKeyboard will do that for us
240
+ e.preventDefault();
241
+ // remember to set this and unset it so that onChangeEnd is fired
242
+ stateRef.current.setDragging(true);
243
+ switch(e.key){
244
+ case 'PageUp':
245
+ stateRef.current.incrementY(stateRef.current.yChannelPageStep);
246
+ focusedInputRef.current = inputYRef.current;
247
+ break;
248
+ case 'PageDown':
249
+ stateRef.current.decrementY(stateRef.current.yChannelPageStep);
250
+ focusedInputRef.current = inputYRef.current;
251
+ break;
252
+ case 'Home':
253
+ direction === 'rtl' ? stateRef.current.incrementX(stateRef.current.xChannelPageStep) : stateRef.current.decrementX(stateRef.current.xChannelPageStep);
254
+ focusedInputRef.current = inputXRef.current;
255
+ break;
256
+ case 'End':
257
+ direction === 'rtl' ? stateRef.current.decrementX(stateRef.current.xChannelPageStep) : stateRef.current.incrementX(stateRef.current.xChannelPageStep);
258
+ focusedInputRef.current = inputXRef.current;
259
+ break;
260
+ }
261
+ stateRef.current.setDragging(false);
262
+ if (focusedInputRef.current) {
263
+ focusInput(focusedInputRef.current ? focusedInputRef : inputXRef);
264
+ focusedInputRef.current = undefined;
265
+ }
266
+ }
267
+ });
268
+ let moveHandler = {
269
+ onMoveStart () {
270
+ currentPosition.current = null;
271
+ stateRef.current.setDragging(true);
272
+ },
273
+ onMove ({ deltaX: deltaX , deltaY: deltaY , pointerType: pointerType , shiftKey: shiftKey }) {
274
+ let { incrementX: incrementX , decrementX: decrementX , incrementY: incrementY , decrementY: decrementY , xChannelPageStep: xChannelPageStep , xChannelStep: xChannelStep , yChannelPageStep: yChannelPageStep , yChannelStep: yChannelStep , getThumbPosition: getThumbPosition , setColorFromPoint: setColorFromPoint } = stateRef.current;
275
+ if (currentPosition.current == null) currentPosition.current = getThumbPosition();
276
+ let { width: width , height: height } = containerRef.current.getBoundingClientRect();
277
+ if (pointerType === 'keyboard') {
278
+ let deltaXValue = shiftKey && xChannelPageStep > xChannelStep ? xChannelPageStep : xChannelStep;
279
+ let deltaYValue = shiftKey && yChannelPageStep > yChannelStep ? yChannelPageStep : yChannelStep;
280
+ if (deltaX > 0 && direction === 'ltr' || deltaX < 0 && direction === 'rtl') incrementX(deltaXValue);
281
+ else if (deltaX < 0 && direction === 'ltr' || deltaX > 0 && direction === 'rtl') decrementX(deltaXValue);
282
+ else if (deltaY > 0) decrementY(deltaYValue);
283
+ else if (deltaY < 0) incrementY(deltaYValue);
284
+ // set the focused input based on which axis has the greater delta
285
+ focusedInputRef.current = (deltaX !== 0 || deltaY !== 0) && Math.abs(deltaY) > Math.abs(deltaX) ? inputYRef.current : inputXRef.current;
286
+ } else {
287
+ currentPosition.current.x += (direction === 'rtl' ? -1 : 1) * deltaX / width;
288
+ currentPosition.current.y += deltaY / height;
289
+ setColorFromPoint(currentPosition.current.x, currentPosition.current.y);
290
+ }
291
+ },
292
+ onMoveEnd () {
293
+ isOnColorArea.current = undefined;
294
+ stateRef.current.setDragging(false);
295
+ focusInput(focusedInputRef.current ? focusedInputRef : inputXRef);
296
+ focusedInputRef.current = undefined;
297
+ }
298
+ };
299
+ let { moveProps: movePropsThumb } = $kZqDi$reactariainteractions.useMove(moveHandler);
300
+ let currentPointer = $kZqDi$react.useRef(undefined);
301
+ let isOnColorArea = $kZqDi$react.useRef(false);
302
+ let { moveProps: movePropsContainer } = $kZqDi$reactariainteractions.useMove({
303
+ onMoveStart () {
304
+ if (isOnColorArea.current) moveHandler.onMoveStart();
305
+ },
306
+ onMove (e) {
307
+ if (isOnColorArea.current) moveHandler.onMove(e);
308
+ },
309
+ onMoveEnd () {
310
+ if (isOnColorArea.current) moveHandler.onMoveEnd();
311
+ }
312
+ });
313
+ let onThumbDown = (id)=>{
314
+ if (!state.isDragging) {
315
+ currentPointer.current = id;
316
+ focusInput();
317
+ state.setDragging(true);
318
+ if (typeof PointerEvent !== 'undefined') addGlobalListener(window, 'pointerup', onThumbUp, false);
319
+ else {
320
+ addGlobalListener(window, 'mouseup', onThumbUp, false);
321
+ addGlobalListener(window, 'touchend', onThumbUp, false);
322
+ }
323
+ }
324
+ };
325
+ let onThumbUp = (e)=>{
326
+ var ref;
327
+ var _pointerId;
328
+ let id = (_pointerId = e.pointerId) !== null && _pointerId !== void 0 ? _pointerId : (ref = e.changedTouches) === null || ref === void 0 ? void 0 : ref[0].identifier;
329
+ if (id === currentPointer.current) {
330
+ focusInput();
331
+ state.setDragging(false);
332
+ currentPointer.current = undefined;
333
+ isOnColorArea.current = false;
334
+ if (typeof PointerEvent !== 'undefined') removeGlobalListener(window, 'pointerup', onThumbUp, false);
335
+ else {
336
+ removeGlobalListener(window, 'mouseup', onThumbUp, false);
337
+ removeGlobalListener(window, 'touchend', onThumbUp, false);
338
+ }
339
+ }
340
+ };
341
+ let onColorAreaDown = (colorArea, id, clientX, clientY)=>{
342
+ let rect = colorArea.getBoundingClientRect();
343
+ let { width: width , height: height } = rect;
344
+ let x = (clientX - rect.x) / width;
345
+ let y = (clientY - rect.y) / height;
346
+ if (direction === 'rtl') x = 1 - x;
347
+ if (x >= 0 && x <= 1 && y >= 0 && y <= 1 && !state.isDragging && currentPointer.current === undefined) {
348
+ isOnColorArea.current = true;
349
+ currentPointer.current = id;
350
+ state.setColorFromPoint(x, y);
351
+ focusInput();
352
+ state.setDragging(true);
353
+ if (typeof PointerEvent !== 'undefined') addGlobalListener(window, 'pointerup', onColorAreaUp, false);
354
+ else {
355
+ addGlobalListener(window, 'mouseup', onColorAreaUp, false);
356
+ addGlobalListener(window, 'touchend', onColorAreaUp, false);
357
+ }
358
+ }
359
+ };
360
+ let onColorAreaUp = (e)=>{
361
+ var ref;
362
+ var _pointerId;
363
+ let id = (_pointerId = e.pointerId) !== null && _pointerId !== void 0 ? _pointerId : (ref = e.changedTouches) === null || ref === void 0 ? void 0 : ref[0].identifier;
364
+ if (isOnColorArea.current && id === currentPointer.current) {
365
+ isOnColorArea.current = false;
366
+ currentPointer.current = undefined;
367
+ state.setDragging(false);
368
+ focusInput();
369
+ if (typeof PointerEvent !== 'undefined') removeGlobalListener(window, 'pointerup', onColorAreaUp, false);
370
+ else {
371
+ removeGlobalListener(window, 'mouseup', onColorAreaUp, false);
372
+ removeGlobalListener(window, 'touchend', onColorAreaUp, false);
373
+ }
374
+ }
375
+ };
376
+ let colorAreaInteractions = isDisabled ? {
377
+ } : $kZqDi$reactariautils.mergeProps({
378
+ ...typeof PointerEvent !== 'undefined' ? {
379
+ onPointerDown: (e)=>{
380
+ if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) return;
381
+ onColorAreaDown(e.currentTarget, e.pointerId, e.clientX, e.clientY);
382
+ }
383
+ } : {
384
+ onMouseDown: (e)=>{
385
+ if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) return;
386
+ onColorAreaDown(e.currentTarget, undefined, e.clientX, e.clientY);
387
+ },
388
+ onTouchStart: (e)=>{
389
+ onColorAreaDown(e.currentTarget, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY);
390
+ }
391
+ }
392
+ }, movePropsContainer);
393
+ let thumbInteractions = isDisabled ? {
394
+ } : $kZqDi$reactariautils.mergeProps({
395
+ ...typeof PointerEvent !== 'undefined' ? {
396
+ onPointerDown: (e)=>{
397
+ if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) return;
398
+ onThumbDown(e.pointerId);
399
+ }
400
+ } : {
401
+ onMouseDown: (e)=>{
402
+ if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) return;
403
+ onThumbDown(undefined);
404
+ },
405
+ onTouchStart: (e)=>{
406
+ onThumbDown(e.changedTouches[0].identifier);
407
+ }
408
+ }
409
+ }, keyboardProps, movePropsThumb);
410
+ let isMobile = $kZqDi$reactariautils.isIOS() || $kZqDi$reactariautils.isAndroid();
411
+ let xInputLabellingProps = $kZqDi$reactariautils.useLabels({
412
+ ...props,
413
+ 'aria-label': isMobile ? state.value.getChannelName(xChannel, locale) : formatMessage('x/y', {
414
+ x: state.value.getChannelName(xChannel, locale),
415
+ y: state.value.getChannelName(yChannel, locale)
416
+ })
417
+ });
418
+ let yInputLabellingProps = $kZqDi$reactariautils.useLabels({
419
+ ...props,
420
+ 'aria-label': isMobile ? state.value.getChannelName(yChannel, locale) : formatMessage('x/y', {
421
+ x: state.value.getChannelName(xChannel, locale),
422
+ y: state.value.getChannelName(yChannel, locale)
423
+ })
424
+ });
425
+ let colorAriaLabellingProps = $kZqDi$reactariautils.useLabels(props);
426
+ let getValueTitle = ()=>[
427
+ formatMessage('colorNameAndValue', {
428
+ name: state.value.getChannelName('red', locale),
429
+ value: state.value.formatChannelValue('red', locale)
430
+ }),
431
+ formatMessage('colorNameAndValue', {
432
+ name: state.value.getChannelName('green', locale),
433
+ value: state.value.formatChannelValue('green', locale)
434
+ }),
435
+ formatMessage('colorNameAndValue', {
436
+ name: state.value.getChannelName('blue', locale),
437
+ value: state.value.formatChannelValue('blue', locale)
438
+ })
439
+ ].join(', ')
440
+ ;
441
+ let ariaRoleDescription = isMobile ? null : formatMessage('twoDimensionalSlider');
442
+ let { visuallyHiddenProps: visuallyHiddenProps } = $kZqDi$reactariavisuallyhidden.useVisuallyHidden({
443
+ style: {
444
+ opacity: '0.0001',
445
+ width: '100%',
446
+ height: '100%',
447
+ pointerEvents: 'none'
448
+ }
449
+ });
450
+ return {
451
+ colorAreaProps: {
452
+ ...colorAriaLabellingProps,
453
+ ...colorAreaInteractions,
454
+ role: 'group'
455
+ },
456
+ gradientProps: {
457
+ role: 'presentation'
458
+ },
459
+ thumbProps: {
460
+ ...thumbInteractions,
461
+ role: 'presentation'
462
+ },
463
+ xInputProps: {
464
+ ...xInputLabellingProps,
465
+ ...visuallyHiddenProps,
466
+ type: 'range',
467
+ min: state.value.getChannelRange(xChannel).minValue,
468
+ max: state.value.getChannelRange(xChannel).maxValue,
469
+ step: xChannelStep1,
470
+ 'aria-roledescription': ariaRoleDescription,
471
+ 'aria-valuetext': isMobile ? formatMessage('colorNameAndValue', {
472
+ name: state.value.getChannelName(xChannel, locale),
473
+ value: state.value.formatChannelValue(xChannel, locale)
474
+ }) : [
475
+ formatMessage('colorNameAndValue', {
476
+ name: state.value.getChannelName(xChannel, locale),
477
+ value: state.value.formatChannelValue(xChannel, locale)
478
+ }),
479
+ formatMessage('colorNameAndValue', {
480
+ name: state.value.getChannelName(yChannel, locale),
481
+ value: state.value.formatChannelValue(yChannel, locale)
482
+ })
483
+ ].join(', '),
484
+ title: getValueTitle(),
485
+ disabled: isDisabled,
486
+ value: state.value.getChannelValue(xChannel),
487
+ tabIndex: 0,
488
+ onChange: (e)=>{
489
+ state.setXValue(parseFloat(e.target.value));
490
+ }
491
+ },
492
+ yInputProps: {
493
+ ...yInputLabellingProps,
494
+ ...visuallyHiddenProps,
495
+ type: 'range',
496
+ min: state.value.getChannelRange(yChannel).minValue,
497
+ max: state.value.getChannelRange(yChannel).maxValue,
498
+ step: yChannelStep1,
499
+ 'aria-roledescription': ariaRoleDescription,
500
+ 'aria-valuetext': isMobile ? formatMessage('colorNameAndValue', {
501
+ name: state.value.getChannelName(yChannel, locale),
502
+ value: state.value.formatChannelValue(yChannel, locale)
503
+ }) : [
504
+ formatMessage('colorNameAndValue', {
505
+ name: state.value.getChannelName(yChannel, locale),
506
+ value: state.value.formatChannelValue(yChannel, locale)
507
+ }),
508
+ formatMessage('colorNameAndValue', {
509
+ name: state.value.getChannelName(xChannel, locale),
510
+ value: state.value.formatChannelValue(xChannel, locale)
511
+ })
512
+ ].join(', '),
513
+ 'aria-orientation': 'vertical',
514
+ title: getValueTitle(),
515
+ disabled: isDisabled,
516
+ value: state.value.getChannelValue(yChannel),
517
+ tabIndex: -1,
518
+ onChange: (e)=>{
519
+ state.setYValue(parseFloat(e.target.value));
520
+ }
521
+ }
522
+ };
443
523
  }
444
524
 
445
- /**
446
- * Provides the behavior and accessibility implementation for a color field component.
447
- * Color fields allow users to enter and adjust a hex color value.
448
- */
449
- function useColorField(props, state, ref) {
450
- let {
451
- isDisabled,
452
- isReadOnly,
453
- isRequired
454
- } = props;
455
- let {
456
- colorValue,
457
- inputValue,
458
- commit,
459
- increment,
460
- decrement,
461
- incrementToMax,
462
- decrementToMin
463
- } = state;
464
- let inputId = useId();
465
- let {
466
- spinButtonProps
467
- } = useSpinButton({
468
- isDisabled,
469
- isReadOnly,
470
- isRequired,
471
- maxValue: 0xFFFFFF,
472
- minValue: 0,
473
- onIncrement: increment,
474
- onIncrementToMax: incrementToMax,
475
- onDecrement: decrement,
476
- onDecrementToMin: decrementToMin,
477
- value: colorValue ? colorValue.toHexInt() : undefined,
478
- textValue: colorValue ? colorValue.toString('hex') : undefined
479
- });
480
- let [focusWithin, setFocusWithin] = useState(false);
481
- let {
482
- focusWithinProps
483
- } = useFocusWithin({
484
- isDisabled,
485
- onFocusWithinChange: setFocusWithin
486
- });
487
- let onWheel = useCallback(e => {
488
- if (Math.abs(e.deltaY) <= Math.abs(e.deltaX)) {
489
- return;
490
- }
491
525
 
492
- if (e.deltaY > 0) {
493
- increment();
494
- } else if (e.deltaY < 0) {
495
- decrement();
496
- }
497
- }, [isReadOnly, isDisabled, decrement, increment]); // If the input isn't supposed to receive input, disable scrolling.
498
-
499
- let scrollingDisabled = isDisabled || isReadOnly || !focusWithin;
500
- useScrollWheel({
501
- onScroll: onWheel,
502
- isDisabled: scrollingDisabled
503
- }, ref);
504
-
505
- let onChange = value => {
506
- state.setInputValue(value);
507
- };
508
-
509
- let {
510
- labelProps,
511
- inputProps
512
- } = useFormattedTextField(mergeProps(props, {
513
- id: inputId,
514
- value: inputValue,
515
- type: 'text',
516
- autoComplete: 'off',
517
- onChange
518
- }), state, ref);
519
- return {
520
- labelProps,
521
- inputProps: mergeProps(inputProps, spinButtonProps, focusWithinProps, {
522
- role: 'textbox',
523
- 'aria-valuemax': null,
524
- 'aria-valuemin': null,
525
- 'aria-valuenow': null,
526
- 'aria-valuetext': null,
527
- autoCorrect: 'off',
528
- spellCheck: 'false',
529
- onBlur: commit
530
- })
531
- };
526
+ var $afbb9647440a7f5b$exports = {};
527
+
528
+ $parcel$export($afbb9647440a7f5b$exports, "useColorSlider", () => $afbb9647440a7f5b$export$106b7a4e66508f66);
529
+
530
+
531
+
532
+ function $afbb9647440a7f5b$export$106b7a4e66508f66(props, state) {
533
+ let { trackRef: trackRef , inputRef: inputRef , orientation: orientation , channel: channel , 'aria-label': ariaLabel } = props;
534
+ let { locale: locale , direction: direction } = $kZqDi$reactariai18n.useLocale();
535
+ // Provide a default aria-label if there is no other label provided.
536
+ if (!props.label && !ariaLabel && !props['aria-labelledby']) ariaLabel = state.value.getChannelName(channel, locale);
537
+ // @ts-ignore - ignore unused incompatible props
538
+ let { groupProps: groupProps , trackProps: trackProps , labelProps: labelProps , outputProps: outputProps } = $kZqDi$reactariaslider.useSlider({
539
+ ...props,
540
+ 'aria-label': ariaLabel
541
+ }, state, trackRef);
542
+ let { inputProps: inputProps , thumbProps: thumbProps } = $kZqDi$reactariaslider.useSliderThumb({
543
+ index: 0,
544
+ orientation: orientation,
545
+ isDisabled: props.isDisabled,
546
+ trackRef: trackRef,
547
+ inputRef: inputRef
548
+ }, state);
549
+ let generateBackground = ()=>{
550
+ let value = state.getDisplayColor();
551
+ let to;
552
+ if (orientation === 'vertical') to = 'top';
553
+ else if (direction === 'ltr') to = 'right';
554
+ else to = 'left';
555
+ switch(channel){
556
+ case 'hue':
557
+ return `linear-gradient(to ${to}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`;
558
+ case 'lightness':
559
+ {
560
+ // We have to add an extra color stop in the middle so that the hue shows up at all.
561
+ // Otherwise it will always just be black to white.
562
+ let min = state.getThumbMinValue(0);
563
+ let max = state.getThumbMaxValue(0);
564
+ let start = value.withChannelValue(channel, min).toString('css');
565
+ let middle = value.withChannelValue(channel, (max - min) / 2).toString('css');
566
+ let end = value.withChannelValue(channel, max).toString('css');
567
+ return `linear-gradient(to ${to}, ${start}, ${middle}, ${end})`;
568
+ }
569
+ case 'saturation':
570
+ case 'brightness':
571
+ case 'red':
572
+ case 'green':
573
+ case 'blue':
574
+ case 'alpha':
575
+ {
576
+ let start = value.withChannelValue(channel, state.getThumbMinValue(0)).toString('css');
577
+ let end = value.withChannelValue(channel, state.getThumbMaxValue(0)).toString('css');
578
+ return `linear-gradient(to ${to}, ${start}, ${end})`;
579
+ }
580
+ default:
581
+ throw new Error('Unknown color channel: ' + channel);
582
+ }
583
+ };
584
+ let thumbPosition = state.getThumbPercent(0);
585
+ if (orientation === 'vertical' || direction === 'rtl') thumbPosition = 1 - thumbPosition;
586
+ return {
587
+ trackProps: {
588
+ ...$kZqDi$reactariautils.mergeProps(groupProps, trackProps),
589
+ style: {
590
+ position: 'relative',
591
+ touchAction: 'none',
592
+ background: generateBackground()
593
+ }
594
+ },
595
+ inputProps: inputProps,
596
+ thumbProps: {
597
+ ...thumbProps,
598
+ style: {
599
+ touchAction: 'none',
600
+ position: 'absolute',
601
+ [orientation === 'vertical' ? 'top' : 'left']: `${thumbPosition * 100}%`,
602
+ transform: 'translate(-50%, -50%)'
603
+ }
604
+ },
605
+ labelProps: labelProps,
606
+ outputProps: outputProps
607
+ };
608
+ }
609
+
610
+
611
+ var $1d29bf243d4a9a53$exports = {};
612
+
613
+ $parcel$export($1d29bf243d4a9a53$exports, "useColorWheel", () => $1d29bf243d4a9a53$export$9064ff4e44b3729a);
614
+
615
+
616
+
617
+
618
+ function $1d29bf243d4a9a53$export$9064ff4e44b3729a(props, state, inputRef) {
619
+ let { isDisabled: isDisabled , innerRadius: innerRadius , outerRadius: outerRadius , 'aria-label': ariaLabel } = props;
620
+ let { addGlobalListener: addGlobalListener , removeGlobalListener: removeGlobalListener } = $kZqDi$reactariautils.useGlobalListeners();
621
+ let thumbRadius = (innerRadius + outerRadius) / 2;
622
+ let focusInput = $kZqDi$react.useCallback(()=>{
623
+ if (inputRef.current) $kZqDi$reactariautils.focusWithoutScrolling(inputRef.current);
624
+ }, [
625
+ inputRef
626
+ ]);
627
+ let stateRef = $kZqDi$react.useRef(null);
628
+ stateRef.current = state;
629
+ let currentPosition = $kZqDi$react.useRef(null);
630
+ let { keyboardProps: keyboardProps } = $kZqDi$reactariainteractions.useKeyboard({
631
+ onKeyDown (e) {
632
+ // these are the cases that useMove doesn't handle
633
+ if (!/^(PageUp|PageDown)$/.test(e.key)) {
634
+ e.continuePropagation();
635
+ return;
636
+ }
637
+ // same handling as useMove, don't need to stop propagation, useKeyboard will do that for us
638
+ e.preventDefault();
639
+ // remember to set this and unset it so that onChangeEnd is fired
640
+ stateRef.current.setDragging(true);
641
+ switch(e.key){
642
+ case 'PageUp':
643
+ e.preventDefault();
644
+ state.increment(stateRef.current.pageStep);
645
+ break;
646
+ case 'PageDown':
647
+ e.preventDefault();
648
+ state.decrement(stateRef.current.pageStep);
649
+ break;
650
+ }
651
+ stateRef.current.setDragging(false);
652
+ }
653
+ });
654
+ let moveHandler = {
655
+ onMoveStart () {
656
+ currentPosition.current = null;
657
+ state.setDragging(true);
658
+ },
659
+ onMove ({ deltaX: deltaX , deltaY: deltaY , pointerType: pointerType , shiftKey: shiftKey }) {
660
+ if (currentPosition.current == null) currentPosition.current = stateRef.current.getThumbPosition(thumbRadius);
661
+ currentPosition.current.x += deltaX;
662
+ currentPosition.current.y += deltaY;
663
+ if (pointerType === 'keyboard') {
664
+ if (deltaX > 0 || deltaY < 0) state.increment(shiftKey ? stateRef.current.pageStep : stateRef.current.step);
665
+ else if (deltaX < 0 || deltaY > 0) state.decrement(shiftKey ? stateRef.current.pageStep : stateRef.current.step);
666
+ } else stateRef.current.setHueFromPoint(currentPosition.current.x, currentPosition.current.y, thumbRadius);
667
+ },
668
+ onMoveEnd () {
669
+ isOnTrack.current = undefined;
670
+ state.setDragging(false);
671
+ focusInput();
672
+ }
673
+ };
674
+ let { moveProps: movePropsThumb } = $kZqDi$reactariainteractions.useMove(moveHandler);
675
+ let currentPointer = $kZqDi$react.useRef(undefined);
676
+ let isOnTrack = $kZqDi$react.useRef(false);
677
+ let { moveProps: movePropsContainer } = $kZqDi$reactariainteractions.useMove({
678
+ onMoveStart () {
679
+ if (isOnTrack.current) moveHandler.onMoveStart();
680
+ },
681
+ onMove (e) {
682
+ if (isOnTrack.current) moveHandler.onMove(e);
683
+ },
684
+ onMoveEnd () {
685
+ if (isOnTrack.current) moveHandler.onMoveEnd();
686
+ }
687
+ });
688
+ let onThumbDown = (id)=>{
689
+ if (!state.isDragging) {
690
+ currentPointer.current = id;
691
+ focusInput();
692
+ state.setDragging(true);
693
+ if (typeof PointerEvent !== 'undefined') addGlobalListener(window, 'pointerup', onThumbUp, false);
694
+ else {
695
+ addGlobalListener(window, 'mouseup', onThumbUp, false);
696
+ addGlobalListener(window, 'touchend', onThumbUp, false);
697
+ }
698
+ }
699
+ };
700
+ let onThumbUp = (e)=>{
701
+ var ref;
702
+ var _pointerId;
703
+ let id = (_pointerId = e.pointerId) !== null && _pointerId !== void 0 ? _pointerId : (ref = e.changedTouches) === null || ref === void 0 ? void 0 : ref[0].identifier;
704
+ if (id === currentPointer.current) {
705
+ focusInput();
706
+ state.setDragging(false);
707
+ currentPointer.current = undefined;
708
+ isOnTrack.current = false;
709
+ if (typeof PointerEvent !== 'undefined') removeGlobalListener(window, 'pointerup', onThumbUp, false);
710
+ else {
711
+ removeGlobalListener(window, 'mouseup', onThumbUp, false);
712
+ removeGlobalListener(window, 'touchend', onThumbUp, false);
713
+ }
714
+ }
715
+ };
716
+ let onTrackDown = (track, id, pageX, pageY)=>{
717
+ let rect = track.getBoundingClientRect();
718
+ let x = pageX - rect.x - rect.width / 2;
719
+ let y = pageY - rect.y - rect.height / 2;
720
+ let radius = Math.sqrt(x * x + y * y);
721
+ if (innerRadius < radius && radius < outerRadius && !state.isDragging && currentPointer.current === undefined) {
722
+ isOnTrack.current = true;
723
+ currentPointer.current = id;
724
+ stateRef.current.setHueFromPoint(x, y, radius);
725
+ focusInput();
726
+ state.setDragging(true);
727
+ if (typeof PointerEvent !== 'undefined') addGlobalListener(window, 'pointerup', onTrackUp, false);
728
+ else {
729
+ addGlobalListener(window, 'mouseup', onTrackUp, false);
730
+ addGlobalListener(window, 'touchend', onTrackUp, false);
731
+ }
732
+ }
733
+ };
734
+ let onTrackUp = (e)=>{
735
+ var ref;
736
+ var _pointerId;
737
+ let id = (_pointerId = e.pointerId) !== null && _pointerId !== void 0 ? _pointerId : (ref = e.changedTouches) === null || ref === void 0 ? void 0 : ref[0].identifier;
738
+ if (isOnTrack.current && id === currentPointer.current) {
739
+ isOnTrack.current = false;
740
+ currentPointer.current = undefined;
741
+ state.setDragging(false);
742
+ focusInput();
743
+ if (typeof PointerEvent !== 'undefined') removeGlobalListener(window, 'pointerup', onTrackUp, false);
744
+ else {
745
+ removeGlobalListener(window, 'mouseup', onTrackUp, false);
746
+ removeGlobalListener(window, 'touchend', onTrackUp, false);
747
+ }
748
+ }
749
+ };
750
+ let trackInteractions = isDisabled ? {
751
+ } : $kZqDi$reactariautils.mergeProps({
752
+ ...typeof PointerEvent !== 'undefined' ? {
753
+ onPointerDown: (e)=>{
754
+ if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) return;
755
+ onTrackDown(e.currentTarget, e.pointerId, e.clientX, e.clientY);
756
+ }
757
+ } : {
758
+ onMouseDown: (e)=>{
759
+ if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) return;
760
+ onTrackDown(e.currentTarget, undefined, e.clientX, e.clientY);
761
+ },
762
+ onTouchStart: (e)=>{
763
+ onTrackDown(e.currentTarget, e.changedTouches[0].identifier, e.changedTouches[0].clientX, e.changedTouches[0].clientY);
764
+ }
765
+ }
766
+ }, movePropsContainer);
767
+ let thumbInteractions = isDisabled ? {
768
+ } : $kZqDi$reactariautils.mergeProps({
769
+ onMouseDown: (e)=>{
770
+ if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey) return;
771
+ onThumbDown(undefined);
772
+ },
773
+ onPointerDown: (e)=>{
774
+ if (e.pointerType === 'mouse' && (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey)) return;
775
+ onThumbDown(e.pointerId);
776
+ },
777
+ onTouchStart: (e)=>{
778
+ onThumbDown(e.changedTouches[0].identifier);
779
+ }
780
+ }, keyboardProps, movePropsThumb);
781
+ let { x: x1 , y: y1 } = state.getThumbPosition(thumbRadius);
782
+ // Provide a default aria-label if none is given
783
+ let { locale: locale } = $kZqDi$reactariai18n.useLocale();
784
+ if (ariaLabel == null && props['aria-labelledby'] == null) ariaLabel = state.value.getChannelName('hue', locale);
785
+ let inputLabellingProps = $kZqDi$reactariautils.useLabels({
786
+ ...props,
787
+ 'aria-label': ariaLabel
788
+ });
789
+ let { minValue: minValue , maxValue: maxValue , step: step } = state.value.getChannelRange('hue');
790
+ return {
791
+ trackProps: {
792
+ ...trackInteractions,
793
+ style: {
794
+ position: 'relative',
795
+ touchAction: 'none',
796
+ width: outerRadius * 2,
797
+ height: outerRadius * 2,
798
+ background: `
799
+ conic-gradient(
800
+ from 90deg,
801
+ hsl(0, 100%, 50%),
802
+ hsl(30, 100%, 50%),
803
+ hsl(60, 100%, 50%),
804
+ hsl(90, 100%, 50%),
805
+ hsl(120, 100%, 50%),
806
+ hsl(150, 100%, 50%),
807
+ hsl(180, 100%, 50%),
808
+ hsl(210, 100%, 50%),
809
+ hsl(240, 100%, 50%),
810
+ hsl(270, 100%, 50%),
811
+ hsl(300, 100%, 50%),
812
+ hsl(330, 100%, 50%),
813
+ hsl(360, 100%, 50%)
814
+ )
815
+ `,
816
+ clipPath: `path(evenodd, "${$1d29bf243d4a9a53$var$circlePath(outerRadius, outerRadius, outerRadius)} ${$1d29bf243d4a9a53$var$circlePath(outerRadius, outerRadius, innerRadius)}")`
817
+ }
818
+ },
819
+ thumbProps: {
820
+ ...thumbInteractions,
821
+ style: {
822
+ position: 'absolute',
823
+ left: '50%',
824
+ top: '50%',
825
+ transform: `translate(calc(${x1}px - 50%), calc(${y1}px - 50%))`,
826
+ touchAction: 'none'
827
+ }
828
+ },
829
+ inputProps: $kZqDi$reactariautils.mergeProps(inputLabellingProps, {
830
+ type: 'range',
831
+ min: String(minValue),
832
+ max: String(maxValue),
833
+ step: String(step),
834
+ 'aria-valuetext': state.value.formatChannelValue('hue', locale),
835
+ disabled: isDisabled,
836
+ value: `${state.value.getChannelValue('hue')}`,
837
+ onChange: (e)=>{
838
+ state.setHue(parseFloat(e.target.value));
839
+ }
840
+ })
841
+ };
532
842
  }
843
+ // Creates an SVG path string for a circle.
844
+ function $1d29bf243d4a9a53$var$circlePath(cx, cy, r) {
845
+ return `M ${cx}, ${cy} m ${-r}, 0 a ${r}, ${r}, 0, 1, 0, ${r * 2}, 0 a ${r}, ${r}, 0, 1, 0 ${-r * 2}, 0`;
846
+ }
847
+
848
+
849
+ var $58c850037bc7a7ce$exports = {};
850
+
851
+ $parcel$export($58c850037bc7a7ce$exports, "useColorField", () => $58c850037bc7a7ce$export$77e32ca575a28fdf);
852
+
853
+
854
+
855
+
856
+
857
+ function $58c850037bc7a7ce$export$77e32ca575a28fdf(props, state, ref) {
858
+ let { isDisabled: isDisabled , isReadOnly: isReadOnly , isRequired: isRequired } = props;
859
+ let { colorValue: colorValue , inputValue: inputValue , commit: commit , increment: increment , decrement: decrement , incrementToMax: incrementToMax , decrementToMin: decrementToMin } = state;
860
+ let inputId = $kZqDi$reactariautils.useId();
861
+ let { spinButtonProps: spinButtonProps } = $kZqDi$reactariaspinbutton.useSpinButton({
862
+ isDisabled: isDisabled,
863
+ isReadOnly: isReadOnly,
864
+ isRequired: isRequired,
865
+ maxValue: 16777215,
866
+ minValue: 0,
867
+ onIncrement: increment,
868
+ onIncrementToMax: incrementToMax,
869
+ onDecrement: decrement,
870
+ onDecrementToMin: decrementToMin,
871
+ value: colorValue ? colorValue.toHexInt() : undefined,
872
+ textValue: colorValue ? colorValue.toString('hex') : undefined
873
+ });
874
+ let [focusWithin, setFocusWithin] = $kZqDi$react.useState(false);
875
+ let { focusWithinProps: focusWithinProps } = $kZqDi$reactariainteractions.useFocusWithin({
876
+ isDisabled: isDisabled,
877
+ onFocusWithinChange: setFocusWithin
878
+ });
879
+ let onWheel = $kZqDi$react.useCallback((e)=>{
880
+ if (Math.abs(e.deltaY) <= Math.abs(e.deltaX)) return;
881
+ if (e.deltaY > 0) increment();
882
+ else if (e.deltaY < 0) decrement();
883
+ }, [
884
+ decrement,
885
+ increment
886
+ ]);
887
+ // If the input isn't supposed to receive input, disable scrolling.
888
+ let scrollingDisabled = isDisabled || isReadOnly || !focusWithin;
889
+ $kZqDi$reactariainteractions.useScrollWheel({
890
+ onScroll: onWheel,
891
+ isDisabled: scrollingDisabled
892
+ }, ref);
893
+ let onChange = (value)=>{
894
+ state.setInputValue(value);
895
+ };
896
+ let { labelProps: labelProps , inputProps: inputProps } = $kZqDi$reactariatextfield.useFormattedTextField($kZqDi$reactariautils.mergeProps(props, {
897
+ id: inputId,
898
+ value: inputValue,
899
+ defaultValue: undefined,
900
+ type: 'text',
901
+ autoComplete: 'off',
902
+ onChange: onChange
903
+ }), state, ref);
904
+ return {
905
+ labelProps: labelProps,
906
+ inputProps: $kZqDi$reactariautils.mergeProps(inputProps, spinButtonProps, focusWithinProps, {
907
+ role: 'textbox',
908
+ 'aria-valuemax': null,
909
+ 'aria-valuemin': null,
910
+ 'aria-valuenow': null,
911
+ 'aria-valuetext': null,
912
+ autoCorrect: 'off',
913
+ spellCheck: 'false',
914
+ onBlur: commit
915
+ })
916
+ };
917
+ }
918
+
919
+
920
+ $parcel$exportWildcard(module.exports, $47925bd68062ac17$exports);
921
+ $parcel$exportWildcard(module.exports, $afbb9647440a7f5b$exports);
922
+ $parcel$exportWildcard(module.exports, $1d29bf243d4a9a53$exports);
923
+ $parcel$exportWildcard(module.exports, $58c850037bc7a7ce$exports);
924
+
533
925
 
534
- exports.useColorField = useColorField;
535
926
  //# sourceMappingURL=main.js.map