UNPKG

@fluentui/react-northstar

Version:
72 lines (71 loc) 2.94 kB
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