text: 'use strict'
  
  var parse = require('parse-svg-path')
  var abs = require('abs-svg-path')
  var normalize = require('normalize-svg-path')
  var isSvgPath = require('is-svg-path')
  
  module.exports = pathBounds
  
  
  function pathBounds(path) {
    // ES6 string tpl call
    if (Array.isArray(path) && path.length === 1 && typeof path[0] === 'string') path = path[0]
  
    // svg path string
    if (typeof path === 'string') {
      if (!isSvgPath(path)) throw Error('String is not an SVG path.')
      path = parse(path)
    }
  
    if (!Array.isArray(path)) throw Error('Argument should be a string or an array of path segments.')
  
    path = abs(path)
    path = normalize(path)
  
    if (!path.length) return [0, 0, 0, 0]
  
    var bounds = [Infinity, Infinity, -Infinity, -Infinity]
  
    for (var i = 0, l = path.length; i < l; i++) {
      var points = path[i].slice(1)
  
      for (var j = 0; j < points.length; j += 2) {
        if (points[j + 0] < bounds[0]) bounds[0] = points[j + 0]
        if (points[j + 1] < bounds[1]) bounds[1] = points[j + 1]
        if (points[j + 0] > bounds[2]) bounds[2] = points[j + 0]
        if (points[j + 1] > bounds[3]) bounds[3] = points[j + 1]
      }
    }
  
    return bounds
  }
  