|
- export type Unit = 'px' | '%' | 'rem'
-
- export interface ValueAndUnit {
- magnitude: number,
- unit: Unit,
- }
-
- interface SplitValueAndUnit {
- (value: any): ValueAndUnit
- }
-
- const splitValueAndUnit: SplitValueAndUnit = value => {
- if (!['string', 'number'].includes(typeof value)) {
- throw TypeError('Argument must be a valid CSS number')
- }
-
- const valueString = typeof value! === 'number' ? `${value}px` : String(value)
- const magnitude = parseFloat(valueString)
- return {
- magnitude,
- unit: valueString.slice(String(magnitude).length) as Unit,
- }
- }
-
- export default splitValueAndUnit
|