"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _typeof = require("@babel/runtime/helpers/typeof");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));

var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));

var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));

var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));

var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));

var React = _interopRequireWildcard(require("react"));

var PDFJS = _interopRequireWildcard(require("pdfjs-dist"));

var _lodash = _interopRequireDefault(require("lodash"));

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }

function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }

var ViewerNav = /*#__PURE__*/function (_React$Component) {
  (0, _inherits2.default)(ViewerNav, _React$Component);

  var _super = _createSuper(ViewerNav);

  function ViewerNav() {
    var _this;

    (0, _classCallCheck2.default)(this, ViewerNav);
    _this = _super.call(this);

    _this.handleChangeImg = function (newIndex) {
      if (_this.props.activeIndex === newIndex) {
        return;
      }

      _this.props.onChangeImg(newIndex);
    };

    _this.getPdfData = function (sourefiles, files) {
      var _this$props$cMapUrl = _this.props.cMapUrl,
          cMapUrl = _this$props$cMapUrl === void 0 ? 'cmaps/' : _this$props$cMapUrl;

      _lodash.default.forEach(sourefiles, function (item, index) {
        var pageNumber = files[item].pageNumber || 1;

        if (files[item].attachmentFiles && files[item].attachmentFiles[0].type.includes('pdf')) {
          PDFJS.getDocument({
            url: files[item].src,
            cMapUrl: cMapUrl,
            cMapPacked: true
          }).promise.then(function (pdfDoc_) {
            var pdfDoc = pdfDoc_;
            var canvas = document.createElement('canvas');
            var ctx = canvas.getContext('2d');
            pdfDoc.getPage(pageNumber).then(function (page) {
              var viewport = page.getViewport({
                scale: 1
              });
              var desiredHeight = 40;
              var scale = desiredHeight / viewport.height;
              var scaledViewport = page.getViewport({
                scale: scale
              });
              canvas.height = scaledViewport.height;
              canvas.width = scaledViewport.width; // Render PDF page into canvas context

              var renderContext = {
                canvasContext: ctx,
                viewport: scaledViewport
              };
              var renderTask = page.render(renderContext); // Wait for rendering to finish

              renderTask.promise.then(function () {
                var pdfNode = document.getElementById("pdf".concat(item));
                pdfNode.replaceChild(canvas, pdfNode.firstChild);
              });
            });
          });
        }
      });
    };

    _this.state = {};
    return _this;
  }

  (0, _createClass2.default)(ViewerNav, [{
    key: "componentWillReceiveProps",
    value: function componentWillReceiveProps(nextProps) {
      var _this2 = this;

      if (!_lodash.default.isEqual(this.props.sourefiles, nextProps.sourefiles)) {
        var pdfSourefiles = [];

        _lodash.default.forEach(nextProps.sourefiles, function (item) {
          if (!_this2.props.sourefiles.includes(item)) pdfSourefiles.push(item);
        });

        this.getPdfData(pdfSourefiles, nextProps.files);
      }
    }
  }, {
    key: "render",
    value: function render() {
      var _this3 = this;

      var releaseStyle = {
        width: "".concat(this.props.navbarWidth ? "".concat(this.props.navbarWidth, "px") : 'auto')
      };
      return /*#__PURE__*/React.createElement("div", {
        className: "".concat(this.props.prefixCls, "-navbar")
      }, /*#__PURE__*/React.createElement("p", null, this.props.activeIndex + 1, " / ", this.props.files.length), /*#__PURE__*/React.createElement("div", {
        className: "".concat(this.props.prefixCls, "-navbar-switch")
      }, /*#__PURE__*/React.createElement("i", {
        className: "fm fm-angle-left",
        onClick: this.props.onPrev
      }), /*#__PURE__*/React.createElement("div", {
        className: "".concat(this.props.prefixCls, "-list-switch"),
        ref: this.props.refNavBar
      }, /*#__PURE__*/React.createElement("div", {
        className: "".concat(this.props.prefixCls, "-list-release"),
        style: releaseStyle
      }, /*#__PURE__*/React.createElement("ul", {
        className: "".concat(this.props.prefixCls, "-list ").concat(this.props.prefixCls, "-list-transition")
      }, this.props.sourefiles.map(function (item, index) {
        var name = _this3.props.files[item].filename;
        return /*#__PURE__*/React.createElement("li", {
          key: item,
          className: "".concat(item === _this3.props.activeIndex ? 'active' : null, " ").concat(_this3.props.files[item].validateStatus === 'VALIDATED' ? 'proven-true' : null),
          onClick: function onClick() {
            _this3.handleChangeImg(item);
          },
          id: "pdf".concat(item)
        }, name && !name.slice(name.lastIndexOf('.') + 1).toLowerCase().includes('ofd') && _this3.props.files[item].src ? _this3.props.files[item].imageType.includes('pdf') ? /*#__PURE__*/React.createElement("div", null) : /*#__PURE__*/React.createElement("img", {
          src: _this3.props.files[item].src,
          alt: _this3.props.files[item].alt
        }) : /*#__PURE__*/React.createElement("div", {
          className: "empty"
        }, /*#__PURE__*/React.createElement("i", {
          className: "fm fm-receipt1"
        })), _this3.props.files[item].validateStatus === 'VALIDATED' && /*#__PURE__*/React.createElement("i", {
          className: "fm fm-proven-true"
        }));
      })))), /*#__PURE__*/React.createElement("i", {
        className: "fm fm-angle-right",
        onClick: this.props.onNext
      })));
    }
  }]);
  return ViewerNav;
}(React.Component);

exports.default = ViewerNav;