function flattenArray( arr ) {
		if ( !isArrayLikeObject( arr ) ) {
			throw new TypeError( format( 'invalid argument. Must provide an array-like object. Value: `%s`.', arr ) );
		}
		return copy( flatten( arr ) );
	}
Flattens an array and deep copies array elements.

@private
@param {ArrayLikeObject} arr - array to flatten
@throws {TypeError} must provide an array-like object
@returns {Array} flattened array