Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / SSR / react-jobs / JobProvider.js
Size: Mime:
"use strict";

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

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

var _propTypes = _interopRequireDefault(require("prop-types"));

var _createJobContext = _interopRequireDefault(require("./createJobContext"));

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

function _interopRequireWildcard(obj) {
  if (obj && obj.__esModule) {
    return obj;
  } else {
    var newObj = {};

    if (obj != null) {
      for (var key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};

          if (desc.get || desc.set) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
    }

    newObj.default = obj;
    return newObj;
  }
}

class JobProvider extends _react.Component {
  constructor(props, context) {
    super(props, context); // This is a workaround because each element instance of a job needs its
    // own ids.  So between the bootstrapping and the render we need to reset
    // the id counter to ensure the ids will match.

    if (props.jobContext) {
      props.jobContext.resetIds();
    }
  }

  componentWillMount() {
    this.jobContext = this.props.jobContext || (0, _createJobContext.default)();
    this.rehydrateState = this.props.rehydrateState;
  }

  getChildContext() {
    return {
      jobs: {
        getNextId: this.jobContext.getNextId,
        register: this.jobContext.register,
        get: this.jobContext.get,
        getRehydrate: id => this.rehydrateState.jobs[id],
        removeRehydrate: id => {
          delete this.rehydrateState.jobs[id];
        }
      }
    };
  }

  render() {
    return _react.default.Children.only(this.props.children);
  }

}

JobProvider.propTypes = {
  children: _propTypes.default.node.isRequired,
  jobContext: _propTypes.default.shape({
    getNextId: _propTypes.default.func.isRequired,
    resetIds: _propTypes.default.func.isRequired,
    register: _propTypes.default.func.isRequired,
    get: _propTypes.default.func.isRequired,
    getState: _propTypes.default.func.isRequired
  }),
  rehydrateState: _propTypes.default.shape({
    jobs: _propTypes.default.object.isRequired
  })
};
JobProvider.defaultProps = {
  jobContext: null,
  rehydrateState: {
    jobs: {}
  }
};
JobProvider.childContextTypes = {
  jobs: _propTypes.default.shape({
    getNextId: _propTypes.default.func.isRequired,
    register: _propTypes.default.func.isRequired,
    get: _propTypes.default.func.isRequired,
    getRehydrate: _propTypes.default.func.isRequired,
    removeRehydrate: _propTypes.default.func.isRequired
  }).isRequired
};
var _default = JobProvider;
exports.default = _default;