var _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; };

var _class, _temp;

function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import Instance from './instance.js';

var QRCode = (_temp = _class = function (_Component) {
  _inherits(QRCode, _Component);

  function QRCode() {
    _classCallCheck(this, QRCode);

    return _possibleConstructorReturn(this, _Component.apply(this, arguments));
  }

  QRCode.prototype.componentDidUpdate = function componentDidUpdate() {
    var _props = this.props,
        text = _props.text,
        _props$style = _props.style,
        style = _props$style === undefined ? {} : _props$style;

    if (!this.instance || !text) return;
    var width = Object.getUnitNum(style.width || 0);
    var height = Object.getUnitNum(style.height || 0);
    var color = style.color;
    var backgroundColor = style.backgroundColor;
    if (width) this.instance._htOption.width = width;
    if (height) this.instance._htOption.height = height;
    if (color) this.instance._htOption.colorDark = color;
    if (backgroundColor) this.instance._htOption.colorLight = backgroundColor;
    this.instance.makeCode(text);
  };

  QRCode.prototype.componentDidMount = function componentDidMount() {
    if (this.instance) return;
    var _props2 = this.props,
        text = _props2.text,
        _props2$style = _props2.style,
        style = _props2$style === undefined ? {} : _props2$style;

    this.instance = new Instance(this.$el, {
      text: text || '',
      width: Object.getUnitNum(style.width || 230),
      height: Object.getUnitNum(style.width || 230),
      colorDark: style.color || '#000000',
      colorLight: style.backgroundColor || '#ffffff',
      correctLevel: Instance.CorrectLevel.M // L,M,Q,H
    });
  };

  QRCode.prototype.render = function render() {
    var _this2 = this;

    var _props3 = this.props,
        text = _props3.text,
        style = _props3.style,
        children = _props3.children,
        others = _objectWithoutProperties(_props3, ['text', 'style', 'children']);

    if (!text) return null;
    return React.createElement(
      'span',
      _extends({ ref: function ref(el) {
          _this2.$el = el;
        }, style: style }, others, { className: 'qrcode' + (others.className ? ' ' + others.className : '') }),
      children
    );
  };

  return QRCode;
}(Component), _class.defaultProps = {}, _temp);
export { QRCode as default };
QRCode.propTypes = process.env.NODE_ENV !== "production" ? {
  text: PropTypes.string,
  style: PropTypes.object,
  children: PropTypes.node
} : {};