UNPKG

@atlaskit/renderer

Version:
87 lines (85 loc) 4.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _analyticsNext = require("@atlaskit/analytics-next"); var _extension = require("./extension"); var _ErrorBoundary = require("../../ui/Renderer/ErrorBoundary"); var _ExtensionRenderer = _interopRequireDefault(require("../../ui/ExtensionRenderer")); var _enums = require("../../analytics/enums"); var _analytics = require("@atlaskit/editor-common/analytics"); var _annotations = require("../../ui/annotations"); var _ValidationContext = require("../../ui/Renderer/ValidationContext"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var BodiedExtension = function BodiedExtension(props) { var children = props.children, _props$layout = props.layout, layout = _props$layout === void 0 ? 'default' : _props$layout, _props$path = props.path, path = _props$path === void 0 ? [] : _props$path, extensionKey = props.extensionKey, extensionType = props.extensionType, parameters = props.parameters, extensionViewportSizes = props.extensionViewportSizes, localId = props.localId, shouldDisplayExtensionAsInline = props.shouldDisplayExtensionAsInline, fireAnalyticsEvent = props.fireAnalyticsEvent; var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(), createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent; var removeOverflow = _react.default.Children.toArray(children) // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-explicit-any .map(function (child) { return /*#__PURE__*/_react.default.isValidElement(child) ? child.props.nodeType === 'table' : false; }).every(Boolean); var validationContextValue = (0, _react.useMemo)(function () { return { allowNestedTables: true }; }, []); return /*#__PURE__*/_react.default.createElement(_ErrorBoundary.ErrorBoundary, { component: _enums.ACTION_SUBJECT.RENDERER, componentId: _analytics.ACTION_SUBJECT_ID.EXTENSION_BODIED, createAnalyticsEvent: createAnalyticsEvent, additionalInfo: "".concat(extensionType, ": ").concat(extensionKey, " ") }, /*#__PURE__*/_react.default.createElement(_annotations.AnnotationsPositionContext.Provider, { value: { startPos: props.startPos + 1 } }, /*#__PURE__*/_react.default.createElement(_ValidationContext.ValidationContextProvider, { value: validationContextValue }, /*#__PURE__*/_react.default.createElement(_ExtensionRenderer.default // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , (0, _extends2.default)({}, props, { type: "bodiedExtension" }), function (_ref) { var node = _ref.node, result = _ref.result; try { if (result && /*#__PURE__*/_react.default.isValidElement(result)) { // Return the content directly if it's a valid JSX.Element return (0, _extension.renderExtension)(result, layout, { isTopLevel: path.length < 1, rendererAppearance: props.rendererAppearance, fireAnalyticsEvent: fireAnalyticsEvent }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node); } } catch (_unused) { /** We don't want this error to block renderer */ /** We keep rendering the default content */ } // Always return default content if anything goes wrong return (0, _extension.renderExtension)(children, layout, { isTopLevel: path.length < 1, rendererAppearance: props.rendererAppearance, fireAnalyticsEvent: fireAnalyticsEvent }, removeOverflow, parameters === null || parameters === void 0 ? void 0 : parameters.extensionId, extensionViewportSizes, undefined, localId, shouldDisplayExtensionAsInline, node); })))); }; var _default = exports.default = BodiedExtension;