Packages
corex
0.1.0-beta.2
0.1.2
0.1.1
0.1.0
0.1.0-rc.1
0.1.0-rc.0
0.1.0-beta.5
0.1.0-beta.4
0.1.0-beta.3
0.1.0-beta.2
0.1.0-beta.1
0.1.0-alpha.33
0.1.0-alpha.32
0.1.0-alpha.31
0.1.0-alpha.30
0.1.0-alpha.29
0.1.0-alpha.28
0.1.0-alpha.27
0.1.0-alpha.26
0.1.0-alpha.25
0.1.0-alpha.24
0.1.0-alpha.23
0.1.0-alpha.22
0.1.0-alpha.21
0.1.0-alpha.20
0.1.0-alpha.19
0.1.0-alpha.18
0.1.0-alpha.17
0.1.0-alpha.16
0.1.0-alpha.15
0.1.0-alpha.14
0.1.0-alpha.13
0.1.0-alpha.12
0.1.0-alpha.11
0.1.0-alpha.10
0.1.0-alpha.9
0.1.0-alpha.8
0.1.0-alpha.7
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
Accessible and unstyled UI components library written in Elixir and TypeScript that integrates Zag.js state machines into the Phoenix Framework.
Current section
Files
Jump to
Current section
Files
priv/static/chunks/chunk-PE34YET2.mjs
// ../node_modules/.pnpm/@zag-js+utils@1.40.0/node_modules/@zag-js/utils/dist/number.mjs
var { floor, abs, round, min, max, pow, sign } = Math;
var isNaN = (v) => Number.isNaN(v);
var nan = (v) => isNaN(v) ? 0 : v;
var mod = (v, m) => (v % m + m) % m;
var wrap = (v, vmax) => (v % vmax + vmax) % vmax;
var isValueAtMax = (v, vmax) => nan(v) >= vmax;
var isValueAtMin = (v, vmin) => nan(v) <= vmin;
var isValueWithinRange = (v, vmin, vmax) => {
const value = nan(v);
const minCheck = vmin == null || value >= vmin;
const maxCheck = vmax == null || value <= vmax;
return minCheck && maxCheck;
};
var roundValue = (v, vmin, step) => round((nan(v) - vmin) / step) * step + vmin;
var clampValue = (v, vmin, vmax) => min(max(nan(v), vmin), vmax);
var getValuePercent = (v, vmin, vmax) => (nan(v) - vmin) / (vmax - vmin);
var getPercentValue = (p, vmin, vmax, step) => clampValue(roundValue(p * (vmax - vmin) + vmin, vmin, step), vmin, vmax);
var roundToStepPrecision = (v, step) => {
let rv = v;
let ss = step.toString();
let pi = ss.indexOf(".");
let p = pi >= 0 ? ss.length - pi : 0;
if (p > 0) {
let pw = pow(10, p);
rv = round(rv * pw) / pw;
}
return rv;
};
var roundToDpr = (v, dpr) => typeof dpr === "number" ? floor(v * dpr + 0.5) / dpr : round(v);
var snapValueToStep = (v, vmin, vmax, step) => {
const min2 = vmin != null ? Number(vmin) : 0;
const max2 = Number(vmax);
const remainder = (v - min2) % step;
let snapped = abs(remainder) * 2 >= step ? v + sign(remainder) * (step - abs(remainder)) : v - remainder;
snapped = roundToStepPrecision(snapped, step);
if (!isNaN(min2) && snapped < min2) {
snapped = min2;
} else if (!isNaN(max2) && snapped > max2) {
const stepsInRange = floor((max2 - min2) / step);
const largestValidStep = min2 + stepsInRange * step;
snapped = stepsInRange <= 0 || largestValidStep < min2 ? max2 : largestValidStep;
}
return roundToStepPrecision(snapped, step);
};
var setValueAtIndex = (vs, i, v) => {
if (vs[i] === v) return vs;
return [...vs.slice(0, i), v, ...vs.slice(i + 1)];
};
var toFixedNumber = (v, d = 0, b = 10) => {
const pow2 = Math.pow(b, d);
return round(v * pow2) / pow2;
};
var countDecimals = (value) => {
if (!Number.isFinite(value)) return 0;
let e = 1, p = 0;
while (Math.round(value * e) / e !== value) {
e *= 10;
p += 1;
}
return p;
};
var decimalOp = (a, op, b) => {
let result = op === "+" ? a + b : a - b;
if (a % 1 !== 0 || b % 1 !== 0) {
const multiplier = 10 ** Math.max(countDecimals(a), countDecimals(b));
a = Math.round(a * multiplier);
b = Math.round(b * multiplier);
result = op === "+" ? a + b : a - b;
result /= multiplier;
}
return result;
};
var incrementValue = (v, s) => decimalOp(nan(v), "+", s);
var decrementValue = (v, s) => decimalOp(nan(v), "-", s);
var toPx = (v) => typeof v === "number" ? `${v}px` : v;
export {
mod,
wrap,
isValueAtMax,
isValueAtMin,
isValueWithinRange,
clampValue,
getValuePercent,
getPercentValue,
roundToDpr,
snapValueToStep,
setValueAtIndex,
toFixedNumber,
incrementValue,
decrementValue,
toPx
};