@zag-js/slider 0.0.0-dev-20230810072419 → 0.0.0-dev-20230816100944

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.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _zag_js_anatomy from '@zag-js/anatomy';
2
2
  import * as _zag_js_types from '@zag-js/types';
3
- import { PropTypes, RequiredBy, DirectionProperty, CommonProperties, Context, NormalizeProps } from '@zag-js/types';
3
+ import { RequiredBy, PropTypes, DirectionProperty, CommonProperties, Context, NormalizeProps } from '@zag-js/types';
4
4
  import * as _zag_js_core from '@zag-js/core';
5
5
  import { StateMachine } from '@zag-js/core';
6
6
 
@@ -107,60 +107,6 @@ type PublicContext = DirectionProperty & CommonProperties & {
107
107
  */
108
108
  thumbAlignment?: "contain" | "center";
109
109
  };
110
- type PublicApi<T extends PropTypes = PropTypes> = {
111
- /**
112
- * Whether the slider is focused.
113
- */
114
- isFocused: boolean;
115
- /**
116
- * Whether the slider is being dragged.
117
- */
118
- isDragging: boolean;
119
- /**
120
- * The value of the slider.
121
- */
122
- value: number;
123
- /**
124
- * The value of the slider as a percent.
125
- */
126
- percent: number;
127
- /**
128
- * Function to set the value of the slider.
129
- */
130
- setValue(value: number): void;
131
- /**
132
- * Returns the value of the slider at the given percent.
133
- */
134
- getPercentValue: (percent: number) => number;
135
- /**
136
- * Returns the percent of the slider at the given value.
137
- */
138
- getValuePercent: (value: number) => number;
139
- /**
140
- * Function to focus the slider.
141
- */
142
- focus(): void;
143
- /**
144
- * Function to increment the value of the slider by the step.
145
- */
146
- increment(): void;
147
- /**
148
- * Function to decrement the value of the slider by the step.
149
- */
150
- decrement(): void;
151
- rootProps: T["element"];
152
- labelProps: T["label"];
153
- thumbProps: T["element"];
154
- hiddenInputProps: T["input"];
155
- outputProps: T["output"];
156
- trackProps: T["element"];
157
- rangeProps: T["element"];
158
- controlProps: T["element"];
159
- markerGroupProps: T["element"];
160
- getMarkerProps({ value }: {
161
- value: number;
162
- }): T["element"];
163
- };
164
110
  type UserDefinedContext = RequiredBy<PublicContext, "id">;
165
111
  type ComputedContext = Readonly<{
166
112
  /**
@@ -222,8 +168,62 @@ type Point = {
222
168
  x: number;
223
169
  y: number;
224
170
  };
171
+ type MachineApi<T extends PropTypes = PropTypes> = {
172
+ /**
173
+ * Whether the slider is focused.
174
+ */
175
+ isFocused: boolean;
176
+ /**
177
+ * Whether the slider is being dragged.
178
+ */
179
+ isDragging: boolean;
180
+ /**
181
+ * The value of the slider.
182
+ */
183
+ value: number;
184
+ /**
185
+ * The value of the slider as a percent.
186
+ */
187
+ percent: number;
188
+ /**
189
+ * Function to set the value of the slider.
190
+ */
191
+ setValue(value: number): void;
192
+ /**
193
+ * Returns the value of the slider at the given percent.
194
+ */
195
+ getPercentValue: (percent: number) => number;
196
+ /**
197
+ * Returns the percent of the slider at the given value.
198
+ */
199
+ getValuePercent: (value: number) => number;
200
+ /**
201
+ * Function to focus the slider.
202
+ */
203
+ focus(): void;
204
+ /**
205
+ * Function to increment the value of the slider by the step.
206
+ */
207
+ increment(): void;
208
+ /**
209
+ * Function to decrement the value of the slider by the step.
210
+ */
211
+ decrement(): void;
212
+ rootProps: T["element"];
213
+ labelProps: T["label"];
214
+ thumbProps: T["element"];
215
+ hiddenInputProps: T["input"];
216
+ outputProps: T["output"];
217
+ trackProps: T["element"];
218
+ rangeProps: T["element"];
219
+ controlProps: T["element"];
220
+ markerGroupProps: T["element"];
221
+ getMarkerProps({ value }: {
222
+ value: number;
223
+ }): T["element"];
224
+ };
225
225
 
226
- declare function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): PublicApi<T>;
226
+ declare function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T>;
227
227
 
228
228
  declare const dom: {
229
229
  getRootNode: (ctx: {
@@ -241,6 +241,9 @@ declare const dom: {
241
241
  getById: <T extends HTMLElement = HTMLElement>(ctx: {
242
242
  getRootNode?: (() => Document | Node | ShadowRoot) | undefined;
243
243
  }, id: string) => T | null;
244
+ setValue: <T_1 extends {
245
+ value: string;
246
+ }>(elem: T_1 | null, value: string | number | null | undefined) => void;
244
247
  } & {
245
248
  getRootId: (ctx: MachineContext) => string;
246
249
  getThumbId: (ctx: MachineContext) => string;
@@ -270,4 +273,4 @@ declare const dom: {
270
273
 
271
274
  declare function machine(userContext: UserDefinedContext): _zag_js_core.Machine<MachineContext, MachineState, _zag_js_core.StateMachine.AnyEventObject>;
272
275
 
273
- export { UserDefinedContext as Context, PublicApi, anatomy, connect, machine, dom as unstable__dom };
276
+ export { MachineApi as Api, UserDefinedContext as Context, anatomy, connect, machine, dom as unstable__dom };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _zag_js_anatomy from '@zag-js/anatomy';
2
2
  import * as _zag_js_types from '@zag-js/types';
3
- import { PropTypes, RequiredBy, DirectionProperty, CommonProperties, Context, NormalizeProps } from '@zag-js/types';
3
+ import { RequiredBy, PropTypes, DirectionProperty, CommonProperties, Context, NormalizeProps } from '@zag-js/types';
4
4
  import * as _zag_js_core from '@zag-js/core';
5
5
  import { StateMachine } from '@zag-js/core';
6
6
 
@@ -107,60 +107,6 @@ type PublicContext = DirectionProperty & CommonProperties & {
107
107
  */
108
108
  thumbAlignment?: "contain" | "center";
109
109
  };
110
- type PublicApi<T extends PropTypes = PropTypes> = {
111
- /**
112
- * Whether the slider is focused.
113
- */
114
- isFocused: boolean;
115
- /**
116
- * Whether the slider is being dragged.
117
- */
118
- isDragging: boolean;
119
- /**
120
- * The value of the slider.
121
- */
122
- value: number;
123
- /**
124
- * The value of the slider as a percent.
125
- */
126
- percent: number;
127
- /**
128
- * Function to set the value of the slider.
129
- */
130
- setValue(value: number): void;
131
- /**
132
- * Returns the value of the slider at the given percent.
133
- */
134
- getPercentValue: (percent: number) => number;
135
- /**
136
- * Returns the percent of the slider at the given value.
137
- */
138
- getValuePercent: (value: number) => number;
139
- /**
140
- * Function to focus the slider.
141
- */
142
- focus(): void;
143
- /**
144
- * Function to increment the value of the slider by the step.
145
- */
146
- increment(): void;
147
- /**
148
- * Function to decrement the value of the slider by the step.
149
- */
150
- decrement(): void;
151
- rootProps: T["element"];
152
- labelProps: T["label"];
153
- thumbProps: T["element"];
154
- hiddenInputProps: T["input"];
155
- outputProps: T["output"];
156
- trackProps: T["element"];
157
- rangeProps: T["element"];
158
- controlProps: T["element"];
159
- markerGroupProps: T["element"];
160
- getMarkerProps({ value }: {
161
- value: number;
162
- }): T["element"];
163
- };
164
110
  type UserDefinedContext = RequiredBy<PublicContext, "id">;
165
111
  type ComputedContext = Readonly<{
166
112
  /**
@@ -222,8 +168,62 @@ type Point = {
222
168
  x: number;
223
169
  y: number;
224
170
  };
171
+ type MachineApi<T extends PropTypes = PropTypes> = {
172
+ /**
173
+ * Whether the slider is focused.
174
+ */
175
+ isFocused: boolean;
176
+ /**
177
+ * Whether the slider is being dragged.
178
+ */
179
+ isDragging: boolean;
180
+ /**
181
+ * The value of the slider.
182
+ */
183
+ value: number;
184
+ /**
185
+ * The value of the slider as a percent.
186
+ */
187
+ percent: number;
188
+ /**
189
+ * Function to set the value of the slider.
190
+ */
191
+ setValue(value: number): void;
192
+ /**
193
+ * Returns the value of the slider at the given percent.
194
+ */
195
+ getPercentValue: (percent: number) => number;
196
+ /**
197
+ * Returns the percent of the slider at the given value.
198
+ */
199
+ getValuePercent: (value: number) => number;
200
+ /**
201
+ * Function to focus the slider.
202
+ */
203
+ focus(): void;
204
+ /**
205
+ * Function to increment the value of the slider by the step.
206
+ */
207
+ increment(): void;
208
+ /**
209
+ * Function to decrement the value of the slider by the step.
210
+ */
211
+ decrement(): void;
212
+ rootProps: T["element"];
213
+ labelProps: T["label"];
214
+ thumbProps: T["element"];
215
+ hiddenInputProps: T["input"];
216
+ outputProps: T["output"];
217
+ trackProps: T["element"];
218
+ rangeProps: T["element"];
219
+ controlProps: T["element"];
220
+ markerGroupProps: T["element"];
221
+ getMarkerProps({ value }: {
222
+ value: number;
223
+ }): T["element"];
224
+ };
225
225
 
226
- declare function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): PublicApi<T>;
226
+ declare function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T>;
227
227
 
228
228
  declare const dom: {
229
229
  getRootNode: (ctx: {
@@ -241,6 +241,9 @@ declare const dom: {
241
241
  getById: <T extends HTMLElement = HTMLElement>(ctx: {
242
242
  getRootNode?: (() => Document | Node | ShadowRoot) | undefined;
243
243
  }, id: string) => T | null;
244
+ setValue: <T_1 extends {
245
+ value: string;
246
+ }>(elem: T_1 | null, value: string | number | null | undefined) => void;
244
247
  } & {
245
248
  getRootId: (ctx: MachineContext) => string;
246
249
  getThumbId: (ctx: MachineContext) => string;
@@ -270,4 +273,4 @@ declare const dom: {
270
273
 
271
274
  declare function machine(userContext: UserDefinedContext): _zag_js_core.Machine<MachineContext, MachineState, _zag_js_core.StateMachine.AnyEventObject>;
272
275
 
273
- export { UserDefinedContext as Context, PublicApi, anatomy, connect, machine, dom as unstable__dom };
276
+ export { MachineApi as Api, UserDefinedContext as Context, anatomy, connect, machine, dom as unstable__dom };
package/dist/index.js CHANGED
@@ -340,7 +340,6 @@ function connect(state, send, normalize) {
340
340
  style: dom.getThumbStyle(state.context)
341
341
  }),
342
342
  hiddenInputProps: normalize.input({
343
- type: "text",
344
343
  defaultValue: state.context.value,
345
344
  name: state.context.name,
346
345
  form: state.context.form,
@@ -468,7 +467,6 @@ function machine(userContext) {
468
467
  dir: "ltr",
469
468
  origin: "start",
470
469
  orientation: "horizontal",
471
- initialValue: null,
472
470
  value: 0,
473
471
  step: 1,
474
472
  min: 0,
@@ -484,7 +482,7 @@ function machine(userContext) {
484
482
  valuePercent: (ctx2) => 100 * (0, import_numeric_range5.getValuePercent)(ctx2.value, ctx2.min, ctx2.max)
485
483
  },
486
484
  watch: {
487
- value: ["invokeOnChange", "dispatchChangeEvent"]
485
+ value: ["syncInputElement"]
488
486
  },
489
487
  activities: ["trackFormControlState", "trackThumbSize"],
490
488
  on: {
@@ -568,15 +566,13 @@ function machine(userContext) {
568
566
  isVertical: (ctx2) => ctx2.isVertical
569
567
  },
570
568
  activities: {
571
- trackFormControlState(ctx2) {
569
+ trackFormControlState(ctx2, _evt, { initialContext }) {
572
570
  return (0, import_form_utils2.trackFormControl)(dom.getHiddenInputEl(ctx2), {
573
571
  onFieldsetDisabled() {
574
572
  ctx2.disabled = true;
575
573
  },
576
574
  onFormReset() {
577
- if (ctx2.initialValue != null) {
578
- ctx2.value = ctx2.initialValue;
579
- }
575
+ set.value(ctx2, initialContext.value);
580
576
  }
581
577
  });
582
578
  },
@@ -601,9 +597,7 @@ function machine(userContext) {
601
597
  },
602
598
  actions: {
603
599
  checkValue(ctx2) {
604
- const value = constrainValue(ctx2, ctx2.value);
605
- ctx2.value = value;
606
- ctx2.initialValue = value;
600
+ ctx2.value = constrainValue(ctx2, ctx2.value);
607
601
  },
608
602
  invokeOnChangeStart(ctx2) {
609
603
  ctx2.onChangeStart?.({ value: ctx2.value });
@@ -611,40 +605,53 @@ function machine(userContext) {
611
605
  invokeOnChangeEnd(ctx2) {
612
606
  ctx2.onChangeEnd?.({ value: ctx2.value });
613
607
  },
614
- invokeOnChange(ctx2) {
615
- ctx2.onChange?.({ value: ctx2.value });
616
- },
617
- dispatchChangeEvent(ctx2) {
618
- dom.dispatchChangeEvent(ctx2);
619
- },
620
608
  setPointerValue(ctx2, evt) {
621
609
  const value = dom.getValueFromPoint(ctx2, evt.point);
622
610
  if (value == null)
623
611
  return;
624
- ctx2.value = (0, import_numeric_range5.clampValue)(value, ctx2.min, ctx2.max);
612
+ set.value(ctx2, (0, import_numeric_range5.clampValue)(value, ctx2.min, ctx2.max));
625
613
  },
626
614
  focusThumb(ctx2) {
627
- (0, import_dom_query3.raf)(() => dom.getThumbEl(ctx2)?.focus());
615
+ (0, import_dom_query3.raf)(() => dom.getThumbEl(ctx2)?.focus({ preventScroll: true }));
628
616
  },
629
617
  decrement(ctx2, evt) {
630
- ctx2.value = decrement(ctx2, evt.step);
618
+ const value = decrement(ctx2, evt.step);
619
+ set.value(ctx2, value);
631
620
  },
632
621
  increment(ctx2, evt) {
633
- ctx2.value = increment(ctx2, evt.step);
622
+ const value = increment(ctx2, evt.step);
623
+ set.value(ctx2, value);
634
624
  },
635
625
  setToMin(ctx2) {
636
- ctx2.value = ctx2.min;
626
+ set.value(ctx2, ctx2.min);
637
627
  },
638
628
  setToMax(ctx2) {
639
- ctx2.value = ctx2.max;
629
+ set.value(ctx2, ctx2.max);
640
630
  },
641
631
  setValue(ctx2, evt) {
642
- ctx2.value = constrainValue(ctx2, evt.value);
632
+ const value = constrainValue(ctx2, evt.value);
633
+ set.value(ctx2, value);
634
+ },
635
+ syncInputElement(ctx2) {
636
+ const inputEl = dom.getHiddenInputEl(ctx2);
637
+ dom.setValue(inputEl, ctx2.value);
643
638
  }
644
639
  }
645
640
  }
646
641
  );
647
642
  }
643
+ var invoke = {
644
+ change: (ctx) => {
645
+ ctx.onChange?.({ value: ctx.value });
646
+ dom.dispatchChangeEvent(ctx);
647
+ }
648
+ };
649
+ var set = {
650
+ value: (ctx, value) => {
651
+ ctx.value = value;
652
+ invoke.change(ctx);
653
+ }
654
+ };
648
655
  // Annotate the CommonJS export names for ESM import in node:
649
656
  0 && (module.exports = {
650
657
  anatomy,
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.machine.ts","../src/slider.utils.ts"],"sourcesContent":["export { anatomy } from \"./slider.anatomy\"\nexport { connect } from \"./slider.connect\"\nexport { dom as unstable__dom } from \"./slider.dom\"\nexport { machine } from \"./slider.machine\"\nexport type { UserDefinedContext as Context, PublicApi } from \"./slider.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"output\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n getNativeEvent,\n isLeftClick,\n isModifiedEvent,\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 { PublicApi, Send, State } from \"./slider.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): PublicApi<T> {\n const ariaLabel = state.context[\"aria-label\"]\n const ariaLabelledBy = state.context[\"aria-labelledby\"]\n const ariaValueText = state.context.getAriaValueText?.(state.context.value)\n\n const isFocused = state.matches(\"focus\")\n const isDragging = state.matches(\"dragging\")\n const isDisabled = state.context.disabled\n const isInteractive = state.context.isInteractive\n const isInvalid = state.context.invalid\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n // TODO - getMarkerState\n\n return {\n isFocused,\n isDragging,\n value: state.context.value,\n percent: getValuePercent(state.context.value, state.context.min, state.context.max),\n\n setValue(value: number) {\n send({ type: \"SET_VALUE\", value })\n },\n\n getPercentValue: getPercentValueFn,\n\n getValuePercent: getValuePercentFn,\n\n focus() {\n dom.getThumbEl(state.context)?.focus()\n },\n /**\n * Function to increment the value of the slider by the step.\n */\n increment() {\n send(\"INCREMENT\")\n },\n\n decrement() {\n send(\"DECREMENT\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(isInvalid),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n }),\n\n labelProps: normalize.label({\n ...parts.label.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-focus\": dataAttr(isFocused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onClick(event) {\n if (!isInteractive) return\n event.preventDefault()\n dom.getThumbEl(state.context)?.focus()\n },\n style: dom.getLabelStyle(),\n }),\n\n thumbProps: normalize.element({\n ...parts.thumb.attrs,\n id: dom.getThumbId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n draggable: false,\n \"aria-invalid\": ariaAttr(isInvalid),\n \"data-invalid\": dataAttr(isInvalid),\n \"aria-disabled\": ariaAttr(isDisabled),\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabel ? undefined : ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": state.context.max,\n \"aria-valuemin\": state.context.min,\n \"aria-valuenow\": state.context.value,\n \"aria-valuetext\": ariaValueText,\n role: \"slider\",\n tabIndex: isDisabled ? undefined : 0,\n onBlur() {\n if (!isInteractive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!isInteractive) return\n send(\"FOCUS\")\n },\n onKeyDown(event) {\n if (!isInteractive) return\n const step = getEventStep(event) * state.context.step\n let prevent = true\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"ARROW_UP\", step })\n prevent = state.context.isVertical\n },\n ArrowDown() {\n send({ type: \"ARROW_DOWN\", step })\n prevent = state.context.isVertical\n },\n ArrowLeft() {\n send({ type: \"ARROW_LEFT\", step })\n prevent = state.context.isHorizontal\n },\n ArrowRight() {\n send({ type: \"ARROW_RIGHT\", step })\n prevent = state.context.isHorizontal\n },\n PageUp() {\n send({ type: \"PAGE_UP\", step })\n },\n PageDown() {\n send({ type: \"PAGE_DOWN\", step })\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) return\n exec(event)\n\n if (prevent) {\n event.preventDefault()\n }\n },\n style: dom.getThumbStyle(state.context),\n }),\n\n hiddenInputProps: normalize.input({\n type: \"text\",\n defaultValue: state.context.value,\n name: state.context.name,\n form: state.context.form,\n id: dom.getHiddenInputId(state.context),\n hidden: true,\n }),\n\n outputProps: normalize.output({\n ...parts.output.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n id: dom.getOutputId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n \"aria-live\": \"off\",\n }),\n\n trackProps: normalize.element({\n ...parts.track.attrs,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n style: dom.getTrackStyle(),\n }),\n\n rangeProps: normalize.element({\n ...parts.range.attrs,\n id: dom.getRangeId(state.context),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n }),\n\n controlProps: normalize.element({\n ...parts.control.attrs,\n id: dom.getControlId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n onPointerDown(event) {\n if (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n style: dom.getControlStyle(),\n }),\n\n markerGroupProps: normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n }),\n\n getMarkerProps({ value }: { value: number }) {\n const percent = getValuePercentFn(value)\n const style = dom.getMarkerStyle(state.context, percent)\n const markerState =\n value > state.context.value ? \"over-value\" : value < state.context.value ? \"under-value\" : \"at-value\"\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, value),\n role: \"presentation\",\n \"data-orientation\": state.context.orientation,\n \"data-value\": value,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint } from \"@zag-js/dom-event\"\nimport { createScope } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styles } from \"./slider.style\"\nimport type { MachineContext as Ctx, Point } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styles,\n\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx) => ctx.ids?.thumb ?? `slider:${ctx.id}:thumb`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getHiddenInputId: (ctx: Ctx) => ctx.ids?.hiddenInput ?? `slider:${ctx.id}:input`,\n getOutputId: (ctx: Ctx) => ctx.ids?.output ?? `slider:${ctx.id}:output`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getMarkerId: (ctx: Ctx, value: number) => `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx) => dom.getById(ctx, dom.getThumbId(ctx)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getHiddenInputEl: (ctx: Ctx) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point): number | undefined {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n\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\n dispatchChangeEvent(ctx: Ctx) {\n const input = dom.getHiddenInputEl(ctx)\n if (!input) return\n dispatchInputValueEvent(input, { value: ctx.value })\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 * 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 * 1.5, -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 getThumbOffset(ctx: SharedContext) {\n const percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n\n if (ctx.thumbAlignment === \"center\") {\n return `${percent}%`\n }\n\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getVisibility(ctx: SharedContext) {\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: SharedContext): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : ctx.isRtl ? \"right\" : \"left\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: \"var(--slider-thumb-offset)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRangeOffsets(ctx: Ctx) {\n let start = \"0%\"\n let end = `${100 - ctx.valuePercent}%`\n\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent < 50\n start = isNegative ? `${ctx.valuePercent}%` : \"50%\"\n end = isNegative ? \"50%\" : end\n }\n\n return { start, end }\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 * 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 return {\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : \"translateX(-50%)\",\n \"--slider-thumb-offset\": getThumbOffset(ctx),\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\">, percent: number): Style {\n return {\n position: \"absolute\",\n pointerEvents: \"none\",\n [ctx.isHorizontal ? \"left\" : \"bottom\"]: `${(ctx.isRtl ? 1 - percent : percent) * 100}%`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getLabelStyle(): Style {\n return { userSelect: \"none\" }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getTrackStyle(): Style {\n return { position: \"relative\" }\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 styles = {\n getThumbOffset,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getRootStyle,\n getMarkerStyle,\n getLabelStyle,\n getTrackStyle,\n getMarkerGroupStyle,\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { clampValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport { constrainValue, decrement, increment } from \"./slider.utils\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n disabled: false,\n threshold: 5,\n dir: \"ltr\",\n origin: \"start\",\n orientation: \"horizontal\",\n initialValue: null,\n value: 0,\n step: 1,\n min: 0,\n max: 100,\n ...ctx,\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 isInteractive: (ctx) => !(ctx.disabled || ctx.readOnly),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize !== null,\n valuePercent: (ctx) => 100 * getValuePercent(ctx.value, ctx.min, ctx.max),\n },\n\n watch: {\n value: [\"invokeOnChange\", \"dispatchChangeEvent\"],\n },\n\n activities: [\"trackFormControlState\", \"trackThumbSize\"],\n\n on: {\n SET_VALUE: {\n actions: \"setValue\",\n },\n INCREMENT: {\n actions: \"increment\",\n },\n DECREMENT: {\n actions: \"decrement\",\n },\n },\n\n entry: [\"checkValue\"],\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n FOCUS: \"focus\",\n },\n },\n\n focus: {\n entry: \"focusThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n ARROW_LEFT: {\n guard: \"isHorizontal\",\n actions: \"decrement\",\n },\n ARROW_RIGHT: {\n guard: \"isHorizontal\",\n actions: \"increment\",\n },\n ARROW_UP: {\n guard: \"isVertical\",\n actions: \"increment\",\n },\n ARROW_DOWN: {\n guard: \"isVertical\",\n actions: \"decrement\",\n },\n PAGE_UP: {\n actions: \"increment\",\n },\n PAGE_DOWN: {\n actions: \"decrement\",\n },\n HOME: {\n actions: \"setToMin\",\n },\n END: {\n actions: \"setToMax\",\n },\n BLUR: \"idle\",\n },\n },\n\n dragging: {\n entry: \"focusThumb\",\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 isHorizontal: (ctx) => ctx.isHorizontal,\n isVertical: (ctx) => ctx.isVertical,\n },\n\n activities: {\n trackFormControlState(ctx) {\n return trackFormControl(dom.getHiddenInputEl(ctx), {\n onFieldsetDisabled() {\n ctx.disabled = true\n },\n onFormReset() {\n if (ctx.initialValue != null) {\n ctx.value = ctx.initialValue\n }\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 trackThumbSize(ctx, _evt) {\n if (ctx.thumbAlignment !== \"contain\") return\n return trackElementSize(dom.getThumbEl(ctx), (size) => {\n if (size) ctx.thumbSize = size\n })\n },\n },\n\n actions: {\n checkValue(ctx) {\n const value = constrainValue(ctx, ctx.value)\n ctx.value = value\n ctx.initialValue = value\n },\n invokeOnChangeStart(ctx) {\n ctx.onChangeStart?.({ value: ctx.value })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onChangeEnd?.({ value: ctx.value })\n },\n invokeOnChange(ctx) {\n ctx.onChange?.({ value: ctx.value })\n },\n dispatchChangeEvent(ctx) {\n dom.dispatchChangeEvent(ctx)\n },\n setPointerValue(ctx, evt) {\n const value = dom.getValueFromPoint(ctx, evt.point)\n if (value == null) return\n ctx.value = clampValue(value, ctx.min, ctx.max)\n },\n focusThumb(ctx) {\n raf(() => dom.getThumbEl(ctx)?.focus())\n },\n decrement(ctx, evt) {\n ctx.value = decrement(ctx, evt.step)\n },\n increment(ctx, evt) {\n ctx.value = increment(ctx, evt.step)\n },\n setToMin(ctx) {\n ctx.value = ctx.min\n },\n setToMax(ctx) {\n ctx.value = ctx.max\n },\n setValue(ctx, evt) {\n ctx.value = constrainValue(ctx, evt.value)\n },\n },\n },\n )\n}\n","import { clampValue, getNextStepValue, getPreviousStepValue, snapValueToStep } from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function constrainValue(ctx: Ctx, value: number) {\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, ctx.min, ctx.max)\n}\n\nexport function decrement(ctx: Ctx, step?: number) {\n const index = 0\n const values = getPreviousStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n\nexport function increment(ctx: Ctx, step?: number) {\n const index = 0\n const values = getNextStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n"],"mappings":"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","names":["import_dom_event","import_dom_query","import_numeric_range","import_numeric_range","getValue","import_dom_event","import_dom_query","import_form_utils","import_numeric_range","import_numeric_range","ctx"]}
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.machine.ts","../src/slider.utils.ts"],"sourcesContent":["export { anatomy } from \"./slider.anatomy\"\nexport { connect } from \"./slider.connect\"\nexport { dom as unstable__dom } from \"./slider.dom\"\nexport { machine } from \"./slider.machine\"\nexport type { UserDefinedContext as Context, MachineApi as Api } from \"./slider.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"output\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n getNativeEvent,\n isLeftClick,\n isModifiedEvent,\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\"\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 ariaValueText = state.context.getAriaValueText?.(state.context.value)\n\n const isFocused = state.matches(\"focus\")\n const isDragging = state.matches(\"dragging\")\n const isDisabled = state.context.disabled\n const isInteractive = state.context.isInteractive\n const isInvalid = state.context.invalid\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n return {\n isFocused,\n isDragging,\n value: state.context.value,\n percent: getValuePercent(state.context.value, state.context.min, state.context.max),\n\n setValue(value: number) {\n send({ type: \"SET_VALUE\", value })\n },\n\n getPercentValue: getPercentValueFn,\n\n getValuePercent: getValuePercentFn,\n\n focus() {\n dom.getThumbEl(state.context)?.focus()\n },\n /**\n * Function to increment the value of the slider by the step.\n */\n increment() {\n send(\"INCREMENT\")\n },\n\n decrement() {\n send(\"DECREMENT\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(isInvalid),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n }),\n\n labelProps: normalize.label({\n ...parts.label.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-focus\": dataAttr(isFocused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onClick(event) {\n if (!isInteractive) return\n event.preventDefault()\n dom.getThumbEl(state.context)?.focus()\n },\n style: dom.getLabelStyle(),\n }),\n\n thumbProps: normalize.element({\n ...parts.thumb.attrs,\n id: dom.getThumbId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n draggable: false,\n \"aria-invalid\": ariaAttr(isInvalid),\n \"data-invalid\": dataAttr(isInvalid),\n \"aria-disabled\": ariaAttr(isDisabled),\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabel ? undefined : ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": state.context.max,\n \"aria-valuemin\": state.context.min,\n \"aria-valuenow\": state.context.value,\n \"aria-valuetext\": ariaValueText,\n role: \"slider\",\n tabIndex: isDisabled ? undefined : 0,\n onBlur() {\n if (!isInteractive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!isInteractive) return\n send(\"FOCUS\")\n },\n onKeyDown(event) {\n if (!isInteractive) return\n const step = getEventStep(event) * state.context.step\n let prevent = true\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"ARROW_UP\", step })\n prevent = state.context.isVertical\n },\n ArrowDown() {\n send({ type: \"ARROW_DOWN\", step })\n prevent = state.context.isVertical\n },\n ArrowLeft() {\n send({ type: \"ARROW_LEFT\", step })\n prevent = state.context.isHorizontal\n },\n ArrowRight() {\n send({ type: \"ARROW_RIGHT\", step })\n prevent = state.context.isHorizontal\n },\n PageUp() {\n send({ type: \"PAGE_UP\", step })\n },\n PageDown() {\n send({ type: \"PAGE_DOWN\", step })\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) return\n exec(event)\n\n if (prevent) {\n event.preventDefault()\n }\n },\n style: dom.getThumbStyle(state.context),\n }),\n\n hiddenInputProps: normalize.input({\n defaultValue: state.context.value,\n name: state.context.name,\n form: state.context.form,\n id: dom.getHiddenInputId(state.context),\n hidden: true,\n }),\n\n outputProps: normalize.output({\n ...parts.output.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n id: dom.getOutputId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n \"aria-live\": \"off\",\n }),\n\n trackProps: normalize.element({\n ...parts.track.attrs,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n style: dom.getTrackStyle(),\n }),\n\n rangeProps: normalize.element({\n ...parts.range.attrs,\n id: dom.getRangeId(state.context),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n }),\n\n controlProps: normalize.element({\n ...parts.control.attrs,\n id: dom.getControlId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n onPointerDown(event) {\n if (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n style: dom.getControlStyle(),\n }),\n\n markerGroupProps: normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n }),\n\n getMarkerProps({ value }: { value: number }) {\n const percent = getValuePercentFn(value)\n const style = dom.getMarkerStyle(state.context, percent)\n const markerState =\n value > state.context.value ? \"over-value\" : value < state.context.value ? \"under-value\" : \"at-value\"\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, value),\n role: \"presentation\",\n \"data-orientation\": state.context.orientation,\n \"data-value\": value,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint } from \"@zag-js/dom-event\"\nimport { createScope } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styles } from \"./slider.style\"\nimport type { MachineContext as Ctx, Point } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styles,\n\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx) => ctx.ids?.thumb ?? `slider:${ctx.id}:thumb`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getHiddenInputId: (ctx: Ctx) => ctx.ids?.hiddenInput ?? `slider:${ctx.id}:input`,\n getOutputId: (ctx: Ctx) => ctx.ids?.output ?? `slider:${ctx.id}:output`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getMarkerId: (ctx: Ctx, value: number) => `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx) => dom.getById(ctx, dom.getThumbId(ctx)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getHiddenInputEl: (ctx: Ctx) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point): number | undefined {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n\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\n dispatchChangeEvent(ctx: Ctx) {\n const input = dom.getHiddenInputEl(ctx)\n if (!input) return\n dispatchInputValueEvent(input, { value: ctx.value })\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 * 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 * 1.5, -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 getThumbOffset(ctx: SharedContext) {\n const percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n\n if (ctx.thumbAlignment === \"center\") {\n return `${percent}%`\n }\n\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getVisibility(ctx: SharedContext) {\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: SharedContext): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : ctx.isRtl ? \"right\" : \"left\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: \"var(--slider-thumb-offset)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRangeOffsets(ctx: Ctx) {\n let start = \"0%\"\n let end = `${100 - ctx.valuePercent}%`\n\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent < 50\n start = isNegative ? `${ctx.valuePercent}%` : \"50%\"\n end = isNegative ? \"50%\" : end\n }\n\n return { start, end }\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 * 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 return {\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : \"translateX(-50%)\",\n \"--slider-thumb-offset\": getThumbOffset(ctx),\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\">, percent: number): Style {\n return {\n position: \"absolute\",\n pointerEvents: \"none\",\n [ctx.isHorizontal ? \"left\" : \"bottom\"]: `${(ctx.isRtl ? 1 - percent : percent) * 100}%`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getLabelStyle(): Style {\n return { userSelect: \"none\" }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getTrackStyle(): Style {\n return { position: \"relative\" }\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 styles = {\n getThumbOffset,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getRootStyle,\n getMarkerStyle,\n getLabelStyle,\n getTrackStyle,\n getMarkerGroupStyle,\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { clampValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport { constrainValue, decrement, increment } from \"./slider.utils\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n disabled: false,\n threshold: 5,\n dir: \"ltr\",\n origin: \"start\",\n orientation: \"horizontal\",\n value: 0,\n step: 1,\n min: 0,\n max: 100,\n ...ctx,\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 isInteractive: (ctx) => !(ctx.disabled || ctx.readOnly),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize !== null,\n valuePercent: (ctx) => 100 * getValuePercent(ctx.value, ctx.min, ctx.max),\n },\n\n watch: {\n value: [\"syncInputElement\"],\n },\n\n activities: [\"trackFormControlState\", \"trackThumbSize\"],\n\n on: {\n SET_VALUE: {\n actions: \"setValue\",\n },\n INCREMENT: {\n actions: \"increment\",\n },\n DECREMENT: {\n actions: \"decrement\",\n },\n },\n\n entry: [\"checkValue\"],\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n FOCUS: \"focus\",\n },\n },\n\n focus: {\n entry: \"focusThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n ARROW_LEFT: {\n guard: \"isHorizontal\",\n actions: \"decrement\",\n },\n ARROW_RIGHT: {\n guard: \"isHorizontal\",\n actions: \"increment\",\n },\n ARROW_UP: {\n guard: \"isVertical\",\n actions: \"increment\",\n },\n ARROW_DOWN: {\n guard: \"isVertical\",\n actions: \"decrement\",\n },\n PAGE_UP: {\n actions: \"increment\",\n },\n PAGE_DOWN: {\n actions: \"decrement\",\n },\n HOME: {\n actions: \"setToMin\",\n },\n END: {\n actions: \"setToMax\",\n },\n BLUR: \"idle\",\n },\n },\n\n dragging: {\n entry: \"focusThumb\",\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 isHorizontal: (ctx) => ctx.isHorizontal,\n isVertical: (ctx) => ctx.isVertical,\n },\n\n activities: {\n trackFormControlState(ctx, _evt, { initialContext }) {\n return trackFormControl(dom.getHiddenInputEl(ctx), {\n onFieldsetDisabled() {\n ctx.disabled = true\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 trackThumbSize(ctx, _evt) {\n if (ctx.thumbAlignment !== \"contain\") return\n return trackElementSize(dom.getThumbEl(ctx), (size) => {\n if (size) ctx.thumbSize = size\n })\n },\n },\n\n actions: {\n checkValue(ctx) {\n ctx.value = constrainValue(ctx, ctx.value)\n },\n invokeOnChangeStart(ctx) {\n ctx.onChangeStart?.({ value: ctx.value })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onChangeEnd?.({ value: ctx.value })\n },\n setPointerValue(ctx, evt) {\n const value = dom.getValueFromPoint(ctx, evt.point)\n if (value == null) return\n set.value(ctx, clampValue(value, ctx.min, ctx.max))\n },\n focusThumb(ctx) {\n raf(() => dom.getThumbEl(ctx)?.focus({ preventScroll: true }))\n },\n decrement(ctx, evt) {\n const value = decrement(ctx, evt.step)\n set.value(ctx, value)\n },\n increment(ctx, evt) {\n const value = increment(ctx, evt.step)\n set.value(ctx, value)\n },\n setToMin(ctx) {\n set.value(ctx, ctx.min)\n },\n setToMax(ctx) {\n set.value(ctx, ctx.max)\n },\n setValue(ctx, evt) {\n const value = constrainValue(ctx, evt.value)\n set.value(ctx, value)\n },\n syncInputElement(ctx) {\n const inputEl = dom.getHiddenInputEl(ctx)\n dom.setValue(inputEl, ctx.value)\n },\n },\n },\n )\n}\n\nconst invoke = {\n change: (ctx: MachineContext) => {\n ctx.onChange?.({ value: ctx.value })\n dom.dispatchChangeEvent(ctx)\n },\n}\n\nconst set = {\n value: (ctx: MachineContext, value: number) => {\n ctx.value = value\n invoke.change(ctx)\n },\n}\n","import { clampValue, getNextStepValue, getPreviousStepValue, snapValueToStep } from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function constrainValue(ctx: Ctx, value: number) {\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, ctx.min, ctx.max)\n}\n\nexport function decrement(ctx: Ctx, step?: number) {\n const index = 0\n const values = getPreviousStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n\nexport function increment(ctx: Ctx, step?: number) {\n const index = 0\n const values = getNextStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n"],"mappings":"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","names":["import_dom_event","import_dom_query","import_numeric_range","import_numeric_range","getValue","import_dom_event","import_dom_query","import_form_utils","import_numeric_range","import_numeric_range","ctx"]}
package/dist/index.mjs CHANGED
@@ -318,7 +318,6 @@ function connect(state, send, normalize) {
318
318
  style: dom.getThumbStyle(state.context)
319
319
  }),
320
320
  hiddenInputProps: normalize.input({
321
- type: "text",
322
321
  defaultValue: state.context.value,
323
322
  name: state.context.name,
324
323
  form: state.context.form,
@@ -446,7 +445,6 @@ function machine(userContext) {
446
445
  dir: "ltr",
447
446
  origin: "start",
448
447
  orientation: "horizontal",
449
- initialValue: null,
450
448
  value: 0,
451
449
  step: 1,
452
450
  min: 0,
@@ -462,7 +460,7 @@ function machine(userContext) {
462
460
  valuePercent: (ctx2) => 100 * getValuePercent3(ctx2.value, ctx2.min, ctx2.max)
463
461
  },
464
462
  watch: {
465
- value: ["invokeOnChange", "dispatchChangeEvent"]
463
+ value: ["syncInputElement"]
466
464
  },
467
465
  activities: ["trackFormControlState", "trackThumbSize"],
468
466
  on: {
@@ -546,15 +544,13 @@ function machine(userContext) {
546
544
  isVertical: (ctx2) => ctx2.isVertical
547
545
  },
548
546
  activities: {
549
- trackFormControlState(ctx2) {
547
+ trackFormControlState(ctx2, _evt, { initialContext }) {
550
548
  return trackFormControl(dom.getHiddenInputEl(ctx2), {
551
549
  onFieldsetDisabled() {
552
550
  ctx2.disabled = true;
553
551
  },
554
552
  onFormReset() {
555
- if (ctx2.initialValue != null) {
556
- ctx2.value = ctx2.initialValue;
557
- }
553
+ set.value(ctx2, initialContext.value);
558
554
  }
559
555
  });
560
556
  },
@@ -579,9 +575,7 @@ function machine(userContext) {
579
575
  },
580
576
  actions: {
581
577
  checkValue(ctx2) {
582
- const value = constrainValue(ctx2, ctx2.value);
583
- ctx2.value = value;
584
- ctx2.initialValue = value;
578
+ ctx2.value = constrainValue(ctx2, ctx2.value);
585
579
  },
586
580
  invokeOnChangeStart(ctx2) {
587
581
  ctx2.onChangeStart?.({ value: ctx2.value });
@@ -589,40 +583,53 @@ function machine(userContext) {
589
583
  invokeOnChangeEnd(ctx2) {
590
584
  ctx2.onChangeEnd?.({ value: ctx2.value });
591
585
  },
592
- invokeOnChange(ctx2) {
593
- ctx2.onChange?.({ value: ctx2.value });
594
- },
595
- dispatchChangeEvent(ctx2) {
596
- dom.dispatchChangeEvent(ctx2);
597
- },
598
586
  setPointerValue(ctx2, evt) {
599
587
  const value = dom.getValueFromPoint(ctx2, evt.point);
600
588
  if (value == null)
601
589
  return;
602
- ctx2.value = clampValue2(value, ctx2.min, ctx2.max);
590
+ set.value(ctx2, clampValue2(value, ctx2.min, ctx2.max));
603
591
  },
604
592
  focusThumb(ctx2) {
605
- raf(() => dom.getThumbEl(ctx2)?.focus());
593
+ raf(() => dom.getThumbEl(ctx2)?.focus({ preventScroll: true }));
606
594
  },
607
595
  decrement(ctx2, evt) {
608
- ctx2.value = decrement(ctx2, evt.step);
596
+ const value = decrement(ctx2, evt.step);
597
+ set.value(ctx2, value);
609
598
  },
610
599
  increment(ctx2, evt) {
611
- ctx2.value = increment(ctx2, evt.step);
600
+ const value = increment(ctx2, evt.step);
601
+ set.value(ctx2, value);
612
602
  },
613
603
  setToMin(ctx2) {
614
- ctx2.value = ctx2.min;
604
+ set.value(ctx2, ctx2.min);
615
605
  },
616
606
  setToMax(ctx2) {
617
- ctx2.value = ctx2.max;
607
+ set.value(ctx2, ctx2.max);
618
608
  },
619
609
  setValue(ctx2, evt) {
620
- ctx2.value = constrainValue(ctx2, evt.value);
610
+ const value = constrainValue(ctx2, evt.value);
611
+ set.value(ctx2, value);
612
+ },
613
+ syncInputElement(ctx2) {
614
+ const inputEl = dom.getHiddenInputEl(ctx2);
615
+ dom.setValue(inputEl, ctx2.value);
621
616
  }
622
617
  }
623
618
  }
624
619
  );
625
620
  }
621
+ var invoke = {
622
+ change: (ctx) => {
623
+ ctx.onChange?.({ value: ctx.value });
624
+ dom.dispatchChangeEvent(ctx);
625
+ }
626
+ };
627
+ var set = {
628
+ value: (ctx, value) => {
629
+ ctx.value = value;
630
+ invoke.change(ctx);
631
+ }
632
+ };
626
633
  export {
627
634
  anatomy,
628
635
  connect,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/slider.anatomy.ts","../src/slider.connect.ts","../src/slider.dom.ts","../src/slider.style.ts","../src/slider.machine.ts","../src/slider.utils.ts"],"sourcesContent":["import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"output\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n getNativeEvent,\n isLeftClick,\n isModifiedEvent,\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 { PublicApi, Send, State } from \"./slider.types\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): PublicApi<T> {\n const ariaLabel = state.context[\"aria-label\"]\n const ariaLabelledBy = state.context[\"aria-labelledby\"]\n const ariaValueText = state.context.getAriaValueText?.(state.context.value)\n\n const isFocused = state.matches(\"focus\")\n const isDragging = state.matches(\"dragging\")\n const isDisabled = state.context.disabled\n const isInteractive = state.context.isInteractive\n const isInvalid = state.context.invalid\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n // TODO - getMarkerState\n\n return {\n isFocused,\n isDragging,\n value: state.context.value,\n percent: getValuePercent(state.context.value, state.context.min, state.context.max),\n\n setValue(value: number) {\n send({ type: \"SET_VALUE\", value })\n },\n\n getPercentValue: getPercentValueFn,\n\n getValuePercent: getValuePercentFn,\n\n focus() {\n dom.getThumbEl(state.context)?.focus()\n },\n /**\n * Function to increment the value of the slider by the step.\n */\n increment() {\n send(\"INCREMENT\")\n },\n\n decrement() {\n send(\"DECREMENT\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(isInvalid),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n }),\n\n labelProps: normalize.label({\n ...parts.label.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-focus\": dataAttr(isFocused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onClick(event) {\n if (!isInteractive) return\n event.preventDefault()\n dom.getThumbEl(state.context)?.focus()\n },\n style: dom.getLabelStyle(),\n }),\n\n thumbProps: normalize.element({\n ...parts.thumb.attrs,\n id: dom.getThumbId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n draggable: false,\n \"aria-invalid\": ariaAttr(isInvalid),\n \"data-invalid\": dataAttr(isInvalid),\n \"aria-disabled\": ariaAttr(isDisabled),\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabel ? undefined : ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": state.context.max,\n \"aria-valuemin\": state.context.min,\n \"aria-valuenow\": state.context.value,\n \"aria-valuetext\": ariaValueText,\n role: \"slider\",\n tabIndex: isDisabled ? undefined : 0,\n onBlur() {\n if (!isInteractive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!isInteractive) return\n send(\"FOCUS\")\n },\n onKeyDown(event) {\n if (!isInteractive) return\n const step = getEventStep(event) * state.context.step\n let prevent = true\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"ARROW_UP\", step })\n prevent = state.context.isVertical\n },\n ArrowDown() {\n send({ type: \"ARROW_DOWN\", step })\n prevent = state.context.isVertical\n },\n ArrowLeft() {\n send({ type: \"ARROW_LEFT\", step })\n prevent = state.context.isHorizontal\n },\n ArrowRight() {\n send({ type: \"ARROW_RIGHT\", step })\n prevent = state.context.isHorizontal\n },\n PageUp() {\n send({ type: \"PAGE_UP\", step })\n },\n PageDown() {\n send({ type: \"PAGE_DOWN\", step })\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) return\n exec(event)\n\n if (prevent) {\n event.preventDefault()\n }\n },\n style: dom.getThumbStyle(state.context),\n }),\n\n hiddenInputProps: normalize.input({\n type: \"text\",\n defaultValue: state.context.value,\n name: state.context.name,\n form: state.context.form,\n id: dom.getHiddenInputId(state.context),\n hidden: true,\n }),\n\n outputProps: normalize.output({\n ...parts.output.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n id: dom.getOutputId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n \"aria-live\": \"off\",\n }),\n\n trackProps: normalize.element({\n ...parts.track.attrs,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n style: dom.getTrackStyle(),\n }),\n\n rangeProps: normalize.element({\n ...parts.range.attrs,\n id: dom.getRangeId(state.context),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n }),\n\n controlProps: normalize.element({\n ...parts.control.attrs,\n id: dom.getControlId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n onPointerDown(event) {\n if (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n style: dom.getControlStyle(),\n }),\n\n markerGroupProps: normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n }),\n\n getMarkerProps({ value }: { value: number }) {\n const percent = getValuePercentFn(value)\n const style = dom.getMarkerStyle(state.context, percent)\n const markerState =\n value > state.context.value ? \"over-value\" : value < state.context.value ? \"under-value\" : \"at-value\"\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, value),\n role: \"presentation\",\n \"data-orientation\": state.context.orientation,\n \"data-value\": value,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint } from \"@zag-js/dom-event\"\nimport { createScope } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styles } from \"./slider.style\"\nimport type { MachineContext as Ctx, Point } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styles,\n\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx) => ctx.ids?.thumb ?? `slider:${ctx.id}:thumb`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getHiddenInputId: (ctx: Ctx) => ctx.ids?.hiddenInput ?? `slider:${ctx.id}:input`,\n getOutputId: (ctx: Ctx) => ctx.ids?.output ?? `slider:${ctx.id}:output`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getMarkerId: (ctx: Ctx, value: number) => `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx) => dom.getById(ctx, dom.getThumbId(ctx)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getHiddenInputEl: (ctx: Ctx) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point): number | undefined {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n\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\n dispatchChangeEvent(ctx: Ctx) {\n const input = dom.getHiddenInputEl(ctx)\n if (!input) return\n dispatchInputValueEvent(input, { value: ctx.value })\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 * 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 * 1.5, -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 getThumbOffset(ctx: SharedContext) {\n const percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n\n if (ctx.thumbAlignment === \"center\") {\n return `${percent}%`\n }\n\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getVisibility(ctx: SharedContext) {\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: SharedContext): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : ctx.isRtl ? \"right\" : \"left\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: \"var(--slider-thumb-offset)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRangeOffsets(ctx: Ctx) {\n let start = \"0%\"\n let end = `${100 - ctx.valuePercent}%`\n\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent < 50\n start = isNegative ? `${ctx.valuePercent}%` : \"50%\"\n end = isNegative ? \"50%\" : end\n }\n\n return { start, end }\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 * 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 return {\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : \"translateX(-50%)\",\n \"--slider-thumb-offset\": getThumbOffset(ctx),\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\">, percent: number): Style {\n return {\n position: \"absolute\",\n pointerEvents: \"none\",\n [ctx.isHorizontal ? \"left\" : \"bottom\"]: `${(ctx.isRtl ? 1 - percent : percent) * 100}%`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getLabelStyle(): Style {\n return { userSelect: \"none\" }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getTrackStyle(): Style {\n return { position: \"relative\" }\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 styles = {\n getThumbOffset,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getRootStyle,\n getMarkerStyle,\n getLabelStyle,\n getTrackStyle,\n getMarkerGroupStyle,\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { clampValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport { constrainValue, decrement, increment } from \"./slider.utils\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n disabled: false,\n threshold: 5,\n dir: \"ltr\",\n origin: \"start\",\n orientation: \"horizontal\",\n initialValue: null,\n value: 0,\n step: 1,\n min: 0,\n max: 100,\n ...ctx,\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 isInteractive: (ctx) => !(ctx.disabled || ctx.readOnly),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize !== null,\n valuePercent: (ctx) => 100 * getValuePercent(ctx.value, ctx.min, ctx.max),\n },\n\n watch: {\n value: [\"invokeOnChange\", \"dispatchChangeEvent\"],\n },\n\n activities: [\"trackFormControlState\", \"trackThumbSize\"],\n\n on: {\n SET_VALUE: {\n actions: \"setValue\",\n },\n INCREMENT: {\n actions: \"increment\",\n },\n DECREMENT: {\n actions: \"decrement\",\n },\n },\n\n entry: [\"checkValue\"],\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n FOCUS: \"focus\",\n },\n },\n\n focus: {\n entry: \"focusThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n ARROW_LEFT: {\n guard: \"isHorizontal\",\n actions: \"decrement\",\n },\n ARROW_RIGHT: {\n guard: \"isHorizontal\",\n actions: \"increment\",\n },\n ARROW_UP: {\n guard: \"isVertical\",\n actions: \"increment\",\n },\n ARROW_DOWN: {\n guard: \"isVertical\",\n actions: \"decrement\",\n },\n PAGE_UP: {\n actions: \"increment\",\n },\n PAGE_DOWN: {\n actions: \"decrement\",\n },\n HOME: {\n actions: \"setToMin\",\n },\n END: {\n actions: \"setToMax\",\n },\n BLUR: \"idle\",\n },\n },\n\n dragging: {\n entry: \"focusThumb\",\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 isHorizontal: (ctx) => ctx.isHorizontal,\n isVertical: (ctx) => ctx.isVertical,\n },\n\n activities: {\n trackFormControlState(ctx) {\n return trackFormControl(dom.getHiddenInputEl(ctx), {\n onFieldsetDisabled() {\n ctx.disabled = true\n },\n onFormReset() {\n if (ctx.initialValue != null) {\n ctx.value = ctx.initialValue\n }\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 trackThumbSize(ctx, _evt) {\n if (ctx.thumbAlignment !== \"contain\") return\n return trackElementSize(dom.getThumbEl(ctx), (size) => {\n if (size) ctx.thumbSize = size\n })\n },\n },\n\n actions: {\n checkValue(ctx) {\n const value = constrainValue(ctx, ctx.value)\n ctx.value = value\n ctx.initialValue = value\n },\n invokeOnChangeStart(ctx) {\n ctx.onChangeStart?.({ value: ctx.value })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onChangeEnd?.({ value: ctx.value })\n },\n invokeOnChange(ctx) {\n ctx.onChange?.({ value: ctx.value })\n },\n dispatchChangeEvent(ctx) {\n dom.dispatchChangeEvent(ctx)\n },\n setPointerValue(ctx, evt) {\n const value = dom.getValueFromPoint(ctx, evt.point)\n if (value == null) return\n ctx.value = clampValue(value, ctx.min, ctx.max)\n },\n focusThumb(ctx) {\n raf(() => dom.getThumbEl(ctx)?.focus())\n },\n decrement(ctx, evt) {\n ctx.value = decrement(ctx, evt.step)\n },\n increment(ctx, evt) {\n ctx.value = increment(ctx, evt.step)\n },\n setToMin(ctx) {\n ctx.value = ctx.min\n },\n setToMax(ctx) {\n ctx.value = ctx.max\n },\n setValue(ctx, evt) {\n ctx.value = constrainValue(ctx, evt.value)\n },\n },\n },\n )\n}\n","import { clampValue, getNextStepValue, getPreviousStepValue, snapValueToStep } from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function constrainValue(ctx: Ctx, value: number) {\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, ctx.min, ctx.max)\n}\n\nexport function decrement(ctx: Ctx, step?: number) {\n const index = 0\n const values = getPreviousStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n\nexport function increment(ctx: Ctx, step?: number) {\n const index = 0\n const values = getNextStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n"],"mappings":"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","names":["getPercentValue","getValuePercent","getValue","getPercentValue","getValuePercent","clampValue","getValuePercent","ctx","getValuePercent","clampValue"]}
1
+ {"version":3,"sources":["../src/slider.anatomy.ts","../src/slider.connect.ts","../src/slider.dom.ts","../src/slider.style.ts","../src/slider.machine.ts","../src/slider.utils.ts"],"sourcesContent":["import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"slider\").parts(\n \"root\",\n \"label\",\n \"thumb\",\n \"output\",\n \"track\",\n \"range\",\n \"control\",\n \"markerGroup\",\n \"marker\",\n)\nexport const parts = anatomy.build()\n","import {\n getEventKey,\n getEventPoint,\n getEventStep,\n getNativeEvent,\n isLeftClick,\n isModifiedEvent,\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\"\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 ariaValueText = state.context.getAriaValueText?.(state.context.value)\n\n const isFocused = state.matches(\"focus\")\n const isDragging = state.matches(\"dragging\")\n const isDisabled = state.context.disabled\n const isInteractive = state.context.isInteractive\n const isInvalid = state.context.invalid\n\n function getPercentValueFn(percent: number) {\n return getPercentValue(percent, state.context.min, state.context.max, state.context.step)\n }\n\n function getValuePercentFn(value: number) {\n return getValuePercent(value, state.context.min, state.context.max)\n }\n\n return {\n isFocused,\n isDragging,\n value: state.context.value,\n percent: getValuePercent(state.context.value, state.context.min, state.context.max),\n\n setValue(value: number) {\n send({ type: \"SET_VALUE\", value })\n },\n\n getPercentValue: getPercentValueFn,\n\n getValuePercent: getValuePercentFn,\n\n focus() {\n dom.getThumbEl(state.context)?.focus()\n },\n /**\n * Function to increment the value of the slider by the step.\n */\n increment() {\n send(\"INCREMENT\")\n },\n\n decrement() {\n send(\"DECREMENT\")\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-orientation\": state.context.orientation,\n \"data-invalid\": dataAttr(isInvalid),\n id: dom.getRootId(state.context),\n dir: state.context.dir,\n style: dom.getRootStyle(state.context),\n }),\n\n labelProps: normalize.label({\n ...parts.label.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-focus\": dataAttr(isFocused),\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onClick(event) {\n if (!isInteractive) return\n event.preventDefault()\n dom.getThumbEl(state.context)?.focus()\n },\n style: dom.getLabelStyle(),\n }),\n\n thumbProps: normalize.element({\n ...parts.thumb.attrs,\n id: dom.getThumbId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n draggable: false,\n \"aria-invalid\": ariaAttr(isInvalid),\n \"data-invalid\": dataAttr(isInvalid),\n \"aria-disabled\": ariaAttr(isDisabled),\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabel ? undefined : ariaLabelledBy ?? dom.getLabelId(state.context),\n \"aria-orientation\": state.context.orientation,\n \"aria-valuemax\": state.context.max,\n \"aria-valuemin\": state.context.min,\n \"aria-valuenow\": state.context.value,\n \"aria-valuetext\": ariaValueText,\n role: \"slider\",\n tabIndex: isDisabled ? undefined : 0,\n onBlur() {\n if (!isInteractive) return\n send(\"BLUR\")\n },\n onFocus() {\n if (!isInteractive) return\n send(\"FOCUS\")\n },\n onKeyDown(event) {\n if (!isInteractive) return\n const step = getEventStep(event) * state.context.step\n let prevent = true\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"ARROW_UP\", step })\n prevent = state.context.isVertical\n },\n ArrowDown() {\n send({ type: \"ARROW_DOWN\", step })\n prevent = state.context.isVertical\n },\n ArrowLeft() {\n send({ type: \"ARROW_LEFT\", step })\n prevent = state.context.isHorizontal\n },\n ArrowRight() {\n send({ type: \"ARROW_RIGHT\", step })\n prevent = state.context.isHorizontal\n },\n PageUp() {\n send({ type: \"PAGE_UP\", step })\n },\n PageDown() {\n send({ type: \"PAGE_DOWN\", step })\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) return\n exec(event)\n\n if (prevent) {\n event.preventDefault()\n }\n },\n style: dom.getThumbStyle(state.context),\n }),\n\n hiddenInputProps: normalize.input({\n defaultValue: state.context.value,\n name: state.context.name,\n form: state.context.form,\n id: dom.getHiddenInputId(state.context),\n hidden: true,\n }),\n\n outputProps: normalize.output({\n ...parts.output.attrs,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n id: dom.getOutputId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n \"aria-live\": \"off\",\n }),\n\n trackProps: normalize.element({\n ...parts.track.attrs,\n id: dom.getTrackId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n style: dom.getTrackStyle(),\n }),\n\n rangeProps: normalize.element({\n ...parts.range.attrs,\n id: dom.getRangeId(state.context),\n \"data-focus\": dataAttr(isFocused),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": state.context.orientation,\n style: dom.getRangeStyle(state.context),\n }),\n\n controlProps: normalize.element({\n ...parts.control.attrs,\n id: dom.getControlId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-invalid\": dataAttr(isInvalid),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(isFocused),\n onPointerDown(event) {\n if (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\n send({ type: \"POINTER_DOWN\", point })\n\n event.preventDefault()\n event.stopPropagation()\n },\n style: dom.getControlStyle(),\n }),\n\n markerGroupProps: normalize.element({\n ...parts.markerGroup.attrs,\n role: \"presentation\",\n \"aria-hidden\": true,\n \"data-orientation\": state.context.orientation,\n style: dom.getMarkerGroupStyle(),\n }),\n\n getMarkerProps({ value }: { value: number }) {\n const percent = getValuePercentFn(value)\n const style = dom.getMarkerStyle(state.context, percent)\n const markerState =\n value > state.context.value ? \"over-value\" : value < state.context.value ? \"under-value\" : \"at-value\"\n\n return normalize.element({\n ...parts.marker.attrs,\n id: dom.getMarkerId(state.context, value),\n role: \"presentation\",\n \"data-orientation\": state.context.orientation,\n \"data-value\": value,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-state\": markerState,\n style,\n })\n },\n }\n}\n","import { getRelativePoint } from \"@zag-js/dom-event\"\nimport { createScope } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent } from \"@zag-js/form-utils\"\nimport { getPercentValue } from \"@zag-js/numeric-range\"\nimport { styles } from \"./slider.style\"\nimport type { MachineContext as Ctx, Point } from \"./slider.types\"\n\nexport const dom = createScope({\n ...styles,\n\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `slider:${ctx.id}`,\n getThumbId: (ctx: Ctx) => ctx.ids?.thumb ?? `slider:${ctx.id}:thumb`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `slider:${ctx.id}:control`,\n getHiddenInputId: (ctx: Ctx) => ctx.ids?.hiddenInput ?? `slider:${ctx.id}:input`,\n getOutputId: (ctx: Ctx) => ctx.ids?.output ?? `slider:${ctx.id}:output`,\n getTrackId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}track`,\n getRangeId: (ctx: Ctx) => ctx.ids?.track ?? `slider:${ctx.id}:range`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `slider:${ctx.id}:label`,\n getMarkerId: (ctx: Ctx, value: number) => `slider:${ctx.id}:marker:${value}`,\n\n getRootEl: (ctx: Ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getThumbEl: (ctx: Ctx) => dom.getById(ctx, dom.getThumbId(ctx)),\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getHiddenInputEl: (ctx: Ctx) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx)),\n\n getValueFromPoint(ctx: Ctx, point: Point): number | undefined {\n const controlEl = dom.getControlEl(ctx)\n if (!controlEl) return\n\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\n dispatchChangeEvent(ctx: Ctx) {\n const input = dom.getHiddenInputEl(ctx)\n if (!input) return\n dispatchInputValueEvent(input, { value: ctx.value })\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 * 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 * 1.5, -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 getThumbOffset(ctx: SharedContext) {\n const percent = getValuePercent(ctx.value, ctx.min, ctx.max) * 100\n\n if (ctx.thumbAlignment === \"center\") {\n return `${percent}%`\n }\n\n const offset = ctx.isVertical ? getVerticalThumbOffset(ctx) : getHorizontalThumbOffset(ctx)\n return `calc(${percent}% - ${offset}px)`\n}\n\nfunction getVisibility(ctx: SharedContext) {\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: SharedContext): Style {\n const placementProp = ctx.isVertical ? \"bottom\" : ctx.isRtl ? \"right\" : \"left\"\n return {\n visibility: getVisibility(ctx),\n position: \"absolute\",\n transform: \"var(--slider-thumb-transform)\",\n [placementProp]: \"var(--slider-thumb-offset)\",\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Range style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getRangeOffsets(ctx: Ctx) {\n let start = \"0%\"\n let end = `${100 - ctx.valuePercent}%`\n\n if (ctx.origin === \"center\") {\n const isNegative = ctx.valuePercent < 50\n start = isNegative ? `${ctx.valuePercent}%` : \"50%\"\n end = isNegative ? \"50%\" : end\n }\n\n return { start, end }\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 * 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 return {\n \"--slider-thumb-transform\": ctx.isVertical ? \"translateY(50%)\" : \"translateX(-50%)\",\n \"--slider-thumb-offset\": getThumbOffset(ctx),\n \"--slider-range-start\": range.start,\n \"--slider-range-end\": range.end,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Marker style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getMarkerStyle(ctx: Pick<SharedContext, \"isHorizontal\" | \"isRtl\">, percent: number): Style {\n return {\n position: \"absolute\",\n pointerEvents: \"none\",\n [ctx.isHorizontal ? \"left\" : \"bottom\"]: `${(ctx.isRtl ? 1 - percent : percent) * 100}%`,\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getLabelStyle(): Style {\n return { userSelect: \"none\" }\n}\n\n/* -----------------------------------------------------------------------------\n * Label style calculations\n * -----------------------------------------------------------------------------*/\n\nfunction getTrackStyle(): Style {\n return { position: \"relative\" }\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 styles = {\n getThumbOffset,\n getControlStyle,\n getThumbStyle,\n getRangeStyle,\n getRootStyle,\n getMarkerStyle,\n getLabelStyle,\n getTrackStyle,\n getMarkerGroupStyle,\n}\n","import { createMachine } from \"@zag-js/core\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { raf } from \"@zag-js/dom-query\"\nimport { trackElementSize } from \"@zag-js/element-size\"\nimport { trackFormControl } from \"@zag-js/form-utils\"\nimport { clampValue, getValuePercent } from \"@zag-js/numeric-range\"\nimport { compact } from \"@zag-js/utils\"\nimport { dom } from \"./slider.dom\"\nimport type { MachineContext, MachineState, UserDefinedContext } from \"./slider.types\"\nimport { constrainValue, decrement, increment } from \"./slider.utils\"\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"slider\",\n initial: \"idle\",\n context: {\n thumbSize: null,\n thumbAlignment: \"contain\",\n disabled: false,\n threshold: 5,\n dir: \"ltr\",\n origin: \"start\",\n orientation: \"horizontal\",\n value: 0,\n step: 1,\n min: 0,\n max: 100,\n ...ctx,\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 isInteractive: (ctx) => !(ctx.disabled || ctx.readOnly),\n hasMeasuredThumbSize: (ctx) => ctx.thumbSize !== null,\n valuePercent: (ctx) => 100 * getValuePercent(ctx.value, ctx.min, ctx.max),\n },\n\n watch: {\n value: [\"syncInputElement\"],\n },\n\n activities: [\"trackFormControlState\", \"trackThumbSize\"],\n\n on: {\n SET_VALUE: {\n actions: \"setValue\",\n },\n INCREMENT: {\n actions: \"increment\",\n },\n DECREMENT: {\n actions: \"decrement\",\n },\n },\n\n entry: [\"checkValue\"],\n\n states: {\n idle: {\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n FOCUS: \"focus\",\n },\n },\n\n focus: {\n entry: \"focusThumb\",\n on: {\n POINTER_DOWN: {\n target: \"dragging\",\n actions: [\"setPointerValue\", \"invokeOnChangeStart\", \"focusThumb\"],\n },\n ARROW_LEFT: {\n guard: \"isHorizontal\",\n actions: \"decrement\",\n },\n ARROW_RIGHT: {\n guard: \"isHorizontal\",\n actions: \"increment\",\n },\n ARROW_UP: {\n guard: \"isVertical\",\n actions: \"increment\",\n },\n ARROW_DOWN: {\n guard: \"isVertical\",\n actions: \"decrement\",\n },\n PAGE_UP: {\n actions: \"increment\",\n },\n PAGE_DOWN: {\n actions: \"decrement\",\n },\n HOME: {\n actions: \"setToMin\",\n },\n END: {\n actions: \"setToMax\",\n },\n BLUR: \"idle\",\n },\n },\n\n dragging: {\n entry: \"focusThumb\",\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 isHorizontal: (ctx) => ctx.isHorizontal,\n isVertical: (ctx) => ctx.isVertical,\n },\n\n activities: {\n trackFormControlState(ctx, _evt, { initialContext }) {\n return trackFormControl(dom.getHiddenInputEl(ctx), {\n onFieldsetDisabled() {\n ctx.disabled = true\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 trackThumbSize(ctx, _evt) {\n if (ctx.thumbAlignment !== \"contain\") return\n return trackElementSize(dom.getThumbEl(ctx), (size) => {\n if (size) ctx.thumbSize = size\n })\n },\n },\n\n actions: {\n checkValue(ctx) {\n ctx.value = constrainValue(ctx, ctx.value)\n },\n invokeOnChangeStart(ctx) {\n ctx.onChangeStart?.({ value: ctx.value })\n },\n invokeOnChangeEnd(ctx) {\n ctx.onChangeEnd?.({ value: ctx.value })\n },\n setPointerValue(ctx, evt) {\n const value = dom.getValueFromPoint(ctx, evt.point)\n if (value == null) return\n set.value(ctx, clampValue(value, ctx.min, ctx.max))\n },\n focusThumb(ctx) {\n raf(() => dom.getThumbEl(ctx)?.focus({ preventScroll: true }))\n },\n decrement(ctx, evt) {\n const value = decrement(ctx, evt.step)\n set.value(ctx, value)\n },\n increment(ctx, evt) {\n const value = increment(ctx, evt.step)\n set.value(ctx, value)\n },\n setToMin(ctx) {\n set.value(ctx, ctx.min)\n },\n setToMax(ctx) {\n set.value(ctx, ctx.max)\n },\n setValue(ctx, evt) {\n const value = constrainValue(ctx, evt.value)\n set.value(ctx, value)\n },\n syncInputElement(ctx) {\n const inputEl = dom.getHiddenInputEl(ctx)\n dom.setValue(inputEl, ctx.value)\n },\n },\n },\n )\n}\n\nconst invoke = {\n change: (ctx: MachineContext) => {\n ctx.onChange?.({ value: ctx.value })\n dom.dispatchChangeEvent(ctx)\n },\n}\n\nconst set = {\n value: (ctx: MachineContext, value: number) => {\n ctx.value = value\n invoke.change(ctx)\n },\n}\n","import { clampValue, getNextStepValue, getPreviousStepValue, snapValueToStep } from \"@zag-js/numeric-range\"\nimport type { MachineContext as Ctx } from \"./slider.types\"\n\nexport function clampPercent(percent: number) {\n return clampValue(percent, 0, 1)\n}\n\nexport function constrainValue(ctx: Ctx, value: number) {\n const snapValue = snapValueToStep(value, ctx.min, ctx.max, ctx.step)\n return clampValue(snapValue, ctx.min, ctx.max)\n}\n\nexport function decrement(ctx: Ctx, step?: number) {\n const index = 0\n const values = getPreviousStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n\nexport function increment(ctx: Ctx, step?: number) {\n const index = 0\n const values = getNextStepValue(index, {\n ...ctx,\n step: step ?? ctx.step,\n values: [ctx.value],\n })\n return values[index]\n}\n"],"mappings":"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","names":["getPercentValue","getValuePercent","getValue","getPercentValue","getValuePercent","clampValue","getValuePercent","ctx","getValuePercent","clampValue"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/slider",
3
- "version": "0.0.0-dev-20230810072419",
3
+ "version": "0.0.0-dev-20230816100944",
4
4
  "description": "Core logic for the slider widget implemented as a state machine",
5
5
  "keywords": [
6
6
  "js",
@@ -27,15 +27,15 @@
27
27
  "url": "https://github.com/chakra-ui/zag/issues"
28
28
  },
29
29
  "dependencies": {
30
- "@zag-js/anatomy": "0.0.0-dev-20230810072419",
31
- "@zag-js/core": "0.0.0-dev-20230810072419",
32
- "@zag-js/dom-query": "0.0.0-dev-20230810072419",
33
- "@zag-js/dom-event": "0.0.0-dev-20230810072419",
34
- "@zag-js/form-utils": "0.0.0-dev-20230810072419",
35
- "@zag-js/utils": "0.0.0-dev-20230810072419",
36
- "@zag-js/element-size": "0.0.0-dev-20230810072419",
37
- "@zag-js/numeric-range": "0.0.0-dev-20230810072419",
38
- "@zag-js/types": "0.0.0-dev-20230810072419"
30
+ "@zag-js/anatomy": "0.0.0-dev-20230816100944",
31
+ "@zag-js/core": "0.0.0-dev-20230816100944",
32
+ "@zag-js/dom-query": "0.0.0-dev-20230816100944",
33
+ "@zag-js/dom-event": "0.0.0-dev-20230816100944",
34
+ "@zag-js/form-utils": "0.0.0-dev-20230816100944",
35
+ "@zag-js/utils": "0.0.0-dev-20230816100944",
36
+ "@zag-js/element-size": "0.0.0-dev-20230816100944",
37
+ "@zag-js/numeric-range": "0.0.0-dev-20230816100944",
38
+ "@zag-js/types": "0.0.0-dev-20230816100944"
39
39
  },
40
40
  "devDependencies": {
41
41
  "clean-package": "2.2.0"
package/src/index.ts CHANGED
@@ -2,4 +2,4 @@ export { anatomy } from "./slider.anatomy"
2
2
  export { connect } from "./slider.connect"
3
3
  export { dom as unstable__dom } from "./slider.dom"
4
4
  export { machine } from "./slider.machine"
5
- export type { UserDefinedContext as Context, PublicApi } from "./slider.types"
5
+ export type { UserDefinedContext as Context, MachineApi as Api } from "./slider.types"
@@ -12,9 +12,9 @@ import { getPercentValue, getValuePercent } from "@zag-js/numeric-range"
12
12
  import type { NormalizeProps, PropTypes } from "@zag-js/types"
13
13
  import { parts } from "./slider.anatomy"
14
14
  import { dom } from "./slider.dom"
15
- import type { PublicApi, Send, State } from "./slider.types"
15
+ import type { MachineApi, Send, State } from "./slider.types"
16
16
 
17
- export function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): PublicApi<T> {
17
+ export function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {
18
18
  const ariaLabel = state.context["aria-label"]
19
19
  const ariaLabelledBy = state.context["aria-labelledby"]
20
20
  const ariaValueText = state.context.getAriaValueText?.(state.context.value)
@@ -33,8 +33,6 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
33
33
  return getValuePercent(value, state.context.min, state.context.max)
34
34
  }
35
35
 
36
- // TODO - getMarkerState
37
-
38
36
  return {
39
37
  isFocused,
40
38
  isDragging,
@@ -165,7 +163,6 @@ export function connect<T extends PropTypes>(state: State, send: Send, normalize
165
163
  }),
166
164
 
167
165
  hiddenInputProps: normalize.input({
168
- type: "text",
169
166
  defaultValue: state.context.value,
170
167
  name: state.context.name,
171
168
  form: state.context.form,
@@ -23,7 +23,6 @@ export function machine(userContext: UserDefinedContext) {
23
23
  dir: "ltr",
24
24
  origin: "start",
25
25
  orientation: "horizontal",
26
- initialValue: null,
27
26
  value: 0,
28
27
  step: 1,
29
28
  min: 0,
@@ -41,7 +40,7 @@ export function machine(userContext: UserDefinedContext) {
41
40
  },
42
41
 
43
42
  watch: {
44
- value: ["invokeOnChange", "dispatchChangeEvent"],
43
+ value: ["syncInputElement"],
45
44
  },
46
45
 
47
46
  activities: ["trackFormControlState", "trackThumbSize"],
@@ -132,15 +131,13 @@ export function machine(userContext: UserDefinedContext) {
132
131
  },
133
132
 
134
133
  activities: {
135
- trackFormControlState(ctx) {
134
+ trackFormControlState(ctx, _evt, { initialContext }) {
136
135
  return trackFormControl(dom.getHiddenInputEl(ctx), {
137
136
  onFieldsetDisabled() {
138
137
  ctx.disabled = true
139
138
  },
140
139
  onFormReset() {
141
- if (ctx.initialValue != null) {
142
- ctx.value = ctx.initialValue
143
- }
140
+ set.value(ctx, initialContext.value)
144
141
  },
145
142
  })
146
143
  },
@@ -165,9 +162,7 @@ export function machine(userContext: UserDefinedContext) {
165
162
 
166
163
  actions: {
167
164
  checkValue(ctx) {
168
- const value = constrainValue(ctx, ctx.value)
169
- ctx.value = value
170
- ctx.initialValue = value
165
+ ctx.value = constrainValue(ctx, ctx.value)
171
166
  },
172
167
  invokeOnChangeStart(ctx) {
173
168
  ctx.onChangeStart?.({ value: ctx.value })
@@ -175,36 +170,51 @@ export function machine(userContext: UserDefinedContext) {
175
170
  invokeOnChangeEnd(ctx) {
176
171
  ctx.onChangeEnd?.({ value: ctx.value })
177
172
  },
178
- invokeOnChange(ctx) {
179
- ctx.onChange?.({ value: ctx.value })
180
- },
181
- dispatchChangeEvent(ctx) {
182
- dom.dispatchChangeEvent(ctx)
183
- },
184
173
  setPointerValue(ctx, evt) {
185
174
  const value = dom.getValueFromPoint(ctx, evt.point)
186
175
  if (value == null) return
187
- ctx.value = clampValue(value, ctx.min, ctx.max)
176
+ set.value(ctx, clampValue(value, ctx.min, ctx.max))
188
177
  },
189
178
  focusThumb(ctx) {
190
- raf(() => dom.getThumbEl(ctx)?.focus())
179
+ raf(() => dom.getThumbEl(ctx)?.focus({ preventScroll: true }))
191
180
  },
192
181
  decrement(ctx, evt) {
193
- ctx.value = decrement(ctx, evt.step)
182
+ const value = decrement(ctx, evt.step)
183
+ set.value(ctx, value)
194
184
  },
195
185
  increment(ctx, evt) {
196
- ctx.value = increment(ctx, evt.step)
186
+ const value = increment(ctx, evt.step)
187
+ set.value(ctx, value)
197
188
  },
198
189
  setToMin(ctx) {
199
- ctx.value = ctx.min
190
+ set.value(ctx, ctx.min)
200
191
  },
201
192
  setToMax(ctx) {
202
- ctx.value = ctx.max
193
+ set.value(ctx, ctx.max)
203
194
  },
204
195
  setValue(ctx, evt) {
205
- ctx.value = constrainValue(ctx, evt.value)
196
+ const value = constrainValue(ctx, evt.value)
197
+ set.value(ctx, value)
198
+ },
199
+ syncInputElement(ctx) {
200
+ const inputEl = dom.getHiddenInputEl(ctx)
201
+ dom.setValue(inputEl, ctx.value)
206
202
  },
207
203
  },
208
204
  },
209
205
  )
210
206
  }
207
+
208
+ const invoke = {
209
+ change: (ctx: MachineContext) => {
210
+ ctx.onChange?.({ value: ctx.value })
211
+ dom.dispatchChangeEvent(ctx)
212
+ },
213
+ }
214
+
215
+ const set = {
216
+ value: (ctx: MachineContext, value: number) => {
217
+ ctx.value = value
218
+ invoke.change(ctx)
219
+ },
220
+ }
@@ -99,59 +99,6 @@ type PublicContext = DirectionProperty &
99
99
  thumbAlignment?: "contain" | "center"
100
100
  }
101
101
 
102
- export type PublicApi<T extends PropTypes = PropTypes> = {
103
- /**
104
- * Whether the slider is focused.
105
- */
106
- isFocused: boolean
107
- /**
108
- * Whether the slider is being dragged.
109
- */
110
- isDragging: boolean
111
- /**
112
- * The value of the slider.
113
- */
114
- value: number
115
- /**
116
- * The value of the slider as a percent.
117
- */
118
- percent: number
119
- /**
120
- * Function to set the value of the slider.
121
- */
122
- setValue(value: number): void
123
- /**
124
- * Returns the value of the slider at the given percent.
125
- */
126
- getPercentValue: (percent: number) => number
127
- /**
128
- * Returns the percent of the slider at the given value.
129
- */
130
- getValuePercent: (value: number) => number
131
- /**
132
- * Function to focus the slider.
133
- */
134
- focus(): void
135
- /**
136
- * Function to increment the value of the slider by the step.
137
- */
138
- increment(): void
139
- /**
140
- * Function to decrement the value of the slider by the step.
141
- */
142
- decrement(): void
143
- rootProps: T["element"]
144
- labelProps: T["label"]
145
- thumbProps: T["element"]
146
- hiddenInputProps: T["input"]
147
- outputProps: T["output"]
148
- trackProps: T["element"]
149
- rangeProps: T["element"]
150
- controlProps: T["element"]
151
- markerGroupProps: T["element"]
152
- getMarkerProps({ value }: { value: number }): T["element"]
153
- }
154
-
155
102
  export type UserDefinedContext = RequiredBy<PublicContext, "id">
156
103
 
157
104
  type ComputedContext = Readonly<{
@@ -196,12 +143,6 @@ type PrivateContext = Context<{
196
143
  * @internal The slider thumb dimensions
197
144
  */
198
145
  thumbSize: { width: number; height: number } | null
199
- /**
200
- * @internal
201
- * The value of the slider when it was initially rendered.
202
- * Used when the `form.reset(...)` is called.
203
- */
204
- initialValue: number | null
205
146
  }>
206
147
 
207
148
  export type MachineContext = PublicContext & ComputedContext & PrivateContext
@@ -233,3 +174,56 @@ export type Point = {
233
174
  x: number
234
175
  y: number
235
176
  }
177
+
178
+ export type MachineApi<T extends PropTypes = PropTypes> = {
179
+ /**
180
+ * Whether the slider is focused.
181
+ */
182
+ isFocused: boolean
183
+ /**
184
+ * Whether the slider is being dragged.
185
+ */
186
+ isDragging: boolean
187
+ /**
188
+ * The value of the slider.
189
+ */
190
+ value: number
191
+ /**
192
+ * The value of the slider as a percent.
193
+ */
194
+ percent: number
195
+ /**
196
+ * Function to set the value of the slider.
197
+ */
198
+ setValue(value: number): void
199
+ /**
200
+ * Returns the value of the slider at the given percent.
201
+ */
202
+ getPercentValue: (percent: number) => number
203
+ /**
204
+ * Returns the percent of the slider at the given value.
205
+ */
206
+ getValuePercent: (value: number) => number
207
+ /**
208
+ * Function to focus the slider.
209
+ */
210
+ focus(): void
211
+ /**
212
+ * Function to increment the value of the slider by the step.
213
+ */
214
+ increment(): void
215
+ /**
216
+ * Function to decrement the value of the slider by the step.
217
+ */
218
+ decrement(): void
219
+ rootProps: T["element"]
220
+ labelProps: T["label"]
221
+ thumbProps: T["element"]
222
+ hiddenInputProps: T["input"]
223
+ outputProps: T["output"]
224
+ trackProps: T["element"]
225
+ rangeProps: T["element"]
226
+ controlProps: T["element"]
227
+ markerGroupProps: T["element"]
228
+ getMarkerProps({ value }: { value: number }): T["element"]
229
+ }