mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
* shared/src -> shared It's not a real package and doesn't even have package.json. This will also make importing less weird if we drop Haste. * Get rid of shared/utils Moved event-specific into shared/event. Moved rest to the root since distinction has always been pretty arbitrary. * Fix references to old shared/src paths
35 lines
964 B
JavaScript
35 lines
964 B
JavaScript
/**
|
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @providesModule forEachAccumulated
|
|
* @flow
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* @param {array} arr an "accumulation" of items which is either an Array or
|
|
* a single item. Useful when paired with the `accumulate` module. This is a
|
|
* simple utility that allows us to reason about a collection of items, but
|
|
* handling the case when there is exactly one item (and we do not need to
|
|
* allocate an array).
|
|
* @param {function} cb Callback invoked with each element or a collection.
|
|
* @param {?} [scope] Scope used as `this` in a callback.
|
|
*/
|
|
function forEachAccumulated<T>(
|
|
arr: ?(T | Array<T>),
|
|
cb: (elem: T) => void,
|
|
scope: ?any,
|
|
) {
|
|
if (Array.isArray(arr)) {
|
|
arr.forEach(cb, scope);
|
|
} else if (arr) {
|
|
cb.call(scope, arr);
|
|
}
|
|
}
|
|
|
|
module.exports = forEachAccumulated;
|