{"version":3,"file":"TooltipHost.a6040c64.js","sources":["../../../node_modules/@fluentui/utilities/lib/overflow.js","../../../node_modules/@fluentui/react/lib/components/ResizeGroup/ResizeGroup.types.js","../../../node_modules/@fluentui/react/lib/components/ResizeGroup/ResizeGroup.base.js","../../../node_modules/@fluentui/react/lib/components/ResizeGroup/ResizeGroup.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/Tooltip.base.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/Tooltip.styles.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/Tooltip.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/Tooltip.types.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/TooltipHost.types.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/TooltipHost.base.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/TooltipHost.styles.js","../../../node_modules/@fluentui/react/lib/components/Tooltip/TooltipHost.js"],"sourcesContent":["/**\n * Detects whether an element's content has horizontal overflow\n *\n * @public\n * @param element - Element to check for overflow\n * @returns True if element's content overflows\n */\nexport function hasHorizontalOverflow(element) {\n    return element.clientWidth < element.scrollWidth;\n}\n/**\n * Detects whether an element's content has vertical overflow\n *\n * @public\n * @param element - Element to check for overflow\n * @returns True if element's content overflows\n */\nexport function hasVerticalOverflow(element) {\n    return element.clientHeight < element.scrollHeight;\n}\n/**\n * Detects whether an element's content has overflow in any direction\n *\n * @public\n * @param element - Element to check for overflow\n * @returns True if element's content overflows\n */\nexport function hasOverflow(element) {\n    return hasHorizontalOverflow(element) || hasVerticalOverflow(element);\n}\n//# sourceMappingURL=overflow.js.map","/**\n * {@docCategory ResizeGroup}\n */\nexport var ResizeGroupDirection;\n(function (ResizeGroupDirection) {\n    ResizeGroupDirection[ResizeGroupDirection[\"horizontal\"] = 0] = \"horizontal\";\n    ResizeGroupDirection[ResizeGroupDirection[\"vertical\"] = 1] = \"vertical\";\n})(ResizeGroupDirection || (ResizeGroupDirection = {}));\n//# sourceMappingURL=ResizeGroup.types.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { divProperties, getNativeProps } from '../../Utilities';\nimport { ResizeGroupDirection } from './ResizeGroup.types';\nimport { useConst, useMergedRefs, useAsync, useOnEvent, useWarnings } from '@fluentui/react-hooks';\nimport { useWindow } from '../../WindowProvider';\nvar RESIZE_DELAY = 16;\n/**\n * Returns a simple object is able to store measurements with a given key.\n */\nexport var getMeasurementCache = function () {\n    var measurementsCache = {};\n    return {\n        /**\n         * Checks if the provided data has a cacheKey. If it has a cacheKey and there is a\n         * corresponding entry in the measurementsCache, then it will return that value.\n         * Returns undefined otherwise.\n         */\n        getCachedMeasurement: function (data) {\n            if (data && data.cacheKey && measurementsCache.hasOwnProperty(data.cacheKey)) {\n                return measurementsCache[data.cacheKey];\n            }\n            return undefined;\n        },\n        /**\n         * Should be called whenever there is a new measurement associated with a given data object.\n         * If the data has a cacheKey, store that measurement in the measurementsCache.\n         */\n        addMeasurementToCache: function (data, measurement) {\n            if (data.cacheKey) {\n                measurementsCache[data.cacheKey] = measurement;\n            }\n        },\n    };\n};\n/**\n * Returns a function that is able to compute the next state for the ResizeGroup given the current\n * state and any measurement updates.\n */\nexport var getNextResizeGroupStateProvider = function (measurementCache) {\n    if (measurementCache === void 0) { measurementCache = getMeasurementCache(); }\n    var _measurementCache = measurementCache;\n    var _containerDimension;\n    /**\n     * Gets the width/height of the data rendered in a hidden div.\n     * @param measuredData - The data corresponding to the measurement we wish to take.\n     * @param getElementToMeasureDimension - A function that returns the measurement of the rendered data.\n     * Only called when the measurement is not in the cache.\n     */\n    function _getMeasuredDimension(measuredData, getElementToMeasureDimension) {\n        var cachedDimension = _measurementCache.getCachedMeasurement(measuredData);\n        if (cachedDimension !== undefined) {\n            return cachedDimension;\n        }\n        var measuredDimension = getElementToMeasureDimension();\n        _measurementCache.addMeasurementToCache(measuredData, measuredDimension);\n        return measuredDimension;\n    }\n    /**\n     * Will get the next IResizeGroupState based on the current data while trying to shrink contents\n     * to fit in the container.\n     * @param data - The initial data point to start measuring.\n     * @param onReduceData - Function that transforms the data into something that should render with less width/height.\n     * @param getElementToMeasureDimension - A function that returns the measurement of the rendered data.\n     * Only called when the measurement is not in the cache.\n     */\n    function _shrinkContentsUntilTheyFit(data, onReduceData, getElementToMeasureDimension) {\n        var dataToMeasure = data;\n        var measuredDimension = _getMeasuredDimension(data, getElementToMeasureDimension);\n        while (measuredDimension > _containerDimension) {\n            var nextMeasuredData = onReduceData(dataToMeasure);\n            // We don't want to get stuck in an infinite render loop when there are no more\n            // scaling steps, so implementations of onReduceData should return undefined when\n            // there are no more scaling states to apply.\n            if (nextMeasuredData === undefined) {\n                return {\n                    renderedData: dataToMeasure,\n                    resizeDirection: undefined,\n                    dataToMeasure: undefined,\n                };\n            }\n            measuredDimension = _measurementCache.getCachedMeasurement(nextMeasuredData);\n            // If the measurement isn't in the cache, we need to re-render with some data in a hidden div\n            if (measuredDimension === undefined) {\n                return {\n                    dataToMeasure: nextMeasuredData,\n                    resizeDirection: 'shrink',\n                };\n            }\n            dataToMeasure = nextMeasuredData;\n        }\n        return {\n            renderedData: dataToMeasure,\n            resizeDirection: undefined,\n            dataToMeasure: undefined,\n        };\n    }\n    /**\n     * This function should be called when the state changes in a manner that might allow for more content to fit\n     * on the screen, such as the window width/height growing.\n     * @param data - The initial data point to start measuring.\n     * @param onGrowData - Function that transforms the data into something that may take up more space when rendering.\n     * @param getElementToMeasureDimension - A function that returns the measurement of the rendered data.\n     * Only called when the measurement is not in the cache.\n     */\n    function _growDataUntilItDoesNotFit(data, onGrowData, getElementToMeasureDimension, onReduceData) {\n        var dataToMeasure = data;\n        var measuredDimension = _getMeasuredDimension(data, getElementToMeasureDimension);\n        while (measuredDimension < _containerDimension) {\n            var nextMeasuredData = onGrowData(dataToMeasure);\n            // We don't want to get stuck in an infinite render loop when there are no more\n            // scaling steps, so implementations of onGrowData should return undefined when\n            // there are no more scaling states to apply.\n            if (nextMeasuredData === undefined) {\n                return {\n                    renderedData: dataToMeasure,\n                    resizeDirection: undefined,\n                    dataToMeasure: undefined,\n                };\n            }\n            measuredDimension = _measurementCache.getCachedMeasurement(nextMeasuredData);\n            // If the measurement isn't in the cache, we need to re-render with some data in a hidden div\n            if (measuredDimension === undefined) {\n                return {\n                    dataToMeasure: nextMeasuredData,\n                };\n            }\n            dataToMeasure = nextMeasuredData;\n        }\n        // Once the loop is done, we should now shrink until the contents fit.\n        return __assign({ resizeDirection: 'shrink' }, _shrinkContentsUntilTheyFit(dataToMeasure, onReduceData, getElementToMeasureDimension));\n    }\n    /**\n     * Handles an update to the container width/height.\n     * Should only be called when we knew the previous container width/height.\n     * @param newDimension - The new width/height of the container.\n     * @param fullDimensionData - The initial data passed in as a prop to resizeGroup.\n     * @param renderedData - The data that was rendered prior to the container size changing.\n     * @param onGrowData - Set to true if the Resize group has an onGrowData function.\n     */\n    function _updateContainerDimension(newDimension, fullDimensionData, renderedData, onGrowData) {\n        var nextState;\n        if (newDimension > _containerDimension) {\n            if (onGrowData) {\n                nextState = {\n                    resizeDirection: 'grow',\n                    dataToMeasure: onGrowData(renderedData),\n                };\n            }\n            else {\n                nextState = {\n                    resizeDirection: 'shrink',\n                    dataToMeasure: fullDimensionData,\n                };\n            }\n        }\n        else {\n            nextState = {\n                resizeDirection: 'shrink',\n                dataToMeasure: renderedData,\n            };\n        }\n        _containerDimension = newDimension;\n        return __assign(__assign({}, nextState), { measureContainer: false });\n    }\n    function getNextState(props, currentState, getElementToMeasureDimension, newContainerDimension) {\n        // If there is no new container width/height or data to measure, there is no need for a new state update\n        if (newContainerDimension === undefined && currentState.dataToMeasure === undefined) {\n            return undefined;\n        }\n        if (newContainerDimension) {\n            // If we know the last container size and we rendered data at that width/height, we can do an optimized render\n            if (_containerDimension && currentState.renderedData && !currentState.dataToMeasure) {\n                return __assign(__assign({}, currentState), _updateContainerDimension(newContainerDimension, props.data, currentState.renderedData, props.onGrowData));\n            }\n            // If we are just setting the container width/height for the first time, we can't do any optimizations\n            _containerDimension = newContainerDimension;\n        }\n        var nextState = __assign(__assign({}, currentState), { measureContainer: false });\n        if (currentState.dataToMeasure) {\n            if (currentState.resizeDirection === 'grow' && props.onGrowData) {\n                nextState = __assign(__assign({}, nextState), _growDataUntilItDoesNotFit(currentState.dataToMeasure, props.onGrowData, getElementToMeasureDimension, props.onReduceData));\n            }\n            else {\n                nextState = __assign(__assign({}, nextState), _shrinkContentsUntilTheyFit(currentState.dataToMeasure, props.onReduceData, getElementToMeasureDimension));\n            }\n        }\n        return nextState;\n    }\n    /** Function that determines if we need to render content for measurement based on the measurement cache contents. */\n    function shouldRenderDataForMeasurement(dataToMeasure) {\n        if (!dataToMeasure || _measurementCache.getCachedMeasurement(dataToMeasure) !== undefined) {\n            return false;\n        }\n        return true;\n    }\n    function getInitialResizeGroupState(data) {\n        return {\n            dataToMeasure: __assign({}, data),\n            resizeDirection: 'grow',\n            measureContainer: true,\n        };\n    }\n    return {\n        getNextState: getNextState,\n        shouldRenderDataForMeasurement: shouldRenderDataForMeasurement,\n        getInitialResizeGroupState: getInitialResizeGroupState,\n    };\n};\n// Provides a context property that (if true) tells any child components that\n// they are only being used for measurement purposes and will not be visible.\nexport var MeasuredContext = React.createContext({ isMeasured: false });\n// Styles for the hidden div used for measurement\nvar hiddenDivStyles = { position: 'fixed', visibility: 'hidden' };\nvar hiddenParentStyles = { position: 'relative' };\nvar COMPONENT_NAME = 'ResizeGroup';\n/**\n * Use useReducer instead of userState because React is not batching the state updates\n * when state is set in callbacks of setTimeout or requestAnimationFrame.\n * See issue: https://github.com/facebook/react/issues/14259\n */\nfunction resizeDataReducer(state, action) {\n    var _a;\n    switch (action.type) {\n        case 'resizeData':\n            return __assign({}, action.value);\n        case 'dataToMeasure':\n            return __assign(__assign({}, state), { dataToMeasure: action.value, resizeDirection: 'grow', measureContainer: true });\n        default:\n            return __assign(__assign({}, state), (_a = {}, _a[action.type] = action.value, _a));\n    }\n}\nfunction useResizeState(props, nextResizeGroupStateProvider, rootRef) {\n    var initialStateData = useConst(function () { return nextResizeGroupStateProvider.getInitialResizeGroupState(props.data); });\n    var _a = React.useReducer(resizeDataReducer, initialStateData), resizeData = _a[0], dispatchResizeDataAction = _a[1];\n    // Reset state when new data is provided\n    React.useEffect(function () {\n        dispatchResizeDataAction({\n            type: 'dataToMeasure',\n            value: props.data,\n        });\n    }, [props.data]);\n    // Because it's possible that we may force more than one re-render per animation frame, we\n    // want to make sure that the RAF request is using the most recent data.\n    var stateRef = React.useRef(initialStateData);\n    stateRef.current = __assign({}, resizeData);\n    var updateResizeState = React.useCallback(function (nextState) {\n        if (nextState) {\n            dispatchResizeDataAction({\n                type: 'resizeData',\n                value: nextState,\n            });\n        }\n    }, []);\n    var remeasure = React.useCallback(function () {\n        if (rootRef.current) {\n            dispatchResizeDataAction({\n                type: 'measureContainer',\n                value: true,\n            });\n        }\n    }, [rootRef]);\n    return [stateRef, updateResizeState, remeasure];\n}\nfunction useResizingBehavior(props, rootRef) {\n    var nextResizeGroupStateProvider = useConst(getNextResizeGroupStateProvider);\n    // A div that can be used for the initial measurement so that we can avoid mounting a second instance\n    // of the component being measured for the initial render.\n    var initialHiddenDiv = React.useRef(null);\n    // A hidden div that is used for mounting a new instance of the component for measurement in a hidden\n    // div without unmounting the currently visible content.\n    var updateHiddenDiv = React.useRef(null);\n    // Tracks if any content has been rendered to the user. This enables us to do some performance optimizations\n    // for the initial render.\n    var hasRenderedContent = React.useRef(false);\n    var async = useAsync();\n    var _a = useResizeState(props, nextResizeGroupStateProvider, rootRef), stateRef = _a[0], updateResizeState = _a[1], remeasure = _a[2];\n    React.useEffect(function () {\n        var _a;\n        if (stateRef.current.renderedData) {\n            hasRenderedContent.current = true;\n            (_a = props.dataDidRender) === null || _a === void 0 ? void 0 : _a.call(props, stateRef.current.renderedData);\n        }\n    });\n    React.useEffect(function () {\n        async.requestAnimationFrame(function () {\n            var containerDimension = undefined;\n            if (stateRef.current.measureContainer && rootRef.current) {\n                var boundingRect = rootRef.current.getBoundingClientRect();\n                containerDimension =\n                    props.direction === ResizeGroupDirection.vertical ? boundingRect.height : boundingRect.width;\n            }\n            var nextState = nextResizeGroupStateProvider.getNextState(props, stateRef.current, function () {\n                var refToMeasure = !hasRenderedContent.current ? initialHiddenDiv : updateHiddenDiv;\n                if (!refToMeasure.current) {\n                    return 0;\n                }\n                var measuredBoundingRect = refToMeasure.current.getBoundingClientRect();\n                return props.direction === ResizeGroupDirection.vertical\n                    ? measuredBoundingRect.height\n                    : measuredBoundingRect.width;\n            }, containerDimension);\n            updateResizeState(nextState);\n        }, rootRef.current);\n    });\n    var win = useWindow();\n    useOnEvent(win, 'resize', async.debounce(remeasure, RESIZE_DELAY, { leading: true }));\n    var dataNeedsMeasuring = nextResizeGroupStateProvider.shouldRenderDataForMeasurement(stateRef.current.dataToMeasure);\n    var isInitialMeasure = !hasRenderedContent.current && dataNeedsMeasuring;\n    return [\n        stateRef.current.dataToMeasure,\n        stateRef.current.renderedData,\n        remeasure,\n        initialHiddenDiv,\n        updateHiddenDiv,\n        dataNeedsMeasuring,\n        isInitialMeasure,\n    ];\n}\nfunction useDebugWarnings(props) {\n    if (process.env.NODE_ENV !== 'production') {\n        // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n        useWarnings({\n            name: COMPONENT_NAME,\n            props: props,\n            deprecations: { styles: 'className' },\n        });\n    }\n}\nvar measuredContextValue = { isMeasured: true };\nexport var ResizeGroupBase = React.forwardRef(function (props, forwardedRef) {\n    var rootRef = React.useRef(null);\n    // The root div which is the container inside of which we are trying to fit content.\n    var mergedRootRef = useMergedRefs(rootRef, forwardedRef);\n    var _a = useResizingBehavior(props, rootRef), dataToMeasure = _a[0], renderedData = _a[1], remeasure = _a[2], initialHiddenDiv = _a[3], updateHiddenDiv = _a[4], dataNeedsMeasuring = _a[5], isInitialMeasure = _a[6];\n    React.useImperativeHandle(props.componentRef, function () { return ({ remeasure: remeasure }); }, [remeasure]);\n    useDebugWarnings(props);\n    var className = props.className, onRenderData = props.onRenderData;\n    var divProps = getNativeProps(props, divProperties, ['data']);\n    // We only ever render the final content to the user. All measurements are done in a hidden div.\n    // For the initial render, we want this to be as fast as possible, so we need to make sure that we only mount one\n    // version of the component for measurement and the final render. For renders that update what is on screen, we\n    // want to make sure that there are no jarring effects such as the screen flashing as we apply scaling steps for\n    // measurement. In the update case, we mount a second version of the component just for measurement purposes and\n    // leave the rendered content untouched until we know the next state to show to the user.\n    return (React.createElement(\"div\", __assign({}, divProps, { className: className, ref: mergedRootRef }),\n        React.createElement(\"div\", { style: hiddenParentStyles },\n            dataNeedsMeasuring && !isInitialMeasure && (React.createElement(\"div\", { style: hiddenDivStyles, ref: updateHiddenDiv },\n                React.createElement(MeasuredContext.Provider, { value: measuredContextValue }, onRenderData(dataToMeasure)))),\n            React.createElement(\"div\", { ref: initialHiddenDiv, style: isInitialMeasure ? hiddenDivStyles : undefined, \"data-automation-id\": \"visibleContent\" }, isInitialMeasure ? onRenderData(dataToMeasure) : renderedData && onRenderData(renderedData)))));\n});\nResizeGroupBase.displayName = 'ResizeGroupBase';\n//# sourceMappingURL=ResizeGroup.base.js.map","import { ResizeGroupBase } from './ResizeGroup.base';\nexport var ResizeGroup = ResizeGroupBase;\n//# sourceMappingURL=ResizeGroup.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { classNamesFunction, divProperties, getNativeProps } from '../../Utilities';\nimport { Callout } from '../../Callout';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nvar getClassNames = classNamesFunction();\nvar TooltipBase = /** @class */ (function (_super) {\n    __extends(TooltipBase, _super);\n    function TooltipBase() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._onRenderContent = function (props) {\n            if (typeof props.content === 'string') {\n                return React.createElement(\"p\", { className: _this._classNames.subText }, props.content);\n            }\n            else {\n                return React.createElement(\"div\", { className: _this._classNames.subText }, props.content);\n            }\n        };\n        return _this;\n    }\n    TooltipBase.prototype.render = function () {\n        var _a = this.props, className = _a.className, calloutProps = _a.calloutProps, directionalHint = _a.directionalHint, directionalHintForRTL = _a.directionalHintForRTL, styles = _a.styles, id = _a.id, maxWidth = _a.maxWidth, _b = _a.onRenderContent, onRenderContent = _b === void 0 ? this._onRenderContent : _b, targetElement = _a.targetElement, theme = _a.theme;\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            className: className || (calloutProps && calloutProps.className),\n            beakWidth: calloutProps && calloutProps.isBeakVisible ? calloutProps.beakWidth : 0,\n            gapSpace: calloutProps && calloutProps.gapSpace,\n            maxWidth: maxWidth,\n        });\n        return (React.createElement(Callout, __assign({ target: targetElement, directionalHint: directionalHint, directionalHintForRTL: directionalHintForRTL }, calloutProps, getNativeProps(this.props, divProperties, ['id']), { className: this._classNames.root }),\n            React.createElement(\"div\", { className: this._classNames.content, id: id, onFocus: this.props.onFocus, onMouseEnter: this.props.onMouseEnter, onMouseLeave: this.props.onMouseLeave }, onRenderContent(this.props, this._onRenderContent))));\n    };\n    // Specify default props values\n    TooltipBase.defaultProps = {\n        directionalHint: DirectionalHint.topCenter,\n        maxWidth: '364px',\n        calloutProps: {\n            isBeakVisible: true,\n            beakWidth: 16,\n            gapSpace: 0,\n            setInitialFocus: true,\n            doNotLayer: false,\n        },\n    };\n    return TooltipBase;\n}(React.Component));\nexport { TooltipBase };\n//# sourceMappingURL=Tooltip.base.js.map","import { AnimationClassNames } from '../../Styling';\nexport var getStyles = function (props) {\n    var className = props.className, _a = props.beakWidth, beakWidth = _a === void 0 ? 16 : _a, _b = props.gapSpace, gapSpace = _b === void 0 ? 0 : _b, maxWidth = props.maxWidth, theme = props.theme;\n    var semanticColors = theme.semanticColors, fonts = theme.fonts, effects = theme.effects;\n    // The math here is done to account for the 45 degree rotation of the beak\n    // and sub-pixel rounding that differs across browsers, which is more noticeable when\n    // the device pixel ratio is larger\n    var tooltipGapSpace = -(Math.sqrt((beakWidth * beakWidth) / 2) + gapSpace) +\n        1 /\n            // There isn't really a great way to pass in a `window` reference here so disabling the line rule\n            // eslint-disable-next-line no-restricted-globals\n            window.devicePixelRatio;\n    return {\n        root: [\n            'ms-Tooltip',\n            theme.fonts.medium,\n            AnimationClassNames.fadeIn200,\n            {\n                background: semanticColors.menuBackground,\n                boxShadow: effects.elevation8,\n                padding: '8px',\n                maxWidth: maxWidth,\n                selectors: {\n                    ':after': {\n                        content: \"''\",\n                        position: 'absolute',\n                        bottom: tooltipGapSpace,\n                        left: tooltipGapSpace,\n                        right: tooltipGapSpace,\n                        top: tooltipGapSpace,\n                        zIndex: 0,\n                    },\n                },\n            },\n            className,\n        ],\n        content: [\n            'ms-Tooltip-content',\n            fonts.small,\n            {\n                position: 'relative',\n                zIndex: 1,\n                color: semanticColors.menuItemText,\n                wordWrap: 'break-word',\n                overflowWrap: 'break-word',\n                overflow: 'hidden',\n            },\n        ],\n        subText: [\n            'ms-Tooltip-subtext',\n            {\n                // Using inherit here to avoid unintentional global overrides of the <p> tag.\n                fontSize: 'inherit',\n                fontWeight: 'inherit',\n                color: 'inherit',\n                margin: 0,\n            },\n        ],\n    };\n};\n//# sourceMappingURL=Tooltip.styles.js.map","import { styled } from '../../Utilities';\nimport { TooltipBase } from './Tooltip.base';\nimport { getStyles } from './Tooltip.styles';\nexport var Tooltip = styled(TooltipBase, getStyles, undefined, {\n    scope: 'Tooltip',\n});\n//# sourceMappingURL=Tooltip.js.map","/**\n * {@docCategory Tooltip}\n */\nexport var TooltipDelay;\n(function (TooltipDelay) {\n    TooltipDelay[TooltipDelay[\"zero\"] = 0] = \"zero\";\n    /** 300 ms delay before showing the tooltip */\n    TooltipDelay[TooltipDelay[\"medium\"] = 1] = \"medium\";\n    /** 500 ms delay before showing the tooltip */\n    TooltipDelay[TooltipDelay[\"long\"] = 2] = \"long\";\n})(TooltipDelay || (TooltipDelay = {}));\n//# sourceMappingURL=Tooltip.types.js.map","/**\n * {@docCategory Tooltip}\n */\nexport var TooltipOverflowMode;\n(function (TooltipOverflowMode) {\n    /** Only show tooltip if parent DOM element is overflowing */\n    TooltipOverflowMode[TooltipOverflowMode[\"Parent\"] = 0] = \"Parent\";\n    /**\n     * Only show tooltip if tooltip host's content is overflowing.\n     * Note that this does not check the children for overflow, only the TooltipHost root.\n     */\n    TooltipOverflowMode[TooltipOverflowMode[\"Self\"] = 1] = \"Self\";\n})(TooltipOverflowMode || (TooltipOverflowMode = {}));\n//# sourceMappingURL=TooltipHost.types.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { hiddenContentStyle } from '../../Styling';\nimport { initializeComponentRef, Async, divProperties, getNativeProps, getId, assign, hasOverflow, portalContainsElement, classNamesFunction, KeyCodes, } from '../../Utilities';\nimport { TooltipOverflowMode } from './TooltipHost.types';\nimport { Tooltip } from './Tooltip';\nimport { TooltipDelay } from './Tooltip.types';\nimport { WindowContext } from '@fluentui/react-window-provider';\nimport { getDocumentEx } from '../../utilities/dom';\nvar getClassNames = classNamesFunction();\nvar TooltipHostBase = /** @class */ (function (_super) {\n    __extends(TooltipHostBase, _super);\n    // Constructor\n    function TooltipHostBase(props) {\n        var _this = _super.call(this, props) || this;\n        // The wrapping div that gets the hover events\n        _this._tooltipHost = React.createRef();\n        _this._defaultTooltipId = getId('tooltip');\n        _this.show = function () {\n            _this._toggleTooltip(true);\n        };\n        _this.dismiss = function () {\n            _this._hideTooltip();\n        };\n        _this._getTargetElement = function () {\n            if (!_this._tooltipHost.current) {\n                return undefined;\n            }\n            var overflowMode = _this.props.overflowMode;\n            // Select target element based on overflow mode. For parent mode, you want to position the tooltip relative\n            // to the parent element, otherwise it might look off.\n            if (overflowMode !== undefined) {\n                switch (overflowMode) {\n                    case TooltipOverflowMode.Parent:\n                        return _this._tooltipHost.current.parentElement;\n                    case TooltipOverflowMode.Self:\n                        return _this._tooltipHost.current;\n                }\n            }\n            return _this._tooltipHost.current;\n        };\n        _this._onTooltipFocus = function (ev) {\n            if (_this._ignoreNextFocusEvent) {\n                _this._ignoreNextFocusEvent = false;\n                return;\n            }\n            _this._onTooltipMouseEnter(ev);\n        };\n        _this._onTooltipContentFocus = function (ev) {\n            if (TooltipHostBase._currentVisibleTooltip && TooltipHostBase._currentVisibleTooltip !== _this) {\n                TooltipHostBase._currentVisibleTooltip.dismiss();\n            }\n            TooltipHostBase._currentVisibleTooltip = _this;\n            _this._clearDismissTimer();\n            _this._clearOpenTimer();\n        };\n        _this._onTooltipBlur = function (ev) {\n            var _a;\n            // The focused element gets a blur event when the document loses focus\n            // (e.g. switching tabs in the browser), but we don't want to show the\n            // tooltip again when the document gets focus back. Handle this case by\n            // checking if the blurred element is still the document's activeElement,\n            // and ignoring when it next gets focus back.\n            // See https://github.com/microsoft/fluentui/issues/13541\n            _this._ignoreNextFocusEvent = ((_a = getDocumentEx(_this.context)) === null || _a === void 0 ? void 0 : _a.activeElement) === ev.target;\n            _this._dismissTimerId = _this._async.setTimeout(function () {\n                _this._hideTooltip();\n            }, 0);\n        };\n        // Show Tooltip\n        _this._onTooltipMouseEnter = function (ev) {\n            var _a = _this.props, overflowMode = _a.overflowMode, delay = _a.delay;\n            var doc = getDocumentEx(_this.context);\n            if (TooltipHostBase._currentVisibleTooltip && TooltipHostBase._currentVisibleTooltip !== _this) {\n                TooltipHostBase._currentVisibleTooltip.dismiss();\n            }\n            TooltipHostBase._currentVisibleTooltip = _this;\n            if (overflowMode !== undefined) {\n                var overflowElement = _this._getTargetElement();\n                if (overflowElement && !hasOverflow(overflowElement)) {\n                    return;\n                }\n            }\n            if (ev.target && portalContainsElement(ev.target, _this._getTargetElement(), doc)) {\n                // Do not show tooltip when target is inside a portal relative to TooltipHost.\n                return;\n            }\n            _this._clearDismissTimer();\n            _this._clearOpenTimer();\n            if (delay !== TooltipDelay.zero) {\n                var delayTime = _this._getDelayTime(delay); // non-null assertion because we set it in `defaultProps`\n                _this._openTimerId = _this._async.setTimeout(function () {\n                    _this._toggleTooltip(true);\n                }, delayTime);\n            }\n            else {\n                _this._toggleTooltip(true);\n            }\n        };\n        // Hide Tooltip\n        _this._onTooltipMouseLeave = function (ev) {\n            var closeDelay = _this.props.closeDelay;\n            _this._clearDismissTimer();\n            _this._clearOpenTimer();\n            if (closeDelay) {\n                _this._dismissTimerId = _this._async.setTimeout(function () {\n                    _this._toggleTooltip(false);\n                }, closeDelay);\n            }\n            else {\n                _this._toggleTooltip(false);\n            }\n            if (TooltipHostBase._currentVisibleTooltip === _this) {\n                TooltipHostBase._currentVisibleTooltip = undefined;\n            }\n        };\n        _this._onTooltipKeyDown = function (ev) {\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            if ((ev.which === KeyCodes.escape || ev.ctrlKey) && _this.state.isTooltipVisible) {\n                _this._hideTooltip();\n                ev.stopPropagation();\n            }\n        };\n        _this._clearDismissTimer = function () {\n            _this._async.clearTimeout(_this._dismissTimerId);\n        };\n        _this._clearOpenTimer = function () {\n            _this._async.clearTimeout(_this._openTimerId);\n        };\n        // Hide Tooltip\n        _this._hideTooltip = function () {\n            _this._clearOpenTimer();\n            _this._clearDismissTimer();\n            _this._toggleTooltip(false);\n        };\n        _this._toggleTooltip = function (isTooltipVisible) {\n            if (_this.state.isTooltipVisible !== isTooltipVisible) {\n                _this.setState({ isTooltipVisible: isTooltipVisible }, function () { return _this.props.onTooltipToggle && _this.props.onTooltipToggle(isTooltipVisible); });\n            }\n        };\n        _this._getDelayTime = function (delay) {\n            switch (delay) {\n                case TooltipDelay.medium:\n                    return 300;\n                case TooltipDelay.long:\n                    return 500;\n                default:\n                    return 0;\n            }\n        };\n        initializeComponentRef(_this);\n        _this.state = {\n            isAriaPlaceholderRendered: false,\n            isTooltipVisible: false,\n        };\n        return _this;\n    }\n    // Render\n    TooltipHostBase.prototype.render = function () {\n        var _a = this.props, calloutProps = _a.calloutProps, children = _a.children, content = _a.content, directionalHint = _a.directionalHint, directionalHintForRTL = _a.directionalHintForRTL, className = _a.hostClassName, id = _a.id, \n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        _b = _a.setAriaDescribedBy, \n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        setAriaDescribedBy = _b === void 0 ? true : _b, tooltipProps = _a.tooltipProps, styles = _a.styles, theme = _a.theme;\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            className: className,\n        });\n        var isTooltipVisible = this.state.isTooltipVisible;\n        var tooltipId = id || this._defaultTooltipId;\n        var tooltipRenderProps = __assign(__assign({ id: \"\".concat(tooltipId, \"--tooltip\"), content: content, targetElement: this._getTargetElement(), directionalHint: directionalHint, directionalHintForRTL: directionalHintForRTL, calloutProps: assign({}, calloutProps, {\n                onDismiss: this._hideTooltip,\n                onFocus: this._onTooltipContentFocus,\n                onMouseEnter: this._onTooltipMouseEnter,\n                onMouseLeave: this._onTooltipMouseLeave,\n            }), onMouseEnter: this._onTooltipMouseEnter, onMouseLeave: this._onTooltipMouseLeave }, getNativeProps(this.props, divProperties, ['id'])), tooltipProps);\n        // Get the content of the tooltip for use in the hidden div used for screen readers\n        var tooltipContent = (tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.onRenderContent)\n            ? tooltipProps.onRenderContent(tooltipRenderProps, function (props) { return ((props === null || props === void 0 ? void 0 : props.content) ? React.createElement(React.Fragment, null, props.content) : null); })\n            : content;\n        var showTooltip = isTooltipVisible && !!tooltipContent;\n        var ariaDescribedBy = setAriaDescribedBy && isTooltipVisible && !!tooltipContent ? tooltipId : undefined;\n        return (React.createElement(\"div\", { className: this._classNames.root, ref: this._tooltipHost, onFocusCapture: this._onTooltipFocus, onBlurCapture: this._onTooltipBlur, onMouseEnter: this._onTooltipMouseEnter, onMouseLeave: this._onTooltipMouseLeave, onKeyDown: this._onTooltipKeyDown, role: \"none\", \"aria-describedby\": ariaDescribedBy },\n            children,\n            showTooltip && React.createElement(Tooltip, __assign({}, tooltipRenderProps)),\n            React.createElement(\"div\", { hidden: true, id: tooltipId, style: hiddenContentStyle }, tooltipContent)));\n    };\n    TooltipHostBase.prototype.componentDidMount = function () {\n        this._async = new Async(this);\n    };\n    TooltipHostBase.prototype.componentWillUnmount = function () {\n        if (TooltipHostBase._currentVisibleTooltip && TooltipHostBase._currentVisibleTooltip === this) {\n            TooltipHostBase._currentVisibleTooltip = undefined;\n        }\n        this._async.dispose();\n    };\n    TooltipHostBase.defaultProps = {\n        delay: TooltipDelay.medium,\n    };\n    TooltipHostBase.contextType = WindowContext;\n    return TooltipHostBase;\n}(React.Component));\nexport { TooltipHostBase };\n//# sourceMappingURL=TooltipHost.base.js.map","import { getGlobalClassNames } from '../../Styling';\nvar GlobalClassNames = {\n    root: 'ms-TooltipHost',\n    ariaPlaceholder: 'ms-TooltipHost-aria-placeholder',\n};\nexport var getStyles = function (props) {\n    var className = props.className, theme = props.theme;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            classNames.root,\n            {\n                display: 'inline',\n            },\n            className,\n        ],\n    };\n};\n//# sourceMappingURL=TooltipHost.styles.js.map","import { styled } from '../../Utilities';\nimport { TooltipHostBase } from './TooltipHost.base';\nimport { getStyles } from './TooltipHost.styles';\nexport var TooltipHost = styled(TooltipHostBase, getStyles, undefined, {\n    scope: 'TooltipHost',\n});\n//# sourceMappingURL=TooltipHost.js.map"],"names":["hasHorizontalOverflow","element","hasVerticalOverflow","hasOverflow","ResizeGroupDirection","RESIZE_DELAY","getMeasurementCache","measurementsCache","data","measurement","getNextResizeGroupStateProvider","measurementCache","_measurementCache","_containerDimension","_getMeasuredDimension","measuredData","getElementToMeasureDimension","cachedDimension","measuredDimension","_shrinkContentsUntilTheyFit","onReduceData","dataToMeasure","nextMeasuredData","_growDataUntilItDoesNotFit","onGrowData","__assign","_updateContainerDimension","newDimension","fullDimensionData","renderedData","nextState","getNextState","props","currentState","newContainerDimension","shouldRenderDataForMeasurement","getInitialResizeGroupState","MeasuredContext","React.createContext","hiddenDivStyles","hiddenParentStyles","resizeDataReducer","state","action","_a","useResizeState","nextResizeGroupStateProvider","rootRef","initialStateData","useConst","React.useReducer","resizeData","dispatchResizeDataAction","React.useEffect","stateRef","React.useRef","updateResizeState","React.useCallback","remeasure","useResizingBehavior","initialHiddenDiv","updateHiddenDiv","hasRenderedContent","async","useAsync","containerDimension","boundingRect","refToMeasure","measuredBoundingRect","win","useWindow","useOnEvent","dataNeedsMeasuring","isInitialMeasure","measuredContextValue","ResizeGroupBase","React.forwardRef","forwardedRef","mergedRootRef","useMergedRefs","React.useImperativeHandle","className","onRenderData","divProps","getNativeProps","divProperties","React.createElement","ResizeGroup","getClassNames","classNamesFunction","TooltipBase","_super","__extends","_this","calloutProps","directionalHint","directionalHintForRTL","styles","id","maxWidth","_b","onRenderContent","targetElement","theme","Callout","DirectionalHint","React.Component","getStyles","beakWidth","gapSpace","semanticColors","fonts","effects","tooltipGapSpace","AnimationClassNames","Tooltip","styled","TooltipDelay","TooltipOverflowMode","TooltipHostBase","React.createRef","getId","overflowMode","ev","getDocumentEx","delay","doc","overflowElement","portalContainsElement","delayTime","closeDelay","KeyCodes","isTooltipVisible","initializeComponentRef","children","content","setAriaDescribedBy","tooltipProps","tooltipId","tooltipRenderProps","assign","tooltipContent","React.Fragment","showTooltip","ariaDescribedBy","hiddenContentStyle","Async","WindowContext","GlobalClassNames","classNames","getGlobalClassNames","TooltipHost"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}