@fluentui/react-northstar
Version:
A themable React component library.
72 lines (71 loc) • 2.94 kB
JavaScript
import _isEmpty from "lodash/isEmpty";
import { FocusZone, getElementType, deprecated_getTelemetry as getTelemetry, getUnhandledProps, unstable_getAccessibility as getAccessibility, unstable_getStyles as getStyles } from '@fluentui/react-bindings';
import { noopRenderer } from '@fluentui/react-northstar-styles-renderer';
import { emptyTheme } from '@fluentui/styles';
import { logProviderMissingWarning } from './providerMissingHandler';
export var renderComponent = function renderComponent(config, context) {
var className = config.className,
displayName = config.displayName,
handledProps = config.handledProps,
props = config.props,
state = config.state,
actionHandlers = config.actionHandlers,
render = config.render,
_config$saveDebug = config.saveDebug,
saveDebug = _config$saveDebug === void 0 ? function () {} : _config$saveDebug;
if (_isEmpty(context)) {
logProviderMissingWarning();
}
var _getTelemetry = getTelemetry(displayName, context.telemetry, config.isFirstRenderRef),
setStart = _getTelemetry.setStart,
setEnd = _getTelemetry.setEnd;
var rtl = context.rtl || false;
setStart();
var ElementType = getElementType(props);
var unhandledProps = getUnhandledProps(handledProps, props);
var stateAndProps = Object.assign({}, state, props);
var accessibility = getAccessibility(displayName, props.accessibility, stateAndProps, rtl, actionHandlers);
var _getStyles = getStyles({
allDisplayNames: [displayName],
className: className,
disableAnimations: context.disableAnimations || false,
primaryDisplayName: displayName,
componentProps: stateAndProps,
inlineStylesProps: stateAndProps,
renderer: context.renderer || noopRenderer,
rtl: rtl,
saveDebug: saveDebug,
theme: context.theme || emptyTheme,
performance: Object.assign({}, context.performance, {
// we cannot enable caching for class components
enableStylesCaching: false,
enableBooleanVariablesCaching: false
}),
telemetry: context.telemetry
}),
classes = _getStyles.classes,
variables = _getStyles.variables,
styles = _getStyles.styles,
theme = _getStyles.theme;
var resolvedConfig = {
ElementType: ElementType,
unhandledProps: unhandledProps,
classes: classes,
variables: variables,
styles: styles,
accessibility: accessibility,
rtl: rtl,
theme: theme
};
if (accessibility.focusZone) {
var originalElementType = resolvedConfig.ElementType;
resolvedConfig.ElementType = FocusZone;
resolvedConfig.unhandledProps = Object.assign({}, resolvedConfig.unhandledProps, accessibility.focusZone.props);
resolvedConfig.unhandledProps.as = originalElementType;
resolvedConfig.unhandledProps.isRtl = resolvedConfig.rtl;
}
var element = render(resolvedConfig);
setEnd();
return element;
};
//# sourceMappingURL=renderComponent.js.map