function processShadowArray(shadow, tweenProp) {
    var newShadow;

    // [h-shadow, v-shadow, color]
    if (shadow.length === 3) {
      newShadow = [shadow[0], shadow[1], 0, 0, shadow[2], 'none'];
    // [h-shadow, v-shadow, color, inset] | [h-shadow, v-shadow, blur, color]
    } else if (shadow.length === 4) {
      newShadow = /inset|none/.test(shadow[3])
        ? [shadow[0], shadow[1], 0, 0, shadow[2], shadow[3]]
        : [shadow[0], shadow[1], shadow[2], 0, shadow[3], 'none'];
    // [h-shadow, v-shadow, blur, color, inset] | [h-shadow, v-shadow, blur, spread, color]
    } else if (shadow.length === 5) {
      newShadow = /inset|none/.test(shadow[4])
        ? [shadow[0], shadow[1], shadow[2], 0, shadow[3], shadow[4]]
        : [shadow[0], shadow[1], shadow[2], shadow[3], shadow[4], 'none'];
    // ideal [h-shadow, v-shadow, blur, spread, color, inset]
    } else if (shadow.length === 6) {
      newShadow = shadow;
    }

    // make sure the values are ready to tween
    for (var i = 0; i < 4; i += 1) {
      newShadow[i] = parseFloat(newShadow[i]);
    }

    // also the color must be a rgb object
    newShadow[4] = trueColor(newShadow[4]);

    newShadow = tweenProp === 'boxShadow'
      ? newShadow
      : newShadow.filter(function (_, i) { return [0, 1, 2, 4].includes(i); });

    return newShadow;
  }
Return the box-shadow / text-shadow tween object.
* box-shadow: none | h-shadow v-shadow blur spread color inset|initial|inherit
* text-shadow: none | offset-x offset-y blur-radius color |initial|inherit
* numbers must be floats and color must be rgb object

@param {(number | string)[]} shadow an `Array` with shadow parameters
@param {string} tweenProp the property name
@returns {KUTE.shadowObject} the property tween object