{ "version": 3, "sources": ["src/util/units.ts"], "sourcesContent": ["import { round, toInteger } from 'lodash-es';\r\n\r\nexport type WeightType = 'g' | 'kg' | 'lb';\r\n\r\nconst KG = 2.2046226218;\r\nconst fractionDigits = 3; // minimum 3\r\nconst weightConversion = {\r\n lb2kg: (value: number) => value / KG,\r\n lb2g: (value: number) => weightConversion.kg2g(weightConversion.lb2kg(value)),\r\n kg2lb: (value: number) => round(value * KG, fractionDigits - 1), // must be one less than fractionDigits otherwise causes issues with conversions\r\n kg2g: (value: number) => toInteger(value * 1000),\r\n g2kg: (value: number) => value / 1000,\r\n g2lb: (value: number) => weightConversion.kg2lb(weightConversion.g2kg(value)),\r\n};\r\n\r\nexport function convertWeight(\r\n value: number,\r\n from: WeightType,\r\n to: WeightType,\r\n decimals?: number,\r\n): number {\r\n if (from === to) {\r\n return value;\r\n }\r\n\r\n const conversionFn = (weightConversion as any)[`${from}2${to}`];\r\n if (conversionFn === undefined) {\r\n throw new Error(`Unknown weight conversion from '${from}' to '${to}'.`);\r\n }\r\n return roundWeight(conversionFn(value), decimals ?? fractionDigits);\r\n}\r\n\r\nexport function roundWeight(value: number, decimals: number) {\r\n return round(value, decimals);\r\n}\r\n\r\nexport function kilogramsToPounds(value: number, decimalPlaces?: number) {\r\n return convertWeight(value, 'kg', 'lb', decimalPlaces);\r\n}\r\n\r\nexport function kilogramsToGrams(value: number, decimalPlaces?: number) {\r\n return convertWeight(value, 'kg', 'g', decimalPlaces);\r\n}\r\n\r\nexport function gramsToKilograms(value: number, decimalPlaces?: number) {\r\n return convertWeight(value, 'g', 'kg', decimalPlaces);\r\n}\r\n\r\nexport function gramsToPounds(value: number, decimalPlaces?: number) {\r\n return convertWeight(value, 'g', 'lb', decimalPlaces);\r\n}\r\n\r\nexport function poundsToKilograms(value: number, decimalPlaces?: number) {\r\n return convertWeight(value, 'lb', 'kg', decimalPlaces);\r\n}\r\n\r\nexport function poundsToGrams(value: number, decimalPlaces?: number) {\r\n return convertWeight(value, 'lb', 'g', decimalPlaces);\r\n}\r\n"], "mappings": "+CAIA,IAAMA,EAAK,aACLC,EAAiB,EACjBC,EAAmB,CACvBC,MAAQC,GAAkBA,EAAQJ,EAClCK,KAAOD,GAAkBF,EAAiBI,KAAKJ,EAAiBC,MAAMC,CAAK,CAAC,EAC5EG,MAAQH,GAAkBI,EAAMJ,EAAQJ,EAAIC,EAAiB,CAAC,EAC9DK,KAAOF,GAAkBK,EAAUL,EAAQ,GAAI,EAC/CM,KAAON,GAAkBA,EAAQ,IACjCO,KAAOP,GAAkBF,EAAiBK,MAAML,EAAiBQ,KAAKN,CAAK,CAAC,GAGxE,SAAUQ,EACdR,EACAS,EACAC,EACAC,EAAiB,CAEjB,GAAIF,IAASC,EACX,OAAOV,EAGT,IAAMY,EAAgBd,EAAyB,GAAGW,CAAI,IAAIC,CAAE,EAAE,EAC9D,GAAIE,IAAiBC,OACnB,MAAM,IAAIC,MAAM,mCAAmCL,CAAI,SAASC,CAAE,IAAI,EAExE,OAAOK,EAAYH,EAAaZ,CAAK,EAAGW,GAAYd,CAAc,CACpE,CAEM,SAAUkB,EAAYf,EAAeW,EAAgB,CACzD,OAAOP,EAAMJ,EAAOW,CAAQ,CAC9B,CAEM,SAAUK,EAAkBhB,EAAeiB,EAAsB,CACrE,OAAOT,EAAcR,EAAO,KAAM,KAAMiB,CAAa,CACvD", "names": ["KG", "fractionDigits", "weightConversion", "lb2kg", "value", "lb2g", "kg2g", "kg2lb", "round", "toInteger", "g2kg", "g2lb", "convertWeight", "from", "to", "decimals", "conversionFn", "undefined", "Error", "roundWeight", "kilogramsToPounds", "decimalPlaces"] }