You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							42 lines
						
					
					
						
							908 B
						
					
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							908 B
						
					
					
				| // @flow
 | |
| import endsWith from './_endsWith'
 | |
| import stripUnit from '../helpers/stripUnit'
 | |
| import PolishedError from './_errors'
 | |
| 
 | |
| /**
 | |
|  * Factory function that creates pixel-to-x converters
 | |
|  * @private
 | |
|  */
 | |
| const pxtoFactory = (to: string) => (
 | |
|   pxval: string | number,
 | |
|   base?: string | number = '16px',
 | |
| ): string => {
 | |
|   let newPxval = pxval
 | |
|   let newBase = base
 | |
|   if (typeof pxval === 'string') {
 | |
|     if (!endsWith(pxval, 'px')) {
 | |
|       throw new PolishedError(69, to, pxval)
 | |
|     }
 | |
|     newPxval = stripUnit(pxval)
 | |
|   }
 | |
| 
 | |
|   if (typeof base === 'string') {
 | |
|     if (!endsWith(base, 'px')) {
 | |
|       throw new PolishedError(70, to, base)
 | |
|     }
 | |
|     newBase = stripUnit(base)
 | |
|   }
 | |
| 
 | |
|   if (typeof newPxval === 'string') {
 | |
|     throw new PolishedError(71, pxval, to)
 | |
|   }
 | |
| 
 | |
|   if (typeof newBase === 'string') {
 | |
|     throw new PolishedError(72, base, to)
 | |
|   }
 | |
| 
 | |
|   return `${newPxval / newBase}${to}`
 | |
| }
 | |
| 
 | |
| export default pxtoFactory
 |