# Source: Rect.js

    /**
     * @content 矩形对象功能组件
     * @author fjl 2019-6-18 下午2:52:36
     */
    import { NativeModules } from 'react-native';
    let X = NativeModules.JSRect;

    /**
     * @class Rect
     */
    export default class Rect {
      /**
       * 构造一个新的 Rect 对象。可通过无参构造和有参构造
       *
       * 有参参数，参数为xMin, yMin, xMax, yMax，均为Number类型
       * @memberOf Rect
       * @returns {Promise.<Rect>}
       */
      async createObj() {
        try {
          if (
            typeof arguments[0] === 'number' &&
            typeof arguments[1] === 'number' &&
            typeof arguments[2] === 'number' &&
            typeof arguments[3] === 'number'
          ) {
            var { RectId } = await X.createObjByXY(
              arguments[0],
              arguments[1],
              arguments[2],
              arguments[3]
            );
            var rect = new Rect();
            rect._MGRectId = RectId;
            return rect;
          } else {
            var { RectId } = await X.createObj();
            var rect = new Rect();
            rect._MGRectId = RectId;
            return rect;
          }
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取x最小值
       * @memberOf Rect
       * @returns {Promise<*>}
       */
      async getXMin() {
        try {
          let xMin = await X.getXMin(this._MGRectId);
          return xMin;
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取y最小值
       * @memberOf Rect
       * @returns {Promise<*>}
       */
      async getYMin() {
        try {
          let yMin = await X.getYMin(this._MGRectId);
          return yMin;
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取x最大值
       * @memberOf Rect
       * @returns {Promise<*>}
       */
      async getXMax() {
        try {
          let xMax = await X.getXMax(this._MGRectId);
          return xMax;
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取y最大值
       * @memberOf Rect
       * @returns {Promise<*>}
       */
      async getYMax() {
        try {
          let yMax = await X.getYMax(this._MGRectId);
          return yMax;
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 判断Rect对象是否有效或是否有用
       *
       * @memberof Rect
       * @static
       * @param {Rect} rect
       * @returns {boolean} true：有效；false：无效
       */
      static isValid(rect){
        try {
          if(rect === undefined || rect === null || rect._MGRectId === undefined || rect._MGRectId === null){
            return false;
          } else {
            return true;
          }
        } catch (e) {
          console.error(e);
        }
      }
    }