text: "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.default = void 0;
  
  var _react = _interopRequireDefault(require("react"));
  
  var _propTypes = _interopRequireDefault(require("prop-types"));
  
  var _core = require("@emotion/core");
  
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  
  class StringControl extends _react.default.Component {
    constructor(...args) {
      super(...args);
  
      _defineProperty(this, "_sel", 0);
  
      _defineProperty(this, "_el", null);
  
      _defineProperty(this, "handleChange", e => {
        this._sel = e.target.selectionStart;
        this.props.onChange(e.target.value);
      });
    }
  
    // NOTE: This prevents the cursor from jumping to the end of the text for
    // nested inputs. In other words, this is not an issue on top-level text
    // fields such as the `title` of a collection post. However, it becomes an
    // issue on fields nested within other components, namely widgets nested
    // within a `markdown` widget. For example, the alt text on a block image
    // within markdown.
    // SEE: https://github.com/netlify/netlify-cms/issues/4539
    // SEE: https://github.com/netlify/netlify-cms/issues/3578
    componentDidUpdate() {
      if (this._el && this._el.selectionStart !== this._sel) {
        this._el.setSelectionRange(this._sel, this._sel);
      }
    }
  
    render() {
      const {
        forID,
        value,
        classNameWrapper,
        setActiveStyle,
        setInactiveStyle
      } = this.props;
      return (0, _core.jsx)("input", {
        ref: el => {
          this._el = el;
        },
        type: "text",
        id: forID,
        className: classNameWrapper,
        value: value || '',
        onChange: this.handleChange,
        onFocus: setActiveStyle,
        onBlur: setInactiveStyle
      });
    }
  
  }
  
  exports.default = StringControl;
  
  _defineProperty(StringControl, "propTypes", {
    onChange: _propTypes.default.func.isRequired,
    forID: _propTypes.default.string,
    value: _propTypes.default.node,
    classNameWrapper: _propTypes.default.string.isRequired,
    setActiveStyle: _propTypes.default.func.isRequired,
    setInactiveStyle: _propTypes.default.func.isRequired
  });
  
  _defineProperty(StringControl, "defaultProps", {
    value: ''
  });