UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

59 lines 1.87 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; /* eslint-disable @repo/internal/react/no-class-components */ import React from 'react'; import { isSafeUrl } from '@atlaskit/adf-schema'; import { LazyLoadedDatasourceRenderFailedAnalyticsWrapper } from '@atlaskit/link-datasource'; import { setSelectedCardAppearance } from '../pm-plugins/doc'; export class DatasourceErrorBoundary extends React.Component { constructor(...args) { super(...args); _defineProperty(this, "state", { isError: false, error: null }); } static getDerivedStateFromError(error) { return { isError: true, error }; } componentDidCatch(error) { if (this.props.handleError) { this.props.handleError(); } // prevent re-render children with error if (this.state.isError) { this.setState({ isError: true, error }); } } render() { const { url, unsupportedComponent: UnsupportedComponent, view, datasourceModalType, datasourceId } = this.props; if (this.state.isError) { if (url && isSafeUrl(url)) { return /*#__PURE__*/React.createElement(LazyLoadedDatasourceRenderFailedAnalyticsWrapper, { datasourceId: datasourceId, error: this.state.error }, setSelectedCardAppearance('inline', undefined)(view.state, view.dispatch)); } else { const unsupportedComponent = UnsupportedComponent ? /*#__PURE__*/React.createElement(UnsupportedComponent, null) : null; return /*#__PURE__*/React.createElement(LazyLoadedDatasourceRenderFailedAnalyticsWrapper, { datasourceModalType: datasourceModalType, datasourceId: datasourceId, error: this.state.error }, unsupportedComponent); } } else { return this.props.children; } } }