UNPKG

@atlaskit/renderer

Version:
122 lines (121 loc) 5.79 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.CardErrorBoundary = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _adfSchema = require("@atlaskit/adf-schema"); var _link = _interopRequireDefault(require("@atlaskit/link")); var _linkDatasource = require("@atlaskit/link-datasource"); var _react = _interopRequireDefault(require("react")); var _ = require("./"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // Ignored via go/ees005 // eslint-disable-next-line @repo/internal/react/no-class-components var CardErrorBoundary = exports.CardErrorBoundary = /*#__PURE__*/function (_React$PureComponent) { function CardErrorBoundary() { var _this; (0, _classCallCheck2.default)(this, CardErrorBoundary); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, CardErrorBoundary, [].concat(args)); (0, _defineProperty2.default)(_this, "state", { isError: false, error: null }); (0, _defineProperty2.default)(_this, "onClickFallback", function (e) { var _this$props = _this.props, onClick = _this$props.onClick, url = _this$props.url; e.preventDefault(); if (onClick) { onClick(e, url); } }); return _this; } (0, _inherits2.default)(CardErrorBoundary, _React$PureComponent); return (0, _createClass2.default)(CardErrorBoundary, [{ key: "render", value: function render() { if (this.state.isError) { var _this$props2 = this.props, url = _this$props2.url, isDatasource = _this$props2.isDatasource, UnsupportedComponent = _this$props2.unsupportedComponent, datasourceId = _this$props2.datasourceId, onSetLinkTarget = _this$props2.onSetLinkTarget; if (url) { var actualTarget; if (onSetLinkTarget) { try { actualTarget = onSetLinkTarget(url); } catch (_unused) { // If URL parsing fails, use the original target } } var linkProps = _objectSpread({ href: url, onClick: this.onClickFallback }, actualTarget === '_blank' && { target: '_blank', rel: 'noreferrer noopener' }); var fallback = /*#__PURE__*/_react.default.createElement(_link.default, { href: linkProps.href, onClick: linkProps.onClick, target: linkProps.target, rel: linkProps.rel }, url); if (isDatasource) { if ((0, _adfSchema.isSafeUrl)(url)) { return /*#__PURE__*/_react.default.createElement(_linkDatasource.LazyLoadedDatasourceRenderFailedAnalyticsWrapper, { datasourceId: datasourceId, error: this.state.error }, /*#__PURE__*/_react.default.createElement(_.InlineCard // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , this.props)); } else { return /*#__PURE__*/_react.default.createElement(_linkDatasource.LazyLoadedDatasourceRenderFailedAnalyticsWrapper, { datasourceId: datasourceId, error: this.state.error }, fallback); } } else { return fallback; } } else { return /*#__PURE__*/_react.default.createElement(UnsupportedComponent, null); } } return this.props.children; } }, { key: "componentDidCatch", value: function componentDidCatch(_error) { this.setState({ isError: true, error: _error }); } }], [{ key: "getDerivedStateFromError", value: function getDerivedStateFromError(error) { return { isError: true, error: error }; } }]); }(_react.default.PureComponent);