UNPKG

@modern-kit/utils

Version:
1 lines 2.26 kB
{"version":3,"file":"index.mjs","sources":["../../../src/style/rem/index.ts"],"sourcesContent":["import { isNumber } from '../../validator';\nimport { isClient } from '../../device';\n\ninterface RemOptions {\n suffix?: boolean;\n toFixedDigits?: number;\n}\n\nconst cacheMap = new Map<string, string | number>();\n\nconst getFixedRem = (rem: number, toFixedDigits?: number) => {\n if (isNumber(toFixedDigits)) {\n return Number(rem.toFixed(toFixedDigits));\n }\n return rem;\n};\n\nconst getElementFontSize = (element: HTMLElement) => {\n return getComputedStyle(element).fontSize;\n};\n\nexport function rem(pixel: number, options: RemOptions = {}) {\n if (!isClient()) {\n throw new Error('Cannot be executed unless it is a client environment.');\n }\n\n const { suffix = true, toFixedDigits } = options;\n const cacheKey = `${pixel}-${suffix}-${toFixedDigits}`;\n\n if (cacheMap.has(cacheKey)) {\n return cacheMap.get(cacheKey) as string | number;\n }\n\n const rootFontSize = getElementFontSize(document.documentElement);\n\n const fixedRem = getFixedRem(pixel / parseFloat(rootFontSize), toFixedDigits);\n const result = suffix ? `${fixedRem}rem` : fixedRem;\n\n cacheMap.set(cacheKey, result);\n return result;\n}\n"],"names":["rem"],"mappings":";;;;AAQA,MAAM,QAAA,uBAAe,GAAA,EAA6B;AAElD,MAAM,WAAA,GAAc,CAACA,IAAAA,EAAa,aAAA,KAA2B;AAC3D,EAAA,IAAI,QAAA,CAAS,aAAa,CAAA,EAAG;AAC3B,IAAA,OAAO,MAAA,CAAOA,IAAAA,CAAI,OAAA,CAAQ,aAAa,CAAC,CAAA;AAAA,EAC1C;AACA,EAAA,OAAOA,IAAAA;AACT,CAAA;AAEA,MAAM,kBAAA,GAAqB,CAAC,OAAA,KAAyB;AACnD,EAAA,OAAO,gBAAA,CAAiB,OAAO,CAAA,CAAE,QAAA;AACnC,CAAA;AAEO,SAAS,GAAA,CAAI,KAAA,EAAe,OAAA,GAAsB,EAAC,EAAG;AAC3D,EAAA,IAAI,CAAC,UAAS,EAAG;AACf,IAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,EACzE;AAEA,EAAA,MAAM,EAAE,MAAA,GAAS,IAAA,EAAM,aAAA,EAAc,GAAI,OAAA;AACzC,EAAA,MAAM,WAAW,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,MAAM,IAAI,aAAa,CAAA,CAAA;AAEpD,EAAA,IAAI,QAAA,CAAS,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC1B,IAAA,OAAO,QAAA,CAAS,IAAI,QAAQ,CAAA;AAAA,EAC9B;AAEA,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,QAAA,CAAS,eAAe,CAAA;AAEhE,EAAA,MAAM,WAAW,WAAA,CAAY,KAAA,GAAQ,UAAA,CAAW,YAAY,GAAG,aAAa,CAAA;AAC5E,EAAA,MAAM,MAAA,GAAS,MAAA,GAAS,CAAA,EAAG,QAAQ,CAAA,GAAA,CAAA,GAAQ,QAAA;AAE3C,EAAA,QAAA,CAAS,GAAA,CAAI,UAAU,MAAM,CAAA;AAC7B,EAAA,OAAO,MAAA;AACT;;;;"}