@atlaskit/renderer
Version:
Renderer component
43 lines (41 loc) • 1.71 kB
JavaScript
/* eslint-disable jsdoc/require-jsdoc */
import React, { useMemo } from 'react';
import { fg } from '@atlaskit/platform-feature-flags';
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
import { FabricChannel } from '@atlaskit/analytics-listeners';
import { EVENT_TYPE } from '@atlaskit/editor-common/analytics';
import RendererActions from '../../actions/index';
export var RendererContext = /*#__PURE__*/React.createContext(new RendererActions());
export function RendererActionsContext(_ref) {
var children = _ref.children,
context = _ref.context;
var _useAnalyticsEvents = useAnalyticsEvents(),
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
var actions = useMemo(function () {
return new RendererActions(true);
}, []);
// Remove this eventually when root cause is assessed
if (React.Children.count(children) > 1 && fg('confluence_frontend_fix_view_page_slo')) {
// Send event when we get more than 1 child
try {
throw new Error('Too many children');
} catch (e) {
var _ref2 = e,
stack = _ref2.stack;
createAnalyticsEvent({
eventType: EVENT_TYPE.TRACK,
action: 'rendered',
actionSubject: 'multipleChildren',
actionSubjectId: 'rendererActionsContext',
attributes: {
numChildren: React.Children.count(children),
stackTrace: stack
}
}).fire(FabricChannel.editor);
}
}
return /*#__PURE__*/React.createElement(RendererContext.Provider, {
value: context || actions
}, fg('confluence_frontend_fix_view_page_slo') ? React.Children.only(children) : children);
}
export var RendererActionsContextConsumer = RendererContext.Consumer;