breact
Version:
Browser react utility
43 lines (35 loc) • 3.62 kB
JavaScript
/**
* Mount an element into dom
* @function mount
* @param {string|Object} container - Container element or it's id
* @param {Object} element - React element to mount.
* @returns {Promise}
*/
;
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _require = require('bwindow');
var get = _require.get;
var ReactDOM = require('react-dom');
/** @lends mount */
function mount(container, element) {
if (!container) {
return _promise2.default.reject(new Error('Container not found'));
}
if (typeof container === 'string') {
var document = get('document', { strict: true });
var found = document.getElementById(container);
if (!container) {
return _promise2.default.reject(new Error('Container not found: ' + container));
}
container = found;
}
return new _promise2.default(function (resolve, reject) {
return ReactDOM.render(element, container, function () {
return resolve();
});
});
}
module.exports = mount;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vdW50LmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJnZXQiLCJSZWFjdERPTSIsIm1vdW50IiwiY29udGFpbmVyIiwiZWxlbWVudCIsInJlamVjdCIsIkVycm9yIiwiZG9jdW1lbnQiLCJzdHJpY3QiLCJmb3VuZCIsImdldEVsZW1lbnRCeUlkIiwicmVzb2x2ZSIsInJlbmRlciIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBT0E7Ozs7Ozs7O2VBRWdCQSxRQUFRLFNBQVIsQzs7SUFBUkMsRyxZQUFBQSxHOztBQUNSLElBQU1DLFdBQVdGLFFBQVEsV0FBUixDQUFqQjs7QUFFQTtBQUNBLFNBQVNHLEtBQVQsQ0FBZ0JDLFNBQWhCLEVBQTJCQyxPQUEzQixFQUFvQztBQUNsQyxNQUFJLENBQUNELFNBQUwsRUFBZ0I7QUFDZCxXQUFPLGtCQUFRRSxNQUFSLENBQWUsSUFBSUMsS0FBSixDQUFVLHFCQUFWLENBQWYsQ0FBUDtBQUNEO0FBQ0QsTUFBSSxPQUFPSCxTQUFQLEtBQXFCLFFBQXpCLEVBQW1DO0FBQ2pDLFFBQU1JLFdBQVdQLElBQUksVUFBSixFQUFnQixFQUFFUSxRQUFRLElBQVYsRUFBaEIsQ0FBakI7QUFDQSxRQUFJQyxRQUFRRixTQUFTRyxjQUFULENBQXdCUCxTQUF4QixDQUFaO0FBQ0EsUUFBSSxDQUFDQSxTQUFMLEVBQWdCO0FBQ2QsYUFBTyxrQkFBUUUsTUFBUixDQUFlLElBQUlDLEtBQUosMkJBQWtDSCxTQUFsQyxDQUFmLENBQVA7QUFDRDtBQUNEQSxnQkFBWU0sS0FBWjtBQUNEOztBQUVELFNBQU8sc0JBQVksVUFBQ0UsT0FBRCxFQUFVTixNQUFWO0FBQUEsV0FDakJKLFNBQVNXLE1BQVQsQ0FBZ0JSLE9BQWhCLEVBQXlCRCxTQUF6QixFQUFvQztBQUFBLGFBQU1RLFNBQU47QUFBQSxLQUFwQyxDQURpQjtBQUFBLEdBQVosQ0FBUDtBQUdEO0FBQ0RFLE9BQU9DLE9BQVAsR0FBaUJaLEtBQWpCIiwiZmlsZSI6Im1vdW50LmpzIiwic291cmNlUm9vdCI6ImxpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW91bnQgYW4gZWxlbWVudCBpbnRvIGRvbVxuICogQGZ1bmN0aW9uIG1vdW50XG4gKiBAcGFyYW0ge3N0cmluZ3xPYmplY3R9IGNvbnRhaW5lciAtIENvbnRhaW5lciBlbGVtZW50IG9yIGl0J3MgaWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGVtZW50IC0gUmVhY3QgZWxlbWVudCB0byBtb3VudC5cbiAqIEByZXR1cm5zIHtQcm9taXNlfVxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3QgeyBnZXQgfSA9IHJlcXVpcmUoJ2J3aW5kb3cnKVxuY29uc3QgUmVhY3RET00gPSByZXF1aXJlKCdyZWFjdC1kb20nKVxuXG4vKiogQGxlbmRzIG1vdW50ICovXG5mdW5jdGlvbiBtb3VudCAoY29udGFpbmVyLCBlbGVtZW50KSB7XG4gIGlmICghY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQ29udGFpbmVyIG5vdCBmb3VuZCcpKVxuICB9XG4gIGlmICh0eXBlb2YgY29udGFpbmVyID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0KCdkb2N1bWVudCcsIHsgc3RyaWN0OiB0cnVlIH0pXG4gICAgbGV0IGZvdW5kID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKVxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBDb250YWluZXIgbm90IGZvdW5kOiAke2NvbnRhaW5lcn1gKSlcbiAgICB9XG4gICAgY29udGFpbmVyID0gZm91bmRcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIFJlYWN0RE9NLnJlbmRlcihlbGVtZW50LCBjb250YWluZXIsICgpID0+IHJlc29sdmUoKSlcbiAgKVxufVxubW9kdWxlLmV4cG9ydHMgPSBtb3VudFxuIl19