UNPKG

@antv/layout

Version:
53 lines (45 loc) 1.64 kB
import { __require as require_arrayPush } from './_arrayPush.js'; import { __require as require_isFlattenable } from './_isFlattenable.js'; var _baseFlatten; var hasRequired_baseFlatten; function require_baseFlatten () { if (hasRequired_baseFlatten) return _baseFlatten; hasRequired_baseFlatten = 1; var arrayPush = require_arrayPush(), isFlattenable = require_isFlattenable(); /** * The base implementation of `_.flatten` with support for restricting flattening. * * @private * @param {Array} array The array to flatten. * @param {number} depth The maximum recursion depth. * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. * @param {Array} [result=[]] The initial result value. * @returns {Array} Returns the new flattened array. */ function baseFlatten(array, depth, predicate, isStrict, result) { var index = -1, length = array.length; predicate || (predicate = isFlattenable); result || (result = []); while (++index < length) { var value = array[index]; if (depth > 0 && predicate(value)) { if (depth > 1) { // Recursively flatten arrays (susceptible to call stack limits). baseFlatten(value, depth - 1, predicate, isStrict, result); } else { arrayPush(result, value); } } else if (!isStrict) { result[result.length] = value; } } return result; } _baseFlatten = baseFlatten; return _baseFlatten; } export { require_baseFlatten as __require }; //# sourceMappingURL=_baseFlatten.js.map