UNPKG

@stihl-design-system/components

Version:

Welcome to the STIHL Design System react component library.

307 lines (306 loc) 13.5 kB
"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 };