Completely updated React, fixed #11, (hopefully)

This commit is contained in:
2018-03-04 19:11:49 -05:00
parent 6e0afd6e2a
commit 34e5f5139a
13674 changed files with 333464 additions and 473223 deletions

View File

@@ -0,0 +1,158 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _ownerDocument = require('dom-helpers/ownerDocument');
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
var _exactProp = require('../utils/exactProp');
var _exactProp2 = _interopRequireDefault(_exactProp);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getContainer(container, defaultContainer) {
container = typeof container === 'function' ? container() : container;
return _reactDom2.default.findDOMNode(container) || defaultContainer;
}
function getOwnerDocument(element) {
return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(element));
}
/**
* @ignore - internal component.
*
* This module will soon be gone. We should drop it as soon as React@15.x support stop.
*/
var LegacyPortal = function (_React$Component) {
(0, _inherits3.default)(LegacyPortal, _React$Component);
function LegacyPortal() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, LegacyPortal);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = LegacyPortal.__proto__ || (0, _getPrototypeOf2.default)(LegacyPortal)).call.apply(_ref, [this].concat(args))), _this), _this.getMountNode = function () {
return _this.mountNode;
}, _this.mountOverlayTarget = function () {
if (!_this.overlayTarget) {
_this.overlayTarget = document.createElement('div');
_this.mountNode = getContainer(_this.props.container, getOwnerDocument(_this).body);
_this.mountNode.appendChild(_this.overlayTarget);
}
}, _this.unmountOverlayTarget = function () {
if (_this.overlayTarget) {
_this.mountNode.removeChild(_this.overlayTarget);
_this.overlayTarget = null;
}
_this.mountNode = null;
}, _this.unrenderOverlay = function () {
if (_this.overlayTarget) {
_reactDom2.default.unmountComponentAtNode(_this.overlayTarget);
_this.overlayInstance = null;
}
}, _this.renderOverlay = function () {
var overlay = _this.props.children;
_this.mountOverlayTarget();
var initialRender = !_this.overlayInstance;
_this.overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this.overlayTarget, function () {
if (initialRender && _this.props.onRendered) {
_this.props.onRendered();
}
});
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(LegacyPortal, [{
key: 'componentDidMount',
value: function componentDidMount() {
this.mounted = true;
this.renderOverlay();
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this.overlayTarget && nextProps.container !== this.props.container) {
this.mountNode.removeChild(this.overlayTarget);
this.mountNode = getContainer(nextProps.container, getOwnerDocument(this).body);
this.mountNode.appendChild(this.overlayTarget);
}
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
this.renderOverlay();
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this.mounted = false;
this.unrenderOverlay();
this.unmountOverlayTarget();
}
/**
* @public
*/
}, {
key: 'render',
value: function render() {
return null;
}
}]);
return LegacyPortal;
}(_react2.default.Component);
LegacyPortal.propTypes = process.env.NODE_ENV !== "production" ? {
children: _propTypes2.default.element.isRequired,
container: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]),
onRendered: _propTypes2.default.func
} : {};
LegacyPortal.propTypes = process.env.NODE_ENV !== "production" ? (0, _exactProp2.default)(LegacyPortal.propTypes, 'LegacyPortal') : {};
exports.default = LegacyPortal;

View File

@@ -0,0 +1,104 @@
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import ownerDocument from 'dom-helpers/ownerDocument';
import exactProp from '../utils/exactProp';
function getContainer(container, defaultContainer) {
container = typeof container === 'function' ? container() : container;
return ReactDOM.findDOMNode(container) || defaultContainer;
}
function getOwnerDocument(element) {
return ownerDocument(ReactDOM.findDOMNode(element));
}
/**
* @ignore - internal component.
*
* This module will soon be gone. We should drop it as soon as React@15.x support stop.
*/
class LegacyPortal extends React.Component {
componentDidMount() {
this.mounted = true;
this.renderOverlay();
}
componentWillReceiveProps(nextProps) {
if (this.overlayTarget && nextProps.container !== this.props.container) {
this.mountNode.removeChild(this.overlayTarget);
this.mountNode = getContainer(nextProps.container, getOwnerDocument(this).body);
this.mountNode.appendChild(this.overlayTarget);
}
}
componentDidUpdate() {
this.renderOverlay();
}
componentWillUnmount() {
this.mounted = false;
this.unrenderOverlay();
this.unmountOverlayTarget();
}
/**
* @public
*/
getMountNode = () => {
return this.mountNode;
};
mountOverlayTarget = () => {
if (!this.overlayTarget) {
this.overlayTarget = document.createElement('div');
this.mountNode = getContainer(this.props.container, getOwnerDocument(this).body);
this.mountNode.appendChild(this.overlayTarget);
}
};
unmountOverlayTarget = () => {
if (this.overlayTarget) {
this.mountNode.removeChild(this.overlayTarget);
this.overlayTarget = null;
}
this.mountNode = null;
};
unrenderOverlay = () => {
if (this.overlayTarget) {
ReactDOM.unmountComponentAtNode(this.overlayTarget);
this.overlayInstance = null;
}
};
renderOverlay = () => {
const overlay = this.props.children;
this.mountOverlayTarget();
const initialRender = !this.overlayInstance;
this.overlayInstance = ReactDOM.unstable_renderSubtreeIntoContainer(
this,
overlay,
this.overlayTarget,
() => {
if (initialRender && this.props.onRendered) {
this.props.onRendered();
}
},
);
};
render() {
return null;
}
}
LegacyPortal.propTypes = {
children: PropTypes.element.isRequired,
container: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
onRendered: PropTypes.func,
};
LegacyPortal.propTypes = exactProp(LegacyPortal.propTypes, 'LegacyPortal');
export default LegacyPortal;

View File

@@ -0,0 +1,9 @@
import * as React from 'react';
export interface PortalProps {
children: React.ReactElement<any>;
container?: React.ReactInstance | (() => React.ReactInstance);
onRendered?: () => void;
}
export default class Portal extends React.Component<PortalProps> {}

View File

@@ -0,0 +1,144 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _ownerDocument = require('dom-helpers/ownerDocument');
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
var _exactProp = require('../utils/exactProp');
var _exactProp2 = _interopRequireDefault(_exactProp);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getContainer(container, defaultContainer) {
container = typeof container === 'function' ? container() : container;
return _reactDom2.default.findDOMNode(container) || defaultContainer;
}
function getOwnerDocument(element) {
return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(element));
}
/**
* This component shares many concepts with
* [react-overlays](https://react-bootstrap.github.io/react-overlays/#portals)
* But has been forked in order to fix some bugs, reduce the number of dependencies
* and take the control of our destiny.
*/
var Portal = function (_React$Component) {
(0, _inherits3.default)(Portal, _React$Component);
function Portal() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, Portal);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Portal.__proto__ || (0, _getPrototypeOf2.default)(Portal)).call.apply(_ref, [this].concat(args))), _this), _this.getMountNode = function () {
return _this.mountNode;
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(Portal, [{
key: 'componentDidMount',
value: function componentDidMount() {
this.setContainer(this.props.container);
this.forceUpdate(this.props.onRendered);
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (nextProps.container !== this.props.container) {
this.setContainer(nextProps.container);
}
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
this.mountNode = null;
}
}, {
key: 'setContainer',
value: function setContainer(container) {
this.mountNode = getContainer(container, getOwnerDocument(this).body);
}
/**
* @public
*/
}, {
key: 'render',
value: function render() {
var children = this.props.children;
return this.mountNode ? _reactDom2.default.createPortal(children, this.mountNode) : null;
}
}]);
return Portal;
}(_react2.default.Component);
Portal.propTypes = process.env.NODE_ENV !== "production" ? {
/**
* The children to render into the `container`.
*/
children: _propTypes2.default.node.isRequired,
/**
* A node, component instance, or function that returns either.
* The `container` will have the portal children appended to it.
* By default, it's using the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]),
/**
* Callback fired once the children has been mounted into the `container`.
*/
onRendered: _propTypes2.default.func
} : {};
Portal.propTypes = process.env.NODE_ENV !== "production" ? (0, _exactProp2.default)(Portal.propTypes, 'Portal') : {};
exports.default = Portal;

View File

@@ -0,0 +1,76 @@
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import ownerDocument from 'dom-helpers/ownerDocument';
import exactProp from '../utils/exactProp';
function getContainer(container, defaultContainer) {
container = typeof container === 'function' ? container() : container;
return ReactDOM.findDOMNode(container) || defaultContainer;
}
function getOwnerDocument(element) {
return ownerDocument(ReactDOM.findDOMNode(element));
}
/**
* This component shares many concepts with
* [react-overlays](https://react-bootstrap.github.io/react-overlays/#portals)
* But has been forked in order to fix some bugs, reduce the number of dependencies
* and take the control of our destiny.
*/
class Portal extends React.Component {
componentDidMount() {
this.setContainer(this.props.container);
this.forceUpdate(this.props.onRendered);
}
componentWillReceiveProps(nextProps) {
if (nextProps.container !== this.props.container) {
this.setContainer(nextProps.container);
}
}
componentWillUnmount() {
this.mountNode = null;
}
setContainer(container) {
this.mountNode = getContainer(container, getOwnerDocument(this).body);
}
/**
* @public
*/
getMountNode = () => {
return this.mountNode;
};
render() {
const { children } = this.props;
return this.mountNode ? ReactDOM.createPortal(children, this.mountNode) : null;
}
}
Portal.propTypes = {
/**
* The children to render into the `container`.
*/
children: PropTypes.node.isRequired,
/**
* A node, component instance, or function that returns either.
* The `container` will have the portal children appended to it.
* By default, it's using the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),
/**
* Callback fired once the children has been mounted into the `container`.
*/
onRendered: PropTypes.func,
};
Portal.propTypes = exactProp(Portal.propTypes, 'Portal');
export default Portal;

View File

@@ -0,0 +1,2 @@
export { default } from './Portal';
export * from './Portal';

View File

@@ -0,0 +1,21 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _Portal = require('./Portal');
var _Portal2 = _interopRequireDefault(_Portal);
var _LegacyPortal = require('./LegacyPortal');
var _LegacyPortal2 = _interopRequireDefault(_LegacyPortal);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _reactDom2.default.createPortal ? _Portal2.default : _LegacyPortal2.default;

View File

@@ -0,0 +1,5 @@
import ReactDOM from 'react-dom';
import Portal from './Portal';
import LegacyPortal from './LegacyPortal';
export default (ReactDOM.createPortal ? Portal : LegacyPortal);