@stihl-design-system/components
Version:
Welcome to the STIHL Design System react component library.
307 lines (306 loc) • 13.5 kB
JavaScript
"use client";
import { jsx as b, jsxs as oe } from "react/jsx-runtime";
import { d as mt } from "./index.D-sRdssb.js";
import { c as v } from "./index.DL9mof6u.js";
import { forwardRef as bt, useState as tt, useRef as ft } from "react";
import { u as _t } from "./useBreakpoint.1txsny17.js";
import { DSInput as ht } from "../input.hBWqQr3X.js";
import { D as vt } from "./Popover.D7McfVaH.js";
import { g as lt } from "./helpers.CexwVao7.js";
import '../assets/Slider.DWLuIsNj.css';const Tt = "ds-slider_root_3zq13_1", xt = "ds-slider_hint_3zq13_4", gt = "ds-slider_label-wrapper_3zq13_4", kt = "ds-slider_label-hint-input-wrapper_3zq13_7", Nt = "ds-slider_number-input_3zq13_10", St = "ds-slider_label-wrapper--hidden_3zq13_20", Dt = "ds-slider_label_3zq13_4", yt = "ds-slider_label--disabled_3zq13_55", It = "ds-slider_number-input--small_3zq13_84", qt = "ds-slider_min-max-label-wrapper_3zq13_89", zt = "ds-slider_min-max-label-wrapper--disabled_3zq13_103", Mt = "ds-slider_min-label_3zq13_108", Lt = "ds-slider_max-label_3zq13_112", Wt = "ds-slider_slider-wrapper_3zq13_116", wt = "ds-slider_slider_3zq13_116", Vt = "ds-slider_value-tooltip_3zq13_135", Ct = "ds-slider_proxy-thumb_3zq13_139", Pt = "ds-slider_proxy-thumb--disabled_3zq13_217", $t = "ds-slider_custom-track_3zq13_246", At = "ds-slider_custom-track--progress_3zq13_251", Et = "ds-slider_custom-track--runnable_3zq13_263", Rt = "ds-slider_custom-track--disabled_3zq13_277", Ft = "ds-slider_tick-wrapper_3zq13_297", Bt = "ds-slider_tick_3zq13_297", Ht = "ds-slider_value-tooltip--visible_3zq13_356", Ot = "ds-slider_value-tooltip--disabled_3zq13_359", s = {
root: Tt,
hint: xt,
labelWrapper: gt,
labelHintInputWrapper: kt,
numberInput: Nt,
labelWrapperHidden: St,
label: Dt,
labelDisabled: yt,
numberInputSmall: It,
minMaxLabelWrapper: qt,
minMaxLabelWrapperDisabled: zt,
minLabel: Mt,
maxLabel: Lt,
sliderWrapper: Wt,
slider: wt,
valueTooltip: Vt,
proxyThumb: Ct,
proxyThumbDisabled: Pt,
customTrack: $t,
customTrackProgress: At,
customTrackRunnable: Et,
customTrackDisabled: Rt,
tickWrapper: Ft,
tick: Bt,
valueTooltipVisible: Ht,
valueTooltipDisabled: Ot
}, Kt = 11, st = 4, at = (p) => p.toString().length, jt = (p, r, e) => {
if (r === 0)
return !0;
const u = 1e-10, o = (p - e) / r;
return Math.abs(Math.round(o) - o) < u;
}, Ut = (p, r, e, u) => {
const o = parseFloat(r), f = e, n = Math.round((p - f) / o);
let c = f + n * o;
c = Math.min(Math.max(c, e), u);
const x = o.toString().split(".")[1]?.length || 0;
return parseFloat(c.toFixed(x));
}, Gt = (p, r, e) => {
const u = (p - r) / (e - r) * 100, o = `calc(-0.24 * ${u}px + 10px)`;
return `calc(${u}% + ${o})`;
}, Xt = ({
id: p,
label: r
}) => {
if (!p)
throw new Error(lt("DSSlider", 'A unique "id" prop is required. Please add a unique "id" prop to the DSSlider component.'));
if (!r)
throw new Error(lt("DSSlider", `A label is always required for a11y reasons. Please add a descriptive "label" prop to the DSSlider component. If you don't want to display a label, set hideLabel={true}.`));
}, Jt = bt((p, r) => {
const e = mt.c(165);
let u, o, f, n, c, x, m, g, D, y, Y, Z, ee, te, le, se, ae, k;
e[0] !== p ? ({
id: n,
label: c,
className: u,
defaultValue: o,
disabled: Y,
hideLabel: Z,
hideNumberInput: ee,
hint: f,
isTooltipAlwaysVisible: te,
max: le,
min: se,
numberInputProps: x,
popoverContent: g,
popoverInfoButtonProps: D,
step: ae,
value: k,
onChange: m,
...y
} = p, e[0] = p, e[1] = u, e[2] = o, e[3] = f, e[4] = n, e[5] = c, e[6] = x, e[7] = m, e[8] = g, e[9] = D, e[10] = y, e[11] = Y, e[12] = Z, e[13] = ee, e[14] = te, e[15] = le, e[16] = se, e[17] = ae, e[18] = k) : (u = e[1], o = e[2], f = e[3], n = e[4], c = e[5], x = e[6], m = e[7], g = e[8], D = e[9], y = e[10], Y = e[11], Z = e[12], ee = e[13], te = e[14], le = e[15], se = e[16], ae = e[17], k = e[18]);
const a = Y === void 0 ? !1 : Y, it = Z === void 0 ? !1 : Z, I = ee === void 0 ? !1 : ee, Le = te === void 0 ? !1 : te, rt = le === void 0 ? 100 : le, ot = se === void 0 ? 0 : se, ie = ae === void 0 ? 1 : ae;
process.env.NODE_ENV !== "production" && Xt({
id: n,
label: c
});
const i = Number(rt), t = Number(ot), d = Number(ie), q = _t(it), z = `${n}-label`, We = `${n}-hint`, we = `${n}-number-input`;
let ne;
e[19] !== o || e[20] !== t || e[21] !== k ? (ne = k || o || t.toString() || "0", e[19] = o, e[20] = t, e[21] = k, e[22] = ne) : ne = e[22];
const [M, ce] = tt(ne), [T, de] = tt(k || o || t || 0), nt = ft(null);
let pe;
e[23] !== r ? (pe = (l) => {
nt.current = l, typeof r == "function" ? r(l) : r && (r.current = l);
}, e[23] = r, e[24] = pe) : pe = e[24];
const Ve = pe;
let ue;
e[25] !== x ? (ue = x || {}, e[25] = x, e[26] = ue) : ue = e[26];
const {
size: et,
suffix: Ce
} = ue, me = et === void 0 ? "medium" : et;
let be;
e[27] !== m ? (be = (l) => {
const _ = parseFloat(l.target.value);
de(_), ce(l.target.value), m && m(l);
}, e[27] = m, e[28] = be) : be = e[28];
const Pe = be;
let fe;
e[29] === Symbol.for("react.memo_cache_sentinel") ? (fe = (l) => {
const _ = l.target.value;
if (ce(_), /^-?\d+(\.\d+)?$/.test(_)) {
const h = parseFloat(_);
Number.isNaN(h) || de(h);
}
}, e[29] = fe) : fe = e[29];
const ct = fe;
let N;
if (e[30] !== M || e[31] !== m || e[32] !== i || e[33] !== t || e[34] !== ie) {
N = (_) => {
const re = parseFloat(M);
if (Number.isNaN(re)) {
l(_);
return;
}
let h = Math.min(Math.max(re, t), i);
jt(h, parseFloat(ie), t) || (h = Ut(h, ie, t, i)), ce(h.toString()), de(h), m && m(_);
};
const l = (_) => {
ce(t.toString()), de(t), m && m(_);
};
e[30] = M, e[31] = m, e[32] = i, e[33] = t, e[34] = ie, e[35] = N;
} else
N = e[35];
const L = (d === 0 ? !1 : (i - t) / d <= Kt) && (i - t) / d || 0;
let _e;
if (e[36] !== i || e[37] !== t || e[38] !== d || e[39] !== L) {
let l;
e[41] !== i || e[42] !== t || e[43] !== d ? (l = (_, re) => {
const h = t + re * d, ut = Gt(h, t, i);
return /* @__PURE__ */ b("span", { className: s.tick, style: {
left: ut
} }, h);
}, e[41] = i, e[42] = t, e[43] = d, e[44] = l) : l = e[44], _e = Array.from({
length: L + 1
}, l), e[36] = i, e[37] = t, e[38] = d, e[39] = L, e[40] = _e;
} else
_e = e[40];
const $e = _e;
let he;
e[45] !== i || e[46] !== t || e[47] !== T ? (he = () => {
if (t === i)
throw new Error("Min and max values cannot be the same.");
const l = (T - t) / (i - t) * 100;
return Math.max(0, Math.min(l, 100));
}, e[45] = i, e[46] = t, e[47] = T, e[48] = he) : he = e[48];
const S = he;
let ve;
e[49] !== S ? (ve = () => {
const l = S();
return l < 50 ? `calc(${l}% + 4px)` : `calc(${l}% - 4px)`;
}, e[49] = S, e[50] = ve) : ve = e[50];
const dt = ve;
let Te;
e[51] !== S ? (Te = () => {
const l = 100 - S();
return l < 50 ? `calc(${l}% + 4px)` : `calc(${l}% - 4px)`;
}, e[51] = S, e[52] = Te) : Te = e[52];
const pt = Te;
let xe;
e[53] !== u ? (xe = v(s.slider, u), e[53] = u, e[54] = xe) : xe = e[54];
const Ae = xe;
let ge;
e[55] !== a ? (ge = v(s.label, {
[s.labelDisabled]: a
}), e[55] = a, e[56] = ge) : ge = e[56];
const Ee = ge;
let ke;
e[57] !== q ? (ke = v(s.labelWrapper, {
[s.labelWrapperHidden]: q
}), e[57] = q, e[58] = ke) : ke = e[58];
const Re = ke, Fe = me === "small";
let Ne;
e[59] !== Fe ? (Ne = v(s.numberInput, {
[s.numberInputSmall]: Fe
}), e[59] = Fe, e[60] = Ne) : Ne = e[60];
const Be = Ne;
let Se;
e[61] !== a ? (Se = v(s.minMaxLabelWrapper, {
[s.minMaxLabelWrapperDisabled]: a
}), e[61] = a, e[62] = Se) : Se = e[62];
const He = Se;
let De;
e[63] !== a ? (De = v(s.customTrack, s.customTrackProgress, {
[s.customTrackDisabled]: a
}), e[63] = a, e[64] = De) : De = e[64];
const Oe = De;
let ye;
e[65] !== a ? (ye = v(s.customTrack, s.customTrackRunnable, {
[s.customTrackDisabled]: a
}), e[65] = a, e[66] = ye) : ye = e[66];
const Ke = ye;
let Ie;
e[67] !== a ? (Ie = v(s.proxyThumb, {
[s.proxyThumbDisabled]: a
}), e[67] = a, e[68] = Ie) : Ie = e[68];
const je = Ie;
let qe;
e[69] !== a || e[70] !== Le ? (qe = v(s.valueTooltip, {
[s.valueTooltipVisible]: Le,
[s.valueTooltipDisabled]: a
}), e[69] = a, e[70] = Le, e[71] = qe) : qe = e[71];
const Ue = qe;
let W;
e[72] !== n || e[73] !== c || e[74] !== Ee || e[75] !== z ? (W = /* @__PURE__ */ b("label", { className: Ee, htmlFor: n, id: z, children: c }), e[72] = n, e[73] = c, e[74] = Ee, e[75] = z, e[76] = W) : W = e[76];
let w;
e[77] !== q || e[78] !== g || e[79] !== D ? (w = g && !q && /* @__PURE__ */ b(vt, { placement: "top", defaultAnchorButtonProps: D, children: g }), e[77] = q, e[78] = g, e[79] = D, e[80] = w) : w = e[80];
let V;
e[81] !== Re || e[82] !== W || e[83] !== w ? (V = /* @__PURE__ */ oe("div", { className: Re, children: [
W,
w
] }), e[81] = Re, e[82] = W, e[83] = w, e[84] = V) : V = e[84];
let C;
e[85] !== f || e[86] !== We ? (C = f && /* @__PURE__ */ b("div", { className: s.hint, id: We, children: f }), e[85] = f, e[86] = We, e[87] = C) : C = e[87];
let P;
e[88] !== a || e[89] !== N || e[90] !== I || e[91] !== we || e[92] !== M || e[93] !== c || e[94] !== Be || e[95] !== me || e[96] !== Ce || e[97] !== i || e[98] !== t || e[99] !== d ? (P = !I && /* @__PURE__ */ b(ht, { id: we, className: Be, type: "number", min: t, max: i, step: d, inputMode: "decimal", autoComplete: "off", disabled: a, hideLabel: !0, value: M, onChange: ct, onBlur: N, onKeyDown: (l) => {
l.key === "Enter" && (l.preventDefault(), N(l));
}, label: c, size: me, suffix: Ce }), e[88] = a, e[89] = N, e[90] = I, e[91] = we, e[92] = M, e[93] = c, e[94] = Be, e[95] = me, e[96] = Ce, e[97] = i, e[98] = t, e[99] = d, e[100] = P) : P = e[100];
let $;
e[101] !== V || e[102] !== C || e[103] !== P ? ($ = /* @__PURE__ */ oe("div", { className: s.labelHintInputWrapper, children: [
V,
C,
P
] }), e[101] = V, e[102] = C, e[103] = P, e[104] = $) : $ = e[104];
const Ge = at(t) < st;
let A;
e[105] !== Ge ? (A = v({
[s.minLabel]: Ge
}), e[105] = Ge, e[106] = A) : A = e[106];
let E;
e[107] !== t || e[108] !== A ? (E = /* @__PURE__ */ b("div", { className: A, children: t }), e[107] = t, e[108] = A, e[109] = E) : E = e[109];
const Xe = at(i) < st;
let R;
e[110] !== Xe ? (R = v({
[s.maxLabel]: Xe
}), e[110] = Xe, e[111] = R) : R = e[111];
let F;
e[112] !== i || e[113] !== R ? (F = /* @__PURE__ */ b("div", { className: R, children: i }), e[112] = i, e[113] = R, e[114] = F) : F = e[114];
let B;
e[115] !== He || e[116] !== E || e[117] !== F ? (B = /* @__PURE__ */ oe("div", { className: He, children: [
E,
F
] }), e[115] = He, e[116] = E, e[117] = F, e[118] = B) : B = e[118];
const Je = `${S()}`;
let ze;
e[119] !== Je ? (ze = {
"--ds-input-slider-thumb-position": Je
}, e[119] = Je, e[120] = ze) : ze = e[120];
const Qe = ze, Ye = dt();
let H;
e[121] !== Ye ? (H = {
width: Ye
}, e[121] = Ye, e[122] = H) : H = e[122];
let O;
e[123] !== Oe || e[124] !== H ? (O = /* @__PURE__ */ b("div", { className: Oe, style: H }), e[123] = Oe, e[124] = H, e[125] = O) : O = e[125];
const Ze = pt();
let K;
e[126] !== Ze ? (K = {
width: Ze
}, e[126] = Ze, e[127] = K) : K = e[127];
let j;
e[128] !== Ke || e[129] !== K ? (j = /* @__PURE__ */ b("div", { className: Ke, style: K }), e[128] = Ke, e[129] = K, e[130] = j) : j = e[130];
let U;
e[131] !== a || e[132] !== Ve || e[133] !== Pe || e[134] !== n || e[135] !== i || e[136] !== t || e[137] !== d || e[138] !== y || e[139] !== Ae || e[140] !== z || e[141] !== T ? (U = /* @__PURE__ */ b("input", { ...y, id: n, type: "range", ref: Ve, className: Ae, min: t, max: i, step: d, value: T, disabled: a, "aria-labelledby": z, onChange: Pe }), e[131] = a, e[132] = Ve, e[133] = Pe, e[134] = n, e[135] = i, e[136] = t, e[137] = d, e[138] = y, e[139] = Ae, e[140] = z, e[141] = T, e[142] = U) : U = e[142];
let G;
e[143] !== L || e[144] !== $e ? (G = L > 0 && /* @__PURE__ */ b("div", { className: s.tickWrapper, children: $e }), e[143] = L, e[144] = $e, e[145] = G) : G = e[145];
let X;
e[146] !== je ? (X = /* @__PURE__ */ b("div", { className: je }), e[146] = je, e[147] = X) : X = e[147];
let J;
e[148] !== a || e[149] !== I || e[150] !== T || e[151] !== Ue ? (J = I && /* @__PURE__ */ b("div", { className: Ue, "aria-disabled": a, children: T }), e[148] = a, e[149] = I, e[150] = T, e[151] = Ue, e[152] = J) : J = e[152];
let Q;
e[153] !== Qe || e[154] !== O || e[155] !== j || e[156] !== U || e[157] !== G || e[158] !== X || e[159] !== J ? (Q = /* @__PURE__ */ oe("div", { className: s.sliderWrapper, style: Qe, children: [
O,
j,
U,
G,
X,
J
] }), e[153] = Qe, e[154] = O, e[155] = j, e[156] = U, e[157] = G, e[158] = X, e[159] = J, e[160] = Q) : Q = e[160];
let Me;
return e[161] !== $ || e[162] !== B || e[163] !== Q ? (Me = /* @__PURE__ */ oe("div", { className: s.root, children: [
$,
B,
Q
] }), e[161] = $, e[162] = B, e[163] = Q, e[164] = Me) : Me = e[164], Me;
});
Jt.displayName = "DSSlider";
export {
Jt as D,
st as L,
Kt as M,
Gt as a,
at as g,
jt as i,
Ut as s,
Xt as v
};