react-gist
Version:
Github Gist React component
80 lines (62 loc) • 2.8 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
var Gist = /*#__PURE__*/function (_React$PureComponent) {
_inheritsLoose(Gist, _React$PureComponent);
function Gist() {
return _React$PureComponent.apply(this, arguments) || this;
}
var _proto = Gist.prototype;
_proto.componentDidMount = function componentDidMount() {
this._updateIframeContent();
};
_proto.componentDidUpdate = function componentDidUpdate(_prevProps, _prevState) {
this._updateIframeContent();
};
_proto._defineUrl = function _defineUrl() {
var _this$props = this.props,
id = _this$props.id,
file = _this$props.file;
var fileArg = file ? "?file=" + file : "";
return "https://gist.github.com/" + id + ".js" + fileArg;
};
_proto._updateIframeContent = function _updateIframeContent() {
var _this$props2 = this.props,
id = _this$props2.id,
file = _this$props2.file;
var iframe = this.iframeNode;
var doc = iframe.document;
if (iframe.contentDocument) doc = iframe.contentDocument;else if (iframe.contentWindow) doc = iframe.contentWindow.document;
var gistLink = this._defineUrl();
var gistScript = "<script type=\"text/javascript\" src=\"" + gistLink + "\"></script>";
var styles = "<style>*{font-size:12px;}</style>";
var elementId = file ? "gist-" + id + "-" + file : "gist-" + id;
var resizeScript = "onload=\"parent.document.getElementById('" + elementId + "').style.height=document.body.scrollHeight + 'px'\"";
var iframeHtml = "<html><head><base target=\"_parent\">" + styles + "</head><body " + resizeScript + ">" + gistScript + "</body></html>";
doc.open();
doc.writeln(iframeHtml);
doc.close();
};
_proto.render = function render() {
var _this = this;
var _this$props3 = this.props,
id = _this$props3.id,
file = _this$props3.file;
return /*#__PURE__*/_react["default"].createElement("iframe", {
ref: function ref(n) {
_this.iframeNode = n;
},
width: "100%",
frameBorder: 0,
id: file ? "gist-" + id + "-" + file : "gist-" + id
});
};
return Gist;
}(_react["default"].PureComponent);
var _default = Gist;
exports["default"] = _default;
module.exports = exports.default;