//  Package imports.
import PropTypes from 'prop-types';
import React from 'react';
import spring from 'react-motion/lib/spring';
import Toggle from 'react-toggle';
import ImmutablePureComponent from 'react-immutable-pure-component';
import classNames from 'classnames';
//  Components.
import Icon from 'flavours/glitch/components/icon';
//  Utils.
import { withPassive } from 'flavours/glitch/util/dom_helpers';
import Motion from 'flavours/glitch/util/optional_motion';
import { assignHandlers } from 'flavours/glitch/util/react_helpers';
class ComposerOptionsDropdownContentItem extends ImmutablePureComponent {
  static propTypes = {
    active: PropTypes.bool,
    name: PropTypes.string,
    onChange: PropTypes.func,
    onClose: PropTypes.func,
    options: PropTypes.shape({
      icon: PropTypes.string,
      meta: PropTypes.node,
      on: PropTypes.bool,
      text: PropTypes.node,
    }),
  };
  handleActivate = (e) => {
    const {
      name,
      onChange,
      onClose,
      options: { on },
    } = this.props;
    //  If the escape key was pressed, we close the dropdown.
    if (e.key === 'Escape' && onClose) {
      onClose();
    //  Otherwise, we both close the dropdown and change the value.
    } else if (onChange && (!e.key || e.key === 'Enter')) {
      e.preventDefault();  //  Prevents change in focus on click
      if ((on === null || typeof on === 'undefined') && onClose) {
        onClose();
      }
      onChange(name);
    }
  }
  //  Rendering.
  render () {
    const {
      active,
      options: {
        icon,
        meta,
        on,
        text,
      },
    } = this.props;
    const computedClass = classNames('composer--options--dropdown--content--item', {
      active,
      lengthy: meta,
      'toggled-off': !on && on !== null && typeof on !== 'undefined',
      'toggled-on': on,
      'with-icon': icon,
    });
    let prefix = null;
    if (on !== null && typeof on !== 'undefined') {
      prefix =