text: const Component = require('react').Component;
  const PropTypes = require('prop-types');
  const h = require('react-hyperscript');
  const inherits = require('util').inherits;
  const copyToClipboard = require('copy-to-clipboard');
  const connect = require('react-redux').connect;
  
  const Tooltip = require('./tooltip');
  
  CopyButton.contextTypes = {
    t: PropTypes.func,
  };
  
  module.exports = connect()(CopyButton);
  
  inherits(CopyButton, Component);
  
  function CopyButton() {
    Component.call(this);
  }
  
  // As parameters, accepts:
  // "value", which is the value to copy (mandatory)
  // "title", which is the text to show on hover (optional, defaults to 'Copy')
  CopyButton.prototype.render = function() {
    const props = this.props;
    const state = this.state || {};
  
    const value = props.value;
    const copied = state.copied;
  
    const message = copied ? this.context.t('copiedButton') : props.title || this.context.t('copyButton');
  
    return h('.copy-button', {
      style: {
        display: 'flex',
        alignItems: 'center',
      },
    }, [
  
      h(Tooltip, {
        title: message,
      }, [
        h('i.fa.fa-clipboard.cursor-pointer.color-orange', {
          style: {
            margin: '5px',
          },
          onClick: (event) => {
            event.preventDefault();
            event.stopPropagation();
            copyToClipboard(value);
            this.debounceRestore();
          },
        }),
      ]),
  
    ]);
  };
  
  CopyButton.prototype.debounceRestore = function() {
    this.setState({copied: true});
    clearTimeout(this.timeout);
    this.timeout = setTimeout(() => {
      this.setState({copied: false});
    }, 850);
  };
  