{"version":3,"sources":["../src/helpers.ts"],"names":["clamp","min","max","round","d","p","normalizeHue","h","ANGLE_UNITS","isNumber","isAnyNumber","sanitize","isObject","v","hasKeys","obj","keys","k"],"mappings":"aAAO,IAAMA,CAAAA,CAAQ,CAAC,CAAA,CAAWC,CAAAA,CAAaC,IAAwB,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGD,CAAG,EAAGC,CAAG,CAAA,CAEvFC,CAAAA,CAAQ,CAAC,CAAA,CAAWC,CAAAA,CAAI,IAAc,CACjD,IAAMC,CAAAA,CAAI,EAAA,EAAMD,CAAAA,CAChB,OAAO,KAAK,KAAA,CAAMC,CAAAA,CAAI,CAAC,CAAA,CAAIA,CAC7B,EAIaC,CAAAA,CAAgBC,CAAAA,EAAuBA,CAAAA,EAAK,CAAA,EAAKA,CAAAA,CAAI,GAAA,CAAMA,GAAMA,CAAAA,CAAI,GAAA,CAAO,GAAA,EAAO,GAAA,CAEnFC,CAAAA,CAAsC,CAAE,IAAK,CAAA,CAAG,IAAA,CAAM,EAAA,CAAK,IAAA,CAAM,GAAA,CAAK,GAAA,CAAK,KAAO,CAAA,CAAI,IAAA,CAAK,GAAI,CAAA,CAE/FC,CAAAA,CAAY,GAA4B,OAAO,CAAA,EAAM,QAAA,EAAY,CAAC,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAK,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,CAGtGC,CAAAA,CAAe,GAA4B,OAAO,CAAA,EAAM,QAAA,CAGxDC,CAAAA,CAAY,CAAA,EAAuB,MAAA,CAAO,MAAM,CAAC,CAAA,CAAI,EAAI,CAAA,CAEzDC,CAAAA,CAAYC,GACvB,OAAOA,CAAAA,EAAM,QAAA,EAAYA,CAAAA,GAAM,IAAA,EAAQ,CAAC,MAAM,OAAA,CAAQA,CAAC,CAAA,CAE5CC,CAAAA,CAAU,CAAmBC,CAAAA,CAA8BC,IACtEA,CAAAA,CAAK,KAAA,CAAOC,CAAAA,EAAMA,CAAAA,IAAKF,CAAG","file":"chunk-EXPXWBLP.cjs","sourcesContent":["export const clamp = (n: number, min: number, max: number): number => Math.min(Math.max(n, min), max);\n\nexport const round = (n: number, d = 0): number => {\n  const p = 10 ** d;\n  return Math.round(p * n) / p;\n};\n\n// Normalize hue to [0, 360). Avoids (h + 360) % 360 which can lose precision\n// when h is already in [0, 360) due to binary floating-point subtraction.\nexport const normalizeHue = (h: number): number => (h >= 0 && h < 360 ? h : ((h % 360) + 360) % 360);\n\nexport const ANGLE_UNITS: Record<string, number> = { deg: 1, grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };\n\nexport const isNumber = (n: unknown): n is number => typeof n === 'number' && !Number.isNaN(n) && Number.isFinite(n);\n\n// Accepts any JS number type (including NaN/±Infinity); use sanitize() before clamping\nexport const isAnyNumber = (n: unknown): n is number => typeof n === 'number';\n\n// Replace NaN with 0; ±Infinity is left for clamp() to handle naturally\nexport const sanitize = (n: number): number => (Number.isNaN(n) ? 0 : n);\n\nexport const isObject = (v: unknown): v is Record<string, unknown> =>\n  typeof v === 'object' && v !== null && !Array.isArray(v);\n\nexport const hasKeys = <T extends string>(obj: Record<string, unknown>, keys: T[]): obj is Record<T, unknown> =>\n  keys.every((k) => k in obj);\n"]}