'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

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 _react = require('react');

var _react2 = _interopRequireDefault(_react);

var _propTypes = require('prop-types');

var _propTypes2 = _interopRequireDefault(_propTypes);

var _reactIntl = require('react-intl');

var _reactRouterDom = require('react-router-dom');

var _immutable = require('immutable');

var _immutable2 = _interopRequireDefault(_immutable);

var _RecordForm = require('./RecordForm');

var _RecordForm2 = _interopRequireDefault(_RecordForm);

var _recordDataHelpers = require('../../helpers/recordDataHelpers');

var _MiniView = require('../../../styles/cspace-ui/MiniView.css');

var _MiniView2 = _interopRequireDefault(_MiniView);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

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

const propTypes = {
  config: _propTypes2.default.object,
  intl: _reactIntl.intlShape,
  recordType: _propTypes2.default.string,
  vocabulary: _propTypes2.default.string,
  csid: _propTypes2.default.string,
  data: _propTypes2.default.instanceOf(_immutable2.default.Map),
  readRecord: _propTypes2.default.func
};

class MiniView extends _react.Component {
  componentDidMount() {
    this.initRecord();
  }

  componentDidUpdate(prevProps) {
    const csid = this.props.csid;
    const prevCsid = prevProps.csid;


    if (csid !== prevCsid) {
      this.initRecord();
    }
  }

  initRecord() {
    var _props = this.props;
    const csid = _props.csid,
          readRecord = _props.readRecord;


    if (csid && readRecord) {
      readRecord();
    }
  }

  renderTitle() {
    var _props2 = this.props;
    const config = _props2.config,
          intl = _props2.intl,
          recordType = _props2.recordType,
          vocabulary = _props2.vocabulary,
          data = _props2.data;


    const recordTypeConfig = config.recordTypes[recordType];
    const title = recordTypeConfig.title(data, { config, intl });

    if (!title) {
      return _react2.default.createElement(
        'h3',
        null,
        _react2.default.createElement('br', null)
      );
    }

    const csid = (0, _recordDataHelpers.getCsid)(data);
    const path = ['/record', recordType, vocabulary, csid].filter(part => !!part).join('/');

    return _react2.default.createElement(
      'h3',
      null,
      _react2.default.createElement(
        _reactRouterDom.Link,
        { to: path },
        title
      )
    );
  }

  render() {
    var _props3 = this.props;

    const vocabulary = _props3.vocabulary,
          remainingProps = _objectWithoutProperties(_props3, ['vocabulary']);

    const className = vocabulary ? _MiniView2.default.authority : _MiniView2.default.procedure;

    return _react2.default.createElement(
      'div',
      { className: className },
      this.renderTitle(),
      _react2.default.createElement(_RecordForm2.default, _extends({
        readOnly: true,
        formName: 'mini',
        vocabulary: vocabulary
      }, remainingProps))
    );
  }
}

exports.default = MiniView;
MiniView.propTypes = propTypes;