{"version":3,"file":"Panel.cf6d2cd9.js","sources":["../../../node_modules/@fluentui/utilities/lib/dom/getRect.js","../../../node_modules/@fluentui/utilities/lib/getNativeElementProps.js","../../../node_modules/@fluentui/utilities/lib/selection/Selection.types.js","../../../node_modules/@fluentui/utilities/lib/selection/Selection.js","../../../node_modules/@fluentui/react/lib/components/Link/useLink.js","../../../node_modules/@fluentui/react/lib/components/Link/Link.base.js","../../../node_modules/@fluentui/react/lib/components/Link/Link.styles.js","../../../node_modules/@fluentui/react/lib/components/Link/Link.js","../../../node_modules/@fluentui/react/lib/utilities/selection/SelectionZone.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupedList.types.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsList.types.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupSpacer.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupedList.styles.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsRow.styles.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsHeader.styles.js","../../../node_modules/@fluentui/react/lib/components/Check/Check.styles.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsRowCheck.styles.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupHeader.styles.js","../../../node_modules/@fluentui/react/lib/components/Check/Check.base.js","../../../node_modules/@fluentui/react/lib/components/Check/Check.js","../../../node_modules/@fluentui/react/lib/components/Spinner/Spinner.types.js","../../../node_modules/@fluentui/react/lib/components/Spinner/Spinner.base.js","../../../node_modules/@fluentui/react/lib/components/Spinner/Spinner.styles.js","../../../node_modules/@fluentui/react/lib/components/Spinner/Spinner.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupHeader.base.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupHeader.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupShowAll.styles.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupShowAll.base.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupShowAll.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupFooter.styles.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupFooter.base.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupFooter.js","../../../node_modules/@fluentui/react/lib/components/List/List.types.js","../../../node_modules/@fluentui/react/lib/components/List/utils/scroll.js","../../../node_modules/@fluentui/react/lib/components/List/List.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupedListSection.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupedList.base.js","../../../node_modules/@fluentui/react/lib/components/GroupedList/GroupedList.js","../../../node_modules/@fluentui/react/lib/utilities/groupedList/GroupedListUtility.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsRowCheck.js","../../../node_modules/@fluentui/react/lib/utilities/dragdrop/DragDropHelper.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsColumn.base.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsColumn.styles.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsColumn.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsHeader.types.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsHeader.base.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsHeader.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsRowFields.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsRow.base.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsRow.js","../../../node_modules/@fluentui/react/lib/utilities/decorators/withViewport.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsList.base.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsList.styles.js","../../../node_modules/@fluentui/react/lib/components/DetailsList/DetailsList.js","../../../node_modules/@fluentui/react/lib/components/Panel/Panel.types.js","../../../node_modules/@fluentui/react/lib/components/Panel/Panel.base.js","../../../node_modules/@fluentui/react/lib/components/Panel/Panel.styles.js","../../../node_modules/@fluentui/react/lib/components/Panel/Panel.js"],"sourcesContent":["import { getWindow } from './getWindow';\n/**\n * Helper to get bounding client rect. Passing in window will get the window size.\n *\n * @public\n */\nexport function getRect(element, win) {\n    var theWin = (win !== null && win !== void 0 ? win : (!element || (element && element.hasOwnProperty('devicePixelRatio'))))\n        ? getWindow()\n        : getWindow(element);\n    var rect;\n    if (element) {\n        if (element === theWin) {\n            rect = {\n                left: 0,\n                top: 0,\n                width: theWin.innerWidth,\n                height: theWin.innerHeight,\n                right: theWin.innerWidth,\n                bottom: theWin.innerHeight,\n            };\n        }\n        else if (element.getBoundingClientRect) {\n            rect = element.getBoundingClientRect();\n        }\n    }\n    return rect;\n}\n//# sourceMappingURL=getRect.js.map","import { labelProperties, audioProperties, videoProperties, olProperties, liProperties, anchorProperties, buttonProperties, inputProperties, textAreaProperties, selectProperties, optionProperties, tableProperties, trProperties, thProperties, tdProperties, colGroupProperties, colProperties, formProperties, iframeProperties, imgProperties, htmlElementProperties, getNativeProps, } from './properties';\nvar nativeElementMap = {\n    label: labelProperties,\n    audio: audioProperties,\n    video: videoProperties,\n    ol: olProperties,\n    li: liProperties,\n    a: anchorProperties,\n    button: buttonProperties,\n    input: inputProperties,\n    textarea: textAreaProperties,\n    select: selectProperties,\n    option: optionProperties,\n    table: tableProperties,\n    tr: trProperties,\n    th: thProperties,\n    td: tdProperties,\n    colGroup: colGroupProperties,\n    col: colProperties,\n    form: formProperties,\n    iframe: iframeProperties,\n    img: imgProperties,\n};\n/**\n * Given an element tagname and user props, filters the props to only allowed props for the given\n * element type.\n * @param tagName - Tag name (e.g. \"div\")\n * @param props - Props object\n * @param excludedPropNames - List of props to disallow\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeElementProps(tagName, props, excludedPropNames) {\n    var allowedPropNames = (tagName && nativeElementMap[tagName]) || htmlElementProperties;\n    return getNativeProps(props, allowedPropNames, excludedPropNames);\n}\n//# sourceMappingURL=getNativeElementProps.js.map","export var SELECTION_CHANGE = 'change';\nexport var SELECTION_ITEMS_CHANGE = 'items-change';\n/**\n * {@docCategory Selection}\n */\nexport var SelectionMode;\n(function (SelectionMode) {\n    SelectionMode[SelectionMode[\"none\"] = 0] = \"none\";\n    SelectionMode[SelectionMode[\"single\"] = 1] = \"single\";\n    SelectionMode[SelectionMode[\"multiple\"] = 2] = \"multiple\";\n})(SelectionMode || (SelectionMode = {}));\n/**\n * {@docCategory Selection}\n */\nexport var SelectionDirection;\n(function (SelectionDirection) {\n    SelectionDirection[SelectionDirection[\"horizontal\"] = 0] = \"horizontal\";\n    SelectionDirection[SelectionDirection[\"vertical\"] = 1] = \"vertical\";\n})(SelectionDirection || (SelectionDirection = {}));\n//# sourceMappingURL=Selection.types.js.map","import { SELECTION_CHANGE, SelectionMode, SELECTION_ITEMS_CHANGE } from './Selection.types';\nimport { EventGroup } from '../EventGroup';\n/**\n * {@docCategory Selection}\n */\nvar Selection = /** @class */ (function () {\n    /**\n     * Create a new Selection. If `TItem` does not have a `key` property, you must provide an options\n     * object with a `getKey` implementation. Providing options is optional otherwise.\n     * (At most one `options` object is accepted.)\n     */\n    function Selection() {\n        var options = []; // Otherwise, arguments require options with `getKey`.\n        for (var _i = 0 // Otherwise, arguments require options with `getKey`.\n        ; _i < arguments.length // Otherwise, arguments require options with `getKey`.\n        ; _i++ // Otherwise, arguments require options with `getKey`.\n        ) {\n            options[_i] = arguments[_i]; // Otherwise, arguments require options with `getKey`.\n        }\n        var _a = options[0] || {}, onSelectionChanged = _a.onSelectionChanged, onItemsChanged = _a.onItemsChanged, getKey = _a.getKey, _b = _a.canSelectItem, canSelectItem = _b === void 0 ? function () { return true; } : _b, items = _a.items, _c = _a.selectionMode, selectionMode = _c === void 0 ? SelectionMode.multiple : _c;\n        this.mode = selectionMode;\n        this._getKey = getKey || defaultGetKey;\n        this._changeEventSuppressionCount = 0;\n        this._exemptedCount = 0;\n        this._anchoredIndex = 0;\n        this._unselectableCount = 0;\n        this._onSelectionChanged = onSelectionChanged;\n        this._onItemsChanged = onItemsChanged;\n        this._canSelectItem = canSelectItem;\n        this._keyToIndexMap = {};\n        this._isModal = false;\n        this.setItems(items || [], true);\n        this.count = this.getSelectedCount();\n    }\n    Selection.prototype.canSelectItem = function (item, index) {\n        if (typeof index === 'number' && index < 0) {\n            return false;\n        }\n        return this._canSelectItem(item, index);\n    };\n    Selection.prototype.getKey = function (item, index) {\n        var key = this._getKey(item, index);\n        return typeof key === 'number' || key ? \"\".concat(key) : '';\n    };\n    Selection.prototype.setChangeEvents = function (isEnabled, suppressChange) {\n        this._changeEventSuppressionCount += isEnabled ? -1 : 1;\n        if (this._changeEventSuppressionCount === 0 && this._hasChanged) {\n            this._hasChanged = false;\n            if (!suppressChange) {\n                this._change();\n            }\n        }\n    };\n    Selection.prototype.isModal = function () {\n        return this._isModal;\n    };\n    Selection.prototype.setModal = function (isModal) {\n        if (this._isModal !== isModal) {\n            this.setChangeEvents(false);\n            this._isModal = isModal;\n            if (!isModal) {\n                this.setAllSelected(false);\n            }\n            this._change();\n            this.setChangeEvents(true);\n        }\n    };\n    /**\n     * Selection needs the items, call this method to set them. If the set\n     * of items is the same, this will re-evaluate selection and index maps.\n     * Otherwise, shouldClear should be set to true, so that selection is\n     * cleared.\n     */\n    Selection.prototype.setItems = function (items, shouldClear) {\n        if (shouldClear === void 0) { shouldClear = true; }\n        var newKeyToIndexMap = {};\n        var newUnselectableIndices = {};\n        var hasSelectionChanged = false;\n        this.setChangeEvents(false);\n        // Reset the unselectable count.\n        this._unselectableCount = 0;\n        var haveItemsChanged = false;\n        // Build lookup table for quick selection evaluation.\n        for (var i = 0; i < items.length; i++) {\n            var item = items[i];\n            if (item) {\n                var key = this.getKey(item, i);\n                if (key) {\n                    if (!haveItemsChanged && (!(key in this._keyToIndexMap) || this._keyToIndexMap[key] !== i)) {\n                        haveItemsChanged = true;\n                    }\n                    newKeyToIndexMap[key] = i;\n                }\n            }\n            newUnselectableIndices[i] = item && !this.canSelectItem(item);\n            if (newUnselectableIndices[i]) {\n                this._unselectableCount++;\n            }\n        }\n        if (shouldClear || items.length === 0) {\n            this._setAllSelected(false, true);\n        }\n        // Check the exemption list for discrepencies.\n        var newExemptedIndicies = {};\n        var newExemptedCount = 0;\n        for (var indexProperty in this._exemptedIndices) {\n            if (this._exemptedIndices.hasOwnProperty(indexProperty)) {\n                var index = Number(indexProperty);\n                var item = this._items[index];\n                var exemptKey = item ? this.getKey(item, Number(index)) : undefined;\n                var newIndex = exemptKey ? newKeyToIndexMap[exemptKey] : index;\n                if (newIndex === undefined) {\n                    // The item has likely been replaced or removed.\n                    hasSelectionChanged = true;\n                }\n                else {\n                    // We know the new index of the item. update the existing exemption table.\n                    newExemptedIndicies[newIndex] = true;\n                    newExemptedCount++;\n                    hasSelectionChanged = hasSelectionChanged || newIndex !== index;\n                }\n            }\n        }\n        if (this._items && this._exemptedCount === 0 && items.length !== this._items.length && this._isAllSelected) {\n            // If everything was selected but the number of items has changed, selection has changed.\n            hasSelectionChanged = true;\n        }\n        if (!haveItemsChanged) {\n            for (var _i = 0, _a = Object.keys(this._keyToIndexMap); _i < _a.length; _i++) {\n                var key = _a[_i];\n                if (!(key in newKeyToIndexMap)) {\n                    haveItemsChanged = true;\n                    break;\n                }\n            }\n        }\n        this._exemptedIndices = newExemptedIndicies;\n        this._exemptedCount = newExemptedCount;\n        this._keyToIndexMap = newKeyToIndexMap;\n        this._unselectableIndices = newUnselectableIndices;\n        this._items = items;\n        this._selectedItems = null;\n        if (hasSelectionChanged) {\n            this._updateCount();\n        }\n        if (haveItemsChanged) {\n            EventGroup.raise(this, SELECTION_ITEMS_CHANGE);\n            if (this._onItemsChanged) {\n                this._onItemsChanged();\n            }\n        }\n        if (hasSelectionChanged) {\n            this._change();\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype.getItems = function () {\n        return this._items;\n    };\n    Selection.prototype.getSelection = function () {\n        if (!this._selectedItems) {\n            this._selectedItems = [];\n            var items = this._items;\n            if (items) {\n                for (var i = 0; i < items.length; i++) {\n                    if (this.isIndexSelected(i)) {\n                        this._selectedItems.push(items[i]);\n                    }\n                }\n            }\n        }\n        return this._selectedItems;\n    };\n    Selection.prototype.getSelectedCount = function () {\n        return this._isAllSelected\n            ? this._items.length - this._exemptedCount - this._unselectableCount\n            : this._exemptedCount;\n    };\n    Selection.prototype.getSelectedIndices = function () {\n        if (!this._selectedIndices) {\n            this._selectedIndices = [];\n            var items = this._items;\n            if (items) {\n                for (var i = 0; i < items.length; i++) {\n                    if (this.isIndexSelected(i)) {\n                        this._selectedIndices.push(i);\n                    }\n                }\n            }\n        }\n        return this._selectedIndices;\n    };\n    Selection.prototype.getItemIndex = function (key) {\n        var index = this._keyToIndexMap[key];\n        return index !== null && index !== void 0 ? index : -1;\n    };\n    Selection.prototype.isRangeSelected = function (fromIndex, count) {\n        if (count === 0) {\n            return false;\n        }\n        var endIndex = fromIndex + count;\n        for (var i = fromIndex; i < endIndex; i++) {\n            if (!this.isIndexSelected(i)) {\n                return false;\n            }\n        }\n        return true;\n    };\n    Selection.prototype.isAllSelected = function () {\n        var selectableCount = this._items.length - this._unselectableCount;\n        // In single mode, we can only have a max of 1 item.\n        if (this.mode === SelectionMode.single) {\n            selectableCount = Math.min(selectableCount, 1);\n        }\n        return ((this.count > 0 && this._isAllSelected && this._exemptedCount === 0) ||\n            (!this._isAllSelected && this._exemptedCount === selectableCount && selectableCount > 0));\n    };\n    Selection.prototype.isKeySelected = function (key) {\n        var index = this._keyToIndexMap[key];\n        return this.isIndexSelected(index);\n    };\n    Selection.prototype.isIndexSelected = function (index) {\n        return !!((this.count > 0 && this._isAllSelected && !this._exemptedIndices[index] && !this._unselectableIndices[index]) ||\n            (!this._isAllSelected && this._exemptedIndices[index]));\n    };\n    Selection.prototype.setAllSelected = function (isAllSelected) {\n        if (isAllSelected && this.mode !== SelectionMode.multiple) {\n            return;\n        }\n        var selectableCount = this._items ? this._items.length - this._unselectableCount : 0;\n        this.setChangeEvents(false);\n        if (selectableCount > 0 && (this._exemptedCount > 0 || isAllSelected !== this._isAllSelected)) {\n            this._exemptedIndices = {};\n            if (isAllSelected !== this._isAllSelected || this._exemptedCount > 0) {\n                this._exemptedCount = 0;\n                this._isAllSelected = isAllSelected;\n                this._change();\n            }\n            this._updateCount();\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype.setKeySelected = function (key, isSelected, shouldAnchor) {\n        var index = this._keyToIndexMap[key];\n        if (index >= 0) {\n            this.setIndexSelected(index, isSelected, shouldAnchor);\n        }\n    };\n    Selection.prototype.setIndexSelected = function (index, isSelected, shouldAnchor) {\n        if (this.mode === SelectionMode.none) {\n            return;\n        }\n        // Clamp the index.\n        index = Math.min(Math.max(0, index), this._items.length - 1);\n        // No-op on out of bounds selections.\n        if (index < 0 || index >= this._items.length) {\n            return;\n        }\n        this.setChangeEvents(false);\n        var isExempt = this._exemptedIndices[index];\n        var canSelect = !this._unselectableIndices[index];\n        if (canSelect) {\n            if (isSelected && this.mode === SelectionMode.single) {\n                // If this is single-select, the previous selection should be removed.\n                this._setAllSelected(false, true);\n            }\n            // Determine if we need to remove the exemption.\n            if (isExempt && ((isSelected && this._isAllSelected) || (!isSelected && !this._isAllSelected))) {\n                delete this._exemptedIndices[index];\n                this._exemptedCount--;\n            }\n            // Determine if we need to add the exemption.\n            if (!isExempt && ((isSelected && !this._isAllSelected) || (!isSelected && this._isAllSelected))) {\n                this._exemptedIndices[index] = true;\n                this._exemptedCount++;\n            }\n            if (shouldAnchor) {\n                this._anchoredIndex = index;\n            }\n        }\n        this._updateCount();\n        this.setChangeEvents(true);\n    };\n    Selection.prototype.setRangeSelected = function (fromIndex, count, isSelected, shouldAnchor) {\n        if (this.mode === SelectionMode.none) {\n            return;\n        }\n        // Clamp the index.\n        fromIndex = Math.min(Math.max(0, fromIndex), this._items.length - 1);\n        // Clamp the range.\n        count = Math.min(Math.max(0, count), this._items.length - fromIndex);\n        // No-op on out of bounds selections.\n        if (fromIndex < 0 || fromIndex >= this._items.length || count === 0) {\n            return;\n        }\n        this.setChangeEvents(false);\n        var anchorIndex = this._anchoredIndex || 0;\n        var startIndex = fromIndex;\n        var endIndex = fromIndex + count - 1;\n        var newAnchorIndex = anchorIndex >= endIndex ? startIndex : endIndex;\n        for (; startIndex <= endIndex; startIndex++) {\n            this.setIndexSelected(startIndex, isSelected, shouldAnchor ? startIndex === newAnchorIndex : false);\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype.selectToKey = function (key, clearSelection) {\n        this.selectToIndex(this._keyToIndexMap[key], clearSelection);\n    };\n    Selection.prototype.selectToRange = function (fromIndex, count, clearSelection) {\n        if (this.mode === SelectionMode.none) {\n            return;\n        }\n        if (this.mode === SelectionMode.single) {\n            if (count === 1) {\n                this.setIndexSelected(fromIndex, true, true);\n            }\n            return;\n        }\n        var anchorIndex = this._anchoredIndex || 0;\n        var startIndex = Math.min(fromIndex, anchorIndex);\n        var endIndex = Math.max(fromIndex + count - 1, anchorIndex);\n        this.setChangeEvents(false);\n        if (clearSelection) {\n            this._setAllSelected(false, true);\n        }\n        for (; startIndex <= endIndex; startIndex++) {\n            this.setIndexSelected(startIndex, true, false);\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype.selectToIndex = function (index, clearSelection) {\n        if (this.mode === SelectionMode.none) {\n            return;\n        }\n        if (this.mode === SelectionMode.single) {\n            this.setIndexSelected(index, true, true);\n            return;\n        }\n        var anchorIndex = this._anchoredIndex || 0;\n        var startIndex = Math.min(index, anchorIndex);\n        var endIndex = Math.max(index, anchorIndex);\n        this.setChangeEvents(false);\n        if (clearSelection) {\n            this._setAllSelected(false, true);\n        }\n        for (; startIndex <= endIndex; startIndex++) {\n            this.setIndexSelected(startIndex, true, false);\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype.toggleAllSelected = function () {\n        this.setAllSelected(!this.isAllSelected());\n    };\n    Selection.prototype.toggleKeySelected = function (key) {\n        this.setKeySelected(key, !this.isKeySelected(key), true);\n    };\n    Selection.prototype.toggleIndexSelected = function (index) {\n        this.setIndexSelected(index, !this.isIndexSelected(index), true);\n    };\n    Selection.prototype.toggleRangeSelected = function (fromIndex, count) {\n        if (this.mode === SelectionMode.none) {\n            return;\n        }\n        var isRangeSelected = this.isRangeSelected(fromIndex, count);\n        var endIndex = fromIndex + count;\n        if (this.mode === SelectionMode.single && count > 1) {\n            return;\n        }\n        this.setChangeEvents(false);\n        for (var i = fromIndex; i < endIndex; i++) {\n            this.setIndexSelected(i, !isRangeSelected, false);\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype._updateCount = function (preserveModalState) {\n        if (preserveModalState === void 0) { preserveModalState = false; }\n        var count = this.getSelectedCount();\n        if (count !== this.count) {\n            this.count = count;\n            this._change();\n        }\n        if (!this.count && !preserveModalState) {\n            this.setModal(false);\n        }\n    };\n    Selection.prototype._setAllSelected = function (isAllSelected, preserveModalState) {\n        if (preserveModalState === void 0) { preserveModalState = false; }\n        if (isAllSelected && this.mode !== SelectionMode.multiple) {\n            return;\n        }\n        var selectableCount = this._items ? this._items.length - this._unselectableCount : 0;\n        this.setChangeEvents(false);\n        if (selectableCount > 0 && (this._exemptedCount > 0 || isAllSelected !== this._isAllSelected)) {\n            this._exemptedIndices = {};\n            if (isAllSelected !== this._isAllSelected || this._exemptedCount > 0) {\n                this._exemptedCount = 0;\n                this._isAllSelected = isAllSelected;\n                this._change();\n            }\n            this._updateCount(preserveModalState);\n        }\n        this.setChangeEvents(true);\n    };\n    Selection.prototype._change = function () {\n        if (this._changeEventSuppressionCount === 0) {\n            this._selectedItems = null;\n            this._selectedIndices = undefined;\n            EventGroup.raise(this, SELECTION_CHANGE);\n            if (this._onSelectionChanged) {\n                this._onSelectionChanged();\n            }\n        }\n        else {\n            this._hasChanged = true;\n        }\n    };\n    return Selection;\n}());\nexport { Selection };\nfunction defaultGetKey(item, index) {\n    // 0 may be used as a key\n    var _a = (item || {}).key, key = _a === void 0 ? \"\".concat(index) : _a;\n    return key;\n}\n//# sourceMappingURL=Selection.js.map","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { useMergedRefs } from '@fluentui/react-hooks';\nimport { classNamesFunction, useFocusRects } from '@fluentui/utilities';\nvar getClassNames = classNamesFunction();\n/**\n * The useLink hook processes the Link component props and returns\n * state, slots and slotProps for consumption by the component.\n */\nexport var useLink = function (props, forwardedRef) {\n    var as = props.as, className = props.className, disabled = props.disabled, href = props.href, onClick = props.onClick, styles = props.styles, theme = props.theme, underline = props.underline;\n    var rootRef = React.useRef(null);\n    var mergedRootRefs = useMergedRefs(rootRef, forwardedRef);\n    useComponentRef(props, rootRef);\n    useFocusRects(rootRef);\n    var classNames = getClassNames(styles, {\n        className: className,\n        isButton: !href,\n        isDisabled: disabled,\n        isUnderlined: underline,\n        theme: theme,\n    });\n    var _onClick = function (ev) {\n        if (disabled) {\n            ev.preventDefault();\n        }\n        else if (onClick) {\n            onClick(ev);\n        }\n    };\n    var rootType = as ? as : href ? 'a' : 'button';\n    var state = {};\n    var slots = { root: rootType };\n    var slotProps = {\n        root: __assign(__assign({}, adjustPropsForRootType(rootType, props)), { 'aria-disabled': disabled, className: classNames.root, onClick: _onClick, ref: mergedRootRefs }),\n    };\n    return { state: state, slots: slots, slotProps: slotProps };\n};\nvar useComponentRef = function (props, link) {\n    React.useImperativeHandle(props.componentRef, function () { return ({\n        focus: function () {\n            if (link.current) {\n                link.current.focus();\n            }\n        },\n    }); }, [link]);\n};\nvar adjustPropsForRootType = function (RootType, props) {\n    // Deconstruct the props so we remove props like `as`, `theme` and `styles`\n    // as those will always be removed. We also take some props that are optional\n    // based on the RootType.\n    var as = props.as, disabled = props.disabled, target = props.target, href = props.href, theme = props.theme, getStyles = props.getStyles, styles = props.styles, componentRef = props.componentRef, underline = props.underline, restProps = __rest(props, [\"as\", \"disabled\", \"target\", \"href\", \"theme\", \"getStyles\", \"styles\", \"componentRef\", \"underline\"]);\n    // RootType will be a string if we're dealing with an html component\n    if (typeof RootType === 'string') {\n        // Remove the disabled prop for anchor elements\n        if (RootType === 'a') {\n            return __assign({ target: target, href: disabled ? undefined : href }, restProps);\n        }\n        // Add the type='button' prop for button elements\n        if (RootType === 'button') {\n            return __assign({ type: 'button', disabled: disabled }, restProps);\n        }\n        // Remove the target and href props for all other non anchor elements\n        return __assign(__assign({}, restProps), { disabled: disabled });\n    }\n    // Retain all props except 'as' for ReactComponents\n    return __assign({ target: target, href: href, disabled: disabled }, restProps);\n};\n//# sourceMappingURL=useLink.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { useLink } from './useLink';\nexport var LinkBase = React.forwardRef(function (props, ref) {\n    var _a = useLink(props, ref), slots = _a.slots, slotProps = _a.slotProps;\n    return React.createElement(slots.root, __assign({}, slotProps.root));\n});\nLinkBase.displayName = 'LinkBase';\n//# sourceMappingURL=Link.base.js.map","import { getGlobalClassNames, HighContrastSelector } from '@fluentui/style-utilities';\nimport { IsFocusVisibleClassName } from '@fluentui/utilities';\nexport var GlobalClassNames = {\n    root: 'ms-Link',\n};\nexport var getStyles = function (props) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    var className = props.className, isButton = props.isButton, isDisabled = props.isDisabled, isUnderlined = props.isUnderlined, theme = props.theme;\n    var semanticColors = theme.semanticColors;\n    // Tokens\n    var linkColor = semanticColors.link;\n    var linkInteractedColor = semanticColors.linkHovered;\n    var linkDisabledColor = semanticColors.disabledText;\n    var focusBorderColor = semanticColors.focusBorder;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            classNames.root,\n            theme.fonts.medium,\n            {\n                color: linkColor,\n                outline: 'none',\n                fontSize: 'inherit',\n                fontWeight: 'inherit',\n                textDecoration: isUnderlined ? 'underline' : 'none',\n                selectors: (_a = {},\n                    _a[\".\".concat(IsFocusVisibleClassName, \" &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus\")] = {\n                        // Can't use getFocusStyle because it doesn't support wrapping links\n                        // https://github.com/microsoft/fluentui/issues/4883#issuecomment-406743543\n                        // Using box-shadow and outline allows the focus rect to wrap links that span multiple lines\n                        // and helps the focus rect avoid getting clipped.\n                        boxShadow: \"0 0 0 1px \".concat(focusBorderColor, \" inset\"),\n                        outline: \"1px auto \".concat(focusBorderColor),\n                        selectors: (_b = {},\n                            _b[HighContrastSelector] = {\n                                outline: '1px solid WindowText',\n                            },\n                            _b),\n                    },\n                    _a[HighContrastSelector] = {\n                        // For IE high contrast mode\n                        borderBottom: 'none',\n                    },\n                    _a),\n            },\n            isButton && {\n                background: 'none',\n                backgroundColor: 'transparent',\n                border: 'none',\n                cursor: 'pointer',\n                display: 'inline',\n                margin: 0,\n                overflow: 'inherit',\n                padding: 0,\n                textAlign: 'left',\n                textOverflow: 'inherit',\n                userSelect: 'text',\n                borderBottom: '1px solid transparent', // For Firefox high contrast mode\n                selectors: (_c = {},\n                    _c[HighContrastSelector] = {\n                        color: 'LinkText',\n                        forcedColorAdjust: 'none',\n                    },\n                    _c),\n            },\n            !isButton && {\n                selectors: (_d = {},\n                    _d[HighContrastSelector] = {\n                        // This is mainly for MessageBar, which sets MsHighContrastAdjust: none by default\n                        MsHighContrastAdjust: 'auto',\n                        forcedColorAdjust: 'auto',\n                    },\n                    _d),\n            },\n            isDisabled && [\n                'is-disabled',\n                {\n                    color: linkDisabledColor,\n                    cursor: 'default',\n                },\n                {\n                    selectors: (_e = {\n                            '&:link, &:visited': {\n                                pointerEvents: 'none',\n                            }\n                        },\n                        _e[HighContrastSelector] = {\n                            // We need to specify the color in High Contrast because of the case of Links rendering as buttons.\n                            color: 'GrayText',\n                        },\n                        _e),\n                },\n            ],\n            !isDisabled && {\n                selectors: {\n                    '&:active, &:hover, &:active:hover': {\n                        color: linkInteractedColor,\n                        textDecoration: 'underline',\n                        selectors: (_f = {},\n                            _f[HighContrastSelector] = {\n                                color: 'LinkText',\n                            },\n                            _f),\n                    },\n                    '&:focus': {\n                        color: linkColor,\n                        selectors: (_g = {},\n                            _g[HighContrastSelector] = {\n                                color: 'LinkText',\n                            },\n                            _g),\n                    },\n                },\n            },\n            classNames.root,\n            className,\n        ],\n    };\n};\n//# sourceMappingURL=Link.styles.js.map","import { styled } from '@fluentui/utilities';\nimport { LinkBase } from './Link.base';\nimport { getStyles } from './Link.styles';\nexport var Link = styled(LinkBase, getStyles, undefined, {\n    scope: 'Link',\n});\n//# sourceMappingURL=Link.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { Async, EventGroup, KeyCodes, elementContains, findScrollableParent, getParent, getDocument, getWindow, isElementTabbable, css, initializeComponentRef, FocusRects, } from '../../Utilities';\nimport { SelectionMode } from './interfaces';\n// Selection definitions:\n//\n// Anchor index: the point from which a range selection starts.\n// Focus index: the point from which layout movement originates from.\n//\n// These two can differ. Tests:\n//\n// If you start at index 5\n// Shift click to index 10\n//    The focus is 10, the anchor is 5.\n// If you shift click at index 0\n//    The anchor remains at 5, the items between 0 and 5 are selected and everything else is cleared.\n// If you click index 8\n//    The anchor and focus are set to 8.\nvar SELECTION_DISABLED_ATTRIBUTE_NAME = 'data-selection-disabled';\nvar SELECTION_INDEX_ATTRIBUTE_NAME = 'data-selection-index';\nvar SELECTION_SPAN_ATTRIBUTE_NAME = 'data-selection-span';\nvar SELECTION_TOGGLE_ATTRIBUTE_NAME = 'data-selection-toggle';\nvar SELECTION_INVOKE_ATTRIBUTE_NAME = 'data-selection-invoke';\nvar SELECTION_INVOKE_TOUCH_ATTRIBUTE_NAME = 'data-selection-touch-invoke';\nvar SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME = 'data-selection-all-toggle';\nvar SELECTION_SELECT_ATTRIBUTE_NAME = 'data-selection-select';\n/**\n * {@docCategory Selection}\n */\nvar SelectionZone = /** @class */ (function (_super) {\n    __extends(SelectionZone, _super);\n    function SelectionZone(props) {\n        var _this = _super.call(this, props) || this;\n        _this._root = React.createRef();\n        /**\n         * In some cases, the consuming scenario requires to set focus on a row without having SelectionZone\n         * react to the event. Note that focus events in IE \\<= 11 will occur asynchronously after .focus() has\n         * been called on an element, so we need a flag to store the idea that we will bypass the \"next\"\n         * focus event that occurs. This method does that.\n         */\n        _this.ignoreNextFocus = function () {\n            _this._handleNextFocus(false);\n        };\n        _this._onSelectionChange = function () {\n            var selection = _this.props.selection;\n            var isModal = selection.isModal && selection.isModal();\n            _this.setState({\n                isModal: isModal,\n            });\n        };\n        _this._onMouseDownCapture = function (ev) {\n            var target = ev.target;\n            var win = getWindow(_this._root.current);\n            var doc = win === null || win === void 0 ? void 0 : win.document;\n            if ((doc === null || doc === void 0 ? void 0 : doc.activeElement) !== target && !elementContains(doc === null || doc === void 0 ? void 0 : doc.activeElement, target)) {\n                _this.ignoreNextFocus();\n                return;\n            }\n            if (!elementContains(target, _this._root.current)) {\n                return;\n            }\n            while (target !== _this._root.current) {\n                if (_this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)) {\n                    _this.ignoreNextFocus();\n                    break;\n                }\n                target = getParent(target);\n            }\n        };\n        /**\n         * When we focus an item, for single/multi select scenarios, we should try to select it immediately\n         * as long as the focus did not originate from a mouse down/touch event. For those cases, we handle them\n         * specially.\n         */\n        _this._onFocus = function (ev) {\n            var target = ev.target;\n            var selection = _this.props.selection;\n            var isToggleModifierPressed = _this._isCtrlPressed || _this._isMetaPressed;\n            var selectionMode = _this._getSelectionMode();\n            if (_this._shouldHandleFocus && selectionMode !== SelectionMode.none) {\n                var isToggle = _this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME);\n                var itemRoot = _this._findItemRoot(target);\n                if (!isToggle && itemRoot) {\n                    var index = _this._getItemIndex(itemRoot);\n                    var span = _this._getItemSpan(itemRoot);\n                    if (span === undefined) {\n                        if (isToggleModifierPressed) {\n                            // set anchor only.\n                            selection.setIndexSelected(index, selection.isIndexSelected(index), true);\n                            if (_this.props.enterModalOnTouch && _this._isTouch && selection.setModal) {\n                                selection.setModal(true);\n                                _this._setIsTouch(false);\n                            }\n                        }\n                        else {\n                            if (_this.props.isSelectedOnFocus) {\n                                _this._onItemSurfaceClick('focus', index);\n                            }\n                        }\n                    }\n                }\n            }\n            _this._handleNextFocus(false);\n        };\n        _this._onMouseDown = function (ev) {\n            _this._updateModifiers(ev);\n            var toggleWithoutModifierPressed = _this.props.toggleWithoutModifierPressed;\n            var target = ev.target;\n            var itemRoot = _this._findItemRoot(target);\n            // No-op if selection is disabled\n            if (_this._isSelectionDisabled(target)) {\n                return;\n            }\n            while (target !== _this._root.current) {\n                if (_this._hasAttribute(target, SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME)) {\n                    break;\n                }\n                else if (itemRoot) {\n                    if (_this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME)) {\n                        break;\n                    }\n                    else if (_this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)) {\n                        break;\n                    }\n                    else if ((target === itemRoot || _this._shouldAutoSelect(target)) &&\n                        !_this._isShiftPressed &&\n                        !_this._isCtrlPressed &&\n                        !_this._isMetaPressed &&\n                        !toggleWithoutModifierPressed) {\n                        _this._onInvokeMouseDown(ev, _this._getItemIndex(itemRoot), _this._getItemSpan(itemRoot));\n                        break;\n                    }\n                    else if (_this.props.disableAutoSelectOnInputElements &&\n                        (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'INPUT')) {\n                        return;\n                    }\n                }\n                target = getParent(target);\n            }\n        };\n        _this._onTouchStartCapture = function (ev) {\n            _this._setIsTouch(true);\n        };\n        _this._onClick = function (ev) {\n            var _a = _this.props.enableTouchInvocationTarget, enableTouchInvocationTarget = _a === void 0 ? false : _a;\n            _this._updateModifiers(ev);\n            var target = ev.target;\n            var itemRoot = _this._findItemRoot(target);\n            var isSelectionDisabled = _this._isSelectionDisabled(target);\n            while (target !== _this._root.current) {\n                if (_this._hasAttribute(target, SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME)) {\n                    if (!isSelectionDisabled) {\n                        _this._onToggleAllClick(ev);\n                    }\n                    break;\n                }\n                else if (itemRoot) {\n                    var index = _this._getItemIndex(itemRoot);\n                    var span = _this._getItemSpan(itemRoot);\n                    if (_this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME)) {\n                        if (!isSelectionDisabled) {\n                            if (_this._isShiftPressed) {\n                                _this._onItemSurfaceClick('click', index, span);\n                            }\n                            else {\n                                _this._onToggleClick(ev, index, span);\n                            }\n                        }\n                        break;\n                    }\n                    else if ((_this._isTouch &&\n                        enableTouchInvocationTarget &&\n                        _this._hasAttribute(target, SELECTION_INVOKE_TOUCH_ATTRIBUTE_NAME)) ||\n                        _this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)) {\n                        if (span === undefined) {\n                            // Items should be invokable even if selection is disabled.\n                            _this._onInvokeClick(ev, index);\n                        }\n                        break;\n                    }\n                    else if (target === itemRoot) {\n                        if (!isSelectionDisabled) {\n                            _this._onItemSurfaceClick('click', index, span);\n                        }\n                        break;\n                    }\n                    else if (target.tagName === 'A' || target.tagName === 'BUTTON' || target.tagName === 'INPUT') {\n                        return;\n                    }\n                }\n                target = getParent(target);\n            }\n        };\n        _this._onContextMenu = function (ev) {\n            var target = ev.target;\n            var _a = _this.props, onItemContextMenu = _a.onItemContextMenu, selection = _a.selection;\n            if (onItemContextMenu) {\n                var itemRoot = _this._findItemRoot(target);\n                if (itemRoot) {\n                    var index = _this._getItemIndex(itemRoot);\n                    _this._onInvokeMouseDown(ev, index);\n                    var skipPreventDefault = onItemContextMenu(selection.getItems()[index], index, ev.nativeEvent);\n                    // In order to keep back compat, if the value here is undefined, then we should still\n                    // call preventDefault(). Only in the case where true is explicitly returned should\n                    // the call be skipped.\n                    if (!skipPreventDefault) {\n                        ev.preventDefault();\n                    }\n                }\n            }\n        };\n        /**\n         * In multi selection, if you double click within an item's root (but not within the invoke element or\n         * input elements), we should execute the invoke handler.\n         */\n        _this._onDoubleClick = function (ev) {\n            var target = ev.target;\n            var onItemInvoked = _this.props.onItemInvoked;\n            var itemRoot = _this._findItemRoot(target);\n            if (itemRoot && onItemInvoked && !_this._isInputElement(target)) {\n                var index = _this._getItemIndex(itemRoot);\n                while (target !== _this._root.current) {\n                    if (_this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME) ||\n                        _this._hasAttribute(target, SELECTION_INVOKE_ATTRIBUTE_NAME)) {\n                        break;\n                    }\n                    else if (target === itemRoot) {\n                        _this._onInvokeClick(ev, index);\n                        break;\n                    }\n                    target = getParent(target);\n                }\n                target = getParent(target);\n            }\n        };\n        _this._onKeyDownCapture = function (ev) {\n            _this._updateModifiers(ev);\n            _this._handleNextFocus(true);\n        };\n        _this._onKeyDown = function (ev) {\n            _this._updateModifiers(ev);\n            var target = ev.target;\n            var isSelectionDisabled = _this._isSelectionDisabled(target);\n            var _a = _this.props, selection = _a.selection, selectionClearedOnEscapePress = _a.selectionClearedOnEscapePress;\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            var isSelectAllKey = ev.which === KeyCodes.a && (_this._isCtrlPressed || _this._isMetaPressed);\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            var isClearSelectionKey = ev.which === KeyCodes.escape;\n            // Ignore key downs from input elements.\n            if (_this._isInputElement(target)) {\n                // A key was pressed while an item in this zone was focused.\n                return;\n            }\n            var selectionMode = _this._getSelectionMode();\n            // If ctrl-a is pressed, select all (if all are not already selected.)\n            if (isSelectAllKey && selectionMode === SelectionMode.multiple && !selection.isAllSelected()) {\n                if (!isSelectionDisabled) {\n                    selection.setAllSelected(true);\n                }\n                ev.stopPropagation();\n                ev.preventDefault();\n                return;\n            }\n            // If escape is pressed and the component is configured to clear on escape press,\n            // clear selection (if any are selected.)\n            if (selectionClearedOnEscapePress && isClearSelectionKey && selection.getSelectedCount() > 0) {\n                if (!isSelectionDisabled) {\n                    selection.setAllSelected(false);\n                }\n                ev.stopPropagation();\n                ev.preventDefault();\n                return;\n            }\n            var itemRoot = _this._findItemRoot(target);\n            // If a key was pressed within an item, we should treat \"enters\" as invokes and \"space\" as toggle\n            if (itemRoot) {\n                var index = _this._getItemIndex(itemRoot);\n                var span = _this._getItemSpan(itemRoot);\n                while (target !== _this._root.current) {\n                    if (_this._hasAttribute(target, SELECTION_TOGGLE_ATTRIBUTE_NAME)) {\n                        // For toggle elements, assuming they are rendered as buttons, they will generate a click event,\n                        // so we can no-op for any keydowns in this case.\n                        break;\n                    }\n                    else if (_this._shouldAutoSelect(target)) {\n                        if (!isSelectionDisabled && span === undefined) {\n                            // If the event went to an element which should trigger auto-select, select it and then let\n                            // the default behavior kick in.\n                            _this._onInvokeMouseDown(ev, index, span);\n                        }\n                        break;\n                    }\n                    else if (\n                    // eslint-disable-next-line @typescript-eslint/no-deprecated\n                    (ev.which === KeyCodes.enter || ev.which === KeyCodes.space) &&\n                        (target.tagName === 'BUTTON' ||\n                            target.tagName === 'A' ||\n                            target.tagName === 'INPUT' ||\n                            target.tagName === 'SUMMARY')) {\n                        return false;\n                    }\n                    else if (target === itemRoot) {\n                        // eslint-disable-next-line @typescript-eslint/no-deprecated\n                        if (ev.which === KeyCodes.enter) {\n                            if (span === undefined) {\n                                // Items should be invokable even if selection is disabled.\n                                _this._onInvokeClick(ev, index);\n                                ev.preventDefault();\n                            }\n                            return;\n                            // eslint-disable-next-line @typescript-eslint/no-deprecated\n                        }\n                        else if (ev.which === KeyCodes.space) {\n                            if (!isSelectionDisabled) {\n                                _this._onToggleClick(ev, index, span);\n                            }\n                            ev.preventDefault();\n                            return;\n                        }\n                        break;\n                    }\n                    target = getParent(target);\n                }\n            }\n        };\n        _this._events = new EventGroup(_this);\n        _this._async = new Async(_this);\n        initializeComponentRef(_this);\n        var selection = _this.props.selection;\n        // Reflect the initial modal state of selection into the state.\n        var isModal = selection.isModal && selection.isModal();\n        _this.state = {\n            isModal: isModal,\n        };\n        return _this;\n    }\n    SelectionZone.getDerivedStateFromProps = function (nextProps, prevState) {\n        var isModal = nextProps.selection.isModal && nextProps.selection.isModal();\n        return __assign(__assign({}, prevState), { isModal: isModal });\n    };\n    SelectionZone.prototype.componentDidMount = function () {\n        var win = getWindow(this._root.current);\n        var doc = win === null || win === void 0 ? void 0 : win.document;\n        // Track the latest modifier keys globally.\n        this._events.on(win, 'keydown, keyup', this._updateModifiers, true);\n        this._events.on(doc, 'click', this._findScrollParentAndTryClearOnEmptyClick);\n        this._events.on(doc === null || doc === void 0 ? void 0 : doc.body, 'touchstart', this._onTouchStartCapture, true);\n        this._events.on(doc === null || doc === void 0 ? void 0 : doc.body, 'touchend', this._onTouchStartCapture, true);\n        // Subscribe to the selection to keep modal state updated.\n        this._events.on(this.props.selection, 'change', this._onSelectionChange);\n    };\n    SelectionZone.prototype.render = function () {\n        var isModal = this.state.isModal;\n        return (React.createElement(\"div\", { className: css('ms-SelectionZone', this.props.className, {\n                'ms-SelectionZone--modal': !!isModal,\n            }), ref: this._root, onKeyDown: this._onKeyDown, onMouseDown: this._onMouseDown, onKeyDownCapture: this._onKeyDownCapture, onClick: this._onClick, role: \"presentation\", onDoubleClick: this._onDoubleClick, onContextMenu: this._onContextMenu, onMouseDownCapture: this._onMouseDownCapture, onFocusCapture: this._onFocus, \"data-selection-is-modal\": isModal ? true : undefined },\n            this.props.children,\n            React.createElement(FocusRects, null)));\n    };\n    SelectionZone.prototype.componentDidUpdate = function (previousProps) {\n        var selection = this.props.selection;\n        if (selection !== previousProps.selection) {\n            // Whenever selection changes, update the subscripton to keep modal state updated.\n            this._events.off(previousProps.selection);\n            this._events.on(selection, 'change', this._onSelectionChange);\n        }\n    };\n    SelectionZone.prototype.componentWillUnmount = function () {\n        this._events.dispose();\n        this._async.dispose();\n    };\n    SelectionZone.prototype._isSelectionDisabled = function (target) {\n        if (this._getSelectionMode() === SelectionMode.none) {\n            return true;\n        }\n        while (target !== this._root.current) {\n            if (this._hasAttribute(target, SELECTION_DISABLED_ATTRIBUTE_NAME)) {\n                return true;\n            }\n            target = getParent(target);\n        }\n        return false;\n    };\n    SelectionZone.prototype._onToggleAllClick = function (ev) {\n        var selection = this.props.selection;\n        var selectionMode = this._getSelectionMode();\n        if (selectionMode === SelectionMode.multiple) {\n            selection.toggleAllSelected();\n            ev.stopPropagation();\n            ev.preventDefault();\n        }\n    };\n    SelectionZone.prototype._onToggleClick = function (ev, index, span) {\n        var selection = this.props.selection;\n        var selectionMode = this._getSelectionMode();\n        selection.setChangeEvents(false);\n        if (this.props.enterModalOnTouch &&\n            this._isTouch &&\n            (span !== undefined ? !selection.isRangeSelected(index, span) : !selection.isIndexSelected(index)) &&\n            selection.setModal) {\n            selection.setModal(true);\n            this._setIsTouch(false);\n        }\n        if (selectionMode === SelectionMode.multiple) {\n            if (span !== undefined) {\n                selection.toggleRangeSelected(index, span);\n            }\n            else {\n                selection.toggleIndexSelected(index);\n            }\n        }\n        else if (selectionMode === SelectionMode.single) {\n            if (span === undefined || span === 1) {\n                var isSelected = selection.isIndexSelected(index);\n                var isModal = selection.isModal && selection.isModal();\n                selection.setAllSelected(false);\n                selection.setIndexSelected(index, !isSelected, true);\n                if (isModal && selection.setModal) {\n                    // Since the above call to setAllSelected(false) clears modal state,\n                    // restore it. This occurs because the SelectionMode of the Selection\n                    // may differ from the SelectionZone.\n                    selection.setModal(true);\n                }\n            }\n        }\n        else {\n            selection.setChangeEvents(true);\n            return;\n        }\n        selection.setChangeEvents(true);\n        ev.stopPropagation();\n        // NOTE: ev.preventDefault is not called for toggle clicks, because this will kill the browser behavior\n        // for checkboxes if you use a checkbox for the toggle.\n    };\n    SelectionZone.prototype._onInvokeClick = function (ev, index) {\n        var _a = this.props, selection = _a.selection, onItemInvoked = _a.onItemInvoked;\n        if (onItemInvoked) {\n            onItemInvoked(selection.getItems()[index], index, ev.nativeEvent);\n            ev.preventDefault();\n            ev.stopPropagation();\n        }\n    };\n    SelectionZone.prototype._onItemSurfaceClick = function (type, index, span) {\n        var _a;\n        var _b = this.props, selection = _b.selection, toggleWithoutModifierPressed = _b.toggleWithoutModifierPressed;\n        var isToggleModifierPressed = this._isCtrlPressed || this._isMetaPressed;\n        var selectionMode = this._getSelectionMode();\n        if (selectionMode === SelectionMode.multiple) {\n            if (this._isShiftPressed && !this._isTabPressed) {\n                if (span !== undefined) {\n                    (_a = selection.selectToRange) === null || _a === void 0 ? void 0 : _a.call(selection, index, span, !isToggleModifierPressed);\n                }\n                else {\n                    selection.selectToIndex(index, !isToggleModifierPressed);\n                }\n            }\n            else if (type === 'click' && (isToggleModifierPressed || toggleWithoutModifierPressed)) {\n                if (span !== undefined) {\n                    selection.toggleRangeSelected(index, span);\n                }\n                else {\n                    selection.toggleIndexSelected(index);\n                }\n            }\n            else {\n                this._clearAndSelectIndex(index, span);\n            }\n        }\n        else if (selectionMode === SelectionMode.single) {\n            this._clearAndSelectIndex(index, span);\n        }\n    };\n    SelectionZone.prototype._onInvokeMouseDown = function (ev, index, span) {\n        var selection = this.props.selection;\n        if (span !== undefined) {\n            if (selection.isRangeSelected(index, span)) {\n                return;\n            }\n        }\n        else {\n            // Only do work if item is not selected.\n            if (selection.isIndexSelected(index)) {\n                return;\n            }\n        }\n        this._clearAndSelectIndex(index, span);\n    };\n    /**\n     * To avoid high startup cost of traversing the DOM on component mount,\n     * defer finding the scrollable parent until a click interaction.\n     *\n     * The styles will probably already calculated since we're running in a click handler,\n     * so this is less likely to cause layout thrashing then doing it in mount.\n     */\n    SelectionZone.prototype._findScrollParentAndTryClearOnEmptyClick = function (ev) {\n        var win = getWindow(this._root.current);\n        var doc = win === null || win === void 0 ? void 0 : win.document;\n        var scrollParent = findScrollableParent(this._root.current);\n        // unbind this handler and replace binding with a binding on the actual scrollable parent\n        this._events.off(doc, 'click', this._findScrollParentAndTryClearOnEmptyClick);\n        this._events.on(scrollParent, 'click', this._tryClearOnEmptyClick);\n        // If we clicked inside the scrollable parent, call through to the handler on this click.\n        if ((scrollParent && ev.target instanceof Node && scrollParent.contains(ev.target)) || scrollParent === ev.target) {\n            this._tryClearOnEmptyClick(ev);\n        }\n    };\n    SelectionZone.prototype._tryClearOnEmptyClick = function (ev) {\n        if (!this.props.selectionPreservedOnEmptyClick && this._isNonHandledClick(ev.target)) {\n            this.props.selection.setAllSelected(false);\n        }\n    };\n    SelectionZone.prototype._clearAndSelectIndex = function (index, span) {\n        var _a;\n        var _b = this.props, selection = _b.selection, _c = _b.selectionClearedOnSurfaceClick, selectionClearedOnSurfaceClick = _c === void 0 ? true : _c;\n        var isAlreadySingleSelected = (span === undefined || span === 1) && selection.getSelectedCount() === 1 && selection.isIndexSelected(index);\n        if (!isAlreadySingleSelected && selectionClearedOnSurfaceClick) {\n            var isModal = selection.isModal && selection.isModal();\n            selection.setChangeEvents(false);\n            selection.setAllSelected(false);\n            if (span !== undefined) {\n                (_a = selection.setRangeSelected) === null || _a === void 0 ? void 0 : _a.call(selection, index, span, true, true);\n            }\n            else {\n                selection.setIndexSelected(index, true, true);\n            }\n            if (isModal || (this.props.enterModalOnTouch && this._isTouch)) {\n                if (selection.setModal) {\n                    selection.setModal(true);\n                }\n                if (this._isTouch) {\n                    this._setIsTouch(false);\n                }\n            }\n            selection.setChangeEvents(true);\n        }\n    };\n    /**\n     * We need to track the modifier key states so that when focus events occur, which do not contain\n     * modifier states in the Event object, we know how to behave.\n     */\n    SelectionZone.prototype._updateModifiers = function (ev) {\n        this._isShiftPressed = ev.shiftKey;\n        this._isCtrlPressed = ev.ctrlKey;\n        this._isMetaPressed = ev.metaKey;\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        var keyCode = ev.keyCode;\n        this._isTabPressed = keyCode ? keyCode === KeyCodes.tab : false;\n    };\n    SelectionZone.prototype._findItemRoot = function (target) {\n        var selection = this.props.selection;\n        while (target !== this._root.current) {\n            var indexValue = target.getAttribute(SELECTION_INDEX_ATTRIBUTE_NAME);\n            var index = Number(indexValue);\n            if (indexValue !== null && index >= 0 && index < selection.getItems().length) {\n                break;\n            }\n            target = getParent(target);\n        }\n        if (target === this._root.current) {\n            return undefined;\n        }\n        return target;\n    };\n    SelectionZone.prototype._getItemIndex = function (itemRoot) {\n        var _a;\n        var indexValue = parseInt((_a = itemRoot.getAttribute(SELECTION_INDEX_ATTRIBUTE_NAME)) !== null && _a !== void 0 ? _a : '', 10);\n        return isNaN(indexValue) ? -1 : indexValue;\n    };\n    SelectionZone.prototype._getItemSpan = function (itemRoot) {\n        var _a;\n        var spanValue = parseInt((_a = itemRoot.getAttribute(SELECTION_SPAN_ATTRIBUTE_NAME)) !== null && _a !== void 0 ? _a : '', 10);\n        return isNaN(spanValue) ? undefined : spanValue;\n    };\n    SelectionZone.prototype._shouldAutoSelect = function (element) {\n        return this._hasAttribute(element, SELECTION_SELECT_ATTRIBUTE_NAME);\n    };\n    SelectionZone.prototype._hasAttribute = function (element, attributeName) {\n        var isToggle = false;\n        while (!isToggle && element !== this._root.current) {\n            var value = element.getAttribute(attributeName);\n            if (value === 'false') {\n                isToggle = false;\n                break;\n            }\n            isToggle = value === 'true';\n            element = getParent(element);\n        }\n        return isToggle;\n    };\n    SelectionZone.prototype._isInputElement = function (element) {\n        return (element.tagName === 'INPUT' ||\n            element.tagName === 'TEXTAREA' ||\n            element.getAttribute('contenteditable') === 'true' ||\n            element.getAttribute('contenteditable') === '');\n    };\n    SelectionZone.prototype._isNonHandledClick = function (element) {\n        var doc = getDocument();\n        if (doc && element) {\n            while (element && element !== doc.documentElement) {\n                if (isElementTabbable(element) || element.hasAttribute('data-selection-index')) {\n                    return false;\n                }\n                element = getParent(element);\n            }\n        }\n        return true;\n    };\n    SelectionZone.prototype._handleNextFocus = function (handleFocus) {\n        var _this = this;\n        if (this._shouldHandleFocusTimeoutId) {\n            this._async.clearTimeout(this._shouldHandleFocusTimeoutId);\n            this._shouldHandleFocusTimeoutId = undefined;\n        }\n        this._shouldHandleFocus = handleFocus;\n        if (handleFocus) {\n            this._async.setTimeout(function () {\n                _this._shouldHandleFocus = false;\n            }, 100);\n        }\n    };\n    SelectionZone.prototype._setIsTouch = function (isTouch) {\n        var _this = this;\n        if (this._isTouchTimeoutId) {\n            this._async.clearTimeout(this._isTouchTimeoutId);\n            this._isTouchTimeoutId = undefined;\n        }\n        this._isTouch = true;\n        if (isTouch) {\n            this._async.setTimeout(function () {\n                _this._isTouch = false;\n            }, 300);\n        }\n    };\n    SelectionZone.prototype._getSelectionMode = function () {\n        var selection = this.props.selection;\n        var _a = this.props.selectionMode, selectionMode = _a === void 0 ? selection ? selection.mode : SelectionMode.none : _a;\n        return selectionMode;\n    };\n    SelectionZone.defaultProps = {\n        isSelectedOnFocus: true,\n        toggleWithoutModifierPressed: false,\n        selectionMode: SelectionMode.multiple,\n        selectionClearedOnEscapePress: true,\n    };\n    return SelectionZone;\n}(React.Component));\nexport { SelectionZone };\n//# sourceMappingURL=SelectionZone.js.map","/**\n * {@docCategory GroupedList}\n */\nexport var CollapseAllVisibility;\n(function (CollapseAllVisibility) {\n    CollapseAllVisibility[CollapseAllVisibility[\"hidden\"] = 0] = \"hidden\";\n    CollapseAllVisibility[CollapseAllVisibility[\"visible\"] = 1] = \"visible\";\n})(CollapseAllVisibility || (CollapseAllVisibility = {}));\n//# sourceMappingURL=GroupedList.types.js.map","/**\n * Enum to describe how a particular column header behaves.\n * This is used to to specify the property `IColumn.columnActionsMode`.\n * If `IColumn.columnActionsMode` is undefined, it's equivalent to `ColumnActionsMode.clickable`.\n * {@docCategory DetailsList}\n */\nexport var ColumnActionsMode;\n(function (ColumnActionsMode) {\n    /** Renders the column header as disabled. */\n    ColumnActionsMode[ColumnActionsMode[\"disabled\"] = 0] = \"disabled\";\n    /** Renders the column header as clickable. Default value. */\n    ColumnActionsMode[ColumnActionsMode[\"clickable\"] = 1] = \"clickable\";\n    /** Renders the column header as clickable and displays the dropdown chevron. */\n    ColumnActionsMode[ColumnActionsMode[\"hasDropdown\"] = 2] = \"hasDropdown\";\n})(ColumnActionsMode || (ColumnActionsMode = {}));\n/**\n * {@docCategory DetailsList}\n */\nexport var ConstrainMode;\n(function (ConstrainMode) {\n    /** Lets the content grow which allows the page to manage scrolling. */\n    ConstrainMode[ConstrainMode[\"unconstrained\"] = 0] = \"unconstrained\";\n    /** Constrains the list to the given layout space. */\n    ConstrainMode[ConstrainMode[\"horizontalConstrained\"] = 1] = \"horizontalConstrained\";\n})(ConstrainMode || (ConstrainMode = {}));\n/**\n * Enum to describe where the column has been dropped, after starting the drag\n * {@docCategory DetailsList}\n */\nexport var ColumnDragEndLocation;\n(function (ColumnDragEndLocation) {\n    /** Drag ended outside of current list */\n    ColumnDragEndLocation[ColumnDragEndLocation[\"outside\"] = 0] = \"outside\";\n    /** Drag ended within current list */\n    ColumnDragEndLocation[ColumnDragEndLocation[\"surface\"] = 1] = \"surface\";\n    /** Drag ended on header */\n    ColumnDragEndLocation[ColumnDragEndLocation[\"header\"] = 2] = \"header\";\n})(ColumnDragEndLocation || (ColumnDragEndLocation = {}));\n/**\n * {@docCategory DetailsList}\n */\nexport var DetailsListLayoutMode;\n(function (DetailsListLayoutMode) {\n    /**\n     * Lets the user resize columns and makes not attempt to fit them.\n     */\n    DetailsListLayoutMode[DetailsListLayoutMode[\"fixedColumns\"] = 0] = \"fixedColumns\";\n    /**\n     * Manages which columns are visible, tries to size them according to their min/max rules and drops\n     * off columns that can't fit and have isCollapsible set.\n     */\n    DetailsListLayoutMode[DetailsListLayoutMode[\"justified\"] = 1] = \"justified\";\n})(DetailsListLayoutMode || (DetailsListLayoutMode = {}));\n/**\n * {@docCategory DetailsList}\n */\nexport var CheckboxVisibility;\n(function (CheckboxVisibility) {\n    /** Visible on hover. */\n    CheckboxVisibility[CheckboxVisibility[\"onHover\"] = 0] = \"onHover\";\n    /** Visible always. */\n    CheckboxVisibility[CheckboxVisibility[\"always\"] = 1] = \"always\";\n    /** Hide checkboxes. */\n    CheckboxVisibility[CheckboxVisibility[\"hidden\"] = 2] = \"hidden\";\n})(CheckboxVisibility || (CheckboxVisibility = {}));\n//# sourceMappingURL=DetailsList.types.js.map","import * as React from 'react';\nexport var SPACER_WIDTH = 36;\nexport var GroupSpacer = function (props) {\n    var count = props.count, _a = props.indentWidth, indentWidth = _a === void 0 ? SPACER_WIDTH : _a, _b = props.role, role = _b === void 0 ? 'presentation' : _b;\n    var width = count * indentWidth;\n    return count > 0 ? (React.createElement(\"span\", { className: 'ms-GroupSpacer', style: { display: 'inline-block', width: width }, role: role })) : null;\n};\n//# sourceMappingURL=GroupSpacer.js.map","import { getGlobalClassNames, AnimationVariables } from '../../Styling';\nvar GlobalClassNames = {\n    root: 'ms-GroupedList',\n    compact: 'ms-GroupedList--Compact',\n    group: 'ms-GroupedList-group',\n    link: 'ms-Link',\n    listCell: 'ms-List-cell',\n};\nvar beziers = {\n    easeInOutSine: 'cubic-bezier(0.445, 0.050, 0.550, 0.950)',\n};\nexport var getStyles = function (props) {\n    var _a, _b;\n    var theme = props.theme, className = props.className, compact = props.compact;\n    var palette = theme.palette;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            classNames.root,\n            theme.fonts.small,\n            {\n                position: 'relative',\n                selectors: (_a = {},\n                    _a[\".\".concat(classNames.listCell)] = {\n                        minHeight: 38, // be consistent with DetailsList styles\n                    },\n                    _a),\n            },\n            compact && [\n                classNames.compact,\n                {\n                    selectors: (_b = {},\n                        _b[\".\".concat(classNames.listCell)] = {\n                            minHeight: 32, // be consistent with DetailsList styles\n                        },\n                        _b),\n                },\n            ],\n            className,\n        ],\n        group: [\n            classNames.group,\n            {\n                transition: \"background-color \".concat(AnimationVariables.durationValue2, \" \").concat(beziers.easeInOutSine),\n            },\n        ],\n        groupIsDropping: {\n            backgroundColor: palette.neutralLight,\n        },\n    };\n};\n//# sourceMappingURL=GroupedList.styles.js.map","import { __assign } from \"tslib\";\nimport { AnimationClassNames, AnimationStyles, HighContrastSelector, getFocusStyle, getGlobalClassNames, FontWeights, getHighContrastNoAdjustStyle, } from '../../Styling';\nimport { IsFocusVisibleClassName } from '../../Utilities';\nimport { GlobalClassNames as LinkGlobalClassNames } from '../../components/Link/Link.styles';\nexport var DetailsRowGlobalClassNames = {\n    root: 'ms-DetailsRow',\n    // TODO: in Fabric 7.0 lowercase the 'Compact' for consistency across other components.\n    compact: 'ms-DetailsList--Compact',\n    cell: 'ms-DetailsRow-cell',\n    cellAnimation: 'ms-DetailsRow-cellAnimation',\n    cellCheck: 'ms-DetailsRow-cellCheck',\n    check: 'ms-DetailsRow-check',\n    cellMeasurer: 'ms-DetailsRow-cellMeasurer',\n    listCellFirstChild: 'ms-List-cell:first-child',\n    isContentUnselectable: 'is-contentUnselectable',\n    isSelected: 'is-selected',\n    isCheckVisible: 'is-check-visible',\n    isRowHeader: 'is-row-header',\n    fields: 'ms-DetailsRow-fields',\n};\nvar IsFocusableSelector = \"[data-is-focusable='true']\";\nexport var DEFAULT_CELL_STYLE_PROPS = {\n    cellLeftPadding: 12,\n    cellRightPadding: 8,\n    cellExtraRightPadding: 24,\n};\n// Source of default row heights to share.\nexport var DEFAULT_ROW_HEIGHTS = {\n    rowHeight: 42,\n    compactRowHeight: 32,\n};\n// Constant values\nvar values = __assign(__assign({}, DEFAULT_ROW_HEIGHTS), { rowVerticalPadding: 11, compactRowVerticalPadding: 6 });\nexport var getDetailsRowStyles = function (props) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n    var theme = props.theme, isSelected = props.isSelected, canSelect = props.canSelect, droppingClassName = props.droppingClassName, isCheckVisible = props.isCheckVisible, checkboxCellClassName = props.checkboxCellClassName, compact = props.compact, className = props.className, _q = props.cellStyleProps, cellStyleProps = _q === void 0 ? DEFAULT_CELL_STYLE_PROPS : _q, enableUpdateAnimations = props.enableUpdateAnimations, disabled = props.disabled;\n    var palette = theme.palette, fonts = theme.fonts;\n    var neutralPrimary = palette.neutralPrimary, white = palette.white, neutralSecondary = palette.neutralSecondary, neutralLighter = palette.neutralLighter, neutralLight = palette.neutralLight, neutralDark = palette.neutralDark, neutralQuaternaryAlt = palette.neutralQuaternaryAlt;\n    var _r = theme.semanticColors, focusBorder = _r.focusBorder, focusedLinkColor = _r.linkHovered;\n    var classNames = getGlobalClassNames(DetailsRowGlobalClassNames, theme);\n    var colors = {\n        // Default\n        defaultHeaderText: neutralPrimary,\n        defaultMetaText: neutralSecondary,\n        defaultBackground: white,\n        // Default Hover\n        defaultHoverHeaderText: neutralDark,\n        defaultHoverMetaText: neutralPrimary,\n        defaultHoverBackground: neutralLighter,\n        // Selected\n        selectedHeaderText: neutralDark,\n        selectedMetaText: neutralPrimary,\n        selectedBackground: neutralLight,\n        // Selected Hover\n        selectedHoverHeaderText: neutralDark,\n        selectedHoverMetaText: neutralPrimary,\n        selectedHoverBackground: neutralQuaternaryAlt,\n        // Focus\n        focusHeaderText: neutralDark,\n        focusMetaText: neutralPrimary,\n        focusBackground: neutralLight,\n        focusHoverBackground: neutralQuaternaryAlt,\n    };\n    var rowHighContrastFocus = {\n        top: 2,\n        right: 2,\n        bottom: 2,\n        left: 2,\n    };\n    // Selected row styles\n    var selectedStyles = [\n        getFocusStyle(theme, {\n            inset: -1,\n            borderColor: focusBorder,\n            outlineColor: white,\n            highContrastStyle: rowHighContrastFocus,\n            pointerEvents: 'none',\n        }),\n        classNames.isSelected,\n        {\n            color: colors.selectedMetaText,\n            background: colors.selectedBackground,\n            borderBottom: \"1px solid \".concat(white),\n            selectors: (_a = {\n                    '&:before': {\n                        position: 'absolute',\n                        display: 'block',\n                        top: -1,\n                        height: 1,\n                        bottom: 0,\n                        left: 0,\n                        right: 0,\n                        content: '',\n                        borderTop: \"1px solid \".concat(white),\n                    }\n                },\n                _a[\".\".concat(classNames.cell, \" > .\").concat(LinkGlobalClassNames.root)] = {\n                    color: focusedLinkColor,\n                    selectors: (_b = {},\n                        _b[HighContrastSelector] = {\n                            color: 'HighlightText',\n                        },\n                        _b),\n                },\n                // Selected State hover\n                _a['&:hover'] = {\n                    background: colors.selectedHoverBackground,\n                    color: colors.selectedHoverMetaText,\n                    selectors: (_c = {},\n                        // Selected State hover meta cell\n                        _c[HighContrastSelector] = {\n                            background: 'Highlight',\n                            selectors: (_d = {},\n                                _d[\".\".concat(classNames.cell)] = {\n                                    color: 'HighlightText',\n                                },\n                                _d[\".\".concat(classNames.cell, \" > .\").concat(LinkGlobalClassNames.root)] = {\n                                    forcedColorAdjust: 'none',\n                                    color: 'HighlightText',\n                                },\n                                _d),\n                        },\n                        // Selected State hover Header cell\n                        _c[\".\".concat(classNames.isRowHeader)] = {\n                            color: colors.selectedHoverHeaderText,\n                            selectors: (_e = {},\n                                _e[HighContrastSelector] = {\n                                    color: 'HighlightText',\n                                },\n                                _e),\n                        },\n                        _c),\n                },\n                // Focus state\n                _a['&:focus'] = {\n                    background: colors.focusBackground,\n                    selectors: (_f = {},\n                        // Selected State hover meta cell\n                        _f[\".\".concat(classNames.cell)] = {\n                            color: colors.focusMetaText,\n                            selectors: (_g = {},\n                                _g[HighContrastSelector] = {\n                                    color: 'HighlightText',\n                                    selectors: {\n                                        '> a': {\n                                            color: 'HighlightText',\n                                        },\n                                    },\n                                },\n                                _g),\n                        },\n                        // Row header cell\n                        _f[\".\".concat(classNames.isRowHeader)] = {\n                            color: colors.focusHeaderText,\n                            selectors: (_h = {},\n                                _h[HighContrastSelector] = {\n                                    color: 'HighlightText',\n                                },\n                                _h),\n                        },\n                        // Ensure high-contrast mode overrides default focus background\n                        _f[HighContrastSelector] = {\n                            background: 'Highlight',\n                        },\n                        _f),\n                },\n                _a[HighContrastSelector] = __assign(__assign({ background: 'Highlight', color: 'HighlightText' }, getHighContrastNoAdjustStyle()), { selectors: {\n                        a: {\n                            color: 'HighlightText',\n                        },\n                    } }),\n                // Focus and hover state\n                _a['&:focus:hover'] = {\n                    background: colors.focusHoverBackground,\n                },\n                _a),\n        },\n    ];\n    var cannotSelectStyles = [\n        classNames.isContentUnselectable,\n        {\n            userSelect: 'none',\n            cursor: 'default',\n        },\n    ];\n    var rootCompactStyles = {\n        minHeight: values.compactRowHeight,\n        border: 0,\n    };\n    var cellCompactStyles = {\n        minHeight: values.compactRowHeight,\n        paddingTop: values.compactRowVerticalPadding,\n        paddingBottom: values.compactRowVerticalPadding,\n        paddingLeft: \"\".concat(cellStyleProps.cellLeftPadding, \"px\"),\n    };\n    var defaultCellStyles = [\n        getFocusStyle(theme, { inset: -1 }),\n        classNames.cell,\n        {\n            display: 'inline-block',\n            position: 'relative',\n            boxSizing: 'border-box',\n            minHeight: values.rowHeight,\n            verticalAlign: 'top',\n            whiteSpace: 'nowrap',\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            paddingTop: values.rowVerticalPadding,\n            paddingBottom: values.rowVerticalPadding,\n            paddingLeft: \"\".concat(cellStyleProps.cellLeftPadding, \"px\"),\n            selectors: (_j = {\n                    '& > button': {\n                        maxWidth: '100%',\n                    }\n                },\n                _j[IsFocusableSelector] = getFocusStyle(theme, { inset: -1, borderColor: neutralSecondary, outlineColor: white }),\n                _j),\n        },\n        isSelected && {\n            selectors: (_k = {},\n                _k[HighContrastSelector] = __assign({ background: 'Highlight', color: 'HighlightText' }, getHighContrastNoAdjustStyle()),\n                _k),\n        },\n        compact && cellCompactStyles,\n        disabled && { opacity: 0.5 },\n    ];\n    return {\n        root: [\n            classNames.root,\n            AnimationClassNames.fadeIn400,\n            droppingClassName,\n            theme.fonts.small,\n            isCheckVisible && classNames.isCheckVisible,\n            getFocusStyle(theme, { borderColor: focusBorder, outlineColor: white }),\n            {\n                borderBottom: \"1px solid \".concat(neutralLighter),\n                background: colors.defaultBackground,\n                color: colors.defaultMetaText,\n                // This ensures that the row always tries to consume is minimum width and does not compress.\n                display: 'inline-flex',\n                minWidth: '100%',\n                minHeight: values.rowHeight,\n                whiteSpace: 'nowrap',\n                padding: 0,\n                boxSizing: 'border-box',\n                verticalAlign: 'top',\n                textAlign: 'left',\n                selectors: (_l = {},\n                    _l[\".\".concat(classNames.listCellFirstChild, \" &:before\")] = {\n                        display: 'none',\n                    },\n                    _l['&:hover'] = {\n                        background: colors.defaultHoverBackground,\n                        color: colors.defaultHoverMetaText,\n                        selectors: (_m = {},\n                            _m[\".\".concat(classNames.isRowHeader)] = {\n                                color: colors.defaultHoverHeaderText,\n                            },\n                            _m[\".\".concat(classNames.cell, \" > .\").concat(LinkGlobalClassNames.root)] = {\n                                color: focusedLinkColor,\n                            },\n                            _m),\n                    },\n                    _l[\"&:hover .\".concat(classNames.check)] = {\n                        opacity: 1,\n                    },\n                    // eslint-disable-next-line @fluentui/max-len\n                    _l[\".\".concat(IsFocusVisibleClassName, \" &:focus .\").concat(classNames.check, \", :host(.\").concat(IsFocusVisibleClassName, \") &:focus .\").concat(classNames.check)] = {\n                        opacity: 1,\n                    },\n                    _l['.ms-GroupSpacer'] = {\n                        flexShrink: 0,\n                        flexGrow: 0,\n                    },\n                    _l),\n            },\n            isSelected && selectedStyles,\n            !canSelect && cannotSelectStyles,\n            compact && rootCompactStyles,\n            className,\n        ],\n        cellUnpadded: {\n            paddingRight: \"\".concat(cellStyleProps.cellRightPadding, \"px\"),\n        },\n        cellPadded: {\n            paddingRight: \"\".concat(cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding, \"px\"),\n            selectors: (_o = {},\n                _o[\"&.\".concat(classNames.cellCheck)] = {\n                    paddingRight: 0,\n                },\n                _o),\n        },\n        cell: defaultCellStyles,\n        cellAnimation: enableUpdateAnimations && AnimationStyles.slideLeftIn40,\n        cellMeasurer: [\n            classNames.cellMeasurer,\n            {\n                overflow: 'visible',\n                whiteSpace: 'nowrap',\n            },\n        ],\n        checkCell: [\n            defaultCellStyles,\n            classNames.cellCheck,\n            checkboxCellClassName,\n            {\n                padding: 0,\n                // Ensure that the check cell covers the top border of the cell.\n                // This ensures the click target does not leave a spot which would\n                // cause other items to be deselected.\n                paddingTop: 1,\n                marginTop: -1,\n                flexShrink: 0,\n            },\n        ],\n        fields: [\n            classNames.fields,\n            {\n                display: 'flex',\n                alignItems: 'stretch',\n            },\n        ],\n        isRowHeader: [\n            classNames.isRowHeader,\n            {\n                color: colors.defaultHeaderText,\n                fontSize: fonts.medium.fontSize,\n            },\n            isSelected && {\n                color: colors.selectedHeaderText,\n                fontWeight: FontWeights.semibold,\n                selectors: (_p = {},\n                    _p[HighContrastSelector] = {\n                        color: 'HighlightText',\n                    },\n                    _p),\n            },\n        ],\n        isMultiline: [\n            defaultCellStyles,\n            {\n                whiteSpace: 'normal',\n                wordBreak: 'break-word',\n                textOverflow: 'clip',\n            },\n        ],\n        check: [classNames.check],\n    };\n};\n//# sourceMappingURL=DetailsRow.styles.js.map","import { __assign } from \"tslib\";\nimport { getFocusStyle, focusClear, getGlobalClassNames, HighContrastSelector, hiddenContentStyle, getHighContrastNoAdjustStyle, } from '../../Styling';\nimport { getRTL, IsFocusVisibleClassName } from '../../Utilities';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\n// For every group level there is a GroupSpacer added. Importing this const to have the source value in one place.\nimport { SPACER_WIDTH as GROUP_EXPANDER_WIDTH } from '../GroupedList/GroupSpacer';\nvar GlobalClassNames = {\n    tooltipHost: 'ms-TooltipHost',\n    root: 'ms-DetailsHeader',\n    cell: 'ms-DetailsHeader-cell',\n    cellIsCheck: 'ms-DetailsHeader-cellIsCheck',\n    collapseButton: 'ms-DetailsHeader-collapseButton',\n    isCollapsed: 'is-collapsed',\n    isAllSelected: 'is-allSelected',\n    isSelectAllHidden: 'is-selectAllHidden',\n    isResizingColumn: 'is-resizingColumn',\n    cellSizer: 'ms-DetailsHeader-cellSizer',\n    isResizing: 'is-resizing',\n    dropHintCircleStyle: 'ms-DetailsHeader-dropHintCircleStyle',\n    dropHintCaretStyle: 'ms-DetailsHeader-dropHintCaretStyle',\n    dropHintLineStyle: 'ms-DetailsHeader-dropHintLineStyle',\n    cellTitle: 'ms-DetailsHeader-cellTitle',\n    cellName: 'ms-DetailsHeader-cellName',\n    filterChevron: 'ms-DetailsHeader-filterChevron',\n    gripperBarVertical: 'ms-DetailsColumn-gripperBarVertical',\n    checkTooltip: 'ms-DetailsHeader-checkTooltip',\n    check: 'ms-DetailsHeader-check',\n};\nexport var HEADER_HEIGHT = 42;\nexport var getCellStyles = function (props) {\n    var theme = props.theme, _a = props.cellStyleProps, cellStyleProps = _a === void 0 ? DEFAULT_CELL_STYLE_PROPS : _a;\n    var semanticColors = theme.semanticColors;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return [\n        classNames.cell,\n        getFocusStyle(theme),\n        {\n            color: semanticColors.bodyText,\n            position: 'relative',\n            display: 'inline-block',\n            boxSizing: 'border-box',\n            padding: \"0 \".concat(cellStyleProps.cellRightPadding, \"px 0 \").concat(cellStyleProps.cellLeftPadding, \"px\"),\n            lineHeight: 'inherit',\n            margin: '0',\n            height: HEADER_HEIGHT,\n            verticalAlign: 'top',\n            whiteSpace: 'nowrap',\n            textOverflow: 'ellipsis',\n            textAlign: 'left',\n        },\n    ];\n};\nexport var getDetailsHeaderStyles = function (props) {\n    var _a, _b, _c, _d;\n    var theme = props.theme, className = props.className, isAllSelected = props.isAllSelected, isResizingColumn = props.isResizingColumn, isSizing = props.isSizing, isAllCollapsed = props.isAllCollapsed, _e = props.cellStyleProps, cellStyleProps = _e === void 0 ? DEFAULT_CELL_STYLE_PROPS : _e;\n    var semanticColors = theme.semanticColors, palette = theme.palette, fonts = theme.fonts;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    var colors = {\n        iconForegroundColor: semanticColors.bodySubtext,\n        headerForegroundColor: semanticColors.bodyText,\n        headerBackgroundColor: semanticColors.bodyBackground,\n        resizerColor: palette.neutralTertiaryAlt,\n    };\n    var cellSizerFadeInStyles = {\n        opacity: 1,\n        transition: 'opacity 0.3s linear',\n    };\n    var cellStyles = getCellStyles(props);\n    return {\n        root: [\n            classNames.root,\n            fonts.small,\n            {\n                display: 'inline-block',\n                background: colors.headerBackgroundColor,\n                position: 'relative',\n                minWidth: '100%',\n                verticalAlign: 'top',\n                height: HEADER_HEIGHT,\n                lineHeight: HEADER_HEIGHT,\n                whiteSpace: 'nowrap',\n                boxSizing: 'content-box',\n                paddingBottom: '1px',\n                paddingTop: '16px',\n                borderBottom: \"1px solid \".concat(semanticColors.bodyDivider),\n                cursor: 'default',\n                userSelect: 'none',\n                selectors: (_a = {},\n                    _a[\"&:hover .\".concat(classNames.check)] = {\n                        opacity: 1,\n                    },\n                    _a[\"& .\".concat(classNames.tooltipHost, \" .\").concat(classNames.checkTooltip)] = {\n                        display: 'block',\n                    },\n                    _a),\n            },\n            isAllSelected && classNames.isAllSelected,\n            isResizingColumn && classNames.isResizingColumn,\n            className,\n        ],\n        check: [\n            classNames.check,\n            {\n                height: HEADER_HEIGHT,\n            },\n            {\n                selectors: (_b = {},\n                    _b[\".\".concat(IsFocusVisibleClassName, \" &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus\")] = {\n                        opacity: 1,\n                    },\n                    _b),\n            },\n        ],\n        cellWrapperPadded: {\n            paddingRight: cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding,\n        },\n        cellIsCheck: [\n            cellStyles,\n            classNames.cellIsCheck,\n            {\n                position: 'relative',\n                padding: 0,\n                margin: 0,\n                display: 'inline-flex',\n                alignItems: 'center',\n                border: 'none',\n            },\n            isAllSelected && {\n                opacity: 1,\n            },\n        ],\n        cellIsGroupExpander: [\n            cellStyles,\n            {\n                display: 'inline-flex',\n                alignItems: 'center',\n                justifyContent: 'center',\n                fontSize: fonts.small.fontSize,\n                padding: 0,\n                border: 'none',\n                width: GROUP_EXPANDER_WIDTH, // align with GroupedList's first expandIcon cell width.\n                color: palette.neutralSecondary,\n                selectors: {\n                    ':hover': {\n                        backgroundColor: palette.neutralLighter,\n                    },\n                    ':active': {\n                        backgroundColor: palette.neutralLight,\n                    },\n                },\n            },\n        ],\n        cellIsActionable: {\n            selectors: {\n                ':hover': {\n                    color: semanticColors.bodyText,\n                    background: semanticColors.listHeaderBackgroundHovered,\n                },\n                ':active': {\n                    background: semanticColors.listHeaderBackgroundPressed,\n                },\n            },\n        },\n        cellIsEmpty: {\n            textOverflow: 'clip',\n        },\n        cellSizer: [\n            classNames.cellSizer,\n            focusClear(),\n            {\n                display: 'inline-block',\n                position: 'relative',\n                cursor: 'ew-resize',\n                bottom: 0,\n                top: 0,\n                overflow: 'hidden',\n                height: 'inherit',\n                background: 'transparent',\n                zIndex: 1,\n                width: 16,\n                selectors: (_c = {\n                        ':after': {\n                            content: '\"\"',\n                            position: 'absolute',\n                            top: 0,\n                            bottom: 0,\n                            width: 1,\n                            background: colors.resizerColor,\n                            opacity: 0,\n                            left: '50%',\n                        },\n                        ':focus:after': cellSizerFadeInStyles,\n                        ':hover:after': cellSizerFadeInStyles\n                    },\n                    _c[\"&.\".concat(classNames.isResizing, \":after\")] = [\n                        cellSizerFadeInStyles,\n                        {\n                            boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.4)',\n                        },\n                    ],\n                    _c),\n            },\n        ],\n        cellIsResizing: classNames.isResizing,\n        cellSizerStart: {\n            margin: '0 -8px',\n        },\n        cellSizerEnd: {\n            margin: 0,\n            marginLeft: -16,\n        },\n        collapseButton: [\n            classNames.collapseButton,\n            {\n                transformOrigin: '50% 50%',\n                transition: 'transform .1s linear',\n            },\n            isAllCollapsed\n                ? [\n                    classNames.isCollapsed,\n                    {\n                        transform: 'rotate(0deg)',\n                    },\n                ]\n                : {\n                    transform: getRTL(theme) ? 'rotate(-90deg)' : 'rotate(90deg)',\n                },\n        ],\n        checkTooltip: classNames.checkTooltip,\n        sizingOverlay: isSizing && {\n            position: 'absolute',\n            left: 0,\n            top: 0,\n            right: 0,\n            bottom: 0,\n            cursor: 'ew-resize',\n            background: 'rgba(255, 255, 255, 0)',\n            selectors: (_d = {},\n                _d[HighContrastSelector] = __assign({ background: 'transparent' }, getHighContrastNoAdjustStyle()),\n                _d),\n        },\n        accessibleLabel: hiddenContentStyle,\n        dropHintCircleStyle: [\n            classNames.dropHintCircleStyle,\n            {\n                display: 'inline-block',\n                visibility: 'hidden',\n                position: 'absolute',\n                bottom: 0,\n                height: 9,\n                width: 9,\n                borderRadius: '50%',\n                marginLeft: -5,\n                top: 34,\n                overflow: 'visible',\n                zIndex: 10,\n                border: \"1px solid \".concat(palette.themePrimary),\n                background: palette.white,\n            },\n        ],\n        dropHintCaretStyle: [\n            classNames.dropHintCaretStyle,\n            {\n                display: 'none',\n                position: 'absolute',\n                top: -28,\n                left: -6.5,\n                fontSize: fonts.medium.fontSize,\n                color: palette.themePrimary,\n                overflow: 'visible',\n                zIndex: 10,\n            },\n        ],\n        dropHintLineStyle: [\n            classNames.dropHintLineStyle,\n            {\n                display: 'none',\n                position: 'absolute',\n                bottom: 0,\n                top: 0,\n                overflow: 'hidden',\n                height: 42,\n                width: 1,\n                background: palette.themePrimary,\n                zIndex: 10,\n            },\n        ],\n        dropHintStyle: {\n            display: 'inline-block',\n            position: 'absolute',\n        },\n    };\n};\n//# sourceMappingURL=DetailsHeader.styles.js.map","import { __assign } from \"tslib\";\nimport { HighContrastSelector, getGlobalClassNames, IconFontSizes, getHighContrastNoAdjustStyle } from '../../Styling';\nimport { getRTL } from '../../Utilities';\nexport var CheckGlobalClassNames = {\n    root: 'ms-Check',\n    circle: 'ms-Check-circle',\n    check: 'ms-Check-check',\n    /** Must be manually applied to the parent element of the check. */\n    checkHost: 'ms-Check-checkHost',\n};\nexport var getStyles = function (props) {\n    var _a, _b, _c, _d, _e;\n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    var _f = props.height, height = _f === void 0 ? props.checkBoxHeight || '18px' : _f, checked = props.checked, className = props.className, theme = props.theme;\n    var palette = theme.palette, semanticColors = theme.semanticColors, fonts = theme.fonts;\n    var isRTL = getRTL(theme);\n    var classNames = getGlobalClassNames(CheckGlobalClassNames, theme);\n    var sharedCircleCheck = {\n        fontSize: height,\n        position: 'absolute',\n        left: 0,\n        top: 0,\n        width: height,\n        height: height,\n        textAlign: 'center',\n        // inline-flex prevents the check from shifting with custom line height styles\n        display: 'inline-flex',\n        alignItems: 'center',\n        justifyContent: 'center',\n        verticalAlign: 'middle',\n    };\n    return {\n        root: [\n            classNames.root,\n            fonts.medium,\n            {\n                // lineHeight currently needs to be a string to output without 'px'\n                lineHeight: '1',\n                width: height,\n                height: height,\n                verticalAlign: 'top',\n                position: 'relative',\n                userSelect: 'none',\n                selectors: (_a = {\n                        ':before': {\n                            content: '\"\"',\n                            position: 'absolute',\n                            top: '1px',\n                            right: '1px',\n                            bottom: '1px',\n                            left: '1px',\n                            borderRadius: '50%',\n                            opacity: 1,\n                            background: semanticColors.bodyBackground,\n                        }\n                    },\n                    _a[\".\".concat(classNames.checkHost, \":hover &, .\").concat(classNames.checkHost, \":focus &, &:hover, &:focus\")] = {\n                        opacity: 1,\n                    },\n                    _a),\n            },\n            checked && [\n                'is-checked',\n                {\n                    selectors: {\n                        ':before': {\n                            background: palette.themePrimary,\n                            opacity: 1,\n                            selectors: (_b = {},\n                                _b[HighContrastSelector] = {\n                                    background: 'Window',\n                                },\n                                _b),\n                        },\n                    },\n                },\n            ],\n            className,\n        ],\n        circle: [\n            classNames.circle,\n            sharedCircleCheck,\n            {\n                color: palette.neutralSecondary,\n                selectors: (_c = {},\n                    _c[HighContrastSelector] = {\n                        color: 'WindowText',\n                    },\n                    _c),\n            },\n            checked && {\n                color: palette.white,\n            },\n        ],\n        check: [\n            classNames.check,\n            sharedCircleCheck,\n            {\n                opacity: 0,\n                color: palette.neutralSecondary,\n                fontSize: IconFontSizes.medium,\n                left: isRTL ? '-0.5px' : '.5px', // for centering the check icon inside the circle.\n                top: '-1px', // the check is slightly lower than center compared to the circle.\n                selectors: (_d = {\n                        ':hover': {\n                            opacity: 1,\n                        }\n                    },\n                    _d[HighContrastSelector] = __assign({}, getHighContrastNoAdjustStyle()),\n                    _d),\n            },\n            checked && {\n                opacity: 1,\n                color: palette.white,\n                fontWeight: 900,\n                selectors: (_e = {},\n                    _e[HighContrastSelector] = {\n                        border: 'none',\n                        color: 'WindowText',\n                    },\n                    _e),\n            },\n        ],\n        checkHost: classNames.checkHost,\n    };\n};\n//# sourceMappingURL=Check.styles.js.map","import { getGlobalClassNames, getFocusStyle } from '../../Styling';\nimport { DEFAULT_ROW_HEIGHTS } from './DetailsRow.styles';\nimport { HEADER_HEIGHT } from './DetailsHeader.styles';\nimport { CheckGlobalClassNames } from '../../components/Check/Check.styles';\nvar GlobalClassNames = {\n    root: 'ms-DetailsRow-check',\n    isDisabled: 'ms-DetailsRow-check--isDisabled',\n    isHeader: 'ms-DetailsRow-check--isHeader',\n};\nexport var CHECK_CELL_WIDTH = 48;\nexport var getDetailsRowCheckStyles = function (props) {\n    var theme = props.theme, className = props.className, isHeader = props.isHeader, selected = props.selected, anySelected = props.anySelected, canSelect = props.canSelect, compact = props.compact, isVisible = props.isVisible;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    var rowHeight = DEFAULT_ROW_HEIGHTS.rowHeight, compactRowHeight = DEFAULT_ROW_HEIGHTS.compactRowHeight;\n    var height = isHeader ? HEADER_HEIGHT : compact ? compactRowHeight : rowHeight;\n    var isCheckVisible = isVisible || selected || anySelected;\n    return {\n        root: [classNames.root, className],\n        check: [\n            !canSelect && classNames.isDisabled,\n            isHeader && classNames.isHeader,\n            getFocusStyle(theme),\n            theme.fonts.small,\n            CheckGlobalClassNames.checkHost,\n            {\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center',\n                cursor: 'default',\n                boxSizing: 'border-box',\n                verticalAlign: 'top',\n                background: 'none',\n                backgroundColor: 'transparent',\n                border: 'none',\n                opacity: isCheckVisible ? 1 : 0,\n                height: height,\n                width: CHECK_CELL_WIDTH,\n                padding: 0,\n                margin: 0,\n            },\n        ],\n        isDisabled: [],\n    };\n};\n//# sourceMappingURL=DetailsRowCheck.styles.js.map","import { getGlobalClassNames, getFocusStyle, AnimationVariables, FontWeights, IconFontSizes } from '../../Styling';\nimport { getRTL, IsFocusVisibleClassName } from '../../Utilities';\nimport { DEFAULT_CELL_STYLE_PROPS } from '../DetailsList/DetailsRow.styles';\nimport { CHECK_CELL_WIDTH } from '../DetailsList/DetailsRowCheck.styles';\n// For every group level there is a GroupSpacer added. Importing this const to have the source value in one place.\nimport { SPACER_WIDTH as EXPAND_BUTTON_WIDTH } from './GroupSpacer';\nvar GlobalClassNames = {\n    root: 'ms-GroupHeader',\n    compact: 'ms-GroupHeader--compact',\n    check: 'ms-GroupHeader-check',\n    dropIcon: 'ms-GroupHeader-dropIcon',\n    expand: 'ms-GroupHeader-expand',\n    isCollapsed: 'is-collapsed',\n    title: 'ms-GroupHeader-title',\n    isSelected: 'is-selected',\n    iconTag: 'ms-Icon--Tag',\n    group: 'ms-GroupedList-group',\n    isDropping: 'is-dropping',\n};\nvar beziers = {\n    easeOutCirc: 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',\n    easeOutSine: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n    easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n};\nvar DEFAULT_GROUP_HEADER_HEIGHT = 48;\nvar COMPACT_GROUP_HEADER_HEIGHT = 40;\nexport var getStyles = function (props) {\n    var _a, _b, _c, _d, _e;\n    var theme = props.theme, className = props.className, selected = props.selected, isCollapsed = props.isCollapsed, compact = props.compact;\n    // padding from the source to align GroupHeader title with DetailsRow's first cell.\n    var cellLeftPadding = DEFAULT_CELL_STYLE_PROPS.cellLeftPadding;\n    var finalRowHeight = compact ? COMPACT_GROUP_HEADER_HEIGHT : DEFAULT_GROUP_HEADER_HEIGHT;\n    var semanticColors = theme.semanticColors, palette = theme.palette, fonts = theme.fonts;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    var checkExpandResetStyles = [\n        getFocusStyle(theme),\n        {\n            cursor: 'default',\n            background: 'none',\n            backgroundColor: 'transparent',\n            border: 'none',\n            padding: 0, // cancel default <button> padding\n        },\n    ];\n    return {\n        root: [\n            classNames.root,\n            getFocusStyle(theme),\n            theme.fonts.medium,\n            {\n                // keep the border for height but color it so it's invisible.\n                borderBottom: \"1px solid \".concat(semanticColors.listBackground),\n                cursor: 'default',\n                userSelect: 'none',\n                selectors: (_a = {\n                        ':hover': {\n                            background: semanticColors.listItemBackgroundHovered,\n                            color: semanticColors.actionLinkHovered,\n                        }\n                    },\n                    _a[\"&:hover .\".concat(classNames.check)] = {\n                        opacity: 1,\n                    },\n                    // eslint-disable-next-line @fluentui/max-len\n                    _a[\".\".concat(IsFocusVisibleClassName, \" &:focus .\").concat(classNames.check, \", :host(.\").concat(IsFocusVisibleClassName, \") &:focus .\").concat(classNames.check)] = {\n                        opacity: 1,\n                    },\n                    _a[\":global(.\".concat(classNames.group, \".\").concat(classNames.isDropping, \")\")] = {\n                        selectors: (_b = {},\n                            _b[\"& > .\".concat(classNames.root, \" .\").concat(classNames.dropIcon)] = {\n                                transition: \"transform \".concat(AnimationVariables.durationValue4, \" \").concat(beziers.easeOutCirc, \" \") +\n                                    \"opacity \".concat(AnimationVariables.durationValue1, \" \").concat(beziers.easeOutSine),\n                                transitionDelay: AnimationVariables.durationValue3,\n                                opacity: 1,\n                                transform: \"rotate(0.2deg) scale(1);\", // rotation prevents jittery motion in IE\n                            },\n                            _b[\".\".concat(classNames.check)] = {\n                                opacity: 0,\n                            },\n                            _b),\n                    },\n                    _a),\n            },\n            selected && [\n                classNames.isSelected,\n                {\n                    background: semanticColors.listItemBackgroundChecked,\n                    selectors: (_c = {\n                            ':hover': {\n                                background: semanticColors.listItemBackgroundCheckedHovered,\n                            }\n                        },\n                        _c[\"\".concat(classNames.check)] = {\n                            opacity: 1,\n                        },\n                        _c),\n                },\n            ],\n            compact && [classNames.compact, { border: 'none' }],\n            className,\n        ],\n        groupHeaderContainer: [\n            {\n                display: 'flex',\n                alignItems: 'center',\n                height: finalRowHeight,\n            },\n        ],\n        headerCount: [\n            {\n                padding: '0px 4px',\n            },\n        ],\n        check: [\n            classNames.check,\n            checkExpandResetStyles,\n            {\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center',\n                // paddingTop and marginTop brought from the DetailsRow.styles.ts with explanation below.\n                // Ensure that the check cell covers the top border of the cell.\n                // This ensures the click target does not leave a spot which would\n                // cause other items to be deselected.\n                paddingTop: 1,\n                marginTop: -1,\n                opacity: 0,\n                width: CHECK_CELL_WIDTH,\n                height: finalRowHeight,\n                selectors: (_d = {},\n                    _d[\".\".concat(IsFocusVisibleClassName, \" &:focus, :host(.\").concat(IsFocusVisibleClassName, \") &:focus\")] = {\n                        opacity: 1,\n                    },\n                    _d),\n            },\n        ],\n        expand: [\n            classNames.expand,\n            checkExpandResetStyles,\n            {\n                display: 'flex',\n                flexShrink: 0,\n                alignItems: 'center',\n                justifyContent: 'center',\n                fontSize: fonts.small.fontSize,\n                width: EXPAND_BUTTON_WIDTH,\n                height: finalRowHeight,\n                color: selected ? palette.neutralPrimary : palette.neutralSecondary,\n                selectors: {\n                    ':hover': {\n                        backgroundColor: selected ? palette.neutralQuaternary : palette.neutralLight,\n                    },\n                    ':active': {\n                        backgroundColor: selected ? palette.neutralTertiaryAlt : palette.neutralQuaternaryAlt,\n                    },\n                },\n            },\n        ],\n        expandIsCollapsed: [\n            isCollapsed\n                ? [\n                    classNames.isCollapsed,\n                    {\n                        transform: 'rotate(0deg)',\n                        transformOrigin: '50% 50%',\n                        transition: 'transform .1s linear',\n                    },\n                ]\n                : {\n                    transform: getRTL(theme) ? 'rotate(-90deg)' : 'rotate(90deg)',\n                    transformOrigin: '50% 50%',\n                    transition: 'transform .1s linear',\n                },\n        ],\n        title: [\n            classNames.title,\n            {\n                paddingLeft: cellLeftPadding,\n                fontSize: compact ? fonts.medium.fontSize : fonts.mediumPlus.fontSize,\n                fontWeight: isCollapsed ? FontWeights.regular : FontWeights.semibold,\n                cursor: 'pointer',\n                outline: 0,\n                whiteSpace: 'nowrap',\n                textOverflow: 'ellipsis',\n                overflow: 'hidden',\n            },\n        ],\n        dropIcon: [\n            classNames.dropIcon,\n            {\n                position: 'absolute',\n                left: -26,\n                fontSize: IconFontSizes.large,\n                color: palette.neutralSecondary,\n                transition: \"transform \".concat(AnimationVariables.durationValue2, \" \").concat(beziers.easeInBack, \", \") +\n                    \"opacity \".concat(AnimationVariables.durationValue4, \" \").concat(beziers.easeOutSine),\n                opacity: 0,\n                transform: 'rotate(0.2deg) scale(0.65)', // rotation prevents jittery motion in IE\n                transformOrigin: '10px 10px',\n                selectors: (_e = {},\n                    _e[\":global(.\".concat(classNames.iconTag, \")\")] = {\n                        position: 'absolute',\n                    },\n                    _e),\n            },\n        ],\n    };\n};\n//# sourceMappingURL=GroupHeader.styles.js.map","import * as React from 'react';\nimport { Icon, FontIcon } from '../../Icon';\nimport { classNamesFunction } from '../../Utilities';\nvar getClassNames = classNamesFunction();\nexport var CheckBase = React.forwardRef(function (props, ref) {\n    var _a = props.checked, checked = _a === void 0 ? false : _a, className = props.className, theme = props.theme, styles = props.styles, _b = props.useFastIcons, useFastIcons = _b === void 0 ? true : _b;\n    var classNames = getClassNames(styles, { theme: theme, className: className, checked: checked });\n    var IconComponent = useFastIcons ? FontIcon : Icon;\n    return (React.createElement(\"div\", { className: classNames.root, ref: ref },\n        React.createElement(IconComponent, { iconName: \"CircleRing\", className: classNames.circle }),\n        React.createElement(IconComponent, { iconName: \"StatusCircleCheckmark\", className: classNames.check })));\n});\nCheckBase.displayName = 'CheckBase';\n//# sourceMappingURL=Check.base.js.map","import { styled } from '../../Utilities';\nimport { CheckBase } from './Check.base';\nimport { getStyles } from './Check.styles';\nexport var Check = styled(CheckBase, getStyles, undefined, {\n    scope: 'Check',\n}, true);\n//# sourceMappingURL=Check.js.map","/**\n * Possible variations of the spinner circle size.\n * {@docCategory Spinner}\n */\nexport var SpinnerSize;\n(function (SpinnerSize) {\n    /**\n     * 12px Spinner diameter\n     */\n    SpinnerSize[SpinnerSize[\"xSmall\"] = 0] = \"xSmall\";\n    /**\n     * 16px Spinner diameter\n     */\n    SpinnerSize[SpinnerSize[\"small\"] = 1] = \"small\";\n    /**\n     * 20px Spinner diameter\n     */\n    SpinnerSize[SpinnerSize[\"medium\"] = 2] = \"medium\";\n    /**\n     * 28px Spinner diameter\n     */\n    SpinnerSize[SpinnerSize[\"large\"] = 3] = \"large\";\n})(SpinnerSize || (SpinnerSize = {}));\n/**\n * @deprecated Use `SpinnerSize` instead. Will be removed at \\>= 2.0.0.\n * {@docCategory Spinner}\n */\nexport var SpinnerType;\n(function (SpinnerType) {\n    /**\n     * @deprecated Use `SpinnerSize.medium` instead. Will be removed at \\>= 2.0.0.\n     */\n    SpinnerType[SpinnerType[\"normal\"] = 0] = \"normal\";\n    /**\n     * @deprecated Use `SpinnerSize.large` instead. Will be removed at \\>= 2.0.0.\n     */\n    SpinnerType[SpinnerType[\"large\"] = 1] = \"large\";\n})(SpinnerType || (SpinnerType = {}));\n//# sourceMappingURL=Spinner.types.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { SpinnerType, SpinnerSize } from './Spinner.types';\nimport { classNamesFunction, DelayedRender, getNativeProps, divProperties } from '../../Utilities';\nvar getClassNames = classNamesFunction();\nvar SpinnerBase = /** @class */ (function (_super) {\n    __extends(SpinnerBase, _super);\n    function SpinnerBase() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SpinnerBase.prototype.render = function () {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        var _a = this.props, type = _a.type, size = _a.size, ariaLabel = _a.ariaLabel, ariaLive = _a.ariaLive, styles = _a.styles, label = _a.label, theme = _a.theme, className = _a.className, labelPosition = _a.labelPosition;\n        var statusMessage = ariaLabel;\n        var nativeProps = getNativeProps(this.props, divProperties, ['size']);\n        // SpinnerType is deprecated. If someone is still using this property, rather than putting the SpinnerType into the\n        // ISpinnerStyleProps, we'll map SpinnerType to its equivalent SpinnerSize and pass that in. Once SpinnerType\n        // finally goes away we should delete this.\n        var styleSize = size;\n        if (styleSize === undefined && type !== undefined) {\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            styleSize = type === SpinnerType.large ? SpinnerSize.large : SpinnerSize.medium;\n        }\n        var classNames = getClassNames(styles, {\n            theme: theme,\n            size: styleSize,\n            className: className,\n            labelPosition: labelPosition,\n        });\n        return (React.createElement(\"div\", __assign({}, nativeProps, { className: classNames.root }),\n            React.createElement(\"div\", { className: classNames.circle }),\n            label && React.createElement(\"div\", { className: classNames.label }, label),\n            statusMessage && (React.createElement(\"div\", { role: \"status\", \"aria-live\": ariaLive },\n                React.createElement(DelayedRender, null,\n                    React.createElement(\"div\", { className: classNames.screenReaderText }, statusMessage))))));\n    };\n    SpinnerBase.defaultProps = {\n        size: SpinnerSize.medium,\n        ariaLive: 'polite',\n        labelPosition: 'bottom',\n    };\n    return SpinnerBase;\n}(React.Component));\nexport { SpinnerBase };\n//# sourceMappingURL=Spinner.base.js.map","import { __assign } from \"tslib\";\nimport { SpinnerSize } from './Spinner.types';\nimport { hiddenContentStyle, keyframes, HighContrastSelector, getGlobalClassNames, getHighContrastNoAdjustStyle, } from '../../Styling';\nimport { memoizeFunction } from '../../Utilities';\nvar GlobalClassNames = {\n    root: 'ms-Spinner',\n    circle: 'ms-Spinner-circle',\n    label: 'ms-Spinner-label',\n};\nvar spinAnimation = memoizeFunction(function () {\n    return keyframes({\n        '0%': {\n            transform: 'rotate(0deg)',\n        },\n        '100%': {\n            transform: 'rotate(360deg)',\n        },\n    });\n});\nexport var getStyles = function (props) {\n    var _a;\n    var theme = props.theme, size = props.size, className = props.className, labelPosition = props.labelPosition;\n    var palette = theme.palette;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            classNames.root,\n            {\n                display: 'flex',\n                flexDirection: 'column',\n                alignItems: 'center',\n                justifyContent: 'center',\n            },\n            labelPosition === 'top' && {\n                flexDirection: 'column-reverse',\n            },\n            labelPosition === 'right' && {\n                flexDirection: 'row',\n            },\n            labelPosition === 'left' && {\n                flexDirection: 'row-reverse',\n            },\n            className,\n        ],\n        circle: [\n            classNames.circle,\n            {\n                boxSizing: 'border-box',\n                borderRadius: '50%',\n                borderWidth: '1.5px',\n                borderStyle: 'solid',\n                borderTopColor: palette.themePrimary,\n                borderRightColor: palette.themeLight,\n                borderBottomColor: palette.themeLight,\n                borderLeftColor: palette.themeLight,\n                animationName: spinAnimation(),\n                animationDuration: '1.3s',\n                animationIterationCount: 'infinite',\n                animationTimingFunction: 'cubic-bezier(.53,.21,.29,.67)',\n                selectors: (_a = {},\n                    _a[HighContrastSelector] = __assign({ borderTopColor: 'Highlight' }, getHighContrastNoAdjustStyle()),\n                    _a),\n            },\n            size === SpinnerSize.xSmall && [\n                'ms-Spinner--xSmall',\n                {\n                    width: 12,\n                    height: 12,\n                },\n            ],\n            size === SpinnerSize.small && [\n                'ms-Spinner--small',\n                {\n                    width: 16,\n                    height: 16,\n                },\n            ],\n            size === SpinnerSize.medium && [\n                'ms-Spinner--medium',\n                {\n                    width: 20,\n                    height: 20,\n                },\n            ],\n            size === SpinnerSize.large && [\n                'ms-Spinner--large',\n                {\n                    width: 28,\n                    height: 28,\n                },\n            ],\n        ],\n        label: [\n            classNames.label,\n            theme.fonts.small,\n            {\n                color: palette.themePrimary,\n                margin: '8px 0 0',\n                textAlign: 'center',\n            },\n            labelPosition === 'top' && {\n                margin: '0 0 8px',\n            },\n            labelPosition === 'right' && {\n                margin: '0 0 0 8px',\n            },\n            labelPosition === 'left' && {\n                margin: '0 8px 0 0',\n            },\n        ],\n        screenReaderText: hiddenContentStyle,\n    };\n};\n//# sourceMappingURL=Spinner.styles.js.map","import { styled } from '../../Utilities';\nimport { SpinnerBase } from './Spinner.base';\nimport { getStyles } from './Spinner.styles';\nexport var Spinner = styled(SpinnerBase, getStyles, undefined, { scope: 'Spinner' });\n//# sourceMappingURL=Spinner.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { composeRenderFunction, classNamesFunction, getId, getRTL, getRTLSafeKeyCode, KeyCodes } from '../../Utilities';\nimport { SelectionMode } from '../../Selection';\nimport { Check } from '../../Check';\nimport { Icon } from '../../Icon';\nimport { GroupSpacer } from './GroupSpacer';\nimport { Spinner } from '../../Spinner';\nimport { CHECK_CELL_WIDTH } from '../DetailsList/DetailsRowCheck.styles';\nvar getClassNames = classNamesFunction();\nvar GroupHeaderBase = /** @class */ (function (_super) {\n    __extends(GroupHeaderBase, _super);\n    function GroupHeaderBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._toggleCollapse = function () {\n            var _a = _this.props, group = _a.group, onToggleCollapse = _a.onToggleCollapse, isGroupLoading = _a.isGroupLoading;\n            var isCollapsed = _this.state.isCollapsed;\n            var newCollapsed = !isCollapsed;\n            var newLoadingVisible = !newCollapsed && isGroupLoading && isGroupLoading(group);\n            _this.setState({\n                isCollapsed: newCollapsed,\n                isLoadingVisible: newLoadingVisible,\n            });\n            if (onToggleCollapse) {\n                onToggleCollapse(group);\n            }\n        };\n        _this._onKeyUp = function (ev) {\n            var _a = _this.props, group = _a.group, onGroupHeaderKeyUp = _a.onGroupHeaderKeyUp;\n            if (onGroupHeaderKeyUp) {\n                onGroupHeaderKeyUp(ev, group);\n            }\n            if (!ev.defaultPrevented) {\n                // eslint-disable-next-line @typescript-eslint/no-deprecated\n                var shouldOpen = _this.state.isCollapsed && ev.which === getRTLSafeKeyCode(KeyCodes.right, _this.props.theme);\n                // eslint-disable-next-line @typescript-eslint/no-deprecated\n                var shouldClose = !_this.state.isCollapsed && ev.which === getRTLSafeKeyCode(KeyCodes.left, _this.props.theme);\n                if (shouldClose || shouldOpen) {\n                    _this._toggleCollapse();\n                    ev.stopPropagation();\n                    ev.preventDefault();\n                }\n            }\n        };\n        _this._onToggleClick = function (ev) {\n            _this._toggleCollapse();\n            ev.stopPropagation();\n            ev.preventDefault();\n        };\n        _this._onHeaderClick = function () {\n            var _a = _this.props, group = _a.group, onGroupHeaderClick = _a.onGroupHeaderClick;\n            if (onGroupHeaderClick) {\n                onGroupHeaderClick(group);\n            }\n        };\n        _this._onRenderTitle = function (props) {\n            var group = props.group;\n            if (!group) {\n                return null;\n            }\n            var onRenderName = props.onRenderName\n                ? composeRenderFunction(props.onRenderName, _this._onRenderName)\n                : _this._onRenderName;\n            return (React.createElement(\"div\", { className: _this._classNames.title, id: _this._id, onClick: _this._onHeaderClick, role: \"gridcell\", \"aria-colspan\": _this.props.ariaColSpan, \"data-selection-invoke\": true }, onRenderName(props)));\n        };\n        _this._onRenderName = function (props) {\n            var group = props.group;\n            if (!group) {\n                return null;\n            }\n            return (React.createElement(React.Fragment, null,\n                React.createElement(\"span\", null, group.name),\n                React.createElement(\"span\", { className: _this._classNames.headerCount },\n                    \"(\",\n                    group.count,\n                    group.hasMoreData && '+',\n                    \")\")));\n        };\n        _this._id = getId('GroupHeader');\n        _this.state = {\n            isCollapsed: (_this.props.group && _this.props.group.isCollapsed),\n            isLoadingVisible: false,\n        };\n        return _this;\n    }\n    GroupHeaderBase.getDerivedStateFromProps = function (nextProps, previousState) {\n        if (nextProps.group) {\n            var newCollapsed = nextProps.group.isCollapsed;\n            var isGroupLoading = nextProps.isGroupLoading;\n            var newLoadingVisible = !newCollapsed && isGroupLoading && isGroupLoading(nextProps.group);\n            return __assign(__assign({}, previousState), { isCollapsed: newCollapsed || false, isLoadingVisible: newLoadingVisible || false });\n        }\n        return previousState;\n    };\n    GroupHeaderBase.prototype.render = function () {\n        var _a = this.props, group = _a.group, _b = _a.groupLevel, groupLevel = _b === void 0 ? 0 : _b, viewport = _a.viewport, selectionMode = _a.selectionMode, loadingText = _a.loadingText, \n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        _c = _a.isSelected, \n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        isSelected = _c === void 0 ? false : _c, _d = _a.selected, selected = _d === void 0 ? false : _d, indentWidth = _a.indentWidth, onRenderGroupHeaderCheckbox = _a.onRenderGroupHeaderCheckbox, _e = _a.isCollapsedGroupSelectVisible, isCollapsedGroupSelectVisible = _e === void 0 ? true : _e, \n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        expandButtonProps = _a.expandButtonProps, expandButtonIcon = _a.expandButtonIcon, selectAllButtonProps = _a.selectAllButtonProps, theme = _a.theme, styles = _a.styles, className = _a.className, compact = _a.compact, ariaLevel = _a.ariaLevel, ariaPosInSet = _a.ariaPosInSet, ariaSetSize = _a.ariaSetSize, ariaRowIndex = _a.ariaRowIndex, useFastIcons = _a.useFastIcons;\n        var onRenderTitle = this.props.onRenderTitle\n            ? composeRenderFunction(this.props.onRenderTitle, this._onRenderTitle)\n            : this._onRenderTitle;\n        var defaultCheckboxRender = useFastIcons ? this._fastDefaultCheckboxRender : this._defaultCheckboxRender;\n        var onRenderCheckbox = onRenderGroupHeaderCheckbox\n            ? composeRenderFunction(onRenderGroupHeaderCheckbox, defaultCheckboxRender)\n            : defaultCheckboxRender;\n        var _f = this.state, isCollapsed = _f.isCollapsed, isLoadingVisible = _f.isLoadingVisible;\n        var canSelectGroup = selectionMode === SelectionMode.multiple;\n        var isSelectionCheckVisible = canSelectGroup && (isCollapsedGroupSelectVisible || !(group && group.isCollapsed));\n        var currentlySelected = selected || isSelected;\n        var isRTL = getRTL(theme);\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            className: className,\n            selected: currentlySelected,\n            isCollapsed: isCollapsed,\n            compact: compact,\n        });\n        if (!group) {\n            return null;\n        }\n        return (React.createElement(\"div\", { className: this._classNames.root, style: viewport ? { minWidth: viewport.width } : {}, role: \"row\", \"aria-level\": ariaLevel, \"aria-setsize\": ariaSetSize, \"aria-posinset\": ariaPosInSet, \"aria-rowindex\": ariaRowIndex, \"data-is-focusable\": true, onKeyUp: this._onKeyUp, \"aria-label\": group.ariaLabel, \"aria-labelledby\": group.ariaLabel ? undefined : this._id, \"aria-expanded\": !this.state.isCollapsed, \"aria-selected\": canSelectGroup ? currentlySelected : undefined, \"data-selection-index\": group.startIndex, \"data-selection-span\": group.count },\n            React.createElement(\"div\", { className: this._classNames.groupHeaderContainer, role: \"presentation\" },\n                isSelectionCheckVisible ? (React.createElement(\"div\", { role: \"gridcell\" },\n                    React.createElement(\"button\", __assign({ \"data-is-focusable\": false, type: \"button\", className: this._classNames.check, role: \"checkbox\", id: \"\".concat(this._id, \"-check\"), \"aria-checked\": currentlySelected, \"aria-labelledby\": \"\".concat(this._id, \"-check \").concat(this._id), \"data-selection-toggle\": true }, selectAllButtonProps), onRenderCheckbox({ checked: currentlySelected, theme: theme }, onRenderCheckbox)))) : (\n                // To make the group header align properly with the column headers, this spacer\n                // needs to be the same width as the check cell in the column header.\n                selectionMode !== SelectionMode.none && React.createElement(GroupSpacer, { indentWidth: CHECK_CELL_WIDTH, count: 1 })),\n                React.createElement(GroupSpacer, { indentWidth: indentWidth, count: groupLevel }),\n                React.createElement(\"div\", { className: this._classNames.dropIcon, role: \"presentation\" },\n                    React.createElement(Icon, { iconName: \"Tag\" })),\n                React.createElement(\"div\", { role: \"gridcell\" },\n                    React.createElement(\"button\", __assign({ \"data-is-focusable\": false, \"data-selection-disabled\": true, type: \"button\", className: this._classNames.expand, onClick: this._onToggleClick, \"aria-expanded\": !this.state.isCollapsed }, expandButtonProps),\n                        React.createElement(Icon, { className: this._classNames.expandIsCollapsed, iconName: expandButtonIcon || (isRTL ? 'ChevronLeftMed' : 'ChevronRightMed') }))),\n                onRenderTitle(this.props),\n                isLoadingVisible && React.createElement(Spinner, { label: loadingText }))));\n    };\n    GroupHeaderBase.prototype._defaultCheckboxRender = function (checkboxProps) {\n        return React.createElement(Check, { checked: checkboxProps.checked });\n    };\n    GroupHeaderBase.prototype._fastDefaultCheckboxRender = function (checkboxProps) {\n        return React.createElement(FastCheck, { theme: checkboxProps.theme, checked: checkboxProps.checked });\n    };\n    GroupHeaderBase.defaultProps = {\n        expandButtonProps: { 'aria-label': 'expand collapse group' },\n    };\n    return GroupHeaderBase;\n}(React.Component));\nexport { GroupHeaderBase };\nvar FastCheck = React.memo(function (props) {\n    return React.createElement(Check, { theme: props.theme, checked: props.checked, className: props.className, useFastIcons: true });\n});\n//# sourceMappingURL=GroupHeader.base.js.map","import { styled } from '../../Utilities';\nimport { getStyles } from './GroupHeader.styles';\nimport { GroupHeaderBase } from './GroupHeader.base';\nexport var GroupHeader = styled(GroupHeaderBase, getStyles, undefined, {\n    scope: 'GroupHeader',\n});\n//# sourceMappingURL=GroupHeader.js.map","import { getGlobalClassNames } from '../../Styling';\nvar GlobalClassNames = {\n    root: 'ms-GroupShowAll',\n    link: 'ms-Link',\n};\nexport var getStyles = function (props) {\n    var _a;\n    var theme = props.theme;\n    var fonts = theme.fonts;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            classNames.root,\n            {\n                position: 'relative',\n                padding: '10px 84px',\n                cursor: 'pointer',\n                selectors: (_a = {},\n                    _a[\".\".concat(classNames.link)] = {\n                        fontSize: fonts.small.fontSize,\n                    },\n                    _a),\n            },\n        ],\n    };\n};\n//# sourceMappingURL=GroupShowAll.styles.js.map","import * as React from 'react';\nimport { classNamesFunction } from '../../Utilities';\nimport { Link } from '../../Link';\nimport { GroupSpacer } from './GroupSpacer';\nvar getClassNames = classNamesFunction();\nexport var GroupShowAllBase = function (props) {\n    var group = props.group, groupLevel = props.groupLevel, _a = props.showAllLinkText, showAllLinkText = _a === void 0 ? 'Show All' : _a, styles = props.styles, theme = props.theme, onToggleSummarize = props.onToggleSummarize;\n    var classNames = getClassNames(styles, { theme: theme });\n    var memoizedOnClick = React.useCallback(function (ev) {\n        onToggleSummarize(group);\n        ev.stopPropagation();\n        ev.preventDefault();\n    }, [onToggleSummarize, group]);\n    if (group) {\n        return (React.createElement(\"div\", { className: classNames.root },\n            React.createElement(GroupSpacer, { count: groupLevel }),\n            React.createElement(Link, { onClick: memoizedOnClick }, showAllLinkText)));\n    }\n    return null;\n};\n//# sourceMappingURL=GroupShowAll.base.js.map","import { styled } from '../../Utilities';\nimport { getStyles } from './GroupShowAll.styles';\nimport { GroupShowAllBase } from './GroupShowAll.base';\nexport var GroupShowAll = styled(GroupShowAllBase, getStyles, undefined, { scope: 'GroupShowAll' });\n//# sourceMappingURL=GroupShowAll.js.map","import { getGlobalClassNames } from '../../Styling';\nvar GlobalClassNames = {\n    root: 'ms-groupFooter',\n};\nexport var getStyles = function (props) {\n    var theme = props.theme, className = props.className;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            theme.fonts.medium,\n            classNames.root,\n            {\n                position: 'relative',\n                padding: '5px 38px',\n            },\n            className,\n        ],\n    };\n};\n//# sourceMappingURL=GroupFooter.styles.js.map","import * as React from 'react';\nimport { classNamesFunction } from '../../Utilities';\nimport { GroupSpacer } from './GroupSpacer';\nvar getClassNames = classNamesFunction();\nexport var GroupFooterBase = function (props) {\n    var group = props.group, groupLevel = props.groupLevel, footerText = props.footerText, indentWidth = props.indentWidth, styles = props.styles, theme = props.theme;\n    var classNames = getClassNames(styles, { theme: theme });\n    if (group && footerText) {\n        return (React.createElement(\"div\", { className: classNames.root },\n            React.createElement(GroupSpacer, { indentWidth: indentWidth, count: groupLevel }),\n            footerText));\n    }\n    return null;\n};\n//# sourceMappingURL=GroupFooter.base.js.map","import { styled } from '../../Utilities';\nimport { getStyles } from './GroupFooter.styles';\nimport { GroupFooterBase } from './GroupFooter.base';\nexport var GroupFooter = styled(GroupFooterBase, getStyles, undefined, {\n    scope: 'GroupFooter',\n});\n//# sourceMappingURL=GroupFooter.js.map","/**\n * {@docCategory List}\n */\nexport var ScrollToMode = {\n    /**\n     * Does not make any consideration to where in the viewport the item should align to.\n     */\n    auto: 0,\n    /**\n     * Attempts to scroll the list so the top of the desired item is aligned with the top of the viewport.\n     */\n    top: 1,\n    /**\n     * Attempts to scroll the list so the bottom of the desired item is aligned with the bottom of the viewport.\n     */\n    bottom: 2,\n    /**\n     * Attempts to scroll the list so the desired item is in the exact center of the viewport.\n     */\n    center: 3,\n};\n//# sourceMappingURL=List.types.js.map","export var getScrollHeight = function (el) {\n    if (el === undefined) {\n        return 0;\n    }\n    var scrollHeight = 0;\n    if ('scrollHeight' in el) {\n        scrollHeight = el.scrollHeight;\n    }\n    else if ('document' in el) {\n        scrollHeight = el.document.documentElement.scrollHeight;\n    }\n    // No need to round as scrollHeight is already rounded for us.\n    // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n    return scrollHeight;\n};\nexport var getScrollYPosition = function (el) {\n    if (el === undefined) {\n        return 0;\n    }\n    var scrollPos = 0;\n    if ('scrollTop' in el) {\n        scrollPos = el.scrollTop;\n    }\n    else if ('scrollY' in el) {\n        scrollPos = el.scrollY;\n    }\n    // Round this value to an integer as it may be fractional.\n    // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTop\n    // See: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY\n    return Math.ceil(scrollPos);\n};\nexport var setScrollYPosition = function (el, pos) {\n    if ('scrollTop' in el) {\n        el.scrollTop = pos;\n    }\n    else if ('scrollY' in el) {\n        el.scrollTo(el.scrollX, pos);\n    }\n};\n//# sourceMappingURL=scroll.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { Async, EventGroup, canUseDOM, css, divProperties, findIndex, findScrollableParent, getNativeProps, getParent, getWindow, initializeComponentRef, } from '../../Utilities';\nimport { ScrollToMode } from './List.types';\nimport { composeRenderFunction } from '../../Utilities';\nimport { getScrollHeight, getScrollYPosition, setScrollYPosition } from './utils/scroll';\nimport { WindowContext } from '@fluentui/react-window-provider';\nimport { getWindowEx } from '../../utilities/dom';\n// import { ListDebugRenderer } from './utils/ListDebugRenderer';\nvar RESIZE_DELAY = 16;\nvar MIN_SCROLL_UPDATE_DELAY = 100;\nvar MAX_SCROLL_UPDATE_DELAY = 500;\nvar IDLE_DEBOUNCE_DELAY = 200;\n// The amount of time to wait before declaring that the list isn't scrolling\nvar DONE_SCROLLING_WAIT = 500;\nvar DEFAULT_ITEMS_PER_PAGE = 10;\nvar DEFAULT_PAGE_HEIGHT = 30;\nvar DEFAULT_RENDERED_WINDOWS_BEHIND = 2;\nvar DEFAULT_RENDERED_WINDOWS_AHEAD = 2;\nvar PAGE_KEY_PREFIX = 'page-';\nvar SPACER_KEY_PREFIX = 'spacer-';\n// Fraction of a page to have been scrolled before re-running expensive calculations\nvar SCROLL_RATIO = 1 / 3;\nvar EMPTY_RECT = {\n    top: -1,\n    bottom: -1,\n    left: -1,\n    right: -1,\n    width: 0,\n    height: 0,\n};\n// Naming expensive measures so that they're named in profiles.\nvar _measurePageRect = function (element) { return element.getBoundingClientRect(); };\nvar _measureSurfaceRect = _measurePageRect;\nvar _measureScrollRect = _measurePageRect;\n/**\n * The List renders virtualized pages of items. Each page's item count is determined by the getItemCountForPage callback\n * if provided by the caller, or 10 as default. Each page's height is determined by the getPageHeight callback if\n * provided by the caller, or by cached measurements if available, or by a running average, or a default fallback.\n *\n * The algorithm for rendering pages works like this:\n *\n * 1. Predict visible pages based on \"current measure data\" (page heights, surface position, visible window)\n * 2. If changes are necessary, apply changes (add/remove pages)\n * 3. For pages that are added, measure the page heights if we need to using getBoundingClientRect\n * 4. If measurements don't match predictions, update measure data and goto step 1 asynchronously\n *\n * Measuring too frequently can pull performance down significantly. To compensate, we cache measured values so that\n * we can avoid re-measuring during operations that should not alter heights, like scrolling.\n *\n * To optimize glass rendering performance, onShouldVirtualize can be set. When onShouldVirtualize return false,\n * List will run in fast mode (not virtualized) to render all items without any measurements to improve page load time.\n * And we start doing measurements and rendering in virtualized mode when items grows larger than this threshold.\n *\n * However, certain operations can make measure data stale. For example, resizing the list, or passing in new props,\n * or forcing an update change cause pages to shrink/grow. When these operations occur, we increment a measureVersion\n * number, which we associate with cached measurements and use to determine if a remeasure should occur.\n */\nvar List = /** @class */ (function (_super) {\n    __extends(List, _super);\n    function List(props) {\n        var _this = _super.call(this, props) || this;\n        _this._root = React.createRef();\n        _this._surface = React.createRef();\n        _this._pageRefs = {};\n        _this._getDerivedStateFromProps = function (nextProps, previousState) {\n            if (nextProps.items !== _this.props.items ||\n                nextProps.renderCount !== _this.props.renderCount ||\n                nextProps.startIndex !== _this.props.startIndex ||\n                nextProps.version !== _this.props.version ||\n                (!previousState.hasMounted && _this.props.renderEarly && canUseDOM())) {\n                // We have received new items so we want to make sure that initially we only render a single window to\n                // fill the currently visible rect, and then later render additional windows.\n                _this._resetRequiredWindows();\n                _this._requiredRect = null;\n                _this._measureVersion++;\n                _this._invalidatePageCache();\n                return _this._updatePages(nextProps, previousState);\n            }\n            return previousState;\n        };\n        _this._onRenderRoot = function (props) {\n            var rootRef = props.rootRef, surfaceElement = props.surfaceElement, divProps = props.divProps;\n            return (React.createElement(\"div\", __assign({ ref: rootRef }, divProps), surfaceElement));\n        };\n        _this._onRenderSurface = function (props) {\n            var surfaceRef = props.surfaceRef, pageElements = props.pageElements, divProps = props.divProps;\n            return (React.createElement(\"div\", __assign({ ref: surfaceRef }, divProps), pageElements));\n        };\n        _this._onRenderPage = function (pageProps, defaultRender) {\n            var _a;\n            var _b = _this.props, onRenderCell = _b.onRenderCell, onRenderCellConditional = _b.onRenderCellConditional, role = _b.role;\n            var _c = pageProps.page, _d = _c.items, items = _d === void 0 ? [] : _d, startIndex = _c.startIndex, divProps = __rest(pageProps, [\"page\"]);\n            // only assign list item role if no role is assigned\n            var cellRole = role === undefined ? 'listitem' : 'presentation';\n            var cells = [];\n            for (var i = 0; i < items.length; i++) {\n                var index = startIndex + i;\n                var item = items[i];\n                var itemKey = _this.props.getKey ? _this.props.getKey(item, index) : item && item.key;\n                if (itemKey === null || itemKey === undefined) {\n                    itemKey = index;\n                }\n                var renderCell = onRenderCellConditional !== null && onRenderCellConditional !== void 0 ? onRenderCellConditional : onRenderCell;\n                var cell = (_a = renderCell === null || renderCell === void 0 ? void 0 : renderCell(item, index, !_this.props.ignoreScrollingState ? _this.state.isScrolling : undefined)) !== null && _a !== void 0 ? _a : null;\n                if (!onRenderCellConditional || cell) {\n                    cells.push(React.createElement(\"div\", { role: cellRole, className: 'ms-List-cell', key: itemKey, \"data-list-index\": index, \"data-automationid\": \"ListCell\" }, cell));\n                }\n            }\n            return React.createElement(\"div\", __assign({}, divProps), cells);\n        };\n        initializeComponentRef(_this);\n        _this.state = {\n            pages: [],\n            isScrolling: false,\n            getDerivedStateFromProps: _this._getDerivedStateFromProps,\n            hasMounted: false,\n        };\n        _this._estimatedPageHeight = 0;\n        _this._totalEstimates = 0;\n        _this._requiredWindowsAhead = 0;\n        _this._requiredWindowsBehind = 0;\n        // Track the measure version for everything.\n        _this._measureVersion = 0;\n        _this._cachedPageHeights = {};\n        _this._estimatedPageHeight = 0;\n        _this._focusedIndex = -1;\n        _this._pageCache = {};\n        return _this;\n    }\n    // private _debugRenderer: ListDebugRenderer;\n    // private _debugRafId: number | undefined = undefined;\n    List.getDerivedStateFromProps = function (nextProps, previousState) {\n        return previousState.getDerivedStateFromProps(nextProps, previousState);\n    };\n    Object.defineProperty(List.prototype, \"pageRefs\", {\n        get: function () {\n            return this._pageRefs;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    /**\n     * Scroll to the given index. By default will bring the page the specified item is on into the view. If a callback\n     * to measure the height of an individual item is specified, will only scroll to bring the specific item into view.\n     *\n     * Note: with items of variable height and no passed in `getPageHeight` method, the list might jump after scrolling\n     * when windows before/ahead are being rendered, and the estimated height is replaced using actual elements.\n     *\n     * @param index - Index of item to scroll to\n     * @param measureItem - Optional callback to measure the height of an individual item\n     * @param scrollToMode - Optional defines where in the window the item should be positioned to when scrolling\n     */\n    List.prototype.scrollToIndex = function (index, measureItem, scrollToMode) {\n        if (scrollToMode === void 0) { scrollToMode = ScrollToMode.auto; }\n        var startIndex = this.props.startIndex;\n        var renderCount = this._getRenderCount();\n        var endIndex = startIndex + renderCount;\n        var allowedRect = this._allowedRect;\n        var scrollTop = 0;\n        var itemsPerPage = 1;\n        for (var itemIndex = startIndex; itemIndex < endIndex; itemIndex += itemsPerPage) {\n            var pageSpecification = this._getPageSpecification(this.props, itemIndex, allowedRect);\n            var pageHeight = pageSpecification.height;\n            itemsPerPage = pageSpecification.itemCount;\n            var requestedIndexIsInPage = itemIndex <= index && itemIndex + itemsPerPage > index;\n            if (requestedIndexIsInPage) {\n                // We have found the page. If the user provided a way to measure an individual item, we will try to scroll in\n                // just the given item, otherwise we'll only bring the page into view\n                if (measureItem && this._scrollElement) {\n                    var scrollRect = _measureScrollRect(this._scrollElement);\n                    var scrollPosition = getScrollYPosition(this._scrollElement);\n                    var scrollWindow = {\n                        top: scrollPosition,\n                        bottom: scrollPosition + scrollRect.height,\n                    };\n                    // Adjust for actual item position within page\n                    var itemPositionWithinPage = index - itemIndex;\n                    for (var itemIndexInPage = 0; itemIndexInPage < itemPositionWithinPage; ++itemIndexInPage) {\n                        scrollTop += measureItem(itemIndex + itemIndexInPage);\n                    }\n                    var scrollBottom = scrollTop + measureItem(index);\n                    // If scrollToMode is set to something other than auto, we always want to\n                    // scroll the item into a specific position on the page.\n                    switch (scrollToMode) {\n                        case ScrollToMode.top:\n                            setScrollYPosition(this._scrollElement, scrollTop);\n                            return;\n                        case ScrollToMode.bottom:\n                            setScrollYPosition(this._scrollElement, scrollBottom - scrollRect.height);\n                            return;\n                        case ScrollToMode.center:\n                            setScrollYPosition(this._scrollElement, (scrollTop + scrollBottom - scrollRect.height) / 2);\n                            return;\n                        case ScrollToMode.auto:\n                        default:\n                            break;\n                    }\n                    var itemIsFullyVisible = scrollTop >= scrollWindow.top && scrollBottom <= scrollWindow.bottom;\n                    if (itemIsFullyVisible) {\n                        // Item is already visible, do nothing.\n                        return;\n                    }\n                    var itemIsPartiallyAbove = scrollTop < scrollWindow.top;\n                    var itemIsPartiallyBelow = scrollBottom > scrollWindow.bottom;\n                    if (itemIsPartiallyAbove) {\n                        //  We will just scroll to 'scrollTop'\n                        //  .------.   - scrollTop\n                        //  |Item  |\n                        //  | .----|-. - scrollWindow.top\n                        //  '------' |\n                        //    |      |\n                        //    '------'\n                    }\n                    else if (itemIsPartiallyBelow) {\n                        //  Adjust scrollTop position to just bring in the element\n                        // .------.  - scrollTop\n                        // |      |\n                        // | .------.\n                        // '-|----' | - scrollWindow.bottom\n                        //   | Item |\n                        //   '------' - scrollBottom\n                        scrollTop = scrollBottom - scrollRect.height;\n                    }\n                }\n                if (this._scrollElement) {\n                    setScrollYPosition(this._scrollElement, scrollTop);\n                }\n                return;\n            }\n            scrollTop += pageHeight;\n        }\n    };\n    List.prototype.getStartItemIndexInView = function (measureItem) {\n        var pages = this.state.pages || [];\n        for (var _i = 0, pages_1 = pages; _i < pages_1.length; _i++) {\n            var page = pages_1[_i];\n            var isPageVisible = !page.isSpacer && (this._scrollTop || 0) >= page.top && (this._scrollTop || 0) <= page.top + page.height;\n            if (isPageVisible) {\n                if (!measureItem) {\n                    var rowHeight = Math.floor(page.height / page.itemCount);\n                    return page.startIndex + Math.floor((this._scrollTop - page.top) / rowHeight);\n                }\n                else {\n                    var totalRowHeight = 0;\n                    for (var itemIndex = page.startIndex; itemIndex < page.startIndex + page.itemCount; itemIndex++) {\n                        var rowHeight = measureItem(itemIndex);\n                        if (page.top + totalRowHeight <= this._scrollTop &&\n                            this._scrollTop < page.top + totalRowHeight + rowHeight) {\n                            return itemIndex;\n                        }\n                        else {\n                            totalRowHeight += rowHeight;\n                        }\n                    }\n                }\n            }\n        }\n        return 0;\n    };\n    List.prototype.componentDidMount = function () {\n        this._async = new Async(this);\n        this._events = new EventGroup(this);\n        // Ensure that scrolls are lazy updated.\n        this._onAsyncScrollDebounced = this._async.debounce(this._onAsyncScroll, MIN_SCROLL_UPDATE_DELAY, {\n            leading: false,\n            maxWait: MAX_SCROLL_UPDATE_DELAY,\n        });\n        this._onAsyncIdleDebounced = this._async.debounce(this._onAsyncIdle, IDLE_DEBOUNCE_DELAY, {\n            leading: false,\n        });\n        this._onAsyncResizeDebounced = this._async.debounce(this._onAsyncResize, RESIZE_DELAY, {\n            leading: false,\n        });\n        this._onScrollingDoneDebounced = this._async.debounce(this._onScrollingDone, DONE_SCROLLING_WAIT, {\n            leading: false,\n        });\n        this._scrollElement = findScrollableParent(this._root.current);\n        this._scrollTop = 0;\n        this.setState(__assign(__assign({}, this._updatePages(this.props, this.state)), { hasMounted: true }));\n        this._measureVersion++;\n        var win = getWindowEx(this.context);\n        this._events.on(win, 'resize', this._onAsyncResizeDebounced);\n        if (this._root.current) {\n            this._events.on(this._root.current, 'focus', this._onFocus, true);\n        }\n        if (this._scrollElement) {\n            this._events.on(this._scrollElement, 'scroll', this._onScroll);\n            this._events.on(this._scrollElement, 'scroll', this._onAsyncScrollDebounced);\n        }\n        // this._debugRenderer = new ListDebugRenderer();\n        // const debugRender = () => {\n        //   this._debugRenderer.render({\n        //     visibleRect: this._visibleRect,\n        //     allowedRect: this._allowedRect,\n        //     requiredRect: this._requiredRect,\n        //     materializedRect: this._materializedRect,\n        //     surfaceRect: this._surfaceRect,\n        //     totalListHeight: this.getTotalListHeight(),\n        //     pages: this.state.pages,\n        //     scrollTop: Math.abs(this._scrollTop - getScrollYPosition(this._scrollElement)),\n        //     estimatedLine: this._estimatedPageHeight * SCROLL_RATIO,\n        //     scrollY: getScrollYPosition(this._scrollElement),\n        //   });\n        //   this._debugRafId = requestAnimationFrame(debugRender);\n        // };\n        // debugRender();\n    };\n    List.prototype.componentDidUpdate = function (previousProps, previousState) {\n        // Multiple updates may have been queued, so the callback will reflect all of them.\n        // Re-fetch the current props and states to avoid using a stale props or state captured in the closure.\n        var finalProps = this.props;\n        var finalState = this.state;\n        if (this.state.pagesVersion !== previousState.pagesVersion) {\n            // If we weren't provided with the page height, measure the pages\n            if (!finalProps.getPageHeight) {\n                // If measured version is invalid since we've updated the DOM\n                var heightsChanged = this._updatePageMeasurements(finalState.pages);\n                // On first render, we should re-measure so that we don't get a visual glitch.\n                if (heightsChanged) {\n                    this._materializedRect = null;\n                    if (!this._hasCompletedFirstRender) {\n                        this._hasCompletedFirstRender = true;\n                        this.setState(this._updatePages(finalProps, finalState));\n                    }\n                    else {\n                        this._onAsyncScrollDebounced();\n                    }\n                }\n                else {\n                    // Enqueue an idle bump.\n                    this._onAsyncIdleDebounced();\n                }\n            }\n            else {\n                // Enqueue an idle bump\n                this._onAsyncIdleDebounced();\n            }\n            // Notify the caller that rendering the new pages has completed\n            if (finalProps.onPagesUpdated) {\n                finalProps.onPagesUpdated(finalState.pages);\n            }\n        }\n    };\n    List.prototype.componentWillUnmount = function () {\n        var _a, _b;\n        (_a = this._async) === null || _a === void 0 ? void 0 : _a.dispose();\n        (_b = this._events) === null || _b === void 0 ? void 0 : _b.dispose();\n        delete this._scrollElement;\n        // this._debugRenderer.dispose();\n        // if (this._debugRafId) {\n        //   cancelAnimationFrame(this._debugRafId);\n        //   this._debugRafId = undefined;\n        // }\n    };\n    List.prototype.shouldComponentUpdate = function (newProps, newState) {\n        var oldPages = this.state.pages;\n        var newPages = newState.pages;\n        var shouldComponentUpdate = false;\n        // Update if the page stops scrolling\n        if (!newState.isScrolling && this.state.isScrolling) {\n            return true;\n        }\n        if (newProps.version !== this.props.version) {\n            return true;\n        }\n        if (newProps.className !== this.props.className) {\n            return true;\n        }\n        if (newProps.items === this.props.items && oldPages.length === newPages.length) {\n            for (var i = 0; i < oldPages.length; i++) {\n                var oldPage = oldPages[i];\n                var newPage = newPages[i];\n                if (oldPage.key !== newPage.key || oldPage.itemCount !== newPage.itemCount) {\n                    shouldComponentUpdate = true;\n                    break;\n                }\n            }\n        }\n        else {\n            shouldComponentUpdate = true;\n        }\n        return shouldComponentUpdate;\n    };\n    List.prototype.forceUpdate = function () {\n        this._invalidatePageCache();\n        // Ensure that when the list is force updated we update the pages first before render.\n        this._updateRenderRects(this.props, this.state, true);\n        this.setState(this._updatePages(this.props, this.state));\n        this._measureVersion++;\n        _super.prototype.forceUpdate.call(this);\n    };\n    /**\n     * Get the current height the list and it's pages.\n     */\n    List.prototype.getTotalListHeight = function () {\n        return this._surfaceRect.height;\n    };\n    List.prototype.render = function () {\n        var _a = this.props, className = _a.className, _b = _a.role, role = _b === void 0 ? 'list' : _b, onRenderSurface = _a.onRenderSurface, onRenderRoot = _a.onRenderRoot;\n        var _c = this.state.pages, pages = _c === void 0 ? [] : _c;\n        var pageElements = [];\n        var divProps = getNativeProps(this.props, divProperties);\n        for (var _i = 0, pages_2 = pages; _i < pages_2.length; _i++) {\n            var page = pages_2[_i];\n            pageElements.push(this._renderPage(page));\n        }\n        var finalOnRenderSurface = onRenderSurface\n            ? composeRenderFunction(onRenderSurface, this._onRenderSurface)\n            : this._onRenderSurface;\n        var finalOnRenderRoot = onRenderRoot\n            ? composeRenderFunction(onRenderRoot, this._onRenderRoot)\n            : this._onRenderRoot;\n        return finalOnRenderRoot({\n            rootRef: this._root,\n            pages: pages,\n            surfaceElement: finalOnRenderSurface({\n                surfaceRef: this._surface,\n                pages: pages,\n                pageElements: pageElements,\n                divProps: {\n                    role: 'presentation',\n                    className: 'ms-List-surface',\n                },\n            }),\n            divProps: __assign(__assign({}, divProps), { className: css('ms-List', className), role: pageElements.length > 0 ? role : undefined, 'aria-label': pageElements.length > 0 ? divProps['aria-label'] : undefined }),\n        });\n    };\n    List.prototype._shouldVirtualize = function (props) {\n        if (props === void 0) { props = this.props; }\n        var onShouldVirtualize = props.onShouldVirtualize;\n        return !onShouldVirtualize || onShouldVirtualize(props);\n    };\n    /**\n     * when props.items change or forceUpdate called, throw away cached pages\n     */\n    List.prototype._invalidatePageCache = function () {\n        this._pageCache = {};\n    };\n    List.prototype._renderPage = function (page) {\n        var _this = this;\n        var usePageCache = this.props.usePageCache;\n        var cachedPage;\n        // if usePageCache is set and cached page element can be found, just return cached page\n        if (usePageCache) {\n            cachedPage = this._pageCache[page.key];\n            if (cachedPage && cachedPage.pageElement) {\n                return cachedPage.pageElement;\n            }\n        }\n        var pageStyle = this._getPageStyle(page);\n        var _a = this.props.onRenderPage, onRenderPage = _a === void 0 ? this._onRenderPage : _a;\n        var pageElement = onRenderPage({\n            page: page,\n            className: 'ms-List-page',\n            key: page.key,\n            ref: function (newRef) {\n                _this._pageRefs[page.key] = newRef;\n            },\n            style: pageStyle,\n            role: 'presentation',\n        }, this._onRenderPage);\n        // cache the first page for now since it is re-rendered a lot times unnecessarily.\n        // todo: a more aggresive caching mechanism is to cache pages constaining the items not changed.\n        // now we re-render pages too frequently, for example, props.items increased from 30 to 60, although the\n        // first 30 items did not change, we still re-rendered all of them in this props.items change.\n        if (usePageCache && page.startIndex === 0) {\n            this._pageCache[page.key] = {\n                page: page,\n                pageElement: pageElement,\n            };\n        }\n        return pageElement;\n    };\n    /** Generate the style object for the page. */\n    List.prototype._getPageStyle = function (page) {\n        var getPageStyle = this.props.getPageStyle;\n        return __assign(__assign({}, (getPageStyle ? getPageStyle(page) : {})), (!page.items\n            ? {\n                height: page.height,\n            }\n            : {}));\n    };\n    /** Track the last item index focused so that we ensure we keep it rendered. */\n    List.prototype._onFocus = function (ev) {\n        var target = ev.target;\n        while (target !== this._surface.current) {\n            var indexString = target.getAttribute('data-list-index');\n            if (indexString) {\n                this._focusedIndex = Number(indexString);\n                break;\n            }\n            target = getParent(target);\n        }\n    };\n    /**\n     * Called synchronously to reset the required render range to 0 on scrolling. After async scroll has executed,\n     * we will call onAsyncIdle which will reset it back to it's correct value.\n     */\n    List.prototype._onScroll = function () {\n        if (!this.state.isScrolling && !this.props.ignoreScrollingState) {\n            this.setState({ isScrolling: true });\n        }\n        this._resetRequiredWindows();\n        this._onScrollingDoneDebounced();\n    };\n    List.prototype._resetRequiredWindows = function () {\n        this._requiredWindowsAhead = 0;\n        this._requiredWindowsBehind = 0;\n    };\n    /**\n     * Debounced method to asynchronously update the visible region on a scroll event.\n     */\n    List.prototype._onAsyncScroll = function () {\n        this._updateRenderRects(this.props, this.state);\n        // Only update pages when the visible rect falls outside of the materialized rect.\n        if (!this._materializedRect || !_isContainedWithin(this._requiredRect, this._materializedRect)) {\n            this.setState(this._updatePages(this.props, this.state));\n        }\n        else {\n            // console.log('requiredRect contained in materialized', this._requiredRect, this._materializedRect);\n        }\n    };\n    /**\n     * This is an async debounced method that will try and increment the windows we render. If we can increment\n     * either, we increase the amount we render and re-evaluate.\n     */\n    List.prototype._onAsyncIdle = function () {\n        var _a = this.props, renderedWindowsAhead = _a.renderedWindowsAhead, renderedWindowsBehind = _a.renderedWindowsBehind;\n        var _b = this, requiredWindowsAhead = _b._requiredWindowsAhead, requiredWindowsBehind = _b._requiredWindowsBehind;\n        var windowsAhead = Math.min(renderedWindowsAhead, requiredWindowsAhead + 1);\n        var windowsBehind = Math.min(renderedWindowsBehind, requiredWindowsBehind + 1);\n        if (windowsAhead !== requiredWindowsAhead || windowsBehind !== requiredWindowsBehind) {\n            // console.log('idling', windowsBehind, windowsAhead);\n            this._requiredWindowsAhead = windowsAhead;\n            this._requiredWindowsBehind = windowsBehind;\n            this._updateRenderRects(this.props, this.state);\n            this.setState(this._updatePages(this.props, this.state));\n        }\n        if (renderedWindowsAhead > windowsAhead || renderedWindowsBehind > windowsBehind) {\n            // Async increment on next tick.\n            this._onAsyncIdleDebounced();\n        }\n    };\n    /**\n     * Function to call when the list is done scrolling.\n     * This function is debounced.\n     */\n    List.prototype._onScrollingDone = function () {\n        if (!this.props.ignoreScrollingState) {\n            this.setState({ isScrolling: false });\n            this._onAsyncIdle();\n        }\n    };\n    List.prototype._onAsyncResize = function () {\n        this.forceUpdate();\n    };\n    List.prototype._updatePages = function (nextProps, previousState) {\n        // console.log('updating pages');\n        if (!this._requiredRect) {\n            this._updateRenderRects(nextProps, previousState);\n        }\n        var newListState = this._buildPages(nextProps, previousState);\n        var oldListPages = previousState.pages;\n        this._notifyPageChanges(oldListPages, newListState.pages, this.props);\n        return __assign(__assign(__assign({}, previousState), newListState), { pagesVersion: {} });\n    };\n    /**\n     * Notify consumers that the rendered pages have changed\n     * @param oldPages - The old pages\n     * @param newPages - The new pages\n     * @param props - The props to use\n     */\n    List.prototype._notifyPageChanges = function (oldPages, newPages, props) {\n        var onPageAdded = props.onPageAdded, onPageRemoved = props.onPageRemoved;\n        if (onPageAdded || onPageRemoved) {\n            var renderedIndexes = {};\n            for (var _i = 0, oldPages_1 = oldPages; _i < oldPages_1.length; _i++) {\n                var page = oldPages_1[_i];\n                if (page.items) {\n                    renderedIndexes[page.startIndex] = page;\n                }\n            }\n            for (var _a = 0, newPages_1 = newPages; _a < newPages_1.length; _a++) {\n                var page = newPages_1[_a];\n                if (page.items) {\n                    if (!renderedIndexes[page.startIndex]) {\n                        this._onPageAdded(page);\n                    }\n                    else {\n                        delete renderedIndexes[page.startIndex];\n                    }\n                }\n            }\n            for (var index in renderedIndexes) {\n                if (renderedIndexes.hasOwnProperty(index)) {\n                    this._onPageRemoved(renderedIndexes[index]);\n                }\n            }\n        }\n    };\n    List.prototype._updatePageMeasurements = function (pages) {\n        var heightChanged = false;\n        // when not in virtualize mode, we render all the items without page measurement\n        if (!this._shouldVirtualize()) {\n            return heightChanged;\n        }\n        for (var i = 0; i < pages.length; i++) {\n            var page = pages[i];\n            if (page.items) {\n                heightChanged = this._measurePage(page) || heightChanged;\n            }\n        }\n        return heightChanged;\n    };\n    /**\n     * Given a page, measure its dimensions, update cache.\n     * @returns True if the height has changed.\n     */\n    List.prototype._measurePage = function (page) {\n        var hasChangedHeight = false;\n        var pageElement = this._pageRefs[page.key];\n        var cachedHeight = this._cachedPageHeights[page.startIndex];\n        // console.log('   * measure attempt', page.startIndex, cachedHeight);\n        if (pageElement &&\n            this._shouldVirtualize() &&\n            (!cachedHeight || cachedHeight.measureVersion !== this._measureVersion)) {\n            var newClientRect = {\n                width: pageElement.clientWidth,\n                height: pageElement.clientHeight,\n            };\n            if (newClientRect.height || newClientRect.width) {\n                hasChangedHeight = page.height !== newClientRect.height;\n                // console.warn(' *** expensive page measure', page.startIndex, page.height, newClientRect.height);\n                page.height = newClientRect.height;\n                this._cachedPageHeights[page.startIndex] = {\n                    height: newClientRect.height,\n                    measureVersion: this._measureVersion,\n                };\n                this._estimatedPageHeight = Math.round((this._estimatedPageHeight * this._totalEstimates + newClientRect.height) / (this._totalEstimates + 1));\n                this._totalEstimates++;\n            }\n        }\n        return hasChangedHeight;\n    };\n    /** Called when a page has been added to the DOM. */\n    List.prototype._onPageAdded = function (page) {\n        var onPageAdded = this.props.onPageAdded;\n        // console.log('page added', page.startIndex, this.state.pages.map(page => page.key).join(', '));\n        if (onPageAdded) {\n            onPageAdded(page);\n        }\n    };\n    /** Called when a page has been removed from the DOM. */\n    List.prototype._onPageRemoved = function (page) {\n        var onPageRemoved = this.props.onPageRemoved;\n        // console.log('  --- page removed', page.startIndex, this.state.pages.map(page => page.key).join(', '));\n        if (onPageRemoved) {\n            onPageRemoved(page);\n        }\n    };\n    /** Build up the pages that should be rendered. */\n    List.prototype._buildPages = function (props, state) {\n        var renderCount = props.renderCount;\n        var items = props.items, startIndex = props.startIndex, getPageHeight = props.getPageHeight;\n        renderCount = this._getRenderCount(props);\n        var materializedRect = __assign({}, EMPTY_RECT);\n        var pages = [];\n        var itemsPerPage = 1;\n        var pageTop = 0;\n        var currentSpacer = null;\n        var focusedIndex = this._focusedIndex;\n        var endIndex = startIndex + renderCount;\n        var shouldVirtualize = this._shouldVirtualize(props);\n        // First render is very important to track; when we render cells, we have no idea of estimated page height.\n        // So we should default to rendering only the first page so that we can get information.\n        // However if the user provides a measure function, let's just assume they know the right heights.\n        var isFirstRender = this._estimatedPageHeight === 0 && !getPageHeight;\n        var allowedRect = this._allowedRect;\n        var _loop_1 = function (itemIndex) {\n            var pageSpecification = this_1._getPageSpecification(props, itemIndex, allowedRect);\n            var pageHeight = pageSpecification.height;\n            var pageData = pageSpecification.data;\n            var key = pageSpecification.key;\n            itemsPerPage = pageSpecification.itemCount;\n            var pageBottom = pageTop + pageHeight - 1;\n            var isPageRendered = findIndex(state.pages, function (page) { return !!page.items && page.startIndex === itemIndex; }) > -1;\n            var isPageInAllowedRange = !allowedRect || (pageBottom >= allowedRect.top && pageTop <= allowedRect.bottom);\n            var isPageInRequiredRange = !this_1._requiredRect || (pageBottom >= this_1._requiredRect.top && pageTop <= this_1._requiredRect.bottom);\n            var isPageVisible = (!isFirstRender && (isPageInRequiredRange || (isPageInAllowedRange && isPageRendered))) || !shouldVirtualize;\n            var isPageFocused = focusedIndex >= itemIndex && focusedIndex < itemIndex + itemsPerPage;\n            var isFirstPage = itemIndex === startIndex;\n            // Only render whats visible, focused, or first page,\n            // or when running in fast rendering mode (not in virtualized mode), we render all current items in pages\n            if (isPageVisible || isPageFocused || isFirstPage) {\n                if (currentSpacer) {\n                    pages.push(currentSpacer);\n                    currentSpacer = null;\n                }\n                var itemsInPage = Math.min(itemsPerPage, endIndex - itemIndex);\n                var newPage = this_1._createPage(key, items.slice(itemIndex, itemIndex + itemsInPage), itemIndex, undefined, undefined, pageData);\n                newPage.top = pageTop;\n                newPage.height = pageHeight;\n                if (this_1._visibleRect && this_1._visibleRect.bottom) {\n                    newPage.isVisible = pageBottom >= this_1._visibleRect.top && pageTop <= this_1._visibleRect.bottom;\n                }\n                pages.push(newPage);\n                if (isPageInRequiredRange && this_1._allowedRect) {\n                    _mergeRect(materializedRect, {\n                        top: pageTop,\n                        bottom: pageBottom,\n                        height: pageHeight,\n                        left: allowedRect.left,\n                        right: allowedRect.right,\n                        width: allowedRect.width,\n                    });\n                }\n            }\n            else {\n                if (!currentSpacer) {\n                    currentSpacer = this_1._createPage(SPACER_KEY_PREFIX + itemIndex, undefined, itemIndex, 0, undefined, pageData, true /*isSpacer*/);\n                }\n                currentSpacer.height = (currentSpacer.height || 0) + (pageBottom - pageTop) + 1;\n                currentSpacer.itemCount += itemsPerPage;\n            }\n            pageTop += pageBottom - pageTop + 1;\n            // in virtualized mode, we render need to render first page then break and measure,\n            // otherwise, we render all items without measurement to make rendering fast\n            if (isFirstRender && shouldVirtualize) {\n                return \"break\";\n            }\n        };\n        var this_1 = this;\n        for (var itemIndex = startIndex; itemIndex < endIndex; itemIndex += itemsPerPage) {\n            var state_1 = _loop_1(itemIndex);\n            if (state_1 === \"break\")\n                break;\n        }\n        if (currentSpacer) {\n            currentSpacer.key = SPACER_KEY_PREFIX + 'end';\n            pages.push(currentSpacer);\n        }\n        this._materializedRect = materializedRect;\n        // console.log('materialized: ', materializedRect);\n        return __assign(__assign({}, state), { pages: pages, measureVersion: this._measureVersion });\n    };\n    List.prototype._getPageSpecification = function (props, itemIndex, visibleRect) {\n        var getPageSpecification = props.getPageSpecification;\n        if (getPageSpecification) {\n            var pageData = getPageSpecification(itemIndex, visibleRect, props.items);\n            var _a = pageData.itemCount, itemCount = _a === void 0 ? this._getItemCountForPage(itemIndex, visibleRect) : _a;\n            var _b = pageData.height, height = _b === void 0 ? this._getPageHeight(itemIndex, visibleRect, itemCount) : _b;\n            return {\n                itemCount: itemCount,\n                height: height,\n                data: pageData.data,\n                key: pageData.key,\n            };\n        }\n        else {\n            var itemCount = this._getItemCountForPage(itemIndex, visibleRect);\n            return {\n                itemCount: itemCount,\n                height: this._getPageHeight(itemIndex, visibleRect, itemCount),\n            };\n        }\n    };\n    /**\n     * Get the pixel height of a give page. Will use the props getPageHeight first, and if not provided, fallback to\n     * cached height, or estimated page height, or default page height.\n     */\n    List.prototype._getPageHeight = function (itemIndex, visibleRect, itemsPerPage) {\n        if (this.props.getPageHeight) {\n            return this.props.getPageHeight(itemIndex, visibleRect, itemsPerPage, this.props.items);\n        }\n        else {\n            var cachedHeight = this._cachedPageHeights[itemIndex];\n            return cachedHeight ? cachedHeight.height : this._estimatedPageHeight || DEFAULT_PAGE_HEIGHT;\n        }\n    };\n    List.prototype._getItemCountForPage = function (itemIndex, visibileRect) {\n        var itemsPerPage = this.props.getItemCountForPage\n            ? this.props.getItemCountForPage(itemIndex, visibileRect)\n            : DEFAULT_ITEMS_PER_PAGE;\n        return itemsPerPage ? itemsPerPage : DEFAULT_ITEMS_PER_PAGE;\n    };\n    List.prototype._createPage = function (pageKey, items, startIndex, count, style, data, isSpacer) {\n        if (startIndex === void 0) { startIndex = -1; }\n        if (count === void 0) { count = items ? items.length : 0; }\n        if (style === void 0) { style = {}; }\n        pageKey = pageKey || PAGE_KEY_PREFIX + startIndex;\n        var cachedPage = this._pageCache[pageKey];\n        if (cachedPage && cachedPage.page) {\n            return cachedPage.page;\n        }\n        return {\n            key: pageKey,\n            startIndex: startIndex,\n            itemCount: count,\n            items: items,\n            style: style,\n            top: 0,\n            height: 0,\n            data: data,\n            isSpacer: isSpacer || false,\n        };\n    };\n    List.prototype._getRenderCount = function (props) {\n        var _a = props || this.props, items = _a.items, startIndex = _a.startIndex, renderCount = _a.renderCount;\n        return renderCount === undefined ? (items ? items.length - startIndex : 0) : renderCount;\n    };\n    /** Calculate the visible rect within the list where top: 0 and left: 0 is the top/left of the list. */\n    List.prototype._updateRenderRects = function (props, state, forceUpdate) {\n        var renderedWindowsAhead = props.renderedWindowsAhead, renderedWindowsBehind = props.renderedWindowsBehind;\n        var pages = state.pages;\n        // when not in virtualize mode, we render all items without measurement to optimize page rendering perf\n        if (!this._shouldVirtualize(props)) {\n            return;\n        }\n        var surfaceRect = this._surfaceRect || __assign({}, EMPTY_RECT);\n        var scrollHeight = getScrollHeight(this._scrollElement);\n        var scrollTop = getScrollYPosition(this._scrollElement);\n        // WARNING: EXPENSIVE CALL! We need to know the surface top relative to the window.\n        // This needs to be called to recalculate when new pages should be loaded.\n        // We check to see how far we've scrolled and if it's further than a third of a page we run it again.\n        if (this._surface.current &&\n            (forceUpdate ||\n                !pages ||\n                !this._surfaceRect ||\n                !scrollHeight ||\n                scrollHeight !== this._scrollHeight ||\n                Math.abs(this._scrollTop - scrollTop) > this._estimatedPageHeight * SCROLL_RATIO)) {\n            surfaceRect = this._surfaceRect = _measureSurfaceRect(this._surface.current);\n            this._scrollTop = scrollTop;\n        }\n        // If the scroll height has changed, something in the container likely resized and\n        // we should redo the page heights incase their content resized.\n        if (forceUpdate || !scrollHeight || scrollHeight !== this._scrollHeight) {\n            this._measureVersion++;\n        }\n        this._scrollHeight = scrollHeight || 0;\n        // If the surface is above the container top or below the container bottom, or if this is not the first\n        // render return empty rect.\n        // The first time the list gets rendered we need to calculate the rectangle. The width of the list is\n        // used to calculate the width of the list items.\n        var visibleTop = Math.max(0, -surfaceRect.top);\n        var win = getWindow(this._root.current);\n        var visibleRect = {\n            top: visibleTop,\n            left: surfaceRect.left,\n            bottom: visibleTop + win.innerHeight,\n            right: surfaceRect.right,\n            width: surfaceRect.width,\n            height: win.innerHeight,\n        };\n        // The required/allowed rects are adjusted versions of the visible rect.\n        this._requiredRect = _expandRect(visibleRect, this._requiredWindowsBehind, this._requiredWindowsAhead);\n        this._allowedRect = _expandRect(visibleRect, renderedWindowsBehind, renderedWindowsAhead);\n        // store the visible rect for later use.\n        this._visibleRect = visibleRect;\n    };\n    List.defaultProps = {\n        startIndex: 0,\n        onRenderCell: function (item, index, containsFocus) { return React.createElement(React.Fragment, null, (item && item.name) || ''); },\n        onRenderCellConditional: undefined,\n        renderedWindowsAhead: DEFAULT_RENDERED_WINDOWS_AHEAD,\n        renderedWindowsBehind: DEFAULT_RENDERED_WINDOWS_BEHIND,\n    };\n    List.contextType = WindowContext;\n    return List;\n}(React.Component));\nexport { List };\nfunction _expandRect(rect, pagesBefore, pagesAfter) {\n    var top = rect.top - pagesBefore * rect.height;\n    var height = rect.height + (pagesBefore + pagesAfter) * rect.height;\n    return {\n        top: top,\n        bottom: top + height,\n        height: height,\n        left: rect.left,\n        right: rect.right,\n        width: rect.width,\n    };\n}\nfunction _isContainedWithin(innerRect, outerRect) {\n    return (innerRect.top >= outerRect.top &&\n        innerRect.left >= outerRect.left &&\n        innerRect.bottom <= outerRect.bottom &&\n        innerRect.right <= outerRect.right);\n}\nfunction _mergeRect(targetRect, newRect) {\n    targetRect.top = newRect.top < targetRect.top || targetRect.top === -1 ? newRect.top : targetRect.top;\n    targetRect.left = newRect.left < targetRect.left || targetRect.left === -1 ? newRect.left : targetRect.left;\n    targetRect.bottom =\n        newRect.bottom > targetRect.bottom || targetRect.bottom === -1 ? newRect.bottom : targetRect.bottom;\n    targetRect.right = newRect.right > targetRect.right || targetRect.right === -1 ? newRect.right : targetRect.right;\n    targetRect.width = targetRect.right - targetRect.left + 1;\n    targetRect.height = targetRect.bottom - targetRect.top + 1;\n    return targetRect;\n}\n//# sourceMappingURL=List.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { initializeComponentRef, css, getId, EventGroup } from '../../Utilities';\nimport { SELECTION_CHANGE } from '../../Selection';\nimport { GroupHeader } from './GroupHeader';\nimport { GroupShowAll } from './GroupShowAll';\nimport { GroupFooter } from './GroupFooter';\nimport { List } from '../../List';\nvar DEFAULT_DROPPING_CSS_CLASS = 'is-dropping';\nvar GroupedListSection = /** @class */ (function (_super) {\n    __extends(GroupedListSection, _super);\n    function GroupedListSection(props) {\n        var _this = _super.call(this, props) || this;\n        _this._root = React.createRef();\n        _this._list = React.createRef();\n        _this._subGroupRefs = {};\n        _this._droppingClassName = '';\n        _this._onRenderGroupHeader = function (props) {\n            return React.createElement(GroupHeader, __assign({}, props));\n        };\n        _this._onRenderGroupShowAll = function (props) {\n            return React.createElement(GroupShowAll, __assign({}, props));\n        };\n        _this._onRenderGroupFooter = function (props) {\n            return React.createElement(GroupFooter, __assign({}, props));\n        };\n        _this._renderSubGroup = function (subGroup, subGroupIndex) {\n            var _a = _this.props, dragDropEvents = _a.dragDropEvents, dragDropHelper = _a.dragDropHelper, eventsToRegister = _a.eventsToRegister, getGroupItemLimit = _a.getGroupItemLimit, groupNestingDepth = _a.groupNestingDepth, groupProps = _a.groupProps, items = _a.items, headerProps = _a.headerProps, showAllProps = _a.showAllProps, footerProps = _a.footerProps, listProps = _a.listProps, onRenderCell = _a.onRenderCell, selection = _a.selection, selectionMode = _a.selectionMode, viewport = _a.viewport, onRenderGroupHeader = _a.onRenderGroupHeader, onRenderGroupShowAll = _a.onRenderGroupShowAll, onRenderGroupFooter = _a.onRenderGroupFooter, onShouldVirtualize = _a.onShouldVirtualize, group = _a.group, compact = _a.compact;\n            var nestingDepth = subGroup.level ? subGroup.level + 1 : groupNestingDepth;\n            return !subGroup || subGroup.count > 0 || (groupProps && groupProps.showEmptyGroups) ? (React.createElement(GroupedListSection, { ref: function (ref) { return (_this._subGroupRefs['subGroup_' + subGroupIndex] = ref); }, key: _this._getGroupKey(subGroup, subGroupIndex), dragDropEvents: dragDropEvents, dragDropHelper: dragDropHelper, eventsToRegister: eventsToRegister, footerProps: footerProps, getGroupItemLimit: getGroupItemLimit, group: subGroup, groupIndex: subGroupIndex, groupNestingDepth: nestingDepth, groupProps: groupProps, headerProps: headerProps, items: items, listProps: listProps, onRenderCell: onRenderCell, selection: selection, selectionMode: selectionMode, showAllProps: showAllProps, viewport: viewport, onRenderGroupHeader: onRenderGroupHeader, onRenderGroupShowAll: onRenderGroupShowAll, onRenderGroupFooter: onRenderGroupFooter, onShouldVirtualize: onShouldVirtualize, groups: group ? group.children : [], compact: compact })) : null;\n        };\n        /**\n         * collect all the data we need to enable drag/drop for a group\n         */\n        _this._getGroupDragDropOptions = function () {\n            var _a = _this.props, group = _a.group, groupIndex = _a.groupIndex, dragDropEvents = _a.dragDropEvents, eventsToRegister = _a.eventsToRegister;\n            var options = {\n                eventMap: eventsToRegister,\n                selectionIndex: -1,\n                context: { data: group, index: groupIndex, isGroup: true },\n                updateDropState: _this._updateDroppingState,\n                canDrag: dragDropEvents.canDrag,\n                canDrop: dragDropEvents.canDrop,\n                onDrop: dragDropEvents.onDrop,\n                onDragStart: dragDropEvents.onDragStart,\n                onDragEnter: dragDropEvents.onDragEnter,\n                onDragLeave: dragDropEvents.onDragLeave,\n                onDragEnd: dragDropEvents.onDragEnd,\n                onDragOver: dragDropEvents.onDragOver,\n            };\n            return options;\n        };\n        /**\n         * update groupIsDropping state based on the input value, which is used to change style during drag and drop\n         *\n         * @param newValue - new isDropping state value\n         * @param event - the event trigger dropping state change which can be dragenter, dragleave etc\n         */\n        _this._updateDroppingState = function (newIsDropping, event) {\n            var isDropping = _this.state.isDropping;\n            var _a = _this.props, dragDropEvents = _a.dragDropEvents, group = _a.group;\n            if (isDropping !== newIsDropping) {\n                if (isDropping) {\n                    if (dragDropEvents && dragDropEvents.onDragLeave) {\n                        dragDropEvents.onDragLeave(group, event);\n                    }\n                }\n                else {\n                    if (dragDropEvents && dragDropEvents.onDragEnter) {\n                        _this._droppingClassName = dragDropEvents.onDragEnter(group, event);\n                    }\n                }\n                _this.setState({ isDropping: newIsDropping });\n            }\n        };\n        var selection = props.selection, group = props.group;\n        initializeComponentRef(_this);\n        _this._id = getId('GroupedListSection');\n        _this.state = {\n            isDropping: false,\n            isSelected: selection && group ? selection.isRangeSelected(group.startIndex, group.count) : false,\n        };\n        _this._events = new EventGroup(_this);\n        return _this;\n    }\n    GroupedListSection.prototype.componentDidMount = function () {\n        var _a = this.props, dragDropHelper = _a.dragDropHelper, selection = _a.selection;\n        if (dragDropHelper && this._root.current) {\n            this._dragDropSubscription = dragDropHelper.subscribe(this._root.current, this._events, this._getGroupDragDropOptions());\n        }\n        if (selection) {\n            this._events.on(selection, SELECTION_CHANGE, this._onSelectionChange);\n        }\n    };\n    GroupedListSection.prototype.componentWillUnmount = function () {\n        this._events.dispose();\n        if (this._dragDropSubscription) {\n            this._dragDropSubscription.dispose();\n        }\n    };\n    GroupedListSection.prototype.componentDidUpdate = function (previousProps) {\n        if (this.props.group !== previousProps.group ||\n            this.props.groupIndex !== previousProps.groupIndex ||\n            this.props.dragDropHelper !== previousProps.dragDropHelper) {\n            if (this._dragDropSubscription) {\n                this._dragDropSubscription.dispose();\n                delete this._dragDropSubscription;\n            }\n            if (this.props.dragDropHelper && this._root.current) {\n                this._dragDropSubscription = this.props.dragDropHelper.subscribe(this._root.current, this._events, this._getGroupDragDropOptions());\n            }\n        }\n    };\n    GroupedListSection.prototype.render = function () {\n        var _a = this.props, getGroupItemLimit = _a.getGroupItemLimit, group = _a.group, groupIndex = _a.groupIndex, headerProps = _a.headerProps, showAllProps = _a.showAllProps, footerProps = _a.footerProps, viewport = _a.viewport, selectionMode = _a.selectionMode, _b = _a.onRenderGroupHeader, onRenderGroupHeader = _b === void 0 ? this._onRenderGroupHeader : _b, _c = _a.onRenderGroupShowAll, onRenderGroupShowAll = _c === void 0 ? this._onRenderGroupShowAll : _c, _d = _a.onRenderGroupFooter, onRenderGroupFooter = _d === void 0 ? this._onRenderGroupFooter : _d, onShouldVirtualize = _a.onShouldVirtualize, groupedListClassNames = _a.groupedListClassNames, groups = _a.groups, compact = _a.compact, _e = _a.listProps, listProps = _e === void 0 ? {} : _e;\n        var isSelected = this.state.isSelected;\n        var renderCount = group && getGroupItemLimit ? getGroupItemLimit(group) : Infinity;\n        var isShowAllVisible = group &&\n            !group.children &&\n            !group.isCollapsed &&\n            !group.isShowingAll &&\n            (group.count > renderCount || group.hasMoreData);\n        var hasNestedGroups = group && group.children && group.children.length > 0;\n        var version = listProps.version;\n        var dividerProps = {\n            group: group,\n            groupIndex: groupIndex,\n            groupLevel: group ? group.level : 0,\n            isSelected: isSelected,\n            selected: isSelected,\n            viewport: viewport,\n            selectionMode: selectionMode,\n            groups: groups,\n            compact: compact,\n        };\n        var ariaControlsProps = {\n            groupedListId: this._id,\n            ariaLevel: (group === null || group === void 0 ? void 0 : group.level) ? group.level + 1 : 1,\n            ariaSetSize: groups ? groups.length : undefined,\n            ariaPosInSet: groupIndex !== undefined ? groupIndex + 1 : undefined,\n        };\n        var groupHeaderProps = __assign(__assign(__assign({}, headerProps), dividerProps), ariaControlsProps);\n        var groupShowAllProps = __assign(__assign({}, showAllProps), dividerProps);\n        var groupFooterProps = __assign(__assign({}, footerProps), dividerProps);\n        var isDraggable = !!this.props.dragDropHelper &&\n            this._getGroupDragDropOptions().canDrag(group) &&\n            !!this.props.dragDropEvents.canDragGroups;\n        return (React.createElement(\"div\", __assign({ ref: this._root }, (isDraggable && { draggable: true }), { className: css(groupedListClassNames && groupedListClassNames.group, this._getDroppingClassName()), role: \"presentation\" }),\n            onRenderGroupHeader(groupHeaderProps, this._onRenderGroupHeader),\n            group && group.isCollapsed ? null : hasNestedGroups ? (React.createElement(List, { role: \"presentation\", ref: this._list, items: group ? group.children : [], onRenderCell: this._renderSubGroup, getItemCountForPage: this._returnOne, onShouldVirtualize: onShouldVirtualize, version: version, id: this._id })) : (this._onRenderGroup(renderCount)),\n            group && group.isCollapsed\n                ? null\n                : isShowAllVisible && onRenderGroupShowAll(groupShowAllProps, this._onRenderGroupShowAll),\n            onRenderGroupFooter(groupFooterProps, this._onRenderGroupFooter)));\n    };\n    GroupedListSection.prototype.forceUpdate = function () {\n        _super.prototype.forceUpdate.call(this);\n        this.forceListUpdate();\n    };\n    GroupedListSection.prototype.forceListUpdate = function () {\n        var group = this.props.group;\n        if (this._list.current) {\n            this._list.current.forceUpdate();\n            if (group && group.children && group.children.length > 0) {\n                var subGroupCount = group.children.length;\n                for (var i = 0; i < subGroupCount; i++) {\n                    var subGroup = this._list.current.pageRefs['subGroup_' + String(i)];\n                    if (subGroup) {\n                        subGroup.forceListUpdate();\n                    }\n                }\n            }\n        }\n        else {\n            var subGroup = this._subGroupRefs['subGroup_' + String(0)];\n            if (subGroup) {\n                subGroup.forceListUpdate();\n            }\n        }\n    };\n    GroupedListSection.prototype._onSelectionChange = function () {\n        var _a = this.props, group = _a.group, selection = _a.selection;\n        if (selection && group) {\n            var isSelected = selection.isRangeSelected(group.startIndex, group.count);\n            if (isSelected !== this.state.isSelected) {\n                this.setState({ isSelected: isSelected });\n            }\n        }\n    };\n    GroupedListSection.prototype._onRenderGroupCell = function (onRenderCell, groupNestingDepth, group) {\n        return function (item, itemIndex) {\n            return onRenderCell(groupNestingDepth, item, itemIndex, group);\n        };\n    };\n    GroupedListSection.prototype._onRenderGroup = function (renderCount) {\n        var _a = this.props, group = _a.group, items = _a.items, onRenderCell = _a.onRenderCell, listProps = _a.listProps, groupNestingDepth = _a.groupNestingDepth, onShouldVirtualize = _a.onShouldVirtualize, groupProps = _a.groupProps;\n        var count = group && !group.isShowingAll ? group.count : items.length;\n        var startIndex = group ? group.startIndex : 0;\n        return (React.createElement(List, __assign({ role: groupProps && groupProps.role ? groupProps.role : 'rowgroup', \"aria-label\": group === null || group === void 0 ? void 0 : group.name, items: items, onRenderCell: this._onRenderGroupCell(onRenderCell, groupNestingDepth, group), ref: this._list, renderCount: Math.min(count, renderCount), startIndex: startIndex, onShouldVirtualize: onShouldVirtualize, id: this._id }, listProps)));\n    };\n    GroupedListSection.prototype._returnOne = function () {\n        return 1;\n    };\n    GroupedListSection.prototype._getGroupKey = function (group, index) {\n        return 'group-' + (group && group.key ? group.key : String(group.level) + String(index));\n    };\n    /**\n     * get the correct css class to reflect the dropping state for a given group\n     *\n     * If the group is the current drop target, return the default dropping class name\n     * Otherwise, return '';\n     *\n     */\n    GroupedListSection.prototype._getDroppingClassName = function () {\n        var isDropping = this.state.isDropping;\n        var _a = this.props, group = _a.group, groupedListClassNames = _a.groupedListClassNames;\n        isDropping = !!(group && isDropping);\n        return css(isDropping && this._droppingClassName, isDropping && DEFAULT_DROPPING_CSS_CLASS, isDropping && groupedListClassNames && groupedListClassNames.groupIsDropping);\n    };\n    return GroupedListSection;\n}(React.Component));\nexport { GroupedListSection };\n//# sourceMappingURL=GroupedListSection.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { initializeComponentRef, classNamesFunction, FocusRects, KeyCodes, getRTLSafeKeyCode, css, } from '../../Utilities';\nimport { GroupedListSection } from './GroupedListSection';\nimport { List } from '../../List';\nimport { SelectionMode } from '../../Selection';\nimport { DEFAULT_ROW_HEIGHTS } from '../DetailsList/DetailsRow.styles';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nvar getClassNames = classNamesFunction();\nvar ROW_HEIGHT = DEFAULT_ROW_HEIGHTS.rowHeight, COMPACT_ROW_HEIGHT = DEFAULT_ROW_HEIGHTS.compactRowHeight;\nvar GroupedListBase = /** @class */ (function (_super) {\n    __extends(GroupedListBase, _super);\n    function GroupedListBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._list = React.createRef();\n        _this._renderGroup = function (group, groupIndex) {\n            var _a = _this.props, dragDropEvents = _a.dragDropEvents, dragDropHelper = _a.dragDropHelper, eventsToRegister = _a.eventsToRegister, groupProps = _a.groupProps, items = _a.items, listProps = _a.listProps, onRenderCell = _a.onRenderCell, selectionMode = _a.selectionMode, selection = _a.selection, viewport = _a.viewport, onShouldVirtualize = _a.onShouldVirtualize, groups = _a.groups, compact = _a.compact;\n            // override group header/footer props as needed\n            var dividerProps = {\n                onToggleSelectGroup: _this._onToggleSelectGroup,\n                onToggleCollapse: _this._onToggleCollapse,\n                onToggleSummarize: _this._onToggleSummarize,\n            };\n            var headerProps = __assign(__assign({}, groupProps.headerProps), dividerProps);\n            var showAllProps = __assign(__assign({}, groupProps.showAllProps), dividerProps);\n            var footerProps = __assign(__assign({}, groupProps.footerProps), dividerProps);\n            var groupNestingDepth = _this._getGroupNestingDepth();\n            if (!groupProps.showEmptyGroups && group && group.count === 0) {\n                return null;\n            }\n            var finalListProps = __assign(__assign({}, (listProps || {})), { version: _this.state.version });\n            return (React.createElement(GroupedListSection, { key: _this._getGroupKey(group, groupIndex), dragDropEvents: dragDropEvents, dragDropHelper: dragDropHelper, eventsToRegister: eventsToRegister, footerProps: footerProps, getGroupItemLimit: groupProps && groupProps.getGroupItemLimit, group: group, groupIndex: groupIndex, groupNestingDepth: groupNestingDepth, groupProps: groupProps, headerProps: headerProps, listProps: finalListProps, items: items, onRenderCell: onRenderCell, onRenderGroupHeader: groupProps.onRenderHeader, onRenderGroupShowAll: groupProps.onRenderShowAll, onRenderGroupFooter: groupProps.onRenderFooter, selectionMode: selectionMode, selection: selection, showAllProps: showAllProps, viewport: viewport, onShouldVirtualize: onShouldVirtualize, groupedListClassNames: _this._classNames, groups: groups, compact: compact }));\n        };\n        _this._getDefaultGroupItemLimit = function (group) {\n            return group.children && group.children.length > 0 ? group.children.length : group.count;\n        };\n        _this._getGroupItemLimit = function (group) {\n            var groupProps = _this.props.groupProps;\n            var getGroupItemLimit = groupProps && groupProps.getGroupItemLimit ? groupProps.getGroupItemLimit : _this._getDefaultGroupItemLimit;\n            return getGroupItemLimit(group);\n        };\n        _this._getGroupHeight = function (group) {\n            var rowHeight = _this.props.compact ? COMPACT_ROW_HEIGHT : ROW_HEIGHT;\n            return rowHeight + (group.isCollapsed ? 0 : rowHeight * _this._getGroupItemLimit(group));\n        };\n        _this._getPageHeight = function (itemIndex) {\n            var groups = _this.state.groups;\n            var _a = _this.props.getGroupHeight, getGroupHeight = _a === void 0 ? _this._getGroupHeight : _a;\n            var pageGroup = groups && groups[itemIndex];\n            if (pageGroup) {\n                return getGroupHeight(pageGroup, itemIndex);\n            }\n            else {\n                return 0;\n            }\n        };\n        _this._onToggleCollapse = function (group) {\n            var groupProps = _this.props.groupProps;\n            var onToggleCollapse = groupProps && groupProps.headerProps && groupProps.headerProps.onToggleCollapse;\n            if (group) {\n                if (onToggleCollapse) {\n                    onToggleCollapse(group);\n                }\n                group.isCollapsed = !group.isCollapsed;\n                _this._updateIsSomeGroupExpanded();\n                _this.forceUpdate();\n            }\n        };\n        _this._onToggleSelectGroup = function (group) {\n            var _a = _this.props, selection = _a.selection, selectionMode = _a.selectionMode;\n            if (group && selection && selectionMode === SelectionMode.multiple) {\n                selection.toggleRangeSelected(group.startIndex, group.count);\n            }\n        };\n        _this._isInnerZoneKeystroke = function (ev) {\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            return ev.which === getRTLSafeKeyCode(KeyCodes.right);\n        };\n        _this._onToggleSummarize = function (group) {\n            var groupProps = _this.props.groupProps;\n            var onToggleSummarize = groupProps && groupProps.showAllProps && groupProps.showAllProps.onToggleSummarize;\n            if (onToggleSummarize) {\n                onToggleSummarize(group);\n            }\n            else {\n                if (group) {\n                    group.isShowingAll = !group.isShowingAll;\n                }\n                _this.forceUpdate();\n            }\n        };\n        _this._getPageSpecification = function (itemIndex) {\n            var groups = _this.state.groups;\n            var pageGroup = groups && groups[itemIndex];\n            return {\n                key: pageGroup && pageGroup.key,\n            };\n        };\n        initializeComponentRef(_this);\n        _this._isSomeGroupExpanded = _this._computeIsSomeGroupExpanded(props.groups);\n        var _a = props.listProps, _b = _a === void 0 ? {} : _a, _c = _b.version, version = _c === void 0 ? {} : _c;\n        _this.state = {\n            groups: props.groups,\n            items: props.items,\n            listProps: props.listProps,\n            version: version,\n        };\n        return _this;\n    }\n    GroupedListBase.getDerivedStateFromProps = function (nextProps, previousState) {\n        var groups = nextProps.groups, selectionMode = nextProps.selectionMode, compact = nextProps.compact, items = nextProps.items, listProps = nextProps.listProps;\n        var listVersion = listProps && listProps.version;\n        var nextState = __assign(__assign({}, previousState), { selectionMode: selectionMode, compact: compact, groups: groups, listProps: listProps, items: items });\n        var shouldForceUpdates = false;\n        var previousListVersion = previousState.listProps && previousState.listProps.version;\n        if (listVersion !== previousListVersion ||\n            items !== previousState.items ||\n            groups !== previousState.groups ||\n            selectionMode !== previousState.selectionMode ||\n            compact !== previousState.compact) {\n            // If there are any props not passed explicitly to `List` which have an impact on the behavior of `onRenderCell`,\n            // these need to 'force-update' this component by revving the version. Otherwise, the List might render with stale\n            // data.\n            shouldForceUpdates = true;\n        }\n        if (shouldForceUpdates) {\n            nextState = __assign(__assign({}, nextState), { version: {} });\n        }\n        return nextState;\n    };\n    GroupedListBase.prototype.scrollToIndex = function (index, measureItem, scrollToMode) {\n        if (this._list.current) {\n            this._list.current.scrollToIndex(index, measureItem, scrollToMode);\n        }\n    };\n    GroupedListBase.prototype.getStartItemIndexInView = function () {\n        return this._list.current.getStartItemIndexInView() || 0;\n    };\n    GroupedListBase.prototype.componentDidMount = function () {\n        var _a = this.props, groupProps = _a.groupProps, _b = _a.groups, groups = _b === void 0 ? [] : _b;\n        if (groupProps && groupProps.isAllGroupsCollapsed) {\n            this._setGroupsCollapsedState(groups, groupProps.isAllGroupsCollapsed);\n        }\n    };\n    GroupedListBase.prototype.render = function () {\n        var _a = this.props, className = _a.className, usePageCache = _a.usePageCache, onShouldVirtualize = _a.onShouldVirtualize, theme = _a.theme, _b = _a.role, role = _b === void 0 ? 'treegrid' : _b, styles = _a.styles, compact = _a.compact, _c = _a.focusZoneProps, focusZoneProps = _c === void 0 ? {} : _c, _d = _a.rootListProps, rootListProps = _d === void 0 ? {} : _d;\n        var _e = this.state, groups = _e.groups, version = _e.version;\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            className: className,\n            compact: compact,\n        });\n        var _f = focusZoneProps.shouldEnterInnerZone, shouldEnterInnerZone = _f === void 0 ? this._isInnerZoneKeystroke : _f;\n        return (React.createElement(FocusZone, __assign({ direction: FocusZoneDirection.vertical, \"data-automationid\": \"GroupedList\", \"data-is-scrollable\": \"false\", role: \"presentation\" }, focusZoneProps, { shouldEnterInnerZone: shouldEnterInnerZone, className: css(this._classNames.root, focusZoneProps.className) }),\n            React.createElement(FocusRects, null),\n            !groups ? (this._renderGroup(undefined, 0)) : (React.createElement(List, __assign({ ref: this._list, role: role, items: groups, onRenderCell: this._renderGroup, getItemCountForPage: this._returnOne, getPageHeight: this._getPageHeight, getPageSpecification: this._getPageSpecification, usePageCache: usePageCache, onShouldVirtualize: onShouldVirtualize, version: version }, rootListProps)))));\n    };\n    GroupedListBase.prototype.forceUpdate = function () {\n        _super.prototype.forceUpdate.call(this);\n        this._forceListUpdates();\n    };\n    GroupedListBase.prototype.toggleCollapseAll = function (allCollapsed) {\n        var _a = this.state.groups, groups = _a === void 0 ? [] : _a;\n        var groupProps = this.props.groupProps;\n        var onToggleCollapseAll = groupProps && groupProps.onToggleCollapseAll;\n        if (groups.length > 0) {\n            if (onToggleCollapseAll) {\n                onToggleCollapseAll(allCollapsed);\n            }\n            this._setGroupsCollapsedState(groups, allCollapsed);\n            this._updateIsSomeGroupExpanded();\n            this.forceUpdate();\n        }\n    };\n    GroupedListBase.prototype._setGroupsCollapsedState = function (groups, isCollapsed) {\n        for (var groupIndex = 0; groupIndex < groups.length; groupIndex++) {\n            groups[groupIndex].isCollapsed = isCollapsed;\n        }\n    };\n    GroupedListBase.prototype._returnOne = function () {\n        return 1;\n    };\n    GroupedListBase.prototype._getGroupKey = function (group, index) {\n        return 'group-' + (group && group.key ? group.key : String(index));\n    };\n    GroupedListBase.prototype._getGroupNestingDepth = function () {\n        var groups = this.state.groups;\n        var level = 0;\n        var groupsInLevel = groups;\n        while (groupsInLevel && groupsInLevel.length > 0) {\n            level++;\n            groupsInLevel = groupsInLevel[0].children;\n        }\n        return level;\n    };\n    GroupedListBase.prototype._forceListUpdates = function (groups) {\n        this.setState({\n            version: {},\n        });\n    };\n    GroupedListBase.prototype._computeIsSomeGroupExpanded = function (groups) {\n        var _this = this;\n        return !!(groups &&\n            groups.some(function (group) { return (group.children ? _this._computeIsSomeGroupExpanded(group.children) : !group.isCollapsed); }));\n    };\n    GroupedListBase.prototype._updateIsSomeGroupExpanded = function () {\n        var groups = this.state.groups;\n        var onGroupExpandStateChanged = this.props.onGroupExpandStateChanged;\n        var newIsSomeGroupExpanded = this._computeIsSomeGroupExpanded(groups);\n        if (this._isSomeGroupExpanded !== newIsSomeGroupExpanded) {\n            if (onGroupExpandStateChanged) {\n                onGroupExpandStateChanged(newIsSomeGroupExpanded);\n            }\n            this._isSomeGroupExpanded = newIsSomeGroupExpanded;\n        }\n    };\n    GroupedListBase.defaultProps = {\n        selectionMode: SelectionMode.multiple,\n        isHeaderVisible: true,\n        groupProps: {},\n        compact: false,\n    };\n    return GroupedListBase;\n}(React.Component));\nexport { GroupedListBase };\n//# sourceMappingURL=GroupedList.base.js.map","import { styled } from '../../Utilities';\nimport { getStyles } from './GroupedList.styles';\nimport { GroupedListBase } from './GroupedList.base';\nexport var GroupedList = styled(GroupedListBase, getStyles, undefined, {\n    scope: 'GroupedList',\n});\n//# sourceMappingURL=GroupedList.js.map","import { __spreadArray } from \"tslib\";\n/**\n * Takes an array of groups and returns a count of the groups and all descendant groups.\n * @param groups - The array of groups to count.\n */\nexport var GetGroupCount = function (groups) {\n    var total = 0;\n    if (groups) {\n        var remainingGroups = __spreadArray([], groups, true);\n        var currentGroup = void 0;\n        while (remainingGroups && remainingGroups.length > 0) {\n            ++total;\n            currentGroup = remainingGroups.pop();\n            if (currentGroup && currentGroup.children) {\n                remainingGroups.push.apply(remainingGroups, currentGroup.children);\n            }\n        }\n    }\n    return total;\n};\n//# sourceMappingURL=GroupedListUtility.js.map","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css, styled, classNamesFunction, composeRenderFunction, getNativeElementProps } from '../../Utilities';\nimport { Check } from '../../Check';\nimport { getDetailsRowCheckStyles } from './DetailsRowCheck.styles';\nimport { SelectionMode } from '../../Selection';\nvar getClassNames = classNamesFunction();\nvar DetailsRowCheckBase = function (props) {\n    var _a = props.isVisible, isVisible = _a === void 0 ? false : _a, _b = props.canSelect, canSelect = _b === void 0 ? false : _b, _c = props.anySelected, anySelected = _c === void 0 ? false : _c, _d = props.selected, selected = _d === void 0 ? false : _d, selectionMode = props.selectionMode, _e = props.isHeader, isHeader = _e === void 0 ? false : _e, className = props.className, checkClassName = props.checkClassName, styles = props.styles, theme = props.theme, compact = props.compact, onRenderDetailsCheckbox = props.onRenderDetailsCheckbox, _f = props.useFastIcons, useFastIcons = _f === void 0 ? true : _f, // must be removed from buttonProps\n    buttonProps = __rest(props, [\"isVisible\", \"canSelect\", \"anySelected\", \"selected\", \"selectionMode\", \"isHeader\", \"className\", \"checkClassName\", \"styles\", \"theme\", \"compact\", \"onRenderDetailsCheckbox\", \"useFastIcons\"]);\n    var defaultCheckboxRender = useFastIcons ? _fastDefaultCheckboxRender : _defaultCheckboxRender;\n    var onRenderCheckbox = onRenderDetailsCheckbox\n        ? composeRenderFunction(onRenderDetailsCheckbox, defaultCheckboxRender)\n        : defaultCheckboxRender;\n    var classNames = getClassNames(styles, {\n        theme: theme,\n        canSelect: canSelect,\n        selected: selected,\n        anySelected: anySelected,\n        className: className,\n        isHeader: isHeader,\n        isVisible: isVisible,\n        compact: compact,\n    });\n    var detailsCheckboxProps = {\n        checked: selected,\n        theme: theme,\n    };\n    var divProps = getNativeElementProps('div', buttonProps, ['aria-label', 'aria-labelledby', 'aria-describedby']);\n    var checkRole = selectionMode === SelectionMode.single ? 'radio' : 'checkbox';\n    return canSelect ? (React.createElement(\"div\", __assign({}, buttonProps, { role: checkRole, \n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        className: css(classNames.root, classNames.check), \"aria-checked\": selected, \"data-selection-toggle\": true, \"data-automationid\": \"DetailsRowCheck\", tabIndex: -1 }), onRenderCheckbox(detailsCheckboxProps))) : (\n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    React.createElement(\"div\", __assign({}, divProps, { className: css(classNames.root, classNames.check) })));\n};\nvar FastCheck = React.memo(function (props) {\n    return React.createElement(Check, { theme: props.theme, checked: props.checked, className: props.className, useFastIcons: true });\n});\nfunction _defaultCheckboxRender(checkboxProps) {\n    return React.createElement(Check, { checked: checkboxProps.checked });\n}\nfunction _fastDefaultCheckboxRender(checkboxProps) {\n    return React.createElement(FastCheck, { theme: checkboxProps.theme, checked: checkboxProps.checked });\n}\nexport var DetailsRowCheck = styled(DetailsRowCheckBase, getDetailsRowCheckStyles, undefined, { scope: 'DetailsRowCheck' }, true);\n//# sourceMappingURL=DetailsRowCheck.js.map","import { EventGroup, getDocument } from '../../Utilities';\nvar MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button\nvar MOUSEMOVE_PRIMARY_BUTTON = 1; // for mouse move event we are using ev.buttons property, 1 means left button\nvar DragDropHelper = /** @class */ (function () {\n    function DragDropHelper(params) {\n        this._selection = params.selection;\n        this._dragEnterCounts = {};\n        this._activeTargets = {};\n        this._lastId = 0;\n        // To make this class cheap to create, which allows simplifying some logic elsewhere,\n        // only initialize the event group and global event handlers as needed.\n        this._initialized = false;\n    }\n    DragDropHelper.prototype.dispose = function () {\n        if (this._events) {\n            this._events.dispose();\n        }\n    };\n    DragDropHelper.prototype.subscribe = function (root, events, dragDropOptions) {\n        var _this = this;\n        if (!this._initialized) {\n            this._events = new EventGroup(this);\n            var doc = getDocument();\n            // clear drag data when mouse up, use capture event to ensure it will be run\n            if (doc) {\n                this._events.on(doc.body, 'mouseup', this._onMouseUp.bind(this), true);\n                this._events.on(doc, 'mouseup', this._onDocumentMouseUp.bind(this), true);\n            }\n            this._initialized = true;\n        }\n        var _a = dragDropOptions.key, key = _a === void 0 ? \"\".concat(++this._lastId) : _a;\n        var handlers = [];\n        var onDragStart;\n        var onDragLeave;\n        var onDragEnter;\n        var onDragEnd;\n        var onDrop;\n        var onDragOver;\n        var onMouseDown;\n        var isDraggable;\n        var isDroppable;\n        var activeTarget;\n        if (dragDropOptions && root) {\n            var eventMap = dragDropOptions.eventMap, context = dragDropOptions.context, updateDropState_1 = dragDropOptions.updateDropState;\n            var dragDropTarget = {\n                root: root,\n                options: dragDropOptions,\n                key: key,\n            };\n            isDraggable = this._isDraggable(dragDropTarget);\n            isDroppable = this._isDroppable(dragDropTarget);\n            if (isDraggable || isDroppable) {\n                if (eventMap) {\n                    for (var _i = 0, eventMap_1 = eventMap; _i < eventMap_1.length; _i++) {\n                        var event_1 = eventMap_1[_i];\n                        var handler = {\n                            callback: event_1.callback.bind(null, context),\n                            eventName: event_1.eventName,\n                        };\n                        handlers.push(handler);\n                        this._events.on(root, handler.eventName, handler.callback);\n                    }\n                }\n            }\n            if (isDroppable) {\n                // If the target is droppable, wire up global event listeners to track drop-related events.\n                onDragLeave = function (event) {\n                    if (!event.isHandled) {\n                        event.isHandled = true;\n                        _this._dragEnterCounts[key]--;\n                        if (_this._dragEnterCounts[key] === 0) {\n                            updateDropState_1(false /* isDropping */, event);\n                        }\n                    }\n                };\n                onDragEnter = function (event) {\n                    event.preventDefault(); // needed for IE\n                    if (!event.isHandled) {\n                        event.isHandled = true;\n                        _this._dragEnterCounts[key]++;\n                        if (_this._dragEnterCounts[key] === 1) {\n                            updateDropState_1(true /* isDropping */, event);\n                        }\n                    }\n                };\n                onDragEnd = function (event) {\n                    _this._dragEnterCounts[key] = 0;\n                    updateDropState_1(false /* isDropping */, event);\n                };\n                onDrop = function (event) {\n                    _this._dragEnterCounts[key] = 0;\n                    updateDropState_1(false /* isDropping */, event);\n                    if (dragDropOptions.onDrop) {\n                        dragDropOptions.onDrop(dragDropOptions.context.data, event);\n                    }\n                };\n                onDragOver = function (event) {\n                    event.preventDefault();\n                    if (dragDropOptions.onDragOver) {\n                        dragDropOptions.onDragOver(dragDropOptions.context.data, event);\n                    }\n                };\n                this._dragEnterCounts[key] = 0;\n                // dragenter and dragleave will be fired when hover to the child element\n                // but we only want to change state when enter or leave the current element\n                // use the count to ensure it.\n                events.on(root, 'dragenter', onDragEnter);\n                events.on(root, 'dragleave', onDragLeave);\n                events.on(root, 'dragend', onDragEnd);\n                events.on(root, 'drop', onDrop);\n                events.on(root, 'dragover', onDragOver);\n            }\n            if (isDraggable) {\n                // If the target is draggable, wire up local event listeners for mouse events.\n                onMouseDown = this._onMouseDown.bind(this, dragDropTarget);\n                onDragEnd = this._onDragEnd.bind(this, dragDropTarget);\n                // We need to add in data so that on Firefox we show the ghost element when dragging\n                onDragStart = function (event) {\n                    var options = dragDropOptions;\n                    if (options && options.onDragStart) {\n                        options.onDragStart(options.context.data, options.context.index, _this._selection.getSelection(), event);\n                    }\n                    _this._isDragging = true;\n                    if (event.dataTransfer) {\n                        event.dataTransfer.setData('id', root.id);\n                    }\n                };\n                events.on(root, 'dragstart', onDragStart);\n                events.on(root, 'mousedown', onMouseDown);\n                events.on(root, 'dragend', onDragEnd);\n            }\n            activeTarget = {\n                target: dragDropTarget,\n                dispose: function () {\n                    if (_this._activeTargets[key] === activeTarget) {\n                        delete _this._activeTargets[key];\n                    }\n                    if (root) {\n                        for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {\n                            var handler = handlers_1[_i];\n                            _this._events.off(root, handler.eventName, handler.callback);\n                        }\n                        if (isDroppable) {\n                            events.off(root, 'dragenter', onDragEnter);\n                            events.off(root, 'dragleave', onDragLeave);\n                            events.off(root, 'dragend', onDragEnd);\n                            events.off(root, 'dragover', onDragOver);\n                            events.off(root, 'drop', onDrop);\n                        }\n                        if (isDraggable) {\n                            events.off(root, 'dragstart', onDragStart);\n                            events.off(root, 'mousedown', onMouseDown);\n                            events.off(root, 'dragend', onDragEnd);\n                        }\n                    }\n                },\n            };\n            this._activeTargets[key] = activeTarget;\n        }\n        return {\n            key: key,\n            dispose: function () {\n                if (activeTarget) {\n                    activeTarget.dispose();\n                }\n            },\n        };\n    };\n    DragDropHelper.prototype.unsubscribe = function (root, key) {\n        var activeTarget = this._activeTargets[key];\n        if (activeTarget) {\n            activeTarget.dispose();\n        }\n    };\n    DragDropHelper.prototype._onDragEnd = function (target, event) {\n        var options = target.options;\n        if (options.onDragEnd) {\n            options.onDragEnd(options.context.data, event);\n        }\n    };\n    /**\n     * clear drag data when mouse up on body\n     */\n    DragDropHelper.prototype._onMouseUp = function (event) {\n        this._isDragging = false;\n        if (this._dragData) {\n            for (var _i = 0, _a = Object.keys(this._activeTargets); _i < _a.length; _i++) {\n                var key = _a[_i];\n                var activeTarget = this._activeTargets[key];\n                if (activeTarget.target.root) {\n                    this._events.off(activeTarget.target.root, 'mousemove');\n                    this._events.off(activeTarget.target.root, 'mouseleave');\n                }\n            }\n            if (this._dragData.dropTarget) {\n                // raise dragleave event to let dropTarget know it need to remove dropping style\n                EventGroup.raise(this._dragData.dropTarget.root, 'dragleave');\n                EventGroup.raise(this._dragData.dropTarget.root, 'drop');\n            }\n        }\n        this._dragData = null;\n    };\n    /**\n     * clear drag data when mouse up outside of the document\n     */\n    DragDropHelper.prototype._onDocumentMouseUp = function (event) {\n        var doc = getDocument();\n        if (doc && event.target === doc.documentElement) {\n            this._onMouseUp(event);\n        }\n    };\n    /**\n     * when mouse move over a new drop target while dragging some items,\n     * fire dragleave on the old target and fire dragenter to the new target\n     * The target will handle style change on dragenter and dragleave events.\n     */\n    DragDropHelper.prototype._onMouseMove = function (target, event) {\n        var \n        // use buttons property here since ev.button in some edge case is not updating well during the move.\n        // but firefox doesn't support it, so we set the default value when it is not defined.\n        _a = event.buttons, \n        // use buttons property here since ev.button in some edge case is not updating well during the move.\n        // but firefox doesn't support it, so we set the default value when it is not defined.\n        buttons = _a === void 0 ? MOUSEMOVE_PRIMARY_BUTTON : _a;\n        if (this._dragData && buttons !== MOUSEMOVE_PRIMARY_BUTTON) {\n            // cancel mouse down event and return early when the primary button is not pressed\n            this._onMouseUp(event);\n            return;\n        }\n        var root = target.root, key = target.key;\n        if (this._isDragging) {\n            if (this._isDroppable(target)) {\n                // we can have nested drop targets in the DOM, like a folder inside a group. In that case, when we drag into\n                // the inner target (folder), we first set dropTarget to the inner element. But the same event is bubbled to the\n                // outer target too, and we need to prevent the outer one from taking over.\n                // So, check if the last dropTarget is not a child of the current.\n                if (this._dragData) {\n                    if (this._dragData.dropTarget &&\n                        this._dragData.dropTarget.key !== key &&\n                        !this._isChild(root, this._dragData.dropTarget.root)) {\n                        if (this._dragEnterCounts[this._dragData.dropTarget.key] > 0) {\n                            EventGroup.raise(this._dragData.dropTarget.root, 'dragleave');\n                            EventGroup.raise(root, 'dragenter');\n                            this._dragData.dropTarget = target;\n                        }\n                    }\n                }\n            }\n        }\n    };\n    /**\n     * when mouse leave a target while dragging some items, fire dragleave to the target\n     */\n    DragDropHelper.prototype._onMouseLeave = function (target, event) {\n        if (this._isDragging) {\n            if (this._dragData && this._dragData.dropTarget && this._dragData.dropTarget.key === target.key) {\n                EventGroup.raise(target.root, 'dragleave');\n                this._dragData.dropTarget = undefined;\n            }\n        }\n    };\n    /**\n     * when mouse down on a draggable item, we start to track dragdata.\n     */\n    DragDropHelper.prototype._onMouseDown = function (target, event) {\n        if (event.button !== MOUSEDOWN_PRIMARY_BUTTON) {\n            // Ignore anything except the primary button.\n            return;\n        }\n        if (this._isDraggable(target)) {\n            this._dragData = {\n                clientX: event.clientX,\n                clientY: event.clientY,\n                eventTarget: event.target,\n                dragTarget: target,\n            };\n            for (var _i = 0, _a = Object.keys(this._activeTargets); _i < _a.length; _i++) {\n                var key = _a[_i];\n                var activeTarget = this._activeTargets[key];\n                if (activeTarget.target.root) {\n                    this._events.on(activeTarget.target.root, 'mousemove', this._onMouseMove.bind(this, activeTarget.target));\n                    this._events.on(activeTarget.target.root, 'mouseleave', this._onMouseLeave.bind(this, activeTarget.target));\n                }\n            }\n        }\n        else {\n            this._dragData = null;\n        }\n    };\n    /**\n     * determine whether the child target is a descendant of the parent\n     */\n    DragDropHelper.prototype._isChild = function (parentElement, childElement) {\n        while (childElement && childElement.parentElement) {\n            if (childElement.parentElement === parentElement) {\n                return true;\n            }\n            childElement = childElement.parentElement;\n        }\n        return false;\n    };\n    DragDropHelper.prototype._isDraggable = function (target) {\n        var options = target.options;\n        return !!(options.canDrag && options.canDrag(options.context.data));\n    };\n    DragDropHelper.prototype._isDroppable = function (target) {\n        // TODO: take the drag item into consideration to prevent dragging an item into the same group\n        var options = target.options;\n        var dragContext = this._dragData && this._dragData.dragTarget ? this._dragData.dragTarget.options.context : undefined;\n        return !!(options.canDrop && options.canDrop(options.context, dragContext));\n    };\n    return DragDropHelper;\n}());\nexport { DragDropHelper };\n//# sourceMappingURL=DragDropHelper.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { Icon, FontIcon } from '../../Icon';\nimport { initializeComponentRef, EventGroup, Async, classNamesFunction, composeRenderFunction } from '../../Utilities';\nimport { ColumnActionsMode } from './DetailsList.types';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nvar MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button\nvar getClassNames = classNamesFunction();\nvar TRANSITION_DURATION_DRAG = 200; // ms\nvar TRANSITION_DURATION_DROP = 1500; // ms\nvar CLASSNAME_ADD_INTERVAL = 20; // ms\nvar defaultOnRenderHeader = function (classNames) {\n    return function (props) {\n        if (!props) {\n            return null;\n        }\n        if (props.column.isIconOnly) {\n            return React.createElement(\"span\", { className: classNames.accessibleLabel }, props.column.name);\n        }\n        return React.createElement(React.Fragment, null, props.column.name);\n    };\n};\n/**\n * Component for rendering columns in a `DetailsList`.\n *\n * {@docCategory DetailsList}\n */\nvar DetailsColumnBase = /** @class */ (function (_super) {\n    __extends(DetailsColumnBase, _super);\n    function DetailsColumnBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._root = React.createRef();\n        _this._tooltipRef = React.createRef();\n        _this._onRenderFilterIcon = function (classNames) {\n            return function (props) {\n                var columnProps = props.columnProps, iconProps = __rest(props, [\"columnProps\"]);\n                var IconComponent = (columnProps === null || columnProps === void 0 ? void 0 : columnProps.useFastIcons) ? FontIcon : Icon;\n                return React.createElement(IconComponent, __assign({}, iconProps));\n            };\n        };\n        _this._onRenderColumnHeaderTooltip = function (tooltipHostProps) {\n            return React.createElement(\"span\", { className: tooltipHostProps.hostClassName }, tooltipHostProps.children);\n        };\n        _this._onColumnClick = function (ev) {\n            var _a = _this.props, onColumnClick = _a.onColumnClick, column = _a.column;\n            if (column.columnActionsMode === ColumnActionsMode.disabled) {\n                return;\n            }\n            if (column.onColumnClick) {\n                column.onColumnClick(ev, column);\n            }\n            if (onColumnClick) {\n                onColumnClick(ev, column);\n            }\n        };\n        _this._onColumnKeyDown = function (ev) {\n            var _a = _this.props, onColumnKeyDown = _a.onColumnKeyDown, column = _a.column;\n            if (column.onColumnKeyDown) {\n                column.onColumnKeyDown(ev, column);\n            }\n            if (onColumnKeyDown) {\n                onColumnKeyDown(ev, column);\n            }\n        };\n        _this._onColumnBlur = function () {\n            _this._tooltipRef.current && _this._tooltipRef.current.dismiss();\n        };\n        _this._onColumnFocus = function () {\n            _this._tooltipRef.current && _this._tooltipRef.current.show();\n        };\n        _this._onDragStart = function (item, itemIndex, selectedItems, event) {\n            var classNames = _this._classNames;\n            if (itemIndex) {\n                _this._updateHeaderDragInfo(itemIndex);\n                _this._root.current.classList.add(classNames.borderWhileDragging);\n                _this._async.setTimeout(function () {\n                    if (_this._root.current) {\n                        _this._root.current.classList.add(classNames.noBorderWhileDragging);\n                    }\n                }, CLASSNAME_ADD_INTERVAL);\n            }\n        };\n        _this._onDragEnd = function (item, event) {\n            var classNames = _this._classNames;\n            if (event) {\n                _this._updateHeaderDragInfo(-1, event);\n            }\n            _this._root.current.classList.remove(classNames.borderWhileDragging);\n            _this._root.current.classList.remove(classNames.noBorderWhileDragging);\n        };\n        _this._updateHeaderDragInfo = function (itemIndex, event) {\n            /* eslint-disable @typescript-eslint/no-deprecated */\n            if (_this.props.setDraggedItemIndex) {\n                _this.props.setDraggedItemIndex(itemIndex);\n            }\n            /* eslint-enable @typescript-eslint/no-deprecated */\n            if (_this.props.updateDragInfo) {\n                _this.props.updateDragInfo({ itemIndex: itemIndex }, event);\n            }\n        };\n        _this._onColumnContextMenu = function (ev) {\n            var _a = _this.props, onColumnContextMenu = _a.onColumnContextMenu, column = _a.column;\n            if (column.onColumnContextMenu) {\n                column.onColumnContextMenu(column, ev);\n                ev.preventDefault();\n            }\n            if (onColumnContextMenu) {\n                onColumnContextMenu(column, ev);\n                ev.preventDefault();\n            }\n        };\n        _this._onRootMouseDown = function (ev) {\n            var isDraggable = _this.props.isDraggable;\n            // Ignore anything except the primary button.\n            if (isDraggable && ev.button === MOUSEDOWN_PRIMARY_BUTTON) {\n                ev.stopPropagation();\n            }\n        };\n        initializeComponentRef(_this);\n        _this._async = new Async(_this);\n        _this._events = new EventGroup(_this);\n        return _this;\n    }\n    DetailsColumnBase.prototype.render = function () {\n        var _a = this.props, column = _a.column, parentId = _a.parentId, isDraggable = _a.isDraggable, styles = _a.styles, theme = _a.theme, _b = _a.cellStyleProps, cellStyleProps = _b === void 0 ? DEFAULT_CELL_STYLE_PROPS : _b, _c = _a.useFastIcons, useFastIcons = _c === void 0 ? true : _c;\n        var _d = this.props.onRenderColumnHeaderTooltip, onRenderColumnHeaderTooltip = _d === void 0 ? this._onRenderColumnHeaderTooltip : _d;\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            headerClassName: column.headerClassName,\n            iconClassName: column.iconClassName,\n            isActionable: column.columnActionsMode !== ColumnActionsMode.disabled,\n            isEmpty: !column.name,\n            isIconVisible: column.isSorted || column.isGrouped || column.isFiltered,\n            isPadded: column.isPadded,\n            isIconOnly: column.isIconOnly,\n            cellStyleProps: cellStyleProps,\n            transitionDurationDrag: TRANSITION_DURATION_DRAG,\n            transitionDurationDrop: TRANSITION_DURATION_DROP,\n        });\n        var classNames = this._classNames;\n        var IconComponent = useFastIcons ? FontIcon : Icon;\n        var onRenderFilterIcon = column.onRenderFilterIcon\n            ? composeRenderFunction(column.onRenderFilterIcon, this._onRenderFilterIcon(this._classNames))\n            : this._onRenderFilterIcon(this._classNames);\n        var onRenderHeader = column.onRenderHeader\n            ? composeRenderFunction(column.onRenderHeader, defaultOnRenderHeader(this._classNames))\n            : defaultOnRenderHeader(this._classNames);\n        var hasInnerButton = column.columnActionsMode !== ColumnActionsMode.disabled &&\n            (column.onColumnClick !== undefined || this.props.onColumnClick !== undefined);\n        // use aria-describedby to point to the tooltip if the tooltip is not using the ariaLabel string\n        var shouldAssociateTooltip = this.props.onRenderColumnHeaderTooltip\n            ? !column.ariaLabel\n            : this._hasAccessibleDescription();\n        var accNameDescription = {\n            'aria-label': column.ariaLabel ? column.ariaLabel : column.isIconOnly ? column.name : undefined,\n            'aria-labelledby': column.ariaLabel || column.isIconOnly ? undefined : \"\".concat(parentId, \"-\").concat(column.key, \"-name\"),\n            'aria-describedby': shouldAssociateTooltip ? \"\".concat(parentId, \"-\").concat(column.key, \"-tooltip\") : undefined,\n        };\n        return (React.createElement(React.Fragment, null,\n            React.createElement(\"div\", __assign({ key: column.key, ref: this._root, role: 'columnheader' }, (!hasInnerButton && accNameDescription), { \"aria-sort\": column.isSorted ? (column.isSortedDescending ? 'descending' : 'ascending') : 'none', \"data-is-focusable\": !hasInnerButton && column.columnActionsMode !== ColumnActionsMode.disabled ? 'true' : undefined, className: classNames.root, \"data-is-draggable\": isDraggable, draggable: isDraggable, style: {\n                    width: (column.calculatedWidth || 0) +\n                        cellStyleProps.cellLeftPadding +\n                        cellStyleProps.cellRightPadding +\n                        (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0),\n                }, \"data-automationid\": 'ColumnsHeaderColumn', \"data-item-key\": column.key, onBlur: this._onColumnBlur, onFocus: this._onColumnFocus }),\n                isDraggable && (React.createElement(IconComponent, { iconName: \"GripperBarVertical\", className: classNames.gripperBarVerticalStyle })),\n                onRenderColumnHeaderTooltip({\n                    hostClassName: classNames.cellTooltip,\n                    id: \"\".concat(parentId, \"-\").concat(column.key, \"-tooltip\"),\n                    setAriaDescribedBy: false,\n                    column: column,\n                    componentRef: this._tooltipRef,\n                    content: column.columnActionsMode !== ColumnActionsMode.disabled ? column.ariaLabel : '',\n                    children: (React.createElement(\"span\", __assign({ id: \"\".concat(parentId, \"-\").concat(column.key), className: classNames.cellTitle, \"data-is-focusable\": hasInnerButton && column.columnActionsMode !== ColumnActionsMode.disabled ? 'true' : undefined, role: hasInnerButton ? 'button' : undefined }, (hasInnerButton && accNameDescription), { onContextMenu: this._onColumnContextMenu, onClick: this._onColumnClick, onKeyDown: this._onColumnKeyDown, \"aria-haspopup\": column.columnActionsMode === ColumnActionsMode.hasDropdown ? 'menu' : undefined, \"aria-expanded\": column.columnActionsMode === ColumnActionsMode.hasDropdown ? !!column.isMenuOpen : undefined }),\n                        React.createElement(\"span\", { id: \"\".concat(parentId, \"-\").concat(column.key, \"-name\"), className: classNames.cellName },\n                            (column.iconName || column.iconClassName) && (React.createElement(IconComponent, { className: classNames.iconClassName, iconName: column.iconName })),\n                            onRenderHeader(this.props)),\n                        column.isFiltered && React.createElement(IconComponent, { className: classNames.nearIcon, iconName: \"Filter\" }),\n                        (column.isSorted || column.showSortIconWhenUnsorted) && (React.createElement(IconComponent, { className: classNames.sortIcon, iconName: column.isSorted ? (column.isSortedDescending ? 'SortDown' : 'SortUp') : 'Sort' })),\n                        column.isGrouped && React.createElement(IconComponent, { className: classNames.nearIcon, iconName: \"GroupedDescending\" }),\n                        column.columnActionsMode === ColumnActionsMode.hasDropdown &&\n                            !column.isIconOnly &&\n                            onRenderFilterIcon({\n                                'aria-hidden': true,\n                                columnProps: this.props,\n                                className: classNames.filterChevron,\n                                iconName: 'ChevronDown',\n                            }))),\n                }, this._onRenderColumnHeaderTooltip)),\n            !this.props.onRenderColumnHeaderTooltip ? this._renderAccessibleDescription() : null));\n    };\n    DetailsColumnBase.prototype.componentDidMount = function () {\n        var _this = this;\n        if (this.props.dragDropHelper && this.props.isDraggable) {\n            this._addDragDropHandling();\n        }\n        var classNames = this._classNames;\n        if (this.props.isDropped) {\n            if (this._root.current) {\n                this._root.current.classList.add(classNames.borderAfterDropping);\n                this._async.setTimeout(function () {\n                    if (_this._root.current) {\n                        _this._root.current.classList.add(classNames.noBorderAfterDropping);\n                    }\n                }, CLASSNAME_ADD_INTERVAL);\n            }\n            this._async.setTimeout(function () {\n                if (_this._root.current) {\n                    _this._root.current.classList.remove(classNames.borderAfterDropping);\n                    _this._root.current.classList.remove(classNames.noBorderAfterDropping);\n                }\n            }, TRANSITION_DURATION_DROP + CLASSNAME_ADD_INTERVAL);\n        }\n    };\n    DetailsColumnBase.prototype.componentWillUnmount = function () {\n        if (this._dragDropSubscription) {\n            this._dragDropSubscription.dispose();\n            delete this._dragDropSubscription;\n        }\n        this._async.dispose();\n        this._events.dispose();\n    };\n    DetailsColumnBase.prototype.componentDidUpdate = function () {\n        if (!this._dragDropSubscription && this.props.dragDropHelper && this.props.isDraggable) {\n            this._addDragDropHandling();\n        }\n        if (this._dragDropSubscription && !this.props.isDraggable) {\n            this._dragDropSubscription.dispose();\n            this._events.off(this._root.current, 'mousedown');\n            delete this._dragDropSubscription;\n        }\n    };\n    DetailsColumnBase.prototype._getColumnDragDropOptions = function () {\n        var _this = this;\n        var columnIndex = this.props.columnIndex;\n        var options = {\n            selectionIndex: columnIndex,\n            context: { data: columnIndex, index: columnIndex },\n            canDrag: function () { return _this.props.isDraggable; },\n            canDrop: function () { return false; },\n            onDragStart: this._onDragStart,\n            updateDropState: function () { return undefined; },\n            onDrop: function () { return undefined; },\n            onDragEnd: this._onDragEnd,\n        };\n        return options;\n    };\n    DetailsColumnBase.prototype._hasAccessibleDescription = function () {\n        var column = this.props.column;\n        return !!(column.filterAriaLabel ||\n            column.sortAscendingAriaLabel ||\n            column.sortDescendingAriaLabel ||\n            column.groupAriaLabel ||\n            column.sortableAriaLabel);\n    };\n    DetailsColumnBase.prototype._renderAccessibleDescription = function () {\n        var _a = this.props, column = _a.column, parentId = _a.parentId;\n        var classNames = this._classNames;\n        return this._hasAccessibleDescription() && !this.props.onRenderColumnHeaderTooltip ? (React.createElement(\"label\", { key: \"\".concat(column.key, \"_label\"), id: \"\".concat(parentId, \"-\").concat(column.key, \"-tooltip\"), className: classNames.accessibleLabel, hidden: true },\n            (column.isFiltered && column.filterAriaLabel) || null,\n            ((column.isSorted || column.showSortIconWhenUnsorted) &&\n                (column.isSorted\n                    ? column.isSortedDescending\n                        ? column.sortDescendingAriaLabel\n                        : column.sortAscendingAriaLabel\n                    : column.sortableAriaLabel)) ||\n                null,\n            (column.isGrouped && column.groupAriaLabel) || null)) : null;\n    };\n    DetailsColumnBase.prototype._addDragDropHandling = function () {\n        this._dragDropSubscription = this.props.dragDropHelper.subscribe(this._root.current, this._events, this._getColumnDragDropOptions());\n        // We need to use native on this to prevent MarqueeSelection from handling the event before us.\n        this._events.on(this._root.current, 'mousedown', this._onRootMouseDown);\n    };\n    return DetailsColumnBase;\n}(React.Component));\nexport { DetailsColumnBase };\n//# sourceMappingURL=DetailsColumn.base.js.map","import { __assign } from \"tslib\";\nimport { getFocusStyle, getGlobalClassNames, hiddenContentStyle, FontWeights } from '../../Styling';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nimport { getCellStyles } from './DetailsHeader.styles';\nvar GlobalClassNames = {\n    isActionable: 'is-actionable',\n    cellIsCheck: 'ms-DetailsHeader-cellIsCheck',\n    collapseButton: 'ms-DetailsHeader-collapseButton',\n    isCollapsed: 'is-collapsed',\n    isAllSelected: 'is-allSelected',\n    isSelectAllHidden: 'is-selectAllHidden',\n    isResizingColumn: 'is-resizingColumn',\n    isEmpty: 'is-empty',\n    isIconVisible: 'is-icon-visible',\n    cellSizer: 'ms-DetailsHeader-cellSizer',\n    isResizing: 'is-resizing',\n    dropHintCircleStyle: 'ms-DetailsHeader-dropHintCircleStyle',\n    dropHintLineStyle: 'ms-DetailsHeader-dropHintLineStyle',\n    cellTitle: 'ms-DetailsHeader-cellTitle',\n    cellName: 'ms-DetailsHeader-cellName',\n    filterChevron: 'ms-DetailsHeader-filterChevron',\n    gripperBarVerticalStyle: 'ms-DetailsColumn-gripperBar',\n    nearIcon: 'ms-DetailsColumn-nearIcon',\n};\nexport var getDetailsColumnStyles = function (props) {\n    var _a;\n    var theme = props.theme, headerClassName = props.headerClassName, iconClassName = props.iconClassName, isActionable = props.isActionable, isEmpty = props.isEmpty, isIconVisible = props.isIconVisible, isPadded = props.isPadded, isIconOnly = props.isIconOnly, _b = props.cellStyleProps, cellStyleProps = _b === void 0 ? DEFAULT_CELL_STYLE_PROPS : _b, transitionDurationDrag = props.transitionDurationDrag, transitionDurationDrop = props.transitionDurationDrop;\n    var semanticColors = theme.semanticColors, palette = theme.palette, fonts = theme.fonts;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    var colors = {\n        iconForegroundColor: semanticColors.bodySubtext,\n        headerForegroundColor: semanticColors.bodyText,\n        headerBackgroundColor: semanticColors.bodyBackground,\n        dropdownChevronForegroundColor: palette.neutralSecondary,\n        resizerColor: palette.neutralTertiaryAlt,\n    };\n    var nearIconStyle = {\n        color: colors.iconForegroundColor,\n        opacity: 1,\n        paddingLeft: 8,\n    };\n    var borderWhileDragging = {\n        outline: \"1px solid \".concat(palette.themePrimary),\n    };\n    var borderAfterDragOrDrop = {\n        outlineColor: 'transparent',\n    };\n    return {\n        root: [\n            getCellStyles(props),\n            fonts.small,\n            isActionable && [\n                classNames.isActionable,\n                {\n                    selectors: {\n                        ':hover': {\n                            color: semanticColors.bodyText,\n                            background: semanticColors.listHeaderBackgroundHovered,\n                        },\n                        ':active': {\n                            background: semanticColors.listHeaderBackgroundPressed,\n                        },\n                    },\n                },\n            ],\n            isEmpty && [\n                classNames.isEmpty,\n                {\n                    textOverflow: 'clip',\n                },\n            ],\n            isIconVisible && classNames.isIconVisible,\n            isPadded && {\n                paddingRight: cellStyleProps.cellExtraRightPadding + cellStyleProps.cellRightPadding,\n            },\n            {\n                selectors: {\n                    ':hover i[data-icon-name=\"GripperBarVertical\"]': {\n                        display: 'block',\n                    },\n                },\n            },\n            headerClassName,\n        ],\n        gripperBarVerticalStyle: {\n            display: 'none',\n            position: 'absolute',\n            textAlign: 'left',\n            color: palette.neutralTertiary,\n            left: 1,\n        },\n        nearIcon: [classNames.nearIcon, nearIconStyle],\n        sortIcon: [\n            nearIconStyle,\n            {\n                paddingLeft: 4,\n                position: 'relative',\n                top: 1,\n            },\n        ],\n        iconClassName: [\n            {\n                color: colors.iconForegroundColor,\n                opacity: 1,\n            },\n            iconClassName,\n        ],\n        filterChevron: [\n            classNames.filterChevron,\n            {\n                color: colors.dropdownChevronForegroundColor,\n                paddingLeft: 6,\n                verticalAlign: 'middle',\n                fontSize: fonts.small.fontSize,\n            },\n        ],\n        cellTitle: [\n            classNames.cellTitle,\n            getFocusStyle(theme),\n            __assign({ display: 'flex', flexDirection: 'row', justifyContent: 'flex-start', alignItems: 'stretch', boxSizing: 'border-box', overflow: 'hidden', padding: \"0 \".concat(cellStyleProps.cellRightPadding, \"px 0 \").concat(cellStyleProps.cellLeftPadding, \"px\") }, (isIconOnly\n                ? {\n                    alignContent: 'flex-end',\n                    maxHeight: '100%',\n                    flexWrap: 'wrap-reverse',\n                }\n                : {})),\n        ],\n        cellName: [\n            classNames.cellName,\n            {\n                flex: '0 1 auto',\n                overflow: 'hidden',\n                textOverflow: 'ellipsis',\n                fontWeight: FontWeights.semibold,\n                fontSize: fonts.medium.fontSize,\n            },\n            isIconOnly && {\n                selectors: (_a = {},\n                    _a[\".\".concat(classNames.nearIcon)] = {\n                        paddingLeft: 0,\n                    },\n                    _a),\n            },\n        ],\n        cellTooltip: {\n            display: 'block',\n            position: 'absolute',\n            top: 0,\n            left: 0,\n            bottom: 0,\n            right: 0,\n        },\n        accessibleLabel: hiddenContentStyle,\n        borderWhileDragging: borderWhileDragging,\n        noBorderWhileDragging: [borderAfterDragOrDrop, { transition: \"outline \".concat(transitionDurationDrag, \"ms ease\") }],\n        borderAfterDropping: borderWhileDragging,\n        noBorderAfterDropping: [borderAfterDragOrDrop, { transition: \"outline  \".concat(transitionDurationDrop, \"ms ease\") }],\n    };\n};\n//# sourceMappingURL=DetailsColumn.styles.js.map","import { styled } from '../../Utilities';\nimport { DetailsColumnBase } from './DetailsColumn.base';\nimport { getDetailsColumnStyles } from './DetailsColumn.styles';\nexport var DetailsColumn = styled(DetailsColumnBase, getDetailsColumnStyles, undefined, { scope: 'DetailsColumn' });\n//# sourceMappingURL=DetailsColumn.js.map","/**\n * {@docCategory DetailsList}\n */\nexport var SelectAllVisibility;\n(function (SelectAllVisibility) {\n    SelectAllVisibility[SelectAllVisibility[\"none\"] = 0] = \"none\";\n    SelectAllVisibility[SelectAllVisibility[\"hidden\"] = 1] = \"hidden\";\n    SelectAllVisibility[SelectAllVisibility[\"visible\"] = 2] = \"visible\";\n})(SelectAllVisibility || (SelectAllVisibility = {}));\n//# sourceMappingURL=DetailsHeader.types.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { initializeComponentRef, EventGroup, css, getRTL, getId, KeyCodes, classNamesFunction } from '../../Utilities';\nimport { ColumnDragEndLocation, CheckboxVisibility } from './DetailsList.types';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { Icon, FontIcon } from '../../Icon';\nimport { Layer } from '../../Layer';\nimport { GroupSpacer } from '../GroupedList/GroupSpacer';\nimport { CollapseAllVisibility } from '../../GroupedList';\nimport { DetailsRowCheck } from './DetailsRowCheck';\nimport { SelectionMode, SELECTION_CHANGE } from '../../Selection';\nimport { DragDropHelper } from '../../DragDrop';\nimport { DetailsColumn } from '../../components/DetailsList/DetailsColumn';\nimport { SelectAllVisibility } from './DetailsHeader.types';\nvar getClassNames = classNamesFunction();\nvar MOUSEDOWN_PRIMARY_BUTTON = 0; // for mouse down event we are using ev.button property, 0 means left button\nvar MOUSEMOVE_PRIMARY_BUTTON = 1; // for mouse move event we are using ev.buttons property, 1 means left button\nvar NO_COLUMNS = [];\nvar DetailsHeaderBase = /** @class */ (function (_super) {\n    __extends(DetailsHeaderBase, _super);\n    function DetailsHeaderBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._rootElement = React.createRef();\n        _this._rootComponent = React.createRef();\n        _this._draggedColumnIndex = -1;\n        _this._dropHintDetails = {};\n        _this._updateDroppingState = function (newValue, event) {\n            if (_this._draggedColumnIndex >= 0 && event.type !== 'drop' && !newValue) {\n                _this._resetDropHints();\n            }\n        };\n        _this._onDragOver = function (item, event) {\n            if (_this._draggedColumnIndex >= 0) {\n                event.stopPropagation();\n                _this._computeDropHintToBeShown(event.clientX);\n            }\n        };\n        _this._onDrop = function (item, event) {\n            // Safe to assume this is defined since we're handling a drop event\n            var columnReorderProps = _this._getColumnReorderProps();\n            // Target index will not get changed if draggeditem is after target item.\n            if (_this._draggedColumnIndex >= 0 && event) {\n                var targetIndex = _this._draggedColumnIndex > _this._currentDropHintIndex\n                    ? _this._currentDropHintIndex\n                    : _this._currentDropHintIndex - 1;\n                var isValidDrop = _this._isValidCurrentDropHintIndex();\n                event.stopPropagation();\n                if (isValidDrop) {\n                    _this._onDropIndexInfo.sourceIndex = _this._draggedColumnIndex;\n                    _this._onDropIndexInfo.targetIndex = targetIndex;\n                    if (columnReorderProps.onColumnDrop) {\n                        var dragDropDetails = {\n                            draggedIndex: _this._draggedColumnIndex,\n                            targetIndex: targetIndex,\n                        };\n                        columnReorderProps.onColumnDrop(dragDropDetails);\n                        /* eslint-disable @typescript-eslint/no-deprecated */\n                    }\n                    else if (columnReorderProps.handleColumnReorder) {\n                        columnReorderProps.handleColumnReorder(_this._draggedColumnIndex, targetIndex);\n                        /* eslint-enable @typescript-eslint/no-deprecated */\n                    }\n                }\n            }\n            _this._resetDropHints();\n            _this._dropHintDetails = {};\n            _this._draggedColumnIndex = -1;\n        };\n        _this._computeColumnIndexOffset = function (showCheckbox) {\n            var hasGroupExpander = _this.props.groupNestingDepth && _this.props.groupNestingDepth > 0;\n            var offset = 1;\n            if (showCheckbox) {\n                offset += 1;\n            }\n            if (hasGroupExpander) {\n                offset += 1;\n            }\n            return offset;\n        };\n        _this._updateDragInfo = function (props, event) {\n            // Safe to assume this is defined since we're handling a drag event\n            var columnReorderProps = _this._getColumnReorderProps();\n            var itemIndex = props.itemIndex;\n            if (itemIndex >= 0) {\n                // Column index is set based on the checkbox\n                _this._draggedColumnIndex = itemIndex - _this._computeColumnIndexOffset(!_this._isCheckboxColumnHidden());\n                _this._getDropHintPositions();\n                if (columnReorderProps.onColumnDragStart) {\n                    columnReorderProps.onColumnDragStart(true);\n                }\n            }\n            else if (event && _this._draggedColumnIndex >= 0) {\n                _this._resetDropHints();\n                _this._draggedColumnIndex = -1;\n                _this._dropHintDetails = {};\n                if (columnReorderProps.onColumnDragEnd) {\n                    var columnDragEndLocation = _this._isEventOnHeader(event);\n                    columnReorderProps.onColumnDragEnd({ dropLocation: columnDragEndLocation }, event);\n                }\n            }\n        };\n        _this._getDropHintPositions = function () {\n            var _a = _this.props.columns, columns = _a === void 0 ? NO_COLUMNS : _a;\n            // Safe to assume this is defined since we're handling a drag/drop event\n            var columnReorderProps = _this._getColumnReorderProps();\n            var prevX = 0;\n            var prevMid = 0;\n            var prevRef;\n            var frozenColumnCountFromStart = columnReorderProps.frozenColumnCountFromStart || 0;\n            var frozenColumnCountFromEnd = columnReorderProps.frozenColumnCountFromEnd || 0;\n            for (var i = frozenColumnCountFromStart; i < columns.length - frozenColumnCountFromEnd + 1; i++) {\n                if (_this._rootElement.current) {\n                    var dropHintElement = _this._rootElement.current.querySelectorAll('#columnDropHint_' + i)[0];\n                    if (dropHintElement) {\n                        if (i === frozenColumnCountFromStart) {\n                            prevX = dropHintElement.offsetLeft;\n                            prevMid = dropHintElement.offsetLeft;\n                            prevRef = dropHintElement;\n                        }\n                        else {\n                            var newMid = (dropHintElement.offsetLeft + prevX) / 2;\n                            _this._dropHintDetails[i - 1] = {\n                                originX: prevX,\n                                startX: prevMid,\n                                endX: newMid,\n                                dropHintElementRef: prevRef,\n                            };\n                            prevMid = newMid;\n                            prevRef = dropHintElement;\n                            prevX = dropHintElement.offsetLeft;\n                            if (i === columns.length - frozenColumnCountFromEnd) {\n                                _this._dropHintDetails[i] = {\n                                    originX: prevX,\n                                    startX: prevMid,\n                                    endX: dropHintElement.offsetLeft,\n                                    dropHintElementRef: prevRef,\n                                };\n                            }\n                        }\n                    }\n                }\n            }\n        };\n        /**\n         * Based on the given cursor position, finds the nearest drop hint and updates the state to make it visible\n         */\n        _this._computeDropHintToBeShown = function (clientX) {\n            var isRtl = getRTL(_this.props.theme);\n            if (_this._rootElement.current) {\n                var clientRect = _this._rootElement.current.getBoundingClientRect();\n                var headerOriginX = clientRect.left;\n                var eventXRelativePosition = clientX - headerOriginX;\n                var currentDropHintIndex = _this._currentDropHintIndex;\n                if (_this._isValidCurrentDropHintIndex()) {\n                    if (_liesBetween(isRtl, eventXRelativePosition, _this._dropHintDetails[currentDropHintIndex].startX, _this._dropHintDetails[currentDropHintIndex].endX)) {\n                        return;\n                    }\n                }\n                var _a = _this.props.columns, columns = _a === void 0 ? NO_COLUMNS : _a;\n                // Safe to assume this is defined since we're handling a drag/drop event\n                var columnReorderProps = _this._getColumnReorderProps();\n                var frozenColumnCountFromStart = columnReorderProps.frozenColumnCountFromStart || 0;\n                var frozenColumnCountFromEnd = columnReorderProps.frozenColumnCountFromEnd || 0;\n                var currentIndex = frozenColumnCountFromStart;\n                var lastValidColumn = columns.length - frozenColumnCountFromEnd;\n                var indexToUpdate = -1;\n                if (_isBefore(isRtl, eventXRelativePosition, _this._dropHintDetails[currentIndex].endX)) {\n                    indexToUpdate = currentIndex;\n                }\n                else if (_isAfter(isRtl, eventXRelativePosition, _this._dropHintDetails[lastValidColumn].startX)) {\n                    indexToUpdate = lastValidColumn;\n                }\n                else if (_this._isValidCurrentDropHintIndex()) {\n                    if (_this._dropHintDetails[currentDropHintIndex + 1] &&\n                        _liesBetween(isRtl, eventXRelativePosition, _this._dropHintDetails[currentDropHintIndex + 1].startX, _this._dropHintDetails[currentDropHintIndex + 1].endX)) {\n                        indexToUpdate = currentDropHintIndex + 1;\n                    }\n                    else if (_this._dropHintDetails[currentDropHintIndex - 1] &&\n                        _liesBetween(isRtl, eventXRelativePosition, _this._dropHintDetails[currentDropHintIndex - 1].startX, _this._dropHintDetails[currentDropHintIndex - 1].endX)) {\n                        indexToUpdate = currentDropHintIndex - 1;\n                    }\n                }\n                if (indexToUpdate === -1) {\n                    var startIndex = frozenColumnCountFromStart;\n                    var endIndex = lastValidColumn;\n                    while (startIndex < endIndex) {\n                        var middleIndex = Math.ceil((endIndex + startIndex) / 2);\n                        if (_liesBetween(isRtl, eventXRelativePosition, _this._dropHintDetails[middleIndex].startX, _this._dropHintDetails[middleIndex].endX)) {\n                            indexToUpdate = middleIndex;\n                            break;\n                        }\n                        else if (_isBefore(isRtl, eventXRelativePosition, _this._dropHintDetails[middleIndex].originX)) {\n                            endIndex = middleIndex;\n                        }\n                        else if (_isAfter(isRtl, eventXRelativePosition, _this._dropHintDetails[middleIndex].originX)) {\n                            startIndex = middleIndex;\n                        }\n                    }\n                }\n                if (indexToUpdate === _this._draggedColumnIndex || indexToUpdate === _this._draggedColumnIndex + 1) {\n                    if (_this._isValidCurrentDropHintIndex()) {\n                        _this._resetDropHints();\n                    }\n                }\n                else if (currentDropHintIndex !== indexToUpdate && indexToUpdate >= 0) {\n                    _this._resetDropHints();\n                    _this._updateDropHintElement(_this._dropHintDetails[indexToUpdate].dropHintElementRef, 'inline-block');\n                    _this._currentDropHintIndex = indexToUpdate;\n                }\n            }\n        };\n        _this._renderColumnSizer = function (_a) {\n            var _b;\n            var columnIndex = _a.columnIndex;\n            var _c = _this.props.columns, columns = _c === void 0 ? NO_COLUMNS : _c;\n            var column = columns[columnIndex];\n            var columnResizeDetails = _this.state.columnResizeDetails;\n            var classNames = _this._classNames;\n            return column.isResizable ? (React.createElement(\"div\", { key: \"\".concat(column.key, \"_sizer\"), \"aria-hidden\": true, role: \"button\", \"data-is-focusable\": false, onClick: _stopPropagation, \"data-sizer-index\": columnIndex, onBlur: _this._onSizerBlur, className: css(classNames.cellSizer, columnIndex < columns.length - 1 ? classNames.cellSizerStart : classNames.cellSizerEnd, (_b = {},\n                    _b[classNames.cellIsResizing] = columnResizeDetails && columnResizeDetails.columnIndex === columnIndex,\n                    _b)), onDoubleClick: _this._onSizerDoubleClick.bind(_this, columnIndex) })) : null;\n        };\n        _this._onRenderColumnHeaderTooltip = function (tooltipHostProps) {\n            return React.createElement(\"span\", { className: tooltipHostProps.hostClassName }, tooltipHostProps.children);\n        };\n        /**\n         * Called when the select all toggle is clicked.\n         */\n        _this._onSelectAllClicked = function () {\n            var selection = _this.props.selection;\n            if (selection) {\n                selection.toggleAllSelected();\n            }\n        };\n        _this._onRootMouseDown = function (ev) {\n            var columnIndexAttr = ev.target.getAttribute('data-sizer-index');\n            var columnIndex = Number(columnIndexAttr);\n            var _a = _this.props.columns, columns = _a === void 0 ? NO_COLUMNS : _a;\n            if (columnIndexAttr === null || ev.button !== MOUSEDOWN_PRIMARY_BUTTON) {\n                // Ignore anything except the primary button.\n                return;\n            }\n            _this.setState({\n                columnResizeDetails: {\n                    columnIndex: columnIndex,\n                    columnMinWidth: columns[columnIndex].calculatedWidth,\n                    originX: ev.clientX,\n                },\n            });\n            ev.preventDefault();\n            ev.stopPropagation();\n        };\n        _this._onRootMouseMove = function (ev) {\n            var _a = _this.state, columnResizeDetails = _a.columnResizeDetails, isSizing = _a.isSizing;\n            if (columnResizeDetails && !isSizing && ev.clientX !== columnResizeDetails.originX) {\n                _this.setState({ isSizing: true });\n            }\n        };\n        _this._onRootKeyDown = function (ev) {\n            var _a = _this.state, columnResizeDetails = _a.columnResizeDetails, isSizing = _a.isSizing;\n            var _b = _this.props, _c = _b.columns, columns = _c === void 0 ? NO_COLUMNS : _c, onColumnResized = _b.onColumnResized;\n            var columnIndexAttr = ev.target.getAttribute('data-sizer-index');\n            if (!columnIndexAttr || isSizing) {\n                return;\n            }\n            var columnIndex = Number(columnIndexAttr);\n            if (!columnResizeDetails) {\n                // eslint-disable-next-line @typescript-eslint/no-deprecated\n                if (ev.which === KeyCodes.enter) {\n                    _this.setState({\n                        columnResizeDetails: {\n                            columnIndex: columnIndex,\n                            columnMinWidth: columns[columnIndex].calculatedWidth,\n                        },\n                    });\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                }\n            }\n            else {\n                var increment = void 0;\n                // eslint-disable-next-line @typescript-eslint/no-deprecated\n                if (ev.which === KeyCodes.enter) {\n                    _this.setState({\n                        columnResizeDetails: undefined,\n                    });\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                    // eslint-disable-next-line @typescript-eslint/no-deprecated\n                }\n                else if (ev.which === KeyCodes.left) {\n                    increment = getRTL(_this.props.theme) ? 1 : -1;\n                    // eslint-disable-next-line @typescript-eslint/no-deprecated\n                }\n                else if (ev.which === KeyCodes.right) {\n                    increment = getRTL(_this.props.theme) ? -1 : 1;\n                }\n                if (increment) {\n                    if (!ev.shiftKey) {\n                        increment *= 10;\n                    }\n                    _this.setState({\n                        columnResizeDetails: __assign(__assign({}, columnResizeDetails), { columnMinWidth: columnResizeDetails.columnMinWidth + increment }),\n                    });\n                    if (onColumnResized) {\n                        onColumnResized(columns[columnIndex], columnResizeDetails.columnMinWidth + increment, columnIndex);\n                    }\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                }\n            }\n        };\n        /**\n         * mouse move event handler in the header\n         * it will set isSizing state to true when user clicked on the sizer and move the mouse.\n         *\n         * @param ev - mouse move event\n         */\n        _this._onSizerMouseMove = function (ev) {\n            var \n            // use buttons property here since ev.button in some edge case is not upding well during the move.\n            // but firefox doesn't support it, so we set the default value when it is not defined.\n            buttons = ev.buttons;\n            var _a = _this.props, onColumnIsSizingChanged = _a.onColumnIsSizingChanged, onColumnResized = _a.onColumnResized, _b = _a.columns, columns = _b === void 0 ? NO_COLUMNS : _b;\n            var columnResizeDetails = _this.state.columnResizeDetails;\n            if (buttons !== undefined && buttons !== MOUSEMOVE_PRIMARY_BUTTON) {\n                // cancel mouse down event and return early when the primary button is not pressed\n                _this._onSizerMouseUp(ev);\n                return;\n            }\n            if (ev.clientX !== columnResizeDetails.originX) {\n                if (onColumnIsSizingChanged) {\n                    onColumnIsSizingChanged(columns[columnResizeDetails.columnIndex], true);\n                }\n            }\n            if (onColumnResized) {\n                var movement = ev.clientX - columnResizeDetails.originX;\n                if (getRTL(_this.props.theme)) {\n                    movement = -movement;\n                }\n                onColumnResized(columns[columnResizeDetails.columnIndex], columnResizeDetails.columnMinWidth + movement, columnResizeDetails.columnIndex);\n            }\n        };\n        _this._onSizerBlur = function (ev) {\n            var columnResizeDetails = _this.state.columnResizeDetails;\n            if (columnResizeDetails) {\n                _this.setState({\n                    columnResizeDetails: undefined,\n                    isSizing: false,\n                });\n            }\n        };\n        /**\n         * mouse up event handler in the header\n         * clear the resize related state.\n         * This is to ensure we can catch double click event\n         *\n         * @param ev - mouse up event\n         */\n        _this._onSizerMouseUp = function (ev) {\n            var _a = _this.props, _b = _a.columns, columns = _b === void 0 ? NO_COLUMNS : _b, onColumnIsSizingChanged = _a.onColumnIsSizingChanged;\n            var columnResizeDetails = _this.state.columnResizeDetails;\n            _this.setState({\n                columnResizeDetails: undefined,\n                isSizing: false,\n            });\n            if (onColumnIsSizingChanged) {\n                onColumnIsSizingChanged(columns[columnResizeDetails.columnIndex], false);\n            }\n        };\n        _this._onToggleCollapseAll = function () {\n            var onToggleCollapseAll = _this.props.onToggleCollapseAll;\n            var newCollapsed = !_this.state.isAllCollapsed;\n            _this.setState({\n                isAllCollapsed: newCollapsed,\n            });\n            if (onToggleCollapseAll) {\n                onToggleCollapseAll(newCollapsed);\n            }\n        };\n        initializeComponentRef(_this);\n        _this._events = new EventGroup(_this);\n        _this.state = {\n            columnResizeDetails: undefined,\n            isAllCollapsed: _this.props.isAllCollapsed,\n            isAllSelected: !!_this.props.selection && _this.props.selection.isAllSelected(),\n        };\n        _this._onDropIndexInfo = {\n            sourceIndex: -1,\n            targetIndex: -1,\n        };\n        _this._id = getId('header');\n        _this._currentDropHintIndex = -1;\n        // The drag drop handler won't do any work until subscribe() is called,\n        // so always set it up for convenience\n        _this._dragDropHelper = new DragDropHelper({\n            selection: {\n                getSelection: function () {\n                    return;\n                },\n            },\n            minimumPixelsForDrag: _this.props.minimumPixelsForDrag,\n        });\n        return _this;\n    }\n    DetailsHeaderBase.prototype.componentDidMount = function () {\n        var selection = this.props.selection;\n        this._events.on(selection, SELECTION_CHANGE, this._onSelectionChanged);\n        // this._rootElement.current will be null in tests using react-test-renderer\n        if (this._rootElement.current) {\n            // We need to use native on this to prevent MarqueeSelection from handling the event before us.\n            this._events.on(this._rootElement.current, 'mousedown', this._onRootMouseDown);\n            this._events.on(this._rootElement.current, 'keydown', this._onRootKeyDown);\n            if (this._getColumnReorderProps()) {\n                this._subscriptionObject = this._dragDropHelper.subscribe(this._rootElement.current, this._events, this._getHeaderDragDropOptions());\n            }\n        }\n    };\n    DetailsHeaderBase.prototype.componentDidUpdate = function (prevProps) {\n        if (this._getColumnReorderProps()) {\n            if (!this._subscriptionObject && this._rootElement.current) {\n                this._subscriptionObject = this._dragDropHelper.subscribe(this._rootElement.current, this._events, this._getHeaderDragDropOptions());\n            }\n        }\n        else if (this._subscriptionObject) {\n            this._subscriptionObject.dispose();\n            delete this._subscriptionObject;\n        }\n        if (this.props !== prevProps && this._onDropIndexInfo.sourceIndex >= 0 && this._onDropIndexInfo.targetIndex >= 0) {\n            var _a = prevProps.columns, previousColumns = _a === void 0 ? NO_COLUMNS : _a;\n            var _b = this.props.columns, columns = _b === void 0 ? NO_COLUMNS : _b;\n            if (previousColumns[this._onDropIndexInfo.sourceIndex].key === columns[this._onDropIndexInfo.targetIndex].key) {\n                this._onDropIndexInfo = {\n                    sourceIndex: -1,\n                    targetIndex: -1,\n                };\n            }\n        }\n        if (this.props.isAllCollapsed !== prevProps.isAllCollapsed) {\n            this.setState({ isAllCollapsed: this.props.isAllCollapsed });\n        }\n    };\n    DetailsHeaderBase.prototype.componentWillUnmount = function () {\n        if (this._subscriptionObject) {\n            this._subscriptionObject.dispose();\n            delete this._subscriptionObject;\n        }\n        this._dragDropHelper.dispose();\n        this._events.dispose();\n    };\n    DetailsHeaderBase.prototype.render = function () {\n        var _this = this;\n        var _a = this.props, _b = _a.columns, columns = _b === void 0 ? NO_COLUMNS : _b, ariaLabel = _a.ariaLabel, ariaLabelForToggleAllGroupsButton = _a.ariaLabelForToggleAllGroupsButton, ariaLabelForSelectAllCheckbox = _a.ariaLabelForSelectAllCheckbox, selectAllVisibility = _a.selectAllVisibility, ariaLabelForSelectionColumn = _a.ariaLabelForSelectionColumn, indentWidth = _a.indentWidth, onColumnClick = _a.onColumnClick, onColumnContextMenu = _a.onColumnContextMenu, _c = _a.onRenderColumnHeaderTooltip, onRenderColumnHeaderTooltip = _c === void 0 ? this._onRenderColumnHeaderTooltip : _c, styles = _a.styles, selectionMode = _a.selectionMode, theme = _a.theme, onRenderDetailsCheckbox = _a.onRenderDetailsCheckbox, groupNestingDepth = _a.groupNestingDepth, useFastIcons = _a.useFastIcons, checkboxVisibility = _a.checkboxVisibility, className = _a.className;\n        var _d = this.state, isAllSelected = _d.isAllSelected, columnResizeDetails = _d.columnResizeDetails, isSizing = _d.isSizing, isAllCollapsed = _d.isAllCollapsed;\n        var showCheckbox = selectAllVisibility !== SelectAllVisibility.none;\n        var isCheckboxHidden = selectAllVisibility === SelectAllVisibility.hidden;\n        var isCheckboxAlwaysVisible = checkboxVisibility === CheckboxVisibility.always;\n        var columnReorderProps = this._getColumnReorderProps();\n        var frozenColumnCountFromStart = columnReorderProps && columnReorderProps.frozenColumnCountFromStart\n            ? columnReorderProps.frozenColumnCountFromStart\n            : 0;\n        var frozenColumnCountFromEnd = columnReorderProps && columnReorderProps.frozenColumnCountFromEnd\n            ? columnReorderProps.frozenColumnCountFromEnd\n            : 0;\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            isAllSelected: isAllSelected,\n            isSelectAllHidden: selectAllVisibility === SelectAllVisibility.hidden,\n            isResizingColumn: !!columnResizeDetails && isSizing,\n            isSizing: isSizing,\n            isAllCollapsed: isAllCollapsed,\n            isCheckboxHidden: isCheckboxHidden,\n            className: className,\n        });\n        var classNames = this._classNames;\n        var IconComponent = useFastIcons ? FontIcon : Icon;\n        var hasGroupExpander = groupNestingDepth > 0;\n        var showGroupExpander = hasGroupExpander && this.props.collapseAllVisibility === CollapseAllVisibility.visible;\n        var columnIndexOffset = this._computeColumnIndexOffset(showCheckbox);\n        var isRTL = getRTL(theme);\n        return (React.createElement(FocusZone, { role: \"row\", \"aria-label\": ariaLabel, className: classNames.root, componentRef: this._rootComponent, elementRef: this._rootElement, onMouseMove: this._onRootMouseMove, \"data-automationid\": \"DetailsHeader\", direction: FocusZoneDirection.horizontal },\n            showCheckbox\n                ? [\n                    React.createElement(\"div\", { key: \"__checkbox\", className: classNames.cellIsCheck, \"aria-labelledby\": \"\".concat(this._id, \"-checkTooltip\"), onClick: !isCheckboxHidden ? this._onSelectAllClicked : undefined, role: 'columnheader' }, onRenderColumnHeaderTooltip({\n                        hostClassName: classNames.checkTooltip,\n                        id: \"\".concat(this._id, \"-checkTooltip\"),\n                        setAriaDescribedBy: false,\n                        content: ariaLabelForSelectAllCheckbox,\n                        children: (React.createElement(DetailsRowCheck, { id: \"\".concat(this._id, \"-check\"), \"aria-label\": selectionMode === SelectionMode.multiple\n                                ? ariaLabelForSelectAllCheckbox\n                                : ariaLabelForSelectionColumn, \"data-is-focusable\": !isCheckboxHidden || undefined, isHeader: true, selected: isAllSelected, anySelected: false, canSelect: !isCheckboxHidden, className: classNames.check, onRenderDetailsCheckbox: onRenderDetailsCheckbox, useFastIcons: useFastIcons, isVisible: isCheckboxAlwaysVisible })),\n                    }, this._onRenderColumnHeaderTooltip)),\n                    !this.props.onRenderColumnHeaderTooltip ? (ariaLabelForSelectAllCheckbox && !isCheckboxHidden ? (React.createElement(\"label\", { key: \"__checkboxLabel\", id: \"\".concat(this._id, \"-checkTooltip\"), className: classNames.accessibleLabel, \"aria-hidden\": true }, ariaLabelForSelectAllCheckbox)) : ariaLabelForSelectionColumn && isCheckboxHidden ? (React.createElement(\"label\", { key: \"__checkboxLabel\", id: \"\".concat(this._id, \"-checkTooltip\"), className: classNames.accessibleLabel, \"aria-hidden\": true }, ariaLabelForSelectionColumn)) : null) : null,\n                ]\n                : null,\n            showGroupExpander ? (React.createElement(\"div\", { className: classNames.cellIsGroupExpander, onClick: this._onToggleCollapseAll, \"data-is-focusable\": true, \"aria-label\": ariaLabelForToggleAllGroupsButton, \"aria-expanded\": !isAllCollapsed, role: \"columnheader\" },\n                React.createElement(IconComponent, { className: classNames.collapseButton, iconName: isRTL ? 'ChevronLeftMed' : 'ChevronRightMed' }),\n                React.createElement(\"span\", { className: classNames.accessibleLabel }, ariaLabelForToggleAllGroupsButton))) : hasGroupExpander ? (React.createElement(\"div\", { className: classNames.cellIsGroupExpander, \"data-is-focusable\": false, role: \"columnheader\" })) : null,\n            React.createElement(GroupSpacer, { indentWidth: indentWidth, role: \"gridcell\", count: groupNestingDepth - 1 }),\n            columns.map(function (column, columnIndex) {\n                var _isDraggable = columnReorderProps\n                    ? columnIndex >= frozenColumnCountFromStart && columnIndex < columns.length - frozenColumnCountFromEnd\n                    : false;\n                return [\n                    columnReorderProps &&\n                        (_isDraggable || columnIndex === columns.length - frozenColumnCountFromEnd) &&\n                        _this._renderDropHint(columnIndex),\n                    React.createElement(DetailsColumn, { column: column, styles: column.styles, key: column.key, columnIndex: columnIndexOffset + columnIndex, parentId: _this._id, isDraggable: _isDraggable, updateDragInfo: _this._updateDragInfo, dragDropHelper: _this._dragDropHelper, onColumnClick: onColumnClick, onColumnContextMenu: onColumnContextMenu, \n                        // Do not render tooltips by default, but allow for override via props.\n                        onRenderColumnHeaderTooltip: _this.props.onRenderColumnHeaderTooltip, isDropped: _this._onDropIndexInfo.targetIndex === columnIndex, cellStyleProps: _this.props.cellStyleProps, useFastIcons: useFastIcons }),\n                    _this._renderColumnDivider(columnIndex),\n                ];\n            }),\n            columnReorderProps && frozenColumnCountFromEnd === 0 && this._renderDropHint(columns.length),\n            isSizing && (React.createElement(Layer, null,\n                React.createElement(\"div\", { className: classNames.sizingOverlay, onMouseMove: this._onSizerMouseMove, onMouseUp: this._onSizerMouseUp })))));\n    };\n    /** Set focus to the active thing in the focus area. */\n    DetailsHeaderBase.prototype.focus = function () {\n        var _a;\n        return !!((_a = this._rootComponent.current) === null || _a === void 0 ? void 0 : _a.focus());\n    };\n    /**\n     * Gets column reorder props from this.props. If the calling code is part of setting up or\n     * handling drag/drop events, it's safe to assume that this method's return value is defined\n     * (because drag/drop handling will only be set up if reorder props are given).\n     */\n    DetailsHeaderBase.prototype._getColumnReorderProps = function () {\n        var _a = this.props, columnReorderOptions = _a.columnReorderOptions, columnReorderProps = _a.columnReorderProps;\n        return columnReorderProps || (columnReorderOptions && __assign(__assign({}, columnReorderOptions), { onColumnDragEnd: undefined }));\n    };\n    DetailsHeaderBase.prototype._getHeaderDragDropOptions = function () {\n        var options = {\n            selectionIndex: 1,\n            context: { data: this, index: 0 },\n            canDrag: function () { return false; },\n            canDrop: function () { return true; },\n            onDragStart: function () { return undefined; },\n            updateDropState: this._updateDroppingState,\n            onDrop: this._onDrop,\n            onDragEnd: function () { return undefined; },\n            onDragOver: this._onDragOver,\n        };\n        return options;\n    };\n    DetailsHeaderBase.prototype._isValidCurrentDropHintIndex = function () {\n        return this._currentDropHintIndex >= 0;\n    };\n    /**\n     * @returns whether or not the \"Select All\" checkbox column is hidden.\n     */\n    DetailsHeaderBase.prototype._isCheckboxColumnHidden = function () {\n        var _a = this.props, selectionMode = _a.selectionMode, checkboxVisibility = _a.checkboxVisibility;\n        return selectionMode === SelectionMode.none || checkboxVisibility === CheckboxVisibility.hidden;\n    };\n    DetailsHeaderBase.prototype._resetDropHints = function () {\n        if (this._currentDropHintIndex >= 0) {\n            this._updateDropHintElement(this._dropHintDetails[this._currentDropHintIndex].dropHintElementRef, 'none');\n            this._currentDropHintIndex = -1;\n        }\n    };\n    DetailsHeaderBase.prototype._updateDropHintElement = function (element, displayProperty) {\n        element.childNodes[1].style.display = displayProperty;\n        element.childNodes[0].style.display = displayProperty;\n    };\n    DetailsHeaderBase.prototype._isEventOnHeader = function (event) {\n        if (this._rootElement.current) {\n            var clientRect = this._rootElement.current.getBoundingClientRect();\n            if (event.clientX > clientRect.left &&\n                event.clientX < clientRect.right &&\n                event.clientY > clientRect.top &&\n                event.clientY < clientRect.bottom) {\n                return ColumnDragEndLocation.header;\n            }\n        }\n    };\n    DetailsHeaderBase.prototype._renderColumnDivider = function (columnIndex) {\n        var _a = this.props.columns, columns = _a === void 0 ? NO_COLUMNS : _a;\n        var column = columns[columnIndex];\n        var onRenderDivider = column.onRenderDivider;\n        return onRenderDivider\n            ? onRenderDivider({ column: column, columnIndex: columnIndex }, this._renderColumnSizer)\n            : this._renderColumnSizer({ column: column, columnIndex: columnIndex });\n    };\n    DetailsHeaderBase.prototype._renderDropHint = function (dropHintIndex) {\n        var classNames = this._classNames;\n        var IconComponent = this.props.useFastIcons ? FontIcon : Icon;\n        return (React.createElement(\"div\", { key: 'dropHintKey', className: classNames.dropHintStyle, id: \"columnDropHint_\".concat(dropHintIndex), \"aria-hidden\": true },\n            React.createElement(\"div\", { role: \"presentation\", key: \"dropHintCircleKey\", className: classNames.dropHintCaretStyle, \"data-is-focusable\": false, \"data-sizer-index\": dropHintIndex, \"aria-hidden\": true },\n                React.createElement(IconComponent, { iconName: 'CircleShapeSolid' })),\n            React.createElement(\"div\", { key: \"dropHintLineKey\", \"aria-hidden\": true, \"data-is-focusable\": false, \"data-sizer-index\": dropHintIndex, className: classNames.dropHintLineStyle })));\n    };\n    /**\n     * double click on the column sizer will auto ajust column width\n     * to fit the longest content among current rendered rows.\n     *\n     * @param columnIndex - index of the column user double clicked\n     * @param ev - mouse double click event\n     */\n    DetailsHeaderBase.prototype._onSizerDoubleClick = function (columnIndex, ev) {\n        var _a = this.props, onColumnAutoResized = _a.onColumnAutoResized, _b = _a.columns, columns = _b === void 0 ? NO_COLUMNS : _b;\n        if (onColumnAutoResized) {\n            onColumnAutoResized(columns[columnIndex], columnIndex);\n        }\n    };\n    DetailsHeaderBase.prototype._onSelectionChanged = function () {\n        var isAllSelected = !!this.props.selection && this.props.selection.isAllSelected();\n        if (this.state.isAllSelected !== isAllSelected) {\n            this.setState({\n                isAllSelected: isAllSelected,\n            });\n        }\n    };\n    DetailsHeaderBase.defaultProps = {\n        selectAllVisibility: SelectAllVisibility.visible,\n        collapseAllVisibility: CollapseAllVisibility.visible,\n        useFastIcons: true,\n    };\n    return DetailsHeaderBase;\n}(React.Component));\nexport { DetailsHeaderBase };\nfunction _liesBetween(rtl, target, left, right) {\n    return rtl ? target <= left && target >= right : target >= left && target <= right;\n}\nfunction _isBefore(rtl, a, b) {\n    return rtl ? a >= b : a <= b;\n}\nfunction _isAfter(rtl, a, b) {\n    return rtl ? a <= b : a >= b;\n}\nfunction _stopPropagation(ev) {\n    ev.stopPropagation();\n}\n//# sourceMappingURL=DetailsHeader.base.js.map","import { styled } from '../../Utilities';\nimport { DetailsHeaderBase } from './DetailsHeader.base';\nimport { getDetailsHeaderStyles } from './DetailsHeader.styles';\nexport var DetailsHeader = styled(DetailsHeaderBase, getDetailsHeaderStyles, undefined, { scope: 'DetailsHeader' });\n//# sourceMappingURL=DetailsHeader.js.map","import * as React from 'react';\nimport { composeRenderFunction, css } from '../../Utilities';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nvar getCellText = function (item, column) {\n    var value = item && column && column.fieldName ? item[column.fieldName] : '';\n    if (value === null || value === undefined) {\n        value = '';\n    }\n    if (typeof value === 'boolean') {\n        return value.toString();\n    }\n    return value;\n};\n/**\n * Component for rendering a row's cells in a `DetailsList`.\n *\n * {@docCategory DetailsList}\n */\nexport var DetailsRowFields = function (props) {\n    var columns = props.columns, rowClassNames = props.rowClassNames, _a = props.cellStyleProps, cellStyleProps = _a === void 0 ? DEFAULT_CELL_STYLE_PROPS : _a, item = props.item, itemIndex = props.itemIndex, isSelected = props.isSelected, onRenderItemColumn = props.onRenderItemColumn, getCellValueKey = props.getCellValueKey, propsOnRenderField = props.onRenderField, cellsByColumn = props.cellsByColumn, enableUpdateAnimations = props.enableUpdateAnimations, rowHeaderId = props.rowHeaderId;\n    var cellValueKeysRef = React.useRef();\n    var cellValueKeys = cellValueKeysRef.current || (cellValueKeysRef.current = {});\n    var defaultOnRenderField = React.useCallback(function (fieldProps) {\n        var column = fieldProps.column, cellValueKey = fieldProps.cellValueKey, className = fieldProps.className, onRender = fieldProps.onRender, fieldItem = fieldProps.item, fieldItemIndex = fieldProps.itemIndex;\n        var width = typeof column.calculatedWidth === 'undefined'\n            ? 'auto'\n            : column.calculatedWidth +\n                cellStyleProps.cellLeftPadding +\n                cellStyleProps.cellRightPadding +\n                (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0);\n        var key = \"\".concat(column.key).concat(cellValueKey !== undefined ? \"-\".concat(cellValueKey) : '');\n        return (React.createElement(\"div\", { key: key, id: column.isRowHeader ? rowHeaderId : undefined, role: column.isRowHeader ? 'rowheader' : 'gridcell', className: css(column.className, column.isMultiline && rowClassNames.isMultiline, column.isRowHeader && rowClassNames.isRowHeader, rowClassNames.cell, column.isPadded ? rowClassNames.cellPadded : rowClassNames.cellUnpadded, className), style: { width: width }, \"data-automationid\": \"DetailsRowCell\", \"data-automation-key\": column.key }, onRender(fieldItem, fieldItemIndex, column)));\n    }, [rowClassNames, cellStyleProps, rowHeaderId]);\n    return (React.createElement(\"div\", { className: rowClassNames.fields, \"data-automationid\": \"DetailsRowFields\", role: \"presentation\" }, columns.map(function (column) {\n        var _a = column.getValueKey, getValueKey = _a === void 0 ? getCellValueKey : _a;\n        var onRender = (cellsByColumn && column.key in cellsByColumn && (function () { return cellsByColumn[column.key]; })) ||\n            column.onRender ||\n            onRenderItemColumn ||\n            defaultOnRender;\n        var onRenderField = defaultOnRenderField;\n        if (column.onRenderField) {\n            onRenderField = composeRenderFunction(column.onRenderField, onRenderField);\n        }\n        if (propsOnRenderField) {\n            onRenderField = composeRenderFunction(propsOnRenderField, onRenderField);\n        }\n        var previousValueKey = cellValueKeys[column.key];\n        var cellValueKey = enableUpdateAnimations && getValueKey ? getValueKey(item, itemIndex, column) : undefined;\n        var showAnimation = false;\n        if (cellValueKey !== undefined && previousValueKey !== undefined && cellValueKey !== previousValueKey) {\n            showAnimation = true;\n        }\n        cellValueKeys[column.key] = cellValueKey;\n        return onRenderField({\n            item: item,\n            itemIndex: itemIndex,\n            isSelected: isSelected,\n            column: column,\n            cellValueKey: cellValueKey,\n            className: showAnimation ? rowClassNames.cellAnimation : undefined,\n            onRender: onRender,\n        });\n    })));\n};\nfunction defaultOnRender(item, index, column) {\n    if (!item || !column) {\n        return null;\n    }\n    return getCellText(item, column);\n}\n//# sourceMappingURL=DetailsRowFields.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { initializeComponentRef, EventGroup, css, shallowCompare, getNativeProps, divProperties, composeComponentAs, } from '../../Utilities';\nimport { CheckboxVisibility } from './DetailsList.types';\nimport { DetailsRowCheck } from './DetailsRowCheck';\nimport { GroupSpacer } from '../GroupedList/GroupSpacer';\nimport { DetailsRowFields } from './DetailsRowFields';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { SelectionMode, SELECTION_CHANGE } from '../../Selection';\nimport { classNamesFunction } from '../../Utilities';\nimport { getId } from '../../Utilities';\nvar getClassNames = classNamesFunction();\nvar DEFAULT_DROPPING_CSS_CLASS = 'is-dropping';\nvar NO_COLUMNS = [];\nvar DetailsRowBase = /** @class */ (function (_super) {\n    __extends(DetailsRowBase, _super);\n    function DetailsRowBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._root = React.createRef();\n        _this._cellMeasurer = React.createRef();\n        _this._focusZone = React.createRef();\n        _this._onSelectionChanged = function () {\n            var selectionState = getSelectionState(_this.props);\n            if (!shallowCompare(selectionState, _this.state.selectionState)) {\n                _this.setState({ selectionState: selectionState });\n            }\n        };\n        /**\n         * update isDropping state based on the input value, which is used to change style during drag and drop\n         *\n         * when change to true, that means drag enter. we will add default dropping class name\n         * or the custom dropping class name (return result from onDragEnter) to the root elemet.\n         *\n         * when change to false, that means drag leave. we will remove the dropping class name from root element.\n         *\n         * @param newValue - New isDropping state value\n         * @param event - The event trigger dropping state change which can be dragenter, dragleave etc\n         */\n        _this._updateDroppingState = function (newValue, event) {\n            var isDropping = _this.state.isDropping;\n            var _a = _this.props, dragDropEvents = _a.dragDropEvents, item = _a.item;\n            if (!newValue) {\n                if (dragDropEvents.onDragLeave) {\n                    dragDropEvents.onDragLeave(item, event);\n                }\n            }\n            else if (dragDropEvents.onDragEnter) {\n                _this._droppingClassNames = dragDropEvents.onDragEnter(item, event);\n            }\n            if (isDropping !== newValue) {\n                _this.setState({ isDropping: newValue });\n            }\n        };\n        initializeComponentRef(_this);\n        _this._events = new EventGroup(_this);\n        _this.state = {\n            selectionState: getSelectionState(props),\n            columnMeasureInfo: undefined,\n            isDropping: false,\n        };\n        _this._droppingClassNames = '';\n        return _this;\n    }\n    DetailsRowBase.getDerivedStateFromProps = function (nextProps, previousState) {\n        return __assign(__assign({}, previousState), { selectionState: getSelectionState(nextProps) });\n    };\n    DetailsRowBase.prototype.componentDidMount = function () {\n        var _a = this.props, dragDropHelper = _a.dragDropHelper, selection = _a.selection, item = _a.item, onDidMount = _a.onDidMount;\n        if (dragDropHelper && this._root.current) {\n            this._dragDropSubscription = dragDropHelper.subscribe(this._root.current, this._events, this._getRowDragDropOptions());\n        }\n        if (selection) {\n            this._events.on(selection, SELECTION_CHANGE, this._onSelectionChanged);\n        }\n        if (onDidMount && item) {\n            // If the item appears later, we should wait for it before calling this method.\n            this._onDidMountCalled = true;\n            onDidMount(this);\n        }\n    };\n    DetailsRowBase.prototype.componentDidUpdate = function (previousProps) {\n        var state = this.state;\n        var _a = this.props, item = _a.item, onDidMount = _a.onDidMount;\n        var columnMeasureInfo = state.columnMeasureInfo;\n        if (this.props.itemIndex !== previousProps.itemIndex ||\n            this.props.item !== previousProps.item ||\n            this.props.dragDropHelper !== previousProps.dragDropHelper) {\n            if (this._dragDropSubscription) {\n                this._dragDropSubscription.dispose();\n                delete this._dragDropSubscription;\n            }\n            if (this.props.dragDropHelper && this._root.current) {\n                this._dragDropSubscription = this.props.dragDropHelper.subscribe(this._root.current, this._events, this._getRowDragDropOptions());\n            }\n        }\n        if (columnMeasureInfo && columnMeasureInfo.index >= 0 && this._cellMeasurer.current) {\n            var newWidth = this._cellMeasurer.current.getBoundingClientRect().width;\n            columnMeasureInfo.onMeasureDone(newWidth);\n            this.setState({\n                columnMeasureInfo: undefined,\n            });\n        }\n        if (item && onDidMount && !this._onDidMountCalled) {\n            this._onDidMountCalled = true;\n            onDidMount(this);\n        }\n    };\n    DetailsRowBase.prototype.componentWillUnmount = function () {\n        var _a = this.props, item = _a.item, onWillUnmount = _a.onWillUnmount;\n        // Only call the onWillUnmount callback if we have an item.\n        if (onWillUnmount && item) {\n            onWillUnmount(this);\n        }\n        if (this._dragDropSubscription) {\n            this._dragDropSubscription.dispose();\n            delete this._dragDropSubscription;\n        }\n        this._events.dispose();\n    };\n    DetailsRowBase.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n        if (this.props.useReducedRowRenderer) {\n            var newSelectionState = getSelectionState(nextProps);\n            if (this.state.selectionState.isSelected !== newSelectionState.isSelected) {\n                return true;\n            }\n            return !shallowCompare(this.props, nextProps);\n        }\n        else {\n            return true;\n        }\n    };\n    DetailsRowBase.prototype.render = function () {\n        var _a;\n        var _b = this.props, className = _b.className, _c = _b.columns, columns = _c === void 0 ? NO_COLUMNS : _c, dragDropEvents = _b.dragDropEvents, item = _b.item, itemIndex = _b.itemIndex, id = _b.id, _d = _b.flatIndexOffset, flatIndexOffset = _d === void 0 ? 2 : _d, _e = _b.onRenderCheck, onRenderCheck = _e === void 0 ? this._onRenderCheck : _e, onRenderDetailsCheckbox = _b.onRenderDetailsCheckbox, onRenderItemColumn = _b.onRenderItemColumn, onRenderField = _b.onRenderField, getCellValueKey = _b.getCellValueKey, selectionMode = _b.selectionMode, checkboxVisibility = _b.checkboxVisibility, getRowAriaLabel = _b.getRowAriaLabel, getRowAriaDescription = _b.getRowAriaDescription, getRowAriaDescribedBy = _b.getRowAriaDescribedBy, isGridRow = _b.isGridRow, checkButtonAriaLabel = _b.checkButtonAriaLabel, checkboxCellClassName = _b.checkboxCellClassName, \n        /** Alias rowFieldsAs as RowFields and default to DetailsRowFields if rowFieldsAs does not exist */\n        rowFieldsAs = _b.rowFieldsAs, selection = _b.selection, indentWidth = _b.indentWidth, enableUpdateAnimations = _b.enableUpdateAnimations, compact = _b.compact, theme = _b.theme, styles = _b.styles, cellsByColumn = _b.cellsByColumn, groupNestingDepth = _b.groupNestingDepth, _f = _b.useFastIcons, useFastIcons = _f === void 0 ? true : _f, cellStyleProps = _b.cellStyleProps, group = _b.group, focusZoneProps = _b.focusZoneProps, _g = _b.disabled, disabled = _g === void 0 ? false : _g;\n        var _h = this.state, columnMeasureInfo = _h.columnMeasureInfo, isDropping = _h.isDropping;\n        var _j = this.state.selectionState, _k = _j.isSelected, isSelected = _k === void 0 ? false : _k, _l = _j.isSelectionModal, isSelectionModal = _l === void 0 ? false : _l;\n        var isDraggable = dragDropEvents ? !!(dragDropEvents.canDrag && dragDropEvents.canDrag(item)) : undefined;\n        var droppingClassName = isDropping ? this._droppingClassNames || DEFAULT_DROPPING_CSS_CLASS : '';\n        var ariaLabel = getRowAriaLabel ? getRowAriaLabel(item) : undefined;\n        var ariaRowDescription = getRowAriaDescription ? getRowAriaDescription(item) : undefined;\n        var ariaDescribedBy = getRowAriaDescribedBy ? getRowAriaDescribedBy(item) : undefined;\n        var canSelect = !!selection && selection.canSelectItem(item, itemIndex) && !disabled;\n        var isContentUnselectable = selectionMode === SelectionMode.multiple;\n        var showCheckbox = selectionMode !== SelectionMode.none && checkboxVisibility !== CheckboxVisibility.hidden;\n        var ariaSelected = selectionMode === SelectionMode.none ? undefined : isSelected;\n        var ariaPositionInSet = group ? itemIndex - group.startIndex + 1 : undefined;\n        var ariaSetSize = group ? group.count : undefined;\n        var focusZoneDirection = focusZoneProps ? focusZoneProps.direction : FocusZoneDirection.horizontal;\n        this._classNames = __assign(__assign({}, this._classNames), getClassNames(styles, {\n            theme: theme,\n            isSelected: isSelected,\n            canSelect: !isContentUnselectable,\n            anySelected: isSelectionModal,\n            checkboxCellClassName: checkboxCellClassName,\n            droppingClassName: droppingClassName,\n            className: className,\n            compact: compact,\n            enableUpdateAnimations: enableUpdateAnimations,\n            cellStyleProps: cellStyleProps,\n            disabled: disabled,\n        }));\n        var rowClassNames = {\n            isMultiline: this._classNames.isMultiline,\n            isRowHeader: this._classNames.isRowHeader,\n            cell: this._classNames.cell,\n            cellAnimation: this._classNames.cellAnimation,\n            cellPadded: this._classNames.cellPadded,\n            cellUnpadded: this._classNames.cellUnpadded,\n            fields: this._classNames.fields,\n        };\n        // Only re-assign rowClassNames when classNames have changed.\n        // Otherwise, they will cause DetailsRowFields to unnecessarily\n        // re-render, see https://github.com/microsoft/fluentui/pull/8799.\n        // Refactor DetailsRowFields to generate own styles to remove need for this.\n        if (!shallowCompare(this._rowClassNames || {}, rowClassNames)) {\n            this._rowClassNames = rowClassNames;\n        }\n        var RowFields = rowFieldsAs ? composeComponentAs(rowFieldsAs, DetailsRowFields) : DetailsRowFields;\n        var rowFields = (React.createElement(RowFields, { rowClassNames: this._rowClassNames, rowHeaderId: \"\".concat(id, \"-header\"), cellsByColumn: cellsByColumn, columns: columns, item: item, itemIndex: itemIndex, isSelected: isSelected, columnStartIndex: (showCheckbox ? 1 : 0) + (groupNestingDepth ? 1 : 0), onRenderItemColumn: onRenderItemColumn, onRenderField: onRenderField, getCellValueKey: getCellValueKey, enableUpdateAnimations: enableUpdateAnimations, cellStyleProps: cellStyleProps }));\n        var defaultRole = 'row';\n        var role = this.props.role ? this.props.role : defaultRole;\n        this._ariaRowDescriptionId = getId('DetailsRow-description');\n        // When the user does not specify any column is a row-header in the columns props,\n        // The aria-labelledby of the checkbox does not specify {id}-header.\n        var hasRowHeader = columns.some(function (column) {\n            return !!column.isRowHeader;\n        });\n        var ariaLabelledby = \"\".concat(id, \"-checkbox\") + (hasRowHeader ? \" \".concat(id, \"-header\") : '');\n        // additional props for rows within a GroupedList\n        // these are needed for treegrid row semantics, but not grid row semantics\n        var groupedListRowProps = isGridRow\n            ? {}\n            : {\n                'aria-level': (groupNestingDepth && groupNestingDepth + 1) || undefined,\n                'aria-posinset': ariaPositionInSet,\n                'aria-setsize': ariaSetSize,\n            };\n        return (React.createElement(FocusZone, __assign({ \"data-is-focusable\": true }, getNativeProps(this.props, divProperties), (typeof isDraggable === 'boolean'\n            ? {\n                'data-is-draggable': isDraggable, // This data attribute is used by some host applications.\n                draggable: isDraggable,\n            }\n            : {}), focusZoneProps, groupedListRowProps, { direction: focusZoneDirection, elementRef: this._root, componentRef: this._focusZone, role: role, \"aria-label\": ariaLabel, \"aria-disabled\": disabled || undefined, \"aria-describedby\": ariaRowDescription ? this._ariaRowDescriptionId : ariaDescribedBy, className: this._classNames.root, \"data-selection-index\": itemIndex, \"data-selection-touch-invoke\": true, \"data-selection-disabled\": (_a = this.props['data-selection-disabled']) !== null && _a !== void 0 ? _a : (disabled || undefined), \"data-item-index\": itemIndex, \"aria-rowindex\": ariaPositionInSet === undefined ? itemIndex + flatIndexOffset : undefined, \"data-automationid\": \"DetailsRow\", \"aria-selected\": ariaSelected, allowFocusRoot: true }),\n            ariaRowDescription ? (React.createElement(\"span\", { key: \"description\", role: \"presentation\", hidden: true, id: this._ariaRowDescriptionId }, ariaRowDescription)) : null,\n            showCheckbox && (React.createElement(\"div\", { role: \"gridcell\", \"data-selection-toggle\": true, className: this._classNames.checkCell }, onRenderCheck({\n                id: id ? \"\".concat(id, \"-checkbox\") : undefined,\n                selected: isSelected,\n                selectionMode: selectionMode,\n                anySelected: isSelectionModal,\n                'aria-label': checkButtonAriaLabel,\n                'aria-labelledby': id ? ariaLabelledby : undefined,\n                canSelect: canSelect,\n                compact: compact,\n                className: this._classNames.check,\n                theme: theme,\n                isVisible: checkboxVisibility === CheckboxVisibility.always,\n                onRenderDetailsCheckbox: onRenderDetailsCheckbox,\n                useFastIcons: useFastIcons,\n            }))),\n            React.createElement(GroupSpacer, { indentWidth: indentWidth, role: \"gridcell\", count: groupNestingDepth === 0 ? -1 : groupNestingDepth }),\n            item && rowFields,\n            columnMeasureInfo && (React.createElement(\"span\", { role: \"presentation\", className: css(this._classNames.cellMeasurer, this._classNames.cell), ref: this._cellMeasurer },\n                React.createElement(RowFields, { rowClassNames: this._rowClassNames, rowHeaderId: \"\".concat(id, \"-header\"), columns: [columnMeasureInfo.column], item: item, itemIndex: itemIndex, columnStartIndex: (showCheckbox ? 1 : 0) + (groupNestingDepth ? 1 : 0) + columns.length, onRenderItemColumn: onRenderItemColumn, getCellValueKey: getCellValueKey })))));\n    };\n    /**\n     * measure cell at index. and call the call back with the measured cell width when finish measure\n     *\n     * @param index - The cell index\n     * @param onMeasureDone - The call back function when finish measure\n     */\n    DetailsRowBase.prototype.measureCell = function (index, onMeasureDone) {\n        var _a = this.props.columns, columns = _a === void 0 ? NO_COLUMNS : _a;\n        var column = __assign({}, columns[index]);\n        column.minWidth = 0;\n        column.maxWidth = 999999;\n        delete column.calculatedWidth;\n        this.setState({\n            columnMeasureInfo: {\n                index: index,\n                column: column,\n                onMeasureDone: onMeasureDone,\n            },\n        });\n    };\n    DetailsRowBase.prototype.focus = function (forceIntoFirstElement) {\n        var _a;\n        if (forceIntoFirstElement === void 0) { forceIntoFirstElement = false; }\n        return !!((_a = this._focusZone.current) === null || _a === void 0 ? void 0 : _a.focus(forceIntoFirstElement));\n    };\n    DetailsRowBase.prototype._onRenderCheck = function (props) {\n        return React.createElement(DetailsRowCheck, __assign({}, props));\n    };\n    DetailsRowBase.prototype._getRowDragDropOptions = function () {\n        var _a = this.props, item = _a.item, itemIndex = _a.itemIndex, dragDropEvents = _a.dragDropEvents, eventsToRegister = _a.eventsToRegister;\n        var options = {\n            eventMap: eventsToRegister,\n            selectionIndex: itemIndex,\n            context: { data: item, index: itemIndex },\n            canDrag: dragDropEvents.canDrag,\n            canDrop: dragDropEvents.canDrop,\n            onDragStart: dragDropEvents.onDragStart,\n            updateDropState: this._updateDroppingState,\n            onDrop: dragDropEvents.onDrop,\n            onDragEnd: dragDropEvents.onDragEnd,\n            onDragOver: dragDropEvents.onDragOver,\n        };\n        return options;\n    };\n    return DetailsRowBase;\n}(React.Component));\nexport { DetailsRowBase };\nfunction getSelectionState(props) {\n    var _a;\n    var itemIndex = props.itemIndex, selection = props.selection;\n    return {\n        isSelected: !!(selection === null || selection === void 0 ? void 0 : selection.isIndexSelected(itemIndex)),\n        isSelectionModal: !!((_a = selection === null || selection === void 0 ? void 0 : selection.isModal) === null || _a === void 0 ? void 0 : _a.call(selection)),\n    };\n}\n//# sourceMappingURL=DetailsRow.base.js.map","import { styled } from '../../Utilities';\nimport { DetailsRowBase } from './DetailsRow.base';\nimport { getDetailsRowStyles } from './DetailsRow.styles';\nexport var DetailsRow = styled(DetailsRowBase, getDetailsRowStyles, undefined, {\n    scope: 'DetailsRow',\n});\n//# sourceMappingURL=DetailsRow.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { BaseDecorator } from './BaseDecorator';\nimport { findScrollableParent, getRect, getWindow, Async, EventGroup } from '../../Utilities';\nvar RESIZE_DELAY = 500;\nvar MAX_RESIZE_ATTEMPTS = 3;\n/**\n * A decorator to update decorated component on viewport or window resize events.\n *\n * @param ComposedComponent - decorated React component reference.\n */\nexport function withViewport(ComposedComponent) {\n    return /** @class */ (function (_super) {\n        __extends(WithViewportComponent, _super);\n        function WithViewportComponent(props) {\n            var _this = _super.call(this, props) || this;\n            _this._root = React.createRef();\n            _this._registerResizeObserver = function () {\n                var win = getWindow(_this._root.current);\n                _this._viewportResizeObserver = new win.ResizeObserver(_this._onAsyncResize);\n                _this._viewportResizeObserver.observe(_this._root.current);\n            };\n            _this._unregisterResizeObserver = function () {\n                if (_this._viewportResizeObserver) {\n                    _this._viewportResizeObserver.disconnect();\n                    delete _this._viewportResizeObserver;\n                }\n            };\n            /* Note: using lambda here because decorators don't seem to work in decorators. */\n            _this._updateViewport = function (withForceUpdate) {\n                var viewport = _this.state.viewport;\n                var viewportElement = _this._root.current;\n                var win = getWindow(viewportElement);\n                var scrollElement = findScrollableParent(viewportElement);\n                var scrollRect = getRect(scrollElement, win);\n                var clientRect = getRect(viewportElement, win);\n                var updateComponent = function () {\n                    if (withForceUpdate && _this._composedComponentInstance) {\n                        _this._composedComponentInstance.forceUpdate();\n                    }\n                };\n                var isSizeChanged = (clientRect && clientRect.width) !== viewport.width || (scrollRect && scrollRect.height) !== viewport.height;\n                if (isSizeChanged && _this._resizeAttempts < MAX_RESIZE_ATTEMPTS && clientRect && scrollRect) {\n                    _this._resizeAttempts++;\n                    _this.setState({\n                        viewport: {\n                            width: clientRect.width,\n                            height: scrollRect.height,\n                        },\n                    }, function () {\n                        _this._updateViewport(withForceUpdate);\n                    });\n                }\n                else {\n                    _this._resizeAttempts = 0;\n                    updateComponent();\n                }\n            };\n            _this._async = new Async(_this);\n            _this._events = new EventGroup(_this);\n            _this._resizeAttempts = 0;\n            _this.state = {\n                viewport: {\n                    width: 0,\n                    height: 0,\n                },\n            };\n            return _this;\n        }\n        WithViewportComponent.prototype.componentDidMount = function () {\n            var _this = this;\n            var _a = this.props, delayFirstMeasure = _a.delayFirstMeasure, disableResizeObserver = _a.disableResizeObserver, skipViewportMeasures = _a.skipViewportMeasures;\n            var win = getWindow(this._root.current);\n            this._onAsyncResize = this._async.debounce(this._onAsyncResize, RESIZE_DELAY, {\n                leading: false,\n            });\n            if (!skipViewportMeasures) {\n                if (!disableResizeObserver && this._isResizeObserverAvailable()) {\n                    this._registerResizeObserver();\n                }\n                else {\n                    this._events.on(win, 'resize', this._onAsyncResize);\n                }\n                if (delayFirstMeasure) {\n                    this._async.setTimeout(function () {\n                        _this._updateViewport();\n                    }, RESIZE_DELAY);\n                }\n                else {\n                    this._updateViewport();\n                }\n            }\n        };\n        WithViewportComponent.prototype.componentDidUpdate = function (previousProps) {\n            var previousSkipViewportMeasures = previousProps.skipViewportMeasures;\n            var _a = this.props, disableResizeObserver = _a.disableResizeObserver, skipViewportMeasures = _a.skipViewportMeasures;\n            var win = getWindow(this._root.current);\n            if (skipViewportMeasures !== previousSkipViewportMeasures) {\n                if (!skipViewportMeasures) {\n                    if (!disableResizeObserver && this._isResizeObserverAvailable()) {\n                        if (!this._viewportResizeObserver) {\n                            this._registerResizeObserver();\n                        }\n                    }\n                    else {\n                        this._events.on(win, 'resize', this._onAsyncResize);\n                    }\n                    this._updateViewport();\n                }\n                else {\n                    this._unregisterResizeObserver();\n                    this._events.off(win, 'resize', this._onAsyncResize);\n                }\n            }\n        };\n        WithViewportComponent.prototype.componentWillUnmount = function () {\n            this._events.dispose();\n            this._async.dispose();\n            this._unregisterResizeObserver();\n        };\n        WithViewportComponent.prototype.render = function () {\n            var viewport = this.state.viewport;\n            var newViewport = viewport.width > 0 && viewport.height > 0 ? viewport : undefined;\n            return (React.createElement(\"div\", { className: \"ms-Viewport\", ref: this._root, style: { minWidth: 1, minHeight: 1 } },\n                React.createElement(ComposedComponent, __assign({ ref: this._updateComposedComponentRef, viewport: newViewport }, this.props))));\n        };\n        WithViewportComponent.prototype.forceUpdate = function () {\n            this._updateViewport(true);\n        };\n        WithViewportComponent.prototype._onAsyncResize = function () {\n            this._updateViewport();\n        };\n        WithViewportComponent.prototype._isResizeObserverAvailable = function () {\n            var win = getWindow(this._root.current);\n            return win && win.ResizeObserver;\n        };\n        return WithViewportComponent;\n    }(BaseDecorator));\n}\n//# sourceMappingURL=withViewport.js.map","import { __assign, __decorate, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { initializeComponentRef, FocusRects, Async, KeyCodes, elementContains, getRTLSafeKeyCode, classNamesFunction, css, memoizeFunction, warnMutuallyExclusive, } from '../../Utilities';\nimport { CheckboxVisibility, ColumnActionsMode, ConstrainMode, DetailsListLayoutMode, ColumnDragEndLocation, } from '../DetailsList/DetailsList.types';\nimport { DetailsHeader } from '../DetailsList/DetailsHeader';\nimport { SelectAllVisibility } from '../DetailsList/DetailsHeader.types';\nimport { DetailsRow } from '../DetailsList/DetailsRow';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { Selection, SelectionMode, SelectionZone } from '../../Selection';\nimport { DragDropHelper } from '../../DragDrop';\nimport { GroupedList } from '../../GroupedList';\nimport { List } from '../../List';\nimport { withViewport } from '../../utilities/decorators/withViewport';\nimport { GetGroupCount } from '../../utilities/groupedList/GroupedListUtility';\nimport { DEFAULT_CELL_STYLE_PROPS } from './DetailsRow.styles';\nimport { CHECK_CELL_WIDTH as CHECKBOX_WIDTH } from './DetailsRowCheck.styles';\n// For every group level there is a GroupSpacer added. Importing this const to have the source value in one place.\nimport { SPACER_WIDTH as GROUP_EXPAND_WIDTH } from '../GroupedList/GroupSpacer';\nimport { composeComponentAs, composeRenderFunction, getId } from '@fluentui/utilities';\nimport { useConst } from '@fluentui/react-hooks';\nimport { WindowContext } from '@fluentui/react-window-provider';\nimport { getDocumentEx } from '../../utilities/dom';\nvar getClassNames = classNamesFunction();\nvar COMPONENT_NAME = 'DetailsList';\nvar MIN_COLUMN_WIDTH = 100; // this is the global min width\nvar DEFAULT_RENDERED_WINDOWS_AHEAD = 2;\nvar DEFAULT_RENDERED_WINDOWS_BEHIND = 2;\nvar rowFocusZoneAddTabIndexProps = { tabIndex: 0 };\nvar rowFocusZoneNoTabIndexProps = {};\n/**\n * Hooks-based implementation of DetailsList.\n * Since many existing consumers of DetailsList expect `ref` to return a `DetailsList`,\n * this inner component handles rendering while the outer maintains compatibility.\n */\nvar DetailsListInner = function (props) {\n    var selection = props.selection;\n    var ariaLabelForListHeader = props.ariaLabelForListHeader, ariaLabelForSelectAllCheckbox = props.ariaLabelForSelectAllCheckbox, ariaLabelForSelectionColumn = props.ariaLabelForSelectionColumn, className = props.className, checkboxVisibility = props.checkboxVisibility, compact = props.compact, constrainMode = props.constrainMode, dragDropEvents = props.dragDropEvents, groups = props.groups, groupProps = props.groupProps, indentWidth = props.indentWidth, items = props.items, isPlaceholderData = props.isPlaceholderData, isHeaderVisible = props.isHeaderVisible, layoutMode = props.layoutMode, onItemInvoked = props.onItemInvoked, onItemContextMenu = props.onItemContextMenu, onColumnHeaderClick = props.onColumnHeaderClick, onColumnHeaderContextMenu = props.onColumnHeaderContextMenu, _a = props.selectionMode, selectionMode = _a === void 0 ? selection.mode : _a, selectionPreservedOnEmptyClick = props.selectionPreservedOnEmptyClick, selectionZoneProps = props.selectionZoneProps, \n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    ariaLabel = props.ariaLabel, ariaLabelForGrid = props.ariaLabelForGrid, rowElementEventMap = props.rowElementEventMap, \n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    _b = props.shouldApplyApplicationRole, \n    // eslint-disable-next-line @typescript-eslint/no-deprecated\n    shouldApplyApplicationRole = _b === void 0 ? false : _b, getKey = props.getKey, listProps = props.listProps, usePageCache = props.usePageCache, onShouldVirtualize = props.onShouldVirtualize, viewport = props.viewport, minimumPixelsForDrag = props.minimumPixelsForDrag, getGroupHeight = props.getGroupHeight, styles = props.styles, theme = props.theme, _c = props.cellStyleProps, cellStyleProps = _c === void 0 ? DEFAULT_CELL_STYLE_PROPS : _c, onRenderCheckbox = props.onRenderCheckbox, useFastIcons = props.useFastIcons, dragDropHelper = props.dragDropHelper, adjustedColumns = props.adjustedColumns, isCollapsed = props.isCollapsed, isSizing = props.isSizing, isSomeGroupExpanded = props.isSomeGroupExpanded, version = props.version, rootRef = props.rootRef, listRef = props.listRef, focusZoneRef = props.focusZoneRef, columnReorderOptions = props.columnReorderOptions, groupedListRef = props.groupedListRef, headerRef = props.headerRef, onGroupExpandStateChanged = props.onGroupExpandStateChanged, onColumnIsSizingChanged = props.onColumnIsSizingChanged, onRowDidMount = props.onRowDidMount, onRowWillUnmount = props.onRowWillUnmount, disableSelectionZone = props.disableSelectionZone, _d = props.isSelectedOnFocus, isSelectedOnFocus = _d === void 0 ? true : _d, onColumnResized = props.onColumnResized, onColumnAutoResized = props.onColumnAutoResized, onToggleCollapse = props.onToggleCollapse, onActiveRowChanged = props.onActiveRowChanged, onBlur = props.onBlur, eventsToRegister = props.rowElementEventMap, onRenderMissingItem = props.onRenderMissingItem, onRenderItemColumn = props.onRenderItemColumn, onRenderField = props.onRenderField, getCellValueKey = props.getCellValueKey, getRowAriaLabel = props.getRowAriaLabel, getRowAriaDescribedBy = props.getRowAriaDescribedBy, checkButtonAriaLabel = props.checkButtonAriaLabel, checkButtonGroupAriaLabel = props.checkButtonGroupAriaLabel, checkboxCellClassName = props.checkboxCellClassName, useReducedRowRenderer = props.useReducedRowRenderer, enableUpdateAnimations = props.enableUpdateAnimations, enterModalSelectionOnTouch = props.enterModalSelectionOnTouch, onRenderDefaultRow = props.onRenderDefaultRow, selectionZoneRef = props.selectionZoneRef, focusZoneProps = props.focusZoneProps;\n    var defaultRole = 'grid';\n    var role = props.role ? props.role : defaultRole;\n    var rowId = getId('row');\n    var groupNestingDepth = getGroupNestingDepth(groups);\n    var groupedDetailsListIndexMap = useGroupedDetailsListIndexMap(groups);\n    var additionalListProps = React.useMemo(function () {\n        return __assign({ renderedWindowsAhead: isSizing ? 0 : DEFAULT_RENDERED_WINDOWS_AHEAD, renderedWindowsBehind: isSizing ? 0 : DEFAULT_RENDERED_WINDOWS_BEHIND, getKey: getKey, version: version }, listProps);\n    }, [isSizing, getKey, version, listProps]);\n    var selectAllVisibility = SelectAllVisibility.none; // for SelectionMode.none\n    if (selectionMode === SelectionMode.single) {\n        selectAllVisibility = SelectAllVisibility.hidden;\n    }\n    if (selectionMode === SelectionMode.multiple) {\n        // if isCollapsedGroupSelectVisible is false, disable select all when the list has all collapsed groups\n        var isCollapsedGroupSelectVisible = groupProps && groupProps.headerProps && groupProps.headerProps.isCollapsedGroupSelectVisible;\n        if (isCollapsedGroupSelectVisible === undefined) {\n            isCollapsedGroupSelectVisible = true;\n        }\n        var isSelectAllVisible = isCollapsedGroupSelectVisible || !groups || isSomeGroupExpanded;\n        selectAllVisibility = isSelectAllVisible ? SelectAllVisibility.visible : SelectAllVisibility.hidden;\n    }\n    if (checkboxVisibility === CheckboxVisibility.hidden) {\n        selectAllVisibility = SelectAllVisibility.none;\n    }\n    var defaultOnRenderDetailsHeader = React.useCallback(function (detailsHeaderProps) {\n        return React.createElement(DetailsHeader, __assign({}, detailsHeaderProps));\n    }, []);\n    var defaultOnRenderDetailsFooter = React.useCallback(function () {\n        return null;\n    }, []);\n    var propsOnRenderDetailsHeader = props.onRenderDetailsHeader;\n    var onRenderDetailsHeader = React.useMemo(function () {\n        return propsOnRenderDetailsHeader\n            ? composeRenderFunction(propsOnRenderDetailsHeader, defaultOnRenderDetailsHeader)\n            : defaultOnRenderDetailsHeader;\n    }, [propsOnRenderDetailsHeader, defaultOnRenderDetailsHeader]);\n    var propsOnRenderDetailsFooter = props.onRenderDetailsFooter;\n    var onRenderDetailsFooter = React.useMemo(function () {\n        return propsOnRenderDetailsFooter\n            ? composeRenderFunction(propsOnRenderDetailsFooter, defaultOnRenderDetailsFooter)\n            : defaultOnRenderDetailsFooter;\n    }, [propsOnRenderDetailsFooter, defaultOnRenderDetailsFooter]);\n    var detailsFooterProps = React.useMemo(function () {\n        return {\n            columns: adjustedColumns,\n            groupNestingDepth: groupNestingDepth,\n            selection: selection,\n            selectionMode: selectionMode,\n            viewport: viewport,\n            checkboxVisibility: checkboxVisibility,\n            indentWidth: indentWidth,\n            cellStyleProps: cellStyleProps,\n        };\n    }, [\n        adjustedColumns,\n        groupNestingDepth,\n        selection,\n        selectionMode,\n        viewport,\n        checkboxVisibility,\n        indentWidth,\n        cellStyleProps,\n    ]);\n    var columnReorderOnDragEnd = columnReorderOptions && columnReorderOptions.onDragEnd;\n    var onColumnDragEnd = React.useCallback(function (_a, event) {\n        var dropLocation = _a.dropLocation;\n        var finalDropLocation = ColumnDragEndLocation.outside;\n        if (columnReorderOnDragEnd) {\n            if (dropLocation && dropLocation !== ColumnDragEndLocation.header) {\n                finalDropLocation = dropLocation;\n            }\n            else if (rootRef.current) {\n                var clientRect = rootRef.current.getBoundingClientRect();\n                if (event.clientX > clientRect.left &&\n                    event.clientX < clientRect.right &&\n                    event.clientY > clientRect.top &&\n                    event.clientY < clientRect.bottom) {\n                    finalDropLocation = ColumnDragEndLocation.surface;\n                }\n            }\n            columnReorderOnDragEnd(finalDropLocation);\n        }\n    }, [columnReorderOnDragEnd, rootRef]);\n    var columnReorderProps = React.useMemo(function () {\n        if (columnReorderOptions) {\n            return __assign(__assign({}, columnReorderOptions), { onColumnDragEnd: onColumnDragEnd });\n        }\n    }, [columnReorderOptions, onColumnDragEnd]);\n    var rowCount = (isHeaderVisible ? 1 : 0) +\n        (props.onRenderDetailsFooter ? 1 : 0) +\n        GetGroupCount(groups) +\n        (items ? items.length : 0);\n    var colCount = (selectAllVisibility !== SelectAllVisibility.none ? 1 : 0) +\n        (adjustedColumns ? adjustedColumns.length : 0) +\n        (groups ? 1 : 0);\n    var classNames = React.useMemo(function () {\n        return getClassNames(styles, {\n            theme: theme,\n            compact: compact,\n            isFixed: layoutMode === DetailsListLayoutMode.fixedColumns,\n            isHorizontalConstrained: constrainMode === ConstrainMode.horizontalConstrained,\n            className: className,\n        });\n    }, [styles, theme, compact, layoutMode, constrainMode, className]);\n    var onRenderDetailsGroupFooter = groupProps && groupProps.onRenderFooter;\n    var finalOnRenderDetailsGroupFooter = React.useMemo(function () {\n        return onRenderDetailsGroupFooter\n            ? function (groupFooterProps, defaultRender) {\n                return onRenderDetailsGroupFooter(__assign(__assign({}, groupFooterProps), { columns: adjustedColumns, groupNestingDepth: groupNestingDepth, indentWidth: indentWidth, selection: selection, selectionMode: selectionMode, viewport: viewport, checkboxVisibility: checkboxVisibility, cellStyleProps: cellStyleProps }), defaultRender);\n            }\n            : undefined;\n    }, [\n        onRenderDetailsGroupFooter,\n        adjustedColumns,\n        groupNestingDepth,\n        indentWidth,\n        selection,\n        selectionMode,\n        viewport,\n        checkboxVisibility,\n        cellStyleProps,\n    ]);\n    var onRenderDetailsGroupHeader = groupProps && groupProps.onRenderHeader;\n    var finalOnRenderDetailsGroupHeader = React.useMemo(function () {\n        return onRenderDetailsGroupHeader\n            ? function (groupHeaderProps, defaultRender) {\n                var _a, _b;\n                var groupIndex = groupHeaderProps.groupIndex;\n                var groupKey = groupIndex !== undefined ? (_b = (_a = groupHeaderProps.groups) === null || _a === void 0 ? void 0 : _a[groupIndex]) === null || _b === void 0 ? void 0 : _b.key : undefined;\n                var totalRowCount = groupKey !== undefined && groupedDetailsListIndexMap[groupKey]\n                    ? groupedDetailsListIndexMap[groupKey].totalRowCount\n                    : 0;\n                return onRenderDetailsGroupHeader(__assign(__assign({}, groupHeaderProps), { columns: adjustedColumns, groupNestingDepth: groupNestingDepth, indentWidth: indentWidth, selection: selection, selectionMode: checkboxVisibility !== CheckboxVisibility.hidden ? selectionMode : SelectionMode.none, viewport: viewport, checkboxVisibility: checkboxVisibility, cellStyleProps: cellStyleProps, ariaColSpan: adjustedColumns.length, ariaLevel: undefined, ariaPosInSet: undefined, ariaSetSize: undefined, ariaRowCount: undefined, ariaRowIndex: groupIndex !== undefined ? totalRowCount + (isHeaderVisible ? 1 : 0) : undefined }), defaultRender);\n            }\n            : function (groupHeaderProps, defaultRender) {\n                var _a, _b;\n                var groupIndex = groupHeaderProps.groupIndex;\n                var groupKey = groupIndex !== undefined ? (_b = (_a = groupHeaderProps.groups) === null || _a === void 0 ? void 0 : _a[groupIndex]) === null || _b === void 0 ? void 0 : _b.key : undefined;\n                var totalRowCount = groupKey !== undefined && groupedDetailsListIndexMap[groupKey]\n                    ? groupedDetailsListIndexMap[groupKey].totalRowCount\n                    : 0;\n                return defaultRender(__assign(__assign({}, groupHeaderProps), { ariaColSpan: adjustedColumns.length, ariaLevel: undefined, ariaPosInSet: undefined, ariaSetSize: undefined, ariaRowCount: undefined, ariaRowIndex: groupIndex !== undefined ? totalRowCount + (isHeaderVisible ? 1 : 0) : undefined }));\n            };\n    }, [\n        onRenderDetailsGroupHeader,\n        adjustedColumns,\n        groupNestingDepth,\n        indentWidth,\n        isHeaderVisible,\n        selection,\n        selectionMode,\n        viewport,\n        checkboxVisibility,\n        cellStyleProps,\n        groupedDetailsListIndexMap,\n    ]);\n    var finalGroupProps = React.useMemo(function () {\n        var _a;\n        return __assign(__assign({}, groupProps), { role: role === defaultRole ? 'rowgroup' : 'presentation', onRenderFooter: finalOnRenderDetailsGroupFooter, onRenderHeader: finalOnRenderDetailsGroupHeader, \n            // pass through custom group header checkbox label\n            headerProps: __assign(__assign({}, groupProps === null || groupProps === void 0 ? void 0 : groupProps.headerProps), { selectAllButtonProps: __assign({ 'aria-label': checkButtonGroupAriaLabel }, (_a = groupProps === null || groupProps === void 0 ? void 0 : groupProps.headerProps) === null || _a === void 0 ? void 0 : _a.selectAllButtonProps) }) });\n    }, [groupProps, finalOnRenderDetailsGroupFooter, finalOnRenderDetailsGroupHeader, checkButtonGroupAriaLabel, role]);\n    var sumColumnWidths = useConst(function () {\n        return memoizeFunction(function (columns) {\n            var totalWidth = 0;\n            columns.forEach(function (column) { return (totalWidth += column.calculatedWidth || column.minWidth); });\n            return totalWidth;\n        });\n    });\n    var collapseAllVisibility = groupProps && groupProps.collapseAllVisibility;\n    var rowWidth = React.useMemo(function () {\n        return sumColumnWidths(adjustedColumns);\n    }, [adjustedColumns, sumColumnWidths]);\n    var onRenderCell = React.useCallback(function (nestingDepth, item, index, group) {\n        var finalOnRenderRow = props.onRenderRow\n            ? composeRenderFunction(props.onRenderRow, onRenderDefaultRow)\n            : onRenderDefaultRow;\n        var groupKey = group ? group.key : undefined;\n        var numOfGroupHeadersBeforeItem = groupKey && groupedDetailsListIndexMap[groupKey]\n            ? groupedDetailsListIndexMap[groupKey].numOfGroupHeadersBeforeItem\n            : 0;\n        var rowRole = role === defaultRole ? undefined : 'presentation';\n        // add tabindex=\"0\" to first row so if the header isn't rendered or isn't focusable,\n        // the focuszone still has content in the tab order.\n        var rowFocusZoneProps = index > 0 ? rowFocusZoneNoTabIndexProps : rowFocusZoneAddTabIndexProps;\n        var rowProps = {\n            item: item,\n            itemIndex: index,\n            flatIndexOffset: (isHeaderVisible ? 2 : 1) + numOfGroupHeadersBeforeItem,\n            compact: compact,\n            columns: adjustedColumns,\n            groupNestingDepth: nestingDepth,\n            id: \"\".concat(rowId, \"-\").concat(index),\n            selectionMode: selectionMode,\n            selection: selection,\n            onDidMount: onRowDidMount,\n            onWillUnmount: onRowWillUnmount,\n            onRenderItemColumn: onRenderItemColumn,\n            onRenderField: onRenderField,\n            getCellValueKey: getCellValueKey,\n            eventsToRegister: eventsToRegister,\n            dragDropEvents: dragDropEvents,\n            dragDropHelper: dragDropHelper,\n            viewport: viewport,\n            checkboxVisibility: checkboxVisibility,\n            collapseAllVisibility: collapseAllVisibility,\n            getRowAriaLabel: getRowAriaLabel,\n            getRowAriaDescribedBy: getRowAriaDescribedBy,\n            checkButtonAriaLabel: checkButtonAriaLabel,\n            checkboxCellClassName: checkboxCellClassName,\n            useReducedRowRenderer: useReducedRowRenderer,\n            indentWidth: indentWidth,\n            cellStyleProps: cellStyleProps,\n            onRenderDetailsCheckbox: onRenderCheckbox,\n            enableUpdateAnimations: enableUpdateAnimations,\n            rowWidth: rowWidth,\n            useFastIcons: useFastIcons,\n            role: rowRole,\n            isGridRow: true,\n            focusZoneProps: rowFocusZoneProps,\n        };\n        if (!item) {\n            if (onRenderMissingItem) {\n                return onRenderMissingItem(index, rowProps);\n            }\n            return null;\n        }\n        return finalOnRenderRow(rowProps);\n    }, [\n        compact,\n        adjustedColumns,\n        selectionMode,\n        selection,\n        rowId,\n        onRowDidMount,\n        onRowWillUnmount,\n        onRenderItemColumn,\n        onRenderField,\n        getCellValueKey,\n        eventsToRegister,\n        dragDropEvents,\n        dragDropHelper,\n        viewport,\n        checkboxVisibility,\n        collapseAllVisibility,\n        getRowAriaLabel,\n        getRowAriaDescribedBy,\n        isHeaderVisible,\n        checkButtonAriaLabel,\n        checkboxCellClassName,\n        useReducedRowRenderer,\n        indentWidth,\n        cellStyleProps,\n        onRenderCheckbox,\n        enableUpdateAnimations,\n        useFastIcons,\n        onRenderDefaultRow,\n        onRenderMissingItem,\n        props.onRenderRow,\n        rowWidth,\n        role,\n        groupedDetailsListIndexMap,\n    ]);\n    var onRenderListCell = React.useCallback(function (nestingDepth) {\n        return function (item, itemIndex) {\n            return onRenderCell(nestingDepth, item, itemIndex);\n        };\n    }, [onRenderCell]);\n    var isRightArrow = React.useCallback(function (event) {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        return event.which === getRTLSafeKeyCode(KeyCodes.right, theme);\n    }, [theme]);\n    var focusZoneInnerProps = __assign(__assign({}, focusZoneProps), { componentRef: focusZoneProps && focusZoneProps.componentRef ? focusZoneProps.componentRef : focusZoneRef, className: focusZoneProps && focusZoneProps.className\n            ? css(classNames.focusZone, focusZoneProps.className)\n            : classNames.focusZone, direction: focusZoneProps ? focusZoneProps.direction : FocusZoneDirection.vertical, shouldEnterInnerZone: focusZoneProps && focusZoneProps.shouldEnterInnerZone ? focusZoneProps.shouldEnterInnerZone : isRightArrow, onActiveElementChanged: focusZoneProps && focusZoneProps.onActiveElementChanged\n            ? focusZoneProps.onActiveElementChanged\n            : onActiveRowChanged, shouldRaiseClicksOnEnter: false, onBlur: focusZoneProps && focusZoneProps.onBlur ? focusZoneProps.onBlur : onBlur });\n    var FinalGroupedList = groups && (groupProps === null || groupProps === void 0 ? void 0 : groupProps.groupedListAs) ? composeComponentAs(groupProps.groupedListAs, GroupedList) : GroupedList;\n    var list = groups ? (React.createElement(FinalGroupedList, { focusZoneProps: focusZoneInnerProps, componentRef: groupedListRef, groups: groups, groupProps: finalGroupProps, items: items, onRenderCell: onRenderCell, role: \"presentation\", selection: selection, selectionMode: checkboxVisibility !== CheckboxVisibility.hidden ? selectionMode : SelectionMode.none, dragDropEvents: dragDropEvents, dragDropHelper: dragDropHelper, eventsToRegister: rowElementEventMap, listProps: additionalListProps, onGroupExpandStateChanged: onGroupExpandStateChanged, usePageCache: usePageCache, onShouldVirtualize: onShouldVirtualize, getGroupHeight: getGroupHeight, compact: compact })) : (React.createElement(FocusZone, __assign({}, focusZoneInnerProps),\n        React.createElement(List, __assign({ ref: listRef, role: \"presentation\", items: items, onRenderCell: onRenderListCell(0), usePageCache: usePageCache, onShouldVirtualize: onShouldVirtualize }, additionalListProps))));\n    var onHeaderKeyDown = React.useCallback(function (ev) {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        if (ev.which === KeyCodes.down) {\n            if (focusZoneRef.current && focusZoneRef.current.focus()) {\n                // select the first item in list after down arrow key event\n                // only if nothing was selected; otherwise start with the already-selected item\n                if (isSelectedOnFocus && selection.getSelectedIndices().length === 0) {\n                    selection.setIndexSelected(0, true, false);\n                }\n                ev.preventDefault();\n                ev.stopPropagation();\n            }\n        }\n    }, [selection, focusZoneRef, isSelectedOnFocus]);\n    var onContentKeyDown = React.useCallback(function (ev) {\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        if (ev.which === KeyCodes.up && !ev.altKey) {\n            if (headerRef.current && headerRef.current.focus()) {\n                ev.preventDefault();\n                ev.stopPropagation();\n            }\n        }\n    }, [headerRef]);\n    return (React.createElement(\"div\", __assign({ ref: rootRef, className: classNames.root, \"data-automationid\": \"DetailsList\", \"data-is-scrollable\": \"false\" }, (shouldApplyApplicationRole ? { role: 'application' } : {})),\n        React.createElement(FocusRects, null),\n        React.createElement(\"div\", { role: role, \"aria-label\": ariaLabelForGrid || ariaLabel, \"aria-rowcount\": isPlaceholderData ? 0 : rowCount, \"aria-colcount\": colCount, \"aria-busy\": isPlaceholderData },\n            React.createElement(\"div\", { onKeyDown: onHeaderKeyDown, role: \"presentation\", className: classNames.headerWrapper }, isHeaderVisible &&\n                onRenderDetailsHeader({\n                    componentRef: headerRef,\n                    selectionMode: selectionMode,\n                    layoutMode: layoutMode,\n                    selection: selection,\n                    columns: adjustedColumns,\n                    onColumnClick: onColumnHeaderClick,\n                    onColumnContextMenu: onColumnHeaderContextMenu,\n                    onColumnResized: onColumnResized,\n                    onColumnIsSizingChanged: onColumnIsSizingChanged,\n                    onColumnAutoResized: onColumnAutoResized,\n                    groupNestingDepth: groupNestingDepth,\n                    isAllCollapsed: isCollapsed,\n                    onToggleCollapseAll: onToggleCollapse,\n                    ariaLabel: ariaLabelForListHeader,\n                    ariaLabelForSelectAllCheckbox: ariaLabelForSelectAllCheckbox,\n                    ariaLabelForSelectionColumn: ariaLabelForSelectionColumn,\n                    selectAllVisibility: selectAllVisibility,\n                    collapseAllVisibility: groupProps && groupProps.collapseAllVisibility,\n                    viewport: viewport,\n                    columnReorderProps: columnReorderProps,\n                    minimumPixelsForDrag: minimumPixelsForDrag,\n                    cellStyleProps: cellStyleProps,\n                    checkboxVisibility: checkboxVisibility,\n                    indentWidth: indentWidth,\n                    onRenderDetailsCheckbox: onRenderCheckbox,\n                    rowWidth: sumColumnWidths(adjustedColumns),\n                    useFastIcons: useFastIcons,\n                }, onRenderDetailsHeader)),\n            React.createElement(\"div\", { onKeyDown: onContentKeyDown, role: \"presentation\", className: classNames.contentWrapper }, !disableSelectionZone ? (React.createElement(SelectionZone, __assign({ ref: selectionZoneRef, selection: selection, selectionPreservedOnEmptyClick: selectionPreservedOnEmptyClick, selectionMode: selectionMode, isSelectedOnFocus: isSelectedOnFocus, selectionClearedOnEscapePress: isSelectedOnFocus, toggleWithoutModifierPressed: !isSelectedOnFocus, onItemInvoked: onItemInvoked, onItemContextMenu: onItemContextMenu, enterModalOnTouch: enterModalSelectionOnTouch }, (selectionZoneProps || {})), list)) : (list)),\n            onRenderDetailsFooter(__assign({}, detailsFooterProps)))));\n};\nvar DetailsListBase = /** @class */ (function (_super) {\n    __extends(DetailsListBase, _super);\n    function DetailsListBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._root = React.createRef();\n        _this._header = React.createRef();\n        _this._groupedList = React.createRef();\n        _this._list = React.createRef();\n        _this._focusZone = React.createRef();\n        _this._selectionZone = React.createRef();\n        _this._onRenderRow = function (props, defaultRender) {\n            return React.createElement(DetailsRow, __assign({}, props));\n        };\n        _this._getDerivedStateFromProps = function (nextProps, previousState) {\n            var _a = _this.props, checkboxVisibility = _a.checkboxVisibility, items = _a.items, setKey = _a.setKey, _b = _a.selectionMode, selectionMode = _b === void 0 ? _this._selection.mode : _b, columns = _a.columns, viewport = _a.viewport, compact = _a.compact, dragDropEvents = _a.dragDropEvents;\n            var _c = (_this.props.groupProps || {}).isAllGroupsCollapsed, isAllGroupsCollapsed = _c === void 0 ? undefined : _c;\n            var newViewportWidth = (nextProps.viewport && nextProps.viewport.width) || 0;\n            var oldViewportWidth = (viewport && viewport.width) || 0;\n            var shouldResetSelection = nextProps.setKey !== setKey || nextProps.setKey === undefined;\n            var shouldForceUpdates = false;\n            if (nextProps.layoutMode !== _this.props.layoutMode) {\n                shouldForceUpdates = true;\n            }\n            var nextState = previousState;\n            if (shouldResetSelection) {\n                _this._initialFocusedIndex = nextProps.initialFocusedIndex;\n                // reset focusedItemIndex when setKey changes\n                nextState = __assign(__assign({}, nextState), { focusedItemIndex: _this._initialFocusedIndex !== undefined ? _this._initialFocusedIndex : -1 });\n            }\n            if (!_this.props.disableSelectionZone && nextProps.items !== items) {\n                _this._selection.setItems(nextProps.items, shouldResetSelection);\n            }\n            if (nextProps.checkboxVisibility !== checkboxVisibility ||\n                nextProps.columns !== columns ||\n                newViewportWidth !== oldViewportWidth ||\n                nextProps.compact !== compact) {\n                shouldForceUpdates = true;\n            }\n            nextState = __assign(__assign({}, nextState), _this._adjustColumns(nextProps, nextState, true));\n            if (nextProps.selectionMode !== selectionMode) {\n                shouldForceUpdates = true;\n            }\n            if (isAllGroupsCollapsed === undefined &&\n                nextProps.groupProps &&\n                nextProps.groupProps.isAllGroupsCollapsed !== undefined) {\n                nextState = __assign(__assign({}, nextState), { isCollapsed: nextProps.groupProps.isAllGroupsCollapsed, isSomeGroupExpanded: !nextProps.groupProps.isAllGroupsCollapsed });\n            }\n            if (nextProps.dragDropEvents !== dragDropEvents) {\n                _this._dragDropHelper && _this._dragDropHelper.dispose();\n                _this._dragDropHelper = nextProps.dragDropEvents\n                    ? new DragDropHelper({\n                        selection: _this._selection,\n                        minimumPixelsForDrag: nextProps.minimumPixelsForDrag,\n                    })\n                    : undefined;\n                shouldForceUpdates = true;\n            }\n            if (shouldForceUpdates) {\n                nextState = __assign(__assign({}, nextState), { version: {} });\n            }\n            return nextState;\n        };\n        _this._onGroupExpandStateChanged = function (isSomeGroupExpanded) {\n            _this.setState({ isSomeGroupExpanded: isSomeGroupExpanded });\n        };\n        _this._onColumnIsSizingChanged = function (column, isSizing) {\n            _this.setState({ isSizing: isSizing });\n        };\n        _this._onRowDidMount = function (row) {\n            var _a = row.props, item = _a.item, itemIndex = _a.itemIndex;\n            var itemKey = _this._getItemKey(item, itemIndex);\n            _this._activeRows[itemKey] = row; // this is used for column auto resize\n            _this._setFocusToRowIfPending(row);\n            var onRowDidMount = _this.props.onRowDidMount;\n            if (onRowDidMount) {\n                onRowDidMount(item, itemIndex);\n            }\n        };\n        _this._onRowWillUnmount = function (row) {\n            var onRowWillUnmount = _this.props.onRowWillUnmount;\n            var _a = row.props, item = _a.item, itemIndex = _a.itemIndex;\n            var itemKey = _this._getItemKey(item, itemIndex);\n            delete _this._activeRows[itemKey];\n            if (onRowWillUnmount) {\n                onRowWillUnmount(item, itemIndex);\n            }\n        };\n        _this._onToggleCollapse = function (collapsed) {\n            _this.setState({\n                isCollapsed: collapsed,\n            });\n            if (_this._groupedList.current) {\n                _this._groupedList.current.toggleCollapseAll(collapsed);\n            }\n        };\n        _this._onColumnResized = function (resizingColumn, newWidth, resizingColumnIndex) {\n            var newCalculatedWidth = Math.max(resizingColumn.minWidth || MIN_COLUMN_WIDTH, newWidth);\n            if (_this.props.onColumnResize) {\n                _this.props.onColumnResize(resizingColumn, newCalculatedWidth, resizingColumnIndex);\n            }\n            _this._rememberCalculatedWidth(resizingColumn, newCalculatedWidth);\n            _this.setState(__assign(__assign({}, _this._adjustColumns(_this.props, _this.state, true, resizingColumnIndex)), { version: {} }));\n        };\n        /**\n         * Callback function when double clicked on the details header column resizer\n         * which will measure the column cells of all the active rows and resize the\n         * column to the max cell width.\n         *\n         * @param column - double clicked column definition\n         * @param columnIndex - double clicked column index\n         * TODO: min width 100 should be changed to const value and should be consistent with the\n         * value used on _onSizerMove method in DetailsHeader\n         */\n        _this._onColumnAutoResized = function (column, columnIndex) {\n            var max = 0;\n            var count = 0;\n            var totalCount = Object.keys(_this._activeRows).length;\n            for (var key in _this._activeRows) {\n                if (_this._activeRows.hasOwnProperty(key)) {\n                    var currentRow = _this._activeRows[key];\n                    currentRow.measureCell(columnIndex, function (width) {\n                        max = Math.max(max, width);\n                        count++;\n                        if (count === totalCount) {\n                            _this._onColumnResized(column, max, columnIndex);\n                        }\n                    });\n                }\n            }\n        };\n        /**\n         * Call back function when an element in FocusZone becomes active. It will translate it into item\n         * and call onActiveItemChanged callback if specified.\n         *\n         * @param row - element that became active in Focus Zone\n         * @param focus - event from Focus Zone\n         */\n        _this._onActiveRowChanged = function (el, ev) {\n            var _a = _this.props, items = _a.items, onActiveItemChanged = _a.onActiveItemChanged;\n            if (!el) {\n                return;\n            }\n            // Check and assign index only if the event was raised from any DetailsRow element\n            if (el.getAttribute('data-item-index')) {\n                var index = Number(el.getAttribute('data-item-index'));\n                if (index >= 0) {\n                    if (onActiveItemChanged) {\n                        onActiveItemChanged(items[index], index, ev);\n                    }\n                    _this.setState({\n                        focusedItemIndex: index,\n                    });\n                }\n            }\n        };\n        _this._onBlur = function (event) {\n            _this.setState({\n                focusedItemIndex: -1,\n            });\n        };\n        initializeComponentRef(_this);\n        _this._async = new Async(_this);\n        _this._activeRows = {};\n        _this._columnOverrides = {};\n        _this.state = {\n            focusedItemIndex: -1,\n            lastWidth: 0,\n            adjustedColumns: _this._getAdjustedColumns(props, undefined),\n            isSizing: false,\n            isCollapsed: props.groupProps && props.groupProps.isAllGroupsCollapsed,\n            isSomeGroupExpanded: props.groupProps && !props.groupProps.isAllGroupsCollapsed,\n            version: {},\n            getDerivedStateFromProps: _this._getDerivedStateFromProps,\n        };\n        warnMutuallyExclusive(COMPONENT_NAME, props, {\n            selection: 'getKey',\n        });\n        _this._selection =\n            props.selection ||\n                new Selection({\n                    onSelectionChanged: undefined,\n                    getKey: props.getKey,\n                    selectionMode: props.selectionMode,\n                });\n        if (!_this.props.disableSelectionZone) {\n            _this._selection.setItems(props.items, false);\n        }\n        _this._dragDropHelper = props.dragDropEvents\n            ? new DragDropHelper({\n                selection: _this._selection,\n                minimumPixelsForDrag: props.minimumPixelsForDrag,\n            })\n            : undefined;\n        _this._initialFocusedIndex = props.initialFocusedIndex;\n        return _this;\n    }\n    DetailsListBase.getDerivedStateFromProps = function (nextProps, previousState) {\n        return previousState.getDerivedStateFromProps(nextProps, previousState);\n    };\n    DetailsListBase.prototype.scrollToIndex = function (index, measureItem, scrollToMode) {\n        this._list.current && this._list.current.scrollToIndex(index, measureItem, scrollToMode);\n        this._groupedList.current && this._groupedList.current.scrollToIndex(index, measureItem, scrollToMode);\n    };\n    DetailsListBase.prototype.focusIndex = function (index, forceIntoFirstElement, measureItem, scrollToMode) {\n        if (forceIntoFirstElement === void 0) { forceIntoFirstElement = false; }\n        var item = this.props.items[index];\n        if (item) {\n            this.scrollToIndex(index, measureItem, scrollToMode);\n            var itemKey = this._getItemKey(item, index);\n            var row = this._activeRows[itemKey];\n            if (row) {\n                this._setFocusToRow(row, forceIntoFirstElement);\n            }\n        }\n    };\n    DetailsListBase.prototype.getStartItemIndexInView = function () {\n        if (this._list && this._list.current) {\n            return this._list.current.getStartItemIndexInView();\n        }\n        else if (this._groupedList && this._groupedList.current) {\n            return this._groupedList.current.getStartItemIndexInView();\n        }\n        return 0;\n    };\n    DetailsListBase.prototype.updateColumn = function (column, options) {\n        var _a, _b;\n        var NO_COLUMNS = [];\n        var _c = this.props, _d = _c.columns, columns = _d === void 0 ? NO_COLUMNS : _d, selectionMode = _c.selectionMode, checkboxVisibility = _c.checkboxVisibility, columnReorderOptions = _c.columnReorderOptions;\n        var width = options.width, newColumnIndex = options.newColumnIndex;\n        var index = columns.findIndex(function (col) { return col.key === column.key; });\n        if (width) {\n            this._onColumnResized(column, width, index);\n        }\n        if (newColumnIndex !== undefined && columnReorderOptions) {\n            var isCheckboxColumnHidden = selectionMode === SelectionMode.none || checkboxVisibility === CheckboxVisibility.hidden;\n            var showCheckbox = checkboxVisibility !== CheckboxVisibility.hidden;\n            var columnIndex = (showCheckbox ? 2 : 1) + index;\n            var draggedIndex = isCheckboxColumnHidden ? columnIndex - 1 : columnIndex - 2;\n            var targetIndex = isCheckboxColumnHidden ? newColumnIndex - 1 : newColumnIndex - 2;\n            var frozenColumnCountFromStart = (_a = columnReorderOptions.frozenColumnCountFromStart) !== null && _a !== void 0 ? _a : 0;\n            var frozenColumnCountFromEnd = (_b = columnReorderOptions.frozenColumnCountFromEnd) !== null && _b !== void 0 ? _b : 0;\n            var isValidTargetIndex = targetIndex >= frozenColumnCountFromStart && targetIndex < columns.length - frozenColumnCountFromEnd;\n            if (isValidTargetIndex) {\n                if (columnReorderOptions.onColumnDrop) {\n                    var dragDropDetails = {\n                        draggedIndex: draggedIndex,\n                        targetIndex: targetIndex,\n                    };\n                    columnReorderOptions.onColumnDrop(dragDropDetails);\n                    /* eslint-disable @typescript-eslint/no-deprecated */\n                }\n                else if (columnReorderOptions.handleColumnReorder) {\n                    columnReorderOptions.handleColumnReorder(draggedIndex, targetIndex);\n                    /* eslint-enable @typescript-eslint/no-deprecated */\n                }\n            }\n        }\n    };\n    DetailsListBase.prototype.componentWillUnmount = function () {\n        if (this._dragDropHelper) {\n            // TODO If the DragDropHelper was passed via props, this will dispose it, which is incorrect behavior.\n            this._dragDropHelper.dispose();\n        }\n        this._async.dispose();\n    };\n    DetailsListBase.prototype.componentDidUpdate = function (prevProps, prevState) {\n        this._notifyColumnsResized();\n        var doc = getDocumentEx(this.context);\n        if (this._initialFocusedIndex !== undefined) {\n            var item = this.props.items[this._initialFocusedIndex];\n            if (item) {\n                var itemKey = this._getItemKey(item, this._initialFocusedIndex);\n                var row = this._activeRows[itemKey];\n                if (row) {\n                    this._setFocusToRowIfPending(row);\n                }\n            }\n        }\n        if (this.props.items !== prevProps.items &&\n            this.props.items.length > 0 &&\n            this.state.focusedItemIndex !== -1 &&\n            !elementContains(this._root.current, doc === null || doc === void 0 ? void 0 : doc.activeElement, false)) {\n            // Item set has changed and previously-focused item is gone.\n            // Set focus to item at index of previously-focused item if it is in range,\n            // else set focus to the last item.\n            var index = this.state.focusedItemIndex < this.props.items.length\n                ? this.state.focusedItemIndex\n                : this.props.items.length - 1;\n            var item = this.props.items[index];\n            var itemKey = this._getItemKey(item, this.state.focusedItemIndex);\n            var row = this._activeRows[itemKey];\n            if (row) {\n                this._setFocusToRow(row);\n            }\n            else {\n                this._initialFocusedIndex = index;\n            }\n        }\n        if (this.props.onDidUpdate) {\n            this.props.onDidUpdate(this);\n        }\n    };\n    DetailsListBase.prototype.render = function () {\n        return (React.createElement(DetailsListInner, __assign({}, this.props, this.state, { selection: this._selection, dragDropHelper: this._dragDropHelper, rootRef: this._root, listRef: this._list, groupedListRef: this._groupedList, focusZoneRef: this._focusZone, headerRef: this._header, selectionZoneRef: this._selectionZone, onGroupExpandStateChanged: this._onGroupExpandStateChanged, onColumnIsSizingChanged: this._onColumnIsSizingChanged, onRowDidMount: this._onRowDidMount, onRowWillUnmount: this._onRowWillUnmount, onColumnResized: this._onColumnResized, onColumnAutoResized: this._onColumnAutoResized, onToggleCollapse: this._onToggleCollapse, onActiveRowChanged: this._onActiveRowChanged, onBlur: this._onBlur, onRenderDefaultRow: this._onRenderRow })));\n    };\n    DetailsListBase.prototype.forceUpdate = function () {\n        _super.prototype.forceUpdate.call(this);\n        this._forceListUpdates();\n    };\n    DetailsListBase.prototype._getGroupNestingDepth = function () {\n        var groups = this.props.groups;\n        var level = 0;\n        var groupsInLevel = groups;\n        while (groupsInLevel && groupsInLevel.length > 0) {\n            level++;\n            groupsInLevel = groupsInLevel[0].children;\n        }\n        return level;\n    };\n    DetailsListBase.prototype._setFocusToRowIfPending = function (row) {\n        var itemIndex = row.props.itemIndex;\n        if (this._initialFocusedIndex !== undefined && itemIndex === this._initialFocusedIndex) {\n            this._setFocusToRow(row);\n            delete this._initialFocusedIndex;\n        }\n    };\n    DetailsListBase.prototype._setFocusToRow = function (row, forceIntoFirstElement) {\n        if (forceIntoFirstElement === void 0) { forceIntoFirstElement = false; }\n        if (this._selectionZone.current) {\n            this._selectionZone.current.ignoreNextFocus();\n        }\n        this._async.setTimeout(function () {\n            row.focus(forceIntoFirstElement);\n        }, 0);\n    };\n    DetailsListBase.prototype._forceListUpdates = function () {\n        if (this._groupedList.current) {\n            this._groupedList.current.forceUpdate();\n        }\n        if (this._list.current) {\n            this._list.current.forceUpdate();\n        }\n    };\n    DetailsListBase.prototype._notifyColumnsResized = function () {\n        this.state.adjustedColumns.forEach(function (column) {\n            if (column.onColumnResize) {\n                column.onColumnResize(column.currentWidth);\n            }\n        });\n    };\n    DetailsListBase.prototype._adjustColumns = function (newProps, previousState, forceUpdate, resizingColumnIndex) {\n        var adjustedColumns = this._getAdjustedColumns(newProps, previousState, forceUpdate, resizingColumnIndex);\n        var viewport = this.props.viewport;\n        var viewportWidth = viewport && viewport.width ? viewport.width : 0;\n        return __assign(__assign({}, previousState), { adjustedColumns: adjustedColumns, lastWidth: viewportWidth });\n    };\n    /** Returns adjusted columns, given the viewport size and layout mode. */\n    DetailsListBase.prototype._getAdjustedColumns = function (newProps, previousState, forceUpdate, resizingColumnIndex) {\n        var _this = this;\n        var newItems = newProps.items, layoutMode = newProps.layoutMode, selectionMode = newProps.selectionMode, viewport = newProps.viewport;\n        var viewportWidth = viewport && viewport.width ? viewport.width : 0;\n        var newColumns = newProps.columns;\n        var columns = this.props ? this.props.columns : [];\n        var lastWidth = previousState ? previousState.lastWidth : -1;\n        var lastSelectionMode = previousState ? previousState.lastSelectionMode : undefined;\n        if (!forceUpdate &&\n            lastWidth === viewportWidth &&\n            lastSelectionMode === selectionMode &&\n            (!columns || newColumns === columns)) {\n            return newColumns || [];\n        }\n        newColumns = newColumns || buildColumns(newItems, true);\n        var adjustedColumns;\n        if (layoutMode === DetailsListLayoutMode.fixedColumns) {\n            adjustedColumns = this._getFixedColumns(newColumns, viewportWidth, newProps);\n            // Preserve adjusted column calculated widths.\n            adjustedColumns.forEach(function (column) {\n                _this._rememberCalculatedWidth(column, column.calculatedWidth);\n            });\n        }\n        else {\n            adjustedColumns = this._getJustifiedColumns(newColumns, viewportWidth, newProps);\n            adjustedColumns.forEach(function (column) {\n                _this._getColumnOverride(column.key).currentWidth = column.calculatedWidth;\n            });\n        }\n        return adjustedColumns;\n    };\n    /** Builds a set of columns based on the given columns mixed with the current overrides. */\n    DetailsListBase.prototype._getFixedColumns = function (newColumns, viewportWidth, props) {\n        var _this = this;\n        var _a = this.props, _b = _a.selectionMode, selectionMode = _b === void 0 ? this._selection.mode : _b, checkboxVisibility = _a.checkboxVisibility, flexMargin = _a.flexMargin, skipViewportMeasures = _a.skipViewportMeasures;\n        var remainingWidth = viewportWidth - (flexMargin || 0);\n        var sumProportionalWidth = 0;\n        newColumns.forEach(function (col) {\n            if (skipViewportMeasures || !col.flexGrow) {\n                remainingWidth -= col.maxWidth || col.minWidth || MIN_COLUMN_WIDTH;\n            }\n            else {\n                remainingWidth -= col.minWidth || MIN_COLUMN_WIDTH;\n                sumProportionalWidth += col.flexGrow;\n            }\n            remainingWidth -= getPaddedWidth(col, props, true);\n        });\n        var rowCheckWidth = selectionMode !== SelectionMode.none && checkboxVisibility !== CheckboxVisibility.hidden ? CHECKBOX_WIDTH : 0;\n        var groupExpandWidth = this._getGroupNestingDepth() * GROUP_EXPAND_WIDTH;\n        remainingWidth -= rowCheckWidth + groupExpandWidth;\n        var widthFraction = remainingWidth / sumProportionalWidth;\n        // Shrinks proportional columns to their max width and adds the remaining width to distribute to other columns.\n        if (!skipViewportMeasures) {\n            newColumns.forEach(function (column) {\n                var newColumn = __assign(__assign({}, column), _this._columnOverrides[column.key]);\n                if (newColumn.flexGrow && newColumn.maxWidth) {\n                    var fullWidth = newColumn.flexGrow * widthFraction + newColumn.minWidth;\n                    var shrinkWidth = fullWidth - newColumn.maxWidth;\n                    if (shrinkWidth > 0) {\n                        remainingWidth += shrinkWidth;\n                        sumProportionalWidth -= (shrinkWidth / (fullWidth - newColumn.minWidth)) * newColumn.flexGrow;\n                    }\n                }\n            });\n        }\n        widthFraction = remainingWidth > 0 ? remainingWidth / sumProportionalWidth : 0;\n        return newColumns.map(function (column) {\n            var newColumn = __assign(__assign({}, column), _this._columnOverrides[column.key]);\n            // Delay computation until viewport width is available.\n            if (!skipViewportMeasures && newColumn.flexGrow && remainingWidth <= 0 && viewportWidth === 0) {\n                return newColumn;\n            }\n            if (!newColumn.calculatedWidth) {\n                if (!skipViewportMeasures && newColumn.flexGrow) {\n                    // Assigns the proportion of the remaining extra width after all columns have met minimum widths.\n                    newColumn.calculatedWidth = newColumn.minWidth + newColumn.flexGrow * widthFraction;\n                    newColumn.calculatedWidth = Math.min(newColumn.calculatedWidth, newColumn.maxWidth || Number.MAX_VALUE);\n                }\n                else {\n                    newColumn.calculatedWidth = newColumn.maxWidth || newColumn.minWidth || MIN_COLUMN_WIDTH;\n                }\n            }\n            return newColumn;\n        });\n    };\n    /** Builds a set of columns to fix within the viewport width. */\n    DetailsListBase.prototype._getJustifiedColumns = function (newColumns, viewportWidth, props) {\n        var _this = this;\n        var _a = props.selectionMode, selectionMode = _a === void 0 ? this._selection.mode : _a, checkboxVisibility = props.checkboxVisibility, skipViewportMeasures = props.skipViewportMeasures;\n        var rowCheckWidth = selectionMode !== SelectionMode.none && checkboxVisibility !== CheckboxVisibility.hidden ? CHECKBOX_WIDTH : 0;\n        var groupExpandWidth = this._getGroupNestingDepth() * GROUP_EXPAND_WIDTH;\n        var totalWidth = 0; // offset because we have one less inner padding.\n        var minimumWidth = 0;\n        var availableWidth = viewportWidth - (rowCheckWidth + groupExpandWidth);\n        var adjustedColumns = newColumns.map(function (column, i) {\n            var baseColumn = __assign(__assign({}, column), { calculatedWidth: column.minWidth || MIN_COLUMN_WIDTH });\n            var newColumn = __assign(__assign({}, baseColumn), _this._columnOverrides[column.key]);\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            if (!(baseColumn.isCollapsible || baseColumn.isCollapsable)) {\n                minimumWidth += getPaddedWidth(baseColumn, props);\n            }\n            totalWidth += getPaddedWidth(newColumn, props);\n            return newColumn;\n        });\n        if (skipViewportMeasures) {\n            return adjustedColumns;\n        }\n        var lastIndex = adjustedColumns.length - 1;\n        // Shrink or remove collapsable columns.\n        while (lastIndex >= 0 && totalWidth > availableWidth) {\n            var column = adjustedColumns[lastIndex];\n            var minWidth = column.minWidth || MIN_COLUMN_WIDTH;\n            var overflowWidth = totalWidth - availableWidth;\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\n            if (column.calculatedWidth - minWidth >= overflowWidth || !(column.isCollapsible || column.isCollapsable)) {\n                var originalWidth = column.calculatedWidth;\n                if (minimumWidth < availableWidth) {\n                    // Only adjust in cases where all the columns fit within the viewport\n                    column.calculatedWidth = Math.max(column.calculatedWidth - overflowWidth, minWidth);\n                }\n                totalWidth -= originalWidth - column.calculatedWidth;\n            }\n            else {\n                totalWidth -= getPaddedWidth(column, props);\n                adjustedColumns.splice(lastIndex, 1);\n            }\n            lastIndex--;\n        }\n        // Then expand columns starting at the beginning, until we've filled the width.\n        for (var i = 0; i < adjustedColumns.length && totalWidth < availableWidth; i++) {\n            var column = adjustedColumns[i];\n            var isLast = i === adjustedColumns.length - 1;\n            var overrides = this._columnOverrides[column.key];\n            if (overrides && overrides.calculatedWidth && !isLast) {\n                continue;\n            }\n            var spaceLeft = availableWidth - totalWidth;\n            var increment = void 0;\n            if (isLast) {\n                increment = spaceLeft;\n            }\n            else {\n                var maxWidth = column.maxWidth;\n                var minWidth = column.minWidth || maxWidth || MIN_COLUMN_WIDTH;\n                increment = maxWidth ? Math.min(spaceLeft, maxWidth - minWidth) : spaceLeft;\n            }\n            column.calculatedWidth = column.calculatedWidth + increment;\n            totalWidth += increment;\n        }\n        return adjustedColumns;\n    };\n    DetailsListBase.prototype._rememberCalculatedWidth = function (column, newCalculatedWidth) {\n        var overrides = this._getColumnOverride(column.key);\n        overrides.calculatedWidth = newCalculatedWidth;\n        overrides.currentWidth = newCalculatedWidth;\n    };\n    DetailsListBase.prototype._getColumnOverride = function (key) {\n        return (this._columnOverrides[key] = this._columnOverrides[key] || {});\n    };\n    DetailsListBase.prototype._getItemKey = function (item, itemIndex) {\n        var getKey = this.props.getKey;\n        var itemKey = undefined;\n        if (item) {\n            itemKey = item.key;\n        }\n        if (getKey) {\n            itemKey = getKey(item, itemIndex);\n        }\n        if (!itemKey) {\n            itemKey = itemIndex;\n        }\n        return itemKey;\n    };\n    DetailsListBase.defaultProps = {\n        layoutMode: DetailsListLayoutMode.justified,\n        selectionMode: SelectionMode.multiple,\n        constrainMode: ConstrainMode.horizontalConstrained,\n        checkboxVisibility: CheckboxVisibility.onHover,\n        isHeaderVisible: true,\n        compact: false,\n        useFastIcons: true,\n    };\n    DetailsListBase.contextType = WindowContext;\n    DetailsListBase = __decorate([\n        withViewport\n    ], DetailsListBase);\n    return DetailsListBase;\n}(React.Component));\nexport { DetailsListBase };\nexport function buildColumns(items, canResizeColumns, onColumnClick, sortedColumnKey, isSortedDescending, groupedColumnKey, isMultiline, columnActionsMode) {\n    var columns = [];\n    if (items && items.length) {\n        var firstItem = items[0];\n        for (var propName in firstItem) {\n            if (firstItem.hasOwnProperty(propName)) {\n                columns.push({\n                    key: propName,\n                    name: propName,\n                    fieldName: propName,\n                    minWidth: MIN_COLUMN_WIDTH,\n                    maxWidth: 300,\n                    isCollapsible: !!columns.length,\n                    isMultiline: isMultiline === undefined ? false : isMultiline,\n                    isSorted: sortedColumnKey === propName,\n                    isSortedDescending: !!isSortedDescending,\n                    isRowHeader: false,\n                    columnActionsMode: columnActionsMode !== null && columnActionsMode !== void 0 ? columnActionsMode : ColumnActionsMode.clickable,\n                    isResizable: canResizeColumns,\n                    onColumnClick: onColumnClick,\n                    isGrouped: groupedColumnKey === propName,\n                });\n            }\n        }\n    }\n    return columns;\n}\nfunction getPaddedWidth(column, props, paddingOnly) {\n    var _a = props.cellStyleProps, cellStyleProps = _a === void 0 ? DEFAULT_CELL_STYLE_PROPS : _a;\n    return ((paddingOnly ? 0 : column.calculatedWidth) +\n        cellStyleProps.cellLeftPadding +\n        cellStyleProps.cellRightPadding +\n        (column.isPadded ? cellStyleProps.cellExtraRightPadding : 0));\n}\nfunction getGroupNestingDepth(groups) {\n    var level = 0;\n    var groupsInLevel = groups;\n    while (groupsInLevel && groupsInLevel.length > 0) {\n        level++;\n        groupsInLevel = groupsInLevel[0].children;\n    }\n    return level;\n}\nfunction useGroupedDetailsListIndexMap(groups) {\n    return React.useMemo(function () {\n        var indexMap = {};\n        if (groups) {\n            var rowCount = 1;\n            var numGroupHeaders = 1;\n            for (var _i = 0, groups_1 = groups; _i < groups_1.length; _i++) {\n                var group = groups_1[_i];\n                var key = group.key;\n                indexMap[key] = { numOfGroupHeadersBeforeItem: numGroupHeaders, totalRowCount: rowCount };\n                numGroupHeaders++;\n                rowCount += group.count + 1;\n            }\n        }\n        return indexMap;\n    }, [groups]);\n}\n//# sourceMappingURL=DetailsList.base.js.map","import { getGlobalClassNames } from '../../Styling';\nvar GlobalClassNames = {\n    root: 'ms-DetailsList',\n    compact: 'ms-DetailsList--Compact',\n    contentWrapper: 'ms-DetailsList-contentWrapper',\n    headerWrapper: 'ms-DetailsList-headerWrapper',\n    isFixed: 'is-fixed',\n    isHorizontalConstrained: 'is-horizontalConstrained',\n    listCell: 'ms-List-cell',\n};\nexport var getDetailsListStyles = function (props) {\n    var _a, _b;\n    var theme = props.theme, className = props.className, isHorizontalConstrained = props.isHorizontalConstrained, compact = props.compact, isFixed = props.isFixed;\n    var semanticColors = theme.semanticColors;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    return {\n        root: [\n            classNames.root,\n            theme.fonts.small,\n            {\n                position: 'relative',\n                color: semanticColors.listText,\n                selectors: (_a = {},\n                    _a[\"& .\".concat(classNames.listCell)] = {\n                        minHeight: 38,\n                        wordBreak: 'break-word',\n                    },\n                    _a),\n            },\n            isFixed && classNames.isFixed,\n            compact && [\n                classNames.compact,\n                {\n                    selectors: (_b = {},\n                        _b[\".\".concat(classNames.listCell)] = {\n                            minHeight: 32,\n                        },\n                        _b),\n                },\n            ],\n            isHorizontalConstrained && [\n                classNames.isHorizontalConstrained,\n                {\n                    overflowX: 'auto',\n                    overflowY: 'visible',\n                    WebkitOverflowScrolling: 'touch',\n                },\n            ],\n            className,\n        ],\n        focusZone: [\n            {\n                display: 'inline-block',\n                minWidth: '100%',\n                minHeight: 1,\n            },\n        ],\n        headerWrapper: classNames.headerWrapper,\n        contentWrapper: classNames.contentWrapper,\n    };\n};\n//# sourceMappingURL=DetailsList.styles.js.map","import { styled } from '../../Utilities';\nimport { DetailsListBase } from './DetailsList.base';\nimport { getDetailsListStyles } from './DetailsList.styles';\nexport var DetailsList = styled(DetailsListBase, getDetailsListStyles, undefined, {\n    scope: 'DetailsList',\n});\n//# sourceMappingURL=DetailsList.js.map","/**\n * {@docCategory Panel}\n */\nexport var PanelType;\n(function (PanelType) {\n    /**\n     * Renders the Panel with a `fluid` (full screen) width.\n     * Recommended for use on small screen breakpoints.\n     * - Small (320-479): full screen width, 16px left/right padding\n     * - Medium (480-639): full screen width, 16px left/right padding\n     * - Large (640-1023): full screen width, 32px left/right padding\n     * - XLarge (1024-1365): full screen width, 32px left/right padding\n     * - XXLarge (1366-up): full screen width, 40px left/right padding\n     */\n    PanelType[PanelType[\"smallFluid\"] = 0] = \"smallFluid\";\n    /**\n     * Renders the Panel in fixed-width `small` size, anchored to the far side (right in LTR mode).\n     * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n     * - Medium (480-639): 340px width, 16px left/right padding\n     * - Large (640-1023): 340px width, 32px left/right padding\n     * - XLarge (1024-1365): 340px width, 32px left/right padding\n     * - XXLarge (1366-up): 340px width, 40px left/right padding\n     */\n    PanelType[PanelType[\"smallFixedFar\"] = 1] = \"smallFixedFar\";\n    /**\n     * Renders the Panel in fixed-width `small` size, anchored to the near side (left in LTR mode).\n     * - Small (320-479): 272px width, 16px left/right padding\n     * - Medium (480-639): 272px width, 16px left/right padding\n     * - Large (640-1023): 272px width, 32px left/right padding\n     * - XLarge (1024-1365): 272px width, 32px left/right padding\n     * - XXLarge (1366-up): 272px width, 40px left/right padding\n     */\n    PanelType[PanelType[\"smallFixedNear\"] = 2] = \"smallFixedNear\";\n    /**\n     * Renders the Panel in `medium` size, anchored to the far side (right in LTR mode).\n     * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n     * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n     * - Large (640-1023): 592px width, 32px left/right padding\n     * - XLarge (1024-1365): 644px width, 32px left/right padding\n     * - XXLarge (1366-up): 644px width, 40px left/right padding\n     */\n    PanelType[PanelType[\"medium\"] = 3] = \"medium\";\n    /**\n     * Renders the Panel in `large` size, anchored to the far side (right in LTR mode).\n     * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n     * - Medium (480-639):  adapts to `PanelType.smallFixedFar` at this breakpoint\n     * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n     * - XLarge (1024-1365): 48px fixed left margin, fluid width, 32px left/right padding\n     * - XXLarge (1366-up): 428px fixed left margin, fluid width, 40px left/right padding\n     */\n    PanelType[PanelType[\"large\"] = 4] = \"large\";\n    /**\n     * Renders the Panel in `large` size, anchored to the far side (right in LTR mode), with a fixed width at\n     * XX-Large breakpoint.\n     * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n     * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n     * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n     * - XLarge (1024-1365): 48px fixed left margin, fluid width, 32px left/right padding\n     * - XXLarge (1366-up): 940px width, 40px left/right padding\n     */\n    PanelType[PanelType[\"largeFixed\"] = 5] = \"largeFixed\";\n    /**\n     * Renders the Panel in `extra large` size, anchored to the far side (right in LTR mode).\n     * - Small (320-479): adapts to `PanelType.smallFluid` at this breakpoint\n     * - Medium (480-639): adapts to `PanelType.smallFixedFar` at this breakpoint\n     * - Large (640-1023): adapts to `PanelType.medium` at this breakpoint\n     * - XLarge (1024-1365): adapts to `PanelType.large` at this breakpoint\n     * - XXLarge (1366-1919): 176px fixed left margin, fluid width, 40px left/right padding\n     * - XXXLarge (1920-up): 176px fixed left margin, fluid width, 40px left/right padding\n     */\n    PanelType[PanelType[\"extraLarge\"] = 6] = \"extraLarge\";\n    /**\n     * Renders the Panel in `custom` size using `customWidth`, anchored to the far side (right in LTR mode).\n     * - Has a fixed width provided by the `customWidth` prop\n     * - When screen width reaches the `customWidth` value it will behave like a fluid width Panel\n     * taking up 100% of the viewport width\n     */\n    PanelType[PanelType[\"custom\"] = 7] = \"custom\";\n    /**\n     * Renders the Panel in `custom` size using `customWidth`, anchored to the near side (left in LTR mode).\n     * - Has a fixed width provided by the `customWidth` prop\n     * - When screen width reaches the `customWidth` value it will behave like a fluid width Panel\n     * taking up 100% of the viewport width\n     */\n    PanelType[PanelType[\"customNear\"] = 8] = \"customNear\";\n})(PanelType || (PanelType = {}));\n//# sourceMappingURL=Panel.types.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { IconButton } from '../../Button';\nimport { Layer } from '../../Layer';\nimport { Overlay } from '../../Overlay';\nimport { Popup } from '../../Popup';\nimport { allowScrollOnElement, allowOverscrollOnElement, classNamesFunction, divProperties, elementContains, getId, getNativeProps, getRTL, css, warnDeprecations, Async, EventGroup, initializeComponentRef, } from '../../Utilities';\nimport { FocusTrapZone } from '../FocusTrapZone/index';\nimport { PanelType } from './Panel.types';\nimport { WindowContext } from '@fluentui/react-window-provider';\nimport { getDocumentEx, getWindowEx } from '../../utilities/dom';\nvar getClassNames = classNamesFunction();\nvar COMPONENT_NAME = 'Panel';\nvar PanelVisibilityState;\n(function (PanelVisibilityState) {\n    PanelVisibilityState[PanelVisibilityState[\"closed\"] = 0] = \"closed\";\n    PanelVisibilityState[PanelVisibilityState[\"animatingOpen\"] = 1] = \"animatingOpen\";\n    PanelVisibilityState[PanelVisibilityState[\"open\"] = 2] = \"open\";\n    PanelVisibilityState[PanelVisibilityState[\"animatingClosed\"] = 3] = \"animatingClosed\";\n})(PanelVisibilityState || (PanelVisibilityState = {}));\nvar PanelBase = /** @class */ (function (_super) {\n    __extends(PanelBase, _super);\n    function PanelBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this._panel = React.createRef();\n        _this._animationCallback = null;\n        _this._hasCustomNavigation = !!(_this.props.onRenderNavigation || _this.props.onRenderNavigationContent);\n        _this.dismiss = function (ev) {\n            if (_this.props.onDismiss && _this.isActive) {\n                _this.props.onDismiss(ev);\n            }\n            if (!ev || (ev && !ev.defaultPrevented)) {\n                _this.close();\n            }\n        };\n        // Allow the user to scroll within the panel but not on the body\n        _this._allowScrollOnPanel = function (elt) {\n            var _a;\n            _this._resizeObserver = _this._createResizeObserver(function (entries) {\n                if (entries.length > 0 && entries[0].target === elt) {\n                    _this._updateFooterPosition();\n                }\n            });\n            if (elt) {\n                (_a = _this._resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(elt);\n                if (_this._allowTouchBodyScroll) {\n                    allowOverscrollOnElement(elt, _this._events);\n                }\n                else {\n                    allowScrollOnElement(elt, _this._events);\n                }\n            }\n            else {\n                _this._events.off(_this._scrollableContent);\n            }\n            _this._scrollableContent = elt;\n        };\n        _this._onRenderNavigation = function (props) {\n            if (!_this.props.onRenderNavigationContent && !_this.props.onRenderNavigation && !_this.props.hasCloseButton) {\n                return null;\n            }\n            var _a = _this.props.onRenderNavigationContent, onRenderNavigationContent = _a === void 0 ? _this._onRenderNavigationContent : _a;\n            return (React.createElement(\"div\", { className: _this._classNames.navigation }, onRenderNavigationContent(props, _this._onRenderNavigationContent)));\n        };\n        _this._onRenderNavigationContent = function (props) {\n            var _a;\n            var closeButtonAriaLabel = props.closeButtonAriaLabel, hasCloseButton = props.hasCloseButton, _b = props.onRenderHeader, onRenderHeader = _b === void 0 ? _this._onRenderHeader : _b;\n            if (hasCloseButton) {\n                var iconButtonStyles = (_a = _this._classNames.subComponentStyles) === null || _a === void 0 ? void 0 : _a.closeButton();\n                return (React.createElement(React.Fragment, null,\n                    !_this._hasCustomNavigation && onRenderHeader(_this.props, _this._onRenderHeader, _this._headerTextId),\n                    React.createElement(IconButton, { styles: iconButtonStyles, className: _this._classNames.closeButton, onClick: _this._onPanelClick, ariaLabel: closeButtonAriaLabel, title: closeButtonAriaLabel, \"data-is-visible\": true, iconProps: { iconName: 'Cancel' } })));\n            }\n            return null;\n        };\n        _this._onRenderHeader = function (props, defaultRender, headerTextId) {\n            var headerText = props.headerText, _a = props.headerTextProps, headerTextProps = _a === void 0 ? {} : _a;\n            if (headerText) {\n                return (React.createElement(\"div\", { className: _this._classNames.header },\n                    React.createElement(\"div\", __assign({ id: headerTextId, role: \"heading\", \"aria-level\": 1 }, headerTextProps, { className: css(_this._classNames.headerText, headerTextProps.className) }), headerText)));\n            }\n            return null;\n        };\n        _this._onRenderBody = function (props) {\n            return React.createElement(\"div\", { className: _this._classNames.content }, props.children);\n        };\n        _this._onRenderFooter = function (props) {\n            var _a = _this.props.onRenderFooterContent, onRenderFooterContent = _a === void 0 ? null : _a;\n            if (onRenderFooterContent) {\n                return (React.createElement(\"div\", { className: _this._classNames.footer },\n                    React.createElement(\"div\", { className: _this._classNames.footerInner }, onRenderFooterContent())));\n            }\n            return null;\n        };\n        _this._animateTo = function (newVisibilityState) {\n            if (newVisibilityState === PanelVisibilityState.open && _this.props.onOpen) {\n                _this.props.onOpen();\n            }\n            _this._animationCallback = _this._async.setTimeout(function () {\n                _this.setState({ visibility: newVisibilityState });\n                _this._onTransitionComplete(newVisibilityState);\n            }, 200);\n        };\n        _this._clearExistingAnimationTimer = function () {\n            if (_this._animationCallback !== null) {\n                _this._async.clearTimeout(_this._animationCallback);\n            }\n        };\n        _this._onPanelClick = function (ev) {\n            _this.dismiss(ev);\n        };\n        _this._onTransitionComplete = function (newVisibilityState) {\n            _this._updateFooterPosition();\n            if (newVisibilityState === PanelVisibilityState.open && _this.props.onOpened) {\n                _this.props.onOpened();\n            }\n            if (newVisibilityState === PanelVisibilityState.closed && _this.props.onDismissed) {\n                _this.props.onDismissed();\n            }\n        };\n        var _a = _this.props.allowTouchBodyScroll, allowTouchBodyScroll = _a === void 0 ? false : _a;\n        _this._allowTouchBodyScroll = allowTouchBodyScroll;\n        initializeComponentRef(_this);\n        warnDeprecations(COMPONENT_NAME, props, {\n            ignoreExternalFocusing: 'focusTrapZoneProps',\n            forceFocusInsideTrap: 'focusTrapZoneProps',\n            firstFocusableSelector: 'focusTrapZoneProps',\n        });\n        _this.state = {\n            isFooterSticky: false,\n            // intentionally ignore props so animation takes place during componentDidMount\n            visibility: PanelVisibilityState.closed,\n            id: getId('Panel'),\n        };\n        return _this;\n    }\n    PanelBase.getDerivedStateFromProps = function (nextProps, prevState) {\n        if (nextProps.isOpen === undefined) {\n            return null; // no state update\n        }\n        if (nextProps.isOpen &&\n            (prevState.visibility === PanelVisibilityState.closed ||\n                prevState.visibility === PanelVisibilityState.animatingClosed)) {\n            return { visibility: PanelVisibilityState.animatingOpen };\n        }\n        if (!nextProps.isOpen &&\n            (prevState.visibility === PanelVisibilityState.open ||\n                prevState.visibility === PanelVisibilityState.animatingOpen)) {\n            return { visibility: PanelVisibilityState.animatingClosed };\n        }\n        return null;\n    };\n    PanelBase.prototype.componentDidMount = function () {\n        this._async = new Async(this);\n        this._events = new EventGroup(this);\n        var win = getWindowEx(this.context);\n        var doc = getDocumentEx(this.context);\n        this._events.on(win, 'resize', this._updateFooterPosition);\n        if (this._shouldListenForOuterClick(this.props)) {\n            this._events.on(doc === null || doc === void 0 ? void 0 : doc.body, 'mousedown', this._dismissOnOuterClick, true);\n        }\n        if (this.props.isOpen) {\n            this.setState({ visibility: PanelVisibilityState.animatingOpen });\n        }\n    };\n    PanelBase.prototype.componentDidUpdate = function (previousProps, previousState) {\n        var shouldListenOnOuterClick = this._shouldListenForOuterClick(this.props);\n        var previousShouldListenOnOuterClick = this._shouldListenForOuterClick(previousProps);\n        if (this.state.visibility !== previousState.visibility) {\n            this._clearExistingAnimationTimer();\n            if (this.state.visibility === PanelVisibilityState.animatingOpen) {\n                this._animateTo(PanelVisibilityState.open);\n            }\n            else if (this.state.visibility === PanelVisibilityState.animatingClosed) {\n                this._animateTo(PanelVisibilityState.closed);\n            }\n        }\n        var doc = getDocumentEx(this.context);\n        if (shouldListenOnOuterClick && !previousShouldListenOnOuterClick) {\n            this._events.on(doc === null || doc === void 0 ? void 0 : doc.body, 'mousedown', this._dismissOnOuterClick, true);\n        }\n        else if (!shouldListenOnOuterClick && previousShouldListenOnOuterClick) {\n            this._events.off(doc === null || doc === void 0 ? void 0 : doc.body, 'mousedown', this._dismissOnOuterClick, true);\n        }\n    };\n    PanelBase.prototype.componentWillUnmount = function () {\n        var _a;\n        this._async.dispose();\n        this._events.dispose();\n        (_a = this._resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n    };\n    PanelBase.prototype.render = function () {\n        var _a = this.props, _b = _a.className, className = _b === void 0 ? '' : _b, elementToFocusOnDismiss = _a.elementToFocusOnDismiss, \n        /* eslint-disable @typescript-eslint/no-deprecated */\n        firstFocusableSelector = _a.firstFocusableSelector, focusTrapZoneProps = _a.focusTrapZoneProps, forceFocusInsideTrap = _a.forceFocusInsideTrap, hasCloseButton = _a.hasCloseButton, headerText = _a.headerText, _c = _a.headerClassName, headerClassName = _c === void 0 ? '' : _c, ignoreExternalFocusing = _a.ignoreExternalFocusing, isBlocking = _a.isBlocking, isFooterAtBottom = _a.isFooterAtBottom, isLightDismiss = _a.isLightDismiss, isHiddenOnDismiss = _a.isHiddenOnDismiss, layerProps = _a.layerProps, overlayProps = _a.overlayProps, popupProps = _a.popupProps, type = _a.type, styles = _a.styles, theme = _a.theme, customWidth = _a.customWidth, _d = _a.onLightDismissClick, onLightDismissClick = _d === void 0 ? this._onPanelClick : _d, _e = _a.onRenderNavigation, onRenderNavigation = _e === void 0 ? this._onRenderNavigation : _e, _f = _a.onRenderHeader, onRenderHeader = _f === void 0 ? this._onRenderHeader : _f, _g = _a.onRenderBody, onRenderBody = _g === void 0 ? this._onRenderBody : _g, _h = _a.onRenderFooter, onRenderFooter = _h === void 0 ? this._onRenderFooter : _h;\n        var _j = this.state, isFooterSticky = _j.isFooterSticky, visibility = _j.visibility, id = _j.id;\n        var isLeft = type === PanelType.smallFixedNear || type === PanelType.customNear ? true : false;\n        var isRTL = getRTL(theme);\n        var isOnRightSide = isRTL ? isLeft : !isLeft;\n        var customWidthStyles = type === PanelType.custom || type === PanelType.customNear ? { width: customWidth } : {};\n        var nativeProps = getNativeProps(this.props, divProperties);\n        var isOpen = this.isActive;\n        var isAnimating = visibility === PanelVisibilityState.animatingClosed || visibility === PanelVisibilityState.animatingOpen;\n        this._headerTextId = headerText && id + '-headerText';\n        if (!isOpen && !isAnimating && !isHiddenOnDismiss) {\n            return null;\n        }\n        this._classNames = getClassNames(styles, {\n            theme: theme,\n            className: className,\n            focusTrapZoneClassName: focusTrapZoneProps ? focusTrapZoneProps.className : undefined,\n            hasCloseButton: hasCloseButton,\n            headerClassName: headerClassName,\n            isAnimating: isAnimating,\n            isFooterSticky: isFooterSticky,\n            isFooterAtBottom: isFooterAtBottom,\n            isOnRightSide: isOnRightSide,\n            isOpen: isOpen,\n            isHiddenOnDismiss: isHiddenOnDismiss,\n            type: type,\n            hasCustomNavigation: this._hasCustomNavigation,\n        });\n        var _k = this, _classNames = _k._classNames, _allowTouchBodyScroll = _k._allowTouchBodyScroll;\n        var overlay;\n        if (isBlocking && isOpen) {\n            overlay = (React.createElement(Overlay, __assign({ className: _classNames.overlay, isDarkThemed: false, onClick: isLightDismiss ? onLightDismissClick : undefined, allowTouchBodyScroll: _allowTouchBodyScroll }, overlayProps)));\n        }\n        return (React.createElement(Layer, __assign({}, layerProps),\n            React.createElement(Popup, __assign({ role: \"dialog\", \"aria-modal\": isBlocking ? 'true' : undefined, ariaLabelledBy: this._headerTextId ? this._headerTextId : undefined, onDismiss: this.dismiss, className: _classNames.hiddenPanel, enableAriaHiddenSiblings: isOpen ? true : false }, popupProps),\n                React.createElement(\"div\", __assign({ \"aria-hidden\": !isOpen && isAnimating }, nativeProps, { ref: this._panel, className: _classNames.root }),\n                    overlay,\n                    React.createElement(FocusTrapZone, __assign({ ignoreExternalFocusing: ignoreExternalFocusing, forceFocusInsideTrap: !isBlocking || (isHiddenOnDismiss && !isOpen) ? false : forceFocusInsideTrap, firstFocusableSelector: firstFocusableSelector, isClickableOutsideFocusTrap: true }, focusTrapZoneProps, { className: _classNames.main, style: customWidthStyles, elementToFocusOnDismiss: elementToFocusOnDismiss }),\n                        React.createElement(\"div\", { className: _classNames.contentInner },\n                            React.createElement(\"div\", { ref: this._allowScrollOnPanel, className: _classNames.scrollableContent, \"data-is-scrollable\": true },\n                                React.createElement(\"div\", { className: _classNames.commands, \"data-is-visible\": true }, onRenderNavigation(this.props, this._onRenderNavigation)),\n                                (this._hasCustomNavigation || !hasCloseButton) &&\n                                    onRenderHeader(this.props, this._onRenderHeader, this._headerTextId),\n                                onRenderBody(this.props, this._onRenderBody),\n                                onRenderFooter(this.props, this._onRenderFooter))))))));\n    };\n    PanelBase.prototype.open = function () {\n        if (this.props.isOpen !== undefined) {\n            return;\n        }\n        if (this.isActive) {\n            return;\n        }\n        this.setState({ visibility: PanelVisibilityState.animatingOpen });\n    };\n    PanelBase.prototype.close = function () {\n        if (this.props.isOpen !== undefined) {\n            return;\n        }\n        if (!this.isActive) {\n            return;\n        }\n        this.setState({ visibility: PanelVisibilityState.animatingClosed });\n    };\n    Object.defineProperty(PanelBase.prototype, \"isActive\", {\n        /** isActive is true when panel is open or opening. */\n        get: function () {\n            return (this.state.visibility === PanelVisibilityState.open ||\n                this.state.visibility === PanelVisibilityState.animatingOpen);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    PanelBase.prototype._createResizeObserver = function (callback) {\n        var _a;\n        var doc = getDocumentEx(this.context);\n        var resizeObserver = null;\n        if ((_a = doc === null || doc === void 0 ? void 0 : doc.defaultView) === null || _a === void 0 ? void 0 : _a.ResizeObserver) {\n            resizeObserver = new doc.defaultView.ResizeObserver(callback);\n        }\n        return resizeObserver;\n    };\n    PanelBase.prototype._shouldListenForOuterClick = function (props) {\n        return !!props.isBlocking && !!props.isOpen;\n    };\n    PanelBase.prototype._updateFooterPosition = function () {\n        var scrollableContent = this._scrollableContent;\n        if (scrollableContent) {\n            var height = scrollableContent.clientHeight;\n            var innerHeight_1 = scrollableContent.scrollHeight;\n            this.setState({\n                isFooterSticky: height < innerHeight_1 ? true : false,\n            });\n        }\n    };\n    PanelBase.prototype._dismissOnOuterClick = function (ev) {\n        var panel = this._panel.current;\n        if (this.isActive && panel && !ev.defaultPrevented) {\n            if (!elementContains(panel, ev.target)) {\n                if (this.props.onOuterClick) {\n                    this.props.onOuterClick(ev);\n                }\n                else {\n                    this.dismiss(ev);\n                }\n            }\n        }\n    };\n    PanelBase.defaultProps = {\n        isHiddenOnDismiss: false,\n        isOpen: undefined,\n        isBlocking: true,\n        hasCloseButton: true,\n        type: PanelType.smallFixedFar,\n    };\n    PanelBase.contextType = WindowContext;\n    return PanelBase;\n}(React.Component));\nexport { PanelBase };\n//# sourceMappingURL=Panel.base.js.map","var _a, _b, _c, _d, _e;\nimport { __assign } from \"tslib\";\nimport { PanelType } from './Panel.types';\nimport { AnimationClassNames, AnimationVariables, getGlobalClassNames, HighContrastSelector, ScreenWidthMinMedium, ScreenWidthMinLarge, ScreenWidthMinXLarge, ScreenWidthMinXXLarge, ScreenWidthMinUhfMobile, IconFontSizes, } from '../../Styling';\nvar GlobalClassNames = {\n    root: 'ms-Panel',\n    main: 'ms-Panel-main',\n    commands: 'ms-Panel-commands',\n    contentInner: 'ms-Panel-contentInner',\n    scrollableContent: 'ms-Panel-scrollableContent',\n    navigation: 'ms-Panel-navigation',\n    closeButton: 'ms-Panel-closeButton ms-PanelAction-close',\n    header: 'ms-Panel-header',\n    headerText: 'ms-Panel-headerText',\n    content: 'ms-Panel-content',\n    footer: 'ms-Panel-footer',\n    footerInner: 'ms-Panel-footerInner',\n    isOpen: 'is-open',\n    hasCloseButton: 'ms-Panel--hasCloseButton',\n    smallFluid: 'ms-Panel--smFluid',\n    smallFixedNear: 'ms-Panel--smLeft',\n    smallFixedFar: 'ms-Panel--sm',\n    medium: 'ms-Panel--md',\n    large: 'ms-Panel--lg',\n    largeFixed: 'ms-Panel--fixed',\n    extraLarge: 'ms-Panel--xl',\n    custom: 'ms-Panel--custom',\n    customNear: 'ms-Panel--customLeft',\n};\nvar panelWidth = {\n    full: '100%',\n    auto: 'auto',\n    xs: 272,\n    sm: 340,\n    md1: 592,\n    md2: 644,\n    lg: 940,\n};\nvar panelMargin = {\n    auto: 'auto',\n    none: 0,\n    md: 48,\n    lg: 428,\n    xl: 176,\n};\n// Following consts are used below in `getPanelBreakpoints()` function to provide\n// necessary fallbacks for different types of Panel in different breakpoints.\nvar smallPanelSelectors = (_a = {},\n    _a[\"@media (min-width: \".concat(ScreenWidthMinMedium, \"px)\")] = {\n        width: panelWidth.sm,\n    },\n    _a);\nvar mediumPanelSelectors = (_b = {},\n    _b[\"@media (min-width: \".concat(ScreenWidthMinLarge, \"px)\")] = {\n        width: panelWidth.md1,\n    },\n    _b[\"@media (min-width: \".concat(ScreenWidthMinXLarge, \"px)\")] = {\n        width: panelWidth.md2,\n    },\n    _b);\nvar largePanelSelectors = (_c = {},\n    _c[\"@media (min-width: \".concat(ScreenWidthMinUhfMobile, \"px)\")] = {\n        left: panelMargin.md,\n        width: panelWidth.auto,\n    },\n    _c[\"@media (min-width: \".concat(ScreenWidthMinXXLarge, \"px)\")] = {\n        left: panelMargin.lg,\n    },\n    _c);\nvar largeFixedPanelSelectors = (_d = {},\n    _d[\"@media (min-width: \".concat(ScreenWidthMinXXLarge, \"px)\")] = {\n        left: panelMargin.auto,\n        width: panelWidth.lg,\n    },\n    _d);\nvar extraLargePanelSelectors = (_e = {},\n    _e[\"@media (min-width: \".concat(ScreenWidthMinXXLarge, \"px)\")] = {\n        left: panelMargin.xl,\n    },\n    _e);\n// Make sure Panels have fallbacks to different breakpoints by reusing same selectors.\n// This is done in the effort to follow design redlines.\nvar getPanelBreakpoints = function (type) {\n    var selectors;\n    // Panel types `smallFluid`, `smallFixedNear`, `custom` and `customNear`\n    // are not checked in here because they render the same in all the breakpoints\n    // and have the checks done separately in the `getStyles` function below.\n    switch (type) {\n        case PanelType.smallFixedFar:\n            selectors = __assign({}, smallPanelSelectors);\n            break;\n        case PanelType.medium:\n            selectors = __assign(__assign({}, smallPanelSelectors), mediumPanelSelectors);\n            break;\n        case PanelType.large:\n            selectors = __assign(__assign(__assign({}, smallPanelSelectors), mediumPanelSelectors), largePanelSelectors);\n            break;\n        case PanelType.largeFixed:\n            selectors = __assign(__assign(__assign(__assign({}, smallPanelSelectors), mediumPanelSelectors), largePanelSelectors), largeFixedPanelSelectors);\n            break;\n        case PanelType.extraLarge:\n            selectors = __assign(__assign(__assign(__assign({}, smallPanelSelectors), mediumPanelSelectors), largePanelSelectors), extraLargePanelSelectors);\n            break;\n        default:\n            break;\n    }\n    return selectors;\n};\nvar commandBarHeight = '44px';\nvar sharedPaddingStyles = {\n    paddingLeft: '24px',\n    paddingRight: '24px',\n};\nexport var getStyles = function (props) {\n    var _a, _b, _c, _d;\n    var className = props.className, focusTrapZoneClassName = props.focusTrapZoneClassName, hasCloseButton = props.hasCloseButton, headerClassName = props.headerClassName, isAnimating = props.isAnimating, isFooterSticky = props.isFooterSticky, isFooterAtBottom = props.isFooterAtBottom, isOnRightSide = props.isOnRightSide, isOpen = props.isOpen, isHiddenOnDismiss = props.isHiddenOnDismiss, hasCustomNavigation = props.hasCustomNavigation, theme = props.theme, _e = props.type, type = _e === void 0 ? PanelType.smallFixedFar : _e;\n    var effects = theme.effects, fonts = theme.fonts, semanticColors = theme.semanticColors;\n    var classNames = getGlobalClassNames(GlobalClassNames, theme);\n    var isCustomPanel = type === PanelType.custom || type === PanelType.customNear;\n    return {\n        root: [\n            classNames.root,\n            theme.fonts.medium,\n            isOpen && classNames.isOpen,\n            hasCloseButton && classNames.hasCloseButton,\n            {\n                pointerEvents: 'none',\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                right: 0,\n                bottom: 0,\n            },\n            isCustomPanel && isOnRightSide && classNames.custom,\n            isCustomPanel && !isOnRightSide && classNames.customNear,\n            className,\n        ],\n        overlay: [\n            {\n                pointerEvents: 'auto',\n                cursor: 'pointer',\n            },\n            isOpen && isAnimating && AnimationClassNames.fadeIn100,\n            !isOpen && isAnimating && AnimationClassNames.fadeOut100,\n        ],\n        hiddenPanel: [\n            !isOpen &&\n                !isAnimating &&\n                isHiddenOnDismiss && {\n                visibility: 'hidden',\n            },\n        ],\n        main: [\n            classNames.main,\n            {\n                backgroundColor: semanticColors.bodyBackground,\n                boxShadow: effects.elevation64,\n                pointerEvents: 'auto',\n                position: 'absolute',\n                display: 'flex',\n                flexDirection: 'column',\n                overflowX: 'hidden',\n                overflowY: 'auto',\n                WebkitOverflowScrolling: 'touch',\n                bottom: 0,\n                top: 0,\n                // left, right, width are overridden depending on the type of the Panel and the screen breakpoint.\n                left: panelMargin.auto,\n                right: panelMargin.none,\n                width: panelWidth.full,\n                selectors: __assign((_a = {}, _a[HighContrastSelector] = {\n                    borderLeft: \"3px solid \".concat(semanticColors.variantBorder),\n                    borderRight: \"3px solid \".concat(semanticColors.variantBorder),\n                }, _a), getPanelBreakpoints(type)),\n            },\n            type === PanelType.smallFluid && {\n                left: panelMargin.none,\n            },\n            type === PanelType.smallFixedNear && {\n                left: panelMargin.none,\n                right: panelMargin.auto,\n                width: panelWidth.xs,\n            },\n            type === PanelType.customNear && {\n                right: 'auto',\n                left: 0,\n            },\n            isCustomPanel && {\n                maxWidth: '100vw',\n            },\n            isOpen && isAnimating && !isOnRightSide && AnimationClassNames.slideRightIn40,\n            isOpen && isAnimating && isOnRightSide && AnimationClassNames.slideLeftIn40,\n            !isOpen && isAnimating && !isOnRightSide && AnimationClassNames.slideLeftOut40,\n            !isOpen && isAnimating && isOnRightSide && AnimationClassNames.slideRightOut40,\n            focusTrapZoneClassName,\n        ],\n        commands: [\n            classNames.commands,\n            {\n                // Ensures that the sticky header always has a background to prevent overlaps on scroll.\n                backgroundColor: semanticColors.bodyBackground,\n                paddingTop: 18,\n                selectors: (_b = {},\n                    _b[\"@media (min-height: \".concat(ScreenWidthMinMedium, \"px)\")] = {\n                        position: 'sticky',\n                        top: 0,\n                        zIndex: 1,\n                    },\n                    _b),\n            },\n            hasCustomNavigation && {\n                paddingTop: 'inherit',\n            },\n        ],\n        navigation: [\n            classNames.navigation,\n            {\n                display: 'flex',\n                justifyContent: 'flex-end',\n            },\n            hasCustomNavigation && {\n                height: commandBarHeight,\n            },\n        ],\n        contentInner: [\n            classNames.contentInner,\n            {\n                display: 'flex',\n                flexDirection: 'column',\n                flexGrow: 1,\n                overflowY: 'hidden',\n            },\n        ],\n        header: [\n            classNames.header,\n            sharedPaddingStyles,\n            {\n                alignSelf: 'flex-start',\n            },\n            hasCloseButton &&\n                !hasCustomNavigation && {\n                flexGrow: 1,\n            },\n            hasCustomNavigation && {\n                // Ensure that title doesn't shrink if screen is too small\n                flexShrink: 0,\n            },\n        ],\n        headerText: [\n            classNames.headerText,\n            fonts.xLarge,\n            {\n                color: semanticColors.bodyText,\n                lineHeight: '27px',\n                overflowWrap: 'break-word',\n                wordWrap: 'break-word',\n                wordBreak: 'break-word',\n                hyphens: 'auto',\n            },\n            headerClassName,\n        ],\n        scrollableContent: [\n            classNames.scrollableContent,\n            {\n                overflowY: 'auto',\n            },\n            isFooterAtBottom && {\n                flexGrow: 1,\n                display: 'inherit',\n                flexDirection: 'inherit',\n            },\n        ],\n        content: [\n            classNames.content,\n            sharedPaddingStyles,\n            {\n                paddingBottom: 20,\n            },\n            isFooterAtBottom && {\n                selectors: (_c = {},\n                    _c[\"@media (min-height: \".concat(ScreenWidthMinMedium, \"px)\")] = {\n                        flexGrow: 1,\n                    },\n                    _c),\n            },\n        ],\n        footer: [\n            classNames.footer,\n            {\n                // Ensure that footer doesn't shrink if screen is too small\n                flexShrink: 0,\n                borderTop: '1px solid transparent',\n                transition: \"opacity \".concat(AnimationVariables.durationValue3, \" \").concat(AnimationVariables.easeFunction2),\n                selectors: (_d = {},\n                    _d[\"@media (min-height: \".concat(ScreenWidthMinMedium, \"px)\")] = {\n                        position: 'sticky',\n                        bottom: 0,\n                    },\n                    _d),\n            },\n            isFooterSticky && {\n                backgroundColor: semanticColors.bodyBackground,\n                borderTopColor: semanticColors.variantBorder,\n            },\n        ],\n        footerInner: [\n            classNames.footerInner,\n            sharedPaddingStyles,\n            {\n                paddingBottom: 16,\n                paddingTop: 16,\n            },\n        ],\n        subComponentStyles: {\n            closeButton: {\n                root: [\n                    classNames.closeButton,\n                    {\n                        marginRight: 14,\n                        color: theme.palette.neutralSecondary,\n                        fontSize: IconFontSizes.large,\n                    },\n                    hasCustomNavigation && {\n                        marginRight: 0,\n                        height: 'auto',\n                        width: '44px',\n                    },\n                ],\n                rootHovered: {\n                    color: theme.palette.neutralPrimary,\n                },\n            },\n        },\n    };\n};\n//# sourceMappingURL=Panel.styles.js.map","import { styled } from '../../Utilities';\nimport { PanelBase } from './Panel.base';\nimport { getStyles } from './Panel.styles';\n/**\n * Panel description\n */\nexport var Panel = styled(PanelBase, getStyles, undefined, {\n    scope: 'Panel',\n});\n//# sourceMappingURL=Panel.js.map"],"names":["getRect","element","win","theWin","getWindow","rect","nativeElementMap","labelProperties","audioProperties","videoProperties","olProperties","liProperties","anchorProperties","buttonProperties","inputProperties","textAreaProperties","selectProperties","optionProperties","tableProperties","trProperties","thProperties","tdProperties","colGroupProperties","colProperties","formProperties","iframeProperties","imgProperties","getNativeElementProps","tagName","props","excludedPropNames","allowedPropNames","htmlElementProperties","getNativeProps","SELECTION_CHANGE","SELECTION_ITEMS_CHANGE","SelectionMode","SelectionDirection","Selection","options","_i","_a","onSelectionChanged","onItemsChanged","getKey","_b","canSelectItem","items","_c","selectionMode","defaultGetKey","item","index","key","isEnabled","suppressChange","isModal","shouldClear","newKeyToIndexMap","newUnselectableIndices","hasSelectionChanged","haveItemsChanged","i","newExemptedIndicies","newExemptedCount","indexProperty","exemptKey","newIndex","EventGroup","fromIndex","count","endIndex","selectableCount","isAllSelected","isSelected","shouldAnchor","isExempt","canSelect","anchorIndex","startIndex","newAnchorIndex","clearSelection","isRangeSelected","preserveModalState","getClassNames","classNamesFunction","useLink","forwardedRef","as","className","disabled","href","onClick","styles","theme","underline","rootRef","React.useRef","mergedRootRefs","useMergedRefs","useComponentRef","useFocusRects","classNames","_onClick","ev","rootType","state","slots","slotProps","__assign","adjustPropsForRootType","link","React.useImperativeHandle","RootType","target","restProps","__rest","LinkBase","React.forwardRef","ref","React.createElement","GlobalClassNames","getStyles","_d","_e","_f","_g","isButton","isDisabled","isUnderlined","semanticColors","linkColor","linkInteractedColor","linkDisabledColor","focusBorderColor","getGlobalClassNames","IsFocusVisibleClassName","HighContrastSelector","Link","styled","SELECTION_DISABLED_ATTRIBUTE_NAME","SELECTION_INDEX_ATTRIBUTE_NAME","SELECTION_SPAN_ATTRIBUTE_NAME","SELECTION_TOGGLE_ATTRIBUTE_NAME","SELECTION_INVOKE_ATTRIBUTE_NAME","SELECTION_INVOKE_TOUCH_ATTRIBUTE_NAME","SELECTALL_TOGGLE_ALL_ATTRIBUTE_NAME","SELECTION_SELECT_ATTRIBUTE_NAME","SelectionZone","_super","__extends","_this","React.createRef","selection","doc","elementContains","getParent","isToggleModifierPressed","isToggle","itemRoot","span","toggleWithoutModifierPressed","enableTouchInvocationTarget","isSelectionDisabled","onItemContextMenu","skipPreventDefault","onItemInvoked","selectionClearedOnEscapePress","isSelectAllKey","KeyCodes","isClearSelectionKey","Async","initializeComponentRef","nextProps","prevState","css","FocusRects","previousProps","type","scrollParent","findScrollableParent","selectionClearedOnSurfaceClick","isAlreadySingleSelected","keyCode","indexValue","spanValue","attributeName","value","getDocument","isElementTabbable","handleFocus","isTouch","React.Component","CollapseAllVisibility","ColumnActionsMode","ConstrainMode","ColumnDragEndLocation","DetailsListLayoutMode","CheckboxVisibility","SPACER_WIDTH","GroupSpacer","indentWidth","role","width","beziers","compact","palette","AnimationVariables","DetailsRowGlobalClassNames","IsFocusableSelector","DEFAULT_CELL_STYLE_PROPS","DEFAULT_ROW_HEIGHTS","values","getDetailsRowStyles","_h","_j","_k","_l","_m","_o","_p","droppingClassName","isCheckVisible","checkboxCellClassName","_q","cellStyleProps","enableUpdateAnimations","fonts","neutralPrimary","white","neutralSecondary","neutralLighter","neutralLight","neutralDark","neutralQuaternaryAlt","_r","focusBorder","focusedLinkColor","colors","rowHighContrastFocus","selectedStyles","getFocusStyle","LinkGlobalClassNames","getHighContrastNoAdjustStyle","cannotSelectStyles","rootCompactStyles","cellCompactStyles","defaultCellStyles","AnimationClassNames","AnimationStyles","FontWeights","HEADER_HEIGHT","getCellStyles","getDetailsHeaderStyles","isResizingColumn","isSizing","isAllCollapsed","cellSizerFadeInStyles","cellStyles","GROUP_EXPANDER_WIDTH","focusClear","getRTL","hiddenContentStyle","CheckGlobalClassNames","height","checked","isRTL","sharedCircleCheck","IconFontSizes","CHECK_CELL_WIDTH","getDetailsRowCheckStyles","isHeader","selected","anySelected","isVisible","rowHeight","compactRowHeight","DEFAULT_GROUP_HEADER_HEIGHT","COMPACT_GROUP_HEADER_HEIGHT","isCollapsed","cellLeftPadding","finalRowHeight","checkExpandResetStyles","EXPAND_BUTTON_WIDTH","CheckBase","useFastIcons","IconComponent","FontIcon","Icon","Check","SpinnerSize","SpinnerType","SpinnerBase","size","ariaLabel","ariaLive","label","labelPosition","statusMessage","nativeProps","divProperties","styleSize","DelayedRender","spinAnimation","memoizeFunction","keyframes","Spinner","GroupHeaderBase","group","onToggleCollapse","isGroupLoading","newCollapsed","newLoadingVisible","onGroupHeaderKeyUp","shouldOpen","getRTLSafeKeyCode","shouldClose","onGroupHeaderClick","onRenderName","composeRenderFunction","React.Fragment","getId","previousState","groupLevel","viewport","loadingText","onRenderGroupHeaderCheckbox","isCollapsedGroupSelectVisible","expandButtonProps","expandButtonIcon","selectAllButtonProps","ariaLevel","ariaPosInSet","ariaSetSize","ariaRowIndex","onRenderTitle","defaultCheckboxRender","onRenderCheckbox","isLoadingVisible","canSelectGroup","isSelectionCheckVisible","currentlySelected","checkboxProps","FastCheck","React.memo","GroupHeader","GroupShowAllBase","showAllLinkText","onToggleSummarize","memoizedOnClick","React.useCallback","GroupShowAll","GroupFooterBase","footerText","GroupFooter","ScrollToMode","getScrollHeight","el","scrollHeight","getScrollYPosition","scrollPos","setScrollYPosition","pos","RESIZE_DELAY","MIN_SCROLL_UPDATE_DELAY","MAX_SCROLL_UPDATE_DELAY","IDLE_DEBOUNCE_DELAY","DONE_SCROLLING_WAIT","DEFAULT_ITEMS_PER_PAGE","DEFAULT_PAGE_HEIGHT","DEFAULT_RENDERED_WINDOWS_BEHIND","DEFAULT_RENDERED_WINDOWS_AHEAD","PAGE_KEY_PREFIX","SPACER_KEY_PREFIX","SCROLL_RATIO","EMPTY_RECT","_measurePageRect","_measureSurfaceRect","_measureScrollRect","List","canUseDOM","surfaceElement","divProps","surfaceRef","pageElements","pageProps","defaultRender","onRenderCell","onRenderCellConditional","cellRole","cells","itemKey","renderCell","cell","measureItem","scrollToMode","renderCount","allowedRect","scrollTop","itemsPerPage","itemIndex","pageSpecification","pageHeight","requestedIndexIsInPage","scrollRect","scrollPosition","scrollWindow","itemPositionWithinPage","itemIndexInPage","scrollBottom","itemIsFullyVisible","itemIsPartiallyAbove","itemIsPartiallyBelow","pages","pages_1","page","isPageVisible","totalRowHeight","getWindowEx","finalProps","finalState","heightsChanged","newProps","newState","oldPages","newPages","shouldComponentUpdate","oldPage","newPage","onRenderSurface","onRenderRoot","pages_2","finalOnRenderSurface","finalOnRenderRoot","onShouldVirtualize","usePageCache","cachedPage","pageStyle","onRenderPage","pageElement","newRef","getPageStyle","indexString","_isContainedWithin","renderedWindowsAhead","renderedWindowsBehind","requiredWindowsAhead","requiredWindowsBehind","windowsAhead","windowsBehind","newListState","oldListPages","onPageAdded","onPageRemoved","renderedIndexes","oldPages_1","newPages_1","heightChanged","hasChangedHeight","cachedHeight","newClientRect","getPageHeight","materializedRect","pageTop","currentSpacer","focusedIndex","shouldVirtualize","isFirstRender","_loop_1","this_1","pageData","pageBottom","isPageRendered","findIndex","isPageInAllowedRange","isPageInRequiredRange","isPageFocused","isFirstPage","itemsInPage","_mergeRect","state_1","visibleRect","getPageSpecification","itemCount","visibileRect","pageKey","style","data","isSpacer","forceUpdate","surfaceRect","visibleTop","_expandRect","containsFocus","WindowContext","pagesBefore","pagesAfter","top","innerRect","outerRect","targetRect","newRect","DEFAULT_DROPPING_CSS_CLASS","GroupedListSection","subGroup","subGroupIndex","dragDropEvents","dragDropHelper","eventsToRegister","getGroupItemLimit","groupNestingDepth","groupProps","headerProps","showAllProps","footerProps","listProps","onRenderGroupHeader","onRenderGroupShowAll","onRenderGroupFooter","nestingDepth","groupIndex","newIsDropping","event","isDropping","groupedListClassNames","groups","isShowAllVisible","hasNestedGroups","version","dividerProps","ariaControlsProps","groupHeaderProps","groupShowAllProps","groupFooterProps","isDraggable","subGroupCount","ROW_HEIGHT","COMPACT_ROW_HEIGHT","GroupedListBase","finalListProps","getGroupHeight","pageGroup","listVersion","nextState","shouldForceUpdates","previousListVersion","focusZoneProps","rootListProps","shouldEnterInnerZone","FocusZone","FocusZoneDirection","allCollapsed","onToggleCollapseAll","level","groupsInLevel","onGroupExpandStateChanged","newIsSomeGroupExpanded","GroupedList","GetGroupCount","total","remainingGroups","__spreadArray","currentGroup","DetailsRowCheckBase","onRenderDetailsCheckbox","buttonProps","_fastDefaultCheckboxRender","_defaultCheckboxRender","detailsCheckboxProps","checkRole","DetailsRowCheck","MOUSEDOWN_PRIMARY_BUTTON","MOUSEMOVE_PRIMARY_BUTTON","DragDropHelper","params","root","events","dragDropOptions","handlers","onDragStart","onDragLeave","onDragEnter","onDragEnd","onDrop","onDragOver","onMouseDown","isDroppable","activeTarget","eventMap","context","updateDropState_1","dragDropTarget","eventMap_1","event_1","handler","handlers_1","buttons","parentElement","childElement","dragContext","TRANSITION_DURATION_DRAG","TRANSITION_DURATION_DROP","CLASSNAME_ADD_INTERVAL","defaultOnRenderHeader","DetailsColumnBase","columnProps","iconProps","tooltipHostProps","onColumnClick","column","onColumnKeyDown","selectedItems","onColumnContextMenu","parentId","onRenderColumnHeaderTooltip","onRenderFilterIcon","onRenderHeader","hasInnerButton","shouldAssociateTooltip","accNameDescription","columnIndex","getDetailsColumnStyles","headerClassName","iconClassName","isActionable","isEmpty","isIconVisible","isPadded","isIconOnly","transitionDurationDrag","transitionDurationDrop","nearIconStyle","borderWhileDragging","borderAfterDragOrDrop","DetailsColumn","SelectAllVisibility","NO_COLUMNS","DetailsHeaderBase","newValue","columnReorderProps","targetIndex","isValidDrop","dragDropDetails","showCheckbox","hasGroupExpander","offset","columnDragEndLocation","columns","prevX","prevMid","prevRef","frozenColumnCountFromStart","frozenColumnCountFromEnd","dropHintElement","newMid","clientX","isRtl","clientRect","headerOriginX","eventXRelativePosition","currentDropHintIndex","_liesBetween","currentIndex","lastValidColumn","indexToUpdate","_isBefore","_isAfter","middleIndex","columnResizeDetails","_stopPropagation","columnIndexAttr","onColumnResized","increment","onColumnIsSizingChanged","movement","prevProps","previousColumns","ariaLabelForToggleAllGroupsButton","ariaLabelForSelectAllCheckbox","selectAllVisibility","ariaLabelForSelectionColumn","checkboxVisibility","isCheckboxHidden","isCheckboxAlwaysVisible","showGroupExpander","columnIndexOffset","_isDraggable","Layer","columnReorderOptions","displayProperty","onRenderDivider","dropHintIndex","onColumnAutoResized","rtl","left","right","a","b","DetailsHeader","getCellText","DetailsRowFields","rowClassNames","onRenderItemColumn","getCellValueKey","propsOnRenderField","cellsByColumn","rowHeaderId","cellValueKeysRef","cellValueKeys","defaultOnRenderField","fieldProps","cellValueKey","onRender","fieldItem","fieldItemIndex","getValueKey","defaultOnRender","onRenderField","previousValueKey","showAnimation","DetailsRowBase","selectionState","getSelectionState","shallowCompare","onDidMount","columnMeasureInfo","newWidth","onWillUnmount","newSelectionState","id","flatIndexOffset","onRenderCheck","getRowAriaLabel","getRowAriaDescription","getRowAriaDescribedBy","isGridRow","checkButtonAriaLabel","rowFieldsAs","isSelectionModal","ariaRowDescription","ariaDescribedBy","isContentUnselectable","ariaSelected","ariaPositionInSet","focusZoneDirection","RowFields","composeComponentAs","rowFields","defaultRole","hasRowHeader","ariaLabelledby","groupedListRowProps","onMeasureDone","forceIntoFirstElement","DetailsRow","MAX_RESIZE_ATTEMPTS","withViewport","ComposedComponent","WithViewportComponent","withForceUpdate","viewportElement","scrollElement","updateComponent","isSizeChanged","delayFirstMeasure","disableResizeObserver","skipViewportMeasures","previousSkipViewportMeasures","newViewport","BaseDecorator","MIN_COLUMN_WIDTH","rowFocusZoneAddTabIndexProps","rowFocusZoneNoTabIndexProps","DetailsListInner","ariaLabelForListHeader","constrainMode","isPlaceholderData","isHeaderVisible","layoutMode","onColumnHeaderClick","onColumnHeaderContextMenu","selectionPreservedOnEmptyClick","selectionZoneProps","ariaLabelForGrid","rowElementEventMap","shouldApplyApplicationRole","minimumPixelsForDrag","adjustedColumns","isSomeGroupExpanded","listRef","focusZoneRef","groupedListRef","headerRef","onRowDidMount","onRowWillUnmount","disableSelectionZone","isSelectedOnFocus","onActiveRowChanged","onBlur","onRenderMissingItem","checkButtonGroupAriaLabel","useReducedRowRenderer","enterModalSelectionOnTouch","onRenderDefaultRow","selectionZoneRef","rowId","getGroupNestingDepth","groupedDetailsListIndexMap","useGroupedDetailsListIndexMap","additionalListProps","React.useMemo","isSelectAllVisible","defaultOnRenderDetailsHeader","detailsHeaderProps","defaultOnRenderDetailsFooter","propsOnRenderDetailsHeader","onRenderDetailsHeader","propsOnRenderDetailsFooter","onRenderDetailsFooter","detailsFooterProps","columnReorderOnDragEnd","onColumnDragEnd","dropLocation","finalDropLocation","rowCount","colCount","onRenderDetailsGroupFooter","finalOnRenderDetailsGroupFooter","onRenderDetailsGroupHeader","finalOnRenderDetailsGroupHeader","groupKey","totalRowCount","finalGroupProps","sumColumnWidths","useConst","totalWidth","collapseAllVisibility","rowWidth","finalOnRenderRow","numOfGroupHeadersBeforeItem","rowRole","rowFocusZoneProps","rowProps","onRenderListCell","isRightArrow","focusZoneInnerProps","FinalGroupedList","list","onHeaderKeyDown","onContentKeyDown","DetailsListBase","setKey","isAllGroupsCollapsed","newViewportWidth","oldViewportWidth","shouldResetSelection","row","collapsed","resizingColumn","resizingColumnIndex","newCalculatedWidth","max","totalCount","currentRow","onActiveItemChanged","newColumnIndex","col","isCheckboxColumnHidden","draggedIndex","isValidTargetIndex","getDocumentEx","viewportWidth","newItems","newColumns","lastWidth","lastSelectionMode","buildColumns","flexMargin","remainingWidth","sumProportionalWidth","getPaddedWidth","rowCheckWidth","CHECKBOX_WIDTH","groupExpandWidth","GROUP_EXPAND_WIDTH","widthFraction","newColumn","fullWidth","shrinkWidth","minimumWidth","availableWidth","baseColumn","lastIndex","minWidth","overflowWidth","originalWidth","isLast","overrides","spaceLeft","maxWidth","__decorate","canResizeColumns","sortedColumnKey","isSortedDescending","groupedColumnKey","isMultiline","columnActionsMode","firstItem","propName","paddingOnly","indexMap","numGroupHeaders","groups_1","getDetailsListStyles","isHorizontalConstrained","isFixed","DetailsList","PanelType","PanelVisibilityState","PanelBase","elt","entries","allowOverscrollOnElement","allowScrollOnElement","onRenderNavigationContent","closeButtonAriaLabel","hasCloseButton","iconButtonStyles","IconButton","headerTextId","headerText","headerTextProps","onRenderFooterContent","newVisibilityState","allowTouchBodyScroll","shouldListenOnOuterClick","previousShouldListenOnOuterClick","elementToFocusOnDismiss","firstFocusableSelector","focusTrapZoneProps","forceFocusInsideTrap","ignoreExternalFocusing","isBlocking","isFooterAtBottom","isLightDismiss","isHiddenOnDismiss","layerProps","overlayProps","popupProps","customWidth","onLightDismissClick","onRenderNavigation","onRenderBody","onRenderFooter","isFooterSticky","visibility","isLeft","isOnRightSide","customWidthStyles","isOpen","isAnimating","_classNames","_allowTouchBodyScroll","overlay","Overlay","Popup","FocusTrapZone","callback","resizeObserver","scrollableContent","innerHeight_1","panel","panelWidth","panelMargin","smallPanelSelectors","ScreenWidthMinMedium","mediumPanelSelectors","ScreenWidthMinLarge","ScreenWidthMinXLarge","largePanelSelectors","ScreenWidthMinUhfMobile","ScreenWidthMinXXLarge","largeFixedPanelSelectors","extraLargePanelSelectors","getPanelBreakpoints","selectors","commandBarHeight","sharedPaddingStyles","focusTrapZoneClassName","hasCustomNavigation","effects","isCustomPanel","Panel"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57]}