Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
import { isNumber, isString, isArray, toNumber } from 'exotic'
import { SVGSpecsProps, StripedMeasurementType } from './typings'
import ImagePlaceholder from './ImagePlaceholder'
import TextPlaceholder from './TextPlaceholder'
import ParagraphPlaceholder from './ParagraphPlaceholder'
import CirclePlaceholder from './CirclePlaceholder'
import RectanglePlaceholder from './RectanglePlaceholder'
import SquarePlaceholder from './SquarePlaceholder'

export function getSVGSpecs(
  stringyWidthNumber: string | number,
  stringyHeightNumber: string | number,
  xPos: string | number = 0,
  ypos: string | number = 0
): SVGSpecsProps {
  const width = stripMeasurement(stringyWidthNumber)
  const height = stripMeasurement(stringyHeightNumber)
  const x = stripMeasurement(xPos)
  const y = stripMeasurement(ypos)
  const viewBox = `${x} ${y} ${width} ${height}`
  return {
    x,
    y,
    width,
    height,
    viewBox,
  }
}

export function stripMeasurement(
  stringyNumber: string | number
): StripedMeasurementType {
  if (isNumber(stringyNumber)) {
    return stringyNumber
  } else if (isString(stringyNumber)) {
    // @todo split
    const isPercentage = stringyNumber.indexOf('%') !== -1
    const match = stringyNumber.match(/(\d)+/gim)
    if (isArray(match)) {
      const found = match.pop()
      if (isPercentage) {
        return found + '%'
      } else {
        return toNumber(found)
      }
    }
  } else {
    console.warn(
      '[stripMeasurement] invalid arg: must be number or string, you provided: ',
      typeof stringyNumber
    )
    return 0
  }
  return 0
}

export function fromBreedToComponent(breedType: string) {
  switch (breedType) {
    case 'text':
      return TextPlaceholder
    case 'paragraph':
      return ParagraphPlaceholder
    case 'media':
    case 'image':
      return ImagePlaceholder
    case 'circle':
    case 'round':
      return CirclePlaceholder
    case 'rectangle':
      return RectanglePlaceholder
    case 'square':
    default:
      return SquarePlaceholder
  }
}