@zag-js/slider 0.56.0 → 0.57.0
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/index.js +35 -49
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -49
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -10
- package/src/slider.connect.ts +7 -0
- package/src/slider.machine.ts +1 -0
- package/src/slider.style.ts +2 -0
package/dist/index.js
CHANGED
|
@@ -105,8 +105,7 @@ function getHorizontalThumbOffset(ctx) {
|
|
|
105
105
|
return parseFloat(getValue(ctx.value).toFixed(2));
|
|
106
106
|
}
|
|
107
107
|
function getOffset(ctx, percent) {
|
|
108
|
-
if (ctx.thumbAlignment === "center")
|
|
109
|
-
return `${percent}%`;
|
|
108
|
+
if (ctx.thumbAlignment === "center") return `${percent}%`;
|
|
110
109
|
const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx);
|
|
111
110
|
return `calc(${percent}% - ${offset}px)`;
|
|
112
111
|
}
|
|
@@ -134,6 +133,7 @@ function getControlStyle() {
|
|
|
134
133
|
return {
|
|
135
134
|
touchAction: "none",
|
|
136
135
|
userSelect: "none",
|
|
136
|
+
WebkitUserSelect: "none",
|
|
137
137
|
position: "relative"
|
|
138
138
|
};
|
|
139
139
|
}
|
|
@@ -166,6 +166,7 @@ function getMarkerStyle(ctx, value) {
|
|
|
166
166
|
function getMarkerGroupStyle() {
|
|
167
167
|
return {
|
|
168
168
|
userSelect: "none",
|
|
169
|
+
WebkitUserSelect: "none",
|
|
169
170
|
pointerEvents: "none",
|
|
170
171
|
position: "relative"
|
|
171
172
|
};
|
|
@@ -200,8 +201,7 @@ var dom = (0, import_dom_query.createScope)({
|
|
|
200
201
|
getRangeEl: (ctx) => dom.getById(ctx, dom.getRangeId(ctx)),
|
|
201
202
|
getValueFromPoint(ctx, point) {
|
|
202
203
|
const controlEl = dom.getControlEl(ctx);
|
|
203
|
-
if (!controlEl)
|
|
204
|
-
return;
|
|
204
|
+
if (!controlEl) return;
|
|
205
205
|
const relativePoint = (0, import_dom_event.getRelativePoint)(point, controlEl);
|
|
206
206
|
const percent = relativePoint.getPercentValue({
|
|
207
207
|
orientation: ctx.orientation,
|
|
@@ -214,8 +214,7 @@ var dom = (0, import_dom_query.createScope)({
|
|
|
214
214
|
const valueArray = Array.from(ctx.value);
|
|
215
215
|
valueArray.forEach((value, index) => {
|
|
216
216
|
const inputEl = dom.getHiddenInputEl(ctx, index);
|
|
217
|
-
if (!inputEl)
|
|
218
|
-
return;
|
|
217
|
+
if (!inputEl) return;
|
|
219
218
|
(0, import_form_utils.dispatchInputValueEvent)(inputEl, { value });
|
|
220
219
|
});
|
|
221
220
|
}
|
|
@@ -321,8 +320,7 @@ function connect(state, send, normalize) {
|
|
|
321
320
|
send({ type: "DECREMENT", index });
|
|
322
321
|
},
|
|
323
322
|
focus() {
|
|
324
|
-
if (!interactive)
|
|
325
|
-
return;
|
|
323
|
+
if (!interactive) return;
|
|
326
324
|
send({ type: "FOCUS", index: 0 });
|
|
327
325
|
},
|
|
328
326
|
getLabelProps() {
|
|
@@ -332,17 +330,18 @@ function connect(state, send, normalize) {
|
|
|
332
330
|
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
|
|
333
331
|
"data-orientation": state.context.orientation,
|
|
334
332
|
"data-invalid": (0, import_dom_query2.dataAttr)(invalid),
|
|
333
|
+
"data-dragging": (0, import_dom_query2.dataAttr)(dragging),
|
|
335
334
|
"data-focus": (0, import_dom_query2.dataAttr)(focused),
|
|
336
335
|
id: dom.getLabelId(state.context),
|
|
337
336
|
htmlFor: dom.getHiddenInputId(state.context, 0),
|
|
338
337
|
onClick(event) {
|
|
339
|
-
if (!interactive)
|
|
340
|
-
return;
|
|
338
|
+
if (!interactive) return;
|
|
341
339
|
event.preventDefault();
|
|
342
340
|
dom.getFirstEl(state.context)?.focus();
|
|
343
341
|
},
|
|
344
342
|
style: {
|
|
345
|
-
userSelect: "none"
|
|
343
|
+
userSelect: "none",
|
|
344
|
+
WebkitUserSelect: "none"
|
|
346
345
|
}
|
|
347
346
|
});
|
|
348
347
|
},
|
|
@@ -351,6 +350,7 @@ function connect(state, send, normalize) {
|
|
|
351
350
|
...parts.root.attrs,
|
|
352
351
|
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
|
|
353
352
|
"data-orientation": state.context.orientation,
|
|
353
|
+
"data-dragging": (0, import_dom_query2.dataAttr)(dragging),
|
|
354
354
|
"data-invalid": (0, import_dom_query2.dataAttr)(invalid),
|
|
355
355
|
"data-focus": (0, import_dom_query2.dataAttr)(focused),
|
|
356
356
|
id: dom.getRootId(state.context),
|
|
@@ -376,6 +376,7 @@ function connect(state, send, normalize) {
|
|
|
376
376
|
id: dom.getTrackId(state.context),
|
|
377
377
|
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
|
|
378
378
|
"data-invalid": (0, import_dom_query2.dataAttr)(invalid),
|
|
379
|
+
"data-dragging": (0, import_dom_query2.dataAttr)(dragging),
|
|
379
380
|
"data-orientation": state.context.orientation,
|
|
380
381
|
"data-focus": (0, import_dom_query2.dataAttr)(focused),
|
|
381
382
|
style: { position: "relative" }
|
|
@@ -397,6 +398,7 @@ function connect(state, send, normalize) {
|
|
|
397
398
|
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
|
|
398
399
|
"data-orientation": state.context.orientation,
|
|
399
400
|
"data-focus": (0, import_dom_query2.dataAttr)(focused && state.context.focusedIndex === index),
|
|
401
|
+
"data-dragging": (0, import_dom_query2.dataAttr)(dragging && state.context.focusedIndex === index),
|
|
400
402
|
draggable: false,
|
|
401
403
|
"aria-disabled": (0, import_dom_query2.ariaAttr)(disabled),
|
|
402
404
|
"aria-label": _ariaLabel,
|
|
@@ -410,46 +412,37 @@ function connect(state, send, normalize) {
|
|
|
410
412
|
tabIndex: disabled ? void 0 : 0,
|
|
411
413
|
style: dom.getThumbStyle(state.context, index),
|
|
412
414
|
onPointerDown(event) {
|
|
413
|
-
if (!interactive)
|
|
414
|
-
return;
|
|
415
|
+
if (!interactive) return;
|
|
415
416
|
send({ type: "THUMB_POINTER_DOWN", index });
|
|
416
417
|
event.stopPropagation();
|
|
417
418
|
},
|
|
418
419
|
onBlur() {
|
|
419
|
-
if (!interactive)
|
|
420
|
-
return;
|
|
420
|
+
if (!interactive) return;
|
|
421
421
|
send("BLUR");
|
|
422
422
|
},
|
|
423
423
|
onFocus() {
|
|
424
|
-
if (!interactive)
|
|
425
|
-
return;
|
|
424
|
+
if (!interactive) return;
|
|
426
425
|
send({ type: "FOCUS", index });
|
|
427
426
|
},
|
|
428
427
|
onKeyDown(event) {
|
|
429
|
-
if (event.defaultPrevented)
|
|
430
|
-
|
|
431
|
-
if (!interactive)
|
|
432
|
-
return;
|
|
428
|
+
if (event.defaultPrevented) return;
|
|
429
|
+
if (!interactive) return;
|
|
433
430
|
const step = (0, import_dom_event2.getEventStep)(event) * state.context.step;
|
|
434
431
|
const keyMap = {
|
|
435
432
|
ArrowUp() {
|
|
436
|
-
if (isHorizontal)
|
|
437
|
-
return;
|
|
433
|
+
if (isHorizontal) return;
|
|
438
434
|
send({ type: "ARROW_INC", step, src: "ArrowUp" });
|
|
439
435
|
},
|
|
440
436
|
ArrowDown() {
|
|
441
|
-
if (isHorizontal)
|
|
442
|
-
return;
|
|
437
|
+
if (isHorizontal) return;
|
|
443
438
|
send({ type: "ARROW_DEC", step, src: "ArrowDown" });
|
|
444
439
|
},
|
|
445
440
|
ArrowLeft() {
|
|
446
|
-
if (isVertical)
|
|
447
|
-
return;
|
|
441
|
+
if (isVertical) return;
|
|
448
442
|
send({ type: "ARROW_DEC", step, src: "ArrowLeft" });
|
|
449
443
|
},
|
|
450
444
|
ArrowRight() {
|
|
451
|
-
if (isVertical)
|
|
452
|
-
return;
|
|
445
|
+
if (isVertical) return;
|
|
453
446
|
send({ type: "ARROW_INC", step, src: "ArrowRight" });
|
|
454
447
|
},
|
|
455
448
|
PageUp() {
|
|
@@ -491,6 +484,7 @@ function connect(state, send, normalize) {
|
|
|
491
484
|
id: dom.getRangeId(state.context),
|
|
492
485
|
...parts.range.attrs,
|
|
493
486
|
dir: state.context.dir,
|
|
487
|
+
"data-dragging": (0, import_dom_query2.dataAttr)(dragging),
|
|
494
488
|
"data-focus": (0, import_dom_query2.dataAttr)(focused),
|
|
495
489
|
"data-invalid": (0, import_dom_query2.dataAttr)(invalid),
|
|
496
490
|
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
|
|
@@ -503,18 +497,16 @@ function connect(state, send, normalize) {
|
|
|
503
497
|
...parts.control.attrs,
|
|
504
498
|
dir: state.context.dir,
|
|
505
499
|
id: dom.getControlId(state.context),
|
|
500
|
+
"data-dragging": (0, import_dom_query2.dataAttr)(dragging),
|
|
506
501
|
"data-disabled": (0, import_dom_query2.dataAttr)(disabled),
|
|
507
502
|
"data-orientation": state.context.orientation,
|
|
508
503
|
"data-invalid": (0, import_dom_query2.dataAttr)(invalid),
|
|
509
504
|
"data-focus": (0, import_dom_query2.dataAttr)(focused),
|
|
510
505
|
style: dom.getControlStyle(),
|
|
511
506
|
onPointerDown(event) {
|
|
512
|
-
if (!interactive)
|
|
513
|
-
|
|
514
|
-
if (
|
|
515
|
-
return;
|
|
516
|
-
if ((0, import_dom_event2.isModifierKey)(event))
|
|
517
|
-
return;
|
|
507
|
+
if (!interactive) return;
|
|
508
|
+
if (!(0, import_dom_event2.isLeftClick)(event)) return;
|
|
509
|
+
if ((0, import_dom_event2.isModifierKey)(event)) return;
|
|
518
510
|
const point = (0, import_dom_event2.getEventPoint)(event);
|
|
519
511
|
send({ type: "POINTER_DOWN", point });
|
|
520
512
|
event.preventDefault();
|
|
@@ -588,6 +580,7 @@ function machine(userContext) {
|
|
|
588
580
|
dir: "ltr",
|
|
589
581
|
minStepsBetweenThumbs: 0,
|
|
590
582
|
disabled: false,
|
|
583
|
+
readOnly: false,
|
|
591
584
|
...ctx,
|
|
592
585
|
focusedIndex: -1,
|
|
593
586
|
fieldsetDisabled: false
|
|
@@ -710,14 +703,12 @@ function machine(userContext) {
|
|
|
710
703
|
});
|
|
711
704
|
},
|
|
712
705
|
trackThumbsSize(ctx2) {
|
|
713
|
-
if (ctx2.thumbAlignment !== "contain" || ctx2.thumbSize)
|
|
714
|
-
return;
|
|
706
|
+
if (ctx2.thumbAlignment !== "contain" || ctx2.thumbSize) return;
|
|
715
707
|
return (0, import_element_size.trackElementsSize)({
|
|
716
708
|
getNodes: () => dom.getElements(ctx2),
|
|
717
709
|
observeMutation: true,
|
|
718
710
|
callback(size) {
|
|
719
|
-
if (!size || isEqualSize(ctx2.thumbSize, size))
|
|
720
|
-
return;
|
|
711
|
+
if (!size || isEqualSize(ctx2.thumbSize, size)) return;
|
|
721
712
|
ctx2.thumbSize = size;
|
|
722
713
|
}
|
|
723
714
|
});
|
|
@@ -735,8 +726,7 @@ function machine(userContext) {
|
|
|
735
726
|
},
|
|
736
727
|
setClosestThumbIndex(ctx2, evt) {
|
|
737
728
|
const pointValue = dom.getValueFromPoint(ctx2, evt.point);
|
|
738
|
-
if (pointValue == null)
|
|
739
|
-
return;
|
|
729
|
+
if (pointValue == null) return;
|
|
740
730
|
const focusedIndex = getClosestIndex(ctx2, pointValue);
|
|
741
731
|
set.focusedIndex(ctx2, focusedIndex);
|
|
742
732
|
},
|
|
@@ -748,8 +738,7 @@ function machine(userContext) {
|
|
|
748
738
|
},
|
|
749
739
|
setPointerValue(ctx2, evt) {
|
|
750
740
|
const pointerValue = dom.getValueFromPoint(ctx2, evt.point);
|
|
751
|
-
if (pointerValue == null)
|
|
752
|
-
return;
|
|
741
|
+
if (pointerValue == null) return;
|
|
753
742
|
const value = constrainValue(ctx2, pointerValue, ctx2.focusedIndex);
|
|
754
743
|
set.valueAtIndex(ctx2, ctx2.focusedIndex, value);
|
|
755
744
|
},
|
|
@@ -807,20 +796,17 @@ var invoke = {
|
|
|
807
796
|
};
|
|
808
797
|
var set = {
|
|
809
798
|
valueAtIndex: (ctx, index, value) => {
|
|
810
|
-
if ((0, import_utils.isEqual)(ctx.value[index], value))
|
|
811
|
-
return;
|
|
799
|
+
if ((0, import_utils.isEqual)(ctx.value[index], value)) return;
|
|
812
800
|
ctx.value[index] = value;
|
|
813
801
|
invoke.change(ctx);
|
|
814
802
|
},
|
|
815
803
|
value: (ctx, value) => {
|
|
816
|
-
if ((0, import_utils.isEqual)(ctx.value, value))
|
|
817
|
-
return;
|
|
804
|
+
if ((0, import_utils.isEqual)(ctx.value, value)) return;
|
|
818
805
|
assignArray(ctx.value, value);
|
|
819
806
|
invoke.change(ctx);
|
|
820
807
|
},
|
|
821
808
|
focusedIndex: (ctx, index) => {
|
|
822
|
-
if ((0, import_utils.isEqual)(ctx.focusedIndex, index))
|
|
823
|
-
return;
|
|
809
|
+
if ((0, import_utils.isEqual)(ctx.focusedIndex, index)) return;
|
|
824
810
|
ctx.focusedIndex = index;
|
|
825
811
|
invoke.focusChange(ctx);
|
|
826
812
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/slider.anatomy.ts","../src/slider.connect.ts","../src/slider.dom.ts","../src/slider.style.ts","../src/slider.utils.ts","../src/slider.machine.ts","../src/slider.props.ts"],"sourcesContent":["export { anatomy } from \"./slider.anatomy\"\nexport { connect } from \"./slider.connect\"\nexport { machine } from \"./slider.machine\"\nexport * from \"./slider.props\"\nexport type {\n MachineApi as Api,\n UserDefinedContext as Context,\n ElementIds,\n FocusChangeDetails,\n MarkerProps,\n ThumbProps,\n ValueChangeDetails,\n ValueTextDetails,\n} from \"./slider.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"valueText\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\n\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n isLeftClick,\n isModifierKey,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { ariaAttr, dataAttr } from \"@zag-js/dom-query\"\nimport { getPercentValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./slider.anatomy\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineApi, Send, State } from \"./slider.types\"\nimport { getRangeAtIndex } from \"./slider.utils\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const ariaLabel = state.context[\"aria-label\"]\n const ariaLabelledBy = state.context[\"aria-labelledby\"]\n const sliderValue = state.context.value\n\n const focused = state.matches(\"focus\")\n const dragging = state.matches(\"dragging\")\n\n const disabled = state.context.isDisabled\n const invalid = state.context.invalid\n const interactive = state.context.isInteractive\n\n const isHorizontal = state.context.orientation === \"horizontal\"\n const isVertical = state.context.orientation === \"vertical\"\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n return {\n value: state.context.value,\n dragging,\n focused,\n setValue(value) {\n send({ type: \"SET_VALUE\", value: value })\n },\n getThumbValue(index) {\n return sliderValue[index]\n },\n setThumbValue(index, value) {\n send({ type: \"SET_VALUE\", index, value })\n },\n getValuePercent: getValuePercentFn,\n getPercentValue: getPercentValueFn,\n getThumbPercent(index) {\n return getValuePercentFn(sliderValue[index])\n },\n setThumbPercent(index, percent) {\n const value = getPercentValueFn(percent)\n send({ type: \"SET_VALUE\", index, value })\n },\n getThumbMin(index) {\n return getRangeAtIndex(state.context, index).min\n },\n getThumbMax(index) {\n return getRangeAtIndex(state.context, index).max\n },\n increment(index) {\n send({ type: \"INCREMENT\", index })\n },\n decrement(index) {\n send({ type: \"DECREMENT\", index })\n },\n focus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index: 0 })\n },\n\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context, 0),\n onClick(event) {\n if (!interactive) return\n event.preventDefault()\n dom.getFirstEl(state.context)?.focus()\n },\n style: {\n userSelect: \"none\",\n },\n })\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n })\n },\n\n getValueTextProps() {\n return normalize.element({\n ...parts.valueText.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getValueTextId(state.context),\n })\n },\n\n getTrackProps() {\n return normalize.element({\n ...parts.track.attrs,\n dir: state.context.dir,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused),\n style: { position: \"relative\" },\n })\n },\n\n getThumbProps(props) {\n const { index = 0, name } = props\n\n const value = sliderValue[index]\n const range = getRangeAtIndex(state.context, index)\n const valueText = state.context.getAriaValueText?.({ value, index })\n const _ariaLabel = Array.isArray(ariaLabel) ? ariaLabel[index] : ariaLabel\n const _ariaLabelledBy = Array.isArray(ariaLabelledBy) ? ariaLabelledBy[index] : ariaLabelledBy\n\n return normalize.element({\n ...parts.thumb.attrs,\n dir: state.context.dir,\n \"data-index\": index,\n \"data-name\": name,\n id: dom.getThumbId(state.context, index),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused && state.context.focusedIndex === index),\n draggable: false,\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": _ariaLabel,\n \"aria-labelledby\": _ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": range.max,\n \"aria-valuemin\": range.min,\n \"aria-valuenow\": sliderValue[index],\n \"aria-valuetext\": valueText,\n role: \"slider\",\n tabIndex: disabled ? undefined : 0,\n style: dom.getThumbStyle(state.context, index),\n onPointerDown(event) {\n if (!interactive) return\n send({ type: \"THUMB_POINTER_DOWN\", index })\n event.stopPropagation()\n },\n onBlur() {\n if (!interactive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event) * state.context.step\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n if (isHorizontal) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowUp\" })\n },\n ArrowDown() {\n if (isHorizontal) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowDown\" })\n },\n ArrowLeft() {\n if (isVertical) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowLeft\" })\n },\n ArrowRight() {\n if (isVertical) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowRight\" })\n },\n PageUp() {\n send({ type: \"ARROW_INC\", step, src: \"PageUp\" })\n },\n PageDown() {\n send({ type: \"ARROW_DEC\", step, src: \"PageDown\" })\n },\n Home() {\n send(\"HOME\")\n },\n End() {\n send(\"END\")\n },\n }\n\n const key = getEventKey(event, state.context)\n const exec = keyMap[key]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n event.stopPropagation()\n }\n },\n })\n },\n\n getHiddenInputProps(props) {\n const { index = 0, name } = props\n return normalize.input({\n name:\n name ?? (state.context.name ? state.context.name + (state.context.value.length > 1 ? \"[]\" : \"\") : undefined),\n form: state.context.form,\n type: \"text\",\n hidden: true,\n defaultValue: state.context.value[index],\n id: dom.getHiddenInputId(state.context, index),\n })\n },\n\n getRangeProps() {\n return normalize.element({\n id: dom.getRangeId(state.context),\n ...parts.range.attrs,\n dir: state.context.dir,\n \"data-focus\": dataAttr(focused),\n \"data-invalid\": dataAttr(invalid),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n })\n },\n\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n style: dom.getControlStyle(),\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n })\n },\n\n getMarkerGroupProps() {\n return normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n })\n },\n\n getMarkerProps(props) {\n const style = dom.getMarkerStyle(state.context, props.value)\n let markerState: \"over-value\" | \"under-value\" | \"at-value\"\n\n const first = state.context.value[0]\n const last = state.context.value[state.context.value.length - 1]\n\n if (props.value < first) {\n markerState = \"under-value\"\n } else if (props.value > last) {\n markerState = \"over-value\"\n } else {\n markerState = \"at-value\"\n }\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, props.value),\n role: \"presentation\",\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n \"data-value\": props.value,\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint, type Point } from \"@zag-js/dom-event\"\nimport { createScope, queryAll } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styleGetterFns } from \"./slider.style\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styleGetterFns,\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx, index: number) => ctx.ids?.thumb?.(index) ?? `slider:${ctx.id}:thumb:${index}`,\n getHiddenInputId: (ctx: Ctx, index: number) => `slider:${ctx.id}:input:${index}`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.range ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getValueTextId: (ctx: Ctx) => ctx.ids?.valueText ?? `slider:${ctx.id}:valueText`,\n getMarkerId: (ctx: Ctx, value: number) => ctx.ids?.marker?.(value) ?? `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx, index: number) => dom.getById(ctx, dom.getThumbId(ctx, index)),\n getHiddenInputEl: (ctx: Ctx, index: number) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx, index)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getElements: (ctx: Ctx) => queryAll(dom.getControlEl(ctx), \"[role=slider]\"),\n getFirstEl: (ctx: Ctx) => dom.getElements(ctx)[0],\n getRangeEl: (ctx: Ctx) => dom.getById(ctx, dom.getRangeId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point) {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n const relativePoint = getRelativePoint(point, controlEl)\n const percent = relativePoint.getPercentValue({\n orientation: ctx.orientation,\n dir: ctx.dir,\n inverted: { y: true },\n })\n return getPercentValue(percent, ctx.min, ctx.max, ctx.step)\n },\n dispatchChangeEvent(ctx: Ctx) {\n const valueArray = Array.from(ctx.value)\n valueArray.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n if (!inputEl) return\n dispatchInputValueEvent(inputEl, { value })\n })\n },\n})\n","import { getValuePercent, getValueTransformer } from \"@zag-js/numeric-range\"\nimport type { Style } from \"@zag-js/types\"\nimport type { MachineContext as Ctx, SharedContext } from \"./slider.types\"\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getBounds<T>(value: T[]): [T, T] {\n const firstValue = value[0]\n const lastThumb = value[value.length - 1]\n return [firstValue, lastThumb]\n}\n\nexport function getRangeOffsets(ctx: Ctx) {\n const [firstPercent, lastPercent] = getBounds(ctx.valuePercent)\n\n if (ctx.valuePercent.length === 1) {\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent[0] < 50\n const start = isNegative ? `${ctx.valuePercent[0]}%` : \"50%\"\n const end = isNegative ? \"50%\" : `${100 - ctx.valuePercent[0]}%`\n\n return { start, end }\n }\n\n return { start: \"0%\", end: `${100 - lastPercent}%` }\n }\n\n return { start: `${firstPercent}%`, end: `${100 - lastPercent}%` }\n}\n\nfunction getRangeStyle(ctx: Pick<SharedContext, \"isVertical\" | \"isRtl\">): Style {\n if (ctx.isVertical) {\n return {\n position: \"absolute\",\n bottom: \"var(--slider-range-start)\",\n top: \"var(--slider-range-end)\",\n }\n }\n\n return {\n position: \"absolute\",\n [ctx.isRtl ? \"right\" : \"left\"]: \"var(--slider-range-start)\",\n [ctx.isRtl ? \"left\" : \"right\"]: \"var(--slider-range-end)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Thumb style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getVerticalThumbOffset(ctx: SharedContext) {\n const { height = 0 } = ctx.thumbSize ?? {}\n const getValue = getValueTransformer([ctx.min, ctx.max], [-height / 2, height / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getHorizontalThumbOffset(ctx: SharedContext) {\n const { width = 0 } = ctx.thumbSize ?? {}\n\n if (ctx.isRtl) {\n const getValue = getValueTransformer([ctx.max, ctx.min], [-width / 2, width / 2])\n return -1 * parseFloat(getValue(ctx.value).toFixed(2))\n }\n\n const getValue = getValueTransformer([ctx.min, ctx.max], [-width / 2, width / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getOffset(ctx: SharedContext, percent: number) {\n if (ctx.thumbAlignment === \"center\") return `${percent}%`\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getThumbOffset(ctx: SharedContext) {\n let percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n return getOffset(ctx, percent)\n}\n\nfunction getVisibility(ctx: Ctx) {\n let visibility: \"visible\" | \"hidden\" = \"visible\"\n if (ctx.thumbAlignment === \"contain\" && !ctx.hasMeasuredThumbSize) {\n visibility = \"hidden\"\n }\n return visibility\n}\n\nfunction getThumbStyle(ctx: Ctx, index: number): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : \"insetInlineStart\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: `var(--slider-thumb-offset-${index})`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Control style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getControlStyle(): Style {\n return {\n touchAction: \"none\",\n userSelect: \"none\",\n position: \"relative\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Root style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRootStyle(ctx: Ctx): Style {\n const range = getRangeOffsets(ctx)\n\n const offsetStyles = ctx.value.reduce<Style>((styles, value, index) => {\n const offset = getThumbOffset({ ...ctx, value })\n return { ...styles, [`--slider-thumb-offset-${index}`]: offset }\n }, {})\n\n return {\n ...offsetStyles,\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : ctx.isRtl ? \"translateX(50%)\" : \"translateX(-50%)\",\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(\n ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\" | \"thumbAlignment\" | \"hasMeasuredThumbSize\">,\n value: number,\n): Style {\n return {\n // @ts-expect-error\n visibility: getVisibility(ctx),\n position: \"absolute\",\n pointerEvents: \"none\",\n // @ts-expect-error\n [ctx.isHorizontal ? \"insetInlineStart\" : \"bottom\"]: getThumbOffset({ ...ctx, value }),\n translate: \"var(--tx) var(--ty)\",\n \"--tx\": ctx.isHorizontal ? (ctx.isRtl ? \"50%\" : \"-50%\") : \"0%\",\n \"--ty\": !ctx.isHorizontal ? \"50%\" : \"0%\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerGroupStyle(): Style {\n return {\n userSelect: \"none\",\n pointerEvents: \"none\",\n position: \"relative\",\n }\n}\n\nexport const styleGetterFns = {\n getRootStyle,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getMarkerStyle,\n getMarkerGroupStyle,\n}\n","import {\n clampValue,\n getClosestValueIndex,\n getNextStepValue,\n getPreviousStepValue,\n getValueRanges,\n snapValueToStep,\n} from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function normalizeValues(ctx: Ctx, nextValues: number[]) {\n return nextValues.map((value, index, values) => {\n return constrainValue({ ...ctx, value: values }, value, index)\n })\n}\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function getRangeAtIndex(ctx: Ctx, index: number) {\n return getValueRanges(ctx.value, ctx.min, ctx.max, ctx.minStepsBetweenThumbs)[index]\n}\n\nexport function constrainValue(ctx: Ctx, value: number, index: number) {\n const range = getRangeAtIndex(ctx, index)\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, range.min, range.max)\n}\n\nexport function decrement(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getPreviousStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function increment(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getNextStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function getClosestIndex(ctx: Ctx, pointValue: number) {\n return getClosestValueIndex(ctx.value, pointValue)\n}\n\nexport function assignArray(current: number[], next: number[]) {\n for (let i = 0; i < next.length; i++) {\n const value = next[i]\n current[i] = value\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementsSize, type ElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact, isEqual } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport {\n assignArray,\n constrainValue,\n decrement,\n getClosestIndex,\n getRangeAtIndex,\n increment,\n normalizeValues,\n} from \"./slider.utils\"\n\nconst isEqualSize = (a: ElementSize | null, b: ElementSize | null) => {\n return a?.width === b?.width && a?.height === b?.height\n}\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n min: 0,\n max: 100,\n step: 1,\n value: [0],\n origin: \"start\",\n orientation: \"horizontal\",\n dir: \"ltr\",\n minStepsBetweenThumbs: 0,\n disabled: false,\n ...ctx,\n focusedIndex: -1,\n fieldsetDisabled: false,\n },\n\n computed: {\n isHorizontal: (ctx) => ctx.orientation === \"horizontal\",\n isVertical: (ctx) => ctx.orientation === \"vertical\",\n isRtl: (ctx) => ctx.orientation === \"horizontal\" && ctx.dir === \"rtl\",\n isDisabled: (ctx) => !!ctx.disabled || ctx.fieldsetDisabled,\n isInteractive: (ctx) => !(ctx.readOnly || ctx.isDisabled),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize != null,\n valuePercent(ctx) {\n return ctx.value.map((value) => 100 * getValuePercent(value, ctx.min, ctx.max))\n },\n },\n\n watch: {\n value: [\"syncInputElements\"],\n },\n\n entry: [\"coarseValue\"],\n\n activities: [\"trackFormControlState\", \"trackThumbsSize\"],\n\n on: {\n SET_VALUE: [\n {\n guard: \"hasIndex\",\n actions: \"setValueAtIndex\",\n },\n { actions: \"setValue\" },\n ],\n INCREMENT: {\n actions: \"incrementThumbAtIndex\",\n },\n DECREMENT: {\n actions: \"decrementThumbAtIndex\",\n },\n },\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n FOCUS: {\n target: \"focus\",\n actions: \"setFocusedIndex\",\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n },\n },\n focus: {\n entry: \"focusActiveThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n ARROW_DEC: {\n actions: [\"decrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n ARROW_INC: {\n actions: [\"incrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n HOME: {\n actions: [\"setFocusedThumbToMin\", \"invokeOnChangeEnd\"],\n },\n END: {\n actions: [\"setFocusedThumbToMax\", \"invokeOnChangeEnd\"],\n },\n BLUR: {\n target: \"idle\",\n actions: \"clearFocusedIndex\",\n },\n },\n },\n dragging: {\n entry: \"focusActiveThumb\",\n activities: \"trackPointerMove\",\n on: {\n POINTER_UP: {\n target: \"focus\",\n actions: \"invokeOnChangeEnd\",\n },\n POINTER_MOVE: {\n actions: \"setPointerValue\",\n },\n },\n },\n },\n },\n {\n guards: {\n hasIndex: (_ctx, evt) => evt.index != null,\n },\n activities: {\n trackFormControlState(ctx, _evt, { initialContext }) {\n return trackFormControl(dom.getRootEl(ctx), {\n onFieldsetDisabledChange(disabled) {\n ctx.fieldsetDisabled = disabled\n },\n onFormReset() {\n set.value(ctx, initialContext.value)\n },\n })\n },\n\n trackPointerMove(ctx, _evt, { send }) {\n return trackPointerMove(dom.getDoc(ctx), {\n onPointerMove(info) {\n send({ type: \"POINTER_MOVE\", point: info.point })\n },\n onPointerUp() {\n send(\"POINTER_UP\")\n },\n })\n },\n trackThumbsSize(ctx) {\n if (ctx.thumbAlignment !== \"contain\" || ctx.thumbSize) return\n\n return trackElementsSize({\n getNodes: () => dom.getElements(ctx),\n observeMutation: true,\n callback(size) {\n if (!size || isEqualSize(ctx.thumbSize, size)) return\n ctx.thumbSize = size\n },\n })\n },\n },\n actions: {\n syncInputElements(ctx) {\n ctx.value.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n dom.setValue(inputEl, value)\n })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onValueChangeEnd?.({ value: ctx.value })\n },\n setClosestThumbIndex(ctx, evt) {\n const pointValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointValue == null) return\n\n const focusedIndex = getClosestIndex(ctx, pointValue)\n set.focusedIndex(ctx, focusedIndex)\n },\n setFocusedIndex(ctx, evt) {\n set.focusedIndex(ctx, evt.index)\n },\n clearFocusedIndex(ctx) {\n set.focusedIndex(ctx, -1)\n },\n setPointerValue(ctx, evt) {\n const pointerValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointerValue == null) return\n\n const value = constrainValue(ctx, pointerValue, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, value)\n },\n focusActiveThumb(ctx) {\n raf(() => {\n const thumbEl = dom.getThumbEl(ctx, ctx.focusedIndex)\n thumbEl?.focus({ preventScroll: true })\n })\n },\n decrementThumbAtIndex(ctx, evt) {\n const value = decrement(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n incrementThumbAtIndex(ctx, evt) {\n const value = increment(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n setFocusedThumbToMin(ctx) {\n const { min } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, min)\n },\n setFocusedThumbToMax(ctx) {\n const { max } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, max)\n },\n coarseValue(ctx) {\n const value = normalizeValues(ctx, ctx.value)\n set.value(ctx, value)\n },\n setValueAtIndex(ctx, evt) {\n const value = constrainValue(ctx, evt.value, evt.index)\n set.valueAtIndex(ctx, evt.index, value)\n },\n setValue(ctx, evt) {\n const value = normalizeValues(ctx, evt.value)\n set.value(ctx, value)\n },\n },\n },\n )\n}\n\nconst invoke = {\n change: (ctx: MachineContext) => {\n ctx.onValueChange?.({\n value: Array.from(ctx.value),\n })\n dom.dispatchChangeEvent(ctx)\n },\n focusChange: (ctx: MachineContext) => {\n ctx.onFocusChange?.({\n value: Array.from(ctx.value),\n focusedIndex: ctx.focusedIndex,\n })\n },\n}\n\nconst set = {\n valueAtIndex: (ctx: MachineContext, index: number, value: number) => {\n if (isEqual(ctx.value[index], value)) return\n ctx.value[index] = value\n invoke.change(ctx)\n },\n value: (ctx: MachineContext, value: number[]) => {\n if (isEqual(ctx.value, value)) return\n assignArray(ctx.value, value)\n invoke.change(ctx)\n },\n focusedIndex: (ctx: MachineContext, index: number) => {\n if (isEqual(ctx.focusedIndex, index)) return\n ctx.focusedIndex = index\n invoke.focusChange(ctx)\n },\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { ThumbProps, UserDefinedContext } from \"./slider.types\"\n\nexport const props = createProps<UserDefinedContext>()([\n \"aria-label\",\n \"aria-labelledby\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getAriaValueText\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"max\",\n \"min\",\n \"minStepsBetweenThumbs\",\n \"name\",\n \"onFocusChange\",\n \"onValueChange\",\n \"onValueChangeEnd\",\n \"orientation\",\n \"origin\",\n \"readOnly\",\n \"step\",\n \"thumbAlignment\",\n \"thumbAlignment\",\n \"thumbSize\",\n \"value\",\n])\n\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n\nexport const thumbProps = createProps<ThumbProps>()([\"index\", \"name\"])\nexport const splitThumbProps = createSplitProps<ThumbProps>(thumbProps)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAA8B;AAEvB,IAAM,cAAU,8BAAc,QAAQ,EAAE;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,QAAQ,QAAQ,MAAM;;;ACdnC,IAAAA,oBAOO;AACP,IAAAC,oBAAmC;AACnC,IAAAC,wBAAiD;;;ACTjD,uBAA6C;AAC7C,uBAAsC;AACtC,wBAAwC;AACxC,IAAAC,wBAAgC;;;ACHhC,2BAAqD;AAQrD,SAAS,UAAa,OAAoB;AACxC,QAAM,aAAa,MAAM,CAAC;AAC1B,QAAM,YAAY,MAAM,MAAM,SAAS,CAAC;AACxC,SAAO,CAAC,YAAY,SAAS;AAC/B;AAEO,SAAS,gBAAgB,KAAU;AACxC,QAAM,CAAC,cAAc,WAAW,IAAI,UAAU,IAAI,YAAY;AAE9D,MAAI,IAAI,aAAa,WAAW,GAAG;AACjC,QAAI,IAAI,WAAW,UAAU;AAC3B,YAAM,aAAa,IAAI,aAAa,CAAC,IAAI;AACzC,YAAM,QAAQ,aAAa,GAAG,IAAI,aAAa,CAAC,CAAC,MAAM;AACvD,YAAM,MAAM,aAAa,QAAQ,GAAG,MAAM,IAAI,aAAa,CAAC,CAAC;AAE7D,aAAO,EAAE,OAAO,IAAI;AAAA,IACtB;AAEA,WAAO,EAAE,OAAO,MAAM,KAAK,GAAG,MAAM,WAAW,IAAI;AAAA,EACrD;AAEA,SAAO,EAAE,OAAO,GAAG,YAAY,KAAK,KAAK,GAAG,MAAM,WAAW,IAAI;AACnE;AAEA,SAAS,cAAc,KAAyD;AAC9E,MAAI,IAAI,YAAY;AAClB,WAAO;AAAA,MACL,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,KAAK;AAAA,IACP;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV,CAAC,IAAI,QAAQ,UAAU,MAAM,GAAG;AAAA,IAChC,CAAC,IAAI,QAAQ,SAAS,OAAO,GAAG;AAAA,EAClC;AACF;AAMA,SAAS,uBAAuB,KAAoB;AAClD,QAAM,EAAE,SAAS,EAAE,IAAI,IAAI,aAAa,CAAC;AACzC,QAAM,eAAW,0CAAoB,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAClF,SAAO,WAAW,SAAS,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClD;AAEA,SAAS,yBAAyB,KAAoB;AACpD,QAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,aAAa,CAAC;AAExC,MAAI,IAAI,OAAO;AACb,UAAMC,gBAAW,0CAAoB,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAChF,WAAO,KAAK,WAAWA,UAAS,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;AAAA,EACvD;AAEA,QAAM,eAAW,0CAAoB,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAChF,SAAO,WAAW,SAAS,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClD;AAEA,SAAS,UAAU,KAAoB,SAAiB;AACtD,MAAI,IAAI,mBAAmB;AAAU,WAAO,GAAG,OAAO;AACtD,QAAM,SAAS,IAAI,aAAa,uBAAuB,GAAG,IAAI,yBAAyB,GAAG;AAC1F,SAAO,QAAQ,OAAO,OAAO,MAAM;AACrC;AAEA,SAAS,eAAe,KAAoB;AAC1C,MAAI,cAAU,sCAAgB,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI;AAC7D,SAAO,UAAU,KAAK,OAAO;AAC/B;AAEA,SAAS,cAAc,KAAU;AAC/B,MAAI,aAAmC;AACvC,MAAI,IAAI,mBAAmB,aAAa,CAAC,IAAI,sBAAsB;AACjE,iBAAa;AAAA,EACf;AACA,SAAO;AACT;AAEA,SAAS,cAAc,KAAU,OAAsB;AACrD,QAAM,gBAAgB,IAAI,aAAa,WAAW;AAClD,SAAO;AAAA,IACL,YAAY,cAAc,GAAG;AAAA,IAC7B,UAAU;AAAA,IACV,WAAW;AAAA,IACX,CAAC,aAAa,GAAG,6BAA6B,KAAK;AAAA,EACrD;AACF;AAMA,SAAS,kBAAyB;AAChC,SAAO;AAAA,IACL,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AACF;AAMA,SAAS,aAAa,KAAiB;AACrC,QAAM,QAAQ,gBAAgB,GAAG;AAEjC,QAAM,eAAe,IAAI,MAAM,OAAc,CAAC,QAAQ,OAAO,UAAU;AACrE,UAAM,SAAS,eAAe,EAAE,GAAG,KAAK,MAAM,CAAC;AAC/C,WAAO,EAAE,GAAG,QAAQ,CAAC,yBAAyB,KAAK,EAAE,GAAG,OAAO;AAAA,EACjE,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,GAAG;AAAA,IACH,4BAA4B,IAAI,aAAa,oBAAoB,IAAI,QAAQ,oBAAoB;AAAA,IACjG,wBAAwB,MAAM;AAAA,IAC9B,sBAAsB,MAAM;AAAA,EAC9B;AACF;AAMA,SAAS,eACP,KACA,OACO;AACP,SAAO;AAAA;AAAA,IAEL,YAAY,cAAc,GAAG;AAAA,IAC7B,UAAU;AAAA,IACV,eAAe;AAAA;AAAA,IAEf,CAAC,IAAI,eAAe,qBAAqB,QAAQ,GAAG,eAAe,EAAE,GAAG,KAAK,MAAM,CAAC;AAAA,IACpF,WAAW;AAAA,IACX,QAAQ,IAAI,eAAgB,IAAI,QAAQ,QAAQ,SAAU;AAAA,IAC1D,QAAQ,CAAC,IAAI,eAAe,QAAQ;AAAA,EACtC;AACF;AAMA,SAAS,sBAA6B;AACpC,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,UAAU;AAAA,EACZ;AACF;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ADpKO,IAAM,UAAM,8BAAY;AAAA,EAC7B,GAAG;AAAA,EACH,WAAW,CAAC,QAAa,IAAI,KAAK,QAAQ,UAAU,IAAI,EAAE;AAAA,EAC1D,YAAY,CAAC,KAAU,UAAkB,IAAI,KAAK,QAAQ,KAAK,KAAK,UAAU,IAAI,EAAE,UAAU,KAAK;AAAA,EACnG,kBAAkB,CAAC,KAAU,UAAkB,UAAU,IAAI,EAAE,UAAU,KAAK;AAAA,EAC9E,cAAc,CAAC,QAAa,IAAI,KAAK,WAAW,UAAU,IAAI,EAAE;AAAA,EAChE,YAAY,CAAC,QAAa,IAAI,KAAK,SAAS,UAAU,IAAI,EAAE;AAAA,EAC5D,YAAY,CAAC,QAAa,IAAI,KAAK,SAAS,UAAU,IAAI,EAAE;AAAA,EAC5D,YAAY,CAAC,QAAa,IAAI,KAAK,SAAS,UAAU,IAAI,EAAE;AAAA,EAC5D,gBAAgB,CAAC,QAAa,IAAI,KAAK,aAAa,UAAU,IAAI,EAAE;AAAA,EACpE,aAAa,CAAC,KAAU,UAAkB,IAAI,KAAK,SAAS,KAAK,KAAK,UAAU,IAAI,EAAE,WAAW,KAAK;AAAA,EAEtG,WAAW,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,UAAU,GAAG,CAAC;AAAA,EAC5D,YAAY,CAAC,KAAU,UAAkB,IAAI,QAAQ,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC;AAAA,EACpF,kBAAkB,CAAC,KAAU,UAAkB,IAAI,QAA0B,KAAK,IAAI,iBAAiB,KAAK,KAAK,CAAC;AAAA,EAClH,cAAc,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,aAAa,GAAG,CAAC;AAAA,EAClE,aAAa,CAAC,YAAa,2BAAS,IAAI,aAAa,GAAG,GAAG,eAAe;AAAA,EAC1E,YAAY,CAAC,QAAa,IAAI,YAAY,GAAG,EAAE,CAAC;AAAA,EAChD,YAAY,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,WAAW,GAAG,CAAC;AAAA,EAE9D,kBAAkB,KAAU,OAAc;AACxC,UAAM,YAAY,IAAI,aAAa,GAAG;AACtC,QAAI,CAAC;AAAW;AAChB,UAAM,oBAAgB,mCAAiB,OAAO,SAAS;AACvD,UAAM,UAAU,cAAc,gBAAgB;AAAA,MAC5C,aAAa,IAAI;AAAA,MACjB,KAAK,IAAI;AAAA,MACT,UAAU,EAAE,GAAG,KAAK;AAAA,IACtB,CAAC;AACD,eAAO,uCAAgB,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI;AAAA,EAC5D;AAAA,EACA,oBAAoB,KAAU;AAC5B,UAAM,aAAa,MAAM,KAAK,IAAI,KAAK;AACvC,eAAW,QAAQ,CAAC,OAAO,UAAU;AACnC,YAAM,UAAU,IAAI,iBAAiB,KAAK,KAAK;AAC/C,UAAI,CAAC;AAAS;AACd,qDAAwB,SAAS,EAAE,MAAM,CAAC;AAAA,IAC5C,CAAC;AAAA,EACH;AACF,CAAC;;;AE9CD,IAAAC,wBAOO;AAGA,SAAS,gBAAgB,KAAU,YAAsB;AAC9D,SAAO,WAAW,IAAI,CAAC,OAAO,OAAO,WAAW;AAC9C,WAAO,eAAe,EAAE,GAAG,KAAK,OAAO,OAAO,GAAG,OAAO,KAAK;AAAA,EAC/D,CAAC;AACH;AAMO,SAAS,gBAAgB,KAAU,OAAe;AACvD,aAAO,sCAAe,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,qBAAqB,EAAE,KAAK;AACrF;AAEO,SAAS,eAAe,KAAU,OAAe,OAAe;AACrE,QAAM,QAAQ,gBAAgB,KAAK,KAAK;AACxC,QAAM,gBAAY,uCAAgB,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI;AACnE,aAAO,kCAAW,WAAW,MAAM,KAAK,MAAM,GAAG;AACnD;AAEO,SAAS,UAAU,KAAU,OAAgB,MAAe;AACjE,QAAM,MAAM,SAAS,IAAI;AACzB,QAAM,QAAQ,gBAAgB,KAAK,GAAG;AACtC,QAAM,iBAAa,4CAAqB,KAAK;AAAA,IAC3C,GAAG;AAAA,IACH,MAAM,QAAQ,IAAI;AAAA,IAClB,QAAQ,IAAI;AAAA,EACd,CAAC;AACD,aAAW,GAAG,QAAI,kCAAW,WAAW,GAAG,GAAG,MAAM,KAAK,MAAM,GAAG;AAClE,SAAO;AACT;AAEO,SAAS,UAAU,KAAU,OAAgB,MAAe;AACjE,QAAM,MAAM,SAAS,IAAI;AACzB,QAAM,QAAQ,gBAAgB,KAAK,GAAG;AACtC,QAAM,iBAAa,wCAAiB,KAAK;AAAA,IACvC,GAAG;AAAA,IACH,MAAM,QAAQ,IAAI;AAAA,IAClB,QAAQ,IAAI;AAAA,EACd,CAAC;AACD,aAAW,GAAG,QAAI,kCAAW,WAAW,GAAG,GAAG,MAAM,KAAK,MAAM,GAAG;AAClE,SAAO;AACT;AAEO,SAAS,gBAAgB,KAAU,YAAoB;AAC5D,aAAO,4CAAqB,IAAI,OAAO,UAAU;AACnD;AAEO,SAAS,YAAY,SAAmB,MAAgB;AAC7D,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,QAAQ,KAAK,CAAC;AACpB,YAAQ,CAAC,IAAI;AAAA,EACf;AACF;;;AH/CO,SAAS,QAA6B,OAAc,MAAY,WAA6C;AAClH,QAAM,YAAY,MAAM,QAAQ,YAAY;AAC5C,QAAM,iBAAiB,MAAM,QAAQ,iBAAiB;AACtD,QAAM,cAAc,MAAM,QAAQ;AAElC,QAAM,UAAU,MAAM,QAAQ,OAAO;AACrC,QAAM,WAAW,MAAM,QAAQ,UAAU;AAEzC,QAAM,WAAW,MAAM,QAAQ;AAC/B,QAAM,UAAU,MAAM,QAAQ;AAC9B,QAAM,cAAc,MAAM,QAAQ;AAElC,QAAM,eAAe,MAAM,QAAQ,gBAAgB;AACnD,QAAM,aAAa,MAAM,QAAQ,gBAAgB;AAEjD,WAAS,kBAAkB,OAAe;AACxC,eAAO,uCAAgB,OAAO,MAAM,QAAQ,KAAK,MAAM,QAAQ,GAAG;AAAA,EACpE;AAEA,WAAS,kBAAkB,SAAiB;AAC1C,eAAO,uCAAgB,SAAS,MAAM,QAAQ,KAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI;AAAA,EAC1F;AAEA,SAAO;AAAA,IACL,OAAO,MAAM,QAAQ;AAAA,IACrB;AAAA,IACA;AAAA,IACA,SAAS,OAAO;AACd,WAAK,EAAE,MAAM,aAAa,MAAa,CAAC;AAAA,IAC1C;AAAA,IACA,cAAc,OAAO;AACnB,aAAO,YAAY,KAAK;AAAA,IAC1B;AAAA,IACA,cAAc,OAAO,OAAO;AAC1B,WAAK,EAAE,MAAM,aAAa,OAAO,MAAM,CAAC;AAAA,IAC1C;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB,OAAO;AACrB,aAAO,kBAAkB,YAAY,KAAK,CAAC;AAAA,IAC7C;AAAA,IACA,gBAAgB,OAAO,SAAS;AAC9B,YAAM,QAAQ,kBAAkB,OAAO;AACvC,WAAK,EAAE,MAAM,aAAa,OAAO,MAAM,CAAC;AAAA,IAC1C;AAAA,IACA,YAAY,OAAO;AACjB,aAAO,gBAAgB,MAAM,SAAS,KAAK,EAAE;AAAA,IAC/C;AAAA,IACA,YAAY,OAAO;AACjB,aAAO,gBAAgB,MAAM,SAAS,KAAK,EAAE;AAAA,IAC/C;AAAA,IACA,UAAU,OAAO;AACf,WAAK,EAAE,MAAM,aAAa,MAAM,CAAC;AAAA,IACnC;AAAA,IACA,UAAU,OAAO;AACf,WAAK,EAAE,MAAM,aAAa,MAAM,CAAC;AAAA,IACnC;AAAA,IACA,QAAQ;AACN,UAAI,CAAC;AAAa;AAClB,WAAK,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;AAAA,IAClC;AAAA,IAEA,gBAAgB;AACd,aAAO,UAAU,MAAM;AAAA,QACrB,GAAG,MAAM,MAAM;AAAA,QACf,KAAK,MAAM,QAAQ;AAAA,QACnB,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,oBAAgB,4BAAS,OAAO;AAAA,QAChC,kBAAc,4BAAS,OAAO;AAAA,QAC9B,IAAI,IAAI,WAAW,MAAM,OAAO;AAAA,QAChC,SAAS,IAAI,iBAAiB,MAAM,SAAS,CAAC;AAAA,QAC9C,QAAQ,OAAO;AACb,cAAI,CAAC;AAAa;AAClB,gBAAM,eAAe;AACrB,cAAI,WAAW,MAAM,OAAO,GAAG,MAAM;AAAA,QACvC;AAAA,QACA,OAAO;AAAA,UACL,YAAY;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,eAAe;AACb,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,KAAK;AAAA,QACd,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,oBAAgB,4BAAS,OAAO;AAAA,QAChC,kBAAc,4BAAS,OAAO;AAAA,QAC9B,IAAI,IAAI,UAAU,MAAM,OAAO;AAAA,QAC/B,KAAK,MAAM,QAAQ;AAAA,QACnB,OAAO,IAAI,aAAa,MAAM,OAAO;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB;AAClB,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,UAAU;AAAA,QACnB,KAAK,MAAM,QAAQ;AAAA,QACnB,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,oBAAgB,4BAAS,OAAO;AAAA,QAChC,kBAAc,4BAAS,OAAO;AAAA,QAC9B,IAAI,IAAI,eAAe,MAAM,OAAO;AAAA,MACtC,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB;AACd,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,MAAM;AAAA,QACf,KAAK,MAAM,QAAQ;AAAA,QACnB,IAAI,IAAI,WAAW,MAAM,OAAO;AAAA,QAChC,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAgB,4BAAS,OAAO;AAAA,QAChC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,kBAAc,4BAAS,OAAO;AAAA,QAC9B,OAAO,EAAE,UAAU,WAAW;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IAEA,cAAcC,QAAO;AACnB,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAIA;AAE5B,YAAM,QAAQ,YAAY,KAAK;AAC/B,YAAM,QAAQ,gBAAgB,MAAM,SAAS,KAAK;AAClD,YAAM,YAAY,MAAM,QAAQ,mBAAmB,EAAE,OAAO,MAAM,CAAC;AACnE,YAAM,aAAa,MAAM,QAAQ,SAAS,IAAI,UAAU,KAAK,IAAI;AACjE,YAAM,kBAAkB,MAAM,QAAQ,cAAc,IAAI,eAAe,KAAK,IAAI;AAEhF,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,MAAM;AAAA,QACf,KAAK,MAAM,QAAQ;AAAA,QACnB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,IAAI,IAAI,WAAW,MAAM,SAAS,KAAK;AAAA,QACvC,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,kBAAc,4BAAS,WAAW,MAAM,QAAQ,iBAAiB,KAAK;AAAA,QACtE,WAAW;AAAA,QACX,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,cAAc;AAAA,QACd,mBAAmB,mBAAmB,IAAI,WAAW,MAAM,OAAO;AAAA,QAClE,oBAAoB,MAAM,QAAQ;AAAA,QAClC,iBAAiB,MAAM;AAAA,QACvB,iBAAiB,MAAM;AAAA,QACvB,iBAAiB,YAAY,KAAK;AAAA,QAClC,kBAAkB;AAAA,QAClB,MAAM;AAAA,QACN,UAAU,WAAW,SAAY;AAAA,QACjC,OAAO,IAAI,cAAc,MAAM,SAAS,KAAK;AAAA,QAC7C,cAAc,OAAO;AACnB,cAAI,CAAC;AAAa;AAClB,eAAK,EAAE,MAAM,sBAAsB,MAAM,CAAC;AAC1C,gBAAM,gBAAgB;AAAA,QACxB;AAAA,QACA,SAAS;AACP,cAAI,CAAC;AAAa;AAClB,eAAK,MAAM;AAAA,QACb;AAAA,QACA,UAAU;AACR,cAAI,CAAC;AAAa;AAClB,eAAK,EAAE,MAAM,SAAS,MAAM,CAAC;AAAA,QAC/B;AAAA,QACA,UAAU,OAAO;AACf,cAAI,MAAM;AAAkB;AAC5B,cAAI,CAAC;AAAa;AAElB,gBAAM,WAAO,gCAAa,KAAK,IAAI,MAAM,QAAQ;AAEjD,gBAAM,SAAsB;AAAA,YAC1B,UAAU;AACR,kBAAI;AAAc;AAClB,mBAAK,EAAE,MAAM,aAAa,MAAM,KAAK,UAAU,CAAC;AAAA,YAClD;AAAA,YACA,YAAY;AACV,kBAAI;AAAc;AAClB,mBAAK,EAAE,MAAM,aAAa,MAAM,KAAK,YAAY,CAAC;AAAA,YACpD;AAAA,YACA,YAAY;AACV,kBAAI;AAAY;AAChB,mBAAK,EAAE,MAAM,aAAa,MAAM,KAAK,YAAY,CAAC;AAAA,YACpD;AAAA,YACA,aAAa;AACX,kBAAI;AAAY;AAChB,mBAAK,EAAE,MAAM,aAAa,MAAM,KAAK,aAAa,CAAC;AAAA,YACrD;AAAA,YACA,SAAS;AACP,mBAAK,EAAE,MAAM,aAAa,MAAM,KAAK,SAAS,CAAC;AAAA,YACjD;AAAA,YACA,WAAW;AACT,mBAAK,EAAE,MAAM,aAAa,MAAM,KAAK,WAAW,CAAC;AAAA,YACnD;AAAA,YACA,OAAO;AACL,mBAAK,MAAM;AAAA,YACb;AAAA,YACA,MAAM;AACJ,mBAAK,KAAK;AAAA,YACZ;AAAA,UACF;AAEA,gBAAM,UAAM,+BAAY,OAAO,MAAM,OAAO;AAC5C,gBAAM,OAAO,OAAO,GAAG;AAEvB,cAAI,MAAM;AACR,iBAAK,KAAK;AACV,kBAAM,eAAe;AACrB,kBAAM,gBAAgB;AAAA,UACxB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoBA,QAAO;AACzB,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAIA;AAC5B,aAAO,UAAU,MAAM;AAAA,QACrB,MACE,SAAS,MAAM,QAAQ,OAAO,MAAM,QAAQ,QAAQ,MAAM,QAAQ,MAAM,SAAS,IAAI,OAAO,MAAM;AAAA,QACpG,MAAM,MAAM,QAAQ;AAAA,QACpB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,cAAc,MAAM,QAAQ,MAAM,KAAK;AAAA,QACvC,IAAI,IAAI,iBAAiB,MAAM,SAAS,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB;AACd,aAAO,UAAU,QAAQ;AAAA,QACvB,IAAI,IAAI,WAAW,MAAM,OAAO;AAAA,QAChC,GAAG,MAAM,MAAM;AAAA,QACf,KAAK,MAAM,QAAQ;AAAA,QACnB,kBAAc,4BAAS,OAAO;AAAA,QAC9B,oBAAgB,4BAAS,OAAO;AAAA,QAChC,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,OAAO,IAAI,cAAc,MAAM,OAAO;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB;AAChB,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,QAAQ;AAAA,QACjB,KAAK,MAAM,QAAQ;AAAA,QACnB,IAAI,IAAI,aAAa,MAAM,OAAO;AAAA,QAClC,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,oBAAoB,MAAM,QAAQ;AAAA,QAClC,oBAAgB,4BAAS,OAAO;AAAA,QAChC,kBAAc,4BAAS,OAAO;AAAA,QAC9B,OAAO,IAAI,gBAAgB;AAAA,QAC3B,cAAc,OAAO;AACnB,cAAI,CAAC;AAAa;AAClB,cAAI,KAAC,+BAAY,KAAK;AAAG;AACzB,kBAAI,iCAAc,KAAK;AAAG;AAE1B,gBAAM,YAAQ,iCAAc,KAAK;AACjC,eAAK,EAAE,MAAM,gBAAgB,MAAM,CAAC;AAEpC,gBAAM,eAAe;AACrB,gBAAM,gBAAgB;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB;AACpB,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,YAAY;AAAA,QACrB,MAAM;AAAA,QACN,KAAK,MAAM,QAAQ;AAAA,QACnB,eAAe;AAAA,QACf,oBAAoB,MAAM,QAAQ;AAAA,QAClC,OAAO,IAAI,oBAAoB;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IAEA,eAAeA,QAAO;AACpB,YAAM,QAAQ,IAAI,eAAe,MAAM,SAASA,OAAM,KAAK;AAC3D,UAAI;AAEJ,YAAM,QAAQ,MAAM,QAAQ,MAAM,CAAC;AACnC,YAAM,OAAO,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM,SAAS,CAAC;AAE/D,UAAIA,OAAM,QAAQ,OAAO;AACvB,sBAAc;AAAA,MAChB,WAAWA,OAAM,QAAQ,MAAM;AAC7B,sBAAc;AAAA,MAChB,OAAO;AACL,sBAAc;AAAA,MAChB;AAEA,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,OAAO;AAAA,QAChB,IAAI,IAAI,YAAY,MAAM,SAASA,OAAM,KAAK;AAAA,QAC9C,MAAM;AAAA,QACN,KAAK,MAAM,QAAQ;AAAA,QACnB,oBAAoB,MAAM,QAAQ;AAAA,QAClC,cAAcA,OAAM;AAAA,QACpB,qBAAiB,4BAAS,QAAQ;AAAA,QAClC,cAAc;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AI9TA,kBAA8B;AAC9B,IAAAC,oBAAiC;AACjC,IAAAC,oBAAoB;AACpB,0BAAoD;AACpD,IAAAC,qBAAiC;AACjC,IAAAC,wBAAgC;AAChC,mBAAiC;AAajC,IAAM,cAAc,CAAC,GAAuB,MAA0B;AACpE,SAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG;AACnD;AAEO,SAAS,QAAQ,aAAiC;AACvD,QAAM,UAAM,sBAAQ,WAAW;AAC/B,aAAO;AAAA,IACL;AAAA,MACE,IAAI;AAAA,MACJ,SAAS;AAAA,MAET,SAAS;AAAA,QACP,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO,CAAC,CAAC;AAAA,QACT,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,KAAK;AAAA,QACL,uBAAuB;AAAA,QACvB,UAAU;AAAA,QACV,GAAG;AAAA,QACH,cAAc;AAAA,QACd,kBAAkB;AAAA,MACpB;AAAA,MAEA,UAAU;AAAA,QACR,cAAc,CAACC,SAAQA,KAAI,gBAAgB;AAAA,QAC3C,YAAY,CAACA,SAAQA,KAAI,gBAAgB;AAAA,QACzC,OAAO,CAACA,SAAQA,KAAI,gBAAgB,gBAAgBA,KAAI,QAAQ;AAAA,QAChE,YAAY,CAACA,SAAQ,CAAC,CAACA,KAAI,YAAYA,KAAI;AAAA,QAC3C,eAAe,CAACA,SAAQ,EAAEA,KAAI,YAAYA,KAAI;AAAA,QAC9C,sBAAsB,CAACA,SAAQA,KAAI,aAAa;AAAA,QAChD,aAAaA,MAAK;AAChB,iBAAOA,KAAI,MAAM,IAAI,CAAC,UAAU,UAAM,uCAAgB,OAAOA,KAAI,KAAKA,KAAI,GAAG,CAAC;AAAA,QAChF;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,OAAO,CAAC,mBAAmB;AAAA,MAC7B;AAAA,MAEA,OAAO,CAAC,aAAa;AAAA,MAErB,YAAY,CAAC,yBAAyB,iBAAiB;AAAA,MAEvD,IAAI;AAAA,QACF,WAAW;AAAA,UACT;AAAA,YACE,OAAO;AAAA,YACP,SAAS;AAAA,UACX;AAAA,UACA,EAAE,SAAS,WAAW;AAAA,QACxB;AAAA,QACA,WAAW;AAAA,UACT,SAAS;AAAA,QACX;AAAA,QACA,WAAW;AAAA,UACT,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,IAAI;AAAA,YACF,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,SAAS,CAAC,wBAAwB,mBAAmB,kBAAkB;AAAA,YACzE;AAAA,YACA,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS;AAAA,YACX;AAAA,YACA,oBAAoB;AAAA,cAClB,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB,kBAAkB;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,OAAO;AAAA,UACP,IAAI;AAAA,YACF,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,SAAS,CAAC,wBAAwB,mBAAmB,kBAAkB;AAAA,YACzE;AAAA,YACA,oBAAoB;AAAA,cAClB,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB,kBAAkB;AAAA,YACjD;AAAA,YACA,WAAW;AAAA,cACT,SAAS,CAAC,yBAAyB,mBAAmB;AAAA,YACxD;AAAA,YACA,WAAW;AAAA,cACT,SAAS,CAAC,yBAAyB,mBAAmB;AAAA,YACxD;AAAA,YACA,MAAM;AAAA,cACJ,SAAS,CAAC,wBAAwB,mBAAmB;AAAA,YACvD;AAAA,YACA,KAAK;AAAA,cACH,SAAS,CAAC,wBAAwB,mBAAmB;AAAA,YACvD;AAAA,YACA,MAAM;AAAA,cACJ,QAAQ;AAAA,cACR,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,IAAI;AAAA,YACF,YAAY;AAAA,cACV,QAAQ;AAAA,cACR,SAAS;AAAA,YACX;AAAA,YACA,cAAc;AAAA,cACZ,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,QACN,UAAU,CAAC,MAAM,QAAQ,IAAI,SAAS;AAAA,MACxC;AAAA,MACA,YAAY;AAAA,QACV,sBAAsBA,MAAK,MAAM,EAAE,eAAe,GAAG;AACnD,qBAAO,qCAAiB,IAAI,UAAUA,IAAG,GAAG;AAAA,YAC1C,yBAAyB,UAAU;AACjC,cAAAA,KAAI,mBAAmB;AAAA,YACzB;AAAA,YACA,cAAc;AACZ,kBAAI,MAAMA,MAAK,eAAe,KAAK;AAAA,YACrC;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QAEA,iBAAiBA,MAAK,MAAM,EAAE,KAAK,GAAG;AACpC,qBAAO,oCAAiB,IAAI,OAAOA,IAAG,GAAG;AAAA,YACvC,cAAc,MAAM;AAClB,mBAAK,EAAE,MAAM,gBAAgB,OAAO,KAAK,MAAM,CAAC;AAAA,YAClD;AAAA,YACA,cAAc;AACZ,mBAAK,YAAY;AAAA,YACnB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,gBAAgBA,MAAK;AACnB,cAAIA,KAAI,mBAAmB,aAAaA,KAAI;AAAW;AAEvD,qBAAO,uCAAkB;AAAA,YACvB,UAAU,MAAM,IAAI,YAAYA,IAAG;AAAA,YACnC,iBAAiB;AAAA,YACjB,SAAS,MAAM;AACb,kBAAI,CAAC,QAAQ,YAAYA,KAAI,WAAW,IAAI;AAAG;AAC/C,cAAAA,KAAI,YAAY;AAAA,YAClB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,kBAAkBA,MAAK;AACrB,UAAAA,KAAI,MAAM,QAAQ,CAAC,OAAO,UAAU;AAClC,kBAAM,UAAU,IAAI,iBAAiBA,MAAK,KAAK;AAC/C,gBAAI,SAAS,SAAS,KAAK;AAAA,UAC7B,CAAC;AAAA,QACH;AAAA,QACA,kBAAkBA,MAAK;AACrB,UAAAA,KAAI,mBAAmB,EAAE,OAAOA,KAAI,MAAM,CAAC;AAAA,QAC7C;AAAA,QACA,qBAAqBA,MAAK,KAAK;AAC7B,gBAAM,aAAa,IAAI,kBAAkBA,MAAK,IAAI,KAAK;AACvD,cAAI,cAAc;AAAM;AAExB,gBAAM,eAAe,gBAAgBA,MAAK,UAAU;AACpD,cAAI,aAAaA,MAAK,YAAY;AAAA,QACpC;AAAA,QACA,gBAAgBA,MAAK,KAAK;AACxB,cAAI,aAAaA,MAAK,IAAI,KAAK;AAAA,QACjC;AAAA,QACA,kBAAkBA,MAAK;AACrB,cAAI,aAAaA,MAAK,EAAE;AAAA,QAC1B;AAAA,QACA,gBAAgBA,MAAK,KAAK;AACxB,gBAAM,eAAe,IAAI,kBAAkBA,MAAK,IAAI,KAAK;AACzD,cAAI,gBAAgB;AAAM;AAE1B,gBAAM,QAAQ,eAAeA,MAAK,cAAcA,KAAI,YAAY;AAChE,cAAI,aAAaA,MAAKA,KAAI,cAAc,KAAK;AAAA,QAC/C;AAAA,QACA,iBAAiBA,MAAK;AACpB,qCAAI,MAAM;AACR,kBAAM,UAAU,IAAI,WAAWA,MAAKA,KAAI,YAAY;AACpD,qBAAS,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,UACxC,CAAC;AAAA,QACH;AAAA,QACA,sBAAsBA,MAAK,KAAK;AAC9B,gBAAM,QAAQ,UAAUA,MAAK,IAAI,OAAO,IAAI,IAAI;AAChD,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,sBAAsBA,MAAK,KAAK;AAC9B,gBAAM,QAAQ,UAAUA,MAAK,IAAI,OAAO,IAAI,IAAI;AAChD,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,qBAAqBA,MAAK;AACxB,gBAAM,EAAE,IAAI,IAAI,gBAAgBA,MAAKA,KAAI,YAAY;AACrD,cAAI,aAAaA,MAAKA,KAAI,cAAc,GAAG;AAAA,QAC7C;AAAA,QACA,qBAAqBA,MAAK;AACxB,gBAAM,EAAE,IAAI,IAAI,gBAAgBA,MAAKA,KAAI,YAAY;AACrD,cAAI,aAAaA,MAAKA,KAAI,cAAc,GAAG;AAAA,QAC7C;AAAA,QACA,YAAYA,MAAK;AACf,gBAAM,QAAQ,gBAAgBA,MAAKA,KAAI,KAAK;AAC5C,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,gBAAgBA,MAAK,KAAK;AACxB,gBAAM,QAAQ,eAAeA,MAAK,IAAI,OAAO,IAAI,KAAK;AACtD,cAAI,aAAaA,MAAK,IAAI,OAAO,KAAK;AAAA,QACxC;AAAA,QACA,SAASA,MAAK,KAAK;AACjB,gBAAM,QAAQ,gBAAgBA,MAAK,IAAI,KAAK;AAC5C,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,SAAS;AAAA,EACb,QAAQ,CAAC,QAAwB;AAC/B,QAAI,gBAAgB;AAAA,MAClB,OAAO,MAAM,KAAK,IAAI,KAAK;AAAA,IAC7B,CAAC;AACD,QAAI,oBAAoB,GAAG;AAAA,EAC7B;AAAA,EACA,aAAa,CAAC,QAAwB;AACpC,QAAI,gBAAgB;AAAA,MAClB,OAAO,MAAM,KAAK,IAAI,KAAK;AAAA,MAC3B,cAAc,IAAI;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AAEA,IAAM,MAAM;AAAA,EACV,cAAc,CAAC,KAAqB,OAAe,UAAkB;AACnE,YAAI,sBAAQ,IAAI,MAAM,KAAK,GAAG,KAAK;AAAG;AACtC,QAAI,MAAM,KAAK,IAAI;AACnB,WAAO,OAAO,GAAG;AAAA,EACnB;AAAA,EACA,OAAO,CAAC,KAAqB,UAAoB;AAC/C,YAAI,sBAAQ,IAAI,OAAO,KAAK;AAAG;AAC/B,gBAAY,IAAI,OAAO,KAAK;AAC5B,WAAO,OAAO,GAAG;AAAA,EACnB;AAAA,EACA,cAAc,CAAC,KAAqB,UAAkB;AACpD,YAAI,sBAAQ,IAAI,cAAc,KAAK;AAAG;AACtC,QAAI,eAAe;AACnB,WAAO,YAAY,GAAG;AAAA,EACxB;AACF;;;AC3RA,mBAA4B;AAC5B,IAAAC,gBAAiC;AAG1B,IAAM,YAAQ,0BAAgC,EAAE;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,iBAAa,gCAA8C,KAAK;AAEtE,IAAM,iBAAa,0BAAwB,EAAE,CAAC,SAAS,MAAM,CAAC;AAC9D,IAAM,sBAAkB,gCAA6B,UAAU;","names":["import_dom_event","import_dom_query","import_numeric_range","import_numeric_range","getValue","import_numeric_range","props","import_dom_event","import_dom_query","import_form_utils","import_numeric_range","ctx","import_utils"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/slider.anatomy.ts","../src/slider.connect.ts","../src/slider.dom.ts","../src/slider.style.ts","../src/slider.utils.ts","../src/slider.machine.ts","../src/slider.props.ts"],"sourcesContent":["export { anatomy } from \"./slider.anatomy\"\nexport { connect } from \"./slider.connect\"\nexport { machine } from \"./slider.machine\"\nexport * from \"./slider.props\"\nexport type {\n MachineApi as Api,\n UserDefinedContext as Context,\n ElementIds,\n FocusChangeDetails,\n MarkerProps,\n ThumbProps,\n ValueChangeDetails,\n ValueTextDetails,\n} from \"./slider.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"valueText\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\n\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n isLeftClick,\n isModifierKey,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { ariaAttr, dataAttr } from \"@zag-js/dom-query\"\nimport { getPercentValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./slider.anatomy\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineApi, Send, State } from \"./slider.types\"\nimport { getRangeAtIndex } from \"./slider.utils\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const ariaLabel = state.context[\"aria-label\"]\n const ariaLabelledBy = state.context[\"aria-labelledby\"]\n const sliderValue = state.context.value\n\n const focused = state.matches(\"focus\")\n const dragging = state.matches(\"dragging\")\n\n const disabled = state.context.isDisabled\n const invalid = state.context.invalid\n const interactive = state.context.isInteractive\n\n const isHorizontal = state.context.orientation === \"horizontal\"\n const isVertical = state.context.orientation === \"vertical\"\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n return {\n value: state.context.value,\n dragging,\n focused,\n setValue(value) {\n send({ type: \"SET_VALUE\", value: value })\n },\n getThumbValue(index) {\n return sliderValue[index]\n },\n setThumbValue(index, value) {\n send({ type: \"SET_VALUE\", index, value })\n },\n getValuePercent: getValuePercentFn,\n getPercentValue: getPercentValueFn,\n getThumbPercent(index) {\n return getValuePercentFn(sliderValue[index])\n },\n setThumbPercent(index, percent) {\n const value = getPercentValueFn(percent)\n send({ type: \"SET_VALUE\", index, value })\n },\n getThumbMin(index) {\n return getRangeAtIndex(state.context, index).min\n },\n getThumbMax(index) {\n return getRangeAtIndex(state.context, index).max\n },\n increment(index) {\n send({ type: \"INCREMENT\", index })\n },\n decrement(index) {\n send({ type: \"DECREMENT\", index })\n },\n focus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index: 0 })\n },\n\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-dragging\": dataAttr(dragging),\n \"data-focus\": dataAttr(focused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context, 0),\n onClick(event) {\n if (!interactive) return\n event.preventDefault()\n dom.getFirstEl(state.context)?.focus()\n },\n style: {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n },\n })\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-dragging\": dataAttr(dragging),\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n })\n },\n\n getValueTextProps() {\n return normalize.element({\n ...parts.valueText.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getValueTextId(state.context),\n })\n },\n\n getTrackProps() {\n return normalize.element({\n ...parts.track.attrs,\n dir: state.context.dir,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-dragging\": dataAttr(dragging),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused),\n style: { position: \"relative\" },\n })\n },\n\n getThumbProps(props) {\n const { index = 0, name } = props\n\n const value = sliderValue[index]\n const range = getRangeAtIndex(state.context, index)\n const valueText = state.context.getAriaValueText?.({ value, index })\n const _ariaLabel = Array.isArray(ariaLabel) ? ariaLabel[index] : ariaLabel\n const _ariaLabelledBy = Array.isArray(ariaLabelledBy) ? ariaLabelledBy[index] : ariaLabelledBy\n\n return normalize.element({\n ...parts.thumb.attrs,\n dir: state.context.dir,\n \"data-index\": index,\n \"data-name\": name,\n id: dom.getThumbId(state.context, index),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused && state.context.focusedIndex === index),\n \"data-dragging\": dataAttr(dragging && state.context.focusedIndex === index),\n draggable: false,\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": _ariaLabel,\n \"aria-labelledby\": _ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": range.max,\n \"aria-valuemin\": range.min,\n \"aria-valuenow\": sliderValue[index],\n \"aria-valuetext\": valueText,\n role: \"slider\",\n tabIndex: disabled ? undefined : 0,\n style: dom.getThumbStyle(state.context, index),\n onPointerDown(event) {\n if (!interactive) return\n send({ type: \"THUMB_POINTER_DOWN\", index })\n event.stopPropagation()\n },\n onBlur() {\n if (!interactive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event) * state.context.step\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n if (isHorizontal) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowUp\" })\n },\n ArrowDown() {\n if (isHorizontal) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowDown\" })\n },\n ArrowLeft() {\n if (isVertical) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowLeft\" })\n },\n ArrowRight() {\n if (isVertical) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowRight\" })\n },\n PageUp() {\n send({ type: \"ARROW_INC\", step, src: \"PageUp\" })\n },\n PageDown() {\n send({ type: \"ARROW_DEC\", step, src: \"PageDown\" })\n },\n Home() {\n send(\"HOME\")\n },\n End() {\n send(\"END\")\n },\n }\n\n const key = getEventKey(event, state.context)\n const exec = keyMap[key]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n event.stopPropagation()\n }\n },\n })\n },\n\n getHiddenInputProps(props) {\n const { index = 0, name } = props\n return normalize.input({\n name:\n name ?? (state.context.name ? state.context.name + (state.context.value.length > 1 ? \"[]\" : \"\") : undefined),\n form: state.context.form,\n type: \"text\",\n hidden: true,\n defaultValue: state.context.value[index],\n id: dom.getHiddenInputId(state.context, index),\n })\n },\n\n getRangeProps() {\n return normalize.element({\n id: dom.getRangeId(state.context),\n ...parts.range.attrs,\n dir: state.context.dir,\n \"data-dragging\": dataAttr(dragging),\n \"data-focus\": dataAttr(focused),\n \"data-invalid\": dataAttr(invalid),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n })\n },\n\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"data-dragging\": dataAttr(dragging),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n style: dom.getControlStyle(),\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n })\n },\n\n getMarkerGroupProps() {\n return normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n })\n },\n\n getMarkerProps(props) {\n const style = dom.getMarkerStyle(state.context, props.value)\n let markerState: \"over-value\" | \"under-value\" | \"at-value\"\n\n const first = state.context.value[0]\n const last = state.context.value[state.context.value.length - 1]\n\n if (props.value < first) {\n markerState = \"under-value\"\n } else if (props.value > last) {\n markerState = \"over-value\"\n } else {\n markerState = \"at-value\"\n }\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, props.value),\n role: \"presentation\",\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n \"data-value\": props.value,\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint, type Point } from \"@zag-js/dom-event\"\nimport { createScope, queryAll } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styleGetterFns } from \"./slider.style\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styleGetterFns,\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx, index: number) => ctx.ids?.thumb?.(index) ?? `slider:${ctx.id}:thumb:${index}`,\n getHiddenInputId: (ctx: Ctx, index: number) => `slider:${ctx.id}:input:${index}`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.range ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getValueTextId: (ctx: Ctx) => ctx.ids?.valueText ?? `slider:${ctx.id}:valueText`,\n getMarkerId: (ctx: Ctx, value: number) => ctx.ids?.marker?.(value) ?? `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx, index: number) => dom.getById(ctx, dom.getThumbId(ctx, index)),\n getHiddenInputEl: (ctx: Ctx, index: number) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx, index)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getElements: (ctx: Ctx) => queryAll(dom.getControlEl(ctx), \"[role=slider]\"),\n getFirstEl: (ctx: Ctx) => dom.getElements(ctx)[0],\n getRangeEl: (ctx: Ctx) => dom.getById(ctx, dom.getRangeId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point) {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n const relativePoint = getRelativePoint(point, controlEl)\n const percent = relativePoint.getPercentValue({\n orientation: ctx.orientation,\n dir: ctx.dir,\n inverted: { y: true },\n })\n return getPercentValue(percent, ctx.min, ctx.max, ctx.step)\n },\n dispatchChangeEvent(ctx: Ctx) {\n const valueArray = Array.from(ctx.value)\n valueArray.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n if (!inputEl) return\n dispatchInputValueEvent(inputEl, { value })\n })\n },\n})\n","import { getValuePercent, getValueTransformer } from \"@zag-js/numeric-range\"\nimport type { Style } from \"@zag-js/types\"\nimport type { MachineContext as Ctx, SharedContext } from \"./slider.types\"\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getBounds<T>(value: T[]): [T, T] {\n const firstValue = value[0]\n const lastThumb = value[value.length - 1]\n return [firstValue, lastThumb]\n}\n\nexport function getRangeOffsets(ctx: Ctx) {\n const [firstPercent, lastPercent] = getBounds(ctx.valuePercent)\n\n if (ctx.valuePercent.length === 1) {\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent[0] < 50\n const start = isNegative ? `${ctx.valuePercent[0]}%` : \"50%\"\n const end = isNegative ? \"50%\" : `${100 - ctx.valuePercent[0]}%`\n\n return { start, end }\n }\n\n return { start: \"0%\", end: `${100 - lastPercent}%` }\n }\n\n return { start: `${firstPercent}%`, end: `${100 - lastPercent}%` }\n}\n\nfunction getRangeStyle(ctx: Pick<SharedContext, \"isVertical\" | \"isRtl\">): Style {\n if (ctx.isVertical) {\n return {\n position: \"absolute\",\n bottom: \"var(--slider-range-start)\",\n top: \"var(--slider-range-end)\",\n }\n }\n\n return {\n position: \"absolute\",\n [ctx.isRtl ? \"right\" : \"left\"]: \"var(--slider-range-start)\",\n [ctx.isRtl ? \"left\" : \"right\"]: \"var(--slider-range-end)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Thumb style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getVerticalThumbOffset(ctx: SharedContext) {\n const { height = 0 } = ctx.thumbSize ?? {}\n const getValue = getValueTransformer([ctx.min, ctx.max], [-height / 2, height / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getHorizontalThumbOffset(ctx: SharedContext) {\n const { width = 0 } = ctx.thumbSize ?? {}\n\n if (ctx.isRtl) {\n const getValue = getValueTransformer([ctx.max, ctx.min], [-width / 2, width / 2])\n return -1 * parseFloat(getValue(ctx.value).toFixed(2))\n }\n\n const getValue = getValueTransformer([ctx.min, ctx.max], [-width / 2, width / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getOffset(ctx: SharedContext, percent: number) {\n if (ctx.thumbAlignment === \"center\") return `${percent}%`\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getThumbOffset(ctx: SharedContext) {\n let percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n return getOffset(ctx, percent)\n}\n\nfunction getVisibility(ctx: Ctx) {\n let visibility: \"visible\" | \"hidden\" = \"visible\"\n if (ctx.thumbAlignment === \"contain\" && !ctx.hasMeasuredThumbSize) {\n visibility = \"hidden\"\n }\n return visibility\n}\n\nfunction getThumbStyle(ctx: Ctx, index: number): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : \"insetInlineStart\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: `var(--slider-thumb-offset-${index})`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Control style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getControlStyle(): Style {\n return {\n touchAction: \"none\",\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n position: \"relative\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Root style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRootStyle(ctx: Ctx): Style {\n const range = getRangeOffsets(ctx)\n\n const offsetStyles = ctx.value.reduce<Style>((styles, value, index) => {\n const offset = getThumbOffset({ ...ctx, value })\n return { ...styles, [`--slider-thumb-offset-${index}`]: offset }\n }, {})\n\n return {\n ...offsetStyles,\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : ctx.isRtl ? \"translateX(50%)\" : \"translateX(-50%)\",\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(\n ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\" | \"thumbAlignment\" | \"hasMeasuredThumbSize\">,\n value: number,\n): Style {\n return {\n // @ts-expect-error\n visibility: getVisibility(ctx),\n position: \"absolute\",\n pointerEvents: \"none\",\n // @ts-expect-error\n [ctx.isHorizontal ? \"insetInlineStart\" : \"bottom\"]: getThumbOffset({ ...ctx, value }),\n translate: \"var(--tx) var(--ty)\",\n \"--tx\": ctx.isHorizontal ? (ctx.isRtl ? \"50%\" : \"-50%\") : \"0%\",\n \"--ty\": !ctx.isHorizontal ? \"50%\" : \"0%\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerGroupStyle(): Style {\n return {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n pointerEvents: \"none\",\n position: \"relative\",\n }\n}\n\nexport const styleGetterFns = {\n getRootStyle,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getMarkerStyle,\n getMarkerGroupStyle,\n}\n","import {\n clampValue,\n getClosestValueIndex,\n getNextStepValue,\n getPreviousStepValue,\n getValueRanges,\n snapValueToStep,\n} from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function normalizeValues(ctx: Ctx, nextValues: number[]) {\n return nextValues.map((value, index, values) => {\n return constrainValue({ ...ctx, value: values }, value, index)\n })\n}\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function getRangeAtIndex(ctx: Ctx, index: number) {\n return getValueRanges(ctx.value, ctx.min, ctx.max, ctx.minStepsBetweenThumbs)[index]\n}\n\nexport function constrainValue(ctx: Ctx, value: number, index: number) {\n const range = getRangeAtIndex(ctx, index)\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, range.min, range.max)\n}\n\nexport function decrement(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getPreviousStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function increment(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getNextStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function getClosestIndex(ctx: Ctx, pointValue: number) {\n return getClosestValueIndex(ctx.value, pointValue)\n}\n\nexport function assignArray(current: number[], next: number[]) {\n for (let i = 0; i < next.length; i++) {\n const value = next[i]\n current[i] = value\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementsSize, type ElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact, isEqual } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport {\n assignArray,\n constrainValue,\n decrement,\n getClosestIndex,\n getRangeAtIndex,\n increment,\n normalizeValues,\n} from \"./slider.utils\"\n\nconst isEqualSize = (a: ElementSize | null, b: ElementSize | null) => {\n return a?.width === b?.width && a?.height === b?.height\n}\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n min: 0,\n max: 100,\n step: 1,\n value: [0],\n origin: \"start\",\n orientation: \"horizontal\",\n dir: \"ltr\",\n minStepsBetweenThumbs: 0,\n disabled: false,\n readOnly: false,\n ...ctx,\n focusedIndex: -1,\n fieldsetDisabled: false,\n },\n\n computed: {\n isHorizontal: (ctx) => ctx.orientation === \"horizontal\",\n isVertical: (ctx) => ctx.orientation === \"vertical\",\n isRtl: (ctx) => ctx.orientation === \"horizontal\" && ctx.dir === \"rtl\",\n isDisabled: (ctx) => !!ctx.disabled || ctx.fieldsetDisabled,\n isInteractive: (ctx) => !(ctx.readOnly || ctx.isDisabled),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize != null,\n valuePercent(ctx) {\n return ctx.value.map((value) => 100 * getValuePercent(value, ctx.min, ctx.max))\n },\n },\n\n watch: {\n value: [\"syncInputElements\"],\n },\n\n entry: [\"coarseValue\"],\n\n activities: [\"trackFormControlState\", \"trackThumbsSize\"],\n\n on: {\n SET_VALUE: [\n {\n guard: \"hasIndex\",\n actions: \"setValueAtIndex\",\n },\n { actions: \"setValue\" },\n ],\n INCREMENT: {\n actions: \"incrementThumbAtIndex\",\n },\n DECREMENT: {\n actions: \"decrementThumbAtIndex\",\n },\n },\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n FOCUS: {\n target: \"focus\",\n actions: \"setFocusedIndex\",\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n },\n },\n focus: {\n entry: \"focusActiveThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n ARROW_DEC: {\n actions: [\"decrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n ARROW_INC: {\n actions: [\"incrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n HOME: {\n actions: [\"setFocusedThumbToMin\", \"invokeOnChangeEnd\"],\n },\n END: {\n actions: [\"setFocusedThumbToMax\", \"invokeOnChangeEnd\"],\n },\n BLUR: {\n target: \"idle\",\n actions: \"clearFocusedIndex\",\n },\n },\n },\n dragging: {\n entry: \"focusActiveThumb\",\n activities: \"trackPointerMove\",\n on: {\n POINTER_UP: {\n target: \"focus\",\n actions: \"invokeOnChangeEnd\",\n },\n POINTER_MOVE: {\n actions: \"setPointerValue\",\n },\n },\n },\n },\n },\n {\n guards: {\n hasIndex: (_ctx, evt) => evt.index != null,\n },\n activities: {\n trackFormControlState(ctx, _evt, { initialContext }) {\n return trackFormControl(dom.getRootEl(ctx), {\n onFieldsetDisabledChange(disabled) {\n ctx.fieldsetDisabled = disabled\n },\n onFormReset() {\n set.value(ctx, initialContext.value)\n },\n })\n },\n\n trackPointerMove(ctx, _evt, { send }) {\n return trackPointerMove(dom.getDoc(ctx), {\n onPointerMove(info) {\n send({ type: \"POINTER_MOVE\", point: info.point })\n },\n onPointerUp() {\n send(\"POINTER_UP\")\n },\n })\n },\n trackThumbsSize(ctx) {\n if (ctx.thumbAlignment !== \"contain\" || ctx.thumbSize) return\n\n return trackElementsSize({\n getNodes: () => dom.getElements(ctx),\n observeMutation: true,\n callback(size) {\n if (!size || isEqualSize(ctx.thumbSize, size)) return\n ctx.thumbSize = size\n },\n })\n },\n },\n actions: {\n syncInputElements(ctx) {\n ctx.value.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n dom.setValue(inputEl, value)\n })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onValueChangeEnd?.({ value: ctx.value })\n },\n setClosestThumbIndex(ctx, evt) {\n const pointValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointValue == null) return\n\n const focusedIndex = getClosestIndex(ctx, pointValue)\n set.focusedIndex(ctx, focusedIndex)\n },\n setFocusedIndex(ctx, evt) {\n set.focusedIndex(ctx, evt.index)\n },\n clearFocusedIndex(ctx) {\n set.focusedIndex(ctx, -1)\n },\n setPointerValue(ctx, evt) {\n const pointerValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointerValue == null) return\n\n const value = constrainValue(ctx, pointerValue, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, value)\n },\n focusActiveThumb(ctx) {\n raf(() => {\n const thumbEl = dom.getThumbEl(ctx, ctx.focusedIndex)\n thumbEl?.focus({ preventScroll: true })\n })\n },\n decrementThumbAtIndex(ctx, evt) {\n const value = decrement(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n incrementThumbAtIndex(ctx, evt) {\n const value = increment(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n setFocusedThumbToMin(ctx) {\n const { min } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, min)\n },\n setFocusedThumbToMax(ctx) {\n const { max } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, max)\n },\n coarseValue(ctx) {\n const value = normalizeValues(ctx, ctx.value)\n set.value(ctx, value)\n },\n setValueAtIndex(ctx, evt) {\n const value = constrainValue(ctx, evt.value, evt.index)\n set.valueAtIndex(ctx, evt.index, value)\n },\n setValue(ctx, evt) {\n const value = normalizeValues(ctx, evt.value)\n set.value(ctx, value)\n },\n },\n },\n )\n}\n\nconst invoke = {\n change: (ctx: MachineContext) => {\n ctx.onValueChange?.({\n value: Array.from(ctx.value),\n })\n dom.dispatchChangeEvent(ctx)\n },\n focusChange: (ctx: MachineContext) => {\n ctx.onFocusChange?.({\n value: Array.from(ctx.value),\n focusedIndex: ctx.focusedIndex,\n })\n },\n}\n\nconst set = {\n valueAtIndex: (ctx: MachineContext, index: number, value: number) => {\n if (isEqual(ctx.value[index], value)) return\n ctx.value[index] = value\n invoke.change(ctx)\n },\n value: (ctx: MachineContext, value: number[]) => {\n if (isEqual(ctx.value, value)) return\n assignArray(ctx.value, value)\n invoke.change(ctx)\n },\n focusedIndex: (ctx: MachineContext, index: number) => {\n if (isEqual(ctx.focusedIndex, index)) return\n ctx.focusedIndex = index\n invoke.focusChange(ctx)\n },\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { ThumbProps, UserDefinedContext } from \"./slider.types\"\n\nexport const props = createProps<UserDefinedContext>()([\n \"aria-label\",\n \"aria-labelledby\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getAriaValueText\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"max\",\n \"min\",\n \"minStepsBetweenThumbs\",\n \"name\",\n \"onFocusChange\",\n \"onValueChange\",\n \"onValueChangeEnd\",\n \"orientation\",\n \"origin\",\n \"readOnly\",\n \"step\",\n \"thumbAlignment\",\n \"thumbAlignment\",\n \"thumbSize\",\n \"value\",\n])\n\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n\nexport const thumbProps = createProps<ThumbProps>()([\"index\", \"name\"])\nexport const splitThumbProps = createSplitProps<ThumbProps>(thumbProps)\n"],"mappings":"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","names":["import_dom_event","import_dom_query","import_numeric_range","import_numeric_range","getValue","import_numeric_range","props","import_dom_event","import_dom_query","import_form_utils","import_numeric_range","ctx","import_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -79,8 +79,7 @@ function getHorizontalThumbOffset(ctx) {
|
|
|
79
79
|
return parseFloat(getValue(ctx.value).toFixed(2));
|
|
80
80
|
}
|
|
81
81
|
function getOffset(ctx, percent) {
|
|
82
|
-
if (ctx.thumbAlignment === "center")
|
|
83
|
-
return `${percent}%`;
|
|
82
|
+
if (ctx.thumbAlignment === "center") return `${percent}%`;
|
|
84
83
|
const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx);
|
|
85
84
|
return `calc(${percent}% - ${offset}px)`;
|
|
86
85
|
}
|
|
@@ -108,6 +107,7 @@ function getControlStyle() {
|
|
|
108
107
|
return {
|
|
109
108
|
touchAction: "none",
|
|
110
109
|
userSelect: "none",
|
|
110
|
+
WebkitUserSelect: "none",
|
|
111
111
|
position: "relative"
|
|
112
112
|
};
|
|
113
113
|
}
|
|
@@ -140,6 +140,7 @@ function getMarkerStyle(ctx, value) {
|
|
|
140
140
|
function getMarkerGroupStyle() {
|
|
141
141
|
return {
|
|
142
142
|
userSelect: "none",
|
|
143
|
+
WebkitUserSelect: "none",
|
|
143
144
|
pointerEvents: "none",
|
|
144
145
|
position: "relative"
|
|
145
146
|
};
|
|
@@ -174,8 +175,7 @@ var dom = createScope({
|
|
|
174
175
|
getRangeEl: (ctx) => dom.getById(ctx, dom.getRangeId(ctx)),
|
|
175
176
|
getValueFromPoint(ctx, point) {
|
|
176
177
|
const controlEl = dom.getControlEl(ctx);
|
|
177
|
-
if (!controlEl)
|
|
178
|
-
return;
|
|
178
|
+
if (!controlEl) return;
|
|
179
179
|
const relativePoint = getRelativePoint(point, controlEl);
|
|
180
180
|
const percent = relativePoint.getPercentValue({
|
|
181
181
|
orientation: ctx.orientation,
|
|
@@ -188,8 +188,7 @@ var dom = createScope({
|
|
|
188
188
|
const valueArray = Array.from(ctx.value);
|
|
189
189
|
valueArray.forEach((value, index) => {
|
|
190
190
|
const inputEl = dom.getHiddenInputEl(ctx, index);
|
|
191
|
-
if (!inputEl)
|
|
192
|
-
return;
|
|
191
|
+
if (!inputEl) return;
|
|
193
192
|
dispatchInputValueEvent(inputEl, { value });
|
|
194
193
|
});
|
|
195
194
|
}
|
|
@@ -302,8 +301,7 @@ function connect(state, send, normalize) {
|
|
|
302
301
|
send({ type: "DECREMENT", index });
|
|
303
302
|
},
|
|
304
303
|
focus() {
|
|
305
|
-
if (!interactive)
|
|
306
|
-
return;
|
|
304
|
+
if (!interactive) return;
|
|
307
305
|
send({ type: "FOCUS", index: 0 });
|
|
308
306
|
},
|
|
309
307
|
getLabelProps() {
|
|
@@ -313,17 +311,18 @@ function connect(state, send, normalize) {
|
|
|
313
311
|
"data-disabled": dataAttr(disabled),
|
|
314
312
|
"data-orientation": state.context.orientation,
|
|
315
313
|
"data-invalid": dataAttr(invalid),
|
|
314
|
+
"data-dragging": dataAttr(dragging),
|
|
316
315
|
"data-focus": dataAttr(focused),
|
|
317
316
|
id: dom.getLabelId(state.context),
|
|
318
317
|
htmlFor: dom.getHiddenInputId(state.context, 0),
|
|
319
318
|
onClick(event) {
|
|
320
|
-
if (!interactive)
|
|
321
|
-
return;
|
|
319
|
+
if (!interactive) return;
|
|
322
320
|
event.preventDefault();
|
|
323
321
|
dom.getFirstEl(state.context)?.focus();
|
|
324
322
|
},
|
|
325
323
|
style: {
|
|
326
|
-
userSelect: "none"
|
|
324
|
+
userSelect: "none",
|
|
325
|
+
WebkitUserSelect: "none"
|
|
327
326
|
}
|
|
328
327
|
});
|
|
329
328
|
},
|
|
@@ -332,6 +331,7 @@ function connect(state, send, normalize) {
|
|
|
332
331
|
...parts.root.attrs,
|
|
333
332
|
"data-disabled": dataAttr(disabled),
|
|
334
333
|
"data-orientation": state.context.orientation,
|
|
334
|
+
"data-dragging": dataAttr(dragging),
|
|
335
335
|
"data-invalid": dataAttr(invalid),
|
|
336
336
|
"data-focus": dataAttr(focused),
|
|
337
337
|
id: dom.getRootId(state.context),
|
|
@@ -357,6 +357,7 @@ function connect(state, send, normalize) {
|
|
|
357
357
|
id: dom.getTrackId(state.context),
|
|
358
358
|
"data-disabled": dataAttr(disabled),
|
|
359
359
|
"data-invalid": dataAttr(invalid),
|
|
360
|
+
"data-dragging": dataAttr(dragging),
|
|
360
361
|
"data-orientation": state.context.orientation,
|
|
361
362
|
"data-focus": dataAttr(focused),
|
|
362
363
|
style: { position: "relative" }
|
|
@@ -378,6 +379,7 @@ function connect(state, send, normalize) {
|
|
|
378
379
|
"data-disabled": dataAttr(disabled),
|
|
379
380
|
"data-orientation": state.context.orientation,
|
|
380
381
|
"data-focus": dataAttr(focused && state.context.focusedIndex === index),
|
|
382
|
+
"data-dragging": dataAttr(dragging && state.context.focusedIndex === index),
|
|
381
383
|
draggable: false,
|
|
382
384
|
"aria-disabled": ariaAttr(disabled),
|
|
383
385
|
"aria-label": _ariaLabel,
|
|
@@ -391,46 +393,37 @@ function connect(state, send, normalize) {
|
|
|
391
393
|
tabIndex: disabled ? void 0 : 0,
|
|
392
394
|
style: dom.getThumbStyle(state.context, index),
|
|
393
395
|
onPointerDown(event) {
|
|
394
|
-
if (!interactive)
|
|
395
|
-
return;
|
|
396
|
+
if (!interactive) return;
|
|
396
397
|
send({ type: "THUMB_POINTER_DOWN", index });
|
|
397
398
|
event.stopPropagation();
|
|
398
399
|
},
|
|
399
400
|
onBlur() {
|
|
400
|
-
if (!interactive)
|
|
401
|
-
return;
|
|
401
|
+
if (!interactive) return;
|
|
402
402
|
send("BLUR");
|
|
403
403
|
},
|
|
404
404
|
onFocus() {
|
|
405
|
-
if (!interactive)
|
|
406
|
-
return;
|
|
405
|
+
if (!interactive) return;
|
|
407
406
|
send({ type: "FOCUS", index });
|
|
408
407
|
},
|
|
409
408
|
onKeyDown(event) {
|
|
410
|
-
if (event.defaultPrevented)
|
|
411
|
-
|
|
412
|
-
if (!interactive)
|
|
413
|
-
return;
|
|
409
|
+
if (event.defaultPrevented) return;
|
|
410
|
+
if (!interactive) return;
|
|
414
411
|
const step = getEventStep(event) * state.context.step;
|
|
415
412
|
const keyMap = {
|
|
416
413
|
ArrowUp() {
|
|
417
|
-
if (isHorizontal)
|
|
418
|
-
return;
|
|
414
|
+
if (isHorizontal) return;
|
|
419
415
|
send({ type: "ARROW_INC", step, src: "ArrowUp" });
|
|
420
416
|
},
|
|
421
417
|
ArrowDown() {
|
|
422
|
-
if (isHorizontal)
|
|
423
|
-
return;
|
|
418
|
+
if (isHorizontal) return;
|
|
424
419
|
send({ type: "ARROW_DEC", step, src: "ArrowDown" });
|
|
425
420
|
},
|
|
426
421
|
ArrowLeft() {
|
|
427
|
-
if (isVertical)
|
|
428
|
-
return;
|
|
422
|
+
if (isVertical) return;
|
|
429
423
|
send({ type: "ARROW_DEC", step, src: "ArrowLeft" });
|
|
430
424
|
},
|
|
431
425
|
ArrowRight() {
|
|
432
|
-
if (isVertical)
|
|
433
|
-
return;
|
|
426
|
+
if (isVertical) return;
|
|
434
427
|
send({ type: "ARROW_INC", step, src: "ArrowRight" });
|
|
435
428
|
},
|
|
436
429
|
PageUp() {
|
|
@@ -472,6 +465,7 @@ function connect(state, send, normalize) {
|
|
|
472
465
|
id: dom.getRangeId(state.context),
|
|
473
466
|
...parts.range.attrs,
|
|
474
467
|
dir: state.context.dir,
|
|
468
|
+
"data-dragging": dataAttr(dragging),
|
|
475
469
|
"data-focus": dataAttr(focused),
|
|
476
470
|
"data-invalid": dataAttr(invalid),
|
|
477
471
|
"data-disabled": dataAttr(disabled),
|
|
@@ -484,18 +478,16 @@ function connect(state, send, normalize) {
|
|
|
484
478
|
...parts.control.attrs,
|
|
485
479
|
dir: state.context.dir,
|
|
486
480
|
id: dom.getControlId(state.context),
|
|
481
|
+
"data-dragging": dataAttr(dragging),
|
|
487
482
|
"data-disabled": dataAttr(disabled),
|
|
488
483
|
"data-orientation": state.context.orientation,
|
|
489
484
|
"data-invalid": dataAttr(invalid),
|
|
490
485
|
"data-focus": dataAttr(focused),
|
|
491
486
|
style: dom.getControlStyle(),
|
|
492
487
|
onPointerDown(event) {
|
|
493
|
-
if (!interactive)
|
|
494
|
-
|
|
495
|
-
if (
|
|
496
|
-
return;
|
|
497
|
-
if (isModifierKey(event))
|
|
498
|
-
return;
|
|
488
|
+
if (!interactive) return;
|
|
489
|
+
if (!isLeftClick(event)) return;
|
|
490
|
+
if (isModifierKey(event)) return;
|
|
499
491
|
const point = getEventPoint(event);
|
|
500
492
|
send({ type: "POINTER_DOWN", point });
|
|
501
493
|
event.preventDefault();
|
|
@@ -569,6 +561,7 @@ function machine(userContext) {
|
|
|
569
561
|
dir: "ltr",
|
|
570
562
|
minStepsBetweenThumbs: 0,
|
|
571
563
|
disabled: false,
|
|
564
|
+
readOnly: false,
|
|
572
565
|
...ctx,
|
|
573
566
|
focusedIndex: -1,
|
|
574
567
|
fieldsetDisabled: false
|
|
@@ -691,14 +684,12 @@ function machine(userContext) {
|
|
|
691
684
|
});
|
|
692
685
|
},
|
|
693
686
|
trackThumbsSize(ctx2) {
|
|
694
|
-
if (ctx2.thumbAlignment !== "contain" || ctx2.thumbSize)
|
|
695
|
-
return;
|
|
687
|
+
if (ctx2.thumbAlignment !== "contain" || ctx2.thumbSize) return;
|
|
696
688
|
return trackElementsSize({
|
|
697
689
|
getNodes: () => dom.getElements(ctx2),
|
|
698
690
|
observeMutation: true,
|
|
699
691
|
callback(size) {
|
|
700
|
-
if (!size || isEqualSize(ctx2.thumbSize, size))
|
|
701
|
-
return;
|
|
692
|
+
if (!size || isEqualSize(ctx2.thumbSize, size)) return;
|
|
702
693
|
ctx2.thumbSize = size;
|
|
703
694
|
}
|
|
704
695
|
});
|
|
@@ -716,8 +707,7 @@ function machine(userContext) {
|
|
|
716
707
|
},
|
|
717
708
|
setClosestThumbIndex(ctx2, evt) {
|
|
718
709
|
const pointValue = dom.getValueFromPoint(ctx2, evt.point);
|
|
719
|
-
if (pointValue == null)
|
|
720
|
-
return;
|
|
710
|
+
if (pointValue == null) return;
|
|
721
711
|
const focusedIndex = getClosestIndex(ctx2, pointValue);
|
|
722
712
|
set.focusedIndex(ctx2, focusedIndex);
|
|
723
713
|
},
|
|
@@ -729,8 +719,7 @@ function machine(userContext) {
|
|
|
729
719
|
},
|
|
730
720
|
setPointerValue(ctx2, evt) {
|
|
731
721
|
const pointerValue = dom.getValueFromPoint(ctx2, evt.point);
|
|
732
|
-
if (pointerValue == null)
|
|
733
|
-
return;
|
|
722
|
+
if (pointerValue == null) return;
|
|
734
723
|
const value = constrainValue(ctx2, pointerValue, ctx2.focusedIndex);
|
|
735
724
|
set.valueAtIndex(ctx2, ctx2.focusedIndex, value);
|
|
736
725
|
},
|
|
@@ -788,20 +777,17 @@ var invoke = {
|
|
|
788
777
|
};
|
|
789
778
|
var set = {
|
|
790
779
|
valueAtIndex: (ctx, index, value) => {
|
|
791
|
-
if (isEqual(ctx.value[index], value))
|
|
792
|
-
return;
|
|
780
|
+
if (isEqual(ctx.value[index], value)) return;
|
|
793
781
|
ctx.value[index] = value;
|
|
794
782
|
invoke.change(ctx);
|
|
795
783
|
},
|
|
796
784
|
value: (ctx, value) => {
|
|
797
|
-
if (isEqual(ctx.value, value))
|
|
798
|
-
return;
|
|
785
|
+
if (isEqual(ctx.value, value)) return;
|
|
799
786
|
assignArray(ctx.value, value);
|
|
800
787
|
invoke.change(ctx);
|
|
801
788
|
},
|
|
802
789
|
focusedIndex: (ctx, index) => {
|
|
803
|
-
if (isEqual(ctx.focusedIndex, index))
|
|
804
|
-
return;
|
|
790
|
+
if (isEqual(ctx.focusedIndex, index)) return;
|
|
805
791
|
ctx.focusedIndex = index;
|
|
806
792
|
invoke.focusChange(ctx);
|
|
807
793
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/slider.anatomy.ts","../src/slider.connect.ts","../src/slider.dom.ts","../src/slider.style.ts","../src/slider.utils.ts","../src/slider.machine.ts","../src/slider.props.ts"],"sourcesContent":["import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"valueText\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\n\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n isLeftClick,\n isModifierKey,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { ariaAttr, dataAttr } from \"@zag-js/dom-query\"\nimport { getPercentValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./slider.anatomy\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineApi, Send, State } from \"./slider.types\"\nimport { getRangeAtIndex } from \"./slider.utils\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const ariaLabel = state.context[\"aria-label\"]\n const ariaLabelledBy = state.context[\"aria-labelledby\"]\n const sliderValue = state.context.value\n\n const focused = state.matches(\"focus\")\n const dragging = state.matches(\"dragging\")\n\n const disabled = state.context.isDisabled\n const invalid = state.context.invalid\n const interactive = state.context.isInteractive\n\n const isHorizontal = state.context.orientation === \"horizontal\"\n const isVertical = state.context.orientation === \"vertical\"\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n return {\n value: state.context.value,\n dragging,\n focused,\n setValue(value) {\n send({ type: \"SET_VALUE\", value: value })\n },\n getThumbValue(index) {\n return sliderValue[index]\n },\n setThumbValue(index, value) {\n send({ type: \"SET_VALUE\", index, value })\n },\n getValuePercent: getValuePercentFn,\n getPercentValue: getPercentValueFn,\n getThumbPercent(index) {\n return getValuePercentFn(sliderValue[index])\n },\n setThumbPercent(index, percent) {\n const value = getPercentValueFn(percent)\n send({ type: \"SET_VALUE\", index, value })\n },\n getThumbMin(index) {\n return getRangeAtIndex(state.context, index).min\n },\n getThumbMax(index) {\n return getRangeAtIndex(state.context, index).max\n },\n increment(index) {\n send({ type: \"INCREMENT\", index })\n },\n decrement(index) {\n send({ type: \"DECREMENT\", index })\n },\n focus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index: 0 })\n },\n\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context, 0),\n onClick(event) {\n if (!interactive) return\n event.preventDefault()\n dom.getFirstEl(state.context)?.focus()\n },\n style: {\n userSelect: \"none\",\n },\n })\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n })\n },\n\n getValueTextProps() {\n return normalize.element({\n ...parts.valueText.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getValueTextId(state.context),\n })\n },\n\n getTrackProps() {\n return normalize.element({\n ...parts.track.attrs,\n dir: state.context.dir,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused),\n style: { position: \"relative\" },\n })\n },\n\n getThumbProps(props) {\n const { index = 0, name } = props\n\n const value = sliderValue[index]\n const range = getRangeAtIndex(state.context, index)\n const valueText = state.context.getAriaValueText?.({ value, index })\n const _ariaLabel = Array.isArray(ariaLabel) ? ariaLabel[index] : ariaLabel\n const _ariaLabelledBy = Array.isArray(ariaLabelledBy) ? ariaLabelledBy[index] : ariaLabelledBy\n\n return normalize.element({\n ...parts.thumb.attrs,\n dir: state.context.dir,\n \"data-index\": index,\n \"data-name\": name,\n id: dom.getThumbId(state.context, index),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused && state.context.focusedIndex === index),\n draggable: false,\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": _ariaLabel,\n \"aria-labelledby\": _ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": range.max,\n \"aria-valuemin\": range.min,\n \"aria-valuenow\": sliderValue[index],\n \"aria-valuetext\": valueText,\n role: \"slider\",\n tabIndex: disabled ? undefined : 0,\n style: dom.getThumbStyle(state.context, index),\n onPointerDown(event) {\n if (!interactive) return\n send({ type: \"THUMB_POINTER_DOWN\", index })\n event.stopPropagation()\n },\n onBlur() {\n if (!interactive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event) * state.context.step\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n if (isHorizontal) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowUp\" })\n },\n ArrowDown() {\n if (isHorizontal) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowDown\" })\n },\n ArrowLeft() {\n if (isVertical) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowLeft\" })\n },\n ArrowRight() {\n if (isVertical) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowRight\" })\n },\n PageUp() {\n send({ type: \"ARROW_INC\", step, src: \"PageUp\" })\n },\n PageDown() {\n send({ type: \"ARROW_DEC\", step, src: \"PageDown\" })\n },\n Home() {\n send(\"HOME\")\n },\n End() {\n send(\"END\")\n },\n }\n\n const key = getEventKey(event, state.context)\n const exec = keyMap[key]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n event.stopPropagation()\n }\n },\n })\n },\n\n getHiddenInputProps(props) {\n const { index = 0, name } = props\n return normalize.input({\n name:\n name ?? (state.context.name ? state.context.name + (state.context.value.length > 1 ? \"[]\" : \"\") : undefined),\n form: state.context.form,\n type: \"text\",\n hidden: true,\n defaultValue: state.context.value[index],\n id: dom.getHiddenInputId(state.context, index),\n })\n },\n\n getRangeProps() {\n return normalize.element({\n id: dom.getRangeId(state.context),\n ...parts.range.attrs,\n dir: state.context.dir,\n \"data-focus\": dataAttr(focused),\n \"data-invalid\": dataAttr(invalid),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n })\n },\n\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n style: dom.getControlStyle(),\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n })\n },\n\n getMarkerGroupProps() {\n return normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n })\n },\n\n getMarkerProps(props) {\n const style = dom.getMarkerStyle(state.context, props.value)\n let markerState: \"over-value\" | \"under-value\" | \"at-value\"\n\n const first = state.context.value[0]\n const last = state.context.value[state.context.value.length - 1]\n\n if (props.value < first) {\n markerState = \"under-value\"\n } else if (props.value > last) {\n markerState = \"over-value\"\n } else {\n markerState = \"at-value\"\n }\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, props.value),\n role: \"presentation\",\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n \"data-value\": props.value,\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint, type Point } from \"@zag-js/dom-event\"\nimport { createScope, queryAll } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styleGetterFns } from \"./slider.style\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styleGetterFns,\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx, index: number) => ctx.ids?.thumb?.(index) ?? `slider:${ctx.id}:thumb:${index}`,\n getHiddenInputId: (ctx: Ctx, index: number) => `slider:${ctx.id}:input:${index}`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.range ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getValueTextId: (ctx: Ctx) => ctx.ids?.valueText ?? `slider:${ctx.id}:valueText`,\n getMarkerId: (ctx: Ctx, value: number) => ctx.ids?.marker?.(value) ?? `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx, index: number) => dom.getById(ctx, dom.getThumbId(ctx, index)),\n getHiddenInputEl: (ctx: Ctx, index: number) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx, index)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getElements: (ctx: Ctx) => queryAll(dom.getControlEl(ctx), \"[role=slider]\"),\n getFirstEl: (ctx: Ctx) => dom.getElements(ctx)[0],\n getRangeEl: (ctx: Ctx) => dom.getById(ctx, dom.getRangeId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point) {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n const relativePoint = getRelativePoint(point, controlEl)\n const percent = relativePoint.getPercentValue({\n orientation: ctx.orientation,\n dir: ctx.dir,\n inverted: { y: true },\n })\n return getPercentValue(percent, ctx.min, ctx.max, ctx.step)\n },\n dispatchChangeEvent(ctx: Ctx) {\n const valueArray = Array.from(ctx.value)\n valueArray.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n if (!inputEl) return\n dispatchInputValueEvent(inputEl, { value })\n })\n },\n})\n","import { getValuePercent, getValueTransformer } from \"@zag-js/numeric-range\"\nimport type { Style } from \"@zag-js/types\"\nimport type { MachineContext as Ctx, SharedContext } from \"./slider.types\"\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getBounds<T>(value: T[]): [T, T] {\n const firstValue = value[0]\n const lastThumb = value[value.length - 1]\n return [firstValue, lastThumb]\n}\n\nexport function getRangeOffsets(ctx: Ctx) {\n const [firstPercent, lastPercent] = getBounds(ctx.valuePercent)\n\n if (ctx.valuePercent.length === 1) {\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent[0] < 50\n const start = isNegative ? `${ctx.valuePercent[0]}%` : \"50%\"\n const end = isNegative ? \"50%\" : `${100 - ctx.valuePercent[0]}%`\n\n return { start, end }\n }\n\n return { start: \"0%\", end: `${100 - lastPercent}%` }\n }\n\n return { start: `${firstPercent}%`, end: `${100 - lastPercent}%` }\n}\n\nfunction getRangeStyle(ctx: Pick<SharedContext, \"isVertical\" | \"isRtl\">): Style {\n if (ctx.isVertical) {\n return {\n position: \"absolute\",\n bottom: \"var(--slider-range-start)\",\n top: \"var(--slider-range-end)\",\n }\n }\n\n return {\n position: \"absolute\",\n [ctx.isRtl ? \"right\" : \"left\"]: \"var(--slider-range-start)\",\n [ctx.isRtl ? \"left\" : \"right\"]: \"var(--slider-range-end)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Thumb style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getVerticalThumbOffset(ctx: SharedContext) {\n const { height = 0 } = ctx.thumbSize ?? {}\n const getValue = getValueTransformer([ctx.min, ctx.max], [-height / 2, height / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getHorizontalThumbOffset(ctx: SharedContext) {\n const { width = 0 } = ctx.thumbSize ?? {}\n\n if (ctx.isRtl) {\n const getValue = getValueTransformer([ctx.max, ctx.min], [-width / 2, width / 2])\n return -1 * parseFloat(getValue(ctx.value).toFixed(2))\n }\n\n const getValue = getValueTransformer([ctx.min, ctx.max], [-width / 2, width / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getOffset(ctx: SharedContext, percent: number) {\n if (ctx.thumbAlignment === \"center\") return `${percent}%`\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getThumbOffset(ctx: SharedContext) {\n let percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n return getOffset(ctx, percent)\n}\n\nfunction getVisibility(ctx: Ctx) {\n let visibility: \"visible\" | \"hidden\" = \"visible\"\n if (ctx.thumbAlignment === \"contain\" && !ctx.hasMeasuredThumbSize) {\n visibility = \"hidden\"\n }\n return visibility\n}\n\nfunction getThumbStyle(ctx: Ctx, index: number): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : \"insetInlineStart\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: `var(--slider-thumb-offset-${index})`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Control style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getControlStyle(): Style {\n return {\n touchAction: \"none\",\n userSelect: \"none\",\n position: \"relative\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Root style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRootStyle(ctx: Ctx): Style {\n const range = getRangeOffsets(ctx)\n\n const offsetStyles = ctx.value.reduce<Style>((styles, value, index) => {\n const offset = getThumbOffset({ ...ctx, value })\n return { ...styles, [`--slider-thumb-offset-${index}`]: offset }\n }, {})\n\n return {\n ...offsetStyles,\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : ctx.isRtl ? \"translateX(50%)\" : \"translateX(-50%)\",\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(\n ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\" | \"thumbAlignment\" | \"hasMeasuredThumbSize\">,\n value: number,\n): Style {\n return {\n // @ts-expect-error\n visibility: getVisibility(ctx),\n position: \"absolute\",\n pointerEvents: \"none\",\n // @ts-expect-error\n [ctx.isHorizontal ? \"insetInlineStart\" : \"bottom\"]: getThumbOffset({ ...ctx, value }),\n translate: \"var(--tx) var(--ty)\",\n \"--tx\": ctx.isHorizontal ? (ctx.isRtl ? \"50%\" : \"-50%\") : \"0%\",\n \"--ty\": !ctx.isHorizontal ? \"50%\" : \"0%\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerGroupStyle(): Style {\n return {\n userSelect: \"none\",\n pointerEvents: \"none\",\n position: \"relative\",\n }\n}\n\nexport const styleGetterFns = {\n getRootStyle,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getMarkerStyle,\n getMarkerGroupStyle,\n}\n","import {\n clampValue,\n getClosestValueIndex,\n getNextStepValue,\n getPreviousStepValue,\n getValueRanges,\n snapValueToStep,\n} from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function normalizeValues(ctx: Ctx, nextValues: number[]) {\n return nextValues.map((value, index, values) => {\n return constrainValue({ ...ctx, value: values }, value, index)\n })\n}\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function getRangeAtIndex(ctx: Ctx, index: number) {\n return getValueRanges(ctx.value, ctx.min, ctx.max, ctx.minStepsBetweenThumbs)[index]\n}\n\nexport function constrainValue(ctx: Ctx, value: number, index: number) {\n const range = getRangeAtIndex(ctx, index)\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, range.min, range.max)\n}\n\nexport function decrement(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getPreviousStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function increment(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getNextStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function getClosestIndex(ctx: Ctx, pointValue: number) {\n return getClosestValueIndex(ctx.value, pointValue)\n}\n\nexport function assignArray(current: number[], next: number[]) {\n for (let i = 0; i < next.length; i++) {\n const value = next[i]\n current[i] = value\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementsSize, type ElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact, isEqual } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport {\n assignArray,\n constrainValue,\n decrement,\n getClosestIndex,\n getRangeAtIndex,\n increment,\n normalizeValues,\n} from \"./slider.utils\"\n\nconst isEqualSize = (a: ElementSize | null, b: ElementSize | null) => {\n return a?.width === b?.width && a?.height === b?.height\n}\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n min: 0,\n max: 100,\n step: 1,\n value: [0],\n origin: \"start\",\n orientation: \"horizontal\",\n dir: \"ltr\",\n minStepsBetweenThumbs: 0,\n disabled: false,\n ...ctx,\n focusedIndex: -1,\n fieldsetDisabled: false,\n },\n\n computed: {\n isHorizontal: (ctx) => ctx.orientation === \"horizontal\",\n isVertical: (ctx) => ctx.orientation === \"vertical\",\n isRtl: (ctx) => ctx.orientation === \"horizontal\" && ctx.dir === \"rtl\",\n isDisabled: (ctx) => !!ctx.disabled || ctx.fieldsetDisabled,\n isInteractive: (ctx) => !(ctx.readOnly || ctx.isDisabled),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize != null,\n valuePercent(ctx) {\n return ctx.value.map((value) => 100 * getValuePercent(value, ctx.min, ctx.max))\n },\n },\n\n watch: {\n value: [\"syncInputElements\"],\n },\n\n entry: [\"coarseValue\"],\n\n activities: [\"trackFormControlState\", \"trackThumbsSize\"],\n\n on: {\n SET_VALUE: [\n {\n guard: \"hasIndex\",\n actions: \"setValueAtIndex\",\n },\n { actions: \"setValue\" },\n ],\n INCREMENT: {\n actions: \"incrementThumbAtIndex\",\n },\n DECREMENT: {\n actions: \"decrementThumbAtIndex\",\n },\n },\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n FOCUS: {\n target: \"focus\",\n actions: \"setFocusedIndex\",\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n },\n },\n focus: {\n entry: \"focusActiveThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n ARROW_DEC: {\n actions: [\"decrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n ARROW_INC: {\n actions: [\"incrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n HOME: {\n actions: [\"setFocusedThumbToMin\", \"invokeOnChangeEnd\"],\n },\n END: {\n actions: [\"setFocusedThumbToMax\", \"invokeOnChangeEnd\"],\n },\n BLUR: {\n target: \"idle\",\n actions: \"clearFocusedIndex\",\n },\n },\n },\n dragging: {\n entry: \"focusActiveThumb\",\n activities: \"trackPointerMove\",\n on: {\n POINTER_UP: {\n target: \"focus\",\n actions: \"invokeOnChangeEnd\",\n },\n POINTER_MOVE: {\n actions: \"setPointerValue\",\n },\n },\n },\n },\n },\n {\n guards: {\n hasIndex: (_ctx, evt) => evt.index != null,\n },\n activities: {\n trackFormControlState(ctx, _evt, { initialContext }) {\n return trackFormControl(dom.getRootEl(ctx), {\n onFieldsetDisabledChange(disabled) {\n ctx.fieldsetDisabled = disabled\n },\n onFormReset() {\n set.value(ctx, initialContext.value)\n },\n })\n },\n\n trackPointerMove(ctx, _evt, { send }) {\n return trackPointerMove(dom.getDoc(ctx), {\n onPointerMove(info) {\n send({ type: \"POINTER_MOVE\", point: info.point })\n },\n onPointerUp() {\n send(\"POINTER_UP\")\n },\n })\n },\n trackThumbsSize(ctx) {\n if (ctx.thumbAlignment !== \"contain\" || ctx.thumbSize) return\n\n return trackElementsSize({\n getNodes: () => dom.getElements(ctx),\n observeMutation: true,\n callback(size) {\n if (!size || isEqualSize(ctx.thumbSize, size)) return\n ctx.thumbSize = size\n },\n })\n },\n },\n actions: {\n syncInputElements(ctx) {\n ctx.value.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n dom.setValue(inputEl, value)\n })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onValueChangeEnd?.({ value: ctx.value })\n },\n setClosestThumbIndex(ctx, evt) {\n const pointValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointValue == null) return\n\n const focusedIndex = getClosestIndex(ctx, pointValue)\n set.focusedIndex(ctx, focusedIndex)\n },\n setFocusedIndex(ctx, evt) {\n set.focusedIndex(ctx, evt.index)\n },\n clearFocusedIndex(ctx) {\n set.focusedIndex(ctx, -1)\n },\n setPointerValue(ctx, evt) {\n const pointerValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointerValue == null) return\n\n const value = constrainValue(ctx, pointerValue, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, value)\n },\n focusActiveThumb(ctx) {\n raf(() => {\n const thumbEl = dom.getThumbEl(ctx, ctx.focusedIndex)\n thumbEl?.focus({ preventScroll: true })\n })\n },\n decrementThumbAtIndex(ctx, evt) {\n const value = decrement(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n incrementThumbAtIndex(ctx, evt) {\n const value = increment(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n setFocusedThumbToMin(ctx) {\n const { min } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, min)\n },\n setFocusedThumbToMax(ctx) {\n const { max } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, max)\n },\n coarseValue(ctx) {\n const value = normalizeValues(ctx, ctx.value)\n set.value(ctx, value)\n },\n setValueAtIndex(ctx, evt) {\n const value = constrainValue(ctx, evt.value, evt.index)\n set.valueAtIndex(ctx, evt.index, value)\n },\n setValue(ctx, evt) {\n const value = normalizeValues(ctx, evt.value)\n set.value(ctx, value)\n },\n },\n },\n )\n}\n\nconst invoke = {\n change: (ctx: MachineContext) => {\n ctx.onValueChange?.({\n value: Array.from(ctx.value),\n })\n dom.dispatchChangeEvent(ctx)\n },\n focusChange: (ctx: MachineContext) => {\n ctx.onFocusChange?.({\n value: Array.from(ctx.value),\n focusedIndex: ctx.focusedIndex,\n })\n },\n}\n\nconst set = {\n valueAtIndex: (ctx: MachineContext, index: number, value: number) => {\n if (isEqual(ctx.value[index], value)) return\n ctx.value[index] = value\n invoke.change(ctx)\n },\n value: (ctx: MachineContext, value: number[]) => {\n if (isEqual(ctx.value, value)) return\n assignArray(ctx.value, value)\n invoke.change(ctx)\n },\n focusedIndex: (ctx: MachineContext, index: number) => {\n if (isEqual(ctx.focusedIndex, index)) return\n ctx.focusedIndex = index\n invoke.focusChange(ctx)\n },\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { ThumbProps, UserDefinedContext } from \"./slider.types\"\n\nexport const props = createProps<UserDefinedContext>()([\n \"aria-label\",\n \"aria-labelledby\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getAriaValueText\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"max\",\n \"min\",\n \"minStepsBetweenThumbs\",\n \"name\",\n \"onFocusChange\",\n \"onValueChange\",\n \"onValueChangeEnd\",\n \"orientation\",\n \"origin\",\n \"readOnly\",\n \"step\",\n \"thumbAlignment\",\n \"thumbAlignment\",\n \"thumbSize\",\n \"value\",\n])\n\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n\nexport const thumbProps = createProps<ThumbProps>()([\"index\", \"name\"])\nexport const splitThumbProps = createSplitProps<ThumbProps>(thumbProps)\n"],"mappings":"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","names":["getPercentValue","getValuePercent","getValue","getValuePercent","getPercentValue","props","getValuePercent","ctx","getValuePercent"]}
|
|
1
|
+
{"version":3,"sources":["../src/slider.anatomy.ts","../src/slider.connect.ts","../src/slider.dom.ts","../src/slider.style.ts","../src/slider.utils.ts","../src/slider.machine.ts","../src/slider.props.ts"],"sourcesContent":["import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"valueText\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\n\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n isLeftClick,\n isModifierKey,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { ariaAttr, dataAttr } from \"@zag-js/dom-query\"\nimport { getPercentValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./slider.anatomy\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineApi, Send, State } from \"./slider.types\"\nimport { getRangeAtIndex } from \"./slider.utils\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const ariaLabel = state.context[\"aria-label\"]\n const ariaLabelledBy = state.context[\"aria-labelledby\"]\n const sliderValue = state.context.value\n\n const focused = state.matches(\"focus\")\n const dragging = state.matches(\"dragging\")\n\n const disabled = state.context.isDisabled\n const invalid = state.context.invalid\n const interactive = state.context.isInteractive\n\n const isHorizontal = state.context.orientation === \"horizontal\"\n const isVertical = state.context.orientation === \"vertical\"\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n return {\n value: state.context.value,\n dragging,\n focused,\n setValue(value) {\n send({ type: \"SET_VALUE\", value: value })\n },\n getThumbValue(index) {\n return sliderValue[index]\n },\n setThumbValue(index, value) {\n send({ type: \"SET_VALUE\", index, value })\n },\n getValuePercent: getValuePercentFn,\n getPercentValue: getPercentValueFn,\n getThumbPercent(index) {\n return getValuePercentFn(sliderValue[index])\n },\n setThumbPercent(index, percent) {\n const value = getPercentValueFn(percent)\n send({ type: \"SET_VALUE\", index, value })\n },\n getThumbMin(index) {\n return getRangeAtIndex(state.context, index).min\n },\n getThumbMax(index) {\n return getRangeAtIndex(state.context, index).max\n },\n increment(index) {\n send({ type: \"INCREMENT\", index })\n },\n decrement(index) {\n send({ type: \"DECREMENT\", index })\n },\n focus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index: 0 })\n },\n\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-dragging\": dataAttr(dragging),\n \"data-focus\": dataAttr(focused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context, 0),\n onClick(event) {\n if (!interactive) return\n event.preventDefault()\n dom.getFirstEl(state.context)?.focus()\n },\n style: {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n },\n })\n },\n\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-dragging\": dataAttr(dragging),\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n })\n },\n\n getValueTextProps() {\n return normalize.element({\n ...parts.valueText.attrs,\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n id: dom.getValueTextId(state.context),\n })\n },\n\n getTrackProps() {\n return normalize.element({\n ...parts.track.attrs,\n dir: state.context.dir,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-dragging\": dataAttr(dragging),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused),\n style: { position: \"relative\" },\n })\n },\n\n getThumbProps(props) {\n const { index = 0, name } = props\n\n const value = sliderValue[index]\n const range = getRangeAtIndex(state.context, index)\n const valueText = state.context.getAriaValueText?.({ value, index })\n const _ariaLabel = Array.isArray(ariaLabel) ? ariaLabel[index] : ariaLabel\n const _ariaLabelledBy = Array.isArray(ariaLabelledBy) ? ariaLabelledBy[index] : ariaLabelledBy\n\n return normalize.element({\n ...parts.thumb.attrs,\n dir: state.context.dir,\n \"data-index\": index,\n \"data-name\": name,\n id: dom.getThumbId(state.context, index),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused && state.context.focusedIndex === index),\n \"data-dragging\": dataAttr(dragging && state.context.focusedIndex === index),\n draggable: false,\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": _ariaLabel,\n \"aria-labelledby\": _ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": range.max,\n \"aria-valuemin\": range.min,\n \"aria-valuenow\": sliderValue[index],\n \"aria-valuetext\": valueText,\n role: \"slider\",\n tabIndex: disabled ? undefined : 0,\n style: dom.getThumbStyle(state.context, index),\n onPointerDown(event) {\n if (!interactive) return\n send({ type: \"THUMB_POINTER_DOWN\", index })\n event.stopPropagation()\n },\n onBlur() {\n if (!interactive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"FOCUS\", index })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event) * state.context.step\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n if (isHorizontal) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowUp\" })\n },\n ArrowDown() {\n if (isHorizontal) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowDown\" })\n },\n ArrowLeft() {\n if (isVertical) return\n send({ type: \"ARROW_DEC\", step, src: \"ArrowLeft\" })\n },\n ArrowRight() {\n if (isVertical) return\n send({ type: \"ARROW_INC\", step, src: \"ArrowRight\" })\n },\n PageUp() {\n send({ type: \"ARROW_INC\", step, src: \"PageUp\" })\n },\n PageDown() {\n send({ type: \"ARROW_DEC\", step, src: \"PageDown\" })\n },\n Home() {\n send(\"HOME\")\n },\n End() {\n send(\"END\")\n },\n }\n\n const key = getEventKey(event, state.context)\n const exec = keyMap[key]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n event.stopPropagation()\n }\n },\n })\n },\n\n getHiddenInputProps(props) {\n const { index = 0, name } = props\n return normalize.input({\n name:\n name ?? (state.context.name ? state.context.name + (state.context.value.length > 1 ? \"[]\" : \"\") : undefined),\n form: state.context.form,\n type: \"text\",\n hidden: true,\n defaultValue: state.context.value[index],\n id: dom.getHiddenInputId(state.context, index),\n })\n },\n\n getRangeProps() {\n return normalize.element({\n id: dom.getRangeId(state.context),\n ...parts.range.attrs,\n dir: state.context.dir,\n \"data-dragging\": dataAttr(dragging),\n \"data-focus\": dataAttr(focused),\n \"data-invalid\": dataAttr(invalid),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n })\n },\n\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"data-dragging\": dataAttr(dragging),\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(invalid),\n \"data-focus\": dataAttr(focused),\n style: dom.getControlStyle(),\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n })\n },\n\n getMarkerGroupProps() {\n return normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n })\n },\n\n getMarkerProps(props) {\n const style = dom.getMarkerStyle(state.context, props.value)\n let markerState: \"over-value\" | \"under-value\" | \"at-value\"\n\n const first = state.context.value[0]\n const last = state.context.value[state.context.value.length - 1]\n\n if (props.value < first) {\n markerState = \"under-value\"\n } else if (props.value > last) {\n markerState = \"over-value\"\n } else {\n markerState = \"at-value\"\n }\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, props.value),\n role: \"presentation\",\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n \"data-value\": props.value,\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint, type Point } from \"@zag-js/dom-event\"\nimport { createScope, queryAll } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styleGetterFns } from \"./slider.style\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styleGetterFns,\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx, index: number) => ctx.ids?.thumb?.(index) ?? `slider:${ctx.id}:thumb:${index}`,\n getHiddenInputId: (ctx: Ctx, index: number) => `slider:${ctx.id}:input:${index}`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.range ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getValueTextId: (ctx: Ctx) => ctx.ids?.valueText ?? `slider:${ctx.id}:valueText`,\n getMarkerId: (ctx: Ctx, value: number) => ctx.ids?.marker?.(value) ?? `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx, index: number) => dom.getById(ctx, dom.getThumbId(ctx, index)),\n getHiddenInputEl: (ctx: Ctx, index: number) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx, index)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getElements: (ctx: Ctx) => queryAll(dom.getControlEl(ctx), \"[role=slider]\"),\n getFirstEl: (ctx: Ctx) => dom.getElements(ctx)[0],\n getRangeEl: (ctx: Ctx) => dom.getById(ctx, dom.getRangeId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point) {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n const relativePoint = getRelativePoint(point, controlEl)\n const percent = relativePoint.getPercentValue({\n orientation: ctx.orientation,\n dir: ctx.dir,\n inverted: { y: true },\n })\n return getPercentValue(percent, ctx.min, ctx.max, ctx.step)\n },\n dispatchChangeEvent(ctx: Ctx) {\n const valueArray = Array.from(ctx.value)\n valueArray.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n if (!inputEl) return\n dispatchInputValueEvent(inputEl, { value })\n })\n },\n})\n","import { getValuePercent, getValueTransformer } from \"@zag-js/numeric-range\"\nimport type { Style } from \"@zag-js/types\"\nimport type { MachineContext as Ctx, SharedContext } from \"./slider.types\"\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getBounds<T>(value: T[]): [T, T] {\n const firstValue = value[0]\n const lastThumb = value[value.length - 1]\n return [firstValue, lastThumb]\n}\n\nexport function getRangeOffsets(ctx: Ctx) {\n const [firstPercent, lastPercent] = getBounds(ctx.valuePercent)\n\n if (ctx.valuePercent.length === 1) {\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent[0] < 50\n const start = isNegative ? `${ctx.valuePercent[0]}%` : \"50%\"\n const end = isNegative ? \"50%\" : `${100 - ctx.valuePercent[0]}%`\n\n return { start, end }\n }\n\n return { start: \"0%\", end: `${100 - lastPercent}%` }\n }\n\n return { start: `${firstPercent}%`, end: `${100 - lastPercent}%` }\n}\n\nfunction getRangeStyle(ctx: Pick<SharedContext, \"isVertical\" | \"isRtl\">): Style {\n if (ctx.isVertical) {\n return {\n position: \"absolute\",\n bottom: \"var(--slider-range-start)\",\n top: \"var(--slider-range-end)\",\n }\n }\n\n return {\n position: \"absolute\",\n [ctx.isRtl ? \"right\" : \"left\"]: \"var(--slider-range-start)\",\n [ctx.isRtl ? \"left\" : \"right\"]: \"var(--slider-range-end)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Thumb style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getVerticalThumbOffset(ctx: SharedContext) {\n const { height = 0 } = ctx.thumbSize ?? {}\n const getValue = getValueTransformer([ctx.min, ctx.max], [-height / 2, height / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getHorizontalThumbOffset(ctx: SharedContext) {\n const { width = 0 } = ctx.thumbSize ?? {}\n\n if (ctx.isRtl) {\n const getValue = getValueTransformer([ctx.max, ctx.min], [-width / 2, width / 2])\n return -1 * parseFloat(getValue(ctx.value).toFixed(2))\n }\n\n const getValue = getValueTransformer([ctx.min, ctx.max], [-width / 2, width / 2])\n return parseFloat(getValue(ctx.value).toFixed(2))\n}\n\nfunction getOffset(ctx: SharedContext, percent: number) {\n if (ctx.thumbAlignment === \"center\") return `${percent}%`\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getThumbOffset(ctx: SharedContext) {\n let percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n return getOffset(ctx, percent)\n}\n\nfunction getVisibility(ctx: Ctx) {\n let visibility: \"visible\" | \"hidden\" = \"visible\"\n if (ctx.thumbAlignment === \"contain\" && !ctx.hasMeasuredThumbSize) {\n visibility = \"hidden\"\n }\n return visibility\n}\n\nfunction getThumbStyle(ctx: Ctx, index: number): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : \"insetInlineStart\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: `var(--slider-thumb-offset-${index})`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Control style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getControlStyle(): Style {\n return {\n touchAction: \"none\",\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n position: \"relative\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Root style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRootStyle(ctx: Ctx): Style {\n const range = getRangeOffsets(ctx)\n\n const offsetStyles = ctx.value.reduce<Style>((styles, value, index) => {\n const offset = getThumbOffset({ ...ctx, value })\n return { ...styles, [`--slider-thumb-offset-${index}`]: offset }\n }, {})\n\n return {\n ...offsetStyles,\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : ctx.isRtl ? \"translateX(50%)\" : \"translateX(-50%)\",\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(\n ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\" | \"thumbAlignment\" | \"hasMeasuredThumbSize\">,\n value: number,\n): Style {\n return {\n // @ts-expect-error\n visibility: getVisibility(ctx),\n position: \"absolute\",\n pointerEvents: \"none\",\n // @ts-expect-error\n [ctx.isHorizontal ? \"insetInlineStart\" : \"bottom\"]: getThumbOffset({ ...ctx, value }),\n translate: \"var(--tx) var(--ty)\",\n \"--tx\": ctx.isHorizontal ? (ctx.isRtl ? \"50%\" : \"-50%\") : \"0%\",\n \"--ty\": !ctx.isHorizontal ? \"50%\" : \"0%\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerGroupStyle(): Style {\n return {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n pointerEvents: \"none\",\n position: \"relative\",\n }\n}\n\nexport const styleGetterFns = {\n getRootStyle,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getMarkerStyle,\n getMarkerGroupStyle,\n}\n","import {\n clampValue,\n getClosestValueIndex,\n getNextStepValue,\n getPreviousStepValue,\n getValueRanges,\n snapValueToStep,\n} from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function normalizeValues(ctx: Ctx, nextValues: number[]) {\n return nextValues.map((value, index, values) => {\n return constrainValue({ ...ctx, value: values }, value, index)\n })\n}\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function getRangeAtIndex(ctx: Ctx, index: number) {\n return getValueRanges(ctx.value, ctx.min, ctx.max, ctx.minStepsBetweenThumbs)[index]\n}\n\nexport function constrainValue(ctx: Ctx, value: number, index: number) {\n const range = getRangeAtIndex(ctx, index)\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, range.min, range.max)\n}\n\nexport function decrement(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getPreviousStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function increment(ctx: Ctx, index?: number, step?: number) {\n const idx = index ?? ctx.focusedIndex\n const range = getRangeAtIndex(ctx, idx)\n const nextValues = getNextStepValue(idx, {\n ...range,\n step: step ?? ctx.step,\n values: ctx.value,\n })\n nextValues[idx] = clampValue(nextValues[idx], range.min, range.max)\n return nextValues\n}\n\nexport function getClosestIndex(ctx: Ctx, pointValue: number) {\n return getClosestValueIndex(ctx.value, pointValue)\n}\n\nexport function assignArray(current: number[], next: number[]) {\n for (let i = 0; i < next.length; i++) {\n const value = next[i]\n current[i] = value\n }\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementsSize, type ElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact, isEqual } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport {\n assignArray,\n constrainValue,\n decrement,\n getClosestIndex,\n getRangeAtIndex,\n increment,\n normalizeValues,\n} from \"./slider.utils\"\n\nconst isEqualSize = (a: ElementSize | null, b: ElementSize | null) => {\n return a?.width === b?.width && a?.height === b?.height\n}\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n min: 0,\n max: 100,\n step: 1,\n value: [0],\n origin: \"start\",\n orientation: \"horizontal\",\n dir: \"ltr\",\n minStepsBetweenThumbs: 0,\n disabled: false,\n readOnly: false,\n ...ctx,\n focusedIndex: -1,\n fieldsetDisabled: false,\n },\n\n computed: {\n isHorizontal: (ctx) => ctx.orientation === \"horizontal\",\n isVertical: (ctx) => ctx.orientation === \"vertical\",\n isRtl: (ctx) => ctx.orientation === \"horizontal\" && ctx.dir === \"rtl\",\n isDisabled: (ctx) => !!ctx.disabled || ctx.fieldsetDisabled,\n isInteractive: (ctx) => !(ctx.readOnly || ctx.isDisabled),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize != null,\n valuePercent(ctx) {\n return ctx.value.map((value) => 100 * getValuePercent(value, ctx.min, ctx.max))\n },\n },\n\n watch: {\n value: [\"syncInputElements\"],\n },\n\n entry: [\"coarseValue\"],\n\n activities: [\"trackFormControlState\", \"trackThumbsSize\"],\n\n on: {\n SET_VALUE: [\n {\n guard: \"hasIndex\",\n actions: \"setValueAtIndex\",\n },\n { actions: \"setValue\" },\n ],\n INCREMENT: {\n actions: \"incrementThumbAtIndex\",\n },\n DECREMENT: {\n actions: \"decrementThumbAtIndex\",\n },\n },\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n FOCUS: {\n target: \"focus\",\n actions: \"setFocusedIndex\",\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n },\n },\n focus: {\n entry: \"focusActiveThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setClosestThumbIndex\", \"setPointerValue\", \"focusActiveThumb\"],\n },\n THUMB_POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setFocusedIndex\", \"focusActiveThumb\"],\n },\n ARROW_DEC: {\n actions: [\"decrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n ARROW_INC: {\n actions: [\"incrementThumbAtIndex\", \"invokeOnChangeEnd\"],\n },\n HOME: {\n actions: [\"setFocusedThumbToMin\", \"invokeOnChangeEnd\"],\n },\n END: {\n actions: [\"setFocusedThumbToMax\", \"invokeOnChangeEnd\"],\n },\n BLUR: {\n target: \"idle\",\n actions: \"clearFocusedIndex\",\n },\n },\n },\n dragging: {\n entry: \"focusActiveThumb\",\n activities: \"trackPointerMove\",\n on: {\n POINTER_UP: {\n target: \"focus\",\n actions: \"invokeOnChangeEnd\",\n },\n POINTER_MOVE: {\n actions: \"setPointerValue\",\n },\n },\n },\n },\n },\n {\n guards: {\n hasIndex: (_ctx, evt) => evt.index != null,\n },\n activities: {\n trackFormControlState(ctx, _evt, { initialContext }) {\n return trackFormControl(dom.getRootEl(ctx), {\n onFieldsetDisabledChange(disabled) {\n ctx.fieldsetDisabled = disabled\n },\n onFormReset() {\n set.value(ctx, initialContext.value)\n },\n })\n },\n\n trackPointerMove(ctx, _evt, { send }) {\n return trackPointerMove(dom.getDoc(ctx), {\n onPointerMove(info) {\n send({ type: \"POINTER_MOVE\", point: info.point })\n },\n onPointerUp() {\n send(\"POINTER_UP\")\n },\n })\n },\n trackThumbsSize(ctx) {\n if (ctx.thumbAlignment !== \"contain\" || ctx.thumbSize) return\n\n return trackElementsSize({\n getNodes: () => dom.getElements(ctx),\n observeMutation: true,\n callback(size) {\n if (!size || isEqualSize(ctx.thumbSize, size)) return\n ctx.thumbSize = size\n },\n })\n },\n },\n actions: {\n syncInputElements(ctx) {\n ctx.value.forEach((value, index) => {\n const inputEl = dom.getHiddenInputEl(ctx, index)\n dom.setValue(inputEl, value)\n })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onValueChangeEnd?.({ value: ctx.value })\n },\n setClosestThumbIndex(ctx, evt) {\n const pointValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointValue == null) return\n\n const focusedIndex = getClosestIndex(ctx, pointValue)\n set.focusedIndex(ctx, focusedIndex)\n },\n setFocusedIndex(ctx, evt) {\n set.focusedIndex(ctx, evt.index)\n },\n clearFocusedIndex(ctx) {\n set.focusedIndex(ctx, -1)\n },\n setPointerValue(ctx, evt) {\n const pointerValue = dom.getValueFromPoint(ctx, evt.point)\n if (pointerValue == null) return\n\n const value = constrainValue(ctx, pointerValue, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, value)\n },\n focusActiveThumb(ctx) {\n raf(() => {\n const thumbEl = dom.getThumbEl(ctx, ctx.focusedIndex)\n thumbEl?.focus({ preventScroll: true })\n })\n },\n decrementThumbAtIndex(ctx, evt) {\n const value = decrement(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n incrementThumbAtIndex(ctx, evt) {\n const value = increment(ctx, evt.index, evt.step)\n set.value(ctx, value)\n },\n setFocusedThumbToMin(ctx) {\n const { min } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, min)\n },\n setFocusedThumbToMax(ctx) {\n const { max } = getRangeAtIndex(ctx, ctx.focusedIndex)\n set.valueAtIndex(ctx, ctx.focusedIndex, max)\n },\n coarseValue(ctx) {\n const value = normalizeValues(ctx, ctx.value)\n set.value(ctx, value)\n },\n setValueAtIndex(ctx, evt) {\n const value = constrainValue(ctx, evt.value, evt.index)\n set.valueAtIndex(ctx, evt.index, value)\n },\n setValue(ctx, evt) {\n const value = normalizeValues(ctx, evt.value)\n set.value(ctx, value)\n },\n },\n },\n )\n}\n\nconst invoke = {\n change: (ctx: MachineContext) => {\n ctx.onValueChange?.({\n value: Array.from(ctx.value),\n })\n dom.dispatchChangeEvent(ctx)\n },\n focusChange: (ctx: MachineContext) => {\n ctx.onFocusChange?.({\n value: Array.from(ctx.value),\n focusedIndex: ctx.focusedIndex,\n })\n },\n}\n\nconst set = {\n valueAtIndex: (ctx: MachineContext, index: number, value: number) => {\n if (isEqual(ctx.value[index], value)) return\n ctx.value[index] = value\n invoke.change(ctx)\n },\n value: (ctx: MachineContext, value: number[]) => {\n if (isEqual(ctx.value, value)) return\n assignArray(ctx.value, value)\n invoke.change(ctx)\n },\n focusedIndex: (ctx: MachineContext, index: number) => {\n if (isEqual(ctx.focusedIndex, index)) return\n ctx.focusedIndex = index\n invoke.focusChange(ctx)\n },\n}\n","import { createProps } from \"@zag-js/types\"\nimport { createSplitProps } from \"@zag-js/utils\"\nimport type { ThumbProps, UserDefinedContext } from \"./slider.types\"\n\nexport const props = createProps<UserDefinedContext>()([\n \"aria-label\",\n \"aria-labelledby\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getAriaValueText\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"max\",\n \"min\",\n \"minStepsBetweenThumbs\",\n \"name\",\n \"onFocusChange\",\n \"onValueChange\",\n \"onValueChangeEnd\",\n \"orientation\",\n \"origin\",\n \"readOnly\",\n \"step\",\n \"thumbAlignment\",\n \"thumbAlignment\",\n \"thumbSize\",\n \"value\",\n])\n\nexport const splitProps = createSplitProps<Partial<UserDefinedContext>>(props)\n\nexport const thumbProps = createProps<ThumbProps>()([\"index\", \"name\"])\nexport const splitThumbProps = createSplitProps<ThumbProps>(thumbProps)\n"],"mappings":"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","names":["getPercentValue","getValuePercent","getValue","getValuePercent","getPercentValue","props","getValuePercent","ctx","getValuePercent"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zag-js/slider",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.0",
|
|
4
4
|
"description": "Core logic for the slider widget implemented as a state machine",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"js",
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
"url": "https://github.com/chakra-ui/zag/issues"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@zag-js/anatomy": "0.
|
|
32
|
-
"@zag-js/core": "0.
|
|
33
|
-
"@zag-js/form-utils": "0.
|
|
34
|
-
"@zag-js/dom-query": "0.
|
|
35
|
-
"@zag-js/dom-event": "0.
|
|
36
|
-
"@zag-js/utils": "0.
|
|
37
|
-
"@zag-js/numeric-range": "0.
|
|
38
|
-
"@zag-js/element-size": "0.
|
|
39
|
-
"@zag-js/types": "0.
|
|
31
|
+
"@zag-js/anatomy": "0.57.0",
|
|
32
|
+
"@zag-js/core": "0.57.0",
|
|
33
|
+
"@zag-js/form-utils": "0.57.0",
|
|
34
|
+
"@zag-js/dom-query": "0.57.0",
|
|
35
|
+
"@zag-js/dom-event": "0.57.0",
|
|
36
|
+
"@zag-js/utils": "0.57.0",
|
|
37
|
+
"@zag-js/numeric-range": "0.57.0",
|
|
38
|
+
"@zag-js/element-size": "0.57.0",
|
|
39
|
+
"@zag-js/types": "0.57.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"clean-package": "2.2.0"
|
package/src/slider.connect.ts
CHANGED
|
@@ -83,6 +83,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
83
83
|
"data-disabled": dataAttr(disabled),
|
|
84
84
|
"data-orientation": state.context.orientation,
|
|
85
85
|
"data-invalid": dataAttr(invalid),
|
|
86
|
+
"data-dragging": dataAttr(dragging),
|
|
86
87
|
"data-focus": dataAttr(focused),
|
|
87
88
|
id: dom.getLabelId(state.context),
|
|
88
89
|
htmlFor: dom.getHiddenInputId(state.context, 0),
|
|
@@ -93,6 +94,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
93
94
|
},
|
|
94
95
|
style: {
|
|
95
96
|
userSelect: "none",
|
|
97
|
+
WebkitUserSelect: "none",
|
|
96
98
|
},
|
|
97
99
|
})
|
|
98
100
|
},
|
|
@@ -102,6 +104,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
102
104
|
...parts.root.attrs,
|
|
103
105
|
"data-disabled": dataAttr(disabled),
|
|
104
106
|
"data-orientation": state.context.orientation,
|
|
107
|
+
"data-dragging": dataAttr(dragging),
|
|
105
108
|
"data-invalid": dataAttr(invalid),
|
|
106
109
|
"data-focus": dataAttr(focused),
|
|
107
110
|
id: dom.getRootId(state.context),
|
|
@@ -129,6 +132,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
129
132
|
id: dom.getTrackId(state.context),
|
|
130
133
|
"data-disabled": dataAttr(disabled),
|
|
131
134
|
"data-invalid": dataAttr(invalid),
|
|
135
|
+
"data-dragging": dataAttr(dragging),
|
|
132
136
|
"data-orientation": state.context.orientation,
|
|
133
137
|
"data-focus": dataAttr(focused),
|
|
134
138
|
style: { position: "relative" },
|
|
@@ -153,6 +157,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
153
157
|
"data-disabled": dataAttr(disabled),
|
|
154
158
|
"data-orientation": state.context.orientation,
|
|
155
159
|
"data-focus": dataAttr(focused && state.context.focusedIndex === index),
|
|
160
|
+
"data-dragging": dataAttr(dragging && state.context.focusedIndex === index),
|
|
156
161
|
draggable: false,
|
|
157
162
|
"aria-disabled": ariaAttr(disabled),
|
|
158
163
|
"aria-label": _ariaLabel,
|
|
@@ -245,6 +250,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
245
250
|
id: dom.getRangeId(state.context),
|
|
246
251
|
...parts.range.attrs,
|
|
247
252
|
dir: state.context.dir,
|
|
253
|
+
"data-dragging": dataAttr(dragging),
|
|
248
254
|
"data-focus": dataAttr(focused),
|
|
249
255
|
"data-invalid": dataAttr(invalid),
|
|
250
256
|
"data-disabled": dataAttr(disabled),
|
|
@@ -258,6 +264,7 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
|
|
|
258
264
|
...parts.control.attrs,
|
|
259
265
|
dir: state.context.dir,
|
|
260
266
|
id: dom.getControlId(state.context),
|
|
267
|
+
"data-dragging": dataAttr(dragging),
|
|
261
268
|
"data-disabled": dataAttr(disabled),
|
|
262
269
|
"data-orientation": state.context.orientation,
|
|
263
270
|
"data-invalid": dataAttr(invalid),
|
package/src/slider.machine.ts
CHANGED
package/src/slider.style.ts
CHANGED
|
@@ -105,6 +105,7 @@ function getControlStyle(): Style {
|
|
|
105
105
|
return {
|
|
106
106
|
touchAction: "none",
|
|
107
107
|
userSelect: "none",
|
|
108
|
+
WebkitUserSelect: "none",
|
|
108
109
|
position: "relative",
|
|
109
110
|
}
|
|
110
111
|
}
|
|
@@ -157,6 +158,7 @@ function getMarkerStyle(
|
|
|
157
158
|
function getMarkerGroupStyle(): Style {
|
|
158
159
|
return {
|
|
159
160
|
userSelect: "none",
|
|
161
|
+
WebkitUserSelect: "none",
|
|
160
162
|
pointerEvents: "none",
|
|
161
163
|
position: "relative",
|
|
162
164
|
}
|