From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/react-dom/lib/ReactShallowRenderer.js | 150 +++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 node_modules/react-dom/lib/ReactShallowRenderer.js (limited to 'node_modules/react-dom/lib/ReactShallowRenderer.js') diff --git a/node_modules/react-dom/lib/ReactShallowRenderer.js b/node_modules/react-dom/lib/ReactShallowRenderer.js new file mode 100644 index 000000000..a2454a040 --- /dev/null +++ b/node_modules/react-dom/lib/ReactShallowRenderer.js @@ -0,0 +1,150 @@ +/** + * Copyright 2013-present, 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. + * + */ + +'use strict'; + +var _prodInvariant = require('./reactProdInvariant'), + _assign = require('object-assign'); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var React = require('react/lib/React'); +var ReactCompositeComponent = require('./ReactCompositeComponent'); +var ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy'); +var ReactReconciler = require('./ReactReconciler'); +var ReactReconcileTransaction = require('./ReactReconcileTransaction'); +var ReactUpdates = require('./ReactUpdates'); + +var emptyObject = require('fbjs/lib/emptyObject'); +var getNextDebugID = require('react/lib/getNextDebugID'); +var invariant = require('fbjs/lib/invariant'); + +function injectDefaults() { + ReactUpdates.injection.injectReconcileTransaction(ReactReconcileTransaction); + ReactUpdates.injection.injectBatchingStrategy(ReactDefaultBatchingStrategy); +} + +var NoopInternalComponent = function () { + function NoopInternalComponent(element) { + _classCallCheck(this, NoopInternalComponent); + + this._renderedOutput = element; + this._currentElement = element; + + if (process.env.NODE_ENV !== 'production') { + this._debugID = getNextDebugID(); + } + } + + NoopInternalComponent.prototype.mountComponent = function mountComponent() {}; + + NoopInternalComponent.prototype.receiveComponent = function receiveComponent(element) { + this._renderedOutput = element; + this._currentElement = element; + }; + + NoopInternalComponent.prototype.unmountComponent = function unmountComponent() {}; + + NoopInternalComponent.prototype.getHostNode = function getHostNode() { + return undefined; + }; + + NoopInternalComponent.prototype.getPublicInstance = function getPublicInstance() { + return null; + }; + + return NoopInternalComponent; +}(); + +var ShallowComponentWrapper = function (element) { + // TODO: Consolidate with instantiateReactComponent + if (process.env.NODE_ENV !== 'production') { + this._debugID = getNextDebugID(); + } + + this.construct(element); +}; +_assign(ShallowComponentWrapper.prototype, ReactCompositeComponent, { + _constructComponent: ReactCompositeComponent._constructComponentWithoutOwner, + _instantiateReactComponent: function (element) { + return new NoopInternalComponent(element); + }, + _replaceNodeWithMarkup: function () {}, + _renderValidatedComponent: ReactCompositeComponent._renderValidatedComponentWithoutOwnerOrContext +}); + +function _batchedRender(renderer, element, context) { + var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(true); + renderer._render(element, transaction, context); + ReactUpdates.ReactReconcileTransaction.release(transaction); +} + +var ReactShallowRenderer = function () { + function ReactShallowRenderer() { + _classCallCheck(this, ReactShallowRenderer); + + this._instance = null; + } + + ReactShallowRenderer.prototype.getMountedInstance = function getMountedInstance() { + return this._instance ? this._instance._instance : null; + }; + + ReactShallowRenderer.prototype.render = function render(element, context) { + // Ensure we've done the default injections. This might not be true in the + // case of a simple test that only requires React and the TestUtils in + // conjunction with an inline-requires transform. + injectDefaults(); + + !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactShallowRenderer render(): Invalid component element.%s', typeof element === 'function' ? ' Instead of passing a component class, make sure to instantiate ' + 'it by passing it to React.createElement.' : '') : _prodInvariant('12', typeof element === 'function' ? ' Instead of passing a component class, make sure to instantiate ' + 'it by passing it to React.createElement.' : '') : void 0; + !(typeof element.type !== 'string') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactShallowRenderer render(): Shallow rendering works only with custom components, not primitives (%s). Instead of calling `.render(el)` and inspecting the rendered output, look at `el.props` directly instead.', element.type) : _prodInvariant('13', element.type) : void 0; + + if (!context) { + context = emptyObject; + } + ReactUpdates.batchedUpdates(_batchedRender, this, element, context); + + return this.getRenderOutput(); + }; + + ReactShallowRenderer.prototype.getRenderOutput = function getRenderOutput() { + return this._instance && this._instance._renderedComponent && this._instance._renderedComponent._renderedOutput || null; + }; + + ReactShallowRenderer.prototype.unmount = function unmount() { + if (this._instance) { + ReactReconciler.unmountComponent(this._instance, false); + } + }; + + ReactShallowRenderer.prototype.unstable_batchedUpdates = function unstable_batchedUpdates(callback, bookkeeping) { + // This is used by Enzyme for fake-simulating events in shallow mode. + injectDefaults(); + return ReactUpdates.batchedUpdates(callback, bookkeeping); + }; + + ReactShallowRenderer.prototype._render = function _render(element, transaction, context) { + if (this._instance) { + ReactReconciler.receiveComponent(this._instance, element, transaction, context); + } else { + var instance = new ShallowComponentWrapper(element); + ReactReconciler.mountComponent(instance, transaction, null, null, context, 0); + this._instance = instance; + } + }; + + return ReactShallowRenderer; +}(); + +ReactShallowRenderer.createRenderer = function () { + return new ReactShallowRenderer(); +}; + +module.exports = ReactShallowRenderer; \ No newline at end of file -- cgit v1.2.3