@atlaskit/renderer
Version:
Renderer component
87 lines (85 loc) • 4.8 kB
JavaScript
;
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;