|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- import React, { Component } from 'react';
- import 'memoize-one';
- import '@emotion/core';
- import 'react-dom';
- import 'prop-types';
- import { k as handleInputChange } from '../../dist/utils-711604ed.esm.js';
- import '../../dist/index-52626178.esm.js';
- import { S as Select } from '../../dist/Select-073d29ba.esm.js';
- import '@emotion/css';
- import 'react-input-autosize';
- import { m as manageState } from '../../dist/stateManager-149692c5.esm.js';
-
- function _extends() { _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); }
-
- 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; }
-
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
- var defaultProps = {
- cacheOptions: false,
- defaultOptions: false,
- filterOption: null,
- isLoading: false
- };
- var makeAsyncSelect = function makeAsyncSelect(SelectComponent) {
- var _class, _temp;
-
- return _temp = _class =
- /*#__PURE__*/
- function (_Component) {
- _inheritsLoose(Async, _Component);
-
- function Async(props) {
- var _this;
-
- _this = _Component.call(this) || this;
- _this.select = void 0;
- _this.lastRequest = void 0;
- _this.mounted = false;
- _this.optionsCache = {};
-
- _this.handleInputChange = function (newValue, actionMeta) {
- var _this$props = _this.props,
- cacheOptions = _this$props.cacheOptions,
- onInputChange = _this$props.onInputChange; // TODO
-
- var inputValue = handleInputChange(newValue, actionMeta, onInputChange);
-
- if (!inputValue) {
- delete _this.lastRequest;
-
- _this.setState({
- inputValue: '',
- loadedInputValue: '',
- loadedOptions: [],
- isLoading: false,
- passEmptyOptions: false
- });
-
- return;
- }
-
- if (cacheOptions && _this.optionsCache[inputValue]) {
- _this.setState({
- inputValue: inputValue,
- loadedInputValue: inputValue,
- loadedOptions: _this.optionsCache[inputValue],
- isLoading: false,
- passEmptyOptions: false
- });
- } else {
- var request = _this.lastRequest = {};
-
- _this.setState({
- inputValue: inputValue,
- isLoading: true,
- passEmptyOptions: !_this.state.loadedInputValue
- }, function () {
- _this.loadOptions(inputValue, function (options) {
- if (!_this.mounted) return;
-
- if (options) {
- _this.optionsCache[inputValue] = options;
- }
-
- if (request !== _this.lastRequest) return;
- delete _this.lastRequest;
-
- _this.setState({
- isLoading: false,
- loadedInputValue: inputValue,
- loadedOptions: options || [],
- passEmptyOptions: false
- });
- });
- });
- }
-
- return inputValue;
- };
-
- _this.state = {
- defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,
- inputValue: typeof props.inputValue !== 'undefined' ? props.inputValue : '',
- isLoading: props.defaultOptions === true,
- loadedOptions: [],
- passEmptyOptions: false
- };
- return _this;
- }
-
- var _proto = Async.prototype;
-
- _proto.componentDidMount = function componentDidMount() {
- var _this2 = this;
-
- this.mounted = true;
- var defaultOptions = this.props.defaultOptions;
- var inputValue = this.state.inputValue;
-
- if (defaultOptions === true) {
- this.loadOptions(inputValue, function (options) {
- if (!_this2.mounted) return;
- var isLoading = !!_this2.lastRequest;
-
- _this2.setState({
- defaultOptions: options || [],
- isLoading: isLoading
- });
- });
- }
- };
-
- _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
- // if the cacheOptions prop changes, clear the cache
- if (nextProps.cacheOptions !== this.props.cacheOptions) {
- this.optionsCache = {};
- }
-
- if (nextProps.defaultOptions !== this.props.defaultOptions) {
- this.setState({
- defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined
- });
- }
- };
-
- _proto.componentWillUnmount = function componentWillUnmount() {
- this.mounted = false;
- };
-
- _proto.focus = function focus() {
- this.select.focus();
- };
-
- _proto.blur = function blur() {
- this.select.blur();
- };
-
- _proto.loadOptions = function loadOptions(inputValue, callback) {
- var loadOptions = this.props.loadOptions;
- if (!loadOptions) return callback();
- var loader = loadOptions(inputValue, callback);
-
- if (loader && typeof loader.then === 'function') {
- loader.then(callback, function () {
- return callback();
- });
- }
- };
-
- _proto.render = function render() {
- var _this3 = this;
-
- var _this$props2 = this.props,
- loadOptions = _this$props2.loadOptions,
- isLoadingProp = _this$props2.isLoading,
- props = _objectWithoutPropertiesLoose(_this$props2, ["loadOptions", "isLoading"]);
-
- var _this$state = this.state,
- defaultOptions = _this$state.defaultOptions,
- inputValue = _this$state.inputValue,
- isLoading = _this$state.isLoading,
- loadedInputValue = _this$state.loadedInputValue,
- loadedOptions = _this$state.loadedOptions,
- passEmptyOptions = _this$state.passEmptyOptions;
- var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];
- return React.createElement(SelectComponent, _extends({}, props, {
- ref: function ref(_ref) {
- _this3.select = _ref;
- },
- options: options,
- isLoading: isLoading || isLoadingProp,
- onInputChange: this.handleInputChange
- }));
- };
-
- return Async;
- }(Component), _class.defaultProps = defaultProps, _temp;
- };
- var SelectState = manageState(Select);
- var Async = makeAsyncSelect(SelectState);
-
- export default Async;
- export { defaultProps, makeAsyncSelect };
|