UNPKG

react-pivot

Version:

React-Pivot is a data-grid component with pivot-table-like functionality for data display, filtering, and exploration.

70 lines (62 loc) 2.29 kB
/** * Copyright 2014, 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 ReactNativeComponent */ "use strict"; var assign = require("./Object.assign"); var invariant = require("./invariant"); var genericComponentClass = null; // This registry keeps track of wrapper classes around native tags var tagToComponentClass = {}; var ReactNativeComponentInjection = { // This accepts a class that receives the tag string. This is a catch all // that can render any kind of tag. injectGenericComponentClass: function(componentClass) { genericComponentClass = componentClass; }, // This accepts a keyed object with classes as values. Each key represents a // tag. That particular tag will use this class instead of the generic one. injectComponentClasses: function(componentClasses) { assign(tagToComponentClass, componentClasses); } }; /** * Create an internal class for a specific tag. * * @param {string} tag The tag for which to create an internal instance. * @param {any} props The props passed to the instance constructor. * @return {ReactComponent} component The injected empty component. */ function createInstanceForTag(tag, props, parentType) { var componentClass = tagToComponentClass[tag]; if (componentClass == null) { ("production" !== process.env.NODE_ENV ? invariant( genericComponentClass, 'There is no registered component for the tag %s', tag ) : invariant(genericComponentClass)); return new genericComponentClass(tag, props); } if (parentType === tag) { // Avoid recursion ("production" !== process.env.NODE_ENV ? invariant( genericComponentClass, 'There is no registered component for the tag %s', tag ) : invariant(genericComponentClass)); return new genericComponentClass(tag, props); } // Unwrap legacy factories return new componentClass.type(props); } var ReactNativeComponent = { createInstanceForTag: createInstanceForTag, injection: ReactNativeComponentInjection }; module.exports = ReactNativeComponent;