From 3f87d91f366dc48061518fb102e051f2c85bfc9b Mon Sep 17 00:00:00 2001 From: Determinant Date: Tue, 9 Apr 2019 01:57:58 -0400 Subject: finish the prototype --- dist/index.html | 18 +- dist/index.js | 59185 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 59162 insertions(+), 41 deletions(-) (limited to 'dist') diff --git a/dist/index.html b/dist/index.html index f040a62..ba9c512 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1,17 @@ -Chromicle
\ No newline at end of file + + + + + + + + Snow + + + +
+ + diff --git a/dist/index.js b/dist/index.js index 3ccb172..bf30157 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,71 +1,59176 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=69)}([function(e,t,n){e.exports=n(157)()},function(e,t,n){"use strict";e.exports=n(70)},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,l],c=0;(u=new Error(t.replace(/%s/g,function(){return s[c++]}))).name="Invariant Violation"}throw u.framesToPop=1,u}}},function(e,t,n){"use strict";e.exports=function(){}},function(e,t,n){var r; -/*! +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/index.tsx"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } +} + +module.exports = _arrayWithoutHoles; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +module.exports = _assertThisInitialized; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +module.exports = _classCallCheck; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/createClass.js": +/*!************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +module.exports = _createClass; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/defineProperty.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +module.exports = _defineProperty; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/extends.js": +/*!********************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/extends.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _extends() { + module.exports = _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; + }; + + return _extends.apply(this, arguments); +} + +module.exports = _extends; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} + +module.exports = _getPrototypeOf; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/inherits.js": +/*!*********************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/inherits.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf */ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js"); + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) setPrototypeOf(subClass, superClass); +} + +module.exports = _inherits; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/inheritsLoose.js": +/*!**************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/inheritsLoose.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; +} + +module.exports = _inheritsLoose; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} + +module.exports = _interopRequireDefault; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/interopRequireWildcard.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/interopRequireWildcard.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; + + if (desc.get || desc.set) { + Object.defineProperty(newObj, key, desc); + } else { + newObj[key] = obj[key]; + } + } + } + } + + newObj.default = obj; + return newObj; + } +} + +module.exports = _interopRequireWildcard; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/iterableToArray.js": +/*!****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); +} + +module.exports = _iterableToArray; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); +} + +module.exports = _nonIterableSpread; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js": +/*!************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"); + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + var target = objectWithoutPropertiesLoose(source, excluded); + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; +} + +module.exports = _objectWithoutProperties; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; +} + +module.exports = _objectWithoutPropertiesLoose; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _typeof = __webpack_require__(/*! ../helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js"); + +var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js"); + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } + + return assertThisInitialized(self); +} + +module.exports = _possibleConstructorReturn; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js": +/*!***************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _setPrototypeOf(o, p) { + module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} + +module.exports = _setPrototypeOf; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/toConsumableArray.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles */ "./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"); + +var iterableToArray = __webpack_require__(/*! ./iterableToArray */ "./node_modules/@babel/runtime/helpers/iterableToArray.js"); + +var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread */ "./node_modules/@babel/runtime/helpers/nonIterableSpread.js"); + +function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); +} + +module.exports = _toConsumableArray; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/typeof.js": +/*!*******************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } + +function _typeof(obj) { + if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return _typeof2(obj); + }; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); + }; + } + + return _typeof(obj); +} + +module.exports = _typeof; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/AppBar/AppBar.js": +/*!*********************************************************!*\ + !*** ./node_modules/@material-ui/core/AppBar/AppBar.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _helpers = __webpack_require__(/*! ../utils/helpers */ "./node_modules/@material-ui/core/utils/helpers.js"); + +var _Paper = _interopRequireDefault(__webpack_require__(/*! ../Paper */ "./node_modules/@material-ui/core/Paper/index.js")); + +// @inheritedComponent Paper +var styles = function styles(theme) { + var backgroundColorDefault = theme.palette.type === 'light' ? theme.palette.grey[100] : theme.palette.grey[900]; + return { + /* Styles applied to the root element. */ + root: { + display: 'flex', + flexDirection: 'column', + width: '100%', + boxSizing: 'border-box', + // Prevent padding issue with the Modal and fixed positioned AppBar. + zIndex: theme.zIndex.appBar, + flexShrink: 0 + }, + + /* Styles applied to the root element if `position="fixed"`. */ + positionFixed: { + position: 'fixed', + top: 0, + left: 'auto', + right: 0 + }, + + /* Styles applied to the root element if `position="absolute"`. */ + positionAbsolute: { + position: 'absolute', + top: 0, + left: 'auto', + right: 0 + }, + + /* Styles applied to the root element if `position="sticky"`. */ + positionSticky: { + position: 'sticky', + top: 0, + left: 'auto', + right: 0 + }, + + /* Styles applied to the root element if `position="static"`. */ + positionStatic: { + position: 'static' + }, + + /* Styles applied to the root element if `position="relative"`. */ + positionRelative: { + position: 'relative' + }, + + /* Styles applied to the root element if `color="default"`. */ + colorDefault: { + backgroundColor: backgroundColorDefault, + color: theme.palette.getContrastText(backgroundColorDefault) + }, + + /* Styles applied to the root element if `color="primary"`. */ + colorPrimary: { + backgroundColor: theme.palette.primary.main, + color: theme.palette.primary.contrastText + }, + + /* Styles applied to the root element if `color="secondary"`. */ + colorSecondary: { + backgroundColor: theme.palette.secondary.main, + color: theme.palette.secondary.contrastText + } + }; +}; + +exports.styles = styles; + +function AppBar(props) { + var _classNames; + + var children = props.children, + classes = props.classes, + classNameProp = props.className, + color = props.color, + position = props.position, + other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "color", "position"]); + var className = (0, _classnames.default)(classes.root, classes["position".concat((0, _helpers.capitalize)(position))], (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes["color".concat((0, _helpers.capitalize)(color))], color !== 'inherit'), (0, _defineProperty2.default)(_classNames, 'mui-fixed', position === 'fixed'), _classNames), classNameProp); + return _react.default.createElement(_Paper.default, (0, _extends2.default)({ + square: true, + component: "header", + elevation: 4, + className: className + }, other), children); +} + + true ? AppBar.propTypes = { + /** + * The content of the component. + */ + children: _propTypes.default.node.isRequired, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The color of the component. It supports those theme colors that make sense for this component. + */ + color: _propTypes.default.oneOf(['inherit', 'primary', 'secondary', 'default']), + + /** + * The positioning type. The behavior of the different options is described + * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning). + * Note: `sticky` is not universally supported and will fall back to `static` when unavailable. + */ + position: _propTypes.default.oneOf(['fixed', 'absolute', 'sticky', 'static', 'relative']) +} : undefined; +AppBar.defaultProps = { + color: 'primary', + position: 'fixed' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiAppBar' +})(AppBar); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/AppBar/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@material-ui/core/AppBar/index.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _AppBar.default; + } +}); + +var _AppBar = _interopRequireDefault(__webpack_require__(/*! ./AppBar */ "./node_modules/@material-ui/core/AppBar/AppBar.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Backdrop/Backdrop.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/Backdrop/Backdrop.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _Fade = _interopRequireDefault(__webpack_require__(/*! ../Fade */ "./node_modules/@material-ui/core/Fade/index.js")); + +var styles = { + /* Styles applied to the root element. */ + root: { + zIndex: -1, + position: 'fixed', + right: 0, + bottom: 0, + top: 0, + left: 0, + backgroundColor: 'rgba(0, 0, 0, 0.5)', + // Remove grey highlight + WebkitTapHighlightColor: 'transparent', + // Disable scroll capabilities. + touchAction: 'none' + }, + + /* Styles applied to the root element if `invisible={true}`. */ + invisible: { + backgroundColor: 'transparent' + } +}; +exports.styles = styles; + +function Backdrop(props) { + var classes = props.classes, + className = props.className, + invisible = props.invisible, + open = props.open, + transitionDuration = props.transitionDuration, + other = (0, _objectWithoutProperties2.default)(props, ["classes", "className", "invisible", "open", "transitionDuration"]); + return _react.default.createElement(_Fade.default, (0, _extends2.default)({ + in: open, + timeout: transitionDuration + }, other), _react.default.createElement("div", { + className: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.invisible, invisible), className), + "aria-hidden": "true" + })); +} + + true ? Backdrop.propTypes = { + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * If `true`, the backdrop is invisible. + * It can be used when rendering a popover or a custom select component. + */ + invisible: _propTypes.default.bool, + + /** + * If `true`, the backdrop is open. + */ + open: _propTypes.default.bool.isRequired, + + /** + * The duration for the transition, in milliseconds. + * You may specify a single timeout for all transitions, or individually with an object. + */ + transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({ + enter: _propTypes.default.number, + exit: _propTypes.default.number + })]) +} : undefined; +Backdrop.defaultProps = { + invisible: false +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiBackdrop' +})(Backdrop); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Backdrop/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@material-ui/core/Backdrop/index.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Backdrop.default; + } +}); + +var _Backdrop = _interopRequireDefault(__webpack_require__(/*! ./Backdrop */ "./node_modules/@material-ui/core/Backdrop/Backdrop.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Button/Button.js": +/*!*********************************************************!*\ + !*** ./node_modules/@material-ui/core/Button/Button.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _colorManipulator = __webpack_require__(/*! ../styles/colorManipulator */ "./node_modules/@material-ui/core/styles/colorManipulator.js"); + +var _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ../ButtonBase */ "./node_modules/@material-ui/core/ButtonBase/index.js")); + +var _helpers = __webpack_require__(/*! ../utils/helpers */ "./node_modules/@material-ui/core/utils/helpers.js"); + +// @inheritedComponent ButtonBase +var styles = function styles(theme) { + return { + /* Styles applied to the root element. */ + root: (0, _extends2.default)({ + lineHeight: 1.75 + }, theme.typography.button, { + boxSizing: 'border-box', + minWidth: 64, + padding: '6px 16px', + borderRadius: theme.shape.borderRadius, + color: theme.palette.text.primary, + transition: theme.transitions.create(['background-color', 'box-shadow', 'border'], { + duration: theme.transitions.duration.short + }), + '&:hover': { + textDecoration: 'none', + backgroundColor: (0, _colorManipulator.fade)(theme.palette.text.primary, theme.palette.action.hoverOpacity), + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: 'transparent' + }, + '&$disabled': { + backgroundColor: 'transparent' + } + }, + '&$disabled': { + color: theme.palette.action.disabled + } + }), + + /* Styles applied to the span element that wraps the children. */ + label: { + width: '100%', + // assure the correct width for iOS Safari + display: 'inherit', + alignItems: 'inherit', + justifyContent: 'inherit' + }, + + /* Styles applied to the root element if `variant="text"`. */ + text: { + padding: '6px 8px' + }, + + /* Styles applied to the root element if `variant="text"` and `color="primary"`. */ + textPrimary: { + color: theme.palette.primary.main, + '&:hover': { + backgroundColor: (0, _colorManipulator.fade)(theme.palette.primary.main, theme.palette.action.hoverOpacity), + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: 'transparent' + } + } + }, + + /* Styles applied to the root element if `variant="text"` and `color="secondary"`. */ + textSecondary: { + color: theme.palette.secondary.main, + '&:hover': { + backgroundColor: (0, _colorManipulator.fade)(theme.palette.secondary.main, theme.palette.action.hoverOpacity), + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: 'transparent' + } + } + }, + + /* Styles applied to the root element for backwards compatibility with legacy variant naming. */ + flat: {}, + + /* Styles applied to the root element for backwards compatibility with legacy variant naming. */ + flatPrimary: {}, + + /* Styles applied to the root element for backwards compatibility with legacy variant naming. */ + flatSecondary: {}, + + /* Styles applied to the root element if `variant="outlined"`. */ + outlined: { + padding: '5px 16px', + border: "1px solid ".concat(theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'), + '&$disabled': { + border: "1px solid ".concat(theme.palette.action.disabled) + } + }, + + /* Styles applied to the root element if `variant="outlined"` and `color="primary"`. */ + outlinedPrimary: { + color: theme.palette.primary.main, + border: "1px solid ".concat((0, _colorManipulator.fade)(theme.palette.primary.main, 0.5)), + '&:hover': { + border: "1px solid ".concat(theme.palette.primary.main), + backgroundColor: (0, _colorManipulator.fade)(theme.palette.primary.main, theme.palette.action.hoverOpacity), + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: 'transparent' + } + } + }, + + /* Styles applied to the root element if `variant="outlined"` and `color="secondary"`. */ + outlinedSecondary: { + color: theme.palette.secondary.main, + border: "1px solid ".concat((0, _colorManipulator.fade)(theme.palette.secondary.main, 0.5)), + '&:hover': { + border: "1px solid ".concat(theme.palette.secondary.main), + backgroundColor: (0, _colorManipulator.fade)(theme.palette.secondary.main, theme.palette.action.hoverOpacity), + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: 'transparent' + } + }, + '&$disabled': { + border: "1px solid ".concat(theme.palette.action.disabled) + } + }, + + /* Styles applied to the root element if `variant="[contained | fab]"`. */ + contained: { + color: theme.palette.getContrastText(theme.palette.grey[300]), + backgroundColor: theme.palette.grey[300], + boxShadow: theme.shadows[2], + '&$focusVisible': { + boxShadow: theme.shadows[6] + }, + '&:active': { + boxShadow: theme.shadows[8] + }, + '&$disabled': { + color: theme.palette.action.disabled, + boxShadow: theme.shadows[0], + backgroundColor: theme.palette.action.disabledBackground + }, + '&:hover': { + backgroundColor: theme.palette.grey.A100, + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: theme.palette.grey[300] + }, + '&$disabled': { + backgroundColor: theme.palette.action.disabledBackground + } + } + }, + + /* Styles applied to the root element if `variant="[contained | fab]"` and `color="primary"`. */ + containedPrimary: { + color: theme.palette.primary.contrastText, + backgroundColor: theme.palette.primary.main, + '&:hover': { + backgroundColor: theme.palette.primary.dark, + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: theme.palette.primary.main + } + } + }, + + /* Styles applied to the root element if `variant="[contained | fab]"` and `color="secondary"`. */ + containedSecondary: { + color: theme.palette.secondary.contrastText, + backgroundColor: theme.palette.secondary.main, + '&:hover': { + backgroundColor: theme.palette.secondary.dark, + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: theme.palette.secondary.main + } + } + }, + + /* Styles applied to the root element for backwards compatibility with legacy variant naming. */ + raised: {}, + // legacy + + /* Styles applied to the root element for backwards compatibility with legacy variant naming. */ + raisedPrimary: {}, + // legacy + + /* Styles applied to the root element for backwards compatibility with legacy variant naming. */ + raisedSecondary: {}, + // legacy + + /* Styles applied to the root element if `variant="[fab | extendedFab]"`. */ + fab: { + borderRadius: '50%', + padding: 0, + minWidth: 0, + width: 56, + height: 56, + boxShadow: theme.shadows[6], + '&:active': { + boxShadow: theme.shadows[12] + } + }, + + /* Styles applied to the root element if `variant="extendedFab"`. */ + extendedFab: { + borderRadius: 48 / 2, + padding: '0 16px', + width: 'auto', + minWidth: 48, + height: 48 + }, + + /* Styles applied to the ButtonBase root element if the button is keyboard focused. */ + focusVisible: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `color="inherit"`. */ + colorInherit: { + color: 'inherit', + borderColor: 'currentColor' + }, + + /* Styles applied to the root element if `mini={true}` & `variant="[fab | extendedFab]"`. */ + mini: { + width: 40, + height: 40 + }, + + /* Styles applied to the root element if `size="small"`. */ + sizeSmall: { + padding: '4px 8px', + minWidth: 64, + fontSize: theme.typography.pxToRem(13) + }, + + /* Styles applied to the root element if `size="large"`. */ + sizeLarge: { + padding: '8px 24px', + fontSize: theme.typography.pxToRem(15) + }, + + /* Styles applied to the root element if `fullWidth={true}`. */ + fullWidth: { + width: '100%' + } + }; +}; + +exports.styles = styles; + +function Button(props) { + var _classNames; + + var children = props.children, + classes = props.classes, + classNameProp = props.className, + color = props.color, + disabled = props.disabled, + disableFocusRipple = props.disableFocusRipple, + focusVisibleClassName = props.focusVisibleClassName, + fullWidth = props.fullWidth, + mini = props.mini, + size = props.size, + variant = props.variant, + other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "color", "disabled", "disableFocusRipple", "focusVisibleClassName", "fullWidth", "mini", "size", "variant"]); + var fab = variant === 'fab' || variant === 'extendedFab'; + var contained = variant === 'contained' || variant === 'raised'; + var text = variant === 'text' || variant === 'flat'; + var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.fab, fab), (0, _defineProperty2.default)(_classNames, classes.mini, fab && mini), (0, _defineProperty2.default)(_classNames, classes.extendedFab, variant === 'extendedFab'), (0, _defineProperty2.default)(_classNames, classes.text, text), (0, _defineProperty2.default)(_classNames, classes.textPrimary, text && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.textSecondary, text && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes.flat, text), (0, _defineProperty2.default)(_classNames, classes.flatPrimary, text && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.flatSecondary, text && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes.contained, contained || fab), (0, _defineProperty2.default)(_classNames, classes.containedPrimary, (contained || fab) && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.containedSecondary, (contained || fab) && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes.raised, contained || fab), (0, _defineProperty2.default)(_classNames, classes.raisedPrimary, (contained || fab) && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.raisedSecondary, (contained || fab) && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes.outlined, variant === 'outlined'), (0, _defineProperty2.default)(_classNames, classes.outlinedPrimary, variant === 'outlined' && color === 'primary'), (0, _defineProperty2.default)(_classNames, classes.outlinedSecondary, variant === 'outlined' && color === 'secondary'), (0, _defineProperty2.default)(_classNames, classes["size".concat((0, _helpers.capitalize)(size))], size !== 'medium'), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.fullWidth, fullWidth), (0, _defineProperty2.default)(_classNames, classes.colorInherit, color === 'inherit'), _classNames), classNameProp); + return _react.default.createElement(_ButtonBase.default, (0, _extends2.default)({ + className: className, + disabled: disabled, + focusRipple: !disableFocusRipple, + focusVisibleClassName: (0, _classnames.default)(classes.focusVisible, focusVisibleClassName) + }, other), _react.default.createElement("span", { + className: classes.label + }, children)); +} + + true ? Button.propTypes = { + /** + * The content of the button. + */ + children: _propTypes.default.node.isRequired, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The color of the component. It supports those theme colors that make sense for this component. + */ + color: _propTypes.default.oneOf(['default', 'inherit', 'primary', 'secondary']), + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, the button will be disabled. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the keyboard focus ripple will be disabled. + * `disableRipple` must also be true. + */ + disableFocusRipple: _propTypes.default.bool, + + /** + * If `true`, the ripple effect will be disabled. + */ + disableRipple: _propTypes.default.bool, + + /** + * @ignore + */ + focusVisibleClassName: _propTypes.default.string, + + /** + * If `true`, the button will take up the full width of its container. + */ + fullWidth: _propTypes.default.bool, + + /** + * The URL to link to when the button is clicked. + * If defined, an `a` element will be used as the root node. + */ + href: _propTypes.default.string, + + /** + * If `true`, and `variant` is `'fab'`, will use mini floating action button styling. + */ + mini: _propTypes.default.bool, + + /** + * The size of the button. + * `small` is equivalent to the dense button styling. + */ + size: _propTypes.default.oneOf(['small', 'medium', 'large']), + + /** + * @ignore + */ + type: _propTypes.default.string, + + /** + * The variant to use. + * __WARNING__: `flat` and `raised` are deprecated. + * Instead use `text` and `contained` respectively. + * `fab` and `extendedFab` are deprecated. + * Instead use `` and `` + */ + variant: (0, _utils.chainPropTypes)(_propTypes.default.oneOf(['text', 'outlined', 'contained', 'fab', 'extendedFab', 'flat', 'raised']), function (props) { + if (props.variant === 'flat') { + return new Error('Material-UI: the `flat` variant will be removed in the next major release. ' + '`text` is equivalent and should be used instead.'); + } + + if (props.variant === 'raised') { + return new Error('Material-UI: the `raised` variant will be removed in the next major release. ' + '`contained` is equivalent and should be used instead.'); + } + + if (props.variant === 'fab') { + return new Error('Material-UI: the `fab` variant will be removed in the next major release. ' + 'The `` component is equivalent and should be used instead.'); + } + + if (props.variant === 'extendedFab') { + return new Error('Material-UI: the `fab` variant will be removed in the next major release. ' + 'The `` component with `variant="extended"` is equivalent ' + 'and should be used instead.'); + } + + return null; + }) +} : undefined; +Button.defaultProps = { + color: 'default', + component: 'button', + disabled: false, + disableFocusRipple: false, + fullWidth: false, + mini: false, + size: 'medium', + type: 'button', + variant: 'text' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiButton' +})(Button); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Button/index.js": +/*!********************************************************!*\ + !*** ./node_modules/@material-ui/core/Button/index.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Button.default; + } +}); + +var _Button = _interopRequireDefault(__webpack_require__(/*! ./Button */ "./node_modules/@material-ui/core/Button/Button.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ButtonBase/ButtonBase.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@material-ui/core/ButtonBase/ButtonBase.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _ownerWindow = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerWindow */ "./node_modules/@material-ui/core/utils/ownerWindow.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _NoSsr = _interopRequireDefault(__webpack_require__(/*! ../NoSsr */ "./node_modules/@material-ui/core/NoSsr/index.js")); + +var _focusVisible = __webpack_require__(/*! ./focusVisible */ "./node_modules/@material-ui/core/ButtonBase/focusVisible.js"); + +var _TouchRipple = _interopRequireDefault(__webpack_require__(/*! ./TouchRipple */ "./node_modules/@material-ui/core/ButtonBase/TouchRipple.js")); + +var _createRippleHandler = _interopRequireDefault(__webpack_require__(/*! ./createRippleHandler */ "./node_modules/@material-ui/core/ButtonBase/createRippleHandler.js")); + +var styles = { + /* Styles applied to the root element. */ + root: { + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative', + // Remove grey highlight + WebkitTapHighlightColor: 'transparent', + backgroundColor: 'transparent', + // Reset default value + // We disable the focus ring for mouse, touch and keyboard users. + outline: 'none', + border: 0, + margin: 0, + // Remove the margin in Safari + borderRadius: 0, + padding: 0, + // Remove the padding in Firefox + cursor: 'pointer', + userSelect: 'none', + verticalAlign: 'middle', + '-moz-appearance': 'none', + // Reset + '-webkit-appearance': 'none', + // Reset + textDecoration: 'none', + // So we take precedent over the style of a native element. + color: 'inherit', + '&::-moz-focus-inner': { + borderStyle: 'none' // Remove Firefox dotted outline. + + }, + '&$disabled': { + pointerEvents: 'none', + // Disable link interactions + cursor: 'default' + } + }, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if keyboard focused. */ + focusVisible: {} +}; +/* istanbul ignore if */ + +exports.styles = styles; + +if ( true && !_react.default.createContext) { + throw new Error('Material-UI: react@16.3.0 or greater is required.'); +} +/** + * `ButtonBase` contains as few styles as possible. + * It aims to be a simple building block for creating a button. + * It contains a load of style reset and some focus/ripple logic. + */ + + +var ButtonBase = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(ButtonBase, _React$Component); + + function ButtonBase() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, ButtonBase); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(ButtonBase)).call.apply(_getPrototypeOf2, [this].concat(args))); + _this.state = {}; + _this.keyDown = false; + _this.focusVisibleCheckTime = 50; + _this.focusVisibleMaxCheckTimes = 5; + _this.handleMouseDown = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'MouseDown', 'start', function () { + clearTimeout(_this.focusVisibleTimeout); + + if (_this.state.focusVisible) { + _this.setState({ + focusVisible: false + }); + } + }); + _this.handleMouseUp = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'MouseUp', 'stop'); + _this.handleMouseLeave = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'MouseLeave', 'stop', function (event) { + if (_this.state.focusVisible) { + event.preventDefault(); + } + }); + _this.handleTouchStart = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'TouchStart', 'start'); + _this.handleTouchEnd = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'TouchEnd', 'stop'); + _this.handleTouchMove = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'TouchMove', 'stop'); + _this.handleContextMenu = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'ContextMenu', 'stop'); + _this.handleBlur = (0, _createRippleHandler.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 'Blur', 'stop', function () { + clearTimeout(_this.focusVisibleTimeout); + + if (_this.state.focusVisible) { + _this.setState({ + focusVisible: false + }); + } + }); + + _this.onRippleRef = function (node) { + _this.ripple = node; + }; + + _this.onFocusVisibleHandler = function (event) { + _this.keyDown = false; + + _this.setState({ + focusVisible: true + }); + + if (_this.props.onFocusVisible) { + _this.props.onFocusVisible(event); + } + }; + + _this.handleKeyDown = function (event) { + var _this$props = _this.props, + component = _this$props.component, + focusRipple = _this$props.focusRipple, + onKeyDown = _this$props.onKeyDown, + onClick = _this$props.onClick; // Check if key is already down to avoid repeats being counted as multiple activations + + if (focusRipple && !_this.keyDown && _this.state.focusVisible && _this.ripple && event.key === ' ') { + _this.keyDown = true; + event.persist(); + + _this.ripple.stop(event, function () { + _this.ripple.start(event); + }); + } + + if (onKeyDown) { + onKeyDown(event); + } // Keyboard accessibility for non interactive elements + + + if (event.target === event.currentTarget && component && component !== 'button' && (event.key === ' ' || event.key === 'Enter') && !(_this.button.tagName === 'A' && _this.button.href)) { + event.preventDefault(); + + if (onClick) { + onClick(event); + } + } + }; + + _this.handleKeyUp = function (event) { + if (_this.props.focusRipple && event.key === ' ' && _this.ripple && _this.state.focusVisible) { + _this.keyDown = false; + event.persist(); + + _this.ripple.stop(event, function () { + _this.ripple.pulsate(event); + }); + } + + if (_this.props.onKeyUp) { + _this.props.onKeyUp(event); + } + }; + + _this.handleFocus = function (event) { + if (_this.props.disabled) { + return; + } // Fix for https://github.com/facebook/react/issues/7769 + + + if (!_this.button) { + _this.button = event.currentTarget; + } + + event.persist(); + (0, _focusVisible.detectFocusVisible)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), _this.button, function () { + _this.onFocusVisibleHandler(event); + }); + + if (_this.props.onFocus) { + _this.props.onFocus(event); + } + }; + + return _this; + } + + (0, _createClass2.default)(ButtonBase, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + this.button = _reactDom.default.findDOMNode(this); + (0, _focusVisible.listenForFocusKeys)((0, _ownerWindow.default)(this.button)); + + if (this.props.action) { + this.props.action({ + focusVisible: function focusVisible() { + _this2.setState({ + focusVisible: true + }); + + _this2.button.focus(); + } + }); + } + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps, prevState) { + if (this.props.focusRipple && !this.props.disableRipple && !prevState.focusVisible && this.state.focusVisible) { + this.ripple.pulsate(); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + clearTimeout(this.focusVisibleTimeout); + } + }, { + key: "render", + value: function render() { + var _classNames; + + var _this$props2 = this.props, + action = _this$props2.action, + buttonRef = _this$props2.buttonRef, + centerRipple = _this$props2.centerRipple, + children = _this$props2.children, + classes = _this$props2.classes, + classNameProp = _this$props2.className, + component = _this$props2.component, + disabled = _this$props2.disabled, + disableRipple = _this$props2.disableRipple, + disableTouchRipple = _this$props2.disableTouchRipple, + focusRipple = _this$props2.focusRipple, + focusVisibleClassName = _this$props2.focusVisibleClassName, + onBlur = _this$props2.onBlur, + onFocus = _this$props2.onFocus, + onFocusVisible = _this$props2.onFocusVisible, + onKeyDown = _this$props2.onKeyDown, + onKeyUp = _this$props2.onKeyUp, + onMouseDown = _this$props2.onMouseDown, + onMouseLeave = _this$props2.onMouseLeave, + onMouseUp = _this$props2.onMouseUp, + onTouchEnd = _this$props2.onTouchEnd, + onTouchMove = _this$props2.onTouchMove, + onTouchStart = _this$props2.onTouchStart, + tabIndex = _this$props2.tabIndex, + TouchRippleProps = _this$props2.TouchRippleProps, + type = _this$props2.type, + other = (0, _objectWithoutProperties2.default)(_this$props2, ["action", "buttonRef", "centerRipple", "children", "classes", "className", "component", "disabled", "disableRipple", "disableTouchRipple", "focusRipple", "focusVisibleClassName", "onBlur", "onFocus", "onFocusVisible", "onKeyDown", "onKeyUp", "onMouseDown", "onMouseLeave", "onMouseUp", "onTouchEnd", "onTouchMove", "onTouchStart", "tabIndex", "TouchRippleProps", "type"]); + var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.focusVisible, this.state.focusVisible), (0, _defineProperty2.default)(_classNames, focusVisibleClassName, this.state.focusVisible), _classNames), classNameProp); + var ComponentProp = component; + + if (ComponentProp === 'button' && other.href) { + ComponentProp = 'a'; + } + + var buttonProps = {}; + + if (ComponentProp === 'button') { + buttonProps.type = type || 'button'; + buttonProps.disabled = disabled; + } else { + buttonProps.role = 'button'; + } + + return _react.default.createElement(ComponentProp, (0, _extends2.default)({ + className: className, + onBlur: this.handleBlur, + onFocus: this.handleFocus, + onKeyDown: this.handleKeyDown, + onKeyUp: this.handleKeyUp, + onMouseDown: this.handleMouseDown, + onMouseLeave: this.handleMouseLeave, + onMouseUp: this.handleMouseUp, + onTouchEnd: this.handleTouchEnd, + onTouchMove: this.handleTouchMove, + onTouchStart: this.handleTouchStart, + onContextMenu: this.handleContextMenu, + ref: buttonRef, + tabIndex: disabled ? '-1' : tabIndex + }, buttonProps, other), children, !disableRipple && !disabled ? _react.default.createElement(_NoSsr.default, null, _react.default.createElement(_TouchRipple.default, (0, _extends2.default)({ + innerRef: this.onRippleRef, + center: centerRipple + }, TouchRippleProps))) : null); + } + }], [{ + key: "getDerivedStateFromProps", + value: function getDerivedStateFromProps(nextProps, prevState) { + if (typeof prevState.focusVisible === 'undefined') { + return { + focusVisible: false, + lastDisabled: nextProps.disabled + }; + } // The blur won't fire when the disabled state is set on a focused input. + // We need to book keep the focused state manually. + + + if (!prevState.prevState && nextProps.disabled && prevState.focusVisible) { + return { + focusVisible: false, + lastDisabled: nextProps.disabled + }; + } + + return { + lastDisabled: nextProps.disabled + }; + } + }]); + return ButtonBase; +}(_react.default.Component); + + true ? ButtonBase.propTypes = { + /** + * Callback fired when the component mounts. + * This is useful when you want to trigger an action programmatically. + * It currently only supports `focusVisible()` action. + * + * @param {object} actions This object contains all possible actions + * that can be triggered programmatically. + */ + action: _propTypes.default.func, + + /** + * Use that property to pass a ref callback to the native button component. + */ + buttonRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), + + /** + * If `true`, the ripples will be centered. + * They won't start at the cursor interaction position. + */ + centerRipple: _propTypes.default.bool, + + /** + * The content of the component. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, the base button will be disabled. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the ripple effect will be disabled. + */ + disableRipple: _propTypes.default.bool, + + /** + * If `true`, the touch ripple effect will be disabled. + */ + disableTouchRipple: _propTypes.default.bool, + + /** + * If `true`, the base button will have a keyboard focus ripple. + * `disableRipple` must also be `false`. + */ + focusRipple: _propTypes.default.bool, + + /** + * This property can help a person know which element has the keyboard focus. + * The class name will be applied when the element gain the focus through a keyboard interaction. + * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo). + * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/master/explainer.md). + * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components + * if needed. + */ + focusVisibleClassName: _propTypes.default.string, + + /** + * @ignore + */ + onBlur: _propTypes.default.func, + + /** + * @ignore + */ + onClick: _propTypes.default.func, + + /** + * @ignore + */ + onFocus: _propTypes.default.func, + + /** + * Callback fired when the component is focused with a keyboard. + * We trigger a `onFocus` callback too. + */ + onFocusVisible: _propTypes.default.func, + + /** + * @ignore + */ + onKeyDown: _propTypes.default.func, + + /** + * @ignore + */ + onKeyUp: _propTypes.default.func, + + /** + * @ignore + */ + onMouseDown: _propTypes.default.func, + + /** + * @ignore + */ + onMouseLeave: _propTypes.default.func, + + /** + * @ignore + */ + onMouseUp: _propTypes.default.func, + + /** + * @ignore + */ + onTouchEnd: _propTypes.default.func, + + /** + * @ignore + */ + onTouchMove: _propTypes.default.func, + + /** + * @ignore + */ + onTouchStart: _propTypes.default.func, + + /** + * @ignore + */ + role: _propTypes.default.string, + + /** + * @ignore + */ + tabIndex: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), + + /** + * Properties applied to the `TouchRipple` element. + */ + TouchRippleProps: _propTypes.default.object, + + /** + * Used to control the button's purpose. + * This property passes the value to the `type` attribute of the native button component. + * Valid property values include `button`, `submit`, and `reset`. + */ + type: _propTypes.default.string +} : undefined; +ButtonBase.defaultProps = { + centerRipple: false, + component: 'button', + disableRipple: false, + disableTouchRipple: false, + focusRipple: false, + tabIndex: '0', + type: 'button' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiButtonBase' +})(ButtonBase); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ButtonBase/Ripple.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/ButtonBase/Ripple.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ "./node_modules/react-transition-group/Transition.js")); + +/** + * @ignore - internal component. + */ +var Ripple = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(Ripple, _React$Component); + + function Ripple() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, Ripple); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Ripple)).call.apply(_getPrototypeOf2, [this].concat(args))); + _this.state = { + visible: false, + leaving: false + }; + + _this.handleEnter = function () { + _this.setState({ + visible: true + }); + }; + + _this.handleExit = function () { + _this.setState({ + leaving: true + }); + }; + + return _this; + } + + (0, _createClass2.default)(Ripple, [{ + key: "render", + value: function render() { + var _classNames, _classNames2; + + var _this$props = this.props, + classes = _this$props.classes, + classNameProp = _this$props.className, + pulsate = _this$props.pulsate, + rippleX = _this$props.rippleX, + rippleY = _this$props.rippleY, + rippleSize = _this$props.rippleSize, + other = (0, _objectWithoutProperties2.default)(_this$props, ["classes", "className", "pulsate", "rippleX", "rippleY", "rippleSize"]); + var _this$state = this.state, + visible = _this$state.visible, + leaving = _this$state.leaving; + var rippleClassName = (0, _classnames.default)(classes.ripple, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.rippleVisible, visible), (0, _defineProperty2.default)(_classNames, classes.ripplePulsate, pulsate), _classNames), classNameProp); + var rippleStyles = { + width: rippleSize, + height: rippleSize, + top: -(rippleSize / 2) + rippleY, + left: -(rippleSize / 2) + rippleX + }; + var childClassName = (0, _classnames.default)(classes.child, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.childLeaving, leaving), (0, _defineProperty2.default)(_classNames2, classes.childPulsate, pulsate), _classNames2)); + return _react.default.createElement(_Transition.default, (0, _extends2.default)({ + onEnter: this.handleEnter, + onExit: this.handleExit + }, other), _react.default.createElement("span", { + className: rippleClassName, + style: rippleStyles + }, _react.default.createElement("span", { + className: childClassName + }))); + } + }]); + return Ripple; +}(_react.default.Component); + + true ? Ripple.propTypes = { + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element. + */ + pulsate: _propTypes.default.bool, + + /** + * Diameter of the ripple. + */ + rippleSize: _propTypes.default.number, + + /** + * Horizontal position of the ripple center. + */ + rippleX: _propTypes.default.number, + + /** + * Vertical position of the ripple center. + */ + rippleY: _propTypes.default.number +} : undefined; +Ripple.defaultProps = { + pulsate: false +}; +var _default = Ripple; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ButtonBase/TouchRipple.js": +/*!******************************************************************!*\ + !*** ./node_modules/@material-ui/core/ButtonBase/TouchRipple.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = exports.DELAY_RIPPLE = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js")); + +var _TransitionGroup = _interopRequireDefault(__webpack_require__(/*! react-transition-group/TransitionGroup */ "./node_modules/react-transition-group/TransitionGroup.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _Ripple = _interopRequireDefault(__webpack_require__(/*! ./Ripple */ "./node_modules/@material-ui/core/ButtonBase/Ripple.js")); + +var DURATION = 550; +var DELAY_RIPPLE = 80; +exports.DELAY_RIPPLE = DELAY_RIPPLE; + +var styles = function styles(theme) { + return { + /* Styles applied to the root element. */ + root: { + display: 'block', + position: 'absolute', + overflow: 'hidden', + borderRadius: 'inherit', + width: '100%', + height: '100%', + left: 0, + top: 0, + pointerEvents: 'none', + zIndex: 0 + }, + + /* Styles applied to the internal `Ripple` components `ripple` class. */ + ripple: { + width: 50, + height: 50, + left: 0, + top: 0, + opacity: 0, + position: 'absolute' + }, + + /* Styles applied to the internal `Ripple` components `rippleVisible` class. */ + rippleVisible: { + opacity: 0.3, + transform: 'scale(1)', + animation: "mui-ripple-enter ".concat(DURATION, "ms ").concat(theme.transitions.easing.easeInOut), + // Backward compatible logic between JSS v9 and v10. + // To remove with the release of Material-UI v4 + animationName: '$mui-ripple-enter' + }, + + /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */ + ripplePulsate: { + animationDuration: "".concat(theme.transitions.duration.shorter, "ms") + }, + + /* Styles applied to the internal `Ripple` components `child` class. */ + child: { + opacity: 1, + display: 'block', + width: '100%', + height: '100%', + borderRadius: '50%', + backgroundColor: 'currentColor' + }, + + /* Styles applied to the internal `Ripple` components `childLeaving` class. */ + childLeaving: { + opacity: 0, + animation: "mui-ripple-exit ".concat(DURATION, "ms ").concat(theme.transitions.easing.easeInOut), + // Backward compatible logic between JSS v9 and v10. + // To remove with the release of Material-UI v4 + animationName: '$mui-ripple-exit' + }, + + /* Styles applied to the internal `Ripple` components `childPulsate` class. */ + childPulsate: { + position: 'absolute', + left: 0, + top: 0, + animation: "mui-ripple-pulsate 2500ms ".concat(theme.transitions.easing.easeInOut, " 200ms infinite"), + // Backward compatible logic between JSS v9 and v10. + // To remove with the release of Material-UI v4 + animationName: '$mui-ripple-pulsate' + }, + '@keyframes mui-ripple-enter': { + '0%': { + transform: 'scale(0)', + opacity: 0.1 + }, + '100%': { + transform: 'scale(1)', + opacity: 0.3 + } + }, + '@keyframes mui-ripple-exit': { + '0%': { + opacity: 1 + }, + '100%': { + opacity: 0 + } + }, + '@keyframes mui-ripple-pulsate': { + '0%': { + transform: 'scale(1)' + }, + '50%': { + transform: 'scale(0.92)' + }, + '100%': { + transform: 'scale(1)' + } + } + }; +}; + +exports.styles = styles; + +var TouchRipple = +/*#__PURE__*/ +function (_React$PureComponent) { + (0, _inherits2.default)(TouchRipple, _React$PureComponent); + + function TouchRipple() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, TouchRipple); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(TouchRipple)).call.apply(_getPrototypeOf2, [this].concat(args))); + _this.state = { + nextKey: 0, + ripples: [] + }; + + _this.pulsate = function () { + _this.start({}, { + pulsate: true + }); + }; + + _this.start = function () { + var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var cb = arguments.length > 2 ? arguments[2] : undefined; + var _options$pulsate = options.pulsate, + pulsate = _options$pulsate === void 0 ? false : _options$pulsate, + _options$center = options.center, + center = _options$center === void 0 ? _this.props.center || options.pulsate : _options$center, + _options$fakeElement = options.fakeElement, + fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement; + + if (event.type === 'mousedown' && _this.ignoringMouseDown) { + _this.ignoringMouseDown = false; + return; + } + + if (event.type === 'touchstart') { + _this.ignoringMouseDown = true; + } + + var element = fakeElement ? null : _reactDom.default.findDOMNode((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); + var rect = element ? element.getBoundingClientRect() : { + width: 0, + height: 0, + left: 0, + top: 0 + }; // Get the size of the ripple + + var rippleX; + var rippleY; + var rippleSize; + + if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) { + rippleX = Math.round(rect.width / 2); + rippleY = Math.round(rect.height / 2); + } else { + var clientX = event.clientX ? event.clientX : event.touches[0].clientX; + var clientY = event.clientY ? event.clientY : event.touches[0].clientY; + rippleX = Math.round(clientX - rect.left); + rippleY = Math.round(clientY - rect.top); + } + + if (center) { + rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even. + + if (rippleSize % 2 === 0) { + rippleSize += 1; + } + } else { + var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2; + var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2; + rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2)); + } // Touche devices + + + if (event.touches) { + // Prepare the ripple effect. + _this.startTimerCommit = function () { + _this.startCommit({ + pulsate: pulsate, + rippleX: rippleX, + rippleY: rippleY, + rippleSize: rippleSize, + cb: cb + }); + }; // Delay the execution of the ripple effect. + + + _this.startTimer = setTimeout(function () { + if (_this.startTimerCommit) { + _this.startTimerCommit(); + + _this.startTimerCommit = null; + } + }, DELAY_RIPPLE); // We have to make a tradeoff with this value. + } else { + _this.startCommit({ + pulsate: pulsate, + rippleX: rippleX, + rippleY: rippleY, + rippleSize: rippleSize, + cb: cb + }); + } + }; + + _this.startCommit = function (params) { + var pulsate = params.pulsate, + rippleX = params.rippleX, + rippleY = params.rippleY, + rippleSize = params.rippleSize, + cb = params.cb; + + _this.setState(function (state) { + return { + nextKey: state.nextKey + 1, + ripples: [].concat((0, _toConsumableArray2.default)(state.ripples), [_react.default.createElement(_Ripple.default, { + key: state.nextKey, + classes: _this.props.classes, + timeout: { + exit: DURATION, + enter: DURATION + }, + pulsate: pulsate, + rippleX: rippleX, + rippleY: rippleY, + rippleSize: rippleSize + })]) + }; + }, cb); + }; + + _this.stop = function (event, cb) { + clearTimeout(_this.startTimer); + var ripples = _this.state.ripples; // The touch interaction occurs too quickly. + // We still want to show ripple effect. + + if (event.type === 'touchend' && _this.startTimerCommit) { + event.persist(); + + _this.startTimerCommit(); + + _this.startTimerCommit = null; + _this.startTimer = setTimeout(function () { + _this.stop(event, cb); + }); + return; + } + + _this.startTimerCommit = null; + + if (ripples && ripples.length) { + _this.setState({ + ripples: ripples.slice(1) + }, cb); + } + }; + + return _this; + } + + (0, _createClass2.default)(TouchRipple, [{ + key: "componentWillUnmount", + value: function componentWillUnmount() { + clearTimeout(this.startTimer); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + center = _this$props.center, + classes = _this$props.classes, + className = _this$props.className, + other = (0, _objectWithoutProperties2.default)(_this$props, ["center", "classes", "className"]); + return _react.default.createElement(_TransitionGroup.default, (0, _extends2.default)({ + component: "span", + enter: true, + exit: true, + className: (0, _classnames.default)(classes.root, className) + }, other), this.state.ripples); + } + }]); + return TouchRipple; +}(_react.default.PureComponent); + + true ? TouchRipple.propTypes = { + /** + * If `true`, the ripple starts at the center of the component + * rather than at the point of interaction. + */ + center: _propTypes.default.bool, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string +} : undefined; +TouchRipple.defaultProps = { + center: false +}; + +var _default = (0, _withStyles.default)(styles, { + flip: false, + name: 'MuiTouchRipple' +})(TouchRipple); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ButtonBase/createRippleHandler.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@material-ui/core/ButtonBase/createRippleHandler.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +/* eslint-disable import/no-mutable-exports */ +var createRippleHandler = function createRippleHandler(instance, eventName, action, cb) { + return function (event) { + if (cb) { + cb.call(instance, event); + } + + var ignore = false; // Ignore events that have been `event.preventDefault()` marked. + + if (event.defaultPrevented) { + ignore = true; + } + + if (instance.props.disableTouchRipple && eventName !== 'Blur') { + ignore = true; + } + + if (!ignore && instance.ripple) { + instance.ripple[action](event); + } + + if (typeof instance.props["on".concat(eventName)] === 'function') { + instance.props["on".concat(eventName)](event); + } + + return true; + }; +}; +/* istanbul ignore if */ + + +if (typeof window === 'undefined') { + createRippleHandler = function createRippleHandler() { + return function () {}; + }; +} + +var _default = createRippleHandler; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ButtonBase/focusVisible.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@material-ui/core/ButtonBase/focusVisible.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.detectFocusVisible = detectFocusVisible; +exports.listenForFocusKeys = listenForFocusKeys; + +var _warning = _interopRequireDefault(__webpack_require__(/*! warning */ "./node_modules/warning/warning.js")); + +var _ownerDocument = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerDocument */ "./node_modules/@material-ui/core/utils/ownerDocument.js")); + +var internal = { + focusKeyPressed: false, + keyUpEventTimeout: -1 +}; + +function findActiveElement(doc) { + var activeElement = doc.activeElement; + + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) { + activeElement = activeElement.shadowRoot.activeElement; + } + + return activeElement; +} + +function detectFocusVisible(instance, element, callback) { + var attempt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + true ? (0, _warning.default)(instance.focusVisibleCheckTime, 'Material-UI: missing instance.focusVisibleCheckTime.') : undefined; + true ? (0, _warning.default)(instance.focusVisibleMaxCheckTimes, 'Material-UI: missing instance.focusVisibleMaxCheckTimes.') : undefined; + instance.focusVisibleTimeout = setTimeout(function () { + var doc = (0, _ownerDocument.default)(element); + var activeElement = findActiveElement(doc); + + if (internal.focusKeyPressed && (activeElement === element || element.contains(activeElement))) { + callback(); + } else if (attempt < instance.focusVisibleMaxCheckTimes) { + detectFocusVisible(instance, element, callback, attempt + 1); + } + }, instance.focusVisibleCheckTime); +} + +var FOCUS_KEYS = [9, // 'Tab', +13, // 'Enter', +27, // 'Escape', +32, // ' ', +37, // 'ArrowLeft', +38, // 'ArrowUp', +39, // 'ArrowRight', +40]; + +function isFocusKey(event) { + // Use event.keyCode to support IE 11 + return FOCUS_KEYS.indexOf(event.keyCode) > -1; +} + +var handleKeyUpEvent = function handleKeyUpEvent(event) { + if (isFocusKey(event)) { + internal.focusKeyPressed = true; // Let's consider that the user is using a keyboard during a window frame of 500ms. + + clearTimeout(internal.keyUpEventTimeout); + internal.keyUpEventTimeout = setTimeout(function () { + internal.focusKeyPressed = false; + }, 500); + } +}; + +function listenForFocusKeys(win) { + // The event listener will only be added once per window. + // Duplicate event listeners will be ignored by addEventListener. + // Also, this logic is client side only, we don't need a teardown. + win.addEventListener('keyup', handleKeyUpEvent); +} + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ButtonBase/index.js": +/*!************************************************************!*\ + !*** ./node_modules/@material-ui/core/ButtonBase/index.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _ButtonBase.default; + } +}); + +var _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ./ButtonBase */ "./node_modules/@material-ui/core/ButtonBase/ButtonBase.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/CssBaseline/CssBaseline.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@material-ui/core/CssBaseline/CssBaseline.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _styles = __webpack_require__(/*! ../styles */ "./node_modules/@material-ui/core/styles/index.js"); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +/* eslint-disable react/no-unused-prop-types */ +var styles = function styles(theme) { + return { + '@global': { + html: { + WebkitFontSmoothing: 'antialiased', + // Antialiasing. + MozOsxFontSmoothing: 'grayscale', + // Antialiasing. + // Change from `box-sizing: content-box` so that `width` + // is not affected by `padding` or `border`. + boxSizing: 'border-box' + }, + '*, *::before, *::after': { + boxSizing: 'inherit' + }, + body: { + margin: 0, + // Remove the margin in all browsers. + backgroundColor: theme.palette.background.default, + '@media print': { + // Save printer ink. + backgroundColor: theme.palette.common.white + } + } + } + }; +}; +/** + * Kickstart an elegant, consistent, and simple baseline to build upon. + */ + + +var CssBaseline = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(CssBaseline, _React$Component); + + function CssBaseline() { + (0, _classCallCheck2.default)(this, CssBaseline); + return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CssBaseline).apply(this, arguments)); + } + + (0, _createClass2.default)(CssBaseline, [{ + key: "render", + value: function render() { + return this.props.children; + } + }]); + return CssBaseline; +}(_react.default.Component); + + true ? CssBaseline.propTypes = { + /** + * You can wrap a node. + */ + children: _propTypes.default.node, + + /** + * @ignore + */ + classes: _propTypes.default.object.isRequired +} : undefined; + +if (true) { + true ? CssBaseline.propTypes = (0, _utils.exactProp)(CssBaseline.propTypes) : undefined; +} + +CssBaseline.defaultProps = { + children: null +}; + +var _default = (0, _styles.withStyles)(styles, { + name: 'MuiCssBaseline' +})(CssBaseline); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/CssBaseline/index.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/CssBaseline/index.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _CssBaseline.default; + } +}); + +var _CssBaseline = _interopRequireDefault(__webpack_require__(/*! ./CssBaseline */ "./node_modules/@material-ui/core/CssBaseline/CssBaseline.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Fade/Fade.js": +/*!*****************************************************!*\ + !*** ./node_modules/@material-ui/core/Fade/Fade.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ "./node_modules/react-transition-group/Transition.js")); + +var _transitions = __webpack_require__(/*! ../styles/transitions */ "./node_modules/@material-ui/core/styles/transitions.js"); + +var _withTheme = _interopRequireDefault(__webpack_require__(/*! ../styles/withTheme */ "./node_modules/@material-ui/core/styles/withTheme.js")); + +var _utils = __webpack_require__(/*! ../transitions/utils */ "./node_modules/@material-ui/core/transitions/utils.js"); + +// @inheritedComponent Transition +var styles = { + entering: { + opacity: 1 + }, + entered: { + opacity: 1 + } +}; +/** + * The Fade transition is used by the [Modal](/utils/modal/) component. + * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally. + */ + +var Fade = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(Fade, _React$Component); + + function Fade() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, Fade); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Fade)).call.apply(_getPrototypeOf2, [this].concat(args))); + + _this.handleEnter = function (node) { + var theme = _this.props.theme; + (0, _utils.reflow)(node); // So the animation always start from the start. + + var transitionProps = (0, _utils.getTransitionProps)(_this.props, { + mode: 'enter' + }); + node.style.webkitTransition = theme.transitions.create('opacity', transitionProps); + node.style.transition = theme.transitions.create('opacity', transitionProps); + + if (_this.props.onEnter) { + _this.props.onEnter(node); + } + }; + + _this.handleExit = function (node) { + var theme = _this.props.theme; + var transitionProps = (0, _utils.getTransitionProps)(_this.props, { + mode: 'exit' + }); + node.style.webkitTransition = theme.transitions.create('opacity', transitionProps); + node.style.transition = theme.transitions.create('opacity', transitionProps); + + if (_this.props.onExit) { + _this.props.onExit(node); + } + }; + + return _this; + } + + (0, _createClass2.default)(Fade, [{ + key: "render", + value: function render() { + var _this$props = this.props, + children = _this$props.children, + onEnter = _this$props.onEnter, + onExit = _this$props.onExit, + styleProp = _this$props.style, + theme = _this$props.theme, + other = (0, _objectWithoutProperties2.default)(_this$props, ["children", "onEnter", "onExit", "style", "theme"]); + var style = (0, _extends2.default)({}, styleProp, _react.default.isValidElement(children) ? children.props.style : {}); + return _react.default.createElement(_Transition.default, (0, _extends2.default)({ + appear: true, + onEnter: this.handleEnter, + onExit: this.handleExit + }, other), function (state, childProps) { + return _react.default.cloneElement(children, (0, _extends2.default)({ + style: (0, _extends2.default)({ + opacity: 0 + }, styles[state], style) + }, childProps)); + }); + } + }]); + return Fade; +}(_react.default.Component); + + true ? Fade.propTypes = { + /** + * A single child content element. + */ + children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]), + + /** + * If `true`, the component will transition in. + */ + in: _propTypes.default.bool, + + /** + * @ignore + */ + onEnter: _propTypes.default.func, + + /** + * @ignore + */ + onExit: _propTypes.default.func, + + /** + * @ignore + */ + style: _propTypes.default.object, + + /** + * @ignore + */ + theme: _propTypes.default.object.isRequired, + + /** + * The duration for the transition, in milliseconds. + * You may specify a single timeout for all transitions, or individually with an object. + */ + timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({ + enter: _propTypes.default.number, + exit: _propTypes.default.number + })]) +} : undefined; +Fade.defaultProps = { + timeout: { + enter: _transitions.duration.enteringScreen, + exit: _transitions.duration.leavingScreen + } +}; + +var _default = (0, _withTheme.default)()(Fade); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Fade/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@material-ui/core/Fade/index.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Fade.default; + } +}); + +var _Fade = _interopRequireDefault(__webpack_require__(/*! ./Fade */ "./node_modules/@material-ui/core/Fade/Fade.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FilledInput/FilledInput.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@material-ui/core/FilledInput/FilledInput.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _InputBase = _interopRequireDefault(__webpack_require__(/*! ../InputBase */ "./node_modules/@material-ui/core/InputBase/index.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +// @inheritedComponent InputBase +var styles = function styles(theme) { + var light = theme.palette.type === 'light'; + var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)'; + var backgroundColor = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)'; + return { + /* Styles applied to the root element. */ + root: { + position: 'relative', + backgroundColor: backgroundColor, + borderTopLeftRadius: theme.shape.borderRadius, + borderTopRightRadius: theme.shape.borderRadius, + transition: theme.transitions.create('background-color', { + duration: theme.transitions.duration.shorter, + easing: theme.transitions.easing.easeOut + }), + '&:hover': { + backgroundColor: light ? 'rgba(0, 0, 0, 0.13)' : 'rgba(255, 255, 255, 0.13)', + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: backgroundColor + } + }, + '&$focused': { + backgroundColor: light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)' + }, + '&$disabled': { + backgroundColor: light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)' + } + }, + + /* Styles applied to the root element if `disableUnderline={false}`. */ + underline: { + '&:after': { + borderBottom: "2px solid ".concat(theme.palette.primary[light ? 'dark' : 'light']), + left: 0, + bottom: 0, + // Doing the other way around crash on IE 11 "''" https://github.com/cssinjs/jss/issues/242 + content: '""', + position: 'absolute', + right: 0, + transform: 'scaleX(0)', + transition: theme.transitions.create('transform', { + duration: theme.transitions.duration.shorter, + easing: theme.transitions.easing.easeOut + }), + pointerEvents: 'none' // Transparent to the hover style. + + }, + '&$focused:after': { + transform: 'scaleX(1)' + }, + '&$error:after': { + borderBottomColor: theme.palette.error.main, + transform: 'scaleX(1)' // error is always underlined in red + + }, + '&:before': { + borderBottom: "1px solid ".concat(bottomLineColor), + left: 0, + bottom: 0, + // Doing the other way around crash on IE 11 "''" https://github.com/cssinjs/jss/issues/242 + content: '"\\00a0"', + position: 'absolute', + right: 0, + transition: theme.transitions.create('border-bottom-color', { + duration: theme.transitions.duration.shorter + }), + pointerEvents: 'none' // Transparent to the hover style. + + }, + '&:hover:not($disabled):not($focused):not($error):before': { + borderBottom: "1px solid ".concat(theme.palette.text.primary) + }, + '&$disabled:before': { + borderBottom: "1px dotted ".concat(bottomLineColor) + } + }, + + /* Styles applied to the root element if the component is focused. */ + focused: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `startAdornment` is provided. */ + adornedStart: { + paddingLeft: 12 + }, + + /* Styles applied to the root element if `endAdornment` is provided. */ + adornedEnd: { + paddingRight: 12 + }, + + /* Styles applied to the root element if `error={true}`. */ + error: {}, + + /* Styles applied to the root element if `multiline={true}`. */ + multiline: { + padding: '27px 12px 10px', + boxSizing: 'border-box' // Prevent padding issue with fullWidth. + + }, + + /* Styles applied to the `input` element. */ + input: { + padding: '27px 12px 10px' + }, + + /* Styles applied to the `input` element if `margin="dense"`. */ + inputMarginDense: { + paddingTop: 24, + paddingBottom: 6 + }, + + /* Styles applied to the `input` element if `multiline={true}`. */ + inputMultiline: { + padding: 0 + }, + + /* Styles applied to the `input` element if `startAdornment` is provided. */ + inputAdornedStart: { + paddingLeft: 0 + }, + + /* Styles applied to the `input` element if `endAdornment` is provided. */ + inputAdornedEnd: { + paddingRight: 0 + } + }; +}; + +exports.styles = styles; + +function FilledInput(props) { + var disableUnderline = props.disableUnderline, + classes = props.classes, + other = (0, _objectWithoutProperties2.default)(props, ["disableUnderline", "classes"]); + return _react.default.createElement(_InputBase.default, (0, _extends2.default)({ + classes: (0, _extends2.default)({}, classes, { + root: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.underline, !disableUnderline)), + underline: null + }) + }, other)); +} + + true ? FilledInput.propTypes = { + /** + * This property helps users to fill forms faster, especially on mobile devices. + * The name can be confusing, as it's more like an autofill. + * You can learn more about it here: + * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill + */ + autoComplete: _propTypes.default.string, + + /** + * If `true`, the input will be focused during the first mount. + */ + autoFocus: _propTypes.default.bool, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * The CSS class name of the wrapper element. + */ + className: _propTypes.default.string, + + /** + * The default input value, useful when not controlling the component. + */ + defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object]))]), + + /** + * If `true`, the input will be disabled. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the input will not have an underline. + */ + disableUnderline: _propTypes.default.bool, + + /** + * End `InputAdornment` for this component. + */ + endAdornment: _propTypes.default.node, + + /** + * If `true`, the input will indicate an error. This is normally obtained via context from + * FormControl. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the input will take up the full width of its container. + */ + fullWidth: _propTypes.default.bool, + + /** + * The id of the `input` element. + */ + id: _propTypes.default.string, + + /** + * The component used for the native input. + * Either a string to use a DOM element or a component. + */ + inputComponent: _utils.componentPropType, + + /** + * Attributes applied to the `input` element. + */ + inputProps: _propTypes.default.object, + + /** + * Use that property to pass a ref callback to the native input component. + */ + inputRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), + + /** + * If `dense`, will adjust vertical spacing. This is normally obtained via context from + * FormControl. + */ + margin: _propTypes.default.oneOf(['dense', 'none']), + + /** + * If `true`, a textarea element will be rendered. + */ + multiline: _propTypes.default.bool, + + /** + * Name attribute of the `input` element. + */ + name: _propTypes.default.string, + + /** + * Callback fired when the value is changed. + * + * @param {object} event The event source of the callback. + * You can pull out the new value by accessing `event.target.value`. + */ + onChange: _propTypes.default.func, + + /** + * The short hint displayed in the input before the user enters a value. + */ + placeholder: _propTypes.default.string, + + /** + * It prevents the user from changing the value of the field + * (not from interacting with the field). + */ + readOnly: _propTypes.default.bool, + + /** + * If `true`, the input will be required. + */ + required: _propTypes.default.bool, + + /** + * Number of rows to display when multiline option is set to true. + */ + rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Maximum number of rows to display when multiline option is set to true. + */ + rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Start `InputAdornment` for this component. + */ + startAdornment: _propTypes.default.node, + + /** + * Type of the input element. It should be a valid HTML5 input type. + */ + type: _propTypes.default.string, + + /** + * The input value, required for a controlled component. + */ + value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object]))]) +} : undefined; +_InputBase.default.defaultProps = { + fullWidth: false, + inputComponent: 'input', + multiline: false, + type: 'text' +}; +FilledInput.muiName = 'Input'; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiFilledInput' +})(FilledInput); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FilledInput/index.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/FilledInput/index.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _FilledInput.default; + } +}); + +var _FilledInput = _interopRequireDefault(__webpack_require__(/*! ./FilledInput */ "./node_modules/@material-ui/core/FilledInput/FilledInput.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormControl/FormControl.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormControl/FormControl.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _utils2 = __webpack_require__(/*! ../InputBase/utils */ "./node_modules/@material-ui/core/InputBase/utils.js"); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _helpers = __webpack_require__(/*! ../utils/helpers */ "./node_modules/@material-ui/core/utils/helpers.js"); + +var _reactHelpers = __webpack_require__(/*! ../utils/reactHelpers */ "./node_modules/@material-ui/core/utils/reactHelpers.js"); + +var _FormControlContext = _interopRequireDefault(__webpack_require__(/*! ./FormControlContext */ "./node_modules/@material-ui/core/FormControl/FormControlContext.js")); + +var styles = { + /* Styles applied to the root element. */ + root: { + display: 'inline-flex', + flexDirection: 'column', + position: 'relative', + // Reset fieldset default style. + minWidth: 0, + padding: 0, + margin: 0, + border: 0, + verticalAlign: 'top' // Fix alignment issue on Safari. + + }, + + /* Styles applied to the root element if `margin="normal"`. */ + marginNormal: { + marginTop: 16, + marginBottom: 8 + }, + + /* Styles applied to the root element if `margin="dense"`. */ + marginDense: { + marginTop: 8, + marginBottom: 4 + }, + + /* Styles applied to the root element if `fullWidth={true}`. */ + fullWidth: { + width: '100%' + } +}; +/** + * Provides context such as filled/focused/error/required for form inputs. + * Relying on the context provides high flexibility and ensures that the state always stays + * consistent across the children of the `FormControl`. + * This context is used by the following components: + * - FormLabel + * - FormHelperText + * - Input + * - InputLabel + * + * ⚠️ Only one input can be used within a FormControl. + */ + +exports.styles = styles; + +var FormControl = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(FormControl, _React$Component); + (0, _createClass2.default)(FormControl, null, [{ + key: "getDerivedStateFromProps", + value: function getDerivedStateFromProps(props, state) { + if (props.disabled && state.focused) { + return { + focused: false + }; + } + + return null; + } + }]); + + function FormControl(props) { + var _this; + + (0, _classCallCheck2.default)(this, FormControl); + _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(FormControl).call(this)); + + _this.handleFocus = function () { + _this.setState(function (state) { + return !state.focused ? { + focused: true + } : null; + }); + }; + + _this.handleBlur = function () { + _this.setState(function (state) { + return state.focused ? { + focused: false + } : null; + }); + }; + + _this.handleDirty = function () { + if (!_this.state.filled) { + _this.setState({ + filled: true + }); + } + }; + + _this.handleClean = function () { + if (_this.state.filled) { + _this.setState({ + filled: false + }); + } + }; + + _this.state = { + adornedStart: false, + filled: false, + focused: false + }; // We need to iterate through the children and find the Input in order + // to fully support server-side rendering. + + var children = props.children; + + if (children) { + _react.default.Children.forEach(children, function (child) { + if (!(0, _reactHelpers.isMuiElement)(child, ['Input', 'Select'])) { + return; + } + + if ((0, _utils2.isFilled)(child.props, true)) { + _this.state.filled = true; + } + + var input = (0, _reactHelpers.isMuiElement)(child, ['Select']) ? child.props.input : child; + + if (input && (0, _utils2.isAdornedStart)(input.props)) { + _this.state.adornedStart = true; + } + }); + } + + return _this; + } + + (0, _createClass2.default)(FormControl, [{ + key: "render", + value: function render() { + var _classNames; + + var _this$props = this.props, + classes = _this$props.classes, + className = _this$props.className, + Component = _this$props.component, + disabled = _this$props.disabled, + error = _this$props.error, + fullWidth = _this$props.fullWidth, + margin = _this$props.margin, + required = _this$props.required, + variant = _this$props.variant, + other = (0, _objectWithoutProperties2.default)(_this$props, ["classes", "className", "component", "disabled", "error", "fullWidth", "margin", "required", "variant"]); + var _this$state = this.state, + adornedStart = _this$state.adornedStart, + filled = _this$state.filled, + focused = _this$state.focused; + var childContext = { + adornedStart: adornedStart, + disabled: disabled, + error: error, + filled: filled, + focused: focused, + margin: margin, + onBlur: this.handleBlur, + onEmpty: this.handleClean, + onFilled: this.handleDirty, + onFocus: this.handleFocus, + required: required, + variant: variant + }; + return _react.default.createElement(_FormControlContext.default.Provider, { + value: childContext + }, _react.default.createElement(Component, (0, _extends2.default)({ + className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes["margin".concat((0, _helpers.capitalize)(margin))], margin !== 'none'), (0, _defineProperty2.default)(_classNames, classes.fullWidth, fullWidth), _classNames), className) + }, other))); + } + }]); + return FormControl; +}(_react.default.Component); + + true ? FormControl.propTypes = { + /** + * The contents of the form control. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, the label, input and helper text should be displayed in a disabled state. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the label should be displayed in an error state. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the component will take up the full width of its container. + */ + fullWidth: _propTypes.default.bool, + + /** + * If `dense` or `normal`, will adjust vertical spacing of this and contained components. + */ + margin: _propTypes.default.oneOf(['none', 'dense', 'normal']), + + /** + * If `true`, the label will indicate that the input is required. + */ + required: _propTypes.default.bool, + + /** + * The variant to use. + */ + variant: _propTypes.default.oneOf(['standard', 'outlined', 'filled']) +} : undefined; +FormControl.defaultProps = { + component: 'div', + disabled: false, + error: false, + fullWidth: false, + margin: 'none', + required: false, + variant: 'standard' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiFormControl' +})(FormControl); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormControl/FormControlContext.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormControl/FormControlContext.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +/** + * @ignore - internal component. + */ +var FormControlContext = _react.default.createContext(); + +var _default = FormControlContext; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormControl/formControlState.js": +/*!************************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormControl/formControlState.js ***! + \************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = formControlState; + +function formControlState(_ref) { + var props = _ref.props, + states = _ref.states, + muiFormControl = _ref.muiFormControl; + return states.reduce(function (acc, state) { + acc[state] = props[state]; + + if (muiFormControl) { + if (typeof props[state] === 'undefined') { + acc[state] = muiFormControl[state]; + } + } + + return acc; + }, {}); +} + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormControl/index.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormControl/index.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _FormControl.default; + } +}); + +var _FormControl = _interopRequireDefault(__webpack_require__(/*! ./FormControl */ "./node_modules/@material-ui/core/FormControl/FormControl.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormControl/withFormControlContext.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormControl/withFormControlContext.js ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = withFormControlContext; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _hoistNonReactStatics = _interopRequireDefault(__webpack_require__(/*! hoist-non-react-statics */ "./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js")); + +var _FormControlContext = _interopRequireDefault(__webpack_require__(/*! ./FormControlContext */ "./node_modules/@material-ui/core/FormControl/FormControlContext.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +function withFormControlContext(Component) { + var EnhancedComponent = function EnhancedComponent(props) { + return _react.default.createElement(_FormControlContext.default.Consumer, null, function (context) { + return _react.default.createElement(Component, (0, _extends2.default)({ + muiFormControl: context + }, props)); + }); + }; + + if (true) { + EnhancedComponent.displayName = "WithFormControlContext(".concat((0, _utils.getDisplayName)(Component), ")"); + } + + (0, _hoistNonReactStatics.default)(EnhancedComponent, Component); + return EnhancedComponent; +} + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormHelperText/FormHelperText.js": +/*!*************************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormHelperText/FormHelperText.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _formControlState = _interopRequireDefault(__webpack_require__(/*! ../FormControl/formControlState */ "./node_modules/@material-ui/core/FormControl/formControlState.js")); + +var _withFormControlContext = _interopRequireDefault(__webpack_require__(/*! ../FormControl/withFormControlContext */ "./node_modules/@material-ui/core/FormControl/withFormControlContext.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var styles = function styles(theme) { + return { + /* Styles applied to the root element. */ + root: { + color: theme.palette.text.secondary, + fontFamily: theme.typography.fontFamily, + fontSize: theme.typography.pxToRem(12), + textAlign: 'left', + marginTop: 8, + lineHeight: '1em', + minHeight: '1em', + margin: 0, + '&$disabled': { + color: theme.palette.text.disabled + }, + '&$error': { + color: theme.palette.error.main + } + }, + + /* Styles applied to the root element if `error={true}`. */ + error: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `margin="dense"`. */ + marginDense: { + marginTop: 4 + }, + + /* Styles applied to the root element if `variant="filled"` or `variant="outlined"`. */ + contained: { + margin: '8px 12px 0' + }, + + /* Styles applied to the root element if `focused={true}`. */ + focused: {}, + + /* Styles applied to the root element if `filled={true}`. */ + filled: {}, + + /* Styles applied to the root element if `required={true}`. */ + required: {} + }; +}; + +exports.styles = styles; + +function FormHelperText(props) { + var _classNames; + + var classes = props.classes, + classNameProp = props.className, + Component = props.component, + disabled = props.disabled, + error = props.error, + filled = props.filled, + focused = props.focused, + margin = props.margin, + muiFormControl = props.muiFormControl, + required = props.required, + variant = props.variant, + other = (0, _objectWithoutProperties2.default)(props, ["classes", "className", "component", "disabled", "error", "filled", "focused", "margin", "muiFormControl", "required", "variant"]); + var fcs = (0, _formControlState.default)({ + props: props, + muiFormControl: muiFormControl, + states: ['variant', 'margin', 'disabled', 'error', 'filled', 'focused', 'required'] + }); + return _react.default.createElement(Component, (0, _extends2.default)({ + className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.contained, fcs.variant === 'filled' || fcs.variant === 'outlined'), (0, _defineProperty2.default)(_classNames, classes.marginDense, fcs.margin === 'dense'), (0, _defineProperty2.default)(_classNames, classes.disabled, fcs.disabled), (0, _defineProperty2.default)(_classNames, classes.error, fcs.error), (0, _defineProperty2.default)(_classNames, classes.filled, fcs.filled), (0, _defineProperty2.default)(_classNames, classes.focused, fcs.focused), (0, _defineProperty2.default)(_classNames, classes.required, fcs.required), _classNames), classNameProp) + }, other)); +} + + true ? FormHelperText.propTypes = { + /** + * The content of the component. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, the helper text should be displayed in a disabled state. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, helper text should be displayed in an error state. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the helper text should use filled classes key. + */ + filled: _propTypes.default.bool, + + /** + * If `true`, the helper text should use focused classes key. + */ + focused: _propTypes.default.bool, + + /** + * If `dense`, will adjust vertical spacing. This is normally obtained via context from + * FormControl. + */ + margin: _propTypes.default.oneOf(['dense']), + + /** + * @ignore + */ + muiFormControl: _propTypes.default.object, + + /** + * If `true`, the helper text should use required classes key. + */ + required: _propTypes.default.bool, + + /** + * The variant to use. + */ + variant: _propTypes.default.oneOf(['standard', 'outlined', 'filled']) +} : undefined; +FormHelperText.defaultProps = { + component: 'p' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiFormHelperText' +})((0, _withFormControlContext.default)(FormHelperText)); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormHelperText/index.js": +/*!****************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormHelperText/index.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _FormHelperText.default; + } +}); + +var _FormHelperText = _interopRequireDefault(__webpack_require__(/*! ./FormHelperText */ "./node_modules/@material-ui/core/FormHelperText/FormHelperText.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormLabel/FormLabel.js": +/*!***************************************************************!*\ + !*** ./node_modules/@material-ui/core/FormLabel/FormLabel.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _formControlState = _interopRequireDefault(__webpack_require__(/*! ../FormControl/formControlState */ "./node_modules/@material-ui/core/FormControl/formControlState.js")); + +var _withFormControlContext = _interopRequireDefault(__webpack_require__(/*! ../FormControl/withFormControlContext */ "./node_modules/@material-ui/core/FormControl/withFormControlContext.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var styles = function styles(theme) { + return { + /* Styles applied to the root element. */ + root: { + fontFamily: theme.typography.fontFamily, + color: theme.palette.text.secondary, + fontSize: theme.typography.pxToRem(16), + lineHeight: 1, + padding: 0, + '&$focused': { + color: theme.palette.primary[theme.palette.type === 'light' ? 'dark' : 'light'] + }, + '&$disabled': { + color: theme.palette.text.disabled + }, + '&$error': { + color: theme.palette.error.main + } + }, + + /* Styles applied to the root element if `focused={true}`. */ + focused: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `error={true}`. */ + error: {}, + + /* Styles applied to the root element if `filled={true}`. */ + filled: {}, + + /* Styles applied to the root element if `required={true}`. */ + required: {}, + asterisk: { + '&$error': { + color: theme.palette.error.main + } + } + }; +}; + +exports.styles = styles; + +function FormLabel(props) { + var _classNames; + + var children = props.children, + classes = props.classes, + classNameProp = props.className, + Component = props.component, + disabled = props.disabled, + error = props.error, + filled = props.filled, + focused = props.focused, + muiFormControl = props.muiFormControl, + required = props.required, + other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "component", "disabled", "error", "filled", "focused", "muiFormControl", "required"]); + var fcs = (0, _formControlState.default)({ + props: props, + muiFormControl: muiFormControl, + states: ['required', 'focused', 'disabled', 'error', 'filled'] + }); + return _react.default.createElement(Component, (0, _extends2.default)({ + className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, fcs.disabled), (0, _defineProperty2.default)(_classNames, classes.error, fcs.error), (0, _defineProperty2.default)(_classNames, classes.filled, fcs.filled), (0, _defineProperty2.default)(_classNames, classes.focused, fcs.focused), (0, _defineProperty2.default)(_classNames, classes.required, fcs.required), _classNames), classNameProp) + }, other), children, fcs.required && _react.default.createElement("span", { + className: (0, _classnames.default)(classes.asterisk, (0, _defineProperty2.default)({}, classes.error, fcs.error)) + }, "\u2009*")); +} + + true ? FormLabel.propTypes = { + /** + * The content of the component. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, the label should be displayed in a disabled state. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the label should be displayed in an error state. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the label should use filled classes key. + */ + filled: _propTypes.default.bool, + + /** + * If `true`, the input of this label is focused (used by `FormGroup` components). + */ + focused: _propTypes.default.bool, + + /** + * @ignore + */ + muiFormControl: _propTypes.default.object, + + /** + * If `true`, the label will indicate that the input is required. + */ + required: _propTypes.default.bool +} : undefined; +FormLabel.defaultProps = { + component: 'label' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiFormLabel' +})((0, _withFormControlContext.default)(FormLabel)); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/FormLabel/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/@material-ui/core/FormLabel/index.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _FormLabel.default; + } +}); + +var _FormLabel = _interopRequireDefault(__webpack_require__(/*! ./FormLabel */ "./node_modules/@material-ui/core/FormLabel/FormLabel.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Grid/Grid.js": +/*!*****************************************************!*\ + !*** ./node_modules/@material-ui/core/Grid/Grid.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _createBreakpoints = __webpack_require__(/*! ../styles/createBreakpoints */ "./node_modules/@material-ui/core/styles/createBreakpoints.js"); + +var _requirePropFactory = _interopRequireDefault(__webpack_require__(/*! ../utils/requirePropFactory */ "./node_modules/@material-ui/core/utils/requirePropFactory.js")); + +// A grid component using the following libs as inspiration. +// +// For the implementation: +// - http://v4-alpha.getbootstrap.com/layout/flexbox-grid/ +// - https://github.com/kristoferjoseph/flexboxgrid/blob/master/src/css/flexboxgrid.css +// - https://github.com/roylee0704/react-flexbox-grid +// - https://material.angularjs.org/latest/layout/introduction +// +// Follow this flexbox Guide to better understand the underlying model: +// - https://css-tricks.com/snippets/css/a-guide-to-flexbox/ +var GUTTERS = [0, 8, 16, 24, 32, 40]; +var GRID_SIZES = ['auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; + +function generateGrid(globalStyles, theme, breakpoint) { + var styles = {}; + GRID_SIZES.forEach(function (size) { + var key = "grid-".concat(breakpoint, "-").concat(size); + + if (size === true) { + // For the auto layouting + styles[key] = { + flexBasis: 0, + flexGrow: 1, + maxWidth: '100%' + }; + return; + } + + if (size === 'auto') { + styles[key] = { + flexBasis: 'auto', + flexGrow: 0, + maxWidth: 'none' + }; + return; + } // Keep 7 significant numbers. + + + var width = "".concat(Math.round(size / 12 * 10e7) / 10e5, "%"); // Close to the bootstrap implementation: + // https://github.com/twbs/bootstrap/blob/8fccaa2439e97ec72a4b7dc42ccc1f649790adb0/scss/mixins/_grid.scss#L41 + + styles[key] = { + flexBasis: width, + flexGrow: 0, + maxWidth: width + }; + }); // No need for a media query for the first size. + + if (breakpoint === 'xs') { + (0, _extends2.default)(globalStyles, styles); + } else { + globalStyles[theme.breakpoints.up(breakpoint)] = styles; + } +} + +function generateGutter(theme, breakpoint) { + var styles = {}; + GUTTERS.forEach(function (spacing, index) { + if (index === 0) { + // Skip the default style. + return; + } + + styles["spacing-".concat(breakpoint, "-").concat(spacing)] = { + margin: -spacing / 2, + width: "calc(100% + ".concat(spacing, "px)"), + '& > $item': { + padding: spacing / 2 + } + }; + }); + return styles; +} // Default CSS values +// flex: '0 1 auto', +// flexDirection: 'row', +// alignItems: 'flex-start', +// flexWrap: 'nowrap', +// justifyContent: 'flex-start', + + +var styles = function styles(theme) { + return (0, _extends2.default)({ + /* Styles applied to the root element if `container={true}`. */ + container: { + boxSizing: 'border-box', + display: 'flex', + flexWrap: 'wrap', + width: '100%' + }, + + /* Styles applied to the root element if `item={true}`. */ + item: { + boxSizing: 'border-box', + margin: '0' // For instance, it's useful when used with a `figure` element. + + }, + + /* Styles applied to the root element if `zeroMinWidth={true}`. */ + zeroMinWidth: { + minWidth: 0 + }, + + /* Styles applied to the root element if `direction="column"`. */ + 'direction-xs-column': { + flexDirection: 'column' + }, + + /* Styles applied to the root element if `direction="column-reverse"`. */ + 'direction-xs-column-reverse': { + flexDirection: 'column-reverse' + }, + + /* Styles applied to the root element if `direction="rwo-reverse"`. */ + 'direction-xs-row-reverse': { + flexDirection: 'row-reverse' + }, + + /* Styles applied to the root element if `wrap="nowrap"`. */ + 'wrap-xs-nowrap': { + flexWrap: 'nowrap' + }, + + /* Styles applied to the root element if `wrap="reverse"`. */ + 'wrap-xs-wrap-reverse': { + flexWrap: 'wrap-reverse' + }, + + /* Styles applied to the root element if `alignItems="center"`. */ + 'align-items-xs-center': { + alignItems: 'center' + }, + + /* Styles applied to the root element if `alignItems="flex-start"`. */ + 'align-items-xs-flex-start': { + alignItems: 'flex-start' + }, + + /* Styles applied to the root element if `alignItems="flex-end"`. */ + 'align-items-xs-flex-end': { + alignItems: 'flex-end' + }, + + /* Styles applied to the root element if `alignItems="baseline"`. */ + 'align-items-xs-baseline': { + alignItems: 'baseline' + }, + + /* Styles applied to the root element if `alignContent="center"`. */ + 'align-content-xs-center': { + alignContent: 'center' + }, + + /* Styles applied to the root element if `alignContent="flex-start"`. */ + 'align-content-xs-flex-start': { + alignContent: 'flex-start' + }, + + /* Styles applied to the root element if `alignContent="flex-end"`. */ + 'align-content-xs-flex-end': { + alignContent: 'flex-end' + }, + + /* Styles applied to the root element if `alignContent="space-between"`. */ + 'align-content-xs-space-between': { + alignContent: 'space-between' + }, + + /* Styles applied to the root element if `alignContent="space-around"`. */ + 'align-content-xs-space-around': { + alignContent: 'space-around' + }, + + /* Styles applied to the root element if `justify="center"`. */ + 'justify-xs-center': { + justifyContent: 'center' + }, + + /* Styles applied to the root element if `justify="flex-end"`. */ + 'justify-xs-flex-end': { + justifyContent: 'flex-end' + }, + + /* Styles applied to the root element if `justify="space-between"`. */ + 'justify-xs-space-between': { + justifyContent: 'space-between' + }, + + /* Styles applied to the root element if `justify="space-around"`. */ + 'justify-xs-space-around': { + justifyContent: 'space-around' + }, + + /* Styles applied to the root element if `justify="space-evenly"`. */ + 'justify-xs-space-evenly': { + justifyContent: 'space-evenly' + } + }, generateGutter(theme, 'xs'), _createBreakpoints.keys.reduce(function (accumulator, key) { + // Use side effect over immutability for better performance. + generateGrid(accumulator, theme, key); + return accumulator; + }, {})); +}; + +exports.styles = styles; + +function Grid(props) { + var _classNames; + + var alignContent = props.alignContent, + alignItems = props.alignItems, + classes = props.classes, + classNameProp = props.className, + Component = props.component, + container = props.container, + direction = props.direction, + item = props.item, + justify = props.justify, + lg = props.lg, + md = props.md, + sm = props.sm, + spacing = props.spacing, + wrap = props.wrap, + xl = props.xl, + xs = props.xs, + zeroMinWidth = props.zeroMinWidth, + other = (0, _objectWithoutProperties2.default)(props, ["alignContent", "alignItems", "classes", "className", "component", "container", "direction", "item", "justify", "lg", "md", "sm", "spacing", "wrap", "xl", "xs", "zeroMinWidth"]); + var className = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.container, container), (0, _defineProperty2.default)(_classNames, classes.item, item), (0, _defineProperty2.default)(_classNames, classes.zeroMinWidth, zeroMinWidth), (0, _defineProperty2.default)(_classNames, classes["spacing-xs-".concat(String(spacing))], container && spacing !== 0), (0, _defineProperty2.default)(_classNames, classes["direction-xs-".concat(String(direction))], direction !== Grid.defaultProps.direction), (0, _defineProperty2.default)(_classNames, classes["wrap-xs-".concat(String(wrap))], wrap !== Grid.defaultProps.wrap), (0, _defineProperty2.default)(_classNames, classes["align-items-xs-".concat(String(alignItems))], alignItems !== Grid.defaultProps.alignItems), (0, _defineProperty2.default)(_classNames, classes["align-content-xs-".concat(String(alignContent))], alignContent !== Grid.defaultProps.alignContent), (0, _defineProperty2.default)(_classNames, classes["justify-xs-".concat(String(justify))], justify !== Grid.defaultProps.justify), (0, _defineProperty2.default)(_classNames, classes["grid-xs-".concat(String(xs))], xs !== false), (0, _defineProperty2.default)(_classNames, classes["grid-sm-".concat(String(sm))], sm !== false), (0, _defineProperty2.default)(_classNames, classes["grid-md-".concat(String(md))], md !== false), (0, _defineProperty2.default)(_classNames, classes["grid-lg-".concat(String(lg))], lg !== false), (0, _defineProperty2.default)(_classNames, classes["grid-xl-".concat(String(xl))], xl !== false), _classNames), classNameProp); + return _react.default.createElement(Component, (0, _extends2.default)({ + className: className + }, other)); +} + + true ? Grid.propTypes = { + /** + * Defines the `align-content` style property. + * It's applied for all screen sizes. + */ + alignContent: _propTypes.default.oneOf(['stretch', 'center', 'flex-start', 'flex-end', 'space-between', 'space-around']), + + /** + * Defines the `align-items` style property. + * It's applied for all screen sizes. + */ + alignItems: _propTypes.default.oneOf(['flex-start', 'center', 'flex-end', 'stretch', 'baseline']), + + /** + * The content of the component. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, the component will have the flex *container* behavior. + * You should be wrapping *items* with a *container*. + */ + container: _propTypes.default.bool, + + /** + * Defines the `flex-direction` style property. + * It is applied for all screen sizes. + */ + direction: _propTypes.default.oneOf(['row', 'row-reverse', 'column', 'column-reverse']), + + /** + * If `true`, the component will have the flex *item* behavior. + * You should be wrapping *items* with a *container*. + */ + item: _propTypes.default.bool, + + /** + * Defines the `justify-content` style property. + * It is applied for all screen sizes. + */ + justify: _propTypes.default.oneOf(['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly']), + + /** + * Defines the number of grids the component is going to use. + * It's applied for the `lg` breakpoint and wider screens if not overridden. + */ + lg: _propTypes.default.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), + + /** + * Defines the number of grids the component is going to use. + * It's applied for the `md` breakpoint and wider screens if not overridden. + */ + md: _propTypes.default.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), + + /** + * Defines the number of grids the component is going to use. + * It's applied for the `sm` breakpoint and wider screens if not overridden. + */ + sm: _propTypes.default.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), + + /** + * Defines the space between the type `item` component. + * It can only be used on a type `container` component. + */ + spacing: _propTypes.default.oneOf(GUTTERS), + + /** + * Defines the `flex-wrap` style property. + * It's applied for all screen sizes. + */ + wrap: _propTypes.default.oneOf(['nowrap', 'wrap', 'wrap-reverse']), + + /** + * Defines the number of grids the component is going to use. + * It's applied for the `xl` breakpoint and wider screens. + */ + xl: _propTypes.default.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), + + /** + * Defines the number of grids the component is going to use. + * It's applied for all the screen sizes with the lowest priority. + */ + xs: _propTypes.default.oneOf([false, 'auto', true, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), + + /** + * If `true`, it sets `min-width: 0` on the item. + * Refer to the limitations section of the documentation to better understand the use case. + */ + zeroMinWidth: _propTypes.default.bool +} : undefined; +Grid.defaultProps = { + alignContent: 'stretch', + alignItems: 'stretch', + component: 'div', + container: false, + direction: 'row', + item: false, + justify: 'flex-start', + lg: false, + md: false, + sm: false, + spacing: 0, + wrap: 'wrap', + xl: false, + xs: false, + zeroMinWidth: false +}; +var StyledGrid = (0, _withStyles.default)(styles, { + name: 'MuiGrid' +})(Grid); + +if (true) { + var requireProp = (0, _requirePropFactory.default)('Grid'); + StyledGrid.propTypes = (0, _extends2.default)({}, StyledGrid.propTypes, { + alignContent: requireProp('container'), + alignItems: requireProp('container'), + direction: requireProp('container'), + justify: requireProp('container'), + lg: requireProp('item'), + md: requireProp('item'), + sm: requireProp('item'), + spacing: requireProp('container'), + wrap: requireProp('container'), + xs: requireProp('item'), + zeroMinWidth: requireProp('zeroMinWidth') + }); +} + +var _default = StyledGrid; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Grid/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@material-ui/core/Grid/index.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Grid.default; + } +}); + +var _Grid = _interopRequireDefault(__webpack_require__(/*! ./Grid */ "./node_modules/@material-ui/core/Grid/Grid.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Grow/Grow.js": +/*!*****************************************************!*\ + !*** ./node_modules/@material-ui/core/Grow/Grow.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _Transition = _interopRequireDefault(__webpack_require__(/*! react-transition-group/Transition */ "./node_modules/react-transition-group/Transition.js")); + +var _withTheme = _interopRequireDefault(__webpack_require__(/*! ../styles/withTheme */ "./node_modules/@material-ui/core/styles/withTheme.js")); + +var _utils = __webpack_require__(/*! ../transitions/utils */ "./node_modules/@material-ui/core/transitions/utils.js"); + +// @inheritedComponent Transition +function getScale(value) { + return "scale(".concat(value, ", ").concat(Math.pow(value, 2), ")"); +} + +var styles = { + entering: { + opacity: 1, + transform: getScale(1) + }, + entered: { + opacity: 1, + // Use translateZ to scrolling issue on Chrome. + transform: "".concat(getScale(1), " translateZ(0)") + } +}; +/** + * The Grow transition is used by the [Tooltip](/demos/tooltips/) and + * [Popover](/utils/popover/) components. + * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally. + */ + +var Grow = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(Grow, _React$Component); + + function Grow() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, Grow); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Grow)).call.apply(_getPrototypeOf2, [this].concat(args))); + + _this.handleEnter = function (node) { + var _this$props = _this.props, + theme = _this$props.theme, + timeout = _this$props.timeout; + (0, _utils.reflow)(node); // So the animation always start from the start. + + var _getTransitionProps = (0, _utils.getTransitionProps)(_this.props, { + mode: 'enter' + }), + transitionDuration = _getTransitionProps.duration, + delay = _getTransitionProps.delay; + + var duration = 0; + + if (timeout === 'auto') { + duration = theme.transitions.getAutoHeightDuration(node.clientHeight); + _this.autoTimeout = duration; + } else { + duration = transitionDuration; + } + + node.style.transition = [theme.transitions.create('opacity', { + duration: duration, + delay: delay + }), theme.transitions.create('transform', { + duration: duration * 0.666, + delay: delay + })].join(','); + + if (_this.props.onEnter) { + _this.props.onEnter(node); + } + }; + + _this.handleExit = function (node) { + var _this$props2 = _this.props, + theme = _this$props2.theme, + timeout = _this$props2.timeout; + var duration = 0; + + var _getTransitionProps2 = (0, _utils.getTransitionProps)(_this.props, { + mode: 'exit' + }), + transitionDuration = _getTransitionProps2.duration, + delay = _getTransitionProps2.delay; + + if (timeout === 'auto') { + duration = theme.transitions.getAutoHeightDuration(node.clientHeight); + _this.autoTimeout = duration; + } else { + duration = transitionDuration; + } + + node.style.transition = [theme.transitions.create('opacity', { + duration: duration, + delay: delay + }), theme.transitions.create('transform', { + duration: duration * 0.666, + delay: delay || duration * 0.333 + })].join(','); + node.style.opacity = '0'; + node.style.transform = getScale(0.75); + + if (_this.props.onExit) { + _this.props.onExit(node); + } + }; + + _this.addEndListener = function (_, next) { + if (_this.props.timeout === 'auto') { + _this.timer = setTimeout(next, _this.autoTimeout || 0); + } + }; + + return _this; + } + + (0, _createClass2.default)(Grow, [{ + key: "componentWillUnmount", + value: function componentWillUnmount() { + clearTimeout(this.timer); + } + }, { + key: "render", + value: function render() { + var _this$props3 = this.props, + children = _this$props3.children, + onEnter = _this$props3.onEnter, + onExit = _this$props3.onExit, + styleProp = _this$props3.style, + theme = _this$props3.theme, + timeout = _this$props3.timeout, + other = (0, _objectWithoutProperties2.default)(_this$props3, ["children", "onEnter", "onExit", "style", "theme", "timeout"]); + var style = (0, _extends2.default)({}, styleProp, _react.default.isValidElement(children) ? children.props.style : {}); + return _react.default.createElement(_Transition.default, (0, _extends2.default)({ + appear: true, + onEnter: this.handleEnter, + onExit: this.handleExit, + addEndListener: this.addEndListener, + timeout: timeout === 'auto' ? null : timeout + }, other), function (state, childProps) { + return _react.default.cloneElement(children, (0, _extends2.default)({ + style: (0, _extends2.default)({ + opacity: 0, + transform: getScale(0.75) + }, styles[state], style) + }, childProps)); + }); + } + }]); + return Grow; +}(_react.default.Component); + + true ? Grow.propTypes = { + /** + * A single child content element. + */ + children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]), + + /** + * If `true`, show the component; triggers the enter or exit animation. + */ + in: _propTypes.default.bool, + + /** + * @ignore + */ + onEnter: _propTypes.default.func, + + /** + * @ignore + */ + onExit: _propTypes.default.func, + + /** + * @ignore + */ + style: _propTypes.default.object, + + /** + * @ignore + */ + theme: _propTypes.default.object.isRequired, + + /** + * The duration for the transition, in milliseconds. + * You may specify a single timeout for all transitions, or individually with an object. + * + * Set to 'auto' to automatically calculate transition time based on height. + */ + timeout: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({ + enter: _propTypes.default.number, + exit: _propTypes.default.number + }), _propTypes.default.oneOf(['auto'])]) +} : undefined; +Grow.defaultProps = { + timeout: 'auto' +}; +Grow.muiSupportAuto = true; + +var _default = (0, _withTheme.default)()(Grow); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Grow/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@material-ui/core/Grow/index.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Grow.default; + } +}); + +var _Grow = _interopRequireDefault(__webpack_require__(/*! ./Grow */ "./node_modules/@material-ui/core/Grow/Grow.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Input/Input.js": +/*!*******************************************************!*\ + !*** ./node_modules/@material-ui/core/Input/Input.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _InputBase = _interopRequireDefault(__webpack_require__(/*! ../InputBase */ "./node_modules/@material-ui/core/InputBase/index.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +// @inheritedComponent InputBase +var styles = function styles(theme) { + var light = theme.palette.type === 'light'; + var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)'; + return { + /* Styles applied to the root element. */ + root: { + position: 'relative' + }, + + /* Styles applied to the root element if the component is a descendant of `FormControl`. */ + formControl: { + 'label + &': { + marginTop: 16 + } + }, + + /* Styles applied to the root element if the component is focused. */ + focused: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `disableUnderline={false}`. */ + underline: { + '&:after': { + borderBottom: "2px solid ".concat(theme.palette.primary[light ? 'dark' : 'light']), + left: 0, + bottom: 0, + // Doing the other way around crash on IE 11 "''" https://github.com/cssinjs/jss/issues/242 + content: '""', + position: 'absolute', + right: 0, + transform: 'scaleX(0)', + transition: theme.transitions.create('transform', { + duration: theme.transitions.duration.shorter, + easing: theme.transitions.easing.easeOut + }), + pointerEvents: 'none' // Transparent to the hover style. + + }, + '&$focused:after': { + transform: 'scaleX(1)' + }, + '&$error:after': { + borderBottomColor: theme.palette.error.main, + transform: 'scaleX(1)' // error is always underlined in red + + }, + '&:before': { + borderBottom: "1px solid ".concat(bottomLineColor), + left: 0, + bottom: 0, + // Doing the other way around crash on IE 11 "''" https://github.com/cssinjs/jss/issues/242 + content: '"\\00a0"', + position: 'absolute', + right: 0, + transition: theme.transitions.create('border-bottom-color', { + duration: theme.transitions.duration.shorter + }), + pointerEvents: 'none' // Transparent to the hover style. + + }, + '&:hover:not($disabled):not($focused):not($error):before': { + borderBottom: "2px solid ".concat(theme.palette.text.primary), + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + borderBottom: "1px solid ".concat(bottomLineColor) + } + }, + '&$disabled:before': { + borderBottomStyle: 'dotted' + } + }, + + /* Styles applied to the root element if `error={true}`. */ + error: {}, + + /* Styles applied to the root element if `multiline={true}`. */ + multiline: {}, + + /* Styles applied to the root element if `fullWidth={true}`. */ + fullWidth: {}, + + /* Styles applied to the `input` element. */ + input: {}, + + /* Styles applied to the `input` element if `margin="dense"`. */ + inputMarginDense: {}, + + /* Styles applied to the `input` element if `multiline={true}`. */ + inputMultiline: {}, + + /* Styles applied to the `input` element if `type` is not "text"`. */ + inputType: {}, + + /* Styles applied to the `input` element if `type="search"`. */ + inputTypeSearch: {} + }; +}; + +exports.styles = styles; + +function Input(props) { + var disableUnderline = props.disableUnderline, + classes = props.classes, + other = (0, _objectWithoutProperties2.default)(props, ["disableUnderline", "classes"]); + return _react.default.createElement(_InputBase.default, (0, _extends2.default)({ + classes: (0, _extends2.default)({}, classes, { + root: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.underline, !disableUnderline)), + underline: null + }) + }, other)); +} + + true ? Input.propTypes = { + /** + * This property helps users to fill forms faster, especially on mobile devices. + * The name can be confusing, as it's more like an autofill. + * You can learn more about it here: + * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill + */ + autoComplete: _propTypes.default.string, + + /** + * If `true`, the input will be focused during the first mount. + */ + autoFocus: _propTypes.default.bool, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * The CSS class name of the wrapper element. + */ + className: _propTypes.default.string, + + /** + * The default input value, useful when not controlling the component. + */ + defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object]))]), + + /** + * If `true`, the input will be disabled. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the input will not have an underline. + */ + disableUnderline: _propTypes.default.bool, + + /** + * End `InputAdornment` for this component. + */ + endAdornment: _propTypes.default.node, + + /** + * If `true`, the input will indicate an error. This is normally obtained via context from + * FormControl. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the input will take up the full width of its container. + */ + fullWidth: _propTypes.default.bool, + + /** + * The id of the `input` element. + */ + id: _propTypes.default.string, + + /** + * The component used for the native input. + * Either a string to use a DOM element or a component. + */ + inputComponent: _utils.componentPropType, + + /** + * Attributes applied to the `input` element. + */ + inputProps: _propTypes.default.object, + + /** + * Use that property to pass a ref callback to the native input component. + */ + inputRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), + + /** + * If `dense`, will adjust vertical spacing. This is normally obtained via context from + * FormControl. + */ + margin: _propTypes.default.oneOf(['dense', 'none']), + + /** + * If `true`, a textarea element will be rendered. + */ + multiline: _propTypes.default.bool, + + /** + * Name attribute of the `input` element. + */ + name: _propTypes.default.string, + + /** + * Callback fired when the value is changed. + * + * @param {object} event The event source of the callback. + * You can pull out the new value by accessing `event.target.value`. + */ + onChange: _propTypes.default.func, + + /** + * The short hint displayed in the input before the user enters a value. + */ + placeholder: _propTypes.default.string, + + /** + * It prevents the user from changing the value of the field + * (not from interacting with the field). + */ + readOnly: _propTypes.default.bool, + + /** + * If `true`, the input will be required. + */ + required: _propTypes.default.bool, + + /** + * Number of rows to display when multiline option is set to true. + */ + rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Maximum number of rows to display when multiline option is set to true. + */ + rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Start `InputAdornment` for this component. + */ + startAdornment: _propTypes.default.node, + + /** + * Type of the input element. It should be a valid HTML5 input type. + */ + type: _propTypes.default.string, + + /** + * The input value, required for a controlled component. + */ + value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object]))]) +} : undefined; +_InputBase.default.defaultProps = { + fullWidth: false, + inputComponent: 'input', + multiline: false, + type: 'text' +}; +Input.muiName = 'Input'; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiInput' +})(Input); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Input/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/@material-ui/core/Input/index.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Input.default; + } +}); + +var _Input = _interopRequireDefault(__webpack_require__(/*! ./Input */ "./node_modules/@material-ui/core/Input/Input.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/InputBase/InputBase.js": +/*!***************************************************************!*\ + !*** ./node_modules/@material-ui/core/InputBase/InputBase.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _warning = _interopRequireDefault(__webpack_require__(/*! warning */ "./node_modules/warning/warning.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _formControlState = _interopRequireDefault(__webpack_require__(/*! ../FormControl/formControlState */ "./node_modules/@material-ui/core/FormControl/formControlState.js")); + +var _FormControlContext = _interopRequireDefault(__webpack_require__(/*! ../FormControl/FormControlContext */ "./node_modules/@material-ui/core/FormControl/FormControlContext.js")); + +var _withFormControlContext = _interopRequireDefault(__webpack_require__(/*! ../FormControl/withFormControlContext */ "./node_modules/@material-ui/core/FormControl/withFormControlContext.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _reactHelpers = __webpack_require__(/*! ../utils/reactHelpers */ "./node_modules/@material-ui/core/utils/reactHelpers.js"); + +var _Textarea = _interopRequireDefault(__webpack_require__(/*! ./Textarea */ "./node_modules/@material-ui/core/InputBase/Textarea.js")); + +var _utils2 = __webpack_require__(/*! ./utils */ "./node_modules/@material-ui/core/InputBase/utils.js"); + +/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */ +var styles = function styles(theme) { + var light = theme.palette.type === 'light'; + var placeholder = { + color: 'currentColor', + opacity: light ? 0.42 : 0.5, + transition: theme.transitions.create('opacity', { + duration: theme.transitions.duration.shorter + }) + }; + var placeholderHidden = { + opacity: 0 + }; + var placeholderVisible = { + opacity: light ? 0.42 : 0.5 + }; + return { + /* Styles applied to the root element. */ + root: { + // Mimics the default input display property used by browsers for an input. + fontFamily: theme.typography.fontFamily, + color: theme.palette.text.primary, + fontSize: theme.typography.pxToRem(16), + lineHeight: '1.1875em', + // Reset (19px), match the native input line-height + cursor: 'text', + display: 'inline-flex', + alignItems: 'center', + '&$disabled': { + color: theme.palette.text.disabled, + cursor: 'default' + } + }, + + /* Styles applied to the root element if the component is a descendant of `FormControl`. */ + formControl: {}, + + /* Styles applied to the root element if the component is focused. */ + focused: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `startAdornment` is provided. */ + adornedStart: {}, + + /* Styles applied to the root element if `endAdornment` is provided. */ + adornedEnd: {}, + + /* Styles applied to the root element if `error={true}`. */ + error: {}, + + /* Styles applied to the `input` element if `margin="dense"`. */ + marginDense: {}, + + /* Styles applied to the root element if `multiline={true}`. */ + multiline: { + padding: "".concat(8 - 2, "px 0 ").concat(8 - 1, "px") + }, + + /* Styles applied to the root element if `fullWidth={true}`. */ + fullWidth: { + width: '100%' + }, + + /* Styles applied to the `input` element. */ + input: { + font: 'inherit', + color: 'currentColor', + padding: "".concat(8 - 2, "px 0 ").concat(8 - 1, "px"), + border: 0, + boxSizing: 'content-box', + background: 'none', + margin: 0, + // Reset for Safari + // Remove grey highlight + WebkitTapHighlightColor: 'transparent', + display: 'block', + // Make the flex item shrink with Firefox + minWidth: 0, + width: '100%', + // Fix IE 11 width issue + '&::-webkit-input-placeholder': placeholder, + '&::-moz-placeholder': placeholder, + // Firefox 19+ + '&:-ms-input-placeholder': placeholder, + // IE 11 + '&::-ms-input-placeholder': placeholder, + // Edge + '&:focus': { + outline: 0 + }, + // Reset Firefox invalid required input style + '&:invalid': { + boxShadow: 'none' + }, + '&::-webkit-search-decoration': { + // Remove the padding when type=search. + '-webkit-appearance': 'none' + }, + // Show and hide the placeholder logic + 'label[data-shrink=false] + $formControl &': { + '&::-webkit-input-placeholder': placeholderHidden, + '&::-moz-placeholder': placeholderHidden, + // Firefox 19+ + '&:-ms-input-placeholder': placeholderHidden, + // IE 11 + '&::-ms-input-placeholder': placeholderHidden, + // Edge + '&:focus::-webkit-input-placeholder': placeholderVisible, + '&:focus::-moz-placeholder': placeholderVisible, + // Firefox 19+ + '&:focus:-ms-input-placeholder': placeholderVisible, + // IE 11 + '&:focus::-ms-input-placeholder': placeholderVisible // Edge + + }, + '&$disabled': { + opacity: 1 // Reset iOS opacity + + } + }, + + /* Styles applied to the `input` element if `margin="dense"`. */ + inputMarginDense: { + paddingTop: 4 - 1 + }, + + /* Styles applied to the `input` element if `multiline={true}`. */ + inputMultiline: { + resize: 'none', + padding: 0 + }, + + /* Styles applied to the `input` element if `type` is not "text"`. */ + inputType: { + // type="date" or type="time", etc. have specific styles we need to reset. + height: '1.1875em' // Reset (19px), match the native input line-height + + }, + + /* Styles applied to the `input` element if `type="search"`. */ + inputTypeSearch: { + // Improve type search style. + '-moz-appearance': 'textfield', + '-webkit-appearance': 'textfield' + }, + + /* Styles applied to the `input` element if `startAdornment` is provided. */ + inputAdornedStart: {}, + + /* Styles applied to the `input` element if `endAdornment` is provided. */ + inputAdornedEnd: {} + }; +}; +/** + * `InputBase` contains as few styles as possible. + * It aims to be a simple building block for creating an input. + * It contains a load of style reset and some state logic. + */ + + +exports.styles = styles; + +var InputBase = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(InputBase, _React$Component); + (0, _createClass2.default)(InputBase, null, [{ + key: "getDerivedStateFromProps", + value: function getDerivedStateFromProps(props, state) { + // The blur won't fire when the disabled state is set on a focused input. + // We need to book keep the focused state manually. + if (props.disabled && state.focused) { + return { + focused: false + }; + } + + return null; + } + }]); + + function InputBase(props) { + var _this; + + (0, _classCallCheck2.default)(this, InputBase); + _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(InputBase).call(this, props)); + _this.state = { + focused: false + }; + + _this.handleFocus = function (event) { + var muiFormControl = _this.props.muiFormControl; // Fix a bug with IE 11 where the focus/blur events are triggered + // while the input is disabled. + + if ((0, _formControlState.default)({ + props: _this.props, + muiFormControl: muiFormControl, + states: ['disabled'] + }).disabled) { + event.stopPropagation(); + return; + } + + _this.setState({ + focused: true + }); + + if (_this.props.onFocus) { + _this.props.onFocus(event); + } + + if (muiFormControl && muiFormControl.onFocus) { + muiFormControl.onFocus(event); + } + }; + + _this.handleBlur = function (event) { + _this.setState({ + focused: false + }); + + if (_this.props.onBlur) { + _this.props.onBlur(event); + } + + var muiFormControl = _this.props.muiFormControl; + + if (muiFormControl && muiFormControl.onBlur) { + muiFormControl.onBlur(event); + } + }; + + _this.handleChange = function () { + if (!_this.isControlled) { + _this.checkDirty(_this.inputRef); + } // Perform in the willUpdate + + + if (_this.props.onChange) { + var _this$props; + + (_this$props = _this.props).onChange.apply(_this$props, arguments); + } + }; + + _this.handleRefInput = function (ref) { + _this.inputRef = ref; + true ? (0, _warning.default)(!ref || ref instanceof HTMLInputElement || ref.focus, ['Material-UI: you have provided a `inputComponent` to the input component', 'that does not correctly handle the `inputRef` property.', 'Make sure the `inputRef` property is called with a HTMLInputElement.'].join('\n')) : undefined; + var refProp; + + if (_this.props.inputRef) { + refProp = _this.props.inputRef; + } else if (_this.props.inputProps && _this.props.inputProps.ref) { + refProp = _this.props.inputProps.ref; + } + + (0, _reactHelpers.setRef)(refProp, ref); + }; + + _this.handleClick = function (event) { + if (_this.inputRef && event.currentTarget === event.target) { + _this.inputRef.focus(); + } + + if (_this.props.onClick) { + _this.props.onClick(event); + } + }; + + _this.isControlled = props.value != null; + + if (_this.isControlled) { + _this.checkDirty(props); + } + + return _this; + } + + (0, _createClass2.default)(InputBase, [{ + key: "componentDidMount", + value: function componentDidMount() { + if (!this.isControlled) { + this.checkDirty(this.inputRef); + } + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + // Book keep the focused state. + if (!prevProps.disabled && this.props.disabled) { + var muiFormControl = this.props.muiFormControl; + + if (muiFormControl && muiFormControl.onBlur) { + muiFormControl.onBlur(); + } + } + + if (this.isControlled) { + this.checkDirty(this.props); + } // else performed in the onChange + + } + }, { + key: "checkDirty", + value: function checkDirty(obj) { + var muiFormControl = this.props.muiFormControl; + + if ((0, _utils2.isFilled)(obj)) { + if (muiFormControl && muiFormControl.onFilled) { + muiFormControl.onFilled(); + } + + if (this.props.onFilled) { + this.props.onFilled(); + } + + return; + } + + if (muiFormControl && muiFormControl.onEmpty) { + muiFormControl.onEmpty(); + } + + if (this.props.onEmpty) { + this.props.onEmpty(); + } + } + }, { + key: "render", + value: function render() { + var _classNames, _classNames2; + + var _this$props2 = this.props, + autoComplete = _this$props2.autoComplete, + autoFocus = _this$props2.autoFocus, + classes = _this$props2.classes, + classNameProp = _this$props2.className, + defaultValue = _this$props2.defaultValue, + disabled = _this$props2.disabled, + endAdornment = _this$props2.endAdornment, + error = _this$props2.error, + fullWidth = _this$props2.fullWidth, + id = _this$props2.id, + inputComponent = _this$props2.inputComponent, + _this$props2$inputPro = _this$props2.inputProps; + _this$props2$inputPro = _this$props2$inputPro === void 0 ? {} : _this$props2$inputPro; + var inputPropsClassName = _this$props2$inputPro.className, + inputPropsProp = (0, _objectWithoutProperties2.default)(_this$props2$inputPro, ["className"]), + inputRef = _this$props2.inputRef, + margin = _this$props2.margin, + muiFormControl = _this$props2.muiFormControl, + multiline = _this$props2.multiline, + name = _this$props2.name, + onBlur = _this$props2.onBlur, + onChange = _this$props2.onChange, + onClick = _this$props2.onClick, + onEmpty = _this$props2.onEmpty, + onFilled = _this$props2.onFilled, + onFocus = _this$props2.onFocus, + onKeyDown = _this$props2.onKeyDown, + onKeyUp = _this$props2.onKeyUp, + placeholder = _this$props2.placeholder, + readOnly = _this$props2.readOnly, + renderPrefix = _this$props2.renderPrefix, + rows = _this$props2.rows, + rowsMax = _this$props2.rowsMax, + startAdornment = _this$props2.startAdornment, + type = _this$props2.type, + value = _this$props2.value, + other = (0, _objectWithoutProperties2.default)(_this$props2, ["autoComplete", "autoFocus", "classes", "className", "defaultValue", "disabled", "endAdornment", "error", "fullWidth", "id", "inputComponent", "inputProps", "inputRef", "margin", "muiFormControl", "multiline", "name", "onBlur", "onChange", "onClick", "onEmpty", "onFilled", "onFocus", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "renderPrefix", "rows", "rowsMax", "startAdornment", "type", "value"]); + var ariaDescribedby = other['aria-describedby']; + delete other['aria-describedby']; + var fcs = (0, _formControlState.default)({ + props: this.props, + muiFormControl: muiFormControl, + states: ['disabled', 'error', 'margin', 'required', 'filled'] + }); + var focused = muiFormControl ? muiFormControl.focused : this.state.focused; + var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.disabled, fcs.disabled), (0, _defineProperty2.default)(_classNames, classes.error, fcs.error), (0, _defineProperty2.default)(_classNames, classes.fullWidth, fullWidth), (0, _defineProperty2.default)(_classNames, classes.focused, focused), (0, _defineProperty2.default)(_classNames, classes.formControl, muiFormControl), (0, _defineProperty2.default)(_classNames, classes.marginDense, fcs.margin === 'dense'), (0, _defineProperty2.default)(_classNames, classes.multiline, multiline), (0, _defineProperty2.default)(_classNames, classes.adornedStart, startAdornment), (0, _defineProperty2.default)(_classNames, classes.adornedEnd, endAdornment), _classNames), classNameProp); + var inputClassName = (0, _classnames.default)(classes.input, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.disabled, fcs.disabled), (0, _defineProperty2.default)(_classNames2, classes.inputType, type !== 'text'), (0, _defineProperty2.default)(_classNames2, classes.inputTypeSearch, type === 'search'), (0, _defineProperty2.default)(_classNames2, classes.inputMultiline, multiline), (0, _defineProperty2.default)(_classNames2, classes.inputMarginDense, fcs.margin === 'dense'), (0, _defineProperty2.default)(_classNames2, classes.inputAdornedStart, startAdornment), (0, _defineProperty2.default)(_classNames2, classes.inputAdornedEnd, endAdornment), _classNames2), inputPropsClassName); + var InputComponent = inputComponent; + var inputProps = (0, _extends2.default)({}, inputPropsProp, { + ref: this.handleRefInput + }); + + if (typeof InputComponent !== 'string') { + inputProps = (0, _extends2.default)({ + // Rename ref to inputRef as we don't know the + // provided `inputComponent` structure. + inputRef: this.handleRefInput, + type: type + }, inputProps, { + ref: null + }); + } else if (multiline) { + if (rows && !rowsMax) { + InputComponent = 'textarea'; + } else { + inputProps = (0, _extends2.default)({ + rowsMax: rowsMax, + textareaRef: this.handleRefInput + }, inputProps, { + ref: null + }); + InputComponent = _Textarea.default; + } + } else { + inputProps = (0, _extends2.default)({ + type: type + }, inputProps); + } + + return _react.default.createElement("div", (0, _extends2.default)({ + className: className, + onClick: this.handleClick + }, other), renderPrefix ? renderPrefix((0, _extends2.default)({}, fcs, { + startAdornment: startAdornment, + focused: focused + })) : null, startAdornment, _react.default.createElement(_FormControlContext.default.Provider, { + value: null + }, _react.default.createElement(InputComponent, (0, _extends2.default)({ + "aria-invalid": fcs.error, + "aria-describedby": ariaDescribedby, + autoComplete: autoComplete, + autoFocus: autoFocus, + className: inputClassName, + defaultValue: defaultValue, + disabled: fcs.disabled, + id: id, + name: name, + onBlur: this.handleBlur, + onChange: this.handleChange, + onFocus: this.handleFocus, + onKeyDown: onKeyDown, + onKeyUp: onKeyUp, + placeholder: placeholder, + readOnly: readOnly, + required: fcs.required, + rows: rows, + value: value + }, inputProps))), endAdornment); + } + }]); + return InputBase; +}(_react.default.Component); + + true ? InputBase.propTypes = { + /** + * This property helps users to fill forms faster, especially on mobile devices. + * The name can be confusing, as it's more like an autofill. + * You can learn more about it here: + * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill + */ + autoComplete: _propTypes.default.string, + + /** + * If `true`, the input will be focused during the first mount. + */ + autoFocus: _propTypes.default.bool, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * The CSS class name of the wrapper element. + */ + className: _propTypes.default.string, + + /** + * The default input value, useful when not controlling the component. + */ + defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object]))]), + + /** + * If `true`, the input will be disabled. + */ + disabled: _propTypes.default.bool, + + /** + * End `InputAdornment` for this component. + */ + endAdornment: _propTypes.default.node, + + /** + * If `true`, the input will indicate an error. This is normally obtained via context from + * FormControl. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the input will take up the full width of its container. + */ + fullWidth: _propTypes.default.bool, + + /** + * The id of the `input` element. + */ + id: _propTypes.default.string, + + /** + * The component used for the native input. + * Either a string to use a DOM element or a component. + */ + inputComponent: _utils.componentPropType, + + /** + * Attributes applied to the `input` element. + */ + inputProps: _propTypes.default.object, + + /** + * Use that property to pass a ref callback to the native input component. + */ + inputRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), + + /** + * If `dense`, will adjust vertical spacing. This is normally obtained via context from + * FormControl. + */ + margin: _propTypes.default.oneOf(['dense', 'none']), + + /** + * @ignore + */ + muiFormControl: _propTypes.default.object, + + /** + * If `true`, a textarea element will be rendered. + */ + multiline: _propTypes.default.bool, + + /** + * Name attribute of the `input` element. + */ + name: _propTypes.default.string, + + /** + * @ignore + */ + onBlur: _propTypes.default.func, + + /** + * Callback fired when the value is changed. + * + * @param {object} event The event source of the callback. + * You can pull out the new value by accessing `event.target.value`. + */ + onChange: _propTypes.default.func, + + /** + * @ignore + */ + onClick: _propTypes.default.func, + + /** + * @ignore + */ + onEmpty: _propTypes.default.func, + + /** + * @ignore + */ + onFilled: _propTypes.default.func, + + /** + * @ignore + */ + onFocus: _propTypes.default.func, + + /** + * @ignore + */ + onKeyDown: _propTypes.default.func, + + /** + * @ignore + */ + onKeyUp: _propTypes.default.func, + + /** + * The short hint displayed in the input before the user enters a value. + */ + placeholder: _propTypes.default.string, + + /** + * It prevents the user from changing the value of the field + * (not from interacting with the field). + */ + readOnly: _propTypes.default.bool, + + /** + * @ignore + */ + renderPrefix: _propTypes.default.func, + + /** + * If `true`, the input will be required. + */ + required: _propTypes.default.bool, + + /** + * Number of rows to display when multiline option is set to true. + */ + rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Maximum number of rows to display when multiline option is set to true. + */ + rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Start `InputAdornment` for this component. + */ + startAdornment: _propTypes.default.node, + + /** + * Type of the input element. It should be a valid HTML5 input type. + */ + type: _propTypes.default.string, + + /** + * The input value, required for a controlled component. + */ + value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.object]))]) +} : undefined; +InputBase.defaultProps = { + fullWidth: false, + inputComponent: 'input', + multiline: false, + type: 'text' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiInputBase' +})((0, _withFormControlContext.default)(InputBase)); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/InputBase/Textarea.js": +/*!**************************************************************!*\ + !*** ./node_modules/@material-ui/core/InputBase/Textarea.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _debounce = _interopRequireDefault(__webpack_require__(/*! debounce */ "./node_modules/debounce/index.js")); + +var _reactEventListener = _interopRequireDefault(__webpack_require__(/*! react-event-listener */ "./node_modules/react-event-listener/dist/react-event-listener.cjs.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _reactHelpers = __webpack_require__(/*! ../utils/reactHelpers */ "./node_modules/@material-ui/core/utils/reactHelpers.js"); + +// < 1kb payload overhead when lodash/debounce is > 3kb. +var ROWS_HEIGHT = 19; +var styles = { + /* Styles applied to the root element. */ + root: { + position: 'relative', + // because the shadow has position: 'absolute', + width: '100%' + }, + textarea: { + width: '100%', + height: '100%', + resize: 'none', + font: 'inherit', + padding: 0, + cursor: 'inherit', + boxSizing: 'border-box', + lineHeight: 'inherit', + border: 'none', + outline: 'none', + background: 'transparent' + }, + shadow: { + // Overflow also needed to here to remove the extra row + // added to textareas in Firefox. + overflow: 'hidden', + // Visibility needed to hide the extra text area on iPads + visibility: 'hidden', + position: 'absolute', + height: 'auto', + whiteSpace: 'pre-wrap' + } +}; +/** + * @ignore - internal component. + */ + +exports.styles = styles; + +var Textarea = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(Textarea, _React$Component); + + function Textarea(props) { + var _this; + + (0, _classCallCheck2.default)(this, Textarea); + _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Textarea).call(this)); + + _this.handleRefInput = function (ref) { + _this.inputRef = ref; + (0, _reactHelpers.setRef)(_this.props.textareaRef, ref); + }; + + _this.handleRefSinglelineShadow = function (ref) { + _this.singlelineShadowRef = ref; + }; + + _this.handleRefShadow = function (ref) { + _this.shadowRef = ref; + }; + + _this.handleChange = function (event) { + _this.value = event.target.value; + + if (!_this.isControlled) { + // The component is not controlled, we need to update the shallow value. + _this.shadowRef.value = _this.value; + + _this.syncHeightWithShadow(); + } + + if (_this.props.onChange) { + _this.props.onChange(event); + } + }; + + _this.isControlled = props.value != null; // expects the components it renders to respond to 'value' + // so that it can check whether they are filled. + + _this.value = props.value || props.defaultValue || ''; + _this.state = { + height: Number(props.rows) * ROWS_HEIGHT + }; + + if (typeof window !== 'undefined') { + _this.handleResize = (0, _debounce.default)(function () { + _this.syncHeightWithShadow(); + }, 166); // Corresponds to 10 frames at 60 Hz. + } + + return _this; + } + + (0, _createClass2.default)(Textarea, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.syncHeightWithShadow(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate() { + this.syncHeightWithShadow(); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.handleResize.clear(); + } + }, { + key: "syncHeightWithShadow", + value: function syncHeightWithShadow() { + var props = this.props; // Guarding for **broken** shallow rendering method that call componentDidMount + // but doesn't handle refs correctly. + // To remove once the shallow rendering has been fixed. + + if (!this.shadowRef) { + return; + } + + if (this.isControlled) { + // The component is controlled, we need to update the shallow value. + this.shadowRef.value = props.value == null ? '' : String(props.value); + } + + var lineHeight = this.singlelineShadowRef.scrollHeight; // The Textarea might not be visible (p.ex: display: none). + // In this case, the layout values read from the DOM will be 0. + + lineHeight = lineHeight === 0 ? ROWS_HEIGHT : lineHeight; + var newHeight = this.shadowRef.scrollHeight; // Guarding for jsdom, where scrollHeight isn't present. + // See https://github.com/tmpvar/jsdom/issues/1013 + + if (newHeight === undefined) { + return; + } + + if (Number(props.rowsMax) >= Number(props.rows)) { + newHeight = Math.min(Number(props.rowsMax) * lineHeight, newHeight); + } + + newHeight = Math.max(newHeight, lineHeight); // Need a large enough different to update the height. + // This prevents infinite rendering loop. + + if (Math.abs(this.state.height - newHeight) > 1) { + this.setState({ + height: newHeight + }); + } + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + classes = _this$props.classes, + className = _this$props.className, + defaultValue = _this$props.defaultValue, + onChange = _this$props.onChange, + rows = _this$props.rows, + rowsMax = _this$props.rowsMax, + style = _this$props.style, + textareaRef = _this$props.textareaRef, + value = _this$props.value, + other = (0, _objectWithoutProperties2.default)(_this$props, ["classes", "className", "defaultValue", "onChange", "rows", "rowsMax", "style", "textareaRef", "value"]); + return _react.default.createElement("div", { + className: classes.root + }, _react.default.createElement(_reactEventListener.default, { + target: "window", + onResize: this.handleResize + }), _react.default.createElement("textarea", { + "aria-hidden": "true", + className: (0, _classnames.default)(classes.textarea, classes.shadow), + readOnly: true, + ref: this.handleRefSinglelineShadow, + rows: "1", + tabIndex: -1, + value: "" + }), _react.default.createElement("textarea", { + "aria-hidden": "true", + className: (0, _classnames.default)(classes.textarea, classes.shadow), + defaultValue: defaultValue, + readOnly: true, + ref: this.handleRefShadow, + rows: rows, + tabIndex: -1, + value: value + }), _react.default.createElement("textarea", (0, _extends2.default)({ + rows: rows, + className: (0, _classnames.default)(classes.textarea, className), + defaultValue: defaultValue, + value: value, + onChange: this.handleChange, + ref: this.handleRefInput, + style: (0, _extends2.default)({ + height: this.state.height + }, style) + }, other))); + } + }]); + return Textarea; +}(_react.default.Component); + + true ? Textarea.propTypes = { + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * @ignore + */ + defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * @ignore + */ + disabled: _propTypes.default.bool, + + /** + * @ignore + */ + onChange: _propTypes.default.func, + + /** + * Number of rows to display when multiline option is set to true. + */ + rows: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * Maximum number of rows to display when multiline option is set to true. + */ + rowsMax: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), + + /** + * @ignore + */ + style: _propTypes.default.object, + + /** + * Use that property to pass a ref callback to the native textarea element. + */ + textareaRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), + + /** + * @ignore + */ + value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]) +} : undefined; +Textarea.defaultProps = { + rows: 1 +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiPrivateTextarea' +})(Textarea); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/InputBase/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/@material-ui/core/InputBase/index.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _InputBase.default; + } +}); + +var _InputBase = _interopRequireDefault(__webpack_require__(/*! ./InputBase */ "./node_modules/@material-ui/core/InputBase/InputBase.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/InputBase/utils.js": +/*!***********************************************************!*\ + !*** ./node_modules/@material-ui/core/InputBase/utils.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hasValue = hasValue; +exports.isFilled = isFilled; +exports.isAdornedStart = isAdornedStart; + +// Supports determination of isControlled(). +// Controlled input accepts its current value as a prop. +// +// @see https://facebook.github.io/react/docs/forms.html#controlled-components +// @param value +// @returns {boolean} true if string (including '') or number (including zero) +function hasValue(value) { + return value != null && !(Array.isArray(value) && value.length === 0); +} // Determine if field is empty or filled. +// Response determines if label is presented above field or as placeholder. +// +// @param obj +// @param SSR +// @returns {boolean} False when not present or empty string. +// True when any number or string with length. + + +function isFilled(obj) { + var SSR = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== ''); +} // Determine if an Input is adorned on start. +// It's corresponding to the left with LTR. +// +// @param obj +// @returns {boolean} False when no adornments. +// True when adorned at the start. + + +function isAdornedStart(obj) { + return obj.startAdornment; +} + +/***/ }), + +/***/ "./node_modules/@material-ui/core/InputLabel/InputLabel.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@material-ui/core/InputLabel/InputLabel.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _formControlState = _interopRequireDefault(__webpack_require__(/*! ../FormControl/formControlState */ "./node_modules/@material-ui/core/FormControl/formControlState.js")); + +var _withFormControlContext = _interopRequireDefault(__webpack_require__(/*! ../FormControl/withFormControlContext */ "./node_modules/@material-ui/core/FormControl/withFormControlContext.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _FormLabel = _interopRequireDefault(__webpack_require__(/*! ../FormLabel */ "./node_modules/@material-ui/core/FormLabel/index.js")); + +// @inheritedComponent FormLabel +var styles = function styles(theme) { + return { + /* Styles applied to the root element. */ + root: { + transformOrigin: 'top left' + }, + + /* Styles applied to the root element if `focused={true}`. */ + focused: {}, + + /* Styles applied to the root element if `disabled={true}`. */ + disabled: {}, + + /* Styles applied to the root element if `error={true}`. */ + error: {}, + + /* Styles applied to the root element if `required={true}`. */ + required: {}, + + /* Styles applied to the root element if the component is a descendant of `FormControl`. */ + formControl: { + position: 'absolute', + left: 0, + top: 0, + // slight alteration to spec spacing to match visual spec result + transform: 'translate(0, 24px) scale(1)' + }, + + /* Styles applied to the root element if `margin="dense"`. */ + marginDense: { + // Compensation for the `Input.inputDense` style. + transform: 'translate(0, 21px) scale(1)' + }, + + /* Styles applied to the `input` element if `shrink={true}`. */ + shrink: { + transform: 'translate(0, 1.5px) scale(0.75)', + transformOrigin: 'top left' + }, + + /* Styles applied to the `input` element if `disableAnimation={false}`. */ + animated: { + transition: theme.transitions.create(['color', 'transform'], { + duration: theme.transitions.duration.shorter, + easing: theme.transitions.easing.easeOut + }) + }, + + /* Styles applied to the root element if `variant="filled"`. */ + filled: { + // Chrome's autofill feature gives the input field a yellow background. + // Since the input field is behind the label in the HTML tree, + // the input field is drawn last and hides the label with an opaque background color. + // zIndex: 1 will raise the label above opaque background-colors of input. + zIndex: 1, + pointerEvents: 'none', + transform: 'translate(12px, 20px) scale(1)', + '&$marginDense': { + transform: 'translate(12px, 17px) scale(1)' + }, + '&$shrink': { + transform: 'translate(12px, 10px) scale(0.75)', + '&$marginDense': { + transform: 'translate(12px, 7px) scale(0.75)' + } + } + }, + + /* Styles applied to the root element if `variant="outlined"`. */ + outlined: { + // see comment above on filled.zIndex + zIndex: 1, + pointerEvents: 'none', + transform: 'translate(14px, 20px) scale(1)', + '&$marginDense': { + transform: 'translate(14px, 17px) scale(1)' + }, + '&$shrink': { + transform: 'translate(14px, -6px) scale(0.75)' + } + } + }; +}; + +exports.styles = styles; + +function InputLabel(props) { + var _classNames; + + var children = props.children, + classes = props.classes, + classNameProp = props.className, + disableAnimation = props.disableAnimation, + FormLabelClasses = props.FormLabelClasses, + margin = props.margin, + muiFormControl = props.muiFormControl, + shrinkProp = props.shrink, + variant = props.variant, + other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "disableAnimation", "FormLabelClasses", "margin", "muiFormControl", "shrink", "variant"]); + var shrink = shrinkProp; + + if (typeof shrink === 'undefined' && muiFormControl) { + shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart; + } + + var fcs = (0, _formControlState.default)({ + props: props, + muiFormControl: muiFormControl, + states: ['margin', 'variant'] + }); + var className = (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.formControl, muiFormControl), (0, _defineProperty2.default)(_classNames, classes.animated, !disableAnimation), (0, _defineProperty2.default)(_classNames, classes.shrink, shrink), (0, _defineProperty2.default)(_classNames, classes.marginDense, fcs.margin === 'dense'), (0, _defineProperty2.default)(_classNames, classes.filled, fcs.variant === 'filled'), (0, _defineProperty2.default)(_classNames, classes.outlined, fcs.variant === 'outlined'), _classNames), classNameProp); + return _react.default.createElement(_FormLabel.default, (0, _extends2.default)({ + "data-shrink": shrink, + className: className, + classes: (0, _extends2.default)({ + focused: classes.focused, + disabled: classes.disabled, + error: classes.error, + required: classes.required + }, FormLabelClasses) + }, other), children); +} + + true ? InputLabel.propTypes = { + /** + * The contents of the `InputLabel`. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * If `true`, the transition animation is disabled. + */ + disableAnimation: _propTypes.default.bool, + + /** + * If `true`, apply disabled class. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the label will be displayed in an error state. + */ + error: _propTypes.default.bool, + + /** + * If `true`, the input of this label is focused. + */ + focused: _propTypes.default.bool, + + /** + * `classes` property applied to the [`FormLabel`](/api/form-label/) element. + */ + FormLabelClasses: _propTypes.default.object, + + /** + * If `dense`, will adjust vertical spacing. This is normally obtained via context from + * FormControl. + */ + margin: _propTypes.default.oneOf(['dense']), + + /** + * @ignore + */ + muiFormControl: _propTypes.default.object, + + /** + * if `true`, the label will indicate that the input is required. + */ + required: _propTypes.default.bool, + + /** + * If `true`, the label is shrunk. + */ + shrink: _propTypes.default.bool, + + /** + * The variant to use. + */ + variant: _propTypes.default.oneOf(['standard', 'outlined', 'filled']) +} : undefined; +InputLabel.defaultProps = { + disableAnimation: false +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiInputLabel' +})((0, _withFormControlContext.default)(InputLabel)); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/InputLabel/index.js": +/*!************************************************************!*\ + !*** ./node_modules/@material-ui/core/InputLabel/index.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _InputLabel.default; + } +}); + +var _InputLabel = _interopRequireDefault(__webpack_require__(/*! ./InputLabel */ "./node_modules/@material-ui/core/InputLabel/InputLabel.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/List/List.js": +/*!*****************************************************!*\ + !*** ./node_modules/@material-ui/core/List/List.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _ListContext = _interopRequireDefault(__webpack_require__(/*! ./ListContext */ "./node_modules/@material-ui/core/List/ListContext.js")); + +var styles = { + /* Styles applied to the root element. */ + root: { + listStyle: 'none', + margin: 0, + padding: 0, + position: 'relative' + }, + + /* Styles applied to the root element if `disablePadding={false}`. */ + padding: { + paddingTop: 8, + paddingBottom: 8 + }, + + /* Styles applied to the root element if `dense={true}` & `disablePadding={false}`. */ + dense: { + paddingTop: 4, + paddingBottom: 4 + }, + + /* Styles applied to the root element if a `subheader` is provided. */ + subheader: { + paddingTop: 0 + } +}; +exports.styles = styles; + +function List(props) { + var _classNames; + + var children = props.children, + classes = props.classes, + className = props.className, + Component = props.component, + dense = props.dense, + disablePadding = props.disablePadding, + subheader = props.subheader, + other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "component", "dense", "disablePadding", "subheader"]); + return _react.default.createElement(Component, (0, _extends2.default)({ + className: (0, _classnames.default)(classes.root, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.dense, dense && !disablePadding), (0, _defineProperty2.default)(_classNames, classes.padding, !disablePadding), (0, _defineProperty2.default)(_classNames, classes.subheader, subheader), _classNames), className) + }, other), _react.default.createElement(_ListContext.default.Provider, { + value: { + dense: dense + } + }, subheader, children)); +} + + true ? List.propTypes = { + /** + * The content of the component. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + */ + component: _utils.componentPropType, + + /** + * If `true`, compact vertical padding designed for keyboard and mouse input will be used for + * the list and list items. The property is available to descendant components as the + * `dense` context. + */ + dense: _propTypes.default.bool, + + /** + * If `true`, vertical padding will be removed from the list. + */ + disablePadding: _propTypes.default.bool, + + /** + * The content of the subheader, normally `ListSubheader`. + */ + subheader: _propTypes.default.node +} : undefined; +List.defaultProps = { + component: 'ul', + dense: false, + disablePadding: false +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiList' +})(List); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/List/ListContext.js": +/*!************************************************************!*\ + !*** ./node_modules/@material-ui/core/List/ListContext.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +/** + * @ignore - internal component. + */ +var ListContext = _react.default.createContext({}); + +var _default = ListContext; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/List/index.js": +/*!******************************************************!*\ + !*** ./node_modules/@material-ui/core/List/index.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _List.default; + } +}); + +var _List = _interopRequireDefault(__webpack_require__(/*! ./List */ "./node_modules/@material-ui/core/List/List.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ListItem/ListItem.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/ListItem/ListItem.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _ButtonBase = _interopRequireDefault(__webpack_require__(/*! ../ButtonBase */ "./node_modules/@material-ui/core/ButtonBase/index.js")); + +var _reactHelpers = __webpack_require__(/*! ../utils/reactHelpers */ "./node_modules/@material-ui/core/utils/reactHelpers.js"); + +var _MergeListContext = _interopRequireDefault(__webpack_require__(/*! ./MergeListContext */ "./node_modules/@material-ui/core/ListItem/MergeListContext.js")); + +var styles = function styles(theme) { + return { + /* Styles applied to the (normally root) `component` element. May be wrapped by a `container`. */ + root: { + display: 'flex', + justifyContent: 'flex-start', + alignItems: 'center', + position: 'relative', + textDecoration: 'none', + width: '100%', + boxSizing: 'border-box', + textAlign: 'left', + paddingTop: 11, + // To use 10px in v4 + paddingBottom: 11, + // To use 10px in v4 + '&$selected, &$selected:hover, &$selected:focus': { + backgroundColor: theme.palette.action.selected + } + }, + + /* Styles applied to the `container` element if `children` includes `ListItemSecondaryAction`. */ + container: { + position: 'relative' + }, + // To remove in v4 + + /* Styles applied to the `component`'s `focusVisibleClassName` property if `button={true}`. */ + focusVisible: {}, + + /* Legacy styles applied to the root element. Use `root` instead. */ + default: {}, + + /* Styles applied to the `component` element if `dense={true}` or `children` includes `Avatar`. */ + dense: { + paddingTop: 8, + paddingBottom: 8 + }, + + /* Styles applied to the `component` element if `alignItems="flex-start"`. */ + alignItemsFlexStart: { + alignItems: 'flex-start' + }, + + /* Styles applied to the inner `component` element if `disabled={true}`. */ + disabled: { + opacity: 0.5 + }, + + /* Styles applied to the inner `component` element if `divider={true}`. */ + divider: { + borderBottom: "1px solid ".concat(theme.palette.divider), + backgroundClip: 'padding-box' + }, + + /* Styles applied to the inner `component` element if `disableGutters={false}`. */ + gutters: { + paddingLeft: 16, + paddingRight: 16 + }, + + /* Styles applied to the inner `component` element if `button={true}`. */ + button: { + transition: theme.transitions.create('background-color', { + duration: theme.transitions.duration.shortest + }), + '&:hover': { + textDecoration: 'none', + backgroundColor: theme.palette.action.hover, + // Reset on touch devices, it doesn't add specificity + '@media (hover: none)': { + backgroundColor: 'transparent' + } + }, + '&:focus': { + backgroundColor: theme.palette.action.hover + } + }, + + /* Styles applied to the `component` element if `children` includes `ListItemSecondaryAction`. */ + secondaryAction: { + // Add some space to avoid collision as `ListItemSecondaryAction` + // is absolutely positioned. + paddingRight: 32 + }, + + /* Styles applied to the root element if `selected={true}`. */ + selected: {} + }; +}; +/** + * Uses an additional container component if `ListItemSecondaryAction` is the last child. + */ + + +exports.styles = styles; + +function ListItem(props) { + var alignItems = props.alignItems, + button = props.button, + childrenProp = props.children, + classes = props.classes, + classNameProp = props.className, + componentProp = props.component, + ContainerComponent = props.ContainerComponent, + _props$ContainerProps = props.ContainerProps; + _props$ContainerProps = _props$ContainerProps === void 0 ? {} : _props$ContainerProps; + var ContainerClassName = _props$ContainerProps.className, + ContainerProps = (0, _objectWithoutProperties2.default)(_props$ContainerProps, ["className"]), + denseProp = props.dense, + disabled = props.disabled, + disableGutters = props.disableGutters, + divider = props.divider, + focusVisibleClassName = props.focusVisibleClassName, + selected = props.selected, + other = (0, _objectWithoutProperties2.default)(props, ["alignItems", "button", "children", "classes", "className", "component", "ContainerComponent", "ContainerProps", "dense", "disabled", "disableGutters", "divider", "focusVisibleClassName", "selected"]); + return _react.default.createElement(_MergeListContext.default, { + dense: denseProp, + alignItems: alignItems + }, function (_ref) { + var _classNames; + + var dense = _ref.dense; + + var children = _react.default.Children.toArray(childrenProp); + + var hasAvatar = children.some(function (value) { + return (0, _reactHelpers.isMuiElement)(value, ['ListItemAvatar']); + }); + var hasSecondaryAction = children.length && (0, _reactHelpers.isMuiElement)(children[children.length - 1], ['ListItemSecondaryAction']); + var className = (0, _classnames.default)(classes.root, classes.default, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.dense, dense || hasAvatar), (0, _defineProperty2.default)(_classNames, classes.gutters, !disableGutters), (0, _defineProperty2.default)(_classNames, classes.divider, divider), (0, _defineProperty2.default)(_classNames, classes.disabled, disabled), (0, _defineProperty2.default)(_classNames, classes.button, button), (0, _defineProperty2.default)(_classNames, classes.alignItemsFlexStart, alignItems === 'flex-start'), (0, _defineProperty2.default)(_classNames, classes.secondaryAction, hasSecondaryAction), (0, _defineProperty2.default)(_classNames, classes.selected, selected), _classNames), classNameProp); + var componentProps = (0, _extends2.default)({ + className: className, + disabled: disabled + }, other); + var Component = componentProp || 'li'; + + if (button) { + componentProps.component = componentProp || 'div'; + componentProps.focusVisibleClassName = (0, _classnames.default)(classes.focusVisible, focusVisibleClassName); + Component = _ButtonBase.default; + } + + if (hasSecondaryAction) { + // Use div by default. + Component = !componentProps.component && !componentProp ? 'div' : Component; // Avoid nesting of li > li. + + if (ContainerComponent === 'li') { + if (Component === 'li') { + Component = 'div'; + } else if (componentProps.component === 'li') { + componentProps.component = 'div'; + } + } + + return _react.default.createElement(ContainerComponent, (0, _extends2.default)({ + className: (0, _classnames.default)(classes.container, ContainerClassName) + }, ContainerProps), _react.default.createElement(Component, componentProps, children), children.pop()); + } + + return _react.default.createElement(Component, componentProps, children); + }); +} + + true ? ListItem.propTypes = { + /** + * Defines the `align-items` style property. + */ + alignItems: _propTypes.default.oneOf(['flex-start', 'center']), + + /** + * If `true`, the list item will be a button (using `ButtonBase`). + */ + button: _propTypes.default.bool, + + /** + * The content of the component. If a `ListItemSecondaryAction` is used it must + * be the last child. + */ + children: (0, _utils.chainPropTypes)(_propTypes.default.node, function (props) { + var children = _react.default.Children.toArray(props.children); // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction) + + + var secondaryActionIndex = -1; + + for (var i = children.length - 1; i >= 0; i -= 1) { + var child = children[i]; + + if ((0, _reactHelpers.isMuiElement)(child, ['ListItemSecondaryAction'])) { + secondaryActionIndex = i; + break; + } + } // is ListItemSecondaryAction the last child of ListItem + + + if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) { + return new Error('Material-UI: you used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + "you must pass it has the last children to ListItem.".concat( false ? undefined : '')); + } + + return null; + }), + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * The component used for the root node. + * Either a string to use a DOM element or a component. + * By default, it's a `li` when `button` is `false` and a `div` when `button` is `true`. + */ + component: _utils.componentPropType, + + /** + * The container component used when a `ListItemSecondaryAction` is the last child. + */ + ContainerComponent: _utils.componentPropType, + + /** + * Properties applied to the container component if used. + */ + ContainerProps: _propTypes.default.object, + + /** + * If `true`, compact vertical padding designed for keyboard and mouse input will be used. + */ + dense: _propTypes.default.bool, + + /** + * If `true`, the list item will be disabled. + */ + disabled: _propTypes.default.bool, + + /** + * If `true`, the left and right padding is removed. + */ + disableGutters: _propTypes.default.bool, + + /** + * If `true`, a 1px light border is added to the bottom of the list item. + */ + divider: _propTypes.default.bool, + + /** + * @ignore + */ + focusVisibleClassName: _propTypes.default.string, + + /** + * Use to apply selected styling. + */ + selected: _propTypes.default.bool +} : undefined; +ListItem.defaultProps = { + alignItems: 'center', + button: false, + ContainerComponent: 'li', + dense: false, + disabled: false, + disableGutters: false, + divider: false, + selected: false +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiListItem' +})(ListItem); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ListItem/MergeListContext.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@material-ui/core/ListItem/MergeListContext.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _ListContext = _interopRequireDefault(__webpack_require__(/*! ../List/ListContext */ "./node_modules/@material-ui/core/List/ListContext.js")); + +/** + * @ignore - internal component. + * + * Consumes a context and passes that context merged with its props. + */ +function MergeListContext(props) { + var alignItems = props.alignItems, + children = props.children, + dense = props.dense; + return _react.default.createElement(_ListContext.default.Consumer, null, function (context) { + var childContext = { + dense: dense || context.dense || false, + alignItems: alignItems + }; + return _react.default.createElement(_ListContext.default.Provider, { + value: childContext + }, children(childContext)); + }); +} + + true ? MergeListContext.propTypes = { + alignItems: _propTypes.default.oneOf(['flex-start', 'center']).isRequired, + children: _propTypes.default.func.isRequired, + dense: _propTypes.default.bool.isRequired +} : undefined; +var _default = MergeListContext; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/ListItem/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@material-ui/core/ListItem/index.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _ListItem.default; + } +}); + +var _ListItem = _interopRequireDefault(__webpack_require__(/*! ./ListItem */ "./node_modules/@material-ui/core/ListItem/ListItem.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Menu/Menu.js": +/*!*****************************************************!*\ + !*** ./node_modules/@material-ui/core/Menu/Menu.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js")); + +var _scrollbarSize = _interopRequireDefault(__webpack_require__(/*! dom-helpers/util/scrollbarSize */ "./node_modules/dom-helpers/util/scrollbarSize.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _Popover = _interopRequireDefault(__webpack_require__(/*! ../Popover */ "./node_modules/@material-ui/core/Popover/index.js")); + +var _MenuList = _interopRequireDefault(__webpack_require__(/*! ../MenuList */ "./node_modules/@material-ui/core/MenuList/index.js")); + +// @inheritedComponent Popover +var RTL_ORIGIN = { + vertical: 'top', + horizontal: 'right' +}; +var LTR_ORIGIN = { + vertical: 'top', + horizontal: 'left' +}; +var styles = { + /* Styles applied to the `Paper` component. */ + paper: { + // specZ: The maximum height of a simple menu should be one or more rows less than the view + // height. This ensures a tapable area outside of the simple menu with which to dismiss + // the menu. + maxHeight: 'calc(100% - 96px)', + // Add iOS momentum scrolling. + WebkitOverflowScrolling: 'touch' + } +}; +exports.styles = styles; + +var Menu = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(Menu, _React$Component); + + function Menu() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, Menu); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Menu)).call.apply(_getPrototypeOf2, [this].concat(args))); + + _this.getContentAnchorEl = function () { + if (_this.menuListRef.selectedItemRef) { + return _reactDom.default.findDOMNode(_this.menuListRef.selectedItemRef); + } + + return _reactDom.default.findDOMNode(_this.menuListRef).firstChild; + }; + + _this.focus = function () { + if (_this.menuListRef && _this.menuListRef.selectedItemRef) { + _reactDom.default.findDOMNode(_this.menuListRef.selectedItemRef).focus(); + + return; + } + + var menuList = _reactDom.default.findDOMNode(_this.menuListRef); + + if (menuList && menuList.firstChild) { + menuList.firstChild.focus(); + } + }; + + _this.handleMenuListRef = function (ref) { + _this.menuListRef = ref; + }; + + _this.handleEntering = function (element) { + var _this$props = _this.props, + disableAutoFocusItem = _this$props.disableAutoFocusItem, + theme = _this$props.theme; + + var menuList = _reactDom.default.findDOMNode(_this.menuListRef); // Focus so the scroll computation of the Popover works as expected. + + + if (disableAutoFocusItem !== true) { + _this.focus(); + } // Let's ignore that piece of logic if users are already overriding the width + // of the menu. + + + if (menuList && element.clientHeight < menuList.clientHeight && !menuList.style.width) { + var size = "".concat((0, _scrollbarSize.default)(), "px"); + menuList.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = size; + menuList.style.width = "calc(100% + ".concat(size, ")"); + } + + if (_this.props.onEntering) { + _this.props.onEntering(element); + } + }; + + _this.handleListKeyDown = function (event) { + if (event.key === 'Tab') { + event.preventDefault(); + + if (_this.props.onClose) { + _this.props.onClose(event, 'tabKeyDown'); + } + } + }; + + return _this; + } + + (0, _createClass2.default)(Menu, [{ + key: "componentDidMount", + value: function componentDidMount() { + if (this.props.open && this.props.disableAutoFocusItem !== true) { + this.focus(); + } + } + }, { + key: "render", + value: function render() { + var _this$props2 = this.props, + children = _this$props2.children, + classes = _this$props2.classes, + disableAutoFocusItem = _this$props2.disableAutoFocusItem, + MenuListProps = _this$props2.MenuListProps, + onEntering = _this$props2.onEntering, + _this$props2$PaperPro = _this$props2.PaperProps, + PaperProps = _this$props2$PaperPro === void 0 ? {} : _this$props2$PaperPro, + PopoverClasses = _this$props2.PopoverClasses, + theme = _this$props2.theme, + other = (0, _objectWithoutProperties2.default)(_this$props2, ["children", "classes", "disableAutoFocusItem", "MenuListProps", "onEntering", "PaperProps", "PopoverClasses", "theme"]); + return _react.default.createElement(_Popover.default, (0, _extends2.default)({ + getContentAnchorEl: this.getContentAnchorEl, + classes: PopoverClasses, + onEntering: this.handleEntering, + anchorOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN, + transformOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN, + PaperProps: (0, _extends2.default)({}, PaperProps, { + classes: (0, _extends2.default)({}, PaperProps.classes, { + root: classes.paper + }) + }) + }, other), _react.default.createElement(_MenuList.default, (0, _extends2.default)({ + onKeyDown: this.handleListKeyDown + }, MenuListProps, { + ref: this.handleMenuListRef + }), children)); + } + }]); + return Menu; +}(_react.default.Component); + + true ? Menu.propTypes = { + /** + * The DOM element used to set the position of the menu. + */ + anchorEl: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]), + + /** + * Menu contents, normally `MenuItem`s. + */ + children: _propTypes.default.node, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * If `true`, the selected / first menu item will not be auto focused. + */ + disableAutoFocusItem: _propTypes.default.bool, + + /** + * Properties applied to the [`MenuList`](/api/menu-list/) element. + */ + MenuListProps: _propTypes.default.object, + + /** + * Callback fired when the component requests to be closed. + * + * @param {object} event The event source of the callback + * @param {string} reason Can be:`"escapeKeyDown"`, `"backdropClick"`, `"tabKeyDown"` + */ + onClose: _propTypes.default.func, + + /** + * Callback fired before the Menu enters. + */ + onEnter: _propTypes.default.func, + + /** + * Callback fired when the Menu has entered. + */ + onEntered: _propTypes.default.func, + + /** + * Callback fired when the Menu is entering. + */ + onEntering: _propTypes.default.func, + + /** + * Callback fired before the Menu exits. + */ + onExit: _propTypes.default.func, + + /** + * Callback fired when the Menu has exited. + */ + onExited: _propTypes.default.func, + + /** + * Callback fired when the Menu is exiting. + */ + onExiting: _propTypes.default.func, + + /** + * If `true`, the menu is visible. + */ + open: _propTypes.default.bool.isRequired, + + /** + * @ignore + */ + PaperProps: _propTypes.default.object, + + /** + * `classes` property applied to the [`Popover`](/api/popover/) element. + */ + PopoverClasses: _propTypes.default.object, + + /** + * @ignore + */ + theme: _propTypes.default.object.isRequired, + + /** + * The length of the transition in `ms`, or 'auto' + */ + transitionDuration: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({ + enter: _propTypes.default.number, + exit: _propTypes.default.number + }), _propTypes.default.oneOf(['auto'])]) +} : undefined; +Menu.defaultProps = { + disableAutoFocusItem: false, + transitionDuration: 'auto' +}; + +var _default = (0, _withStyles.default)(styles, { + name: 'MuiMenu', + withTheme: true +})(Menu); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/MenuList/MenuList.js": +/*!*************************************************************!*\ + !*** ./node_modules/@material-ui/core/MenuList/MenuList.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js")); + +var _warning = _interopRequireDefault(__webpack_require__(/*! warning */ "./node_modules/warning/warning.js")); + +var _ownerDocument = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerDocument */ "./node_modules/@material-ui/core/utils/ownerDocument.js")); + +var _List = _interopRequireDefault(__webpack_require__(/*! ../List */ "./node_modules/@material-ui/core/List/index.js")); + +// @inheritedComponent List +var MenuList = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(MenuList, _React$Component); + + function MenuList() { + var _getPrototypeOf2; + + var _this; + + (0, _classCallCheck2.default)(this, MenuList); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(MenuList)).call.apply(_getPrototypeOf2, [this].concat(args))); + _this.state = { + currentTabIndex: null + }; + + _this.handleBlur = function (event) { + _this.blurTimer = setTimeout(function () { + if (_this.listRef) { + var list = _this.listRef; + var currentFocus = (0, _ownerDocument.default)(list).activeElement; + + if (!list.contains(currentFocus)) { + _this.resetTabIndex(); + } + } + }, 30); + + if (_this.props.onBlur) { + _this.props.onBlur(event); + } + }; + + _this.handleKeyDown = function (event) { + var list = _this.listRef; + var key = event.key; + var currentFocus = (0, _ownerDocument.default)(list).activeElement; + + if ((key === 'ArrowUp' || key === 'ArrowDown') && (!currentFocus || currentFocus && !list.contains(currentFocus))) { + if (_this.selectedItemRef) { + _this.selectedItemRef.focus(); + } else { + list.firstChild.focus(); + } + } else if (key === 'ArrowDown') { + event.preventDefault(); + + if (currentFocus.nextElementSibling) { + currentFocus.nextElementSibling.focus(); + } else if (!_this.props.disableListWrap) { + list.firstChild.focus(); + } + } else if (key === 'ArrowUp') { + event.preventDefault(); + + if (currentFocus.previousElementSibling) { + currentFocus.previousElementSibling.focus(); + } else if (!_this.props.disableListWrap) { + list.lastChild.focus(); + } + } else if (key === 'Home') { + event.preventDefault(); + list.firstChild.focus(); + } else if (key === 'End') { + event.preventDefault(); + list.lastChild.focus(); + } + + if (_this.props.onKeyDown) { + _this.props.onKeyDown(event); + } + }; + + _this.handleItemFocus = function (event) { + var list = _this.listRef; + + if (list) { + for (var i = 0; i < list.children.length; i += 1) { + if (list.children[i] === event.currentTarget) { + _this.setTabIndex(i); + + break; + } + } + } + }; + + return _this; + } + + (0, _createClass2.default)(MenuList, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.resetTabIndex(); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + clearTimeout(this.blurTimer); + } + }, { + key: "setTabIndex", + value: function setTabIndex(index) { + this.setState({ + currentTabIndex: index + }); + } + }, { + key: "focus", + value: function focus() { + var currentTabIndex = this.state.currentTabIndex; + var list = this.listRef; + + if (!list || !list.children || !list.firstChild) { + return; + } + + if (currentTabIndex && currentTabIndex >= 0) { + list.children[currentTabIndex].focus(); + } else { + list.firstChild.focus(); + } + } + }, { + key: "resetTabIndex", + value: function resetTabIndex() { + var list = this.listRef; + var currentFocus = (0, _ownerDocument.default)(list).activeElement; + var items = []; + + for (var i = 0; i < list.children.length; i += 1) { + items.push(list.children[i]); + } + + var currentFocusIndex = items.indexOf(currentFocus); + + if (currentFocusIndex !== -1) { + return this.setTabIndex(currentFocusIndex); + } + + if (this.selectedItemRef) { + return this.setTabIndex(items.indexOf(this.selectedItemRef)); + } + + return this.setTabIndex(0); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _this$props = this.props, + children = _this$props.children, + className = _this$props.className, + onBlur = _this$props.onBlur, + onKeyDown = _this$props.onKeyDown, + disableListWrap = _this$props.disableListWrap, + other = (0, _objectWithoutProperties2.default)(_this$props, ["children", "className", "onBlur", "onKeyDown", "disableListWrap"]); + return _react.default.createElement(_List.default, (0, _extends2.default)({ + role: "menu", + ref: function ref(_ref) { + _this2.listRef = _reactDom.default.findDOMNode(_ref); + }, + className: className, + onKeyDown: this.handleKeyDown, + onBlur: this.handleBlur + }, other), _react.default.Children.map(children, function (child, index) { + if (!_react.default.isValidElement(child)) { + return null; + } + + true ? (0, _warning.default)(child.type !== _react.default.Fragment, ["Material-UI: the MenuList component doesn't accept a Fragment as a child.", 'Consider providing an array instead.'].join('\n')) : undefined; + return _react.default.cloneElement(child, { + tabIndex: index === _this2.state.currentTabIndex ? 0 : -1, + ref: child.props.selected ? function (ref) { + _this2.selectedItemRef = _reactDom.default.findDOMNode(ref); + } : undefined, + onFocus: _this2.handleItemFocus + }); + })); + } + }]); + return MenuList; +}(_react.default.Component); + + true ? MenuList.propTypes = { + /** + * MenuList contents, normally `MenuItem`s. + */ + children: _propTypes.default.node, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * If `true`, the menu items will not wrap focus. + */ + disableListWrap: _propTypes.default.bool, + + /** + * @ignore + */ + onBlur: _propTypes.default.func, + + /** + * @ignore + */ + onKeyDown: _propTypes.default.func +} : undefined; +MenuList.defaultProps = { + disableListWrap: false +}; +var _default = MenuList; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/MenuList/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@material-ui/core/MenuList/index.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _MenuList.default; + } +}); + +var _MenuList = _interopRequireDefault(__webpack_require__(/*! ./MenuList */ "./node_modules/@material-ui/core/MenuList/MenuList.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Modal/Modal.js": +/*!*******************************************************!*\ + !*** ./node_modules/@material-ui/core/Modal/Modal.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); + +var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js")); + +var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "./node_modules/@babel/runtime/helpers/inherits.js")); + +var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _reactDom = _interopRequireDefault(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "./node_modules/classnames/index.js")); + +var _warning = _interopRequireDefault(__webpack_require__(/*! warning */ "./node_modules/warning/warning.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _ownerDocument = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerDocument */ "./node_modules/@material-ui/core/utils/ownerDocument.js")); + +var _RootRef = _interopRequireDefault(__webpack_require__(/*! ../RootRef */ "./node_modules/@material-ui/core/RootRef/index.js")); + +var _Portal = _interopRequireDefault(__webpack_require__(/*! ../Portal */ "./node_modules/@material-ui/core/Portal/index.js")); + +var _helpers = __webpack_require__(/*! ../utils/helpers */ "./node_modules/@material-ui/core/utils/helpers.js"); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _ModalManager = _interopRequireDefault(__webpack_require__(/*! ./ModalManager */ "./node_modules/@material-ui/core/Modal/ModalManager.js")); + +var _Backdrop = _interopRequireDefault(__webpack_require__(/*! ../Backdrop */ "./node_modules/@material-ui/core/Backdrop/index.js")); + +var _manageAriaHidden = __webpack_require__(/*! ./manageAriaHidden */ "./node_modules/@material-ui/core/Modal/manageAriaHidden.js"); + +function getContainer(container, defaultContainer) { + container = typeof container === 'function' ? container() : container; + return _reactDom.default.findDOMNode(container) || defaultContainer; +} + +function getHasTransition(props) { + return props.children ? props.children.props.hasOwnProperty('in') : false; +} + +var styles = function styles(theme) { + return { + /* Styles applied to the root element. */ + root: { + position: 'fixed', + zIndex: theme.zIndex.modal, + right: 0, + bottom: 0, + top: 0, + left: 0 + }, + + /* Styles applied to the root element if the `Modal` has exited. */ + hidden: { + visibility: 'hidden' + } + }; +}; +/* istanbul ignore if */ + + +exports.styles = styles; + +if ( true && !_react.default.createContext) { + throw new Error('Material-UI: react@16.3.0 or greater is required.'); +} +/** + * Modal is a lower-level construct that is leveraged by the following components: + * + * - [Dialog](/api/dialog/) + * - [Drawer](/api/drawer/) + * - [Menu](/api/menu/) + * - [Popover](/api/popover/) + * + * If you are creating a modal dialog, you probably want to use the [Dialog](/api/dialog/) component + * rather than directly using Modal. + * + * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals). + */ + + +var Modal = +/*#__PURE__*/ +function (_React$Component) { + (0, _inherits2.default)(Modal, _React$Component); + + function Modal(props) { + var _this; + + (0, _classCallCheck2.default)(this, Modal); + _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Modal).call(this)); + _this.mounted = false; + + _this.handleOpen = function () { + var doc = (0, _ownerDocument.default)(_this.mountNode); + var container = getContainer(_this.props.container, doc.body); + + _this.props.manager.add((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), container); + + doc.addEventListener('focus', _this.enforceFocus, true); + + if (_this.dialogRef) { + _this.handleOpened(); + } + }; + + _this.handleRendered = function () { + if (_this.props.onRendered) { + _this.props.onRendered(); + } + + if (_this.props.open) { + _this.handleOpened(); + } else { + (0, _manageAriaHidden.ariaHidden)(_this.modalRef, true); + } + }; + + _this.handleOpened = function () { + _this.autoFocus(); + + _this.props.manager.mount((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); // Fix a bug on Chrome where the scroll isn't initially 0. + + + _this.modalRef.scrollTop = 0; + }; + + _this.handleClose = function (reason) { + var hasTransition = getHasTransition(_this.props); + /* If the component does not have a transition or is unmounting remove the Modal + otherwise let the transition handle removing the style, this prevents elements + moving around when the Modal is closed. */ + + if (!(hasTransition && _this.props.closeAfterTransition) || reason === 'unmount') { + _this.props.manager.remove((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); + } + + var doc = (0, _ownerDocument.default)(_this.mountNode); + doc.removeEventListener('focus', _this.enforceFocus, true); + + _this.restoreLastFocus(); + }; + + _this.handleExited = function () { + if (_this.props.closeAfterTransition) { + _this.props.manager.remove((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); + } + + _this.setState({ + exited: true + }); + }; + + _this.handleBackdropClick = function (event) { + if (event.target !== event.currentTarget) { + return; + } + + if (_this.props.onBackdropClick) { + _this.props.onBackdropClick(event); + } + + if (!_this.props.disableBackdropClick && _this.props.onClose) { + _this.props.onClose(event, 'backdropClick'); + } + }; + + _this.handleKeyDown = function (event) { + // event.defaultPrevented: + // + // Ignore events that have been `event.preventDefault()` marked. + // preventDefault() is meant to stop default behaviours like + // clicking a checkbox to check it, hitting a button to submit a form, + // and hitting left arrow to move the cursor in a text input etc. + // Only special HTML elements have these default bahaviours. + // + // To remove in v4. + if (event.key !== 'Escape' || !_this.isTopModal() || event.defaultPrevented) { + return; + } // Swallow the event, in case someone is listening for the escape key on the body. + + + event.stopPropagation(); + + if (_this.props.onEscapeKeyDown) { + _this.props.onEscapeKeyDown(event); + } + + if (!_this.props.disableEscapeKeyDown && _this.props.onClose) { + _this.props.onClose(event, 'escapeKeyDown'); + } + }; + + _this.enforceFocus = function () { + // The Modal might not already be mounted. + if (!_this.isTopModal() || _this.props.disableEnforceFocus || !_this.mounted || !_this.dialogRef) { + return; + } + + var currentActiveElement = (0, _ownerDocument.default)(_this.mountNode).activeElement; + + if (!_this.dialogRef.contains(currentActiveElement)) { + _this.dialogRef.focus(); + } + }; + + _this.handlePortalRef = function (ref) { + _this.mountNode = ref ? ref.getMountNode() : ref; + }; + + _this.handleModalRef = function (ref) { + _this.modalRef = ref; + }; + + _this.onRootRef = function (ref) { + _this.dialogRef = ref; + }; + + _this.state = { + exited: !props.open + }; + return _this; + } + + (0, _createClass2.default)(Modal, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.mounted = true; + + if (this.props.open) { + this.handleOpen(); + } + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.open && !this.props.open) { + this.handleClose(); + } else if (!prevProps.open && this.props.open) { + this.lastFocus = (0, _ownerDocument.default)(this.mountNode).activeElement; + this.handleOpen(); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.mounted = false; + + if (this.props.open || getHasTransition(this.props) && !this.state.exited) { + this.handleClose('unmount'); + } + } + }, { + key: "autoFocus", + value: function autoFocus() { + // We might render an empty child. + if (this.props.disableAutoFocus || !this.dialogRef) { + return; + } + + var currentActiveElement = (0, _ownerDocument.default)(this.mountNode).activeElement; + + if (!this.dialogRef.contains(currentActiveElement)) { + if (!this.dialogRef.hasAttribute('tabIndex')) { + true ? (0, _warning.default)(false, ['Material-UI: the modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to "-1".'].join('\n')) : undefined; + this.dialogRef.setAttribute('tabIndex', -1); + } + + this.lastFocus = currentActiveElement; + this.dialogRef.focus(); + } + } + }, { + key: "restoreLastFocus", + value: function restoreLastFocus() { + if (this.props.disableRestoreFocus || !this.lastFocus) { + return; + } // Not all elements in IE 11 have a focus method. + // Because IE 11 market share is low, we accept the restore focus being broken + // and we silent the issue. + + + if (this.lastFocus.focus) { + this.lastFocus.focus(); + } + + this.lastFocus = null; + } + }, { + key: "isTopModal", + value: function isTopModal() { + return this.props.manager.isTopModal(this); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + BackdropComponent = _this$props.BackdropComponent, + BackdropProps = _this$props.BackdropProps, + children = _this$props.children, + classes = _this$props.classes, + className = _this$props.className, + closeAfterTransition = _this$props.closeAfterTransition, + container = _this$props.container, + disableAutoFocus = _this$props.disableAutoFocus, + disableBackdropClick = _this$props.disableBackdropClick, + disableEnforceFocus = _this$props.disableEnforceFocus, + disableEscapeKeyDown = _this$props.disableEscapeKeyDown, + disablePortal = _this$props.disablePortal, + disableRestoreFocus = _this$props.disableRestoreFocus, + hideBackdrop = _this$props.hideBackdrop, + keepMounted = _this$props.keepMounted, + manager = _this$props.manager, + onBackdropClick = _this$props.onBackdropClick, + onClose = _this$props.onClose, + onEscapeKeyDown = _this$props.onEscapeKeyDown, + onRendered = _this$props.onRendered, + open = _this$props.open, + other = (0, _objectWithoutProperties2.default)(_this$props, ["BackdropComponent", "BackdropProps", "children", "classes", "className", "closeAfterTransition", "container", "disableAutoFocus", "disableBackdropClick", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "hideBackdrop", "keepMounted", "manager", "onBackdropClick", "onClose", "onEscapeKeyDown", "onRendered", "open"]); + var exited = this.state.exited; + var hasTransition = getHasTransition(this.props); + + if (!keepMounted && !open && (!hasTransition || exited)) { + return null; + } + + var childProps = {}; // It's a Transition like component + + if (hasTransition) { + childProps.onExited = (0, _helpers.createChainedFunction)(this.handleExited, children.props.onExited); + } + + if (children.props.role === undefined) { + childProps.role = children.props.role || 'document'; + } + + if (children.props.tabIndex === undefined) { + childProps.tabIndex = children.props.tabIndex || '-1'; + } + + return _react.default.createElement(_Portal.default, { + ref: this.handlePortalRef, + container: container, + disablePortal: disablePortal, + onRendered: this.handleRendered + }, _react.default.createElement("div", (0, _extends2.default)({ + ref: this.handleModalRef, + onKeyDown: this.handleKeyDown, + role: "presentation", + className: (0, _classnames.default)(classes.root, className, (0, _defineProperty2.default)({}, classes.hidden, exited)) + }, other), hideBackdrop ? null : _react.default.createElement(BackdropComponent, (0, _extends2.default)({ + open: open, + onClick: this.handleBackdropClick + }, BackdropProps)), _react.default.createElement(_RootRef.default, { + rootRef: this.onRootRef + }, _react.default.cloneElement(children, childProps)))); + } + }], [{ + key: "getDerivedStateFromProps", + value: function getDerivedStateFromProps(nextProps) { + if (nextProps.open) { + return { + exited: false + }; + } + + if (!getHasTransition(nextProps)) { + // Otherwise let handleExited take care of marking exited. + return { + exited: true + }; + } + + return null; + } + }]); + return Modal; +}(_react.default.Component); + + true ? Modal.propTypes = { + /** + * A backdrop component. This property enables custom backdrop rendering. + */ + BackdropComponent: _utils.componentPropType, + + /** + * Properties applied to the [`Backdrop`](/api/backdrop/) element. + */ + BackdropProps: _propTypes.default.object, + + /** + * A single child content element. + */ + children: _propTypes.default.element, + + /** + * Override or extend the styles applied to the component. + * See [CSS API](#css-api) below for more details. + */ + classes: _propTypes.default.object.isRequired, + + /** + * @ignore + */ + className: _propTypes.default.string, + + /** + * When set to true the Modal waits until a nested Transition is completed before closing. + */ + closeAfterTransition: _propTypes.default.bool, + + /** + * A node, component instance, or function that returns either. + * The `container` will have the portal children appended to it. + */ + container: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func]), + + /** + * If `true`, the modal will not 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 `disableAutoFocus` prop. + * + * Generally this should never be set to `true` as it makes the modal less + * accessible to assistive technologies, like screen readers. + */ + disableAutoFocus: _propTypes.default.bool, + + /** + * If `true`, clicking the backdrop will not fire any callback. + */ + disableBackdropClick: _propTypes.default.bool, + + /** + * If `true`, the modal will not prevent focus from leaving the modal while open. + * + * Generally this should never be set to `true` as it makes the modal less + * accessible to assistive technologies, like screen readers. + */ + disableEnforceFocus: _propTypes.default.bool, + + /** + * If `true`, hitting escape will not fire any callback. + */ + disableEscapeKeyDown: _propTypes.default.bool, + + /** + * Disable the portal behavior. + * The children stay within it's parent DOM hierarchy. + */ + disablePortal: _propTypes.default.bool, + + /** + * If `true`, the modal will not restore focus to previously focused element once + * modal is hidden. + */ + disableRestoreFocus: _propTypes.default.bool, + + /** + * If `true`, the backdrop is not rendered. + */ + hideBackdrop: _propTypes.default.bool, + + /** + * Always keep the children in the DOM. + * This property can be useful in SEO situation or + * when you want to maximize the responsiveness of the Modal. + */ + keepMounted: _propTypes.default.bool, + + /** + * @ignore + * + * A modal manager used to track and manage the state of open + * Modals. This enables customizing how modals interact within a container. + */ + manager: _propTypes.default.object, + + /** + * Callback fired when the backdrop is clicked. + */ + onBackdropClick: _propTypes.default.func, + + /** + * Callback fired when the component requests to be closed. + * The `reason` parameter can optionally be used to control the response to `onClose`. + * + * @param {object} event The event source of the callback + * @param {string} reason Can be:`"escapeKeyDown"`, `"backdropClick"` + */ + onClose: _propTypes.default.func, + + /** + * Callback fired when the escape key is pressed, + * `disableEscapeKeyDown` is false and the modal is in focus. + */ + onEscapeKeyDown: _propTypes.default.func, + + /** + * Callback fired once the children has been mounted into the `container`. + * It signals that the `open={true}` property took effect. + */ + onRendered: _propTypes.default.func, + + /** + * If `true`, the modal is open. + */ + open: _propTypes.default.bool.isRequired +} : undefined; +Modal.defaultProps = { + BackdropComponent: _Backdrop.default, + closeAfterTransition: false, + disableAutoFocus: false, + disableBackdropClick: false, + disableEnforceFocus: false, + disableEscapeKeyDown: false, + disablePortal: false, + disableRestoreFocus: false, + hideBackdrop: false, + keepMounted: false, + // Modals don't open on the server so this won't conflict with concurrent requests. + manager: new _ModalManager.default() +}; + +var _default = (0, _withStyles.default)(styles, { + flip: false, + name: 'MuiModal' +})(Modal); + +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Modal/ModalManager.js": +/*!**************************************************************!*\ + !*** ./node_modules/@material-ui/core/Modal/ModalManager.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "./node_modules/@babel/runtime/helpers/classCallCheck.js")); + +var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "./node_modules/@babel/runtime/helpers/createClass.js")); + +var _style = _interopRequireDefault(__webpack_require__(/*! dom-helpers/style */ "./node_modules/dom-helpers/style/index.js")); + +var _scrollbarSize = _interopRequireDefault(__webpack_require__(/*! dom-helpers/util/scrollbarSize */ "./node_modules/dom-helpers/util/scrollbarSize.js")); + +var _ownerDocument = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerDocument */ "./node_modules/@material-ui/core/utils/ownerDocument.js")); + +var _isOverflowing = _interopRequireDefault(__webpack_require__(/*! ./isOverflowing */ "./node_modules/@material-ui/core/Modal/isOverflowing.js")); + +var _manageAriaHidden = __webpack_require__(/*! ./manageAriaHidden */ "./node_modules/@material-ui/core/Modal/manageAriaHidden.js"); + +function findIndexOf(data, callback) { + var idx = -1; + data.some(function (item, index) { + if (callback(item)) { + idx = index; + return true; + } + + return false; + }); + return idx; +} + +function getPaddingRight(node) { + return parseInt((0, _style.default)(node, 'paddingRight') || 0, 10); +} + +function setContainerStyle(data) { + // We are only interested in the actual `style` here because we will override it. + data.style = { + overflow: data.container.style.overflow, + paddingRight: data.container.style.paddingRight + }; + var style = { + overflow: 'hidden' + }; + + if (data.overflowing) { + var scrollbarSize = (0, _scrollbarSize.default)(); // Use computed style, here to get the real padding to add our scrollbar width. + + style.paddingRight = "".concat(getPaddingRight(data.container) + scrollbarSize, "px"); // .mui-fixed is a global helper. + + var fixedNodes = (0, _ownerDocument.default)(data.container).querySelectorAll('.mui-fixed'); + + for (var i = 0; i < fixedNodes.length; i += 1) { + var paddingRight = getPaddingRight(fixedNodes[i]); + data.prevPaddings.push(paddingRight); + fixedNodes[i].style.paddingRight = "".concat(paddingRight + scrollbarSize, "px"); + } + } + + Object.keys(style).forEach(function (key) { + data.container.style[key] = style[key]; + }); +} + +function removeContainerStyle(data) { + // The modal might be closed before it had the chance to be mounted in the DOM. + if (data.style) { + Object.keys(data.style).forEach(function (key) { + data.container.style[key] = data.style[key]; + }); + } + + var fixedNodes = (0, _ownerDocument.default)(data.container).querySelectorAll('.mui-fixed'); + + for (var i = 0; i < fixedNodes.length; i += 1) { + fixedNodes[i].style.paddingRight = "".concat(data.prevPaddings[i], "px"); + } +} +/** + * @ignore - do not document. + * + * Proper state management for containers and the modals in those containers. + * Simplified, but inspired by react-overlay's ModalManager class. + * Used by the Modal to ensure proper styling of containers. + */ + + +var ModalManager = +/*#__PURE__*/ +function () { + function ModalManager() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + (0, _classCallCheck2.default)(this, ModalManager); + var _options$hideSiblingN = options.hideSiblingNodes, + hideSiblingNodes = _options$hideSiblingN === void 0 ? true : _options$hideSiblingN, + _options$handleContai = options.handleContainerOverflow, + handleContainerOverflow = _options$handleContai === void 0 ? true : _options$handleContai; + this.hideSiblingNodes = hideSiblingNodes; + this.handleContainerOverflow = handleContainerOverflow; // this.modals[modalIdx] = modal + + this.modals = []; // this.data[containerIdx] = { + // modals: [], + // container, + // overflowing, + // prevPaddings, + // } + + this.data = []; + } + + (0, _createClass2.default)(ModalManager, [{ + key: "add", + value: function add(modal, container) { + var modalIdx = this.modals.indexOf(modal); + + if (modalIdx !== -1) { + return modalIdx; + } + + modalIdx = this.modals.length; + this.modals.push(modal); // If the modal we are adding is already in the DOM. + + if (modal.modalRef) { + (0, _manageAriaHidden.ariaHidden)(modal.modalRef, false); + } + + if (this.hideSiblingNodes) { + (0, _manageAriaHidden.ariaHiddenSiblings)(container, modal.mountNode, modal.modalRef, true); + } + + var containerIdx = findIndexOf(this.data, function (item) { + return item.container === container; + }); + + if (containerIdx !== -1) { + this.data[containerIdx].modals.push(modal); + return modalIdx; + } + + var data = { + modals: [modal], + container: container, + overflowing: (0, _isOverflowing.default)(container), + prevPaddings: [] + }; + this.data.push(data); + return modalIdx; + } + }, { + key: "mount", + value: function mount(modal) { + var containerIdx = findIndexOf(this.data, function (item) { + return item.modals.indexOf(modal) !== -1; + }); + var data = this.data[containerIdx]; + + if (!data.style && this.handleContainerOverflow) { + setContainerStyle(data); + } + } + }, { + key: "remove", + value: function remove(modal) { + var modalIdx = this.modals.indexOf(modal); + + if (modalIdx === -1) { + return modalIdx; + } + + var containerIdx = findIndexOf(this.data, function (item) { + return item.modals.indexOf(modal) !== -1; + }); + var data = this.data[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) { + if (this.handleContainerOverflow) { + removeContainerStyle(data); + } // In case the modal wasn't in the DOM yet. + + + if (modal.modalRef) { + (0, _manageAriaHidden.ariaHidden)(modal.modalRef, true); + } + + if (this.hideSiblingNodes) { + (0, _manageAriaHidden.ariaHiddenSiblings)(data.container, modal.mountNode, modal.modalRef, false); + } + + this.data.splice(containerIdx, 1); + } else if (this.hideSiblingNodes) { + // Otherwise make sure the next top modal is visible to a screen reader. + var nextTop = data.modals[data.modals.length - 1]; // as soon as a modal is adding its modalRef is undefined. it can't set + // aria-hidden because the dom element doesn't exist either + // when modal was unmounted before modalRef gets null + + if (nextTop.modalRef) { + (0, _manageAriaHidden.ariaHidden)(nextTop.modalRef, false); + } + } + + return modalIdx; + } + }, { + key: "isTopModal", + value: function isTopModal(modal) { + return !!this.modals.length && this.modals[this.modals.length - 1] === modal; + } + }]); + return ModalManager; +}(); + +var _default = ModalManager; +exports.default = _default; + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Modal/index.js": +/*!*******************************************************!*\ + !*** ./node_modules/@material-ui/core/Modal/index.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "default", { + enumerable: true, + get: function get() { + return _Modal.default; + } +}); +Object.defineProperty(exports, "ModalManager", { + enumerable: true, + get: function get() { + return _ModalManager.default; + } +}); + +var _Modal = _interopRequireDefault(__webpack_require__(/*! ./Modal */ "./node_modules/@material-ui/core/Modal/Modal.js")); + +var _ModalManager = _interopRequireDefault(__webpack_require__(/*! ./ModalManager */ "./node_modules/@material-ui/core/Modal/ModalManager.js")); + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Modal/isOverflowing.js": +/*!***************************************************************!*\ + !*** ./node_modules/@material-ui/core/Modal/isOverflowing.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isBody = isBody; +exports.default = isOverflowing; + +var _isWindow = _interopRequireDefault(__webpack_require__(/*! dom-helpers/query/isWindow */ "./node_modules/dom-helpers/query/isWindow.js")); + +var _ownerDocument = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerDocument */ "./node_modules/@material-ui/core/utils/ownerDocument.js")); + +var _ownerWindow = _interopRequireDefault(__webpack_require__(/*! ../utils/ownerWindow */ "./node_modules/@material-ui/core/utils/ownerWindow.js")); + +function isBody(node) { + return node && node.tagName.toLowerCase() === 'body'; +} // Do we have a vertical scroll bar? + + +function isOverflowing(container) { + var doc = (0, _ownerDocument.default)(container); + var win = (0, _ownerWindow.default)(doc); + /* istanbul ignore next */ + + if (!(0, _isWindow.default)(doc) && !isBody(container)) { + return container.scrollHeight > container.clientHeight; + } // Takes in account potential non zero margin on the body. + + + var style = win.getComputedStyle(doc.body); + var marginLeft = parseInt(style.getPropertyValue('margin-left'), 10); + var marginRight = parseInt(style.getPropertyValue('margin-right'), 10); + return marginLeft + doc.body.clientWidth + marginRight < win.innerWidth; +} + +/***/ }), + +/***/ "./node_modules/@material-ui/core/Modal/manageAriaHidden.js": +/*!******************************************************************!*\ + !*** ./node_modules/@material-ui/core/Modal/manageAriaHidden.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ariaHidden = ariaHidden; +exports.ariaHiddenSiblings = ariaHiddenSiblings; +var BLACKLIST = ['template', 'script', 'style']; + +function isHideable(node) { + return node.nodeType === 1 && BLACKLIST.indexOf(node.tagName.toLowerCase()) === -1; +} + +function siblings(container, mount, currentNode, callback) { + var blacklist = [mount, currentNode]; + [].forEach.call(container.children, function (node) { + if (blacklist.indexOf(node) === -1 && isHideable(node)) { + callback(node); + } + }); +} + +function ariaHidden(node, show) { + if (show) { + node.setAttribute('aria-hidden', 'true'); + } else { + node.removeAttribute('aria-hidden'); + } +} + +function ariaHiddenSiblings(container, mountNode, currentNode, show) { + siblings(container, mountNode, currentNode, function (node) { + return ariaHidden(node, show); + }); +} + +/***/ }), + +/***/ "./node_modules/@material-ui/core/NativeSelect/NativeSelect.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@material-ui/core/NativeSelect/NativeSelect.js ***! + \*********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = exports.styles = void 0; + +var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js")); + +var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js")); + +var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js")); + +var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js")); + +var _utils = __webpack_require__(/*! @material-ui/utils */ "./node_modules/@material-ui/utils/index.es.js"); + +var _NativeSelectInput = _interopRequireDefault(__webpack_require__(/*! ./NativeSelectInput */ "./node_modules/@material-ui/core/NativeSelect/NativeSelectInput.js")); + +var _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ "./node_modules/@material-ui/core/styles/withStyles.js")); + +var _formControlState = _interopRequireDefault(__webpack_require__(/*! ../FormControl/formControlState */ "./node_modules/@material-ui/core/FormControl/formControlState.js")); + +var _withFormControlContext = _interopRequireDefault(__webpack_require__(/*! ../FormControl/withFormControlContext */ "./node_modules/@material-ui/core/FormControl/withFormControlContext.js")); + +var _ArrowDropDown = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/ArrowDropDown */ "./node_modules/@material-ui/core/internal/svg-icons/ArrowDropDown.js")); + +var _Input = _interopRequireDefault(__webpack_require__(/*! ../Input */ "./node_modules/@material-ui/core/Input/index.js")); + +// @inheritedComponent Input +var styles = function styles(theme) { + return { + /* Styles applied to the `Input` component `root` class. */ + root: { + position: 'relative', + width: '100%' + }, + + /* Styles applied to the `Input` component `select` class. */ + select: { + '-moz-appearance': 'none', + // Reset + '-webkit-appearance': 'none', + // Reset + // When interacting quickly, the text can end up selected. + // Native select can't be selected either. + userSelect: 'none', + paddingRight: 32, + borderRadius: 0, + // Reset + height: '1.1875em', + // Reset (19px), match the native input line-height + width: 'calc(100% - 32px)', + minWidth: 16, + // So it doesn't collapse. + cursor: 'pointer', + '&:focus': { + // Show that it's not an text input + backgroundColor: theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)', + borderRadius: 0 // Reset Chrome style + + }, + // Remove IE 11 arrow + '&::-ms-expand': { + display: 'none' + }, + '&$disabled': { + cursor: 'default' + }, + '&[multiple]': { + height: 'auto' + }, + '&:not([multiple]) option, &:not([multiple]) optgroup': { + backgroundColor: theme.palette.background.paper + } + }, + + /* Styles applied to the `Input` component if `variant="filled"`. */ + filled: { + width: 'calc(100% - 44px)' + }, + + /* Styles applied to the `Input` component if `variant="outlined"`. */ + outlined: { + width: 'calc(100% - 46px)', + borderRadius: theme.shape.borderRadius + }, + + /* Styles applied to the `Input` component `selectMenu` class. */ + selectMenu: { + width: 'auto', + // Fix Safari textOverflow + height: 'auto', + // Reset + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + overflow: 'hidden', + minHeight: '1.1875em' // Reset (19px), match the native input line-height + + }, + + /* Styles applied to the `Input` component `disabled` class. */ + disabled: {}, + + /* Styles applied to the `Input` component `icon` class. */ + icon: { + // We use a position absolute over a flexbox in order to forward the pointer events + // to the input. + position: 'absolute', + right: 0, + top: 'calc(50% - 12px)', + // Center vertically + color: theme.palette.action.active, + 'pointer-events': 'none' // Don't block pointer events on the select under the icon. + + } + }; +}; +/** + * An alternative to ` host component that allows setting these optional + * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. + * + * If `checked` or `value` are not supplied (or null/undefined), user actions + * that affect the checked state or value will trigger updates to the element. + * + * If they are supplied (and not null/undefined), the rendered element will not + * trigger updates to the element. Instead, the props must change in order for + * the rendered element to be updated. + * + * The rendered element will be initialized as unchecked (or `defaultChecked`) + * with an empty value (or `defaultValue`). + * + * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html + */ + +function getHostProps(element, props) { + var node = element; + var checked = props.checked; + + var hostProps = _assign({}, props, { + defaultChecked: undefined, + defaultValue: undefined, + value: undefined, + checked: checked != null ? checked : node._wrapperState.initialChecked + }); + + return hostProps; +} + +function initWrapperState(element, props) { + { + ReactControlledValuePropTypes.checkPropTypes('input', props); + + if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) { + warning$1(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type); + didWarnCheckedDefaultChecked = true; + } + if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { + warning$1(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type); + didWarnValueDefaultValue = true; + } + } + + var node = element; + var defaultValue = props.defaultValue == null ? '' : props.defaultValue; + + node._wrapperState = { + initialChecked: props.checked != null ? props.checked : props.defaultChecked, + initialValue: getToStringValue(props.value != null ? props.value : defaultValue), + controlled: isControlled(props) + }; +} + +function updateChecked(element, props) { + var node = element; + var checked = props.checked; + if (checked != null) { + setValueForProperty(node, 'checked', checked, false); + } +} + +function updateWrapper(element, props) { + var node = element; + { + var _controlled = isControlled(props); + + if (!node._wrapperState.controlled && _controlled && !didWarnUncontrolledToControlled) { + warning$1(false, 'A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', props.type); + didWarnUncontrolledToControlled = true; + } + if (node._wrapperState.controlled && !_controlled && !didWarnControlledToUncontrolled) { + warning$1(false, 'A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', props.type); + didWarnControlledToUncontrolled = true; + } + } + + updateChecked(element, props); + + var value = getToStringValue(props.value); + var type = props.type; + + if (value != null) { + if (type === 'number') { + if (value === 0 && node.value === '' || + // We explicitly want to coerce to number here if possible. + // eslint-disable-next-line + node.value != value) { + node.value = toString(value); + } + } else if (node.value !== toString(value)) { + node.value = toString(value); + } + } else if (type === 'submit' || type === 'reset') { + // Submit/reset inputs need the attribute removed completely to avoid + // blank-text buttons. + node.removeAttribute('value'); + return; + } + + if (disableInputAttributeSyncing) { + // When not syncing the value attribute, React only assigns a new value + // whenever the defaultValue React prop has changed. When not present, + // React does nothing + if (props.hasOwnProperty('defaultValue')) { + setDefaultValue(node, props.type, getToStringValue(props.defaultValue)); + } + } else { + // When syncing the value attribute, the value comes from a cascade of + // properties: + // 1. The value React property + // 2. The defaultValue React property + // 3. Otherwise there should be no change + if (props.hasOwnProperty('value')) { + setDefaultValue(node, props.type, value); + } else if (props.hasOwnProperty('defaultValue')) { + setDefaultValue(node, props.type, getToStringValue(props.defaultValue)); + } + } + + if (disableInputAttributeSyncing) { + // When not syncing the checked attribute, the attribute is directly + // controllable from the defaultValue React property. It needs to be + // updated as new props come in. + if (props.defaultChecked == null) { + node.removeAttribute('checked'); + } else { + node.defaultChecked = !!props.defaultChecked; + } + } else { + // When syncing the checked attribute, it only changes when it needs + // to be removed, such as transitioning from a checkbox into a text input + if (props.checked == null && props.defaultChecked != null) { + node.defaultChecked = !!props.defaultChecked; + } + } +} + +function postMountWrapper(element, props, isHydrating) { + var node = element; + + // Do not assign value if it is already set. This prevents user text input + // from being lost during SSR hydration. + if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) { + var type = props.type; + var isButton = type === 'submit' || type === 'reset'; + + // Avoid setting value attribute on submit/reset inputs as it overrides the + // default value provided by the browser. See: #12872 + if (isButton && (props.value === undefined || props.value === null)) { + return; + } + + var _initialValue = toString(node._wrapperState.initialValue); + + // Do not assign value if it is already set. This prevents user text input + // from being lost during SSR hydration. + if (!isHydrating) { + if (disableInputAttributeSyncing) { + var value = getToStringValue(props.value); + + // When not syncing the value attribute, the value property points + // directly to the React prop. Only assign it if it exists. + if (value != null) { + // Always assign on buttons so that it is possible to assign an + // empty string to clear button text. + // + // Otherwise, do not re-assign the value property if is empty. This + // potentially avoids a DOM write and prevents Firefox (~60.0.1) from + // prematurely marking required inputs as invalid. Equality is compared + // to the current value in case the browser provided value is not an + // empty string. + if (isButton || value !== node.value) { + node.value = toString(value); + } + } + } else { + // When syncing the value attribute, the value property should use + // the wrapperState._initialValue property. This uses: + // + // 1. The value React property when present + // 2. The defaultValue React property when present + // 3. An empty string + if (_initialValue !== node.value) { + node.value = _initialValue; + } + } + } + + if (disableInputAttributeSyncing) { + // When not syncing the value attribute, assign the value attribute + // directly from the defaultValue React property (when present) + var defaultValue = getToStringValue(props.defaultValue); + if (defaultValue != null) { + node.defaultValue = toString(defaultValue); + } + } else { + // Otherwise, the value attribute is synchronized to the property, + // so we assign defaultValue to the same thing as the value property + // assignment step above. + node.defaultValue = _initialValue; + } + } + + // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug + // this is needed to work around a chrome bug where setting defaultChecked + // will sometimes influence the value of checked (even after detachment). + // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 + // We need to temporarily unset name to avoid disrupting radio button groups. + var name = node.name; + if (name !== '') { + node.name = ''; + } + + if (disableInputAttributeSyncing) { + // When not syncing the checked attribute, the checked property + // never gets assigned. It must be manually set. We don't want + // to do this when hydrating so that existing user input isn't + // modified + if (!isHydrating) { + updateChecked(element, props); + } + + // Only assign the checked attribute if it is defined. This saves + // a DOM write when controlling the checked attribute isn't needed + // (text inputs, submit/reset) + if (props.hasOwnProperty('defaultChecked')) { + node.defaultChecked = !node.defaultChecked; + node.defaultChecked = !!props.defaultChecked; + } + } else { + // When syncing the checked attribute, both the checked property and + // attribute are assigned at the same time using defaultChecked. This uses: + // + // 1. The checked React property when present + // 2. The defaultChecked React property when present + // 3. Otherwise, false + node.defaultChecked = !node.defaultChecked; + node.defaultChecked = !!node._wrapperState.initialChecked; + } + + if (name !== '') { + node.name = name; + } +} + +function restoreControlledState(element, props) { + var node = element; + updateWrapper(node, props); + updateNamedCousins(node, props); +} + +function updateNamedCousins(rootNode, props) { + var name = props.name; + if (props.type === 'radio' && name != null) { + var queryRoot = rootNode; + + while (queryRoot.parentNode) { + queryRoot = queryRoot.parentNode; + } + + // If `rootNode.form` was non-null, then we could try `form.elements`, + // but that sometimes behaves strangely in IE8. We could also try using + // `form.getElementsByName`, but that will only return direct children + // and won't include inputs that use the HTML5 `form=` attribute. Since + // the input might not even be in a form. It might not even be in the + // document. Let's just use the local `querySelectorAll` to ensure we don't + // miss anything. + var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]'); + + for (var i = 0; i < group.length; i++) { + var otherNode = group[i]; + if (otherNode === rootNode || otherNode.form !== rootNode.form) { + continue; + } + // This will throw if radio buttons rendered by different copies of React + // and the same name are rendered into the same form (same as #1939). + // That's probably okay; we don't support it just as we don't support + // mixing React radio buttons with non-React ones. + var otherProps = getFiberCurrentPropsFromNode$1(otherNode); + !otherProps ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : void 0; + + // We need update the tracked value on the named cousin since the value + // was changed but the input saw no event or value set + updateValueIfChanged(otherNode); + + // If this is a controlled radio button group, forcing the input that + // was previously checked to update will cause it to be come re-checked + // as appropriate. + updateWrapper(otherNode, otherProps); + } + } +} + +// In Chrome, assigning defaultValue to certain input types triggers input validation. +// For number inputs, the display value loses trailing decimal points. For email inputs, +// Chrome raises "The specified value is not a valid email address". +// +// Here we check to see if the defaultValue has actually changed, avoiding these problems +// when the user is inputting text +// +// https://github.com/facebook/react/issues/7253 +function setDefaultValue(node, type, value) { + if ( + // Focused number inputs synchronize on blur. See ChangeEventPlugin.js + type !== 'number' || node.ownerDocument.activeElement !== node) { + if (value == null) { + node.defaultValue = toString(node._wrapperState.initialValue); + } else if (node.defaultValue !== toString(value)) { + node.defaultValue = toString(value); + } + } +} + +var eventTypes$1 = { + change: { + phasedRegistrationNames: { + bubbled: 'onChange', + captured: 'onChangeCapture' + }, + dependencies: [TOP_BLUR, TOP_CHANGE, TOP_CLICK, TOP_FOCUS, TOP_INPUT, TOP_KEY_DOWN, TOP_KEY_UP, TOP_SELECTION_CHANGE] + } +}; + +function createAndAccumulateChangeEvent(inst, nativeEvent, target) { + var event = SyntheticEvent.getPooled(eventTypes$1.change, inst, nativeEvent, target); + event.type = 'change'; + // Flag this event loop as needing state restore. + enqueueStateRestore(target); + accumulateTwoPhaseDispatches(event); + return event; +} +/** + * For IE shims + */ +var activeElement = null; +var activeElementInst = null; + +/** + * SECTION: handle `change` event + */ +function shouldUseChangeEvent(elem) { + var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); + return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; +} + +function manualDispatchChangeEvent(nativeEvent) { + var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent)); + + // If change and propertychange bubbled, we'd just bind to it like all the + // other events and have it go through ReactBrowserEventEmitter. Since it + // doesn't, we manually listen for the events and so we have to enqueue and + // process the abstract event manually. + // + // Batching is necessary here in order to ensure that all event handlers run + // before the next rerender (including event handlers attached to ancestor + // elements instead of directly on the input). Without this, controlled + // components don't work properly in conjunction with event bubbling because + // the component is rerendered and the value reverted before all the event + // handlers can run. See https://github.com/facebook/react/issues/708. + batchedUpdates(runEventInBatch, event); +} + +function runEventInBatch(event) { + runEventsInBatch(event); +} + +function getInstIfValueChanged(targetInst) { + var targetNode = getNodeFromInstance$1(targetInst); + if (updateValueIfChanged(targetNode)) { + return targetInst; + } +} + +function getTargetInstForChangeEvent(topLevelType, targetInst) { + if (topLevelType === TOP_CHANGE) { + return targetInst; + } +} + +/** + * SECTION: handle `input` event + */ +var isInputEventSupported = false; +if (canUseDOM) { + // IE9 claims to support the input event but fails to trigger it when + // deleting text, so we ignore its input events. + isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9); +} + +/** + * (For IE <=9) Starts tracking propertychange events on the passed-in element + * and override the value property so that we can distinguish user events from + * value changes in JS. + */ +function startWatchingForValueChange(target, targetInst) { + activeElement = target; + activeElementInst = targetInst; + activeElement.attachEvent('onpropertychange', handlePropertyChange); +} + +/** + * (For IE <=9) Removes the event listeners from the currently-tracked element, + * if any exists. + */ +function stopWatchingForValueChange() { + if (!activeElement) { + return; + } + activeElement.detachEvent('onpropertychange', handlePropertyChange); + activeElement = null; + activeElementInst = null; +} + +/** + * (For IE <=9) Handles a propertychange event, sending a `change` event if + * the value of the active element has changed. + */ +function handlePropertyChange(nativeEvent) { + if (nativeEvent.propertyName !== 'value') { + return; + } + if (getInstIfValueChanged(activeElementInst)) { + manualDispatchChangeEvent(nativeEvent); + } +} + +function handleEventsForInputEventPolyfill(topLevelType, target, targetInst) { + if (topLevelType === TOP_FOCUS) { + // In IE9, propertychange fires for most input events but is buggy and + // doesn't fire when text is deleted, but conveniently, selectionchange + // appears to fire in all of the remaining cases so we catch those and + // forward the event if the value has changed + // In either case, we don't want to call the event handler if the value + // is changed from JS so we redefine a setter for `.value` that updates + // our activeElementValue variable, allowing us to ignore those changes + // + // stopWatching() should be a noop here but we call it just in case we + // missed a blur event somehow. + stopWatchingForValueChange(); + startWatchingForValueChange(target, targetInst); + } else if (topLevelType === TOP_BLUR) { + stopWatchingForValueChange(); + } +} + +// For IE8 and IE9. +function getTargetInstForInputEventPolyfill(topLevelType, targetInst) { + if (topLevelType === TOP_SELECTION_CHANGE || topLevelType === TOP_KEY_UP || topLevelType === TOP_KEY_DOWN) { + // On the selectionchange event, the target is just document which isn't + // helpful for us so just check activeElement instead. + // + // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire + // propertychange on the first input event after setting `value` from a + // script and fires only keydown, keypress, keyup. Catching keyup usually + // gets it and catching keydown lets us fire an event for the first + // keystroke if user does a key repeat (it'll be a little delayed: right + // before the second keystroke). Other input methods (e.g., paste) seem to + // fire selectionchange normally. + return getInstIfValueChanged(activeElementInst); + } +} + +/** + * SECTION: handle `click` event + */ +function shouldUseClickEvent(elem) { + // Use the `click` event to detect changes to checkbox and radio inputs. + // This approach works across all browsers, whereas `change` does not fire + // until `blur` in IE8. + var nodeName = elem.nodeName; + return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); +} + +function getTargetInstForClickEvent(topLevelType, targetInst) { + if (topLevelType === TOP_CLICK) { + return getInstIfValueChanged(targetInst); + } +} + +function getTargetInstForInputOrChangeEvent(topLevelType, targetInst) { + if (topLevelType === TOP_INPUT || topLevelType === TOP_CHANGE) { + return getInstIfValueChanged(targetInst); + } +} + +function handleControlledInputBlur(node) { + var state = node._wrapperState; + + if (!state || !state.controlled || node.type !== 'number') { + return; + } + + if (!disableInputAttributeSyncing) { + // If controlled, assign the value attribute to the current value on blur + setDefaultValue(node, 'number', node.value); + } +} + +/** + * This plugin creates an `onChange` event that normalizes change events + * across form elements. This event fires at a time when it's possible to + * change the element's value without seeing a flicker. + * + * Supported elements are: + * - input (see `isTextInputElement`) + * - textarea + * - select + */ +var ChangeEventPlugin = { + eventTypes: eventTypes$1, + + _isInputEventSupported: isInputEventSupported, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window; + + var getTargetInstFunc = void 0, + handleEventFunc = void 0; + if (shouldUseChangeEvent(targetNode)) { + getTargetInstFunc = getTargetInstForChangeEvent; + } else if (isTextInputElement(targetNode)) { + if (isInputEventSupported) { + getTargetInstFunc = getTargetInstForInputOrChangeEvent; + } else { + getTargetInstFunc = getTargetInstForInputEventPolyfill; + handleEventFunc = handleEventsForInputEventPolyfill; + } + } else if (shouldUseClickEvent(targetNode)) { + getTargetInstFunc = getTargetInstForClickEvent; + } + + if (getTargetInstFunc) { + var inst = getTargetInstFunc(topLevelType, targetInst); + if (inst) { + var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget); + return event; + } + } + + if (handleEventFunc) { + handleEventFunc(topLevelType, targetNode, targetInst); + } + + // When blurring, set the value attribute for number inputs + if (topLevelType === TOP_BLUR) { + handleControlledInputBlur(targetNode); + } + } +}; + +/** + * Module that is injectable into `EventPluginHub`, that specifies a + * deterministic ordering of `EventPlugin`s. A convenient way to reason about + * plugins, without having to package every one of them. This is better than + * having plugins be ordered in the same order that they are injected because + * that ordering would be influenced by the packaging order. + * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that + * preventing default on events is convenient in `SimpleEventPlugin` handlers. + */ +var DOMEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; + +var SyntheticUIEvent = SyntheticEvent.extend({ + view: null, + detail: null +}); + +var modifierKeyToProp = { + Alt: 'altKey', + Control: 'ctrlKey', + Meta: 'metaKey', + Shift: 'shiftKey' +}; + +// Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support +// getModifierState. If getModifierState is not supported, we map it to a set of +// modifier keys exposed by the event. In this case, Lock-keys are not supported. +/** + * Translation from modifier key to the associated property in the event. + * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers + */ + +function modifierStateGetter(keyArg) { + var syntheticEvent = this; + var nativeEvent = syntheticEvent.nativeEvent; + if (nativeEvent.getModifierState) { + return nativeEvent.getModifierState(keyArg); + } + var keyProp = modifierKeyToProp[keyArg]; + return keyProp ? !!nativeEvent[keyProp] : false; +} + +function getEventModifierState(nativeEvent) { + return modifierStateGetter; +} + +var previousScreenX = 0; +var previousScreenY = 0; +// Use flags to signal movementX/Y has already been set +var isMovementXSet = false; +var isMovementYSet = false; + +/** + * @interface MouseEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var SyntheticMouseEvent = SyntheticUIEvent.extend({ + screenX: null, + screenY: null, + clientX: null, + clientY: null, + pageX: null, + pageY: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + getModifierState: getEventModifierState, + button: null, + buttons: null, + relatedTarget: function (event) { + return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement); + }, + movementX: function (event) { + if ('movementX' in event) { + return event.movementX; + } + + var screenX = previousScreenX; + previousScreenX = event.screenX; + + if (!isMovementXSet) { + isMovementXSet = true; + return 0; + } + + return event.type === 'mousemove' ? event.screenX - screenX : 0; + }, + movementY: function (event) { + if ('movementY' in event) { + return event.movementY; + } + + var screenY = previousScreenY; + previousScreenY = event.screenY; + + if (!isMovementYSet) { + isMovementYSet = true; + return 0; + } + + return event.type === 'mousemove' ? event.screenY - screenY : 0; + } +}); + +/** + * @interface PointerEvent + * @see http://www.w3.org/TR/pointerevents/ + */ +var SyntheticPointerEvent = SyntheticMouseEvent.extend({ + pointerId: null, + width: null, + height: null, + pressure: null, + tangentialPressure: null, + tiltX: null, + tiltY: null, + twist: null, + pointerType: null, + isPrimary: null +}); + +var eventTypes$2 = { + mouseEnter: { + registrationName: 'onMouseEnter', + dependencies: [TOP_MOUSE_OUT, TOP_MOUSE_OVER] + }, + mouseLeave: { + registrationName: 'onMouseLeave', + dependencies: [TOP_MOUSE_OUT, TOP_MOUSE_OVER] + }, + pointerEnter: { + registrationName: 'onPointerEnter', + dependencies: [TOP_POINTER_OUT, TOP_POINTER_OVER] + }, + pointerLeave: { + registrationName: 'onPointerLeave', + dependencies: [TOP_POINTER_OUT, TOP_POINTER_OVER] + } +}; + +var EnterLeaveEventPlugin = { + eventTypes: eventTypes$2, + + /** + * For almost every interaction we care about, there will be both a top-level + * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that + * we do not extract duplicate events. However, moving the mouse into the + * browser from outside will not fire a `mouseout` event. In this case, we use + * the `mouseover` top-level event. + */ + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var isOverEvent = topLevelType === TOP_MOUSE_OVER || topLevelType === TOP_POINTER_OVER; + var isOutEvent = topLevelType === TOP_MOUSE_OUT || topLevelType === TOP_POINTER_OUT; + + if (isOverEvent && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { + return null; + } + + if (!isOutEvent && !isOverEvent) { + // Must not be a mouse or pointer in or out - ignoring. + return null; + } + + var win = void 0; + if (nativeEventTarget.window === nativeEventTarget) { + // `nativeEventTarget` is probably a window object. + win = nativeEventTarget; + } else { + // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. + var doc = nativeEventTarget.ownerDocument; + if (doc) { + win = doc.defaultView || doc.parentWindow; + } else { + win = window; + } + } + + var from = void 0; + var to = void 0; + if (isOutEvent) { + from = targetInst; + var related = nativeEvent.relatedTarget || nativeEvent.toElement; + to = related ? getClosestInstanceFromNode(related) : null; + } else { + // Moving to a node from outside the window. + from = null; + to = targetInst; + } + + if (from === to) { + // Nothing pertains to our managed components. + return null; + } + + var eventInterface = void 0, + leaveEventType = void 0, + enterEventType = void 0, + eventTypePrefix = void 0; + + if (topLevelType === TOP_MOUSE_OUT || topLevelType === TOP_MOUSE_OVER) { + eventInterface = SyntheticMouseEvent; + leaveEventType = eventTypes$2.mouseLeave; + enterEventType = eventTypes$2.mouseEnter; + eventTypePrefix = 'mouse'; + } else if (topLevelType === TOP_POINTER_OUT || topLevelType === TOP_POINTER_OVER) { + eventInterface = SyntheticPointerEvent; + leaveEventType = eventTypes$2.pointerLeave; + enterEventType = eventTypes$2.pointerEnter; + eventTypePrefix = 'pointer'; + } + + var fromNode = from == null ? win : getNodeFromInstance$1(from); + var toNode = to == null ? win : getNodeFromInstance$1(to); + + var leave = eventInterface.getPooled(leaveEventType, from, nativeEvent, nativeEventTarget); + leave.type = eventTypePrefix + 'leave'; + leave.target = fromNode; + leave.relatedTarget = toNode; + + var enter = eventInterface.getPooled(enterEventType, to, nativeEvent, nativeEventTarget); + enter.type = eventTypePrefix + 'enter'; + enter.target = toNode; + enter.relatedTarget = fromNode; + + accumulateEnterLeaveDispatches(leave, enter, from, to); + + return [leave, enter]; + } +}; + +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ +function is(x, y) { + return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare + ; +} + +var hasOwnProperty$1 = Object.prototype.hasOwnProperty; + +/** + * Performs equality by iterating through keys on an object and returning false + * when any key has values which are not strictly equal between the arguments. + * Returns true when the values of all keys are strictly equal. + */ +function shallowEqual(objA, objB) { + if (is(objA, objB)) { + return true; + } + + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } + + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); + + if (keysA.length !== keysB.length) { + return false; + } + + // Test for A's keys different from B. + for (var i = 0; i < keysA.length; i++) { + if (!hasOwnProperty$1.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { + return false; + } + } + + return true; +} + +/** + * `ReactInstanceMap` maintains a mapping from a public facing stateful + * instance (key) and the internal representation (value). This allows public + * methods to accept the user facing instance as an argument and map them back + * to internal methods. + * + * Note that this module is currently shared and assumed to be stateless. + * If this becomes an actual Map, that will break. + */ + +/** + * This API should be called `delete` but we'd have to make sure to always + * transform these to strings for IE support. When this transform is fully + * supported we can rename it. + */ + + +function get(key) { + return key._reactInternalFiber; +} + +function has(key) { + return key._reactInternalFiber !== undefined; +} + +function set(key, value) { + key._reactInternalFiber = value; +} + +// Don't change these two values. They're used by React Dev Tools. +var NoEffect = /* */0; +var PerformedWork = /* */1; + +// You can change the rest (and add more). +var Placement = /* */2; +var Update = /* */4; +var PlacementAndUpdate = /* */6; +var Deletion = /* */8; +var ContentReset = /* */16; +var Callback = /* */32; +var DidCapture = /* */64; +var Ref = /* */128; +var Snapshot = /* */256; +var Passive = /* */512; + +// Passive & Update & Callback & Ref & Snapshot +var LifecycleEffectMask = /* */932; + +// Union of all host effects +var HostEffectMask = /* */1023; + +var Incomplete = /* */1024; +var ShouldCapture = /* */2048; + +var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner; + +var MOUNTING = 1; +var MOUNTED = 2; +var UNMOUNTED = 3; + +function isFiberMountedImpl(fiber) { + var node = fiber; + if (!fiber.alternate) { + // If there is no alternate, this might be a new tree that isn't inserted + // yet. If it is, then it will have a pending insertion effect on it. + if ((node.effectTag & Placement) !== NoEffect) { + return MOUNTING; + } + while (node.return) { + node = node.return; + if ((node.effectTag & Placement) !== NoEffect) { + return MOUNTING; + } + } + } else { + while (node.return) { + node = node.return; + } + } + if (node.tag === HostRoot) { + // TODO: Check if this was a nested HostRoot when used with + // renderContainerIntoSubtree. + return MOUNTED; + } + // If we didn't hit the root, that means that we're in an disconnected tree + // that has been unmounted. + return UNMOUNTED; +} + +function isFiberMounted(fiber) { + return isFiberMountedImpl(fiber) === MOUNTED; +} + +function isMounted(component) { + { + var owner = ReactCurrentOwner$1.current; + if (owner !== null && owner.tag === ClassComponent) { + var ownerFiber = owner; + var instance = ownerFiber.stateNode; + !instance._warnedAboutRefsInRender ? warningWithoutStack$1(false, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber.type) || 'A component') : void 0; + instance._warnedAboutRefsInRender = true; + } + } + + var fiber = get(component); + if (!fiber) { + return false; + } + return isFiberMountedImpl(fiber) === MOUNTED; +} + +function assertIsMounted(fiber) { + !(isFiberMountedImpl(fiber) === MOUNTED) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0; +} + +function findCurrentFiberUsingSlowPath(fiber) { + var alternate = fiber.alternate; + if (!alternate) { + // If there is no alternate, then we only need to check if it is mounted. + var state = isFiberMountedImpl(fiber); + !(state !== UNMOUNTED) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0; + if (state === MOUNTING) { + return null; + } + return fiber; + } + // If we have two possible branches, we'll walk backwards up to the root + // to see what path the root points to. On the way we may hit one of the + // special cases and we'll deal with them. + var a = fiber; + var b = alternate; + while (true) { + var parentA = a.return; + var parentB = parentA ? parentA.alternate : null; + if (!parentA || !parentB) { + // We're at the root. + break; + } + + // If both copies of the parent fiber point to the same child, we can + // assume that the child is current. This happens when we bailout on low + // priority: the bailed out fiber's child reuses the current child. + if (parentA.child === parentB.child) { + var child = parentA.child; + while (child) { + if (child === a) { + // We've determined that A is the current branch. + assertIsMounted(parentA); + return fiber; + } + if (child === b) { + // We've determined that B is the current branch. + assertIsMounted(parentA); + return alternate; + } + child = child.sibling; + } + // We should never have an alternate for any mounting node. So the only + // way this could possibly happen is if this was unmounted, if at all. + invariant(false, 'Unable to find node on an unmounted component.'); + } + + if (a.return !== b.return) { + // The return pointer of A and the return pointer of B point to different + // fibers. We assume that return pointers never criss-cross, so A must + // belong to the child set of A.return, and B must belong to the child + // set of B.return. + a = parentA; + b = parentB; + } else { + // The return pointers point to the same fiber. We'll have to use the + // default, slow path: scan the child sets of each parent alternate to see + // which child belongs to which set. + // + // Search parent A's child set + var didFindChild = false; + var _child = parentA.child; + while (_child) { + if (_child === a) { + didFindChild = true; + a = parentA; + b = parentB; + break; + } + if (_child === b) { + didFindChild = true; + b = parentA; + a = parentB; + break; + } + _child = _child.sibling; + } + if (!didFindChild) { + // Search parent B's child set + _child = parentB.child; + while (_child) { + if (_child === a) { + didFindChild = true; + a = parentB; + b = parentA; + break; + } + if (_child === b) { + didFindChild = true; + b = parentB; + a = parentA; + break; + } + _child = _child.sibling; + } + !didFindChild ? invariant(false, 'Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.') : void 0; + } + } + + !(a.alternate === b) ? invariant(false, 'Return fibers should always be each others\' alternates. This error is likely caused by a bug in React. Please file an issue.') : void 0; + } + // If the root is not a host container, we're in a disconnected tree. I.e. + // unmounted. + !(a.tag === HostRoot) ? invariant(false, 'Unable to find node on an unmounted component.') : void 0; + if (a.stateNode.current === a) { + // We've determined that A is the current branch. + return fiber; + } + // Otherwise B has to be current branch. + return alternate; +} + +function findCurrentHostFiber(parent) { + var currentParent = findCurrentFiberUsingSlowPath(parent); + if (!currentParent) { + return null; + } + + // Next we'll drill down this component to find the first HostComponent/Text. + var node = currentParent; + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + return node; + } else if (node.child) { + node.child.return = node; + node = node.child; + continue; + } + if (node === currentParent) { + return null; + } + while (!node.sibling) { + if (!node.return || node.return === currentParent) { + return null; + } + node = node.return; + } + node.sibling.return = node.return; + node = node.sibling; + } + // Flow needs the return null here, but ESLint complains about it. + // eslint-disable-next-line no-unreachable + return null; +} + +function findCurrentHostFiberWithNoPortals(parent) { + var currentParent = findCurrentFiberUsingSlowPath(parent); + if (!currentParent) { + return null; + } + + // Next we'll drill down this component to find the first HostComponent/Text. + var node = currentParent; + while (true) { + if (node.tag === HostComponent || node.tag === HostText) { + return node; + } else if (node.child && node.tag !== HostPortal) { + node.child.return = node; + node = node.child; + continue; + } + if (node === currentParent) { + return null; + } + while (!node.sibling) { + if (!node.return || node.return === currentParent) { + return null; + } + node = node.return; + } + node.sibling.return = node.return; + node = node.sibling; + } + // Flow needs the return null here, but ESLint complains about it. + // eslint-disable-next-line no-unreachable + return null; +} + +function addEventBubbleListener(element, eventType, listener) { + element.addEventListener(eventType, listener, false); +} + +function addEventCaptureListener(element, eventType, listener) { + element.addEventListener(eventType, listener, true); +} + +/** + * @interface Event + * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface + * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent + */ +var SyntheticAnimationEvent = SyntheticEvent.extend({ + animationName: null, + elapsedTime: null, + pseudoElement: null +}); + +/** + * @interface Event + * @see http://www.w3.org/TR/clipboard-apis/ + */ +var SyntheticClipboardEvent = SyntheticEvent.extend({ + clipboardData: function (event) { + return 'clipboardData' in event ? event.clipboardData : window.clipboardData; + } +}); + +/** + * @interface FocusEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var SyntheticFocusEvent = SyntheticUIEvent.extend({ + relatedTarget: null +}); + +/** + * `charCode` represents the actual "character code" and is safe to use with + * `String.fromCharCode`. As such, only keys that correspond to printable + * characters produce a valid `charCode`, the only exception to this is Enter. + * The Tab-key is considered non-printable and does not have a `charCode`, + * presumably because it does not produce a tab-character in browsers. + * + * @param {object} nativeEvent Native browser event. + * @return {number} Normalized `charCode` property. + */ +function getEventCharCode(nativeEvent) { + var charCode = void 0; + var keyCode = nativeEvent.keyCode; + + if ('charCode' in nativeEvent) { + charCode = nativeEvent.charCode; + + // FF does not set `charCode` for the Enter-key, check against `keyCode`. + if (charCode === 0 && keyCode === 13) { + charCode = 13; + } + } else { + // IE8 does not implement `charCode`, but `keyCode` has the correct value. + charCode = keyCode; + } + + // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux) + // report Enter as charCode 10 when ctrl is pressed. + if (charCode === 10) { + charCode = 13; + } + + // Some non-printable keys are reported in `charCode`/`keyCode`, discard them. + // Must not discard the (non-)printable Enter-key. + if (charCode >= 32 || charCode === 13) { + return charCode; + } + + return 0; +} + +/** + * Normalization of deprecated HTML5 `key` values + * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names + */ +var normalizeKey = { + Esc: 'Escape', + Spacebar: ' ', + Left: 'ArrowLeft', + Up: 'ArrowUp', + Right: 'ArrowRight', + Down: 'ArrowDown', + Del: 'Delete', + Win: 'OS', + Menu: 'ContextMenu', + Apps: 'ContextMenu', + Scroll: 'ScrollLock', + MozPrintableKey: 'Unidentified' +}; + +/** + * Translation from legacy `keyCode` to HTML5 `key` + * Only special keys supported, all others depend on keyboard layout or browser + * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names + */ +var translateToKey = { + '8': 'Backspace', + '9': 'Tab', + '12': 'Clear', + '13': 'Enter', + '16': 'Shift', + '17': 'Control', + '18': 'Alt', + '19': 'Pause', + '20': 'CapsLock', + '27': 'Escape', + '32': ' ', + '33': 'PageUp', + '34': 'PageDown', + '35': 'End', + '36': 'Home', + '37': 'ArrowLeft', + '38': 'ArrowUp', + '39': 'ArrowRight', + '40': 'ArrowDown', + '45': 'Insert', + '46': 'Delete', + '112': 'F1', + '113': 'F2', + '114': 'F3', + '115': 'F4', + '116': 'F5', + '117': 'F6', + '118': 'F7', + '119': 'F8', + '120': 'F9', + '121': 'F10', + '122': 'F11', + '123': 'F12', + '144': 'NumLock', + '145': 'ScrollLock', + '224': 'Meta' +}; + +/** + * @param {object} nativeEvent Native browser event. + * @return {string} Normalized `key` property. + */ +function getEventKey(nativeEvent) { + if (nativeEvent.key) { + // Normalize inconsistent values reported by browsers due to + // implementations of a working draft specification. + + // FireFox implements `key` but returns `MozPrintableKey` for all + // printable characters (normalized to `Unidentified`), ignore it. + var key = normalizeKey[nativeEvent.key] || nativeEvent.key; + if (key !== 'Unidentified') { + return key; + } + } + + // Browser does not implement `key`, polyfill as much of it as we can. + if (nativeEvent.type === 'keypress') { + var charCode = getEventCharCode(nativeEvent); + + // The enter-key is technically both printable and non-printable and can + // thus be captured by `keypress`, no other non-printable key should. + return charCode === 13 ? 'Enter' : String.fromCharCode(charCode); + } + if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') { + // While user keyboard layout determines the actual meaning of each + // `keyCode` value, almost all function keys have a universal value. + return translateToKey[nativeEvent.keyCode] || 'Unidentified'; + } + return ''; +} + +/** + * @interface KeyboardEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var SyntheticKeyboardEvent = SyntheticUIEvent.extend({ + key: getEventKey, + location: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + repeat: null, + locale: null, + getModifierState: getEventModifierState, + // Legacy Interface + charCode: function (event) { + // `charCode` is the result of a KeyPress event and represents the value of + // the actual printable character. + + // KeyPress is deprecated, but its replacement is not yet final and not + // implemented in any major browser. Only KeyPress has charCode. + if (event.type === 'keypress') { + return getEventCharCode(event); + } + return 0; + }, + keyCode: function (event) { + // `keyCode` is the result of a KeyDown/Up event and represents the value of + // physical keyboard key. + + // The actual meaning of the value depends on the users' keyboard layout + // which cannot be detected. Assuming that it is a US keyboard layout + // provides a surprisingly accurate mapping for US and European users. + // Due to this, it is left to the user to implement at this time. + if (event.type === 'keydown' || event.type === 'keyup') { + return event.keyCode; + } + return 0; + }, + which: function (event) { + // `which` is an alias for either `keyCode` or `charCode` depending on the + // type of the event. + if (event.type === 'keypress') { + return getEventCharCode(event); + } + if (event.type === 'keydown' || event.type === 'keyup') { + return event.keyCode; + } + return 0; + } +}); + +/** + * @interface DragEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var SyntheticDragEvent = SyntheticMouseEvent.extend({ + dataTransfer: null +}); + +/** + * @interface TouchEvent + * @see http://www.w3.org/TR/touch-events/ + */ +var SyntheticTouchEvent = SyntheticUIEvent.extend({ + touches: null, + targetTouches: null, + changedTouches: null, + altKey: null, + metaKey: null, + ctrlKey: null, + shiftKey: null, + getModifierState: getEventModifierState +}); + +/** + * @interface Event + * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events- + * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent + */ +var SyntheticTransitionEvent = SyntheticEvent.extend({ + propertyName: null, + elapsedTime: null, + pseudoElement: null +}); + +/** + * @interface WheelEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ +var SyntheticWheelEvent = SyntheticMouseEvent.extend({ + deltaX: function (event) { + return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). + 'wheelDeltaX' in event ? -event.wheelDeltaX : 0; + }, + deltaY: function (event) { + return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). + 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive). + 'wheelDelta' in event ? -event.wheelDelta : 0; + }, + + deltaZ: null, + + // Browsers without "deltaMode" is reporting in raw wheel delta where one + // notch on the scroll is always +/- 120, roughly equivalent to pixels. + // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or + // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. + deltaMode: null +}); + +/** + * Turns + * ['abort', ...] + * into + * eventTypes = { + * 'abort': { + * phasedRegistrationNames: { + * bubbled: 'onAbort', + * captured: 'onAbortCapture', + * }, + * dependencies: [TOP_ABORT], + * }, + * ... + * }; + * topLevelEventsToDispatchConfig = new Map([ + * [TOP_ABORT, { sameConfig }], + * ]); + */ + +var interactiveEventTypeNames = [[TOP_BLUR, 'blur'], [TOP_CANCEL, 'cancel'], [TOP_CLICK, 'click'], [TOP_CLOSE, 'close'], [TOP_CONTEXT_MENU, 'contextMenu'], [TOP_COPY, 'copy'], [TOP_CUT, 'cut'], [TOP_AUX_CLICK, 'auxClick'], [TOP_DOUBLE_CLICK, 'doubleClick'], [TOP_DRAG_END, 'dragEnd'], [TOP_DRAG_START, 'dragStart'], [TOP_DROP, 'drop'], [TOP_FOCUS, 'focus'], [TOP_INPUT, 'input'], [TOP_INVALID, 'invalid'], [TOP_KEY_DOWN, 'keyDown'], [TOP_KEY_PRESS, 'keyPress'], [TOP_KEY_UP, 'keyUp'], [TOP_MOUSE_DOWN, 'mouseDown'], [TOP_MOUSE_UP, 'mouseUp'], [TOP_PASTE, 'paste'], [TOP_PAUSE, 'pause'], [TOP_PLAY, 'play'], [TOP_POINTER_CANCEL, 'pointerCancel'], [TOP_POINTER_DOWN, 'pointerDown'], [TOP_POINTER_UP, 'pointerUp'], [TOP_RATE_CHANGE, 'rateChange'], [TOP_RESET, 'reset'], [TOP_SEEKED, 'seeked'], [TOP_SUBMIT, 'submit'], [TOP_TOUCH_CANCEL, 'touchCancel'], [TOP_TOUCH_END, 'touchEnd'], [TOP_TOUCH_START, 'touchStart'], [TOP_VOLUME_CHANGE, 'volumeChange']]; +var nonInteractiveEventTypeNames = [[TOP_ABORT, 'abort'], [TOP_ANIMATION_END, 'animationEnd'], [TOP_ANIMATION_ITERATION, 'animationIteration'], [TOP_ANIMATION_START, 'animationStart'], [TOP_CAN_PLAY, 'canPlay'], [TOP_CAN_PLAY_THROUGH, 'canPlayThrough'], [TOP_DRAG, 'drag'], [TOP_DRAG_ENTER, 'dragEnter'], [TOP_DRAG_EXIT, 'dragExit'], [TOP_DRAG_LEAVE, 'dragLeave'], [TOP_DRAG_OVER, 'dragOver'], [TOP_DURATION_CHANGE, 'durationChange'], [TOP_EMPTIED, 'emptied'], [TOP_ENCRYPTED, 'encrypted'], [TOP_ENDED, 'ended'], [TOP_ERROR, 'error'], [TOP_GOT_POINTER_CAPTURE, 'gotPointerCapture'], [TOP_LOAD, 'load'], [TOP_LOADED_DATA, 'loadedData'], [TOP_LOADED_METADATA, 'loadedMetadata'], [TOP_LOAD_START, 'loadStart'], [TOP_LOST_POINTER_CAPTURE, 'lostPointerCapture'], [TOP_MOUSE_MOVE, 'mouseMove'], [TOP_MOUSE_OUT, 'mouseOut'], [TOP_MOUSE_OVER, 'mouseOver'], [TOP_PLAYING, 'playing'], [TOP_POINTER_MOVE, 'pointerMove'], [TOP_POINTER_OUT, 'pointerOut'], [TOP_POINTER_OVER, 'pointerOver'], [TOP_PROGRESS, 'progress'], [TOP_SCROLL, 'scroll'], [TOP_SEEKING, 'seeking'], [TOP_STALLED, 'stalled'], [TOP_SUSPEND, 'suspend'], [TOP_TIME_UPDATE, 'timeUpdate'], [TOP_TOGGLE, 'toggle'], [TOP_TOUCH_MOVE, 'touchMove'], [TOP_TRANSITION_END, 'transitionEnd'], [TOP_WAITING, 'waiting'], [TOP_WHEEL, 'wheel']]; + +var eventTypes$4 = {}; +var topLevelEventsToDispatchConfig = {}; + +function addEventTypeNameToConfig(_ref, isInteractive) { + var topEvent = _ref[0], + event = _ref[1]; + + var capitalizedEvent = event[0].toUpperCase() + event.slice(1); + var onEvent = 'on' + capitalizedEvent; + + var type = { + phasedRegistrationNames: { + bubbled: onEvent, + captured: onEvent + 'Capture' + }, + dependencies: [topEvent], + isInteractive: isInteractive + }; + eventTypes$4[event] = type; + topLevelEventsToDispatchConfig[topEvent] = type; +} + +interactiveEventTypeNames.forEach(function (eventTuple) { + addEventTypeNameToConfig(eventTuple, true); +}); +nonInteractiveEventTypeNames.forEach(function (eventTuple) { + addEventTypeNameToConfig(eventTuple, false); +}); + +// Only used in DEV for exhaustiveness validation. +var knownHTMLTopLevelTypes = [TOP_ABORT, TOP_CANCEL, TOP_CAN_PLAY, TOP_CAN_PLAY_THROUGH, TOP_CLOSE, TOP_DURATION_CHANGE, TOP_EMPTIED, TOP_ENCRYPTED, TOP_ENDED, TOP_ERROR, TOP_INPUT, TOP_INVALID, TOP_LOAD, TOP_LOADED_DATA, TOP_LOADED_METADATA, TOP_LOAD_START, TOP_PAUSE, TOP_PLAY, TOP_PLAYING, TOP_PROGRESS, TOP_RATE_CHANGE, TOP_RESET, TOP_SEEKED, TOP_SEEKING, TOP_STALLED, TOP_SUBMIT, TOP_SUSPEND, TOP_TIME_UPDATE, TOP_TOGGLE, TOP_VOLUME_CHANGE, TOP_WAITING]; + +var SimpleEventPlugin = { + eventTypes: eventTypes$4, + + isInteractiveTopLevelEventType: function (topLevelType) { + var config = topLevelEventsToDispatchConfig[topLevelType]; + return config !== undefined && config.isInteractive === true; + }, + + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType]; + if (!dispatchConfig) { + return null; + } + var EventConstructor = void 0; + switch (topLevelType) { + case TOP_KEY_PRESS: + // Firefox creates a keypress event for function keys too. This removes + // the unwanted keypress events. Enter is however both printable and + // non-printable. One would expect Tab to be as well (but it isn't). + if (getEventCharCode(nativeEvent) === 0) { + return null; + } + /* falls through */ + case TOP_KEY_DOWN: + case TOP_KEY_UP: + EventConstructor = SyntheticKeyboardEvent; + break; + case TOP_BLUR: + case TOP_FOCUS: + EventConstructor = SyntheticFocusEvent; + break; + case TOP_CLICK: + // Firefox creates a click event on right mouse clicks. This removes the + // unwanted click events. + if (nativeEvent.button === 2) { + return null; + } + /* falls through */ + case TOP_AUX_CLICK: + case TOP_DOUBLE_CLICK: + case TOP_MOUSE_DOWN: + case TOP_MOUSE_MOVE: + case TOP_MOUSE_UP: + // TODO: Disabled elements should not respond to mouse events + /* falls through */ + case TOP_MOUSE_OUT: + case TOP_MOUSE_OVER: + case TOP_CONTEXT_MENU: + EventConstructor = SyntheticMouseEvent; + break; + case TOP_DRAG: + case TOP_DRAG_END: + case TOP_DRAG_ENTER: + case TOP_DRAG_EXIT: + case TOP_DRAG_LEAVE: + case TOP_DRAG_OVER: + case TOP_DRAG_START: + case TOP_DROP: + EventConstructor = SyntheticDragEvent; + break; + case TOP_TOUCH_CANCEL: + case TOP_TOUCH_END: + case TOP_TOUCH_MOVE: + case TOP_TOUCH_START: + EventConstructor = SyntheticTouchEvent; + break; + case TOP_ANIMATION_END: + case TOP_ANIMATION_ITERATION: + case TOP_ANIMATION_START: + EventConstructor = SyntheticAnimationEvent; + break; + case TOP_TRANSITION_END: + EventConstructor = SyntheticTransitionEvent; + break; + case TOP_SCROLL: + EventConstructor = SyntheticUIEvent; + break; + case TOP_WHEEL: + EventConstructor = SyntheticWheelEvent; + break; + case TOP_COPY: + case TOP_CUT: + case TOP_PASTE: + EventConstructor = SyntheticClipboardEvent; + break; + case TOP_GOT_POINTER_CAPTURE: + case TOP_LOST_POINTER_CAPTURE: + case TOP_POINTER_CANCEL: + case TOP_POINTER_DOWN: + case TOP_POINTER_MOVE: + case TOP_POINTER_OUT: + case TOP_POINTER_OVER: + case TOP_POINTER_UP: + EventConstructor = SyntheticPointerEvent; + break; + default: + { + if (knownHTMLTopLevelTypes.indexOf(topLevelType) === -1) { + warningWithoutStack$1(false, 'SimpleEventPlugin: Unhandled event type, `%s`. This warning ' + 'is likely caused by a bug in React. Please file an issue.', topLevelType); + } + } + // HTML Events + // @see http://www.w3.org/TR/html5/index.html#events-0 + EventConstructor = SyntheticEvent; + break; + } + var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget); + accumulateTwoPhaseDispatches(event); + return event; + } +}; + +var isInteractiveTopLevelEventType = SimpleEventPlugin.isInteractiveTopLevelEventType; + + +var CALLBACK_BOOKKEEPING_POOL_SIZE = 10; +var callbackBookkeepingPool = []; + +/** + * Find the deepest React component completely containing the root of the + * passed-in instance (for use when entire React trees are nested within each + * other). If React trees are not nested, returns null. + */ +function findRootContainerNode(inst) { + // TODO: It may be a good idea to cache this to prevent unnecessary DOM + // traversal, but caching is difficult to do correctly without using a + // mutation observer to listen for all DOM changes. + while (inst.return) { + inst = inst.return; + } + if (inst.tag !== HostRoot) { + // This can happen if we're in a detached tree. + return null; + } + return inst.stateNode.containerInfo; +} + +// Used to store ancestor hierarchy in top level callback +function getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst) { + if (callbackBookkeepingPool.length) { + var instance = callbackBookkeepingPool.pop(); + instance.topLevelType = topLevelType; + instance.nativeEvent = nativeEvent; + instance.targetInst = targetInst; + return instance; + } + return { + topLevelType: topLevelType, + nativeEvent: nativeEvent, + targetInst: targetInst, + ancestors: [] + }; +} + +function releaseTopLevelCallbackBookKeeping(instance) { + instance.topLevelType = null; + instance.nativeEvent = null; + instance.targetInst = null; + instance.ancestors.length = 0; + if (callbackBookkeepingPool.length < CALLBACK_BOOKKEEPING_POOL_SIZE) { + callbackBookkeepingPool.push(instance); + } +} + +function handleTopLevel(bookKeeping) { + var targetInst = bookKeeping.targetInst; + + // Loop through the hierarchy, in case there's any nested components. + // It's important that we build the array of ancestors before calling any + // event handlers, because event handlers can modify the DOM, leading to + // inconsistencies with ReactMount's node cache. See #1105. + var ancestor = targetInst; + do { + if (!ancestor) { + bookKeeping.ancestors.push(ancestor); + break; + } + var root = findRootContainerNode(ancestor); + if (!root) { + break; + } + bookKeeping.ancestors.push(ancestor); + ancestor = getClosestInstanceFromNode(root); + } while (ancestor); + + for (var i = 0; i < bookKeeping.ancestors.length; i++) { + targetInst = bookKeeping.ancestors[i]; + runExtractedEventsInBatch(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent)); + } +} + +// TODO: can we stop exporting these? +var _enabled = true; + +function setEnabled(enabled) { + _enabled = !!enabled; +} + +function isEnabled() { + return _enabled; +} + +/** + * Traps top-level events by using event bubbling. + * + * @param {number} topLevelType Number from `TopLevelEventTypes`. + * @param {object} element Element on which to attach listener. + * @return {?object} An object with a remove function which will forcefully + * remove the listener. + * @internal + */ +function trapBubbledEvent(topLevelType, element) { + if (!element) { + return null; + } + var dispatch = isInteractiveTopLevelEventType(topLevelType) ? dispatchInteractiveEvent : dispatchEvent; + + addEventBubbleListener(element, getRawEventName(topLevelType), + // Check if interactive and wrap in interactiveUpdates + dispatch.bind(null, topLevelType)); +} + +/** + * Traps a top-level event by using event capturing. + * + * @param {number} topLevelType Number from `TopLevelEventTypes`. + * @param {object} element Element on which to attach listener. + * @return {?object} An object with a remove function which will forcefully + * remove the listener. + * @internal + */ +function trapCapturedEvent(topLevelType, element) { + if (!element) { + return null; + } + var dispatch = isInteractiveTopLevelEventType(topLevelType) ? dispatchInteractiveEvent : dispatchEvent; + + addEventCaptureListener(element, getRawEventName(topLevelType), + // Check if interactive and wrap in interactiveUpdates + dispatch.bind(null, topLevelType)); +} + +function dispatchInteractiveEvent(topLevelType, nativeEvent) { + interactiveUpdates(dispatchEvent, topLevelType, nativeEvent); +} + +function dispatchEvent(topLevelType, nativeEvent) { + if (!_enabled) { + return; + } + + var nativeEventTarget = getEventTarget(nativeEvent); + var targetInst = getClosestInstanceFromNode(nativeEventTarget); + if (targetInst !== null && typeof targetInst.tag === 'number' && !isFiberMounted(targetInst)) { + // If we get an event (ex: img onload) before committing that + // component's mount, ignore it for now (that is, treat it as if it was an + // event on a non-React tree). We might also consider queueing events and + // dispatching them after the mount. + targetInst = null; + } + + var bookKeeping = getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst); + + try { + // Event queue being processed in the same cycle allows + // `preventDefault`. + batchedUpdates(handleTopLevel, bookKeeping); + } finally { + releaseTopLevelCallbackBookKeeping(bookKeeping); + } +} + +/** + * Summary of `ReactBrowserEventEmitter` event handling: + * + * - Top-level delegation is used to trap most native browser events. This + * may only occur in the main thread and is the responsibility of + * ReactDOMEventListener, which is injected and can therefore support + * pluggable event sources. This is the only work that occurs in the main + * thread. + * + * - We normalize and de-duplicate events to account for browser quirks. This + * may be done in the worker thread. + * + * - Forward these native events (with the associated top-level type used to + * trap it) to `EventPluginHub`, which in turn will ask plugins if they want + * to extract any synthetic events. + * + * - The `EventPluginHub` will then process each event by annotating them with + * "dispatches", a sequence of listeners and IDs that care about that event. + * + * - The `EventPluginHub` then dispatches the events. + * + * Overview of React and the event system: + * + * +------------+ . + * | DOM | . + * +------------+ . + * | . + * v . + * +------------+ . + * | ReactEvent | . + * | Listener | . + * +------------+ . +-----------+ + * | . +--------+|SimpleEvent| + * | . | |Plugin | + * +-----|------+ . v +-----------+ + * | | | . +--------------+ +------------+ + * | +-----------.--->|EventPluginHub| | Event | + * | | . | | +-----------+ | Propagators| + * | ReactEvent | . | | |TapEvent | |------------| + * | Emitter | . | |<---+|Plugin | |other plugin| + * | | . | | +-----------+ | utilities | + * | +-----------.--->| | +------------+ + * | | | . +--------------+ + * +-----|------+ . ^ +-----------+ + * | . | |Enter/Leave| + * + . +-------+|Plugin | + * +-------------+ . +-----------+ + * | application | . + * |-------------| . + * | | . + * | | . + * +-------------+ . + * . + * React Core . General Purpose Event Plugin System + */ + +var alreadyListeningTo = {}; +var reactTopListenersCounter = 0; + +/** + * To ensure no conflicts with other potential React instances on the page + */ +var topListenersIDKey = '_reactListenersID' + ('' + Math.random()).slice(2); + +function getListeningForDocument(mountAt) { + // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty` + // directly. + if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) { + mountAt[topListenersIDKey] = reactTopListenersCounter++; + alreadyListeningTo[mountAt[topListenersIDKey]] = {}; + } + return alreadyListeningTo[mountAt[topListenersIDKey]]; +} + +/** + * We listen for bubbled touch events on the document object. + * + * Firefox v8.01 (and possibly others) exhibited strange behavior when + * mounting `onmousemove` events at some node that was not the document + * element. The symptoms were that if your mouse is not moving over something + * contained within that mount point (for example on the background) the + * top-level listeners for `onmousemove` won't be called. However, if you + * register the `mousemove` on the document object, then it will of course + * catch all `mousemove`s. This along with iOS quirks, justifies restricting + * top-level listeners to the document object only, at least for these + * movement types of events and possibly all events. + * + * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html + * + * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but + * they bubble to document. + * + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @param {object} mountAt Container where to mount the listener + */ +function listenTo(registrationName, mountAt) { + var isListening = getListeningForDocument(mountAt); + var dependencies = registrationNameDependencies[registrationName]; + + for (var i = 0; i < dependencies.length; i++) { + var dependency = dependencies[i]; + if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) { + switch (dependency) { + case TOP_SCROLL: + trapCapturedEvent(TOP_SCROLL, mountAt); + break; + case TOP_FOCUS: + case TOP_BLUR: + trapCapturedEvent(TOP_FOCUS, mountAt); + trapCapturedEvent(TOP_BLUR, mountAt); + // We set the flag for a single dependency later in this function, + // but this ensures we mark both as attached rather than just one. + isListening[TOP_BLUR] = true; + isListening[TOP_FOCUS] = true; + break; + case TOP_CANCEL: + case TOP_CLOSE: + if (isEventSupported(getRawEventName(dependency))) { + trapCapturedEvent(dependency, mountAt); + } + break; + case TOP_INVALID: + case TOP_SUBMIT: + case TOP_RESET: + // We listen to them on the target DOM elements. + // Some of them bubble so we don't want them to fire twice. + break; + default: + // By default, listen on the top level to all non-media events. + // Media events don't bubble so adding the listener wouldn't do anything. + var isMediaEvent = mediaEventTypes.indexOf(dependency) !== -1; + if (!isMediaEvent) { + trapBubbledEvent(dependency, mountAt); + } + break; + } + isListening[dependency] = true; + } + } +} + +function isListeningToAllDependencies(registrationName, mountAt) { + var isListening = getListeningForDocument(mountAt); + var dependencies = registrationNameDependencies[registrationName]; + for (var i = 0; i < dependencies.length; i++) { + var dependency = dependencies[i]; + if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) { + return false; + } + } + return true; +} + +function getActiveElement(doc) { + doc = doc || (typeof document !== 'undefined' ? document : undefined); + if (typeof doc === 'undefined') { + return null; + } + try { + return doc.activeElement || doc.body; + } catch (e) { + return doc.body; + } +} + +/** + * Given any node return the first leaf node without children. + * + * @param {DOMElement|DOMTextNode} node + * @return {DOMElement|DOMTextNode} + */ +function getLeafNode(node) { + while (node && node.firstChild) { + node = node.firstChild; + } + return node; +} + +/** + * Get the next sibling within a container. This will walk up the + * DOM if a node's siblings have been exhausted. + * + * @param {DOMElement|DOMTextNode} node + * @return {?DOMElement|DOMTextNode} + */ +function getSiblingNode(node) { + while (node) { + if (node.nextSibling) { + return node.nextSibling; + } + node = node.parentNode; + } +} + +/** + * Get object describing the nodes which contain characters at offset. + * + * @param {DOMElement|DOMTextNode} root + * @param {number} offset + * @return {?object} + */ +function getNodeForCharacterOffset(root, offset) { + var node = getLeafNode(root); + var nodeStart = 0; + var nodeEnd = 0; + + while (node) { + if (node.nodeType === TEXT_NODE) { + nodeEnd = nodeStart + node.textContent.length; + + if (nodeStart <= offset && nodeEnd >= offset) { + return { + node: node, + offset: offset - nodeStart + }; + } + + nodeStart = nodeEnd; + } + + node = getLeafNode(getSiblingNode(node)); + } +} + +/** + * @param {DOMElement} outerNode + * @return {?object} + */ +function getOffsets(outerNode) { + var ownerDocument = outerNode.ownerDocument; + + var win = ownerDocument && ownerDocument.defaultView || window; + var selection = win.getSelection && win.getSelection(); + + if (!selection || selection.rangeCount === 0) { + return null; + } + + var anchorNode = selection.anchorNode, + anchorOffset = selection.anchorOffset, + focusNode = selection.focusNode, + focusOffset = selection.focusOffset; + + // In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the + // up/down buttons on an . Anonymous divs do not seem to + // expose properties, triggering a "Permission denied error" if any of its + // properties are accessed. The only seemingly possible way to avoid erroring + // is to access a property that typically works for non-anonymous divs and + // catch any error that may otherwise arise. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=208427 + + try { + /* eslint-disable no-unused-expressions */ + anchorNode.nodeType; + focusNode.nodeType; + /* eslint-enable no-unused-expressions */ + } catch (e) { + return null; + } + + return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset); +} + +/** + * Returns {start, end} where `start` is the character/codepoint index of + * (anchorNode, anchorOffset) within the textContent of `outerNode`, and + * `end` is the index of (focusNode, focusOffset). + * + * Returns null if you pass in garbage input but we should probably just crash. + * + * Exported only for testing. + */ +function getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) { + var length = 0; + var start = -1; + var end = -1; + var indexWithinAnchor = 0; + var indexWithinFocus = 0; + var node = outerNode; + var parentNode = null; + + outer: while (true) { + var next = null; + + while (true) { + if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) { + start = length + anchorOffset; + } + if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) { + end = length + focusOffset; + } + + if (node.nodeType === TEXT_NODE) { + length += node.nodeValue.length; + } + + if ((next = node.firstChild) === null) { + break; + } + // Moving from `node` to its first child `next`. + parentNode = node; + node = next; + } + + while (true) { + if (node === outerNode) { + // If `outerNode` has children, this is always the second time visiting + // it. If it has no children, this is still the first loop, and the only + // valid selection is anchorNode and focusNode both equal to this node + // and both offsets 0, in which case we will have handled above. + break outer; + } + if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) { + start = length; + } + if (parentNode === focusNode && ++indexWithinFocus === focusOffset) { + end = length; + } + if ((next = node.nextSibling) !== null) { + break; + } + node = parentNode; + parentNode = node.parentNode; + } + + // Moving from `node` to its next sibling `next`. + node = next; + } + + if (start === -1 || end === -1) { + // This should never happen. (Would happen if the anchor/focus nodes aren't + // actually inside the passed-in node.) + return null; + } + + return { + start: start, + end: end + }; +} + +/** + * In modern non-IE browsers, we can support both forward and backward + * selections. + * + * Note: IE10+ supports the Selection object, but it does not support + * the `extend` method, which means that even in modern IE, it's not possible + * to programmatically create a backward selection. Thus, for all IE + * versions, we use the old IE API to create our selections. + * + * @param {DOMElement|DOMTextNode} node + * @param {object} offsets + */ +function setOffsets(node, offsets) { + var doc = node.ownerDocument || document; + var win = doc && doc.defaultView || window; + + // Edge fails with "Object expected" in some scenarios. + // (For instance: TinyMCE editor used in a list component that supports pasting to add more, + // fails when pasting 100+ items) + if (!win.getSelection) { + return; + } + + var selection = win.getSelection(); + var length = node.textContent.length; + var start = Math.min(offsets.start, length); + var end = offsets.end === undefined ? start : Math.min(offsets.end, length); + + // IE 11 uses modern selection, but doesn't support the extend method. + // Flip backward selections, so we can set with a single range. + if (!selection.extend && start > end) { + var temp = end; + end = start; + start = temp; + } + + var startMarker = getNodeForCharacterOffset(node, start); + var endMarker = getNodeForCharacterOffset(node, end); + + if (startMarker && endMarker) { + if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) { + return; + } + var range = doc.createRange(); + range.setStart(startMarker.node, startMarker.offset); + selection.removeAllRanges(); + + if (start > end) { + selection.addRange(range); + selection.extend(endMarker.node, endMarker.offset); + } else { + range.setEnd(endMarker.node, endMarker.offset); + selection.addRange(range); + } + } +} + +function isTextNode(node) { + return node && node.nodeType === TEXT_NODE; +} + +function containsNode(outerNode, innerNode) { + if (!outerNode || !innerNode) { + return false; + } else if (outerNode === innerNode) { + return true; + } else if (isTextNode(outerNode)) { + return false; + } else if (isTextNode(innerNode)) { + return containsNode(outerNode, innerNode.parentNode); + } else if ('contains' in outerNode) { + return outerNode.contains(innerNode); + } else if (outerNode.compareDocumentPosition) { + return !!(outerNode.compareDocumentPosition(innerNode) & 16); + } else { + return false; + } +} + +function isInDocument(node) { + return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node); +} + +function getActiveElementDeep() { + var win = window; + var element = getActiveElement(); + while (element instanceof win.HTMLIFrameElement) { + // Accessing the contentDocument of a HTMLIframeElement can cause the browser + // to throw, e.g. if it has a cross-origin src attribute + try { + win = element.contentDocument.defaultView; + } catch (e) { + return element; + } + element = getActiveElement(win.document); + } + return element; +} + +/** + * @ReactInputSelection: React input selection module. Based on Selection.js, + * but modified to be suitable for react and has a couple of bug fixes (doesn't + * assume buttons have range selections allowed). + * Input selection module for React. + */ + +/** + * @hasSelectionCapabilities: we get the element types that support selection + * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart` + * and `selectionEnd` rows. + */ +function hasSelectionCapabilities(elem) { + var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); + return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true'); +} + +function getSelectionInformation() { + var focusedElem = getActiveElementDeep(); + return { + focusedElem: focusedElem, + selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection$1(focusedElem) : null + }; +} + +/** + * @restoreSelection: If any selection information was potentially lost, + * restore it. This is useful when performing operations that could remove dom + * nodes and place them back in, resulting in focus being lost. + */ +function restoreSelection(priorSelectionInformation) { + var curFocusedElem = getActiveElementDeep(); + var priorFocusedElem = priorSelectionInformation.focusedElem; + var priorSelectionRange = priorSelectionInformation.selectionRange; + if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) { + if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) { + setSelection(priorFocusedElem, priorSelectionRange); + } + + // Focusing a node can change the scroll position, which is undesirable + var ancestors = []; + var ancestor = priorFocusedElem; + while (ancestor = ancestor.parentNode) { + if (ancestor.nodeType === ELEMENT_NODE) { + ancestors.push({ + element: ancestor, + left: ancestor.scrollLeft, + top: ancestor.scrollTop + }); + } + } + + if (typeof priorFocusedElem.focus === 'function') { + priorFocusedElem.focus(); + } + + for (var i = 0; i < ancestors.length; i++) { + var info = ancestors[i]; + info.element.scrollLeft = info.left; + info.element.scrollTop = info.top; + } + } +} + +/** + * @getSelection: Gets the selection bounds of a focused textarea, input or + * contentEditable node. + * -@input: Look up selection bounds of this input + * -@return {start: selectionStart, end: selectionEnd} + */ +function getSelection$1(input) { + var selection = void 0; + + if ('selectionStart' in input) { + // Modern browser with input or textarea. + selection = { + start: input.selectionStart, + end: input.selectionEnd + }; + } else { + // Content editable or old IE textarea. + selection = getOffsets(input); + } + + return selection || { start: 0, end: 0 }; +} + +/** + * @setSelection: Sets the selection bounds of a textarea or input and focuses + * the input. + * -@input Set selection bounds of this input or textarea + * -@offsets Object of same form that is returned from get* + */ +function setSelection(input, offsets) { + var start = offsets.start, + end = offsets.end; + + if (end === undefined) { + end = start; + } + + if ('selectionStart' in input) { + input.selectionStart = start; + input.selectionEnd = Math.min(end, input.value.length); + } else { + setOffsets(input, offsets); + } +} + +var skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11; + +var eventTypes$3 = { + select: { + phasedRegistrationNames: { + bubbled: 'onSelect', + captured: 'onSelectCapture' + }, + dependencies: [TOP_BLUR, TOP_CONTEXT_MENU, TOP_DRAG_END, TOP_FOCUS, TOP_KEY_DOWN, TOP_KEY_UP, TOP_MOUSE_DOWN, TOP_MOUSE_UP, TOP_SELECTION_CHANGE] + } +}; + +var activeElement$1 = null; +var activeElementInst$1 = null; +var lastSelection = null; +var mouseDown = false; + +/** + * Get an object which is a unique representation of the current selection. + * + * The return value will not be consistent across nodes or browsers, but + * two identical selections on the same node will return identical objects. + * + * @param {DOMElement} node + * @return {object} + */ +function getSelection(node) { + if ('selectionStart' in node && hasSelectionCapabilities(node)) { + return { + start: node.selectionStart, + end: node.selectionEnd + }; + } else { + var win = node.ownerDocument && node.ownerDocument.defaultView || window; + var selection = win.getSelection(); + return { + anchorNode: selection.anchorNode, + anchorOffset: selection.anchorOffset, + focusNode: selection.focusNode, + focusOffset: selection.focusOffset + }; + } +} + +/** + * Get document associated with the event target. + * + * @param {object} nativeEventTarget + * @return {Document} + */ +function getEventTargetDocument(eventTarget) { + return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument; +} + +/** + * Poll selection to see whether it's changed. + * + * @param {object} nativeEvent + * @param {object} nativeEventTarget + * @return {?SyntheticEvent} + */ +function constructSelectEvent(nativeEvent, nativeEventTarget) { + // Ensure we have the right element, and that the user is not dragging a + // selection (this matches native `select` event behavior). In HTML5, select + // fires only on input and textarea thus if there's no focused element we + // won't dispatch. + var doc = getEventTargetDocument(nativeEventTarget); + + if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) { + return null; + } + + // Only fire when selection has actually changed. + var currentSelection = getSelection(activeElement$1); + if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) { + lastSelection = currentSelection; + + var syntheticEvent = SyntheticEvent.getPooled(eventTypes$3.select, activeElementInst$1, nativeEvent, nativeEventTarget); + + syntheticEvent.type = 'select'; + syntheticEvent.target = activeElement$1; + + accumulateTwoPhaseDispatches(syntheticEvent); + + return syntheticEvent; + } + + return null; +} + +/** + * This plugin creates an `onSelect` event that normalizes select events + * across form elements. + * + * Supported elements are: + * - input (see `isTextInputElement`) + * - textarea + * - contentEditable + * + * This differs from native browser implementations in the following ways: + * - Fires on contentEditable fields as well as inputs. + * - Fires for collapsed selection. + * - Fires after user input. + */ +var SelectEventPlugin = { + eventTypes: eventTypes$3, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var doc = getEventTargetDocument(nativeEventTarget); + // Track whether all listeners exists for this plugin. If none exist, we do + // not extract events. See #3639. + if (!doc || !isListeningToAllDependencies('onSelect', doc)) { + return null; + } + + var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window; + + switch (topLevelType) { + // Track the input node that has focus. + case TOP_FOCUS: + if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') { + activeElement$1 = targetNode; + activeElementInst$1 = targetInst; + lastSelection = null; + } + break; + case TOP_BLUR: + activeElement$1 = null; + activeElementInst$1 = null; + lastSelection = null; + break; + // Don't fire the event while the user is dragging. This matches the + // semantics of the native select event. + case TOP_MOUSE_DOWN: + mouseDown = true; + break; + case TOP_CONTEXT_MENU: + case TOP_MOUSE_UP: + case TOP_DRAG_END: + mouseDown = false; + return constructSelectEvent(nativeEvent, nativeEventTarget); + // Chrome and IE fire non-standard event when selection is changed (and + // sometimes when it hasn't). IE's event fires out of order with respect + // to key and input events on deletion, so we discard it. + // + // Firefox doesn't support selectionchange, so check selection status + // after each key entry. The selection changes after keydown and before + // keyup, but we check on keydown as well in the case of holding down a + // key, when multiple keydown events are fired but only one keyup is. + // This is also our approach for IE handling, for the reason above. + case TOP_SELECTION_CHANGE: + if (skipSelectionChangeEvent) { + break; + } + // falls through + case TOP_KEY_DOWN: + case TOP_KEY_UP: + return constructSelectEvent(nativeEvent, nativeEventTarget); + } + + return null; + } +}; + +/** + * Inject modules for resolving DOM hierarchy and plugin ordering. + */ +injection.injectEventPluginOrder(DOMEventPluginOrder); +setComponentTree(getFiberCurrentPropsFromNode$1, getInstanceFromNode$1, getNodeFromInstance$1); + +/** + * Some important event plugins included by default (without having to require + * them). + */ +injection.injectEventPluginsByName({ + SimpleEventPlugin: SimpleEventPlugin, + EnterLeaveEventPlugin: EnterLeaveEventPlugin, + ChangeEventPlugin: ChangeEventPlugin, + SelectEventPlugin: SelectEventPlugin, + BeforeInputEventPlugin: BeforeInputEventPlugin +}); + +var didWarnSelectedSetOnOption = false; +var didWarnInvalidChild = false; + +function flattenChildren(children) { + var content = ''; + + // Flatten children. We'll warn if they are invalid + // during validateProps() which runs for hydration too. + // Note that this would throw on non-element objects. + // Elements are stringified (which is normally irrelevant + // but matters for ). + React.Children.forEach(children, function (child) { + if (child == null) { + return; + } + content += child; + // Note: we don't warn about invalid children here. + // Instead, this is done separately below so that + // it happens during the hydration codepath too. + }); + + return content; +} + +/** + * Implements an