/* @flow */ import React from 'react'; import PureRenderMixin from 'react-addons-pure-render-mixin'; import Animated from '../lib/animated'; import Select from 'react-select'; import i18n from '../i18n'; import InstantInvite from './InstantInvite'; import Flux from '../lib/flux'; import AnalyticsUtils from '../utils/AnalyticsUtils'; import InstantInviteActionCreators from '../actions/InstantInviteActionCreators'; import InstantInviteStore from '../stores/InstantInviteStore'; import StreamerModeStore from '../stores/StreamerModeStore'; import InstantInviteUtils from '../utils/InstantInviteUtils'; import GuildChannelStore from '../stores/views/GuildChannelStore'; import TransitionGroup from '../lib/transitions/TransitionGroup'; import Checkbox from './common/Checkbox'; import InvitePeriodExperimentStore from '../stores/experiments/InvitePeriodExperimentStore'; import createExperimentContainer from './experiments/ExperimentContainer'; import Spinner from './common/Spinner'; import Tooltip from './common/Tooltip'; import {ChannelTypes, ExperimentTypes, ExperimentBuckets} from '../Constants'; import '../styles/instant_invite_modal.styl'; const LOCATION = 'Invite Modal'; const MAX_AGE_OPTIONS = InstantInviteUtils.getMaxAgeOptions; const MAX_USES_OPTIONS = InstantInviteUtils.getMaxUsesOptions; function createAnimationMixin(reverse = false, duration = 250, easing = Animated.Easing.inOut(Animated.Easing.cubic)) { return { getInitialState() { return { opacity: new Animated.Value(0), }; }, componentDidAppear() { this.state.opacity.setValue(1); }, componentWillEnter(callback) { Animated.timing(this.state.opacity, {toValue: 1, duration, easing}).start(callback); }, componentWillLeave(callback) { Animated.timing(this.state.opacity, {toValue: 0, duration, easing}).start(callback); }, getAnimatedStyle() { return { opacity: this.state.opacity, }; }, }; } const BasicInstantInviteModal = React.createClass({ mixins: [createAnimationMixin()], render() { const {invite, guild, hide, maxAge, handleExpiresChange, showAdvanced} = this.props; let doesNotExpire = false; let instantInvite; let expireText; if (!invite) { instantInvite = ; } else { instantInvite = (