Initial commit
This commit is contained in:
327
node_modules/react-overlays/lib/Affix.js
generated
vendored
Normal file
327
node_modules/react-overlays/lib/Affix.js
generated
vendored
Normal file
@@ -0,0 +1,327 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _classnames = require('classnames');
|
||||
|
||||
var _classnames2 = _interopRequireDefault(_classnames);
|
||||
|
||||
var _height = require('dom-helpers/query/height');
|
||||
|
||||
var _height2 = _interopRequireDefault(_height);
|
||||
|
||||
var _offset = require('dom-helpers/query/offset');
|
||||
|
||||
var _offset2 = _interopRequireDefault(_offset);
|
||||
|
||||
var _offsetParent = require('dom-helpers/query/offsetParent');
|
||||
|
||||
var _offsetParent2 = _interopRequireDefault(_offsetParent);
|
||||
|
||||
var _scrollTop = require('dom-helpers/query/scrollTop');
|
||||
|
||||
var _scrollTop2 = _interopRequireDefault(_scrollTop);
|
||||
|
||||
var _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');
|
||||
|
||||
var _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _addEventListener = require('./utils/addEventListener');
|
||||
|
||||
var _addEventListener2 = _interopRequireDefault(_addEventListener);
|
||||
|
||||
var _getDocumentHeight = require('./utils/getDocumentHeight');
|
||||
|
||||
var _getDocumentHeight2 = _interopRequireDefault(_getDocumentHeight);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
var _ownerWindow = require('./utils/ownerWindow');
|
||||
|
||||
var _ownerWindow2 = _interopRequireDefault(_ownerWindow);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
/**
|
||||
* The `<Affix/>` component toggles `position: fixed;` on and off, emulating
|
||||
* the effect found with `position: sticky;`.
|
||||
*/
|
||||
var Affix = function (_React$Component) {
|
||||
_inherits(Affix, _React$Component);
|
||||
|
||||
function Affix(props, context) {
|
||||
_classCallCheck(this, Affix);
|
||||
|
||||
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
|
||||
|
||||
_this.onWindowScroll = function () {
|
||||
_this.onUpdate();
|
||||
};
|
||||
|
||||
_this.onDocumentClick = function () {
|
||||
(0, _requestAnimationFrame2.default)(function () {
|
||||
return _this.onUpdate();
|
||||
});
|
||||
};
|
||||
|
||||
_this.onUpdate = function () {
|
||||
if (!_this._isMounted) {
|
||||
return;
|
||||
}
|
||||
|
||||
var _this$props = _this.props,
|
||||
offsetTop = _this$props.offsetTop,
|
||||
viewportOffsetTop = _this$props.viewportOffsetTop;
|
||||
|
||||
var scrollTop = (0, _scrollTop2.default)((0, _ownerWindow2.default)(_this));
|
||||
var positionTopMin = scrollTop + (viewportOffsetTop || 0);
|
||||
|
||||
if (positionTopMin <= offsetTop) {
|
||||
_this.updateState('top', null, null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (positionTopMin > _this.getPositionTopMax()) {
|
||||
if (_this.state.affixed === 'bottom') {
|
||||
_this.updateStateAtBottom();
|
||||
} else {
|
||||
// Setting position away from `fixed` can change the offset parent of
|
||||
// the affix, so we can't calculate the correct position until after
|
||||
// we've updated its position.
|
||||
_this.setState({
|
||||
affixed: 'bottom',
|
||||
position: 'absolute',
|
||||
top: null
|
||||
}, function () {
|
||||
if (!_this._isMounted) {
|
||||
return;
|
||||
}
|
||||
|
||||
_this.updateStateAtBottom();
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
_this.updateState('affix', 'fixed', viewportOffsetTop);
|
||||
};
|
||||
|
||||
_this.getPositionTopMax = function () {
|
||||
var documentHeight = (0, _getDocumentHeight2.default)((0, _ownerDocument2.default)(_this));
|
||||
var height = (0, _height2.default)(_reactDom2.default.findDOMNode(_this));
|
||||
|
||||
return documentHeight - height - _this.props.offsetBottom;
|
||||
};
|
||||
|
||||
_this.updateState = function (affixed, position, top) {
|
||||
if (affixed === _this.state.affixed && position === _this.state.position && top === _this.state.top) {
|
||||
return;
|
||||
}
|
||||
|
||||
var upperName = affixed === 'affix' ? '' : affixed.charAt(0).toUpperCase() + affixed.substr(1);
|
||||
|
||||
if (_this.props['onAffix' + upperName]) {
|
||||
_this.props['onAffix' + upperName]();
|
||||
}
|
||||
|
||||
_this.setState({ affixed: affixed, position: position, top: top }, function () {
|
||||
if (_this.props['onAffixed' + upperName]) {
|
||||
_this.props['onAffixed' + upperName]();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
_this.updateStateAtBottom = function () {
|
||||
var positionTopMax = _this.getPositionTopMax();
|
||||
var offsetParent = (0, _offsetParent2.default)(_reactDom2.default.findDOMNode(_this));
|
||||
var parentTop = (0, _offset2.default)(offsetParent).top;
|
||||
|
||||
_this.updateState('bottom', 'absolute', positionTopMax - parentTop);
|
||||
};
|
||||
|
||||
_this.state = {
|
||||
affixed: 'top',
|
||||
position: null,
|
||||
top: null
|
||||
};
|
||||
|
||||
_this._needPositionUpdate = false;
|
||||
return _this;
|
||||
}
|
||||
|
||||
Affix.prototype.componentDidMount = function componentDidMount() {
|
||||
var _this2 = this;
|
||||
|
||||
this._isMounted = true;
|
||||
|
||||
this._windowScrollListener = (0, _addEventListener2.default)((0, _ownerWindow2.default)(this), 'scroll', function () {
|
||||
return _this2.onWindowScroll();
|
||||
});
|
||||
this._documentClickListener = (0, _addEventListener2.default)((0, _ownerDocument2.default)(this), 'click', function () {
|
||||
return _this2.onDocumentClick();
|
||||
});
|
||||
|
||||
this.onUpdate();
|
||||
};
|
||||
|
||||
Affix.prototype.componentWillReceiveProps = function componentWillReceiveProps() {
|
||||
this._needPositionUpdate = true;
|
||||
};
|
||||
|
||||
Affix.prototype.componentDidUpdate = function componentDidUpdate() {
|
||||
if (this._needPositionUpdate) {
|
||||
this._needPositionUpdate = false;
|
||||
this.onUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
Affix.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||
this._isMounted = false;
|
||||
|
||||
if (this._windowScrollListener) {
|
||||
this._windowScrollListener.remove();
|
||||
}
|
||||
if (this._documentClickListener) {
|
||||
this._documentClickListener.remove();
|
||||
}
|
||||
};
|
||||
|
||||
Affix.prototype.render = function render() {
|
||||
var child = _react2.default.Children.only(this.props.children);
|
||||
var _child$props = child.props,
|
||||
className = _child$props.className,
|
||||
style = _child$props.style;
|
||||
var _state = this.state,
|
||||
affixed = _state.affixed,
|
||||
position = _state.position,
|
||||
top = _state.top;
|
||||
|
||||
var positionStyle = { position: position, top: top };
|
||||
|
||||
var affixClassName = void 0;
|
||||
var affixStyle = void 0;
|
||||
if (affixed === 'top') {
|
||||
affixClassName = this.props.topClassName;
|
||||
affixStyle = this.props.topStyle;
|
||||
} else if (affixed === 'bottom') {
|
||||
affixClassName = this.props.bottomClassName;
|
||||
affixStyle = this.props.bottomStyle;
|
||||
} else {
|
||||
affixClassName = this.props.affixClassName;
|
||||
affixStyle = this.props.affixStyle;
|
||||
}
|
||||
|
||||
return _react2.default.cloneElement(child, {
|
||||
className: (0, _classnames2.default)(affixClassName, className),
|
||||
style: _extends({}, positionStyle, affixStyle, style)
|
||||
});
|
||||
};
|
||||
|
||||
return Affix;
|
||||
}(_react2.default.Component);
|
||||
|
||||
Affix.propTypes = {
|
||||
/**
|
||||
* Pixels to offset from top of screen when calculating position
|
||||
*/
|
||||
offsetTop: _propTypes2.default.number,
|
||||
|
||||
/**
|
||||
* When affixed, pixels to offset from top of viewport
|
||||
*/
|
||||
viewportOffsetTop: _propTypes2.default.number,
|
||||
|
||||
/**
|
||||
* Pixels to offset from bottom of screen when calculating position
|
||||
*/
|
||||
offsetBottom: _propTypes2.default.number,
|
||||
|
||||
/**
|
||||
* CSS class or classes to apply when at top
|
||||
*/
|
||||
topClassName: _propTypes2.default.string,
|
||||
|
||||
/**
|
||||
* Style to apply when at top
|
||||
*/
|
||||
topStyle: _propTypes2.default.object,
|
||||
|
||||
/**
|
||||
* CSS class or classes to apply when affixed
|
||||
*/
|
||||
affixClassName: _propTypes2.default.string,
|
||||
/**
|
||||
* Style to apply when affixed
|
||||
*/
|
||||
affixStyle: _propTypes2.default.object,
|
||||
|
||||
/**
|
||||
* CSS class or classes to apply when at bottom
|
||||
*/
|
||||
bottomClassName: _propTypes2.default.string,
|
||||
|
||||
/**
|
||||
* Style to apply when at bottom
|
||||
*/
|
||||
bottomStyle: _propTypes2.default.object,
|
||||
|
||||
/**
|
||||
* Callback fired when the right before the `affixStyle` and `affixStyle` props are rendered
|
||||
*/
|
||||
onAffix: _propTypes2.default.func,
|
||||
/**
|
||||
* Callback fired after the component `affixStyle` and `affixClassName` props have been rendered.
|
||||
*/
|
||||
onAffixed: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired when the right before the `topStyle` and `topClassName` props are rendered
|
||||
*/
|
||||
onAffixTop: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired after the component `topStyle` and `topClassName` props have been rendered.
|
||||
*/
|
||||
onAffixedTop: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired when the right before the `bottomStyle` and `bottomClassName` props are rendered
|
||||
*/
|
||||
onAffixBottom: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired after the component `bottomStyle` and `bottomClassName` props have been rendered.
|
||||
*/
|
||||
onAffixedBottom: _propTypes2.default.func
|
||||
};
|
||||
|
||||
Affix.defaultProps = {
|
||||
offsetTop: 0,
|
||||
viewportOffsetTop: null,
|
||||
offsetBottom: 0
|
||||
};
|
||||
|
||||
exports.default = Affix;
|
||||
module.exports = exports['default'];
|
||||
256
node_modules/react-overlays/lib/AutoAffix.js
generated
vendored
Normal file
256
node_modules/react-overlays/lib/AutoAffix.js
generated
vendored
Normal file
@@ -0,0 +1,256 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _offset = require('dom-helpers/query/offset');
|
||||
|
||||
var _offset2 = _interopRequireDefault(_offset);
|
||||
|
||||
var _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');
|
||||
|
||||
var _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _componentOrElement = require('prop-types-extra/lib/componentOrElement');
|
||||
|
||||
var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _Affix = require('./Affix');
|
||||
|
||||
var _Affix2 = _interopRequireDefault(_Affix);
|
||||
|
||||
var _addEventListener = require('./utils/addEventListener');
|
||||
|
||||
var _addEventListener2 = _interopRequireDefault(_addEventListener);
|
||||
|
||||
var _getContainer = require('./utils/getContainer');
|
||||
|
||||
var _getContainer2 = _interopRequireDefault(_getContainer);
|
||||
|
||||
var _getDocumentHeight = require('./utils/getDocumentHeight');
|
||||
|
||||
var _getDocumentHeight2 = _interopRequireDefault(_getDocumentHeight);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
var _ownerWindow = require('./utils/ownerWindow');
|
||||
|
||||
var _ownerWindow2 = _interopRequireDefault(_ownerWindow);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var displayName = 'AutoAffix';
|
||||
|
||||
var propTypes = _extends({}, _Affix2.default.propTypes, {
|
||||
/**
|
||||
* The logical container node or component for determining offset from bottom
|
||||
* of viewport, or a function that returns it
|
||||
*/
|
||||
container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),
|
||||
/**
|
||||
* Automatically set width when affixed
|
||||
*/
|
||||
autoWidth: _propTypes2.default.bool
|
||||
});
|
||||
|
||||
// This intentionally doesn't inherit default props from `<Affix>`, so that the
|
||||
// auto-calculated offsets can apply.
|
||||
var defaultProps = {
|
||||
viewportOffsetTop: 0,
|
||||
autoWidth: true
|
||||
};
|
||||
|
||||
/**
|
||||
* The `<AutoAffix/>` component wraps `<Affix/>` to automatically calculate
|
||||
* offsets in many common cases.
|
||||
*/
|
||||
|
||||
var AutoAffix = function (_React$Component) {
|
||||
_inherits(AutoAffix, _React$Component);
|
||||
|
||||
function AutoAffix(props, context) {
|
||||
_classCallCheck(this, AutoAffix);
|
||||
|
||||
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
|
||||
|
||||
_this.onWindowScroll = function () {
|
||||
_this.onUpdate();
|
||||
};
|
||||
|
||||
_this.onWindowResize = function () {
|
||||
if (_this.props.autoWidth) {
|
||||
(0, _requestAnimationFrame2.default)(function () {
|
||||
return _this.onUpdate();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
_this.onDocumentClick = function () {
|
||||
(0, _requestAnimationFrame2.default)(function () {
|
||||
return _this.onUpdate();
|
||||
});
|
||||
};
|
||||
|
||||
_this.onUpdate = function () {
|
||||
if (!_this._isMounted) {
|
||||
return;
|
||||
}
|
||||
|
||||
var _getOffset = (0, _offset2.default)(_this.positioner),
|
||||
offsetTop = _getOffset.top,
|
||||
width = _getOffset.width;
|
||||
|
||||
var container = (0, _getContainer2.default)(_this.props.container);
|
||||
var offsetBottom = void 0;
|
||||
if (container) {
|
||||
var documentHeight = (0, _getDocumentHeight2.default)((0, _ownerDocument2.default)(_this));
|
||||
|
||||
var _getOffset2 = (0, _offset2.default)(container),
|
||||
top = _getOffset2.top,
|
||||
height = _getOffset2.height;
|
||||
|
||||
offsetBottom = documentHeight - top - height;
|
||||
} else {
|
||||
offsetBottom = null;
|
||||
}
|
||||
|
||||
_this.updateState(offsetTop, offsetBottom, width);
|
||||
};
|
||||
|
||||
_this.updateState = function (offsetTop, offsetBottom, width) {
|
||||
if (offsetTop === _this.state.offsetTop && offsetBottom === _this.state.offsetBottom && width === _this.state.width) {
|
||||
return;
|
||||
}
|
||||
|
||||
_this.setState({ offsetTop: offsetTop, offsetBottom: offsetBottom, width: width });
|
||||
};
|
||||
|
||||
_this.state = {
|
||||
offsetTop: null,
|
||||
offsetBottom: null,
|
||||
width: null
|
||||
};
|
||||
return _this;
|
||||
}
|
||||
|
||||
AutoAffix.prototype.componentDidMount = function componentDidMount() {
|
||||
var _this2 = this;
|
||||
|
||||
this._isMounted = true;
|
||||
|
||||
this._windowScrollListener = (0, _addEventListener2.default)((0, _ownerWindow2.default)(this), 'scroll', function () {
|
||||
return _this2.onWindowScroll();
|
||||
});
|
||||
|
||||
this._windowResizeListener = (0, _addEventListener2.default)((0, _ownerWindow2.default)(this), 'resize', function () {
|
||||
return _this2.onWindowResize();
|
||||
});
|
||||
|
||||
this._documentClickListener = (0, _addEventListener2.default)((0, _ownerDocument2.default)(this), 'click', function () {
|
||||
return _this2.onDocumentClick();
|
||||
});
|
||||
|
||||
this.onUpdate();
|
||||
};
|
||||
|
||||
AutoAffix.prototype.componentWillReceiveProps = function componentWillReceiveProps() {
|
||||
this._needPositionUpdate = true;
|
||||
};
|
||||
|
||||
AutoAffix.prototype.componentDidUpdate = function componentDidUpdate() {
|
||||
if (this._needPositionUpdate) {
|
||||
this._needPositionUpdate = false;
|
||||
this.onUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
AutoAffix.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||
this._isMounted = false;
|
||||
|
||||
if (this._windowScrollListener) {
|
||||
this._windowScrollListener.remove();
|
||||
}
|
||||
if (this._documentClickListener) {
|
||||
this._documentClickListener.remove();
|
||||
}
|
||||
if (this._windowResizeListener) {
|
||||
this._windowResizeListener.remove();
|
||||
}
|
||||
};
|
||||
|
||||
AutoAffix.prototype.render = function render() {
|
||||
var _this3 = this;
|
||||
|
||||
var _props = this.props,
|
||||
autoWidth = _props.autoWidth,
|
||||
viewportOffsetTop = _props.viewportOffsetTop,
|
||||
children = _props.children,
|
||||
props = _objectWithoutProperties(_props, ['autoWidth', 'viewportOffsetTop', 'children']);
|
||||
|
||||
var _state = this.state,
|
||||
offsetTop = _state.offsetTop,
|
||||
offsetBottom = _state.offsetBottom,
|
||||
width = _state.width;
|
||||
|
||||
|
||||
delete props.container;
|
||||
|
||||
var effectiveOffsetTop = Math.max(offsetTop, viewportOffsetTop || 0);
|
||||
|
||||
var _props2 = this.props,
|
||||
affixStyle = _props2.affixStyle,
|
||||
bottomStyle = _props2.bottomStyle;
|
||||
|
||||
if (autoWidth) {
|
||||
affixStyle = _extends({ width: width }, affixStyle);
|
||||
bottomStyle = _extends({ width: width }, bottomStyle);
|
||||
}
|
||||
|
||||
return _react2.default.createElement(
|
||||
'div',
|
||||
null,
|
||||
_react2.default.createElement('div', { ref: function ref(c) {
|
||||
_this3.positioner = c;
|
||||
} }),
|
||||
_react2.default.createElement(
|
||||
_Affix2.default,
|
||||
_extends({}, props, {
|
||||
offsetTop: effectiveOffsetTop,
|
||||
viewportOffsetTop: viewportOffsetTop,
|
||||
offsetBottom: offsetBottom,
|
||||
affixStyle: affixStyle,
|
||||
bottomStyle: bottomStyle
|
||||
}),
|
||||
children
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
return AutoAffix;
|
||||
}(_react2.default.Component);
|
||||
|
||||
AutoAffix.displayName = displayName;
|
||||
AutoAffix.propTypes = propTypes;
|
||||
AutoAffix.defaultProps = defaultProps;
|
||||
|
||||
exports.default = AutoAffix;
|
||||
module.exports = exports['default'];
|
||||
136
node_modules/react-overlays/lib/LegacyPortal.js
generated
vendored
Normal file
136
node_modules/react-overlays/lib/LegacyPortal.js
generated
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _componentOrElement = require('prop-types-extra/lib/componentOrElement');
|
||||
|
||||
var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _getContainer = require('./utils/getContainer');
|
||||
|
||||
var _getContainer2 = _interopRequireDefault(_getContainer);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
/**
|
||||
* The `<Portal/>` component renders its children into a new "subtree" outside of current component hierarchy.
|
||||
* You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.
|
||||
* The children of `<Portal/>` component will be appended to the `container` specified.
|
||||
*/
|
||||
var Portal = function (_React$Component) {
|
||||
_inherits(Portal, _React$Component);
|
||||
|
||||
function Portal() {
|
||||
var _temp, _this, _ret;
|
||||
|
||||
_classCallCheck(this, Portal);
|
||||
|
||||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {
|
||||
if (!_this._overlayTarget) {
|
||||
_this._overlayTarget = document.createElement('div');
|
||||
_this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);
|
||||
_this._portalContainerNode.appendChild(_this._overlayTarget);
|
||||
}
|
||||
}, _this._unmountOverlayTarget = function () {
|
||||
if (_this._overlayTarget) {
|
||||
_this._portalContainerNode.removeChild(_this._overlayTarget);
|
||||
_this._overlayTarget = null;
|
||||
}
|
||||
_this._portalContainerNode = null;
|
||||
}, _this._renderOverlay = function () {
|
||||
var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);
|
||||
|
||||
// Save reference for future access.
|
||||
if (overlay !== null) {
|
||||
_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();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Unrender if the component is null for transitions to null
|
||||
_this._unrenderOverlay();
|
||||
_this._unmountOverlayTarget();
|
||||
}
|
||||
}, _this._unrenderOverlay = function () {
|
||||
if (_this._overlayTarget) {
|
||||
_reactDom2.default.unmountComponentAtNode(_this._overlayTarget);
|
||||
_this._overlayInstance = null;
|
||||
}
|
||||
}, _this.getMountNode = function () {
|
||||
return _this._overlayTarget;
|
||||
}, _temp), _possibleConstructorReturn(_this, _ret);
|
||||
}
|
||||
|
||||
Portal.prototype.componentDidMount = function componentDidMount() {
|
||||
this._isMounted = true;
|
||||
this._renderOverlay();
|
||||
};
|
||||
|
||||
Portal.prototype.componentDidUpdate = function componentDidUpdate() {
|
||||
this._renderOverlay();
|
||||
};
|
||||
|
||||
Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
||||
if (this._overlayTarget && nextProps.container !== this.props.container) {
|
||||
this._portalContainerNode.removeChild(this._overlayTarget);
|
||||
this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);
|
||||
this._portalContainerNode.appendChild(this._overlayTarget);
|
||||
}
|
||||
};
|
||||
|
||||
Portal.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||
this._isMounted = false;
|
||||
this._unrenderOverlay();
|
||||
this._unmountOverlayTarget();
|
||||
};
|
||||
|
||||
Portal.prototype.render = function render() {
|
||||
return null;
|
||||
};
|
||||
|
||||
return Portal;
|
||||
}(_react2.default.Component);
|
||||
|
||||
Portal.displayName = 'Portal';
|
||||
Portal.propTypes = {
|
||||
/**
|
||||
* A Node, Component instance, or function that returns either. The `container` will have the Portal children
|
||||
* appended to it.
|
||||
*/
|
||||
container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),
|
||||
|
||||
onRendered: _propTypes2.default.func
|
||||
};
|
||||
exports.default = Portal;
|
||||
module.exports = exports['default'];
|
||||
619
node_modules/react-overlays/lib/Modal.js
generated
vendored
Normal file
619
node_modules/react-overlays/lib/Modal.js
generated
vendored
Normal file
@@ -0,0 +1,619 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _activeElement = require('dom-helpers/activeElement');
|
||||
|
||||
var _activeElement2 = _interopRequireDefault(_activeElement);
|
||||
|
||||
var _contains = require('dom-helpers/query/contains');
|
||||
|
||||
var _contains2 = _interopRequireDefault(_contains);
|
||||
|
||||
var _inDOM = require('dom-helpers/util/inDOM');
|
||||
|
||||
var _inDOM2 = _interopRequireDefault(_inDOM);
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _componentOrElement = require('prop-types-extra/lib/componentOrElement');
|
||||
|
||||
var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
|
||||
|
||||
var _deprecated = require('prop-types-extra/lib/deprecated');
|
||||
|
||||
var _deprecated2 = _interopRequireDefault(_deprecated);
|
||||
|
||||
var _elementType = require('prop-types-extra/lib/elementType');
|
||||
|
||||
var _elementType2 = _interopRequireDefault(_elementType);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _warning = require('warning');
|
||||
|
||||
var _warning2 = _interopRequireDefault(_warning);
|
||||
|
||||
var _ModalManager = require('./ModalManager');
|
||||
|
||||
var _ModalManager2 = _interopRequireDefault(_ModalManager);
|
||||
|
||||
var _Portal = require('./Portal');
|
||||
|
||||
var _Portal2 = _interopRequireDefault(_Portal);
|
||||
|
||||
var _RefHolder = require('./RefHolder');
|
||||
|
||||
var _RefHolder2 = _interopRequireDefault(_RefHolder);
|
||||
|
||||
var _addEventListener = require('./utils/addEventListener');
|
||||
|
||||
var _addEventListener2 = _interopRequireDefault(_addEventListener);
|
||||
|
||||
var _addFocusListener = require('./utils/addFocusListener');
|
||||
|
||||
var _addFocusListener2 = _interopRequireDefault(_addFocusListener);
|
||||
|
||||
var _getContainer = require('./utils/getContainer');
|
||||
|
||||
var _getContainer2 = _interopRequireDefault(_getContainer);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */
|
||||
|
||||
var modalManager = new _ModalManager2.default();
|
||||
|
||||
/**
|
||||
* Love them or hate them, `<Modal/>` provides a solid foundation for creating dialogs, lightboxes, or whatever else.
|
||||
* The Modal component renders its `children` node in front of a backdrop component.
|
||||
*
|
||||
* The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:
|
||||
*
|
||||
* - Manages dialog stacking when one-at-a-time just isn't enough.
|
||||
* - Creates a backdrop, for disabling interaction below the modal.
|
||||
* - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.
|
||||
* - It disables scrolling of the page content while open.
|
||||
* - Adds the appropriate ARIA roles are automatically.
|
||||
* - Easily pluggable animations via a `<Transition/>` component.
|
||||
*
|
||||
* Note that, in the same way the backdrop element prevents users from clicking or interacting
|
||||
* with the page content underneath the Modal, Screen readers also need to be signaled to not to
|
||||
* interact with page content while the Modal is open. To do this, we use a common technique of applying
|
||||
* the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for
|
||||
* a Modal to be truly modal, it should have a `container` that is _outside_ your app's
|
||||
* React hierarchy (such as the default: document.body).
|
||||
*/
|
||||
|
||||
var Modal = function (_React$Component) {
|
||||
_inherits(Modal, _React$Component);
|
||||
|
||||
function Modal() {
|
||||
var _temp, _this, _ret;
|
||||
|
||||
_classCallCheck(this, Modal);
|
||||
|
||||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);
|
||||
}
|
||||
|
||||
Modal.prototype.omitProps = function omitProps(props, propTypes) {
|
||||
|
||||
var keys = Object.keys(props);
|
||||
var newProps = {};
|
||||
keys.map(function (prop) {
|
||||
if (!Object.prototype.hasOwnProperty.call(propTypes, prop)) {
|
||||
newProps[prop] = props[prop];
|
||||
}
|
||||
});
|
||||
|
||||
return newProps;
|
||||
};
|
||||
|
||||
Modal.prototype.render = function render() {
|
||||
var _props = this.props,
|
||||
show = _props.show,
|
||||
container = _props.container,
|
||||
children = _props.children,
|
||||
Transition = _props.transition,
|
||||
backdrop = _props.backdrop,
|
||||
className = _props.className,
|
||||
style = _props.style,
|
||||
onExit = _props.onExit,
|
||||
onExiting = _props.onExiting,
|
||||
onEnter = _props.onEnter,
|
||||
onEntering = _props.onEntering,
|
||||
onEntered = _props.onEntered;
|
||||
|
||||
|
||||
var dialog = _react2.default.Children.only(children);
|
||||
var filteredProps = this.omitProps(this.props, Modal.propTypes);
|
||||
|
||||
var mountModal = show || Transition && !this.state.exited;
|
||||
if (!mountModal) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var _dialog$props = dialog.props,
|
||||
role = _dialog$props.role,
|
||||
tabIndex = _dialog$props.tabIndex;
|
||||
|
||||
|
||||
if (role === undefined || tabIndex === undefined) {
|
||||
dialog = (0, _react.cloneElement)(dialog, {
|
||||
role: role === undefined ? 'document' : role,
|
||||
tabIndex: tabIndex == null ? '-1' : tabIndex
|
||||
});
|
||||
}
|
||||
|
||||
if (Transition) {
|
||||
dialog = _react2.default.createElement(
|
||||
Transition,
|
||||
{
|
||||
appear: true,
|
||||
unmountOnExit: true,
|
||||
'in': show,
|
||||
onExit: onExit,
|
||||
onExiting: onExiting,
|
||||
onExited: this.handleHidden,
|
||||
onEnter: onEnter,
|
||||
onEntering: onEntering,
|
||||
onEntered: onEntered
|
||||
},
|
||||
dialog
|
||||
);
|
||||
}
|
||||
|
||||
return _react2.default.createElement(
|
||||
_Portal2.default,
|
||||
{
|
||||
ref: this.setMountNode,
|
||||
container: container,
|
||||
onRendered: this.onPortalRendered
|
||||
},
|
||||
_react2.default.createElement(
|
||||
'div',
|
||||
_extends({
|
||||
ref: this.setModalNodeRef,
|
||||
role: role || 'dialog'
|
||||
}, filteredProps, {
|
||||
style: style,
|
||||
className: className
|
||||
}),
|
||||
backdrop && this.renderBackdrop(),
|
||||
_react2.default.createElement(
|
||||
_RefHolder2.default,
|
||||
{ ref: this.setDialogRef },
|
||||
dialog
|
||||
)
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
||||
if (nextProps.show) {
|
||||
this.setState({ exited: false });
|
||||
} else if (!nextProps.transition) {
|
||||
// Otherwise let handleHidden take care of marking exited.
|
||||
this.setState({ exited: true });
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {
|
||||
if (!this.props.show && nextProps.show) {
|
||||
this.checkForFocus();
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.componentDidMount = function componentDidMount() {
|
||||
this._isMounted = true;
|
||||
if (this.props.show) {
|
||||
this.onShow();
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {
|
||||
var transition = this.props.transition;
|
||||
|
||||
|
||||
if (prevProps.show && !this.props.show && !transition) {
|
||||
// Otherwise handleHidden will call this.
|
||||
this.onHide();
|
||||
} else if (!prevProps.show && this.props.show) {
|
||||
this.onShow();
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||
var _props2 = this.props,
|
||||
show = _props2.show,
|
||||
transition = _props2.transition;
|
||||
|
||||
|
||||
this._isMounted = false;
|
||||
|
||||
if (show || transition && !this.state.exited) {
|
||||
this.onHide();
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.autoFocus = function autoFocus() {
|
||||
if (!this.props.autoFocus) {
|
||||
return;
|
||||
}
|
||||
|
||||
var dialogElement = this.getDialogElement();
|
||||
var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));
|
||||
|
||||
if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {
|
||||
this.lastFocus = currentActiveElement;
|
||||
|
||||
if (!dialogElement.hasAttribute('tabIndex')) {
|
||||
(0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to "-1".');
|
||||
|
||||
dialogElement.setAttribute('tabIndex', -1);
|
||||
}
|
||||
|
||||
dialogElement.focus();
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.restoreLastFocus = function restoreLastFocus() {
|
||||
// Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)
|
||||
if (this.lastFocus && this.lastFocus.focus) {
|
||||
this.lastFocus.focus();
|
||||
this.lastFocus = null;
|
||||
}
|
||||
};
|
||||
|
||||
Modal.prototype.getDialogElement = function getDialogElement() {
|
||||
return _reactDom2.default.findDOMNode(this.dialog);
|
||||
};
|
||||
|
||||
Modal.prototype.isTopModal = function isTopModal() {
|
||||
return this.props.manager.isTopModal(this);
|
||||
};
|
||||
|
||||
return Modal;
|
||||
}(_react2.default.Component);
|
||||
|
||||
Modal.propTypes = _extends({}, _Portal2.default.propTypes, {
|
||||
|
||||
/**
|
||||
* Set the visibility of the Modal
|
||||
*/
|
||||
show: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* A Node, Component instance, or function that returns either. The Modal is appended to it's container element.
|
||||
*
|
||||
* For the sake of assistive technologies, the container should usually be the document body, so that the rest of the
|
||||
* page content can be placed behind a virtual backdrop as well as a visual one.
|
||||
*/
|
||||
container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),
|
||||
|
||||
/**
|
||||
* A callback fired when the Modal is opening.
|
||||
*/
|
||||
onShow: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* A callback fired when either the backdrop is clicked, or the escape key is pressed.
|
||||
*
|
||||
* The `onHide` callback only signals intent from the Modal,
|
||||
* you must actually set the `show` prop to `false` for the Modal to close.
|
||||
*/
|
||||
onHide: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Include a backdrop component.
|
||||
*/
|
||||
backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),
|
||||
|
||||
/**
|
||||
* A function that returns a backdrop component. Useful for custom
|
||||
* backdrop rendering.
|
||||
*
|
||||
* ```js
|
||||
* renderBackdrop={props => <MyBackdrop {...props} />}
|
||||
* ```
|
||||
*/
|
||||
renderBackdrop: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* A callback fired when the escape key, if specified in `keyboard`, is pressed.
|
||||
*/
|
||||
onEscapeKeyDown: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Support for this function will be deprecated. Please use `onEscapeKeyDown` instead
|
||||
* A callback fired when the escape key, if specified in `keyboard`, is pressed.
|
||||
* @deprecated
|
||||
*/
|
||||
onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),
|
||||
|
||||
/**
|
||||
* A callback fired when the backdrop, if specified, is clicked.
|
||||
*/
|
||||
onBackdropClick: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* A style object for the backdrop component.
|
||||
*/
|
||||
backdropStyle: _propTypes2.default.object,
|
||||
|
||||
/**
|
||||
* A css class or classes for the backdrop component.
|
||||
*/
|
||||
backdropClassName: _propTypes2.default.string,
|
||||
|
||||
/**
|
||||
* A css class or set of classes applied to the modal container when the modal is open,
|
||||
* and removed when it is closed.
|
||||
*/
|
||||
containerClassName: _propTypes2.default.string,
|
||||
|
||||
/**
|
||||
* Close the modal when escape key is pressed
|
||||
*/
|
||||
keyboard: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* A `react-transition-group@2.0.0` `<Transition/>` component used
|
||||
* to control animations for the dialog component.
|
||||
*/
|
||||
transition: _elementType2.default,
|
||||
|
||||
/**
|
||||
* A `react-transition-group@2.0.0` `<Transition/>` component used
|
||||
* to control animations for the backdrop components.
|
||||
*/
|
||||
backdropTransition: _elementType2.default,
|
||||
|
||||
/**
|
||||
* When `true` The modal will automatically shift focus to itself when it opens, and
|
||||
* replace it to the last focused element when it closes. This also
|
||||
* works correctly with any Modal children that have the `autoFocus` prop.
|
||||
*
|
||||
* Generally this should never be set to `false` as it makes the Modal less
|
||||
* accessible to assistive technologies, like screen readers.
|
||||
*/
|
||||
autoFocus: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* When `true` The modal will prevent focus from leaving the Modal while open.
|
||||
*
|
||||
* Generally this should never be set to `false` as it makes the Modal less
|
||||
* accessible to assistive technologies, like screen readers.
|
||||
*/
|
||||
enforceFocus: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* When `true` The modal will restore focus to previously focused element once
|
||||
* modal is hidden
|
||||
*/
|
||||
restoreFocus: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* Callback fired before the Modal transitions in
|
||||
*/
|
||||
onEnter: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired as the Modal begins to transition in
|
||||
*/
|
||||
onEntering: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired after the Modal finishes transitioning in
|
||||
*/
|
||||
onEntered: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired right before the Modal transitions out
|
||||
*/
|
||||
onExit: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired as the Modal begins to transition out
|
||||
*/
|
||||
onExiting: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired after the Modal finishes transitioning out
|
||||
*/
|
||||
onExited: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* A ModalManager instance used to track and manage the state of open
|
||||
* Modals. Useful when customizing how modals interact within a container
|
||||
*/
|
||||
manager: _propTypes2.default.object.isRequired
|
||||
});
|
||||
Modal.defaultProps = {
|
||||
show: false,
|
||||
backdrop: true,
|
||||
keyboard: true,
|
||||
autoFocus: true,
|
||||
enforceFocus: true,
|
||||
restoreFocus: true,
|
||||
onHide: function onHide() {},
|
||||
manager: modalManager,
|
||||
renderBackdrop: function renderBackdrop(props) {
|
||||
return _react2.default.createElement('div', props);
|
||||
}
|
||||
};
|
||||
|
||||
var _initialiseProps = function _initialiseProps() {
|
||||
var _this2 = this;
|
||||
|
||||
this.state = { exited: !this.props.show };
|
||||
|
||||
this.renderBackdrop = function () {
|
||||
var _props3 = _this2.props,
|
||||
backdropStyle = _props3.backdropStyle,
|
||||
backdropClassName = _props3.backdropClassName,
|
||||
renderBackdrop = _props3.renderBackdrop,
|
||||
Transition = _props3.backdropTransition;
|
||||
|
||||
|
||||
var backdropRef = function backdropRef(ref) {
|
||||
return _this2.backdrop = ref;
|
||||
};
|
||||
|
||||
var backdrop = renderBackdrop({
|
||||
ref: backdropRef,
|
||||
style: backdropStyle,
|
||||
className: backdropClassName,
|
||||
onClick: _this2.handleBackdropClick
|
||||
});
|
||||
|
||||
if (Transition) {
|
||||
backdrop = _react2.default.createElement(
|
||||
Transition,
|
||||
{
|
||||
appear: true,
|
||||
'in': _this2.props.show
|
||||
},
|
||||
backdrop
|
||||
);
|
||||
}
|
||||
|
||||
return backdrop;
|
||||
};
|
||||
|
||||
this.onPortalRendered = function () {
|
||||
_this2.autoFocus();
|
||||
|
||||
if (_this2.props.onShow) {
|
||||
_this2.props.onShow();
|
||||
}
|
||||
};
|
||||
|
||||
this.onShow = function () {
|
||||
var doc = (0, _ownerDocument2.default)(_this2);
|
||||
var container = (0, _getContainer2.default)(_this2.props.container, doc.body);
|
||||
|
||||
_this2.props.manager.add(_this2, container, _this2.props.containerClassName);
|
||||
|
||||
_this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);
|
||||
|
||||
_this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);
|
||||
|
||||
_this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);
|
||||
};
|
||||
|
||||
this.onHide = function () {
|
||||
_this2.props.manager.remove(_this2);
|
||||
|
||||
_this2._onDocumentKeydownListener.remove();
|
||||
|
||||
_this2._onDocumentKeyupListener.remove();
|
||||
|
||||
_this2._onFocusinListener.remove();
|
||||
|
||||
if (_this2.props.restoreFocus) {
|
||||
_this2.restoreLastFocus();
|
||||
}
|
||||
};
|
||||
|
||||
this.setMountNode = function (ref) {
|
||||
_this2.mountNode = ref ? ref.getMountNode() : ref;
|
||||
};
|
||||
|
||||
this.setModalNodeRef = function (ref) {
|
||||
_this2.modalNode = ref;
|
||||
};
|
||||
|
||||
this.setDialogRef = function (ref) {
|
||||
_this2.dialog = ref;
|
||||
};
|
||||
|
||||
this.handleHidden = function () {
|
||||
_this2.setState({ exited: true });
|
||||
_this2.onHide();
|
||||
|
||||
if (_this2.props.onExited) {
|
||||
var _props4;
|
||||
|
||||
(_props4 = _this2.props).onExited.apply(_props4, arguments);
|
||||
}
|
||||
};
|
||||
|
||||
this.handleBackdropClick = function (e) {
|
||||
if (e.target !== e.currentTarget) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_this2.props.onBackdropClick) {
|
||||
_this2.props.onBackdropClick(e);
|
||||
}
|
||||
|
||||
if (_this2.props.backdrop === true) {
|
||||
_this2.props.onHide();
|
||||
}
|
||||
};
|
||||
|
||||
this.handleDocumentKeyDown = function (e) {
|
||||
if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {
|
||||
if (_this2.props.onEscapeKeyDown) {
|
||||
_this2.props.onEscapeKeyDown(e);
|
||||
}
|
||||
|
||||
_this2.props.onHide();
|
||||
}
|
||||
};
|
||||
|
||||
this.handleDocumentKeyUp = function (e) {
|
||||
if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {
|
||||
if (_this2.props.onEscapeKeyUp) {
|
||||
_this2.props.onEscapeKeyUp(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.checkForFocus = function () {
|
||||
if (_inDOM2.default) {
|
||||
_this2.lastFocus = (0, _activeElement2.default)();
|
||||
}
|
||||
};
|
||||
|
||||
this.enforceFocus = function () {
|
||||
if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {
|
||||
return;
|
||||
}
|
||||
|
||||
var dialogElement = _this2.getDialogElement();
|
||||
var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));
|
||||
|
||||
if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {
|
||||
dialogElement.focus();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Modal.Manager = _ModalManager2.default;
|
||||
|
||||
exports.default = Modal;
|
||||
module.exports = exports['default'];
|
||||
175
node_modules/react-overlays/lib/ModalManager.js
generated
vendored
Normal file
175
node_modules/react-overlays/lib/ModalManager.js
generated
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _class = require('dom-helpers/class');
|
||||
|
||||
var _class2 = _interopRequireDefault(_class);
|
||||
|
||||
var _style = require('dom-helpers/style');
|
||||
|
||||
var _style2 = _interopRequireDefault(_style);
|
||||
|
||||
var _scrollbarSize = require('dom-helpers/util/scrollbarSize');
|
||||
|
||||
var _scrollbarSize2 = _interopRequireDefault(_scrollbarSize);
|
||||
|
||||
var _isOverflowing = require('./utils/isOverflowing');
|
||||
|
||||
var _isOverflowing2 = _interopRequireDefault(_isOverflowing);
|
||||
|
||||
var _manageAriaHidden = require('./utils/manageAriaHidden');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function findIndexOf(arr, cb) {
|
||||
var idx = -1;
|
||||
arr.some(function (d, i) {
|
||||
if (cb(d, i)) {
|
||||
idx = i;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
return idx;
|
||||
}
|
||||
|
||||
function findContainer(data, modal) {
|
||||
return findIndexOf(data, function (d) {
|
||||
return d.modals.indexOf(modal) !== -1;
|
||||
});
|
||||
}
|
||||
|
||||
function setContainerStyle(state, container) {
|
||||
var style = { overflow: 'hidden' };
|
||||
|
||||
// we are only interested in the actual `style` here
|
||||
// becasue we will override it
|
||||
state.style = {
|
||||
overflow: container.style.overflow,
|
||||
paddingRight: container.style.paddingRight
|
||||
};
|
||||
|
||||
if (state.overflowing) {
|
||||
// use computed style, here to get the real padding
|
||||
// to add our scrollbar width
|
||||
style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';
|
||||
}
|
||||
|
||||
(0, _style2.default)(container, style);
|
||||
}
|
||||
|
||||
function removeContainerStyle(_ref, container) {
|
||||
var style = _ref.style;
|
||||
|
||||
|
||||
Object.keys(style).forEach(function (key) {
|
||||
return container.style[key] = style[key];
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Proper state managment for containers and the modals in those containers.
|
||||
*
|
||||
* @internal Used by the Modal to ensure proper styling of containers.
|
||||
*/
|
||||
|
||||
var ModalManager = function ModalManager() {
|
||||
var _this = this;
|
||||
|
||||
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
||||
_ref2$hideSiblingNode = _ref2.hideSiblingNodes,
|
||||
hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,
|
||||
_ref2$handleContainer = _ref2.handleContainerOverflow,
|
||||
handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;
|
||||
|
||||
_classCallCheck(this, ModalManager);
|
||||
|
||||
this.add = function (modal, container, className) {
|
||||
var modalIdx = _this.modals.indexOf(modal);
|
||||
var containerIdx = _this.containers.indexOf(container);
|
||||
|
||||
if (modalIdx !== -1) {
|
||||
return modalIdx;
|
||||
}
|
||||
|
||||
modalIdx = _this.modals.length;
|
||||
_this.modals.push(modal);
|
||||
|
||||
if (_this.hideSiblingNodes) {
|
||||
(0, _manageAriaHidden.hideSiblings)(container, modal.mountNode);
|
||||
}
|
||||
|
||||
if (containerIdx !== -1) {
|
||||
_this.data[containerIdx].modals.push(modal);
|
||||
return modalIdx;
|
||||
}
|
||||
|
||||
var data = {
|
||||
modals: [modal],
|
||||
//right now only the first modal of a container will have its classes applied
|
||||
classes: className ? className.split(/\s+/) : [],
|
||||
|
||||
overflowing: (0, _isOverflowing2.default)(container)
|
||||
};
|
||||
|
||||
if (_this.handleContainerOverflow) {
|
||||
setContainerStyle(data, container);
|
||||
}
|
||||
|
||||
data.classes.forEach(_class2.default.addClass.bind(null, container));
|
||||
|
||||
_this.containers.push(container);
|
||||
_this.data.push(data);
|
||||
|
||||
return modalIdx;
|
||||
};
|
||||
|
||||
this.remove = function (modal) {
|
||||
var modalIdx = _this.modals.indexOf(modal);
|
||||
|
||||
if (modalIdx === -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
var containerIdx = findContainer(_this.data, modal);
|
||||
var data = _this.data[containerIdx];
|
||||
var container = _this.containers[containerIdx];
|
||||
|
||||
data.modals.splice(data.modals.indexOf(modal), 1);
|
||||
|
||||
_this.modals.splice(modalIdx, 1);
|
||||
|
||||
// if that was the last modal in a container,
|
||||
// clean up the container
|
||||
if (data.modals.length === 0) {
|
||||
data.classes.forEach(_class2.default.removeClass.bind(null, container));
|
||||
|
||||
if (_this.handleContainerOverflow) {
|
||||
removeContainerStyle(data, container);
|
||||
}
|
||||
|
||||
if (_this.hideSiblingNodes) {
|
||||
(0, _manageAriaHidden.showSiblings)(container, modal.mountNode);
|
||||
}
|
||||
_this.containers.splice(containerIdx, 1);
|
||||
_this.data.splice(containerIdx, 1);
|
||||
} else if (_this.hideSiblingNodes) {
|
||||
//otherwise make sure the next top modal is visible to a SR
|
||||
(0, _manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);
|
||||
}
|
||||
};
|
||||
|
||||
this.isTopModal = function (modal) {
|
||||
return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;
|
||||
};
|
||||
|
||||
this.hideSiblingNodes = hideSiblingNodes;
|
||||
this.handleContainerOverflow = handleContainerOverflow;
|
||||
this.modals = [];
|
||||
this.containers = [];
|
||||
this.data = [];
|
||||
};
|
||||
|
||||
exports.default = ModalManager;
|
||||
module.exports = exports['default'];
|
||||
223
node_modules/react-overlays/lib/Overlay.js
generated
vendored
Normal file
223
node_modules/react-overlays/lib/Overlay.js
generated
vendored
Normal file
@@ -0,0 +1,223 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _elementType = require('prop-types-extra/lib/elementType');
|
||||
|
||||
var _elementType2 = _interopRequireDefault(_elementType);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _Portal = require('./Portal');
|
||||
|
||||
var _Portal2 = _interopRequireDefault(_Portal);
|
||||
|
||||
var _Position = require('./Position');
|
||||
|
||||
var _Position2 = _interopRequireDefault(_Position);
|
||||
|
||||
var _RootCloseWrapper = require('./RootCloseWrapper');
|
||||
|
||||
var _RootCloseWrapper2 = _interopRequireDefault(_RootCloseWrapper);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
/**
|
||||
* Built on top of `<Position/>` and `<Portal/>`, the overlay component is great for custom tooltip overlays.
|
||||
*/
|
||||
var Overlay = function (_React$Component) {
|
||||
_inherits(Overlay, _React$Component);
|
||||
|
||||
function Overlay(props, context) {
|
||||
_classCallCheck(this, Overlay);
|
||||
|
||||
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
|
||||
|
||||
_this.handleHidden = function () {
|
||||
_this.setState({ exited: true });
|
||||
|
||||
if (_this.props.onExited) {
|
||||
var _this$props;
|
||||
|
||||
(_this$props = _this.props).onExited.apply(_this$props, arguments);
|
||||
}
|
||||
};
|
||||
|
||||
_this.state = { exited: !props.show };
|
||||
_this.onHiddenListener = _this.handleHidden.bind(_this);
|
||||
return _this;
|
||||
}
|
||||
|
||||
Overlay.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
||||
if (nextProps.show) {
|
||||
this.setState({ exited: false });
|
||||
} else if (!nextProps.transition) {
|
||||
// Otherwise let handleHidden take care of marking exited.
|
||||
this.setState({ exited: true });
|
||||
}
|
||||
};
|
||||
|
||||
Overlay.prototype.render = function render() {
|
||||
var _props = this.props,
|
||||
container = _props.container,
|
||||
containerPadding = _props.containerPadding,
|
||||
target = _props.target,
|
||||
placement = _props.placement,
|
||||
shouldUpdatePosition = _props.shouldUpdatePosition,
|
||||
rootClose = _props.rootClose,
|
||||
children = _props.children,
|
||||
Transition = _props.transition,
|
||||
props = _objectWithoutProperties(_props, ['container', 'containerPadding', 'target', 'placement', 'shouldUpdatePosition', 'rootClose', 'children', 'transition']);
|
||||
|
||||
// Don't un-render the overlay while it's transitioning out.
|
||||
|
||||
|
||||
var mountOverlay = props.show || Transition && !this.state.exited;
|
||||
if (!mountOverlay) {
|
||||
// Don't bother showing anything if we don't have to.
|
||||
return null;
|
||||
}
|
||||
|
||||
var child = children;
|
||||
|
||||
// Position is be inner-most because it adds inline styles into the child,
|
||||
// which the other wrappers don't forward correctly.
|
||||
child = _react2.default.createElement(
|
||||
_Position2.default,
|
||||
{ container: container, containerPadding: containerPadding, target: target, placement: placement, shouldUpdatePosition: shouldUpdatePosition },
|
||||
child
|
||||
);
|
||||
|
||||
if (Transition) {
|
||||
var onExit = props.onExit,
|
||||
onExiting = props.onExiting,
|
||||
onEnter = props.onEnter,
|
||||
onEntering = props.onEntering,
|
||||
onEntered = props.onEntered;
|
||||
|
||||
// This animates the child node by injecting props, so it must precede
|
||||
// anything that adds a wrapping div.
|
||||
|
||||
child = _react2.default.createElement(
|
||||
Transition,
|
||||
{
|
||||
'in': props.show,
|
||||
appear: true,
|
||||
onExit: onExit,
|
||||
onExiting: onExiting,
|
||||
onExited: this.onHiddenListener,
|
||||
onEnter: onEnter,
|
||||
onEntering: onEntering,
|
||||
onEntered: onEntered
|
||||
},
|
||||
child
|
||||
);
|
||||
}
|
||||
|
||||
// This goes after everything else because it adds a wrapping div.
|
||||
if (rootClose) {
|
||||
child = _react2.default.createElement(
|
||||
_RootCloseWrapper2.default,
|
||||
{ onRootClose: props.onHide },
|
||||
child
|
||||
);
|
||||
}
|
||||
|
||||
return _react2.default.createElement(
|
||||
_Portal2.default,
|
||||
{ container: container },
|
||||
child
|
||||
);
|
||||
};
|
||||
|
||||
return Overlay;
|
||||
}(_react2.default.Component);
|
||||
|
||||
Overlay.propTypes = _extends({}, _Portal2.default.propTypes, _Position2.default.propTypes, {
|
||||
|
||||
/**
|
||||
* Set the visibility of the Overlay
|
||||
*/
|
||||
show: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay
|
||||
*/
|
||||
rootClose: _propTypes2.default.bool,
|
||||
|
||||
/**
|
||||
* A Callback fired by the Overlay when it wishes to be hidden.
|
||||
*
|
||||
* __required__ when `rootClose` is `true`.
|
||||
*
|
||||
* @type func
|
||||
*/
|
||||
onHide: function onHide(props) {
|
||||
var propType = _propTypes2.default.func;
|
||||
if (props.rootClose) {
|
||||
propType = propType.isRequired;
|
||||
}
|
||||
|
||||
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||||
args[_key - 1] = arguments[_key];
|
||||
}
|
||||
|
||||
return propType.apply(undefined, [props].concat(args));
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* A `react-transition-group@2.0.0` `<Transition/>` component
|
||||
* used to animate the overlay as it changes visibility.
|
||||
*/
|
||||
transition: _elementType2.default,
|
||||
|
||||
/**
|
||||
* Callback fired before the Overlay transitions in
|
||||
*/
|
||||
onEnter: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired as the Overlay begins to transition in
|
||||
*/
|
||||
onEntering: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired after the Overlay finishes transitioning in
|
||||
*/
|
||||
onEntered: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired right before the Overlay transitions out
|
||||
*/
|
||||
onExit: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired as the Overlay begins to transition out
|
||||
*/
|
||||
onExiting: _propTypes2.default.func,
|
||||
|
||||
/**
|
||||
* Callback fired after the Overlay finishes transitioning out
|
||||
*/
|
||||
onExited: _propTypes2.default.func
|
||||
});
|
||||
|
||||
exports.default = Overlay;
|
||||
module.exports = exports['default'];
|
||||
100
node_modules/react-overlays/lib/Portal.js
generated
vendored
Normal file
100
node_modules/react-overlays/lib/Portal.js
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _componentOrElement = require('prop-types-extra/lib/componentOrElement');
|
||||
|
||||
var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _getContainer = require('./utils/getContainer');
|
||||
|
||||
var _getContainer2 = _interopRequireDefault(_getContainer);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
var _LegacyPortal = require('./LegacyPortal');
|
||||
|
||||
var _LegacyPortal2 = _interopRequireDefault(_LegacyPortal);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
/**
|
||||
* The `<Portal/>` component renders its children into a new "subtree" outside of current component hierarchy.
|
||||
* You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.
|
||||
* The children of `<Portal/>` component will be appended to the `container` specified.
|
||||
*/
|
||||
var Portal = function (_React$Component) {
|
||||
_inherits(Portal, _React$Component);
|
||||
|
||||
function Portal() {
|
||||
var _temp, _this, _ret;
|
||||
|
||||
_classCallCheck(this, Portal);
|
||||
|
||||
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {
|
||||
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;
|
||||
|
||||
_this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);
|
||||
}, _this.getMountNode = function () {
|
||||
return _this._portalContainerNode;
|
||||
}, _temp), _possibleConstructorReturn(_this, _ret);
|
||||
}
|
||||
|
||||
Portal.prototype.componentDidMount = function componentDidMount() {
|
||||
this.setContainer();
|
||||
this.forceUpdate(this.props.onRendered);
|
||||
};
|
||||
|
||||
Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
|
||||
if (nextProps.container !== this.props.container) {
|
||||
this.setContainer(nextProps);
|
||||
}
|
||||
};
|
||||
|
||||
Portal.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||
this._portalContainerNode = null;
|
||||
};
|
||||
|
||||
Portal.prototype.render = function render() {
|
||||
return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;
|
||||
};
|
||||
|
||||
return Portal;
|
||||
}(_react2.default.Component);
|
||||
|
||||
Portal.displayName = 'Portal';
|
||||
Portal.propTypes = {
|
||||
/**
|
||||
* A Node, Component instance, or function that returns either. The `container` will have the Portal children
|
||||
* appended to it.
|
||||
*/
|
||||
container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),
|
||||
|
||||
onRendered: _propTypes2.default.func
|
||||
};
|
||||
exports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;
|
||||
module.exports = exports['default'];
|
||||
200
node_modules/react-overlays/lib/Position.js
generated
vendored
Normal file
200
node_modules/react-overlays/lib/Position.js
generated
vendored
Normal file
@@ -0,0 +1,200 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _classnames = require('classnames');
|
||||
|
||||
var _classnames2 = _interopRequireDefault(_classnames);
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _componentOrElement = require('prop-types-extra/lib/componentOrElement');
|
||||
|
||||
var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _calculatePosition = require('./utils/calculatePosition');
|
||||
|
||||
var _calculatePosition2 = _interopRequireDefault(_calculatePosition);
|
||||
|
||||
var _getContainer = require('./utils/getContainer');
|
||||
|
||||
var _getContainer2 = _interopRequireDefault(_getContainer);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
/**
|
||||
* The Position component calculates the coordinates for its child, to position
|
||||
* it relative to a `target` component or node. Useful for creating callouts
|
||||
* and tooltips, the Position component injects a `style` props with `left` and
|
||||
* `top` values for positioning your component.
|
||||
*
|
||||
* It also injects "arrow" `left`, and `top` values for styling callout arrows
|
||||
* for giving your components a sense of directionality.
|
||||
*/
|
||||
var Position = function (_React$Component) {
|
||||
_inherits(Position, _React$Component);
|
||||
|
||||
function Position(props, context) {
|
||||
_classCallCheck(this, Position);
|
||||
|
||||
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
|
||||
|
||||
_this.getTarget = function () {
|
||||
var target = _this.props.target;
|
||||
|
||||
var targetElement = typeof target === 'function' ? target() : target;
|
||||
return targetElement && _reactDom2.default.findDOMNode(targetElement) || null;
|
||||
};
|
||||
|
||||
_this.maybeUpdatePosition = function (placementChanged) {
|
||||
var target = _this.getTarget();
|
||||
|
||||
if (!_this.props.shouldUpdatePosition && target === _this._lastTarget && !placementChanged) {
|
||||
return;
|
||||
}
|
||||
|
||||
_this.updatePosition(target);
|
||||
};
|
||||
|
||||
_this.state = {
|
||||
positionLeft: 0,
|
||||
positionTop: 0,
|
||||
arrowOffsetLeft: null,
|
||||
arrowOffsetTop: null
|
||||
};
|
||||
|
||||
_this._needsFlush = false;
|
||||
_this._lastTarget = null;
|
||||
return _this;
|
||||
}
|
||||
|
||||
Position.prototype.componentDidMount = function componentDidMount() {
|
||||
this.updatePosition(this.getTarget());
|
||||
};
|
||||
|
||||
Position.prototype.componentWillReceiveProps = function componentWillReceiveProps() {
|
||||
this._needsFlush = true;
|
||||
};
|
||||
|
||||
Position.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {
|
||||
if (this._needsFlush) {
|
||||
this._needsFlush = false;
|
||||
this.maybeUpdatePosition(this.props.placement !== prevProps.placement);
|
||||
}
|
||||
};
|
||||
|
||||
Position.prototype.render = function render() {
|
||||
var _props = this.props,
|
||||
children = _props.children,
|
||||
className = _props.className,
|
||||
props = _objectWithoutProperties(_props, ['children', 'className']);
|
||||
|
||||
var _state = this.state,
|
||||
positionLeft = _state.positionLeft,
|
||||
positionTop = _state.positionTop,
|
||||
arrowPosition = _objectWithoutProperties(_state, ['positionLeft', 'positionTop']);
|
||||
|
||||
// These should not be forwarded to the child.
|
||||
|
||||
|
||||
delete props.target;
|
||||
delete props.container;
|
||||
delete props.containerPadding;
|
||||
delete props.shouldUpdatePosition;
|
||||
|
||||
var child = _react2.default.Children.only(children);
|
||||
return (0, _react.cloneElement)(child, _extends({}, props, arrowPosition, {
|
||||
// FIXME: Don't forward `positionLeft` and `positionTop` via both props
|
||||
// and `props.style`.
|
||||
positionLeft: positionLeft,
|
||||
positionTop: positionTop,
|
||||
className: (0, _classnames2.default)(className, child.props.className),
|
||||
style: _extends({}, child.props.style, {
|
||||
left: positionLeft,
|
||||
top: positionTop
|
||||
})
|
||||
}));
|
||||
};
|
||||
|
||||
Position.prototype.updatePosition = function updatePosition(target) {
|
||||
this._lastTarget = target;
|
||||
|
||||
if (!target) {
|
||||
this.setState({
|
||||
positionLeft: 0,
|
||||
positionTop: 0,
|
||||
arrowOffsetLeft: null,
|
||||
arrowOffsetTop: null
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var overlay = _reactDom2.default.findDOMNode(this);
|
||||
var container = (0, _getContainer2.default)(this.props.container, (0, _ownerDocument2.default)(this).body);
|
||||
|
||||
this.setState((0, _calculatePosition2.default)(this.props.placement, overlay, target, container, this.props.containerPadding));
|
||||
};
|
||||
|
||||
return Position;
|
||||
}(_react2.default.Component);
|
||||
|
||||
Position.propTypes = {
|
||||
/**
|
||||
* A node, element, or function that returns either. The child will be
|
||||
* be positioned next to the `target` specified.
|
||||
*/
|
||||
target: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),
|
||||
|
||||
/**
|
||||
* "offsetParent" of the component
|
||||
*/
|
||||
container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),
|
||||
/**
|
||||
* Minimum spacing in pixels between container border and component border
|
||||
*/
|
||||
containerPadding: _propTypes2.default.number,
|
||||
/**
|
||||
* How to position the component relative to the target
|
||||
*/
|
||||
placement: _propTypes2.default.oneOf(['top', 'right', 'bottom', 'left']),
|
||||
/**
|
||||
* Whether the position should be changed on each update
|
||||
*/
|
||||
shouldUpdatePosition: _propTypes2.default.bool
|
||||
};
|
||||
|
||||
Position.displayName = 'Position';
|
||||
|
||||
Position.defaultProps = {
|
||||
containerPadding: 0,
|
||||
placement: 'right',
|
||||
shouldUpdatePosition: false
|
||||
};
|
||||
|
||||
exports.default = Position;
|
||||
module.exports = exports['default'];
|
||||
49
node_modules/react-overlays/lib/RefHolder.js
generated
vendored
Normal file
49
node_modules/react-overlays/lib/RefHolder.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var propTypes = {
|
||||
children: _propTypes2.default.node
|
||||
};
|
||||
|
||||
/**
|
||||
* Internal helper component to allow attaching a non-conflicting ref to a
|
||||
* child element that may not accept refs.
|
||||
*/
|
||||
|
||||
var RefHolder = function (_React$Component) {
|
||||
_inherits(RefHolder, _React$Component);
|
||||
|
||||
function RefHolder() {
|
||||
_classCallCheck(this, RefHolder);
|
||||
|
||||
return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
|
||||
}
|
||||
|
||||
RefHolder.prototype.render = function render() {
|
||||
return this.props.children;
|
||||
};
|
||||
|
||||
return RefHolder;
|
||||
}(_react2.default.Component);
|
||||
|
||||
RefHolder.propTypes = propTypes;
|
||||
|
||||
exports.default = RefHolder;
|
||||
module.exports = exports['default'];
|
||||
164
node_modules/react-overlays/lib/RootCloseWrapper.js
generated
vendored
Normal file
164
node_modules/react-overlays/lib/RootCloseWrapper.js
generated
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _contains = require('dom-helpers/query/contains');
|
||||
|
||||
var _contains2 = _interopRequireDefault(_contains);
|
||||
|
||||
var _propTypes = require('prop-types');
|
||||
|
||||
var _propTypes2 = _interopRequireDefault(_propTypes);
|
||||
|
||||
var _react = require('react');
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _addEventListener = require('./utils/addEventListener');
|
||||
|
||||
var _addEventListener2 = _interopRequireDefault(_addEventListener);
|
||||
|
||||
var _ownerDocument = require('./utils/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var escapeKeyCode = 27;
|
||||
|
||||
function isLeftClickEvent(event) {
|
||||
return event.button === 0;
|
||||
}
|
||||
|
||||
function isModifiedEvent(event) {
|
||||
return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* The `<RootCloseWrapper/>` component registers your callback on the document
|
||||
* when rendered. Powers the `<Overlay/>` component. This is used achieve modal
|
||||
* style behavior where your callback is triggered when the user tries to
|
||||
* interact with the rest of the document or hits the `esc` key.
|
||||
*/
|
||||
|
||||
var RootCloseWrapper = function (_React$Component) {
|
||||
_inherits(RootCloseWrapper, _React$Component);
|
||||
|
||||
function RootCloseWrapper(props, context) {
|
||||
_classCallCheck(this, RootCloseWrapper);
|
||||
|
||||
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
|
||||
|
||||
_this.addEventListeners = function () {
|
||||
var event = _this.props.event;
|
||||
|
||||
var doc = (0, _ownerDocument2.default)(_this);
|
||||
|
||||
// Use capture for this listener so it fires before React's listener, to
|
||||
// avoid false positives in the contains() check below if the target DOM
|
||||
// element is removed in the React mouse callback.
|
||||
_this.documentMouseCaptureListener = (0, _addEventListener2.default)(doc, event, _this.handleMouseCapture, true);
|
||||
|
||||
_this.documentMouseListener = (0, _addEventListener2.default)(doc, event, _this.handleMouse);
|
||||
|
||||
_this.documentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this.handleKeyUp);
|
||||
};
|
||||
|
||||
_this.removeEventListeners = function () {
|
||||
if (_this.documentMouseCaptureListener) {
|
||||
_this.documentMouseCaptureListener.remove();
|
||||
}
|
||||
|
||||
if (_this.documentMouseListener) {
|
||||
_this.documentMouseListener.remove();
|
||||
}
|
||||
|
||||
if (_this.documentKeyupListener) {
|
||||
_this.documentKeyupListener.remove();
|
||||
}
|
||||
};
|
||||
|
||||
_this.handleMouseCapture = function (e) {
|
||||
_this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains2.default)(_reactDom2.default.findDOMNode(_this), e.target);
|
||||
};
|
||||
|
||||
_this.handleMouse = function (e) {
|
||||
if (!_this.preventMouseRootClose && _this.props.onRootClose) {
|
||||
_this.props.onRootClose(e);
|
||||
}
|
||||
};
|
||||
|
||||
_this.handleKeyUp = function (e) {
|
||||
if (e.keyCode === escapeKeyCode && _this.props.onRootClose) {
|
||||
_this.props.onRootClose(e);
|
||||
}
|
||||
};
|
||||
|
||||
_this.preventMouseRootClose = false;
|
||||
return _this;
|
||||
}
|
||||
|
||||
RootCloseWrapper.prototype.componentDidMount = function componentDidMount() {
|
||||
if (!this.props.disabled) {
|
||||
this.addEventListeners();
|
||||
}
|
||||
};
|
||||
|
||||
RootCloseWrapper.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {
|
||||
if (!this.props.disabled && prevProps.disabled) {
|
||||
this.addEventListeners();
|
||||
} else if (this.props.disabled && !prevProps.disabled) {
|
||||
this.removeEventListeners();
|
||||
}
|
||||
};
|
||||
|
||||
RootCloseWrapper.prototype.componentWillUnmount = function componentWillUnmount() {
|
||||
if (!this.props.disabled) {
|
||||
this.removeEventListeners();
|
||||
}
|
||||
};
|
||||
|
||||
RootCloseWrapper.prototype.render = function render() {
|
||||
return this.props.children;
|
||||
};
|
||||
|
||||
return RootCloseWrapper;
|
||||
}(_react2.default.Component);
|
||||
|
||||
RootCloseWrapper.displayName = 'RootCloseWrapper';
|
||||
|
||||
RootCloseWrapper.propTypes = {
|
||||
/**
|
||||
* Callback fired after click or mousedown. Also triggers when user hits `esc`.
|
||||
*/
|
||||
onRootClose: _propTypes2.default.func,
|
||||
/**
|
||||
* Children to render.
|
||||
*/
|
||||
children: _propTypes2.default.element,
|
||||
/**
|
||||
* Disable the the RootCloseWrapper, preventing it from triggering `onRootClose`.
|
||||
*/
|
||||
disabled: _propTypes2.default.bool,
|
||||
/**
|
||||
* Choose which document mouse event to bind to.
|
||||
*/
|
||||
event: _propTypes2.default.oneOf(['click', 'mousedown'])
|
||||
};
|
||||
|
||||
RootCloseWrapper.defaultProps = {
|
||||
event: 'click'
|
||||
};
|
||||
|
||||
exports.default = RootCloseWrapper;
|
||||
module.exports = exports['default'];
|
||||
42
node_modules/react-overlays/lib/index.js
generated
vendored
Normal file
42
node_modules/react-overlays/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.RootCloseWrapper = exports.Position = exports.Portal = exports.Overlay = exports.Modal = exports.AutoAffix = exports.Affix = undefined;
|
||||
|
||||
var _Affix2 = require('./Affix');
|
||||
|
||||
var _Affix3 = _interopRequireDefault(_Affix2);
|
||||
|
||||
var _AutoAffix2 = require('./AutoAffix');
|
||||
|
||||
var _AutoAffix3 = _interopRequireDefault(_AutoAffix2);
|
||||
|
||||
var _Modal2 = require('./Modal');
|
||||
|
||||
var _Modal3 = _interopRequireDefault(_Modal2);
|
||||
|
||||
var _Overlay2 = require('./Overlay');
|
||||
|
||||
var _Overlay3 = _interopRequireDefault(_Overlay2);
|
||||
|
||||
var _Portal2 = require('./Portal');
|
||||
|
||||
var _Portal3 = _interopRequireDefault(_Portal2);
|
||||
|
||||
var _Position2 = require('./Position');
|
||||
|
||||
var _Position3 = _interopRequireDefault(_Position2);
|
||||
|
||||
var _RootCloseWrapper2 = require('./RootCloseWrapper');
|
||||
|
||||
var _RootCloseWrapper3 = _interopRequireDefault(_RootCloseWrapper2);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
exports.Affix = _Affix3.default;
|
||||
exports.AutoAffix = _AutoAffix3.default;
|
||||
exports.Modal = _Modal3.default;
|
||||
exports.Overlay = _Overlay3.default;
|
||||
exports.Portal = _Portal3.default;
|
||||
exports.Position = _Position3.default;
|
||||
exports.RootCloseWrapper = _RootCloseWrapper3.default;
|
||||
25
node_modules/react-overlays/lib/utils/addEventListener.js
generated
vendored
Normal file
25
node_modules/react-overlays/lib/utils/addEventListener.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
exports.default = function (node, event, handler, capture) {
|
||||
(0, _on2.default)(node, event, handler, capture);
|
||||
|
||||
return {
|
||||
remove: function remove() {
|
||||
(0, _off2.default)(node, event, handler, capture);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var _on = require('dom-helpers/events/on');
|
||||
|
||||
var _on2 = _interopRequireDefault(_on);
|
||||
|
||||
var _off = require('dom-helpers/events/off');
|
||||
|
||||
var _off2 = _interopRequireDefault(_off);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
module.exports = exports['default'];
|
||||
29
node_modules/react-overlays/lib/utils/addFocusListener.js
generated
vendored
Normal file
29
node_modules/react-overlays/lib/utils/addFocusListener.js
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = addFocusListener;
|
||||
/**
|
||||
* Firefox doesn't have a focusin event so using capture is easiest way to get bubbling
|
||||
* IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8
|
||||
*
|
||||
* We only allow one Listener at a time to avoid stack overflows
|
||||
*/
|
||||
function addFocusListener(handler) {
|
||||
var useFocusin = !document.addEventListener;
|
||||
var remove = void 0;
|
||||
|
||||
if (useFocusin) {
|
||||
document.attachEvent('onfocusin', handler);
|
||||
remove = function remove() {
|
||||
return document.detachEvent('onfocusin', handler);
|
||||
};
|
||||
} else {
|
||||
document.addEventListener('focus', handler, true);
|
||||
remove = function remove() {
|
||||
return document.removeEventListener('focus', handler, true);
|
||||
};
|
||||
}
|
||||
|
||||
return { remove: remove };
|
||||
}
|
||||
module.exports = exports['default'];
|
||||
125
node_modules/react-overlays/lib/utils/calculatePosition.js
generated
vendored
Normal file
125
node_modules/react-overlays/lib/utils/calculatePosition.js
generated
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = calculatePosition;
|
||||
|
||||
var _offset = require('dom-helpers/query/offset');
|
||||
|
||||
var _offset2 = _interopRequireDefault(_offset);
|
||||
|
||||
var _position = require('dom-helpers/query/position');
|
||||
|
||||
var _position2 = _interopRequireDefault(_position);
|
||||
|
||||
var _scrollTop = require('dom-helpers/query/scrollTop');
|
||||
|
||||
var _scrollTop2 = _interopRequireDefault(_scrollTop);
|
||||
|
||||
var _ownerDocument = require('./ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function getContainerDimensions(containerNode) {
|
||||
var width = void 0,
|
||||
height = void 0,
|
||||
scroll = void 0;
|
||||
|
||||
if (containerNode.tagName === 'BODY') {
|
||||
width = window.innerWidth;
|
||||
height = window.innerHeight;
|
||||
|
||||
scroll = (0, _scrollTop2.default)((0, _ownerDocument2.default)(containerNode).documentElement) || (0, _scrollTop2.default)(containerNode);
|
||||
} else {
|
||||
var _getOffset = (0, _offset2.default)(containerNode);
|
||||
|
||||
width = _getOffset.width;
|
||||
height = _getOffset.height;
|
||||
|
||||
scroll = (0, _scrollTop2.default)(containerNode);
|
||||
}
|
||||
|
||||
return { width: width, height: height, scroll: scroll };
|
||||
}
|
||||
|
||||
function getTopDelta(top, overlayHeight, container, padding) {
|
||||
var containerDimensions = getContainerDimensions(container);
|
||||
var containerScroll = containerDimensions.scroll;
|
||||
var containerHeight = containerDimensions.height;
|
||||
|
||||
var topEdgeOffset = top - padding - containerScroll;
|
||||
var bottomEdgeOffset = top + padding - containerScroll + overlayHeight;
|
||||
|
||||
if (topEdgeOffset < 0) {
|
||||
return -topEdgeOffset;
|
||||
} else if (bottomEdgeOffset > containerHeight) {
|
||||
return containerHeight - bottomEdgeOffset;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function getLeftDelta(left, overlayWidth, container, padding) {
|
||||
var containerDimensions = getContainerDimensions(container);
|
||||
var containerWidth = containerDimensions.width;
|
||||
|
||||
var leftEdgeOffset = left - padding;
|
||||
var rightEdgeOffset = left + padding + overlayWidth;
|
||||
|
||||
if (leftEdgeOffset < 0) {
|
||||
return -leftEdgeOffset;
|
||||
} else if (rightEdgeOffset > containerWidth) {
|
||||
return containerWidth - rightEdgeOffset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
function calculatePosition(placement, overlayNode, target, container, padding) {
|
||||
var childOffset = container.tagName === 'BODY' ? (0, _offset2.default)(target) : (0, _position2.default)(target, container);
|
||||
|
||||
var _getOffset2 = (0, _offset2.default)(overlayNode),
|
||||
overlayHeight = _getOffset2.height,
|
||||
overlayWidth = _getOffset2.width;
|
||||
|
||||
var positionLeft = void 0,
|
||||
positionTop = void 0,
|
||||
arrowOffsetLeft = void 0,
|
||||
arrowOffsetTop = void 0;
|
||||
|
||||
if (placement === 'left' || placement === 'right') {
|
||||
positionTop = childOffset.top + (childOffset.height - overlayHeight) / 2;
|
||||
|
||||
if (placement === 'left') {
|
||||
positionLeft = childOffset.left - overlayWidth;
|
||||
} else {
|
||||
positionLeft = childOffset.left + childOffset.width;
|
||||
}
|
||||
|
||||
var topDelta = getTopDelta(positionTop, overlayHeight, container, padding);
|
||||
|
||||
positionTop += topDelta;
|
||||
arrowOffsetTop = 50 * (1 - 2 * topDelta / overlayHeight) + '%';
|
||||
arrowOffsetLeft = void 0;
|
||||
} else if (placement === 'top' || placement === 'bottom') {
|
||||
positionLeft = childOffset.left + (childOffset.width - overlayWidth) / 2;
|
||||
|
||||
if (placement === 'top') {
|
||||
positionTop = childOffset.top - overlayHeight;
|
||||
} else {
|
||||
positionTop = childOffset.top + childOffset.height;
|
||||
}
|
||||
|
||||
var leftDelta = getLeftDelta(positionLeft, overlayWidth, container, padding);
|
||||
|
||||
positionLeft += leftDelta;
|
||||
arrowOffsetLeft = 50 * (1 - 2 * leftDelta / overlayWidth) + '%';
|
||||
arrowOffsetTop = void 0;
|
||||
} else {
|
||||
throw new Error('calcOverlayPosition(): No such placement of "' + placement + '" found.');
|
||||
}
|
||||
|
||||
return { positionLeft: positionLeft, positionTop: positionTop, arrowOffsetLeft: arrowOffsetLeft, arrowOffsetTop: arrowOffsetTop };
|
||||
}
|
||||
module.exports = exports['default'];
|
||||
41
node_modules/react-overlays/lib/utils/createChainedFunction.js
generated
vendored
Normal file
41
node_modules/react-overlays/lib/utils/createChainedFunction.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
/**
|
||||
* Safe chained function
|
||||
*
|
||||
* Will only create a new function if needed,
|
||||
* otherwise will pass back existing functions or null.
|
||||
*
|
||||
* @param {function} functions to chain
|
||||
* @returns {function|null}
|
||||
*/
|
||||
function createChainedFunction() {
|
||||
for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
|
||||
funcs[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
return funcs.filter(function (f) {
|
||||
return f != null;
|
||||
}).reduce(function (acc, f) {
|
||||
if (typeof f !== 'function') {
|
||||
throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');
|
||||
}
|
||||
|
||||
if (acc === null) {
|
||||
return f;
|
||||
}
|
||||
|
||||
return function chainedFunction() {
|
||||
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
||||
args[_key2] = arguments[_key2];
|
||||
}
|
||||
|
||||
acc.apply(this, args);
|
||||
f.apply(this, args);
|
||||
};
|
||||
}, null);
|
||||
}
|
||||
|
||||
exports.default = createChainedFunction;
|
||||
module.exports = exports['default'];
|
||||
16
node_modules/react-overlays/lib/utils/getContainer.js
generated
vendored
Normal file
16
node_modules/react-overlays/lib/utils/getContainer.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = getContainer;
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
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;
|
||||
}
|
||||
module.exports = exports['default'];
|
||||
13
node_modules/react-overlays/lib/utils/getDocumentHeight.js
generated
vendored
Normal file
13
node_modules/react-overlays/lib/utils/getDocumentHeight.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
exports.default = function (doc) {
|
||||
return Math.max(doc.documentElement.offsetHeight || 0, doc.height || 0, doc.body.scrollHeight || 0, doc.body.offsetHeight || 0);
|
||||
};
|
||||
|
||||
module.exports = exports["default"]; /**
|
||||
* Get the height of the document
|
||||
*
|
||||
* @returns {documentHeight: number}
|
||||
*/
|
||||
39
node_modules/react-overlays/lib/utils/isOverflowing.js
generated
vendored
Normal file
39
node_modules/react-overlays/lib/utils/isOverflowing.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.default = isOverflowing;
|
||||
|
||||
var _isWindow = require('dom-helpers/query/isWindow');
|
||||
|
||||
var _isWindow2 = _interopRequireDefault(_isWindow);
|
||||
|
||||
var _ownerDocument = require('dom-helpers/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function isBody(node) {
|
||||
return node && node.tagName.toLowerCase() === 'body';
|
||||
}
|
||||
|
||||
function bodyIsOverflowing(node) {
|
||||
var doc = (0, _ownerDocument2.default)(node);
|
||||
var win = (0, _isWindow2.default)(doc);
|
||||
var fullWidth = win.innerWidth;
|
||||
|
||||
// Support: ie8, no innerWidth
|
||||
if (!fullWidth) {
|
||||
var documentElementRect = doc.documentElement.getBoundingClientRect();
|
||||
fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);
|
||||
}
|
||||
|
||||
return doc.body.clientWidth < fullWidth;
|
||||
}
|
||||
|
||||
function isOverflowing(container) {
|
||||
var win = (0, _isWindow2.default)(container);
|
||||
|
||||
return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;
|
||||
}
|
||||
module.exports = exports['default'];
|
||||
47
node_modules/react-overlays/lib/utils/manageAriaHidden.js
generated
vendored
Normal file
47
node_modules/react-overlays/lib/utils/manageAriaHidden.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.ariaHidden = ariaHidden;
|
||||
exports.hideSiblings = hideSiblings;
|
||||
exports.showSiblings = showSiblings;
|
||||
|
||||
var BLACKLIST = ['template', 'script', 'style'];
|
||||
|
||||
var isHidable = function isHidable(_ref) {
|
||||
var nodeType = _ref.nodeType,
|
||||
tagName = _ref.tagName;
|
||||
return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;
|
||||
};
|
||||
|
||||
var siblings = function siblings(container, mount, cb) {
|
||||
mount = [].concat(mount);
|
||||
|
||||
[].forEach.call(container.children, function (node) {
|
||||
if (mount.indexOf(node) === -1 && isHidable(node)) {
|
||||
cb(node);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
function ariaHidden(show, node) {
|
||||
if (!node) {
|
||||
return;
|
||||
}
|
||||
if (show) {
|
||||
node.setAttribute('aria-hidden', 'true');
|
||||
} else {
|
||||
node.removeAttribute('aria-hidden');
|
||||
}
|
||||
}
|
||||
|
||||
function hideSiblings(container, mountNode) {
|
||||
siblings(container, mountNode, function (node) {
|
||||
return ariaHidden(true, node);
|
||||
});
|
||||
}
|
||||
|
||||
function showSiblings(container, mountNode) {
|
||||
siblings(container, mountNode, function (node) {
|
||||
return ariaHidden(false, node);
|
||||
});
|
||||
}
|
||||
19
node_modules/react-overlays/lib/utils/ownerDocument.js
generated
vendored
Normal file
19
node_modules/react-overlays/lib/utils/ownerDocument.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
exports.default = function (componentOrElement) {
|
||||
return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));
|
||||
};
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _ownerDocument = require('dom-helpers/ownerDocument');
|
||||
|
||||
var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
module.exports = exports['default'];
|
||||
19
node_modules/react-overlays/lib/utils/ownerWindow.js
generated
vendored
Normal file
19
node_modules/react-overlays/lib/utils/ownerWindow.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
exports.default = function (componentOrElement) {
|
||||
return (0, _ownerWindow2.default)(_reactDom2.default.findDOMNode(componentOrElement));
|
||||
};
|
||||
|
||||
var _reactDom = require('react-dom');
|
||||
|
||||
var _reactDom2 = _interopRequireDefault(_reactDom);
|
||||
|
||||
var _ownerWindow = require('dom-helpers/ownerWindow');
|
||||
|
||||
var _ownerWindow2 = _interopRequireDefault(_ownerWindow);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
module.exports = exports['default'];
|
||||
Reference in New Issue
Block a user