mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
react app
This commit is contained in:
84
react-app/node_modules/react/lib/createArrayFromMixed.js
generated
vendored
Normal file
84
react-app/node_modules/react/lib/createArrayFromMixed.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
/**
|
||||
* Copyright 2013-2015, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule createArrayFromMixed
|
||||
* @typechecks
|
||||
*/
|
||||
|
||||
var toArray = require("./toArray");
|
||||
|
||||
/**
|
||||
* Perform a heuristic test to determine if an object is "array-like".
|
||||
*
|
||||
* A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"
|
||||
* Joshu replied: "Mu."
|
||||
*
|
||||
* This function determines if its argument has "array nature": it returns
|
||||
* true if the argument is an actual array, an `arguments' object, or an
|
||||
* HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).
|
||||
*
|
||||
* It will return false for other array-like objects like Filelist.
|
||||
*
|
||||
* @param {*} obj
|
||||
* @return {boolean}
|
||||
*/
|
||||
function hasArrayNature(obj) {
|
||||
return (
|
||||
// not null/false
|
||||
!!obj &&
|
||||
// arrays are objects, NodeLists are functions in Safari
|
||||
(typeof obj == 'object' || typeof obj == 'function') &&
|
||||
// quacks like an array
|
||||
('length' in obj) &&
|
||||
// not window
|
||||
!('setInterval' in obj) &&
|
||||
// no DOM node should be considered an array-like
|
||||
// a 'select' element has 'length' and 'item' properties on IE8
|
||||
(typeof obj.nodeType != 'number') &&
|
||||
(
|
||||
// a real array
|
||||
(// HTMLCollection/NodeList
|
||||
(Array.isArray(obj) ||
|
||||
// arguments
|
||||
('callee' in obj) || 'item' in obj))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that the argument is an array by wrapping it in an array if it is not.
|
||||
* Creates a copy of the argument if it is already an array.
|
||||
*
|
||||
* This is mostly useful idiomatically:
|
||||
*
|
||||
* var createArrayFromMixed = require('createArrayFromMixed');
|
||||
*
|
||||
* function takesOneOrMoreThings(things) {
|
||||
* things = createArrayFromMixed(things);
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* This allows you to treat `things' as an array, but accept scalars in the API.
|
||||
*
|
||||
* If you need to convert an array-like object, like `arguments`, into an array
|
||||
* use toArray instead.
|
||||
*
|
||||
* @param {*} obj
|
||||
* @return {array}
|
||||
*/
|
||||
function createArrayFromMixed(obj) {
|
||||
if (!hasArrayNature(obj)) {
|
||||
return [obj];
|
||||
} else if (Array.isArray(obj)) {
|
||||
return obj.slice();
|
||||
} else {
|
||||
return toArray(obj);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = createArrayFromMixed;
|
Reference in New Issue
Block a user