{"version":3,"file":"static/js/vendor.fluentui.react~ced32e76.f5e7fbb1.js","mappings":"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","sources":["../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipData/KeytipData.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipData/useKeytipRef.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipData/useKeytipData.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipLayer/KeytipLayer.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipLayer/KeytipTree.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipLayer/KeytipLayer.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/KeytipLayer/KeytipLayer.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Keytip/KeytipContent.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Keytip/Keytip.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Keytip/KeytipContent.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Keytip/Keytip.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Label/Label.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Label/Label.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Label/Label.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Layer/Layer.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Layer/Layer.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Layer/Layer.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Layer/Layer.notification.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Layer/LayerHost.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Link/useLink.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Link/Link.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Link/Link.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Link/Link.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/List/List.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/List/List.types.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MarqueeSelection/MarqueeSelection.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MarqueeSelection/MarqueeSelection.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MarqueeSelection/MarqueeSelection.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MessageBar/MessageBar.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MessageBar/MessageBar.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MessageBar/MessageBar.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/MessageBar/MessageBar.types.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Modal/Modal.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Modal/Modal.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Modal/Modal.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Nav/Nav.base.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Nav/Nav.styles.js","../../../../node_modules/.pnpm/@fluentui+react@8.48.0_@types+react-dom@17.0.22_@types+react@17.0.69_react-dom@17.0.1_react@17.0.1__react@17.0.1/node_modules/@fluentui/react/lib/components/Nav/Nav.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport { DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET } from '../../utilities/keytips/index';\nimport { useKeytipData } from './useKeytipData';\n/**\n * A small element to help the target component correctly read out its aria-describedby for its Keytip\n * {@docCategory Keytips}\n */\nexport var KeytipData = function (props) {\n var _a;\n var children = props.children, keytipDataProps = __rest(props, [\"children\"]);\n var _b = useKeytipData(keytipDataProps), keytipId = _b.keytipId, ariaDescribedBy = _b.ariaDescribedBy;\n return children((_a = {},\n _a[DATAKTP_TARGET] = keytipId,\n _a[DATAKTP_EXECUTE_TARGET] = keytipId,\n _a['aria-describedby'] = ariaDescribedBy,\n _a));\n};\n//# sourceMappingURL=KeytipData.js.map","import * as React from 'react';\nimport { DATAKTP_TARGET, DATAKTP_EXECUTE_TARGET, DATAKTP_ARIA_TARGET } from '../../utilities/keytips/index';\nimport { useKeytipData } from './useKeytipData';\n/**\n * Hook that creates a ref which is used for passing to Keytip target element.\n * The ref will handle setting the attributes needed for Keytip to work.\n */\nexport function useKeytipRef(options) {\n var _a = useKeytipData(options), keytipId = _a.keytipId, ariaDescribedBy = _a.ariaDescribedBy;\n var contentRef = React.useCallback(function (contentElement) {\n if (!contentElement) {\n return;\n }\n var targetElement = findFirstElement(contentElement, DATAKTP_TARGET) || contentElement;\n var executeElement = findFirstElement(contentElement, DATAKTP_EXECUTE_TARGET) || targetElement;\n var ariaElement = findFirstElement(contentElement, DATAKTP_ARIA_TARGET) || executeElement;\n setAttribute(targetElement, DATAKTP_TARGET, keytipId);\n setAttribute(executeElement, DATAKTP_EXECUTE_TARGET, keytipId);\n setAttribute(ariaElement, 'aria-describedby', ariaDescribedBy, true);\n }, [keytipId, ariaDescribedBy]);\n return contentRef;\n}\nexport function setAttribute(element, attributeName, attributeValue, append) {\n if (append === void 0) { append = false; }\n if (element && attributeValue) {\n var value = attributeValue;\n if (append) {\n var currentValue = element.getAttribute(attributeName);\n if (currentValue && currentValue.indexOf(attributeValue) === -1) {\n value = currentValue + \" \" + attributeValue;\n }\n }\n element.setAttribute(attributeName, value);\n }\n}\nfunction findFirstElement(rootElement, dataAttribute) {\n return rootElement.querySelector(\"[\" + dataAttribute + \"]\");\n}\n//# sourceMappingURL=useKeytipRef.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { useConst, usePrevious } from '@fluentui/react-hooks';\nimport { mergeAriaAttributeValues } from '../../Utilities';\nimport { KeytipManager, mergeOverflows, sequencesToID, getAriaDescribedBy } from '../../utilities/keytips/index';\n/**\n * Hook that creates attributes for components which are enabled with Keytip.\n */\nexport function useKeytipData(options) {\n var uniqueId = React.useRef();\n var keytipProps = options.keytipProps\n ? __assign({ disabled: options.disabled }, options.keytipProps) : undefined;\n var keytipManager = useConst(KeytipManager.getInstance());\n var prevOptions = usePrevious(options);\n // useLayoutEffect used to strictly emulate didUpdate/didMount behavior\n // eslint-disable-next-line no-restricted-properties\n React.useLayoutEffect(function () {\n if (uniqueId.current &&\n keytipProps &&\n ((prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.keytipProps) !== options.keytipProps || (prevOptions === null || prevOptions === void 0 ? void 0 : prevOptions.disabled) !== options.disabled)) {\n keytipManager.update(keytipProps, uniqueId.current);\n }\n });\n // eslint-disable-next-line no-restricted-properties\n React.useLayoutEffect(function () {\n // Register Keytip in KeytipManager\n if (keytipProps) {\n uniqueId.current = keytipManager.register(keytipProps);\n }\n return function () {\n // Unregister Keytip in KeytipManager\n keytipProps && keytipManager.unregister(keytipProps, uniqueId.current);\n };\n // this is meant to run only at mount, and updates are handled separately\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var nativeKeytipProps = {\n ariaDescribedBy: undefined,\n keytipId: undefined,\n };\n if (keytipProps) {\n nativeKeytipProps = getKeytipData(keytipManager, keytipProps, options.ariaDescribedBy);\n }\n return nativeKeytipProps;\n}\n/**\n * Gets the aria- and data- attributes to attach to the component\n * @param keytipProps - options for Keytip\n * @param describedByPrepend - ariaDescribedBy value to prepend\n */\nfunction getKeytipData(keytipManager, keytipProps, describedByPrepend) {\n // Add the parent overflow sequence if necessary\n var newKeytipProps = keytipManager.addParentOverflow(keytipProps);\n // Construct aria-describedby and data-ktp-id attributes\n var ariaDescribedBy = mergeAriaAttributeValues(describedByPrepend, getAriaDescribedBy(newKeytipProps.keySequences));\n var keySequences = __spreadArray([], newKeytipProps.keySequences);\n if (newKeytipProps.overflowSetSequence) {\n keySequences = mergeOverflows(keySequences, newKeytipProps.overflowSetSequence);\n }\n var keytipId = sequencesToID(keySequences);\n return {\n ariaDescribedBy: ariaDescribedBy,\n keytipId: keytipId,\n };\n}\n//# sourceMappingURL=useKeytipData.js.map","import { ZIndexes } from '../../Styling';\nexport var getLayerStyles = function (props) {\n return {\n root: [\n {\n // Prioritize the Keytips above all other Layers\n zIndex: ZIndexes.KeytipLayer,\n },\n ],\n };\n};\nexport var getStyles = function (props) {\n return {\n innerContent: [\n {\n position: 'absolute',\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n border: 0,\n overflow: 'hidden',\n visibility: 'hidden',\n },\n ],\n };\n};\n//# sourceMappingURL=KeytipLayer.styles.js.map","import { __spreadArray } from \"tslib\";\nimport { find, isElementVisibleAndNotHidden, values } from '../../Utilities';\nimport { ktpTargetFromSequences, mergeOverflows, sequencesToID } from '../../utilities/keytips/KeytipUtils';\nimport { KTP_LAYER_ID } from '../../utilities/keytips/KeytipConstants';\n/**\n * This class is responsible for handling the parent/child relationships between keytips\n */\nvar KeytipTree = /** @class */ (function () {\n /**\n * KeytipTree constructor\n */\n function KeytipTree() {\n this.nodeMap = {};\n // Root has no keytipSequence\n this.root = {\n id: KTP_LAYER_ID,\n children: [],\n parent: '',\n keySequences: [],\n };\n this.nodeMap[this.root.id] = this.root;\n }\n /**\n * Add a keytip node to this KeytipTree\n *\n * @param keytipProps - Keytip to add to the Tree\n * @param uniqueID - Unique ID for this keytip\n * @param persisted - T/F if this keytip should be marked as persisted\n */\n KeytipTree.prototype.addNode = function (keytipProps, uniqueID, persisted) {\n var fullSequence = this._getFullSequence(keytipProps);\n var nodeID = sequencesToID(fullSequence);\n // Take off the last item to calculate the parent sequence\n fullSequence.pop();\n // Parent ID is the root if there aren't any more sequences\n var parentID = this._getParentID(fullSequence);\n // Create node and add to map\n var node = this._createNode(nodeID, parentID, [], keytipProps, persisted);\n this.nodeMap[uniqueID] = node;\n // Try to add self to parents children\n var parents = this.getNodes([parentID]);\n parents.forEach(function (parent) { return parent.children.push(nodeID); });\n };\n /**\n * Updates a node in the tree\n *\n * @param keytipProps - Keytip props to update\n * @param uniqueID - Unique ID for this keytip\n */\n KeytipTree.prototype.updateNode = function (keytipProps, uniqueID) {\n var fullSequence = this._getFullSequence(keytipProps);\n var nodeID = sequencesToID(fullSequence);\n // Take off the last item to calculate the parent sequence\n fullSequence.pop();\n // Parent ID is the root if there aren't any more sequences\n var parentID = this._getParentID(fullSequence);\n var node = this.nodeMap[uniqueID];\n var prevParent = node.parent;\n if (node) {\n // Fix parent nodes if needed\n if (prevParent !== parentID) {\n // If parent has changed, remove child from old parent\n this._removeChildFromParents(prevParent, node.id);\n }\n if (node.id !== nodeID) {\n // If the ID of the node has changed, update node's parent's array of children with new ID\n var parents = this.getNodes([parentID]);\n parents.forEach(function (parent) {\n var index = parent.children.indexOf(node.id);\n index >= 0 ? (parent.children[index] = nodeID) : parent.children.push(nodeID);\n });\n }\n // Update values\n node.id = nodeID;\n node.keySequences = keytipProps.keySequences;\n node.overflowSetSequence = keytipProps.overflowSetSequence;\n node.onExecute = keytipProps.onExecute;\n node.onReturn = keytipProps.onReturn;\n node.hasDynamicChildren = keytipProps.hasDynamicChildren;\n node.hasMenu = keytipProps.hasMenu;\n node.parent = parentID;\n node.disabled = keytipProps.disabled;\n }\n };\n /**\n * Removes a node from the KeytipTree\n *\n * @param sequence - full string of the node to remove\n */\n KeytipTree.prototype.removeNode = function (keytipProps, uniqueID) {\n var fullSequence = this._getFullSequence(keytipProps);\n var nodeID = sequencesToID(fullSequence);\n // Take off the last sequence to calculate the parent ID\n fullSequence.pop();\n // Parent ID is the root if there aren't any more sequences\n this._removeChildFromParents(this._getParentID(fullSequence), nodeID);\n if (this.nodeMap[uniqueID]) {\n // Remove the node from the nodeMap\n delete this.nodeMap[uniqueID];\n }\n };\n /**\n * Searches the currentKeytip's children to exactly match a sequence. Will not match disabled nodes but\n * will match persisted nodes\n *\n * @param keySequence - string to match\n * @param currentKeytip - The keytip whose children will try to match\n * @returns The node that exactly matched the keySequence, or undefined if none matched\n */\n KeytipTree.prototype.getExactMatchedNode = function (keySequence, currentKeytip) {\n var _this = this;\n var possibleNodes = this.getNodes(currentKeytip.children);\n var matchingNodes = possibleNodes.filter(function (node) {\n return _this._getNodeSequence(node) === keySequence && !node.disabled;\n });\n // If we found no nodes, we are done\n if (matchingNodes.length === 0) {\n return undefined;\n }\n // Since the matching nodes all have the same key sequence,\n // Grab the first one build the correct selector\n var node = matchingNodes[0];\n // If we have exactly one node, return it\n if (matchingNodes.length === 1) {\n return node;\n }\n // Get the potential target elements based on a selector from the sequences\n var keySequences = node.keySequences;\n var overflowSetSequence = node.overflowSetSequence;\n var fullKeySequences = overflowSetSequence ? mergeOverflows(keySequences, overflowSetSequence) : keySequences;\n var keytipTargetSelector = ktpTargetFromSequences(fullKeySequences);\n var potentialTargetElements = document.querySelectorAll(keytipTargetSelector);\n // If we have less nodes than the potential target elements,\n // we won't be able to map element to node, return the first node.\n // Note, the number of nodes could be more than the number of potential\n // target elements, if an OverflowSet is involved\n if (matchingNodes.length < potentialTargetElements.length) {\n return node;\n }\n // Attempt to find the node that corresponds to the first visible/non-hidden element\n var matchingIndex = Array.from(potentialTargetElements).findIndex(function (element) {\n return isElementVisibleAndNotHidden(element);\n });\n if (matchingIndex !== -1) {\n return matchingNodes[matchingIndex];\n }\n // We did not find any visible elements associated with any of the nodes.\n // We may be dealing with a keytip that is a submenu in an OverflowSet.\n // Worst case, fall back to the first node returned\n var overflowNode = matchingNodes.find(function (matchingNode) { return matchingNode.hasOverflowSubMenu; });\n return overflowNode || node;\n };\n /**\n * Searches the currentKeytip's children to find nodes that start with the given sequence. Will not match\n * disabled nodes but will match persisted nodes\n *\n * @param keySequence - string to partially match\n * @param currentKeytip - The keytip whose children will try to partially match\n * @returns List of tree nodes that partially match the given sequence\n */\n KeytipTree.prototype.getPartiallyMatchedNodes = function (keySequence, currentKeytip) {\n var _this = this;\n // Get children that are persisted\n var possibleNodes = this.getNodes(currentKeytip.children);\n return possibleNodes.filter(function (node) {\n return _this._getNodeSequence(node).indexOf(keySequence) === 0 && !node.disabled;\n });\n };\n /**\n * Get the non-persisted children of the give node\n * If no node is given, will use the 'currentKeytip'\n *\n * @param node - Node to get the children for\n * @returns List of node IDs that are the children of the node\n */\n KeytipTree.prototype.getChildren = function (node) {\n var _this = this;\n if (!node) {\n node = this.currentKeytip;\n if (!node) {\n return [];\n }\n }\n var children = node.children;\n return Object.keys(this.nodeMap).reduce(function (nodes, key) {\n if (children.indexOf(_this.nodeMap[key].id) >= 0 && !_this.nodeMap[key].persisted) {\n nodes.push(_this.nodeMap[key].id);\n }\n return nodes;\n }, []);\n };\n /**\n * Gets all nodes from their IDs\n *\n * @param ids - List of keytip IDs\n * @returns Array of nodes that match the given IDs, can be empty\n */\n KeytipTree.prototype.getNodes = function (ids) {\n var _this = this;\n return Object.keys(this.nodeMap).reduce(function (nodes, key) {\n if (ids.indexOf(_this.nodeMap[key].id) >= 0) {\n nodes.push(_this.nodeMap[key]);\n }\n return nodes;\n }, []);\n };\n /**\n * Gets a single node from its ID\n *\n * @param id - ID of the node to get\n * @returns Node with the given ID, if found\n */\n KeytipTree.prototype.getNode = function (id) {\n var nodeMapValues = values(this.nodeMap);\n return find(nodeMapValues, function (node) {\n return node.id === id;\n });\n };\n /**\n * Tests if the currentKeytip in this.keytipTree is the parent of 'keytipProps'\n *\n * @param keytipProps - Keytip to test the parent for\n * @returns T/F if the currentKeytip is this keytipProps' parent\n */\n KeytipTree.prototype.isCurrentKeytipParent = function (keytipProps) {\n if (this.currentKeytip) {\n var fullSequence = __spreadArray([], keytipProps.keySequences);\n if (keytipProps.overflowSetSequence) {\n fullSequence = mergeOverflows(fullSequence, keytipProps.overflowSetSequence);\n }\n // Take off the last sequence to calculate the parent ID\n fullSequence.pop();\n // Parent ID is the root if there aren't any more sequences\n var parentID = fullSequence.length === 0 ? this.root.id : sequencesToID(fullSequence);\n var matchesCurrWithoutOverflow = false;\n if (this.currentKeytip.overflowSetSequence) {\n var currKeytipIdWithoutOverflow = sequencesToID(this.currentKeytip.keySequences);\n matchesCurrWithoutOverflow = currKeytipIdWithoutOverflow === parentID;\n }\n return matchesCurrWithoutOverflow || this.currentKeytip.id === parentID;\n }\n return false;\n };\n KeytipTree.prototype._getParentID = function (fullSequence) {\n return fullSequence.length === 0 ? this.root.id : sequencesToID(fullSequence);\n };\n KeytipTree.prototype._getFullSequence = function (keytipProps) {\n var fullSequence = __spreadArray([], keytipProps.keySequences);\n if (keytipProps.overflowSetSequence) {\n fullSequence = mergeOverflows(fullSequence, keytipProps.overflowSetSequence);\n }\n return fullSequence;\n };\n KeytipTree.prototype._getNodeSequence = function (node) {\n var fullSequence = __spreadArray([], node.keySequences);\n if (node.overflowSetSequence) {\n fullSequence = mergeOverflows(fullSequence, node.overflowSetSequence);\n }\n return fullSequence[fullSequence.length - 1];\n };\n KeytipTree.prototype._createNode = function (id, parentId, children, keytipProps, persisted) {\n var _this = this;\n var keySequences = keytipProps.keySequences, hasDynamicChildren = keytipProps.hasDynamicChildren, overflowSetSequence = keytipProps.overflowSetSequence, hasMenu = keytipProps.hasMenu, onExecute = keytipProps.onExecute, onReturn = keytipProps.onReturn, disabled = keytipProps.disabled, hasOverflowSubMenu = keytipProps.hasOverflowSubMenu;\n var node = {\n id: id,\n keySequences: keySequences,\n overflowSetSequence: overflowSetSequence,\n parent: parentId,\n children: children,\n onExecute: onExecute,\n onReturn: onReturn,\n hasDynamicChildren: hasDynamicChildren,\n hasMenu: hasMenu,\n disabled: disabled,\n persisted: persisted,\n hasOverflowSubMenu: hasOverflowSubMenu,\n };\n node.children = Object.keys(this.nodeMap).reduce(function (array, nodeMapKey) {\n if (_this.nodeMap[nodeMapKey].parent === id) {\n array.push(_this.nodeMap[nodeMapKey].id);\n }\n return array;\n }, []);\n return node;\n };\n KeytipTree.prototype._removeChildFromParents = function (parentID, childID) {\n var parents = this.getNodes([parentID]);\n parents.forEach(function (parent) {\n var childIndex = parent.children.indexOf(childID);\n if (childIndex >= 0) {\n parent.children.splice(childIndex, 1);\n }\n });\n };\n return KeytipTree;\n}());\nexport { KeytipTree };\n//# sourceMappingURL=KeytipTree.js.map","import { __assign, __extends, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { getLayerStyles } from './KeytipLayer.styles';\nimport { Keytip } from '../../Keytip';\nimport { Layer } from '../../Layer';\nimport { classNamesFunction, getDocument, arraysEqual, warn, isMac, EventGroup, Async, initializeComponentRef, KeyCodes, } from '../../Utilities';\nimport { KeytipManager } from '../../utilities/keytips/KeytipManager';\nimport { KeytipTree } from './KeytipTree';\nimport { ktpTargetFromId, ktpTargetFromSequences, sequencesToID, mergeOverflows, } from '../../utilities/keytips/KeytipUtils';\nimport { transitionKeysContain } from '../../utilities/keytips/IKeytipTransitionKey';\nimport { KeytipEvents, KTP_LAYER_ID, KTP_ARIA_SEPARATOR } from '../../utilities/keytips/KeytipConstants';\n// Default sequence is Alt-Windows (Alt-Meta) in Windows, Option-Control (Alt-Control) in Mac\nvar defaultStartSequence = {\n key: isMac() ? 'Control' : 'Meta',\n modifierKeys: [KeyCodes.alt],\n};\n// Default exit sequence is the same as the start sequence\nvar defaultExitSequence = defaultStartSequence;\n// Default return sequence is Escape\nvar defaultReturnSequence = {\n key: 'Escape',\n};\nvar getClassNames = classNamesFunction();\n/**\n * A layer that holds all keytip items\n * {@docCategory Keytips}\n */\nvar KeytipLayerBase = /** @class */ (function (_super) {\n __extends(KeytipLayerBase, _super);\n function KeytipLayerBase(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this._keytipManager = KeytipManager.getInstance();\n _this._delayedKeytipQueue = [];\n _this._keyHandled = false;\n _this._onDismiss = function (ev) {\n // if we are in keytip mode, then exit keytip mode\n if (_this.state.inKeytipMode) {\n _this._exitKeytipMode(ev);\n }\n };\n _this._onKeyDown = function (ev) {\n _this._keyHandled = false;\n // using key since which has been deprecated and key is now widely suporrted.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which\n var key = ev.key;\n switch (key) {\n case 'Tab':\n case 'Enter':\n case 'Spacebar':\n case ' ':\n case 'ArrowUp':\n case 'Up':\n case 'ArrowDown':\n case 'Down':\n case 'ArrowLeft':\n case 'Left':\n case 'ArrowRight':\n case 'Right':\n if (_this.state.inKeytipMode) {\n _this._keyHandled = true;\n _this._exitKeytipMode(ev);\n }\n break;\n default:\n // Special cases for browser-specific keys that are not at standard\n // (according to http://www.w3.org/TR/uievents-key/#keys-navigation)\n if (key === 'Esc') {\n // Edge: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/5290772/\n key = 'Escape';\n }\n else if (key === 'OS' || key === 'Win') {\n // Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1232918\n // Edge: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n // and https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/16424492/\n key = 'Meta';\n }\n var transitionKey = { key: key };\n transitionKey.modifierKeys = _this._getModifierKey(key, ev);\n _this.processTransitionInput(transitionKey, ev);\n break;\n }\n };\n _this._onKeyPress = function (ev) {\n if (_this.state.inKeytipMode && !_this._keyHandled) {\n // Call processInput\n _this.processInput(ev.key.toLocaleLowerCase(), ev);\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n _this._onKeytipAdded = function (eventArgs) {\n var _a;\n var keytipProps = eventArgs.keytip;\n var uniqueID = eventArgs.uniqueID;\n _this._keytipTree.addNode(keytipProps, uniqueID);\n _this._setKeytips();\n // Add the keytip to the queue to show later\n if (_this._keytipTree.isCurrentKeytipParent(keytipProps)) {\n // Ensure existing children are still shown.\n _this._delayedKeytipQueue = _this._delayedKeytipQueue.concat(((_a = _this._keytipTree.currentKeytip) === null || _a === void 0 ? void 0 : _a.children) || []);\n _this._addKeytipToQueue(sequencesToID(keytipProps.keySequences));\n // Ensure the child of currentKeytip is successfully added to currentKeytip's children and update it if not.\n // Note: Added this condition because KeytipTree.addNode was not always reflecting updates made to a parent node\n // in currentKeytip when that parent is the currentKeytip.\n if (_this._keytipTree.currentKeytip &&\n _this._keytipTree.currentKeytip.hasDynamicChildren &&\n _this._keytipTree.currentKeytip.children.indexOf(keytipProps.id) < 0) {\n var currNode = _this._keytipTree.getNode(_this._keytipTree.currentKeytip.id);\n if (currNode) {\n _this._keytipTree.currentKeytip = currNode;\n }\n }\n }\n _this._persistedKeytipChecks(keytipProps);\n };\n _this._onKeytipUpdated = function (eventArgs) {\n var _a;\n var keytipProps = eventArgs.keytip;\n var uniqueID = eventArgs.uniqueID;\n _this._keytipTree.updateNode(keytipProps, uniqueID);\n _this._setKeytips();\n if (_this._keytipTree.isCurrentKeytipParent(keytipProps)) {\n // Ensure existing children are still shown.\n _this._delayedKeytipQueue = _this._delayedKeytipQueue.concat(((_a = _this._keytipTree.currentKeytip) === null || _a === void 0 ? void 0 : _a.children) || []);\n _this._addKeytipToQueue(sequencesToID(keytipProps.keySequences));\n }\n _this._persistedKeytipChecks(keytipProps);\n };\n /**\n * Helper function to do checks related to persisted/overflow keytips\n * Done on keytip added and keytip updated\n *\n * @param keytipProps - Keytip props\n */\n _this._persistedKeytipChecks = function (keytipProps) {\n if (_this._newCurrentKeytipSequences && arraysEqual(keytipProps.keySequences, _this._newCurrentKeytipSequences)) {\n _this._triggerKeytipImmediately(keytipProps);\n }\n if (_this._isCurrentKeytipAnAlias(keytipProps)) {\n var keytipSequence = keytipProps.keySequences;\n if (keytipProps.overflowSetSequence) {\n keytipSequence = mergeOverflows(keytipSequence, keytipProps.overflowSetSequence);\n }\n _this._keytipTree.currentKeytip = _this._keytipTree.getNode(sequencesToID(keytipSequence));\n }\n };\n _this._onKeytipRemoved = function (eventArgs) {\n var keytipProps = eventArgs.keytip;\n var uniqueID = eventArgs.uniqueID;\n // Remove keytip from the delayed queue\n _this._removeKeytipFromQueue(sequencesToID(keytipProps.keySequences));\n // Remove the node from the Tree\n _this._keytipTree.removeNode(keytipProps, uniqueID);\n _this._setKeytips();\n };\n _this._onPersistedKeytipAdded = function (eventArgs) {\n var keytipProps = eventArgs.keytip;\n var uniqueID = eventArgs.uniqueID;\n _this._keytipTree.addNode(keytipProps, uniqueID, true);\n };\n _this._onPersistedKeytipRemoved = function (eventArgs) {\n var keytipProps = eventArgs.keytip;\n var uniqueID = eventArgs.uniqueID;\n _this._keytipTree.removeNode(keytipProps, uniqueID);\n };\n _this._onPersistedKeytipExecute = function (eventArgs) {\n _this._persistedKeytipExecute(eventArgs.overflowButtonSequences, eventArgs.keytipSequences);\n };\n /**\n * Sets if we are in keytip mode.\n * Note, this sets both the state for the layer as well as\n * the value that the manager will expose externally.\n * @param inKeytipMode - Boolean so set whether we are in keytip mode or not\n */\n _this._setInKeytipMode = function (inKeytipMode) {\n _this.setState({ inKeytipMode: inKeytipMode });\n _this._keytipManager.inKeytipMode = inKeytipMode;\n };\n /**\n * Emits a warning if duplicate keytips are found for the children of the current keytip\n */\n _this._warnIfDuplicateKeytips = function () {\n var duplicateKeytips = _this._getDuplicateIds(_this._keytipTree.getChildren());\n if (duplicateKeytips.length) {\n warn('Duplicate keytips found for ' + duplicateKeytips.join(', '));\n }\n };\n /**\n * Returns duplicates among keytip IDs.\n * If the returned array is empty, no duplicates were found.\n *\n * @param keytipIds - Array of keytip IDs to find duplicates for\n * @returns - Array of duplicates that were found. Each duplicate will only be added once to this array.\n */\n _this._getDuplicateIds = function (keytipIds) {\n var seenIds = {};\n return keytipIds.filter(function (keytipId) {\n seenIds[keytipId] = seenIds[keytipId] ? seenIds[keytipId] + 1 : 1;\n // Only add the first duplicate keytip seen\n return seenIds[keytipId] === 2;\n });\n };\n initializeComponentRef(_this);\n _this._events = new EventGroup(_this);\n _this._async = new Async(_this);\n var keytips = _this._keytipManager.getKeytips();\n _this.state = {\n inKeytipMode: false,\n keytips: keytips,\n visibleKeytips: _this._getVisibleKeytips(keytips),\n };\n _this._buildTree();\n _this._currentSequence = '';\n // Add keytip listeners\n _this._events.on(_this._keytipManager, KeytipEvents.KEYTIP_ADDED, _this._onKeytipAdded);\n _this._events.on(_this._keytipManager, KeytipEvents.KEYTIP_UPDATED, _this._onKeytipUpdated);\n _this._events.on(_this._keytipManager, KeytipEvents.KEYTIP_REMOVED, _this._onKeytipRemoved);\n _this._events.on(_this._keytipManager, KeytipEvents.PERSISTED_KEYTIP_ADDED, _this._onPersistedKeytipAdded);\n _this._events.on(_this._keytipManager, KeytipEvents.PERSISTED_KEYTIP_REMOVED, _this._onPersistedKeytipRemoved);\n _this._events.on(_this._keytipManager, KeytipEvents.PERSISTED_KEYTIP_EXECUTE, _this._onPersistedKeytipExecute);\n return _this;\n }\n KeytipLayerBase.prototype.render = function () {\n var _this = this;\n var _a = this.props, content = _a.content, styles = _a.styles;\n var _b = this.state, keytips = _b.keytips, visibleKeytips = _b.visibleKeytips;\n this._classNames = getClassNames(styles, {});\n return (React.createElement(Layer, { styles: getLayerStyles },\n React.createElement(\"span\", { id: KTP_LAYER_ID, className: this._classNames.innerContent }, \"\" + content + KTP_ARIA_SEPARATOR),\n keytips &&\n keytips.map(function (keytipProps, index) {\n return (React.createElement(\"span\", { key: index, id: sequencesToID(keytipProps.keySequences), className: _this._classNames.innerContent }, keytipProps.keySequences.join(KTP_ARIA_SEPARATOR)));\n }),\n visibleKeytips &&\n visibleKeytips.map(function (visibleKeytipProps) {\n return React.createElement(Keytip, __assign({ key: sequencesToID(visibleKeytipProps.keySequences) }, visibleKeytipProps));\n })));\n };\n KeytipLayerBase.prototype.componentDidMount = function () {\n // Add window listeners\n this._events.on(window, 'mouseup', this._onDismiss, true /* useCapture */);\n this._events.on(window, 'pointerup', this._onDismiss, true /* useCapture */);\n this._events.on(window, 'resize', this._onDismiss);\n this._events.on(window, 'keydown', this._onKeyDown, true /* useCapture */);\n this._events.on(window, 'keypress', this._onKeyPress, true /* useCapture */);\n this._events.on(window, 'scroll', this._onDismiss, true /* useCapture */);\n // Add keytip listeners\n this._events.on(this._keytipManager, KeytipEvents.ENTER_KEYTIP_MODE, this._enterKeytipMode);\n this._events.on(this._keytipManager, KeytipEvents.EXIT_KEYTIP_MODE, this._exitKeytipMode);\n };\n KeytipLayerBase.prototype.componentWillUnmount = function () {\n this._async.dispose();\n this._events.dispose();\n };\n // The below public functions are only public for testing purposes\n // They are not intended to be used in app code by using a KeytipLayer reference\n KeytipLayerBase.prototype.getCurrentSequence = function () {\n return this._currentSequence;\n };\n KeytipLayerBase.prototype.getKeytipTree = function () {\n return this._keytipTree;\n };\n /**\n * Processes an IKeytipTransitionKey entered by the user\n *\n * @param transitionKey - IKeytipTransitionKey received by the layer to process\n */\n KeytipLayerBase.prototype.processTransitionInput = function (transitionKey, ev) {\n var currKtp = this._keytipTree.currentKeytip;\n if (transitionKeysContain(this.props.keytipExitSequences, transitionKey) && currKtp) {\n // If key sequence is in 'exit sequences', exit keytip mode\n this._keyHandled = true;\n this._exitKeytipMode(ev);\n }\n else if (transitionKeysContain(this.props.keytipReturnSequences, transitionKey)) {\n // If key sequence is in return sequences, move currentKeytip to parent (or if currentKeytip is the root, exit)\n if (currKtp) {\n this._keyHandled = true;\n if (currKtp.id === this._keytipTree.root.id) {\n // We are at the root, exit keytip mode\n this._exitKeytipMode(ev);\n }\n else {\n // If this keytip has a onReturn prop, we execute the func.\n if (currKtp.onReturn) {\n currKtp.onReturn(this._getKtpExecuteTarget(currKtp), this._getKtpTarget(currKtp));\n }\n // Reset currentSequence\n this._currentSequence = '';\n // Return pointer to its parent\n this._keytipTree.currentKeytip = this._keytipTree.getNode(currKtp.parent);\n // Show children keytips of the new currentKeytip\n this.showKeytips(this._keytipTree.getChildren());\n this._warnIfDuplicateKeytips();\n }\n }\n }\n else if (transitionKeysContain(this.props.keytipStartSequences, transitionKey) && !currKtp) {\n // If key sequence is in 'entry sequences' and currentKeytip is null, we enter keytip mode\n this._keyHandled = true;\n this._enterKeytipMode(transitionKey);\n this._warnIfDuplicateKeytips();\n }\n };\n /**\n * Processes inputs from the document listener and traverse the keytip tree\n *\n * @param key - Key pressed by the user\n */\n KeytipLayerBase.prototype.processInput = function (key, ev) {\n // Concat the input key with the current sequence\n var currSequence = this._currentSequence + key;\n var currKtp = this._keytipTree.currentKeytip;\n // currentKeytip must be defined, otherwise we haven't entered keytip mode yet\n if (currKtp) {\n var node = this._keytipTree.getExactMatchedNode(currSequence, currKtp);\n if (node) {\n this._keytipTree.currentKeytip = currKtp = node;\n var currKtpChildren = this._keytipTree.getChildren();\n // Execute this node's onExecute if defined\n if (currKtp.onExecute) {\n currKtp.onExecute(this._getKtpExecuteTarget(currKtp), this._getKtpTarget(currKtp));\n // Reset currKtp, this might have changed from the onExecute\n currKtp = this._keytipTree.currentKeytip;\n }\n // To exit keytipMode after executing the keytip it must not have a menu or have dynamic children\n if (currKtpChildren.length === 0 && !(currKtp.hasDynamicChildren || currKtp.hasMenu)) {\n this._exitKeytipMode(ev);\n }\n else {\n // Show all children keytips\n this.showKeytips(currKtpChildren);\n this._warnIfDuplicateKeytips();\n }\n // Clear currentSequence\n this._currentSequence = '';\n return;\n }\n var partialNodes = this._keytipTree.getPartiallyMatchedNodes(currSequence, currKtp);\n if (partialNodes.length > 0) {\n // We found nodes that partially match the sequence, so we show only those\n // Omit showing persisted nodes here\n var ids = partialNodes\n .filter(function (partialNode) {\n return !partialNode.persisted;\n })\n .map(function (partialNode) {\n return partialNode.id;\n });\n this.showKeytips(ids);\n // Save currentSequence\n this._currentSequence = currSequence;\n }\n }\n };\n /**\n * Show the given keytips and hide all others\n *\n * @param ids - Keytip IDs to show\n */\n KeytipLayerBase.prototype.showKeytips = function (ids) {\n // Update the visible prop in the manager\n for (var _i = 0, _a = this._keytipManager.getKeytips(); _i < _a.length; _i++) {\n var keytip = _a[_i];\n var keytipId = sequencesToID(keytip.keySequences);\n if (keytip.overflowSetSequence) {\n // Check if the ID with the overflow is the keytip we're looking for\n keytipId = sequencesToID(mergeOverflows(keytip.keySequences, keytip.overflowSetSequence));\n }\n if (ids.indexOf(keytipId) >= 0) {\n keytip.visible = true;\n }\n else {\n keytip.visible = false;\n }\n }\n // Apply the manager changes to the Layer state\n this._setKeytips();\n };\n /**\n * Enters keytip mode for this layer\n */\n KeytipLayerBase.prototype._enterKeytipMode = function (transitionKey) {\n if (this._keytipManager.shouldEnterKeytipMode) {\n if (this._keytipManager.delayUpdatingKeytipChange) {\n this._buildTree();\n this._setKeytips();\n }\n this._keytipTree.currentKeytip = this._keytipTree.root;\n // Show children of root\n this.showKeytips(this._keytipTree.getChildren());\n this._setInKeytipMode(true /* inKeytipMode */);\n if (this.props.onEnterKeytipMode) {\n this.props.onEnterKeytipMode(transitionKey);\n }\n }\n };\n KeytipLayerBase.prototype._buildTree = function () {\n this._keytipTree = new KeytipTree();\n // Add regular and persisted keytips to the tree\n for (var _i = 0, _a = Object.keys(this._keytipManager.keytips); _i < _a.length; _i++) {\n var id = _a[_i];\n var uniqueKeytip = this._keytipManager.keytips[id];\n this._keytipTree.addNode(uniqueKeytip.keytip, uniqueKeytip.uniqueID);\n }\n for (var _b = 0, _c = Object.keys(this._keytipManager.persistedKeytips); _b < _c.length; _b++) {\n var id = _c[_b];\n var uniqueKeytip = this._keytipManager.persistedKeytips[id];\n this._keytipTree.addNode(uniqueKeytip.keytip, uniqueKeytip.uniqueID);\n }\n };\n /**\n * Exits keytip mode for this layer\n */\n KeytipLayerBase.prototype._exitKeytipMode = function (ev) {\n this._keytipTree.currentKeytip = undefined;\n this._currentSequence = '';\n // Hide all keytips\n this.showKeytips([]);\n // Reset the delayed keytips if any\n this._delayedQueueTimeout && this._async.clearTimeout(this._delayedQueueTimeout);\n this._delayedKeytipQueue = [];\n this._setInKeytipMode(false /* inKeytipMode */);\n if (this.props.onExitKeytipMode) {\n this.props.onExitKeytipMode(ev);\n }\n };\n /**\n * Sets the keytips state property\n *\n * @param keytipProps - Keytips to set in this layer\n */\n KeytipLayerBase.prototype._setKeytips = function (keytipProps) {\n if (keytipProps === void 0) { keytipProps = this._keytipManager.getKeytips(); }\n this.setState({ keytips: keytipProps, visibleKeytips: this._getVisibleKeytips(keytipProps) });\n };\n /**\n * Callback function to use for persisted keytips\n *\n * @param overflowButtonSequences - The overflow button sequence to execute\n * @param keytipSequences - The keytip that should become the 'currentKeytip' when it is registered\n */\n KeytipLayerBase.prototype._persistedKeytipExecute = function (overflowButtonSequences, keytipSequences) {\n // Save newCurrentKeytip for later\n this._newCurrentKeytipSequences = keytipSequences;\n // Execute the overflow button's onExecute\n var overflowKeytipNode = this._keytipTree.getNode(sequencesToID(overflowButtonSequences));\n if (overflowKeytipNode && overflowKeytipNode.onExecute) {\n overflowKeytipNode.onExecute(this._getKtpExecuteTarget(overflowKeytipNode), this._getKtpTarget(overflowKeytipNode));\n }\n };\n KeytipLayerBase.prototype._getVisibleKeytips = function (keytips) {\n // Filter out non-visible keytips and duplicates\n var seenIds = {};\n return keytips.filter(function (keytip) {\n var keytipId = sequencesToID(keytip.keySequences);\n if (keytip.overflowSetSequence) {\n // Account for overflow set sequences when checking for duplicates\n keytipId = sequencesToID(mergeOverflows(keytip.keySequences, keytip.overflowSetSequence));\n }\n seenIds[keytipId] = seenIds[keytipId] ? seenIds[keytipId] + 1 : 1;\n return keytip.visible && seenIds[keytipId] === 1;\n });\n };\n /**\n * Gets the ModifierKeyCodes based on the keyboard event\n *\n * @param ev - React.KeyboardEvent\n * @returns List of ModifierKeyCodes that were pressed\n */\n KeytipLayerBase.prototype._getModifierKey = function (key, ev) {\n var modifierKeys = [];\n if (ev.altKey && key !== 'Alt') {\n modifierKeys.push(KeyCodes.alt);\n }\n if (ev.ctrlKey && key !== 'Control') {\n modifierKeys.push(KeyCodes.ctrl);\n }\n if (ev.shiftKey && key !== 'Shift') {\n modifierKeys.push(KeyCodes.shift);\n }\n if (ev.metaKey && key !== 'Meta') {\n modifierKeys.push(KeyCodes.leftWindow);\n }\n return modifierKeys.length ? modifierKeys : undefined;\n };\n /**\n * Trigger a keytip immediately and set it as the current keytip\n *\n * @param keytipProps - Keytip to trigger immediately\n */\n KeytipLayerBase.prototype._triggerKeytipImmediately = function (keytipProps) {\n // This keytip should become the currentKeytip and should execute right away\n var keytipSequence = __spreadArray([], keytipProps.keySequences);\n if (keytipProps.overflowSetSequence) {\n keytipSequence = mergeOverflows(keytipSequence, keytipProps.overflowSetSequence);\n }\n // Set currentKeytip\n this._keytipTree.currentKeytip = this._keytipTree.getNode(sequencesToID(keytipSequence));\n if (this._keytipTree.currentKeytip) {\n // Show all children keytips if any\n var children = this._keytipTree.getChildren();\n if (children.length) {\n this.showKeytips(children);\n }\n if (this._keytipTree.currentKeytip.onExecute) {\n this._keytipTree.currentKeytip.onExecute(this._getKtpExecuteTarget(this._keytipTree.currentKeytip), this._getKtpTarget(this._keytipTree.currentKeytip));\n }\n }\n // Unset _newCurrKtpSequences\n this._newCurrentKeytipSequences = undefined;\n };\n KeytipLayerBase.prototype._addKeytipToQueue = function (keytipID) {\n var _this = this;\n // Add keytip\n this._delayedKeytipQueue.push(keytipID);\n // Clear timeout\n this._delayedQueueTimeout && this._async.clearTimeout(this._delayedQueueTimeout);\n // Reset timeout\n this._delayedQueueTimeout = this._async.setTimeout(function () {\n if (_this._delayedKeytipQueue.length) {\n _this.showKeytips(_this._delayedKeytipQueue);\n _this._delayedKeytipQueue = [];\n }\n }, 300);\n };\n KeytipLayerBase.prototype._removeKeytipFromQueue = function (keytipID) {\n var _this = this;\n var index = this._delayedKeytipQueue.indexOf(keytipID);\n if (index >= 0) {\n // Remove keytip\n this._delayedKeytipQueue.splice(index, 1);\n // Clear timeout\n this._delayedQueueTimeout && this._async.clearTimeout(this._delayedQueueTimeout);\n // Reset timeout\n this._delayedQueueTimeout = this._async.setTimeout(function () {\n if (_this._delayedKeytipQueue.length) {\n _this.showKeytips(_this._delayedKeytipQueue);\n _this._delayedKeytipQueue = [];\n }\n }, 300);\n }\n };\n KeytipLayerBase.prototype._getKtpExecuteTarget = function (currKtp) {\n return getDocument().querySelector(ktpTargetFromId(currKtp.id));\n };\n KeytipLayerBase.prototype._getKtpTarget = function (currKtp) {\n return getDocument().querySelector(ktpTargetFromSequences(currKtp.keySequences));\n };\n /**\n * Returns T/F if the keytipProps keySequences match the currentKeytip, and the currentKeytip is in an overflow well\n * This will make 'keytipProps' the new currentKeytip\n *\n * @param keytipProps - Keytip props to check\n * @returns - T/F if this keytip should become the currentKeytip\n */\n KeytipLayerBase.prototype._isCurrentKeytipAnAlias = function (keytipProps) {\n var currKtp = this._keytipTree.currentKeytip;\n if (currKtp &&\n (currKtp.overflowSetSequence || currKtp.persisted) &&\n arraysEqual(keytipProps.keySequences, currKtp.keySequences)) {\n return true;\n }\n return false;\n };\n KeytipLayerBase.defaultProps = {\n keytipStartSequences: [defaultStartSequence],\n keytipExitSequences: [defaultExitSequence],\n keytipReturnSequences: [defaultReturnSequence],\n content: '',\n };\n return KeytipLayerBase;\n}(React.Component));\nexport { KeytipLayerBase };\n//# sourceMappingURL=KeytipLayer.base.js.map","import { styled } from '../../Utilities';\nimport { KeytipLayerBase } from './KeytipLayer.base';\nimport { getStyles } from './KeytipLayer.styles';\nexport var KeytipLayer = styled(KeytipLayerBase, getStyles, undefined, {\n scope: 'KeytipLayer',\n});\n//# sourceMappingURL=KeytipLayer.js.map","import { __extends } from \"tslib\";\nimport * as React from 'react';\nimport { classNamesFunction } from '../../Utilities';\n/**\n * A component corresponding the content rendered inside the callout of the keytip component.\n * {@docCategory Keytips}\n */\nvar KeytipContentBase = /** @class */ (function (_super) {\n __extends(KeytipContentBase, _super);\n function KeytipContentBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n KeytipContentBase.prototype.render = function () {\n var _a = this.props, content = _a.content, styles = _a.styles, theme = _a.theme, disabled = _a.disabled, visible = _a.visible;\n var getClassNames = classNamesFunction();\n var classNames = getClassNames(styles, {\n theme: theme,\n disabled: disabled,\n visible: visible,\n });\n return (React.createElement(\"div\", { className: classNames.container },\n React.createElement(\"span\", { className: classNames.root }, content)));\n };\n return KeytipContentBase;\n}(React.Component));\nexport { KeytipContentBase };\n//# sourceMappingURL=KeytipContent.base.js.map","import { mergeStyleSets, HighContrastSelector } from '../../Styling';\nexport var getStyles = function (props) {\n var _a;\n var theme = props.theme, disabled = props.disabled, visible = props.visible;\n return {\n container: [\n {\n backgroundColor: theme.palette.neutralDark,\n },\n disabled && {\n opacity: 0.5,\n selectors: (_a = {},\n _a[HighContrastSelector] = {\n color: 'GrayText',\n opacity: 1,\n },\n _a),\n },\n !visible && {\n visibility: 'hidden',\n },\n ],\n root: [\n theme.fonts.medium,\n {\n textAlign: 'center',\n paddingLeft: '3px',\n paddingRight: '3px',\n backgroundColor: theme.palette.neutralDark,\n color: theme.palette.neutralLight,\n minWidth: '11px',\n lineHeight: '17px',\n height: '17px',\n display: 'inline-block',\n },\n disabled && {\n color: theme.palette.neutralTertiaryAlt,\n },\n ],\n };\n};\nexport var getCalloutStyles = function (props) {\n return {\n container: [],\n root: [\n {\n border: 'none',\n boxShadow: 'none',\n },\n ],\n beak: [],\n beakCurtain: [],\n calloutMain: [\n {\n backgroundColor: 'transparent',\n },\n ],\n };\n};\nexport var getCalloutOffsetStyles = function (offset) {\n return function (props) {\n return mergeStyleSets(getCalloutStyles(props), {\n root: [\n {\n // eslint-disable-next-line deprecation/deprecation\n marginLeft: offset.left || offset.x,\n // eslint-disable-next-line deprecation/deprecation\n marginTop: offset.top || offset.y,\n },\n ],\n });\n };\n};\n//# sourceMappingURL=Keytip.styles.js.map","import { styled } from '../../Utilities';\nimport { KeytipContentBase } from './KeytipContent.base';\nimport { getStyles } from './Keytip.styles';\nexport var KeytipContent = styled(KeytipContentBase, getStyles, undefined, {\n scope: 'KeytipContent',\n});\n//# sourceMappingURL=KeytipContent.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { getFirstVisibleElementFromSelector } from '../../Utilities';\nimport { mergeOverflows, ktpTargetFromSequences } from '../../utilities/keytips/KeytipUtils';\nimport { Callout } from '../../Callout';\nimport { DirectionalHint } from '../../ContextualMenu';\nimport { KeytipContent } from './KeytipContent';\nimport { getCalloutStyles, getCalloutOffsetStyles } from './Keytip.styles';\n/**\n * A callout corresponding to another Fabric component to describe a key sequence that will activate that component\n */\nvar Keytip = /** @class */ (function (_super) {\n __extends(Keytip, _super);\n function Keytip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Keytip.prototype.render = function () {\n var _a = this.props, keySequences = _a.keySequences, offset = _a.offset, overflowSetSequence = _a.overflowSetSequence;\n var calloutProps = this.props.calloutProps;\n var keytipTarget;\n // Take into consideration the overflow sequence\n if (overflowSetSequence) {\n keytipTarget = ktpTargetFromSequences(mergeOverflows(keySequences, overflowSetSequence));\n }\n else {\n keytipTarget = ktpTargetFromSequences(keySequences);\n }\n var element = getFirstVisibleElementFromSelector(keytipTarget);\n if (!element) {\n return React.createElement(React.Fragment, null);\n }\n keytipTarget = element;\n if (offset) {\n // Set callout to top-left corner, will be further positioned in\n // getCalloutOffsetStyles\n calloutProps = __assign(__assign({}, calloutProps), { coverTarget: true, directionalHint: DirectionalHint.topLeftEdge });\n }\n if (!calloutProps || calloutProps.directionalHint === undefined) {\n // Default callout directional hint to BottomCenter\n calloutProps = __assign(__assign({}, calloutProps), { directionalHint: DirectionalHint.bottomCenter });\n }\n return (React.createElement(Callout, __assign({}, calloutProps, { isBeakVisible: false, doNotLayer: true, minPagePadding: 0, styles: offset ? getCalloutOffsetStyles(offset) : getCalloutStyles, preventDismissOnScroll: true, target: keytipTarget }),\n React.createElement(KeytipContent, __assign({}, this.props))));\n };\n return Keytip;\n}(React.Component));\nexport { Keytip };\n//# sourceMappingURL=Keytip.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { divProperties, getNativeProps } from '../../Utilities';\nimport { classNamesFunction } from '../../Utilities';\nvar getClassNames = classNamesFunction({\n // Label is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Label.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\nvar LabelBase = /** @class */ (function (_super) {\n __extends(LabelBase, _super);\n function LabelBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LabelBase.prototype.render = function () {\n var _a = this.props, _b = _a.as, RootType = _b === void 0 ? 'label' : _b, children = _a.children, className = _a.className, disabled = _a.disabled, styles = _a.styles, required = _a.required, theme = _a.theme;\n var classNames = getClassNames(styles, {\n className: className,\n disabled: disabled,\n required: required,\n theme: theme,\n });\n return (React.createElement(RootType, __assign({}, getNativeProps(this.props, divProperties), { className: classNames.root }), children));\n };\n return LabelBase;\n}(React.Component));\nexport { LabelBase };\n//# sourceMappingURL=Label.base.js.map","import { styled } from '../../Utilities';\nimport { LabelBase } from './Label.base';\nimport { getStyles } from './Label.styles';\nexport var Label = styled(LabelBase, getStyles, undefined, {\n scope: 'Label',\n});\n//# sourceMappingURL=Label.js.map","import { __assign } from \"tslib\";\nimport { HighContrastSelector, FontWeights, getHighContrastNoAdjustStyle } from '../../Styling';\nexport var getStyles = function (props) {\n var _a;\n var theme = props.theme, className = props.className, disabled = props.disabled, required = props.required;\n var semanticColors = theme.semanticColors;\n // Tokens\n var labelFontWeight = FontWeights.semibold;\n var labelColor = semanticColors.bodyText;\n var labelDisabledColor = semanticColors.disabledBodyText;\n var labelRequiredStarColor = semanticColors.errorText;\n return {\n root: [\n 'ms-Label',\n theme.fonts.medium,\n {\n fontWeight: labelFontWeight,\n color: labelColor,\n boxSizing: 'border-box',\n boxShadow: 'none',\n margin: 0,\n display: 'block',\n padding: '5px 0',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n },\n disabled && {\n color: labelDisabledColor,\n selectors: (_a = {},\n _a[HighContrastSelector] = __assign({ color: 'GrayText' }, getHighContrastNoAdjustStyle()),\n _a),\n },\n required && {\n selectors: {\n '::after': {\n content: \"' *'\",\n color: labelRequiredStarColor,\n paddingRight: 12,\n },\n },\n },\n className,\n ],\n };\n};\n//# sourceMappingURL=Label.styles.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Fabric } from '../../Fabric';\nimport { classNamesFunction, setPortalAttribute, setVirtualParent } from '../../Utilities';\nimport { registerLayer, getDefaultTarget, unregisterLayer } from './Layer.notification';\nimport { useMergedRefs, useWarnings } from '@fluentui/react-hooks';\nimport { useDocument } from '../../WindowProvider';\nvar getClassNames = classNamesFunction();\nexport var LayerBase = React.forwardRef(function (props, ref) {\n var rootRef = React.useRef(null);\n var mergedRef = useMergedRefs(rootRef, ref);\n var layerRef = React.useRef();\n // Tracks if the layer mount events need to be raised.\n // Required to allow the DOM to render after the layer element is added.\n var _a = React.useState(false), needRaiseLayerMount = _a[0], setNeedRaiseLayerMount = _a[1];\n var doc = useDocument();\n var eventBubblingEnabled = props.eventBubblingEnabled, styles = props.styles, theme = props.theme, className = props.className, children = props.children, hostId = props.hostId, _b = props.onLayerDidMount, onLayerDidMount = _b === void 0 ? function () { return undefined; } : _b, \n // eslint-disable-next-line deprecation/deprecation\n _c = props.onLayerMounted, \n // eslint-disable-next-line deprecation/deprecation\n onLayerMounted = _c === void 0 ? function () { return undefined; } : _c, onLayerWillUnmount = props.onLayerWillUnmount, insertFirst = props.insertFirst;\n var classNames = getClassNames(styles, {\n theme: theme,\n className: className,\n isNotHost: !hostId,\n });\n // Returns the user provided hostId props element, the default target selector,\n // or undefined if document doesn't exist.\n var getHost = function () {\n if (!doc) {\n return undefined;\n }\n if (hostId) {\n return doc.getElementById(hostId);\n }\n else {\n var defaultHostSelector = getDefaultTarget();\n return defaultHostSelector ? doc.querySelector(defaultHostSelector) : doc.body;\n }\n };\n // Removes the current layer element's parentNode and runs onLayerWillUnmount prop if provided.\n var removeLayerElement = function () {\n onLayerWillUnmount === null || onLayerWillUnmount === void 0 ? void 0 : onLayerWillUnmount();\n var elem = layerRef.current;\n // Clear ref before removing from the DOM\n layerRef.current = undefined;\n if (elem && elem.parentNode) {\n elem.parentNode.removeChild(elem);\n }\n };\n // If a doc or host exists, it will remove and update layer parentNodes.\n var createLayerElement = function () {\n var host = getHost();\n if (!doc || !host) {\n return;\n }\n // Remove and re-create any previous existing layer elements.\n removeLayerElement();\n var el = doc.createElement('div');\n el.className = classNames.root;\n setPortalAttribute(el);\n setVirtualParent(el, rootRef.current);\n insertFirst ? host.insertBefore(el, host.firstChild) : host.appendChild(el);\n layerRef.current = el;\n setNeedRaiseLayerMount(true);\n };\n // eslint-disable-next-line no-restricted-properties\n React.useLayoutEffect(function () {\n createLayerElement();\n // Check if the user provided a hostId prop and register the layer with the ID.\n if (hostId) {\n registerLayer(hostId, createLayerElement);\n }\n return function () {\n removeLayerElement();\n if (hostId) {\n unregisterLayer(hostId, createLayerElement);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should run if the hostId updates.\n }, [hostId]);\n React.useEffect(function () {\n if (layerRef.current && needRaiseLayerMount) {\n onLayerMounted === null || onLayerMounted === void 0 ? void 0 : onLayerMounted();\n onLayerDidMount === null || onLayerDidMount === void 0 ? void 0 : onLayerDidMount();\n setNeedRaiseLayerMount(false);\n }\n }, [needRaiseLayerMount, onLayerMounted, onLayerDidMount]);\n useDebugWarnings(props);\n return (React.createElement(\"span\", { className: \"ms-layer\", ref: mergedRef }, layerRef.current &&\n ReactDOM.createPortal(\n /* eslint-disable deprecation/deprecation */\n React.createElement(Fabric, __assign({}, (!eventBubblingEnabled && getFilteredEvents()), { className: classNames.content }), children), \n /* eslint-enable deprecation/deprecation */\n layerRef.current)));\n});\nLayerBase.displayName = 'LayerBase';\nvar filteredEventProps;\nvar onFilterEvent = function (ev) {\n // We should just be able to check ev.bubble here and only stop events that are bubbling up. However, even though\n // mouseenter and mouseleave do NOT bubble up, they are showing up as bubbling. Therefore we stop events based on\n // event name rather than ev.bubble.\n if (ev.eventPhase === Event.BUBBLING_PHASE &&\n ev.type !== 'mouseenter' &&\n ev.type !== 'mouseleave' &&\n ev.type !== 'touchstart' &&\n ev.type !== 'touchend') {\n ev.stopPropagation();\n }\n};\nfunction getFilteredEvents() {\n if (!filteredEventProps) {\n filteredEventProps = {};\n [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseOut',\n 'onMouseUp',\n 'onTouchMove',\n 'onTouchStart',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onFocus',\n 'onBlur',\n 'onChange',\n 'onInput',\n 'onInvalid',\n 'onSubmit',\n ].forEach(function (name) { return (filteredEventProps[name] = onFilterEvent); });\n }\n return filteredEventProps;\n}\nfunction useDebugWarnings(props) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n useWarnings({\n name: 'Layer',\n props: props,\n deprecations: { onLayerMounted: 'onLayerDidMount' },\n });\n }\n}\n//# sourceMappingURL=Layer.base.js.map","import { ZIndexes, getGlobalClassNames } from '../../Styling';\nvar GlobalClassNames = {\n root: 'ms-Layer',\n rootNoHost: 'ms-Layer--fixed',\n content: 'ms-Layer-content',\n};\nexport var getStyles = function (props) {\n var className = props.className, isNotHost = props.isNotHost, theme = props.theme;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n return {\n root: [\n classNames.root,\n theme.fonts.medium,\n isNotHost && [\n classNames.rootNoHost,\n {\n position: 'fixed',\n zIndex: ZIndexes.Layer,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n visibility: 'hidden',\n },\n ],\n className,\n ],\n content: [\n classNames.content,\n {\n visibility: 'visible',\n },\n ],\n };\n};\n//# sourceMappingURL=Layer.styles.js.map","import { styled } from '../../Utilities';\nimport { LayerBase } from './Layer.base';\nimport { getStyles } from './Layer.styles';\nexport var Layer = styled(LayerBase, getStyles, undefined, {\n scope: 'Layer',\n fields: ['hostId', 'theme', 'styles'],\n});\n//# sourceMappingURL=Layer.js.map","var _layersByHostId = {};\nvar _defaultHostSelector;\n/**\n * Register a layer for a given host id\n * @param hostId Id of the layer host\n * @param layer Layer instance\n */\nexport function registerLayer(hostId, callback) {\n if (!_layersByHostId[hostId]) {\n _layersByHostId[hostId] = [];\n }\n _layersByHostId[hostId].push(callback);\n}\n/**\n * Unregister a layer for a given host id\n * @param hostId Id of the layer host\n * @param layer Layer instance\n */\nexport function unregisterLayer(hostId, callback) {\n if (_layersByHostId[hostId]) {\n var idx = _layersByHostId[hostId].indexOf(callback);\n if (idx >= 0) {\n _layersByHostId[hostId].splice(idx, 1);\n if (_layersByHostId[hostId].length === 0) {\n delete _layersByHostId[hostId];\n }\n }\n }\n}\n/**\n * Used for notifying applicable Layers that a host is available/unavailable and to re-evaluate Layers that\n * care about the specific host.\n */\nexport function notifyHostChanged(id) {\n if (_layersByHostId[id]) {\n _layersByHostId[id].forEach(function (callback) { return callback(); });\n }\n}\n/**\n * Sets the default target selector to use when determining the host in which\n * Layered content will be injected into. If not provided, an element will be\n * created at the end of the document body.\n *\n * Passing in a falsy value will clear the default target and reset back to\n * using a created element at the end of document body.\n */\nexport function setDefaultTarget(selector) {\n _defaultHostSelector = selector;\n}\n/**\n * Get the default target selector when determining a host\n */\nexport function getDefaultTarget() {\n return _defaultHostSelector;\n}\n//# sourceMappingURL=Layer.notification.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '../../Utilities';\nimport { notifyHostChanged } from './Layer.notification';\nexport var LayerHost = function (props) {\n var id = props.id, className = props.className;\n React.useEffect(function () {\n notifyHostChanged(id);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run on first render\n }, []);\n useUnmount(function () {\n notifyHostChanged(id);\n });\n return React.createElement(\"div\", __assign({}, props, { className: css('ms-LayerHost', className) }));\n};\nvar useUnmount = function (unmountFunction) {\n var unmountRef = React.useRef(unmountFunction);\n unmountRef.current = unmountFunction;\n React.useEffect(function () { return function () {\n if (unmountRef.current) {\n unmountRef.current();\n }\n }; }, []);\n};\n//# sourceMappingURL=LayerHost.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 { 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 { getGlobalClassNames, HighContrastSelector } from '@fluentui/style-utilities';\nexport var GlobalClassNames = {\n root: 'ms-Link',\n};\nexport var getStyles = function (props) {\n var _a, _b, _c, _d, _e, _f;\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 '.ms-Fabric--isFocusVisible &: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 \" + focusBorderColor + \" inset\",\n outline: \"1px auto \" + focusBorderColor,\n selectors: (_b = {},\n _b[HighContrastSelector] = {\n outline: '1px solid WindowText',\n },\n _b),\n }\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',\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: {\n '&:link, &:visited': {\n pointerEvents: 'none',\n },\n },\n },\n ],\n !isDisabled && {\n selectors: {\n '&:active, &:hover, &:active:hover': {\n color: linkInteractedColor,\n textDecoration: 'underline',\n selectors: (_e = {},\n _e[HighContrastSelector] = {\n color: 'LinkText',\n },\n _e),\n },\n '&:focus': {\n color: linkColor,\n selectors: (_f = {},\n _f[HighContrastSelector] = {\n color: 'LinkText',\n },\n _f),\n },\n },\n },\n classNames.root,\n className,\n ],\n };\n};\n//# sourceMappingURL=Link.styles.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { Async, EventGroup, css, divProperties, findIndex, findScrollableParent, getNativeProps, getParent, getWindow, initializeComponentRef, } from '../../Utilities';\nimport { ScrollToMode } from './List.types';\nimport { composeRenderFunction } from '../../Utilities';\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-';\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 // 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 = _this.props, onRenderCell = _a.onRenderCell, role = _a.role;\n var _b = pageProps.page, _c = _b.items, items = _c === void 0 ? [] : _c, startIndex = _b.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 cells.push(React.createElement(\"div\", { role: cellRole, className: 'ms-List-cell', key: itemKey, \"data-list-index\": index, \"data-automationid\": \"ListCell\" }, onRenderCell &&\n onRenderCell(item, index, !_this.props.ignoreScrollingState ? _this.state.isScrolling : undefined)));\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 };\n _this._async = new Async(_this);\n _this._events = new EventGroup(_this);\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 // Ensure that scrolls are lazy updated.\n _this._onAsyncScroll = _this._async.debounce(_this._onAsyncScroll, MIN_SCROLL_UPDATE_DELAY, {\n leading: false,\n maxWait: MAX_SCROLL_UPDATE_DELAY,\n });\n _this._onAsyncIdle = _this._async.debounce(_this._onAsyncIdle, IDLE_DEBOUNCE_DELAY, {\n leading: false,\n });\n _this._onAsyncResize = _this._async.debounce(_this._onAsyncResize, RESIZE_DELAY, {\n leading: false,\n });\n _this._onScrollingDone = _this._async.debounce(_this._onScrollingDone, DONE_SCROLLING_WAIT, {\n leading: false,\n });\n _this._cachedPageHeights = {};\n _this._estimatedPageHeight = 0;\n _this._focusedIndex = -1;\n _this._pageCache = {};\n return _this;\n }\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(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 scrollWindow = {\n top: this._scrollElement.scrollTop,\n bottom: this._scrollElement.scrollTop + 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 this._scrollElement.scrollTop = scrollTop;\n return;\n case ScrollToMode.bottom:\n this._scrollElement.scrollTop = scrollBottom - scrollRect.height;\n return;\n case ScrollToMode.center:\n this._scrollElement.scrollTop = (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 this._scrollElement.scrollTop = 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.setState(this._updatePages(this.props, this.state));\n this._measureVersion++;\n this._scrollElement = findScrollableParent(this._root.current);\n this._events.on(window, 'resize', this._onAsyncResize);\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._onAsyncScroll);\n }\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._onAsyncScroll();\n }\n }\n else {\n // Enqueue an idle bump.\n this._onAsyncIdle();\n }\n }\n else {\n // Enqueue an idle bump\n this._onAsyncIdle();\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 this._async.dispose();\n this._events.dispose();\n delete this._scrollElement;\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.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 }),\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._onScrollingDone();\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._onAsyncIdle();\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 }\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(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 // console.log('building page', itemIndex, 'pageTop: ' + pageTop, 'inAllowed: ' +\n // isPageInAllowedRange, 'inRequired: ' + isPageInRequiredRange);\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 (itemIndex, visibleRect) {\n var getPageSpecification = this.props.getPageSpecification;\n if (getPageSpecification) {\n var pageData = getPageSpecification(itemIndex, visibleRect);\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);\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 = this._scrollElement && this._scrollElement.scrollHeight;\n var scrollTop = this._scrollElement ? this._scrollElement.scrollTop : 0;\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 / 3)) {\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 renderedWindowsAhead: DEFAULT_RENDERED_WINDOWS_AHEAD,\n renderedWindowsBehind: DEFAULT_RENDERED_WINDOWS_BEHIND,\n };\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","/**\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","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { Async, EventGroup, AutoScroll, classNamesFunction, findScrollableParent, getDistanceBetweenPoints, getRTL, initializeComponentRef, } from '../../Utilities';\nvar getClassNames = classNamesFunction();\n// We want to make the marquee selection start when the user drags a minimum distance. Otherwise we'd start\n// the drag even if they just click an item without moving.\nvar MIN_DRAG_DISTANCE = 5;\n/**\n * MarqueeSelection component abstracts managing a draggable rectangle which sets items selected/not selected.\n * Elements which have data-selectable-index attributes are queried and measured once to determine if they\n * fall within the bounds of the rectangle. The measure is memoized during the drag as a performance optimization\n * so if the items change sizes while dragging, that could cause incorrect results.\n */\nvar MarqueeSelectionBase = /** @class */ (function (_super) {\n __extends(MarqueeSelectionBase, _super);\n function MarqueeSelectionBase(props) {\n var _this = _super.call(this, props) || this;\n _this._root = React.createRef();\n _this._onMouseDown = function (ev) {\n var _a = _this.props, isEnabled = _a.isEnabled, onShouldStartSelection = _a.onShouldStartSelection;\n // Ensure the mousedown is within the boundaries of the target. If not, it may have been a click on a scrollbar.\n if (_this._isMouseEventOnScrollbar(ev)) {\n return;\n }\n if (_this._isInSelectionToggle(ev)) {\n return;\n }\n if (!_this._isTouch &&\n isEnabled &&\n !_this._isDragStartInSelection(ev) &&\n (!onShouldStartSelection || onShouldStartSelection(ev))) {\n if (_this._scrollableSurface && ev.button === 0 && _this._root.current) {\n _this._selectedIndicies = {};\n _this._preservedIndicies = undefined;\n _this._events.on(window, 'mousemove', _this._onAsyncMouseMove, true);\n _this._events.on(_this._scrollableParent, 'scroll', _this._onAsyncMouseMove);\n _this._events.on(window, 'click', _this._onMouseUp, true);\n _this._autoScroll = new AutoScroll(_this._root.current);\n _this._scrollTop = _this._scrollableSurface.scrollTop;\n _this._scrollLeft = _this._scrollableSurface.scrollLeft;\n _this._rootRect = _this._root.current.getBoundingClientRect();\n _this._onMouseMove(ev);\n }\n }\n };\n _this._onTouchStart = function (ev) {\n _this._isTouch = true;\n _this._async.setTimeout(function () {\n _this._isTouch = false;\n }, 0);\n };\n _this._onPointerDown = function (ev) {\n if (ev.pointerType === 'touch') {\n _this._isTouch = true;\n _this._async.setTimeout(function () {\n _this._isTouch = false;\n }, 0);\n }\n };\n initializeComponentRef(_this);\n _this._async = new Async(_this);\n _this._events = new EventGroup(_this);\n _this.state = {\n dragRect: undefined,\n };\n return _this;\n }\n MarqueeSelectionBase.prototype.componentDidMount = function () {\n this._scrollableParent = findScrollableParent(this._root.current);\n this._scrollableSurface = this._scrollableParent === window ? document.body : this._scrollableParent;\n // When scroll events come from window, we need to read scrollTop values from the body.\n var hitTarget = this.props.isDraggingConstrainedToRoot ? this._root.current : this._scrollableSurface;\n this._events.on(hitTarget, 'mousedown', this._onMouseDown);\n this._events.on(hitTarget, 'touchstart', this._onTouchStart, true);\n this._events.on(hitTarget, 'pointerdown', this._onPointerDown, true);\n };\n MarqueeSelectionBase.prototype.componentWillUnmount = function () {\n if (this._autoScroll) {\n this._autoScroll.dispose();\n }\n delete this._scrollableParent;\n delete this._scrollableSurface;\n this._events.dispose();\n this._async.dispose();\n };\n MarqueeSelectionBase.prototype.render = function () {\n var _a = this.props, rootProps = _a.rootProps, children = _a.children, theme = _a.theme, className = _a.className, styles = _a.styles;\n var dragRect = this.state.dragRect;\n var classNames = getClassNames(styles, {\n theme: theme,\n className: className,\n });\n return (React.createElement(\"div\", __assign({}, rootProps, { className: classNames.root, ref: this._root }),\n children,\n dragRect && React.createElement(\"div\", { className: classNames.dragMask }),\n dragRect && (React.createElement(\"div\", { className: classNames.box, style: dragRect },\n React.createElement(\"div\", { className: classNames.boxFill })))));\n };\n /** Determine if the mouse event occured on a scrollbar of the target element. */\n MarqueeSelectionBase.prototype._isMouseEventOnScrollbar = function (ev) {\n var targetElement = ev.target;\n var targetScrollbarWidth = targetElement.offsetWidth - targetElement.clientWidth;\n var targetScrollbarHeight = targetElement.offsetHeight - targetElement.clientHeight;\n if (targetScrollbarWidth || targetScrollbarHeight) {\n var targetRect = targetElement.getBoundingClientRect();\n // Check vertical scroll\n if (getRTL(this.props.theme)) {\n if (ev.clientX < targetRect.left + targetScrollbarWidth) {\n return true;\n }\n }\n else {\n if (ev.clientX > targetRect.left + targetElement.clientWidth) {\n return true;\n }\n }\n // Check horizontal scroll\n if (ev.clientY > targetRect.top + targetElement.clientHeight) {\n return true;\n }\n }\n return false;\n };\n MarqueeSelectionBase.prototype._getRootRect = function () {\n return {\n left: this._rootRect.left +\n (this._scrollableSurface ? this._scrollLeft - this._scrollableSurface.scrollLeft : this._scrollLeft),\n top: this._rootRect.top +\n (this._scrollableSurface ? this._scrollTop - this._scrollableSurface.scrollTop : this._scrollTop),\n width: this._rootRect.width,\n height: this._rootRect.height,\n };\n };\n MarqueeSelectionBase.prototype._onAsyncMouseMove = function (ev) {\n var _this = this;\n this._async.requestAnimationFrame(function () {\n _this._onMouseMove(ev);\n });\n ev.stopPropagation();\n ev.preventDefault();\n };\n MarqueeSelectionBase.prototype._onMouseMove = function (ev) {\n if (!this._autoScroll) {\n return;\n }\n if (ev.clientX !== undefined) {\n this._lastMouseEvent = ev;\n }\n var rootRect = this._getRootRect();\n var currentPoint = { left: ev.clientX - rootRect.left, top: ev.clientY - rootRect.top };\n if (!this._dragOrigin) {\n this._dragOrigin = currentPoint;\n }\n if (ev.buttons !== undefined && ev.buttons === 0) {\n this._onMouseUp(ev);\n }\n else {\n if (this.state.dragRect || getDistanceBetweenPoints(this._dragOrigin, currentPoint) > MIN_DRAG_DISTANCE) {\n if (!this.state.dragRect) {\n var selection = this.props.selection;\n if (!ev.shiftKey) {\n selection.setAllSelected(false);\n }\n this._preservedIndicies = selection && selection.getSelectedIndices && selection.getSelectedIndices();\n }\n // We need to constrain the current point to the rootRect boundaries.\n var constrainedPoint = this.props.isDraggingConstrainedToRoot\n ? {\n left: Math.max(0, Math.min(rootRect.width, this._lastMouseEvent.clientX - rootRect.left)),\n top: Math.max(0, Math.min(rootRect.height, this._lastMouseEvent.clientY - rootRect.top)),\n }\n : {\n left: this._lastMouseEvent.clientX - rootRect.left,\n top: this._lastMouseEvent.clientY - rootRect.top,\n };\n var dragRect = {\n left: Math.min(this._dragOrigin.left || 0, constrainedPoint.left),\n top: Math.min(this._dragOrigin.top || 0, constrainedPoint.top),\n width: Math.abs(constrainedPoint.left - (this._dragOrigin.left || 0)),\n height: Math.abs(constrainedPoint.top - (this._dragOrigin.top || 0)),\n };\n this._evaluateSelection(dragRect, rootRect);\n this.setState({ dragRect: dragRect });\n }\n }\n return false;\n };\n MarqueeSelectionBase.prototype._onMouseUp = function (ev) {\n this._events.off(window);\n this._events.off(this._scrollableParent, 'scroll');\n if (this._autoScroll) {\n this._autoScroll.dispose();\n }\n this._autoScroll = this._dragOrigin = this._lastMouseEvent = undefined;\n this._selectedIndicies = this._itemRectCache = undefined;\n if (this.state.dragRect) {\n this.setState({\n dragRect: undefined,\n });\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n MarqueeSelectionBase.prototype._isPointInRectangle = function (rectangle, point) {\n return (!!point.top &&\n rectangle.top < point.top &&\n rectangle.bottom > point.top &&\n !!point.left &&\n rectangle.left < point.left &&\n rectangle.right > point.left);\n };\n /**\n * We do not want to start the marquee if we're trying to marquee\n * from within an existing marquee selection.\n */\n MarqueeSelectionBase.prototype._isDragStartInSelection = function (ev) {\n var selection = this.props.selection;\n if (!this._root.current || (selection && selection.getSelectedCount() === 0)) {\n return false;\n }\n var allElements = this._root.current.querySelectorAll('[data-selection-index]');\n for (var i = 0; i < allElements.length; i++) {\n var element = allElements[i];\n var index = Number(element.getAttribute('data-selection-index'));\n if (selection.isIndexSelected(index)) {\n var itemRect = element.getBoundingClientRect();\n if (this._isPointInRectangle(itemRect, { left: ev.clientX, top: ev.clientY })) {\n return true;\n }\n }\n }\n return false;\n };\n MarqueeSelectionBase.prototype._isInSelectionToggle = function (ev) {\n var element = ev.target;\n while (element && element !== this._root.current) {\n if (element.getAttribute('data-selection-toggle') === 'true') {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n };\n MarqueeSelectionBase.prototype._evaluateSelection = function (dragRect, rootRect) {\n // Break early if we don't need to evaluate.\n if (!dragRect || !this._root.current) {\n return;\n }\n var selection = this.props.selection;\n var allElements = this._root.current.querySelectorAll('[data-selection-index]');\n if (!this._itemRectCache) {\n this._itemRectCache = {};\n }\n for (var i = 0; i < allElements.length; i++) {\n var element = allElements[i];\n var index = element.getAttribute('data-selection-index');\n // Pull the memoized rectangle for the item, or the get the rect and memoize.\n var itemRect = this._itemRectCache[index];\n if (!itemRect) {\n itemRect = element.getBoundingClientRect();\n // Normalize the item rect to the dragRect coordinates.\n itemRect = {\n left: itemRect.left - rootRect.left,\n top: itemRect.top - rootRect.top,\n width: itemRect.width,\n height: itemRect.height,\n right: itemRect.left - rootRect.left + itemRect.width,\n bottom: itemRect.top - rootRect.top + itemRect.height,\n };\n if (itemRect.width > 0 && itemRect.height > 0) {\n this._itemRectCache[index] = itemRect;\n }\n }\n if (itemRect.top < dragRect.top + dragRect.height &&\n itemRect.bottom > dragRect.top &&\n itemRect.left < dragRect.left + dragRect.width &&\n itemRect.right > dragRect.left) {\n this._selectedIndicies[index] = true;\n }\n else {\n delete this._selectedIndicies[index];\n }\n }\n // set previousSelectedIndices to be all of the selected indices from last time\n var previousSelectedIndices = this._allSelectedIndices || {};\n this._allSelectedIndices = {};\n // set all indices that are supposed to be selected in _allSelectedIndices\n for (var index in this._selectedIndicies) {\n if (this._selectedIndicies.hasOwnProperty(index)) {\n this._allSelectedIndices[index] = true;\n }\n }\n if (this._preservedIndicies) {\n for (var _i = 0, _a = this._preservedIndicies; _i < _a.length; _i++) {\n var index = _a[_i];\n this._allSelectedIndices[index] = true;\n }\n }\n // check if needs to update selection, only when current _allSelectedIndices\n // is different than previousSelectedIndices\n var needToUpdate = false;\n for (var index in this._allSelectedIndices) {\n if (this._allSelectedIndices[index] !== previousSelectedIndices[index]) {\n needToUpdate = true;\n break;\n }\n }\n if (!needToUpdate) {\n for (var index in previousSelectedIndices) {\n if (this._allSelectedIndices[index] !== previousSelectedIndices[index]) {\n needToUpdate = true;\n break;\n }\n }\n }\n // only update selection when needed\n if (needToUpdate) {\n // Stop change events, clear selection to re-populate.\n selection.setChangeEvents(false);\n selection.setAllSelected(false);\n for (var _b = 0, _c = Object.keys(this._allSelectedIndices); _b < _c.length; _b++) {\n var index = _c[_b];\n selection.setIndexSelected(Number(index), true, false);\n }\n selection.setChangeEvents(true);\n }\n };\n MarqueeSelectionBase.defaultProps = {\n rootTagName: 'div',\n rootProps: {},\n isEnabled: true,\n };\n return MarqueeSelectionBase;\n}(React.Component));\nexport { MarqueeSelectionBase };\n//# sourceMappingURL=MarqueeSelection.base.js.map","import { styled } from '../../Utilities';\nimport { MarqueeSelectionBase } from './MarqueeSelection.base';\nimport { getStyles } from './MarqueeSelection.styles';\nexport var MarqueeSelection = \n// TODO: MarqueeSelectionBase defaultProps are not lining up with IMarqueeSelectionProps, so we have to be explicit\n// with styled here. defaultProps.rootTagName doesn't appear to be used anywhere and defaultProps.rootProps is not\n// in IMarqueeSelectionProps.\nstyled(MarqueeSelectionBase, getStyles, undefined, {\n scope: 'MarqueeSelection',\n});\n//# sourceMappingURL=MarqueeSelection.js.map","import { HighContrastSelector } from '../../Styling';\nexport var getStyles = function (props) {\n var _a, _b, _c;\n var theme = props.theme, className = props.className;\n var palette = theme.palette;\n return {\n root: [\n className,\n {\n position: 'relative',\n cursor: 'default',\n },\n ],\n dragMask: [\n {\n position: 'absolute',\n background: 'rgba(255, 0, 0, 0)',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n selectors: (_a = {},\n _a[HighContrastSelector] = {\n background: 'none',\n backgroundColor: 'transparent',\n },\n _a),\n },\n ],\n box: [\n {\n position: 'absolute',\n boxSizing: 'border-box',\n border: \"1px solid \" + palette.themePrimary,\n pointerEvents: 'none',\n zIndex: 10,\n selectors: (_b = {},\n _b[HighContrastSelector] = {\n borderColor: 'Highlight',\n },\n _b),\n },\n ],\n boxFill: [\n {\n position: 'absolute',\n boxSizing: 'border-box',\n backgroundColor: palette.themePrimary,\n opacity: 0.1,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n selectors: (_c = {},\n _c[HighContrastSelector] = {\n background: 'none',\n backgroundColor: 'transparent',\n },\n _c),\n },\n ],\n };\n};\n//# sourceMappingURL=MarqueeSelection.styles.js.map","var _a;\nimport { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { DelayedRender, classNamesFunction, getNativeProps, htmlElementProperties, css } from '../../Utilities';\nimport { IconButton } from '../../Button';\nimport { Icon } from '../../Icon';\nimport { MessageBarType } from './MessageBar.types';\nimport { useId, useBoolean } from '@fluentui/react-hooks';\nvar ICON_MAP = (_a = {},\n _a[MessageBarType.info] = 'Info',\n _a[MessageBarType.warning] = 'Info',\n _a[MessageBarType.error] = 'ErrorBadge',\n _a[MessageBarType.blocked] = 'Blocked2',\n _a[MessageBarType.severeWarning] = 'Warning',\n _a[MessageBarType.success] = 'Completed',\n _a);\nvar COMPONENT_NAME = 'MessageBar';\nvar getClassNames = classNamesFunction();\nvar getAnnouncementPriority = function (messageBarType) {\n switch (messageBarType) {\n case MessageBarType.blocked:\n case MessageBarType.error:\n case MessageBarType.severeWarning:\n return 'assertive';\n }\n return 'polite';\n};\nvar getRole = function (messageBarType) {\n switch (messageBarType) {\n case MessageBarType.blocked:\n case MessageBarType.error:\n case MessageBarType.severeWarning:\n return 'alert';\n }\n return 'status';\n};\nexport var MessageBarBase = React.forwardRef(function (props, ref) {\n var _a = useBoolean(false), expandSingleLine = _a[0], toggleExpandSingleLine = _a[1].toggle;\n var labelId = useId('MessageBar');\n var actions = props.actions, className = props.className, children = props.children, overflowButtonAriaLabel = props.overflowButtonAriaLabel, dismissIconProps = props.dismissIconProps, styles = props.styles, theme = props.theme, _b = props.messageBarType, messageBarType = _b === void 0 ? MessageBarType.info : _b, _c = props.onDismiss, onDismiss = _c === void 0 ? undefined : _c, _d = props.isMultiline, isMultiline = _d === void 0 ? true : _d, truncated = props.truncated, dismissButtonAriaLabel = props.dismissButtonAriaLabel, messageBarIconProps = props.messageBarIconProps, role = props.role, _e = props.delayedRender, delayedRender = _e === void 0 ? true : _e;\n var nativeProps = getNativeProps(props, htmlElementProperties, [\n 'className',\n 'role',\n ]);\n var classNames = getClassNames(styles, {\n theme: theme,\n messageBarType: messageBarType || MessageBarType.info,\n onDismiss: onDismiss !== undefined,\n actions: actions !== undefined,\n truncated: truncated,\n isMultiline: isMultiline,\n expandSingleLine: expandSingleLine,\n className: className,\n });\n var expandIconProps = { iconName: expandSingleLine ? 'DoubleChevronUp' : 'DoubleChevronDown' };\n var regionProps = actions || onDismiss ? { 'aria-describedby': labelId, role: 'region' } : {};\n var actionsDiv = actions ? React.createElement(\"div\", { className: classNames.actions }, actions) : null;\n var dismissButton = onDismiss ? (React.createElement(IconButton, { disabled: false, className: classNames.dismissal, onClick: onDismiss, iconProps: dismissIconProps ? dismissIconProps : { iconName: 'Clear' }, title: dismissButtonAriaLabel, ariaLabel: dismissButtonAriaLabel })) : null;\n return (React.createElement(\"div\", __assign({ ref: ref, className: classNames.root }, regionProps),\n React.createElement(\"div\", { className: classNames.content },\n React.createElement(\"div\", { className: classNames.iconContainer, \"aria-hidden\": true }, messageBarIconProps ? (React.createElement(Icon, __assign({}, messageBarIconProps, { className: css(classNames.icon, messageBarIconProps.className) }))) : (React.createElement(Icon, { iconName: ICON_MAP[messageBarType], className: classNames.icon }))),\n React.createElement(\"div\", { className: classNames.text, id: labelId, role: role || getRole(messageBarType), \"aria-live\": getAnnouncementPriority(messageBarType) },\n React.createElement(\"span\", __assign({ className: classNames.innerText }, nativeProps), delayedRender ? (React.createElement(DelayedRender, null,\n React.createElement(\"span\", null, children))) : (\n // this span is probably not necessary, but preserving it for now in case anyone\n // has styling that expects it to be present\n React.createElement(\"span\", null, children)))),\n /* singleline expand/collapse button */ !isMultiline && !actionsDiv && truncated && (React.createElement(\"div\", { className: classNames.expandSingleLine },\n React.createElement(IconButton, { disabled: false, className: classNames.expand, onClick: toggleExpandSingleLine, iconProps: expandIconProps, ariaLabel: overflowButtonAriaLabel, \"aria-expanded\": expandSingleLine }))),\n !isMultiline && actionsDiv,\n /* singleline dismiss */ !isMultiline && dismissButton && (React.createElement(\"div\", { className: classNames.dismissSingleLine }, dismissButton)),\n isMultiline && dismissButton),\n isMultiline && actionsDiv));\n});\nMessageBarBase.displayName = COMPONENT_NAME;\n//# sourceMappingURL=MessageBar.base.js.map","var _a, _b, _c;\nimport { __assign } from \"tslib\";\nimport { HighContrastSelector, ScreenWidthMaxSmall, getScreenSelector, getGlobalClassNames, getFocusStyle, IconFontSizes, getHighContrastNoAdjustStyle, } from '../../Styling';\nimport { MessageBarType } from './MessageBar.types';\nvar GlobalClassNames = {\n root: 'ms-MessageBar',\n error: 'ms-MessageBar--error',\n blocked: 'ms-MessageBar--blocked',\n severeWarning: 'ms-MessageBar--severeWarning',\n success: 'ms-MessageBar--success',\n warning: 'ms-MessageBar--warning',\n multiline: 'ms-MessageBar-multiline',\n singleline: 'ms-MessageBar-singleline',\n dismissalSingleLine: 'ms-MessageBar-dismissalSingleLine',\n expandingSingleLine: 'ms-MessageBar-expandingSingleLine',\n content: 'ms-MessageBar-content',\n iconContainer: 'ms-MessageBar-icon',\n text: 'ms-MessageBar-text',\n innerText: 'ms-MessageBar-innerText',\n dismissSingleLine: 'ms-MessageBar-dismissSingleLine',\n expandSingleLine: 'ms-MessageBar-expandSingleLine',\n dismissal: 'ms-MessageBar-dismissal',\n expand: 'ms-MessageBar-expand',\n actions: 'ms-MessageBar-actions',\n actionsSingleline: 'ms-MessageBar-actionsSingleLine',\n};\nvar backgroundColor = (_a = {},\n _a[MessageBarType.error] = 'errorBackground',\n _a[MessageBarType.blocked] = 'errorBackground',\n _a[MessageBarType.success] = 'successBackground',\n _a[MessageBarType.warning] = 'warningBackground',\n _a[MessageBarType.severeWarning] = 'severeWarningBackground',\n _a[MessageBarType.info] = 'infoBackground',\n _a);\nvar highContrastBackgroundColor = (_b = {},\n _b[MessageBarType.error] = 'rgba(255, 0, 0, 0.3)',\n _b[MessageBarType.blocked] = 'rgba(255, 0, 0, 0.3)',\n _b[MessageBarType.success] = 'rgba(48, 241, 73, 0.3)',\n _b[MessageBarType.warning] = 'rgba(255, 254, 57, 0.3)',\n _b[MessageBarType.severeWarning] = 'rgba(255, 0, 0, 0.3)',\n _b[MessageBarType.info] = 'Window',\n _b);\nvar iconColor = (_c = {},\n _c[MessageBarType.error] = 'errorIcon',\n _c[MessageBarType.blocked] = 'errorIcon',\n _c[MessageBarType.success] = 'successIcon',\n _c[MessageBarType.warning] = 'warningIcon',\n _c[MessageBarType.severeWarning] = 'severeWarningIcon',\n _c[MessageBarType.info] = 'infoIcon',\n _c);\nexport var getStyles = function (props) {\n var _a, _b, _c, _d, _e;\n var theme = props.theme, className = props.className, onDismiss = props.onDismiss, truncated = props.truncated, isMultiline = props.isMultiline, expandSingleLine = props.expandSingleLine, _f = props.messageBarType, messageBarType = _f === void 0 ? MessageBarType.info : _f;\n var semanticColors = theme.semanticColors, fonts = theme.fonts;\n var SmallScreenSelector = getScreenSelector(0, ScreenWidthMaxSmall);\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n var dismissalAndExpandIconStyle = {\n fontSize: IconFontSizes.xSmall,\n height: 10,\n lineHeight: '10px',\n color: semanticColors.messageText,\n selectors: (_a = {},\n _a[HighContrastSelector] = __assign(__assign({}, getHighContrastNoAdjustStyle()), { color: 'WindowText' }),\n _a),\n };\n var dismissalAndExpandStyle = [\n getFocusStyle(theme, {\n inset: 1,\n highContrastStyle: {\n outlineOffset: '-6px',\n outline: '1px solid Highlight',\n },\n borderColor: 'transparent',\n }),\n {\n flexShrink: 0,\n width: 32,\n height: 32,\n padding: '8px 12px',\n selectors: {\n '& .ms-Button-icon': dismissalAndExpandIconStyle,\n ':hover': {\n backgroundColor: 'transparent',\n },\n ':active': {\n backgroundColor: 'transparent',\n },\n },\n },\n ];\n return {\n root: [\n classNames.root,\n fonts.medium,\n messageBarType === MessageBarType.error && classNames.error,\n messageBarType === MessageBarType.blocked && classNames.blocked,\n messageBarType === MessageBarType.severeWarning && classNames.severeWarning,\n messageBarType === MessageBarType.success && classNames.success,\n messageBarType === MessageBarType.warning && classNames.warning,\n isMultiline ? classNames.multiline : classNames.singleline,\n !isMultiline && onDismiss && classNames.dismissalSingleLine,\n !isMultiline && truncated && classNames.expandingSingleLine,\n {\n background: semanticColors[backgroundColor[messageBarType]],\n color: semanticColors.messageText,\n minHeight: 32,\n width: '100%',\n display: 'flex',\n wordBreak: 'break-word',\n selectors: (_b = {\n '.ms-Link': {\n color: semanticColors.messageLink,\n selectors: {\n ':hover': {\n color: semanticColors.messageLinkHovered,\n },\n },\n }\n },\n _b[HighContrastSelector] = __assign(__assign({}, getHighContrastNoAdjustStyle()), { background: highContrastBackgroundColor[messageBarType], border: '1px solid WindowText', color: 'WindowText' }),\n _b),\n },\n isMultiline && {\n flexDirection: 'column',\n },\n className,\n ],\n content: [\n classNames.content,\n {\n display: 'flex',\n width: '100%',\n lineHeight: 'normal',\n },\n ],\n iconContainer: [\n classNames.iconContainer,\n {\n fontSize: IconFontSizes.medium,\n minWidth: 16,\n minHeight: 16,\n display: 'flex',\n flexShrink: 0,\n margin: '8px 0 8px 12px',\n },\n ],\n icon: {\n color: semanticColors[iconColor[messageBarType]],\n selectors: (_c = {},\n _c[HighContrastSelector] = __assign(__assign({}, getHighContrastNoAdjustStyle()), { color: 'WindowText' }),\n _c),\n },\n text: [\n classNames.text,\n __assign(__assign({ minWidth: 0, display: 'flex', flexGrow: 1, margin: 8 }, fonts.small), { selectors: (_d = {},\n _d[HighContrastSelector] = __assign({}, getHighContrastNoAdjustStyle()),\n _d) }),\n !onDismiss && {\n marginRight: 12,\n },\n ],\n innerText: [\n classNames.innerText,\n {\n lineHeight: 16,\n selectors: {\n '& span a:last-child': {\n paddingLeft: 4,\n },\n },\n },\n truncated && {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n !isMultiline && {\n // In high contrast this causes the top and bottom of links' focus outline to be clipped\n // (not sure of a good way around that while still maintaining text clipping)\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n !isMultiline &&\n !truncated && {\n selectors: (_e = {},\n _e[SmallScreenSelector] = {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n _e),\n },\n expandSingleLine && {\n overflow: 'visible',\n whiteSpace: 'pre-wrap',\n },\n ],\n dismissSingleLine: classNames.dismissSingleLine,\n expandSingleLine: classNames.expandSingleLine,\n dismissal: [classNames.dismissal, dismissalAndExpandStyle],\n expand: [classNames.expand, dismissalAndExpandStyle],\n actions: [\n isMultiline ? classNames.actions : classNames.actionsSingleline,\n {\n display: 'flex',\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto',\n flexDirection: 'row-reverse',\n alignItems: 'center',\n margin: '0 12px 0 8px',\n selectors: {\n '& button:nth-child(n+2)': {\n marginLeft: 8,\n },\n },\n },\n isMultiline && {\n marginBottom: 8,\n },\n onDismiss &&\n !isMultiline && {\n marginRight: 0,\n },\n ],\n };\n};\n//# sourceMappingURL=MessageBar.styles.js.map","import { styled } from '../../Utilities';\nimport { MessageBarBase } from './MessageBar.base';\nimport { getStyles } from './MessageBar.styles';\nexport var MessageBar = styled(MessageBarBase, getStyles, undefined, {\n scope: 'MessageBar',\n});\n//# sourceMappingURL=MessageBar.js.map","/**\n * {@docCategory MessageBar}\n */\nexport var MessageBarType;\n(function (MessageBarType) {\n /** Info styled MessageBar */\n MessageBarType[MessageBarType[\"info\"] = 0] = \"info\";\n /** Error styled MessageBar */\n MessageBarType[MessageBarType[\"error\"] = 1] = \"error\";\n /** Blocked styled MessageBar */\n MessageBarType[MessageBarType[\"blocked\"] = 2] = \"blocked\";\n /** SevereWarning styled MessageBar */\n MessageBarType[MessageBarType[\"severeWarning\"] = 3] = \"severeWarning\";\n /** Success styled MessageBar */\n MessageBarType[MessageBarType[\"success\"] = 4] = \"success\";\n /** Warning styled MessageBar */\n MessageBarType[MessageBarType[\"warning\"] = 5] = \"warning\";\n})(MessageBarType || (MessageBarType = {}));\n//# sourceMappingURL=MessageBar.types.js.map","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { classNamesFunction, allowScrollOnElement, allowOverscrollOnElement, getPropsWithDefaults, KeyCodes, elementContains, EventGroup, } from '../../Utilities';\nimport { FocusTrapZone } from '../../FocusTrapZone';\nimport { animationDuration } from './Modal.styles';\nimport { Overlay } from '../../Overlay';\nimport { Layer } from '../../Layer';\nimport { Popup } from '../../Popup';\nimport { ResponsiveMode, useResponsiveMode } from '../../ResponsiveMode';\nimport { DirectionalHint } from '../../common/DirectionalHint';\nimport { Icon } from '../../Icon';\nimport { DraggableZone } from '../../utilities/DraggableZone/index';\nimport { useWindow } from '@fluentui/react-window-provider';\nimport { useBoolean, useMergedRefs, useWarnings, useConst, useSetTimeout, useId, useUnmount, } from '@fluentui/react-hooks';\nvar ZERO = { x: 0, y: 0 };\nvar DEFAULT_PROPS = {\n isOpen: false,\n isDarkOverlay: true,\n className: '',\n containerClassName: '',\n};\nvar getClassNames = classNamesFunction();\nvar getMoveDelta = function (ev) {\n var delta = 10;\n if (ev.shiftKey) {\n if (!ev.ctrlKey) {\n delta = 50;\n }\n }\n else if (ev.ctrlKey) {\n delta = 1;\n }\n return delta;\n};\nvar useComponentRef = function (props, focusTrapZone) {\n React.useImperativeHandle(props.componentRef, function () { return ({\n focus: function () {\n if (focusTrapZone.current) {\n focusTrapZone.current.focus();\n }\n },\n }); }, [focusTrapZone]);\n};\nexport var ModalBase = React.forwardRef(function (propsWithoutDefaults, ref) {\n var props = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults);\n var allowTouchBodyScroll = props.allowTouchBodyScroll, className = props.className, children = props.children, containerClassName = props.containerClassName, scrollableContentClassName = props.scrollableContentClassName, elementToFocusOnDismiss = props.elementToFocusOnDismiss, firstFocusableSelector = props.firstFocusableSelector, forceFocusInsideTrap = props.forceFocusInsideTrap, ignoreExternalFocusing = props.ignoreExternalFocusing, isBlocking = props.isBlocking, isAlert = props.isAlert, isClickableOutsideFocusTrap = props.isClickableOutsideFocusTrap, isDarkOverlay = props.isDarkOverlay, onDismiss = props.onDismiss, layerProps = props.layerProps, overlay = props.overlay, isOpen = props.isOpen, titleAriaId = props.titleAriaId, styles = props.styles, subtitleAriaId = props.subtitleAriaId, theme = props.theme, topOffsetFixed = props.topOffsetFixed, responsiveMode = props.responsiveMode, \n // eslint-disable-next-line deprecation/deprecation\n onLayerDidMount = props.onLayerDidMount, isModeless = props.isModeless, dragOptions = props.dragOptions, onDismissed = props.onDismissed, enableAriaHiddenSiblings = props.enableAriaHiddenSiblings;\n var rootRef = React.useRef(null);\n var focusTrapZone = React.useRef(null);\n var focusTrapZoneElm = React.useRef(null);\n var mergedRef = useMergedRefs(rootRef, ref);\n var modalResponsiveMode = useResponsiveMode(mergedRef);\n var focusTrapZoneId = useId('ModalFocusTrapZone');\n var win = useWindow();\n var _a = useSetTimeout(), setTimeout = _a.setTimeout, clearTimeout = _a.clearTimeout;\n var _b = React.useState(isOpen), isModalOpen = _b[0], setIsModalOpen = _b[1];\n var _c = React.useState(isOpen), isVisible = _c[0], setIsVisible = _c[1];\n var _d = React.useState(ZERO), coordinates = _d[0], setCoordinates = _d[1];\n var _e = React.useState(), modalRectangleTop = _e[0], setModalRectangleTop = _e[1];\n var _f = useBoolean(false), isModalMenuOpen = _f[0], _g = _f[1], toggleModalMenuOpen = _g.toggle, setModalMenuClose = _g.setFalse;\n var internalState = useConst(function () { return ({\n onModalCloseTimer: 0,\n allowTouchBodyScroll: allowTouchBodyScroll,\n scrollableContent: null,\n lastSetCoordinates: ZERO,\n events: new EventGroup({}),\n }); });\n var keepInBounds = (dragOptions || {}).keepInBounds;\n var isAlertRole = isAlert !== null && isAlert !== void 0 ? isAlert : (isBlocking && !isModeless);\n var layerClassName = layerProps === undefined ? '' : layerProps.className;\n var classNames = getClassNames(styles, {\n theme: theme,\n className: className,\n containerClassName: containerClassName,\n scrollableContentClassName: scrollableContentClassName,\n isOpen: isOpen,\n isVisible: isVisible,\n hasBeenOpened: internalState.hasBeenOpened,\n modalRectangleTop: modalRectangleTop,\n topOffsetFixed: topOffsetFixed,\n isModeless: isModeless,\n layerClassName: layerClassName,\n windowInnerHeight: win === null || win === void 0 ? void 0 : win.innerHeight,\n isDefaultDragHandle: dragOptions && !dragOptions.dragHandleSelector,\n });\n var mergedLayerProps = __assign(__assign({ eventBubblingEnabled: false }, layerProps), { onLayerDidMount: layerProps && layerProps.onLayerDidMount ? layerProps.onLayerDidMount : onLayerDidMount, insertFirst: isModeless, className: classNames.layer });\n // Allow the user to scroll within the modal but not on the body\n var allowScrollOnModal = React.useCallback(function (elt) {\n if (elt) {\n if (internalState.allowTouchBodyScroll) {\n allowOverscrollOnElement(elt, internalState.events);\n }\n else {\n allowScrollOnElement(elt, internalState.events);\n }\n }\n else {\n internalState.events.off(internalState.scrollableContent);\n }\n internalState.scrollableContent = elt;\n }, [internalState]);\n var registerInitialModalPosition = function () {\n var dialogMain = focusTrapZoneElm.current;\n var modalRectangle = dialogMain === null || dialogMain === void 0 ? void 0 : dialogMain.getBoundingClientRect();\n if (modalRectangle) {\n if (topOffsetFixed) {\n setModalRectangleTop(modalRectangle.top);\n }\n if (keepInBounds) {\n // x/y are unavailable in IE, so use the equivalent left/top\n internalState.minPosition = { x: -modalRectangle.left, y: -modalRectangle.top };\n internalState.maxPosition = { x: modalRectangle.left, y: modalRectangle.top };\n }\n }\n };\n /**\n * Clamps an axis to a specified min and max position.\n *\n * @param axis A string that represents the axis (x/y).\n * @param position The position on the axis.\n */\n var getClampedAxis = React.useCallback(function (axis, position) {\n var minPosition = internalState.minPosition, maxPosition = internalState.maxPosition;\n if (keepInBounds && minPosition && maxPosition) {\n position = Math.max(minPosition[axis], position);\n position = Math.min(maxPosition[axis], position);\n }\n return position;\n }, [keepInBounds, internalState]);\n var handleModalClose = function () {\n var _a;\n internalState.lastSetCoordinates = ZERO;\n setModalMenuClose();\n internalState.isInKeyboardMoveMode = false;\n setIsModalOpen(false);\n setCoordinates(ZERO);\n (_a = internalState.disposeOnKeyUp) === null || _a === void 0 ? void 0 : _a.call(internalState);\n onDismissed === null || onDismissed === void 0 ? void 0 : onDismissed();\n };\n var handleDragStart = React.useCallback(function () {\n setModalMenuClose();\n internalState.isInKeyboardMoveMode = false;\n }, [internalState, setModalMenuClose]);\n var handleDrag = React.useCallback(function (ev, dragData) {\n setCoordinates(function (prevValue) { return ({\n x: getClampedAxis('x', prevValue.x + dragData.delta.x),\n y: getClampedAxis('y', prevValue.y + dragData.delta.y),\n }); });\n }, [getClampedAxis]);\n var handleDragStop = React.useCallback(function () {\n if (focusTrapZone.current) {\n focusTrapZone.current.focus();\n }\n }, []);\n var handleEnterKeyboardMoveMode = function () {\n // We need a global handleKeyDown event when we are in the move mode so that we can\n // handle the key presses and the components inside the modal do not get the events\n var handleKeyDown = function (ev) {\n if (ev.altKey && ev.ctrlKey && ev.keyCode === KeyCodes.space) {\n // CTRL + ALT + SPACE is handled during keyUp\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n if (isModalMenuOpen && (ev.altKey || ev.keyCode === KeyCodes.escape)) {\n setModalMenuClose();\n }\n if (internalState.isInKeyboardMoveMode && (ev.keyCode === KeyCodes.escape || ev.keyCode === KeyCodes.enter)) {\n internalState.isInKeyboardMoveMode = false;\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (internalState.isInKeyboardMoveMode) {\n var handledEvent = true;\n var delta_1 = getMoveDelta(ev);\n switch (ev.keyCode) {\n /* eslint-disable no-fallthrough */\n case KeyCodes.escape:\n setCoordinates(internalState.lastSetCoordinates);\n case KeyCodes.enter: {\n // TODO: determine if fallthrough was intentional\n /* eslint-enable no-fallthrough */\n internalState.lastSetCoordinates = ZERO;\n // setIsInKeyboardMoveMode(false);\n break;\n }\n case KeyCodes.up: {\n setCoordinates(function (prevValue) { return ({ x: prevValue.x, y: getClampedAxis('y', prevValue.y - delta_1) }); });\n break;\n }\n case KeyCodes.down: {\n setCoordinates(function (prevValue) { return ({ x: prevValue.x, y: getClampedAxis('y', prevValue.y + delta_1) }); });\n break;\n }\n case KeyCodes.left: {\n setCoordinates(function (prevValue) { return ({ x: getClampedAxis('x', prevValue.x - delta_1), y: prevValue.y }); });\n break;\n }\n case KeyCodes.right: {\n setCoordinates(function (prevValue) { return ({ x: getClampedAxis('x', prevValue.x + delta_1), y: prevValue.y }); });\n break;\n }\n default: {\n handledEvent = false;\n }\n }\n if (handledEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n internalState.lastSetCoordinates = coordinates;\n setModalMenuClose();\n internalState.isInKeyboardMoveMode = true;\n internalState.events.on(win, 'keydown', handleKeyDown, true /* useCapture */);\n internalState.disposeOnKeyDown = function () {\n internalState.events.off(win, 'keydown', handleKeyDown, true /* useCapture */);\n internalState.disposeOnKeyDown = undefined;\n };\n };\n var handleExitKeyboardMoveMode = function () {\n var _a;\n internalState.lastSetCoordinates = ZERO;\n internalState.isInKeyboardMoveMode = false;\n (_a = internalState.disposeOnKeyDown) === null || _a === void 0 ? void 0 : _a.call(internalState);\n };\n var registerForKeyUp = function () {\n var handleKeyUp = function (ev) {\n // Needs to handle the CTRL + ALT + SPACE key during keyup due to FireFox bug:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (ev.altKey && ev.ctrlKey && ev.keyCode === KeyCodes.space) {\n if (elementContains(internalState.scrollableContent, ev.target)) {\n toggleModalMenuOpen();\n ev.preventDefault();\n ev.stopPropagation();\n }\n }\n };\n if (!internalState.disposeOnKeyUp) {\n internalState.events.on(win, 'keyup', handleKeyUp, true /* useCapture */);\n internalState.disposeOnKeyUp = function () {\n internalState.events.off(win, 'keyup', handleKeyUp, true /* useCapture */);\n internalState.disposeOnKeyUp = undefined;\n };\n }\n };\n React.useEffect(function () {\n clearTimeout(internalState.onModalCloseTimer);\n // Opening the dialog\n if (isOpen) {\n // This must be done after the modal content has rendered\n requestAnimationFrame(function () { return setTimeout(registerInitialModalPosition, 0); });\n setIsModalOpen(true);\n // Add a keyUp handler for all key up events once the dialog is open.\n if (dragOptions) {\n registerForKeyUp();\n }\n internalState.hasBeenOpened = true;\n setIsVisible(true);\n }\n // Closing the dialog\n if (!isOpen && isModalOpen) {\n internalState.onModalCloseTimer = setTimeout(handleModalClose, parseFloat(animationDuration) * 1000);\n setIsVisible(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run if isModalOpen or isOpen mutates.\n }, [isModalOpen, isOpen]);\n useUnmount(function () {\n internalState.events.dispose();\n });\n useComponentRef(props, focusTrapZone);\n useDebugWarnings(props);\n var modalContent = (React.createElement(FocusTrapZone, { id: focusTrapZoneId, ref: focusTrapZoneElm, componentRef: focusTrapZone, className: classNames.main, elementToFocusOnDismiss: elementToFocusOnDismiss, isClickableOutsideFocusTrap: isModeless || isClickableOutsideFocusTrap || !isBlocking, ignoreExternalFocusing: ignoreExternalFocusing, forceFocusInsideTrap: isModeless ? !isModeless : forceFocusInsideTrap, firstFocusableSelector: firstFocusableSelector, focusPreviouslyFocusedInnerElement: true, onBlur: internalState.isInKeyboardMoveMode ? handleExitKeyboardMoveMode : undefined, enableAriaHiddenSiblings: enableAriaHiddenSiblings },\n dragOptions && internalState.isInKeyboardMoveMode && (React.createElement(\"div\", { className: classNames.keyboardMoveIconContainer }, dragOptions.keyboardMoveIconProps ? (React.createElement(Icon, __assign({}, dragOptions.keyboardMoveIconProps))) : (React.createElement(Icon, { iconName: \"move\", className: classNames.keyboardMoveIcon })))),\n React.createElement(\"div\", { ref: allowScrollOnModal, className: classNames.scrollableContent, \"data-is-scrollable\": true },\n dragOptions && isModalMenuOpen && (React.createElement(dragOptions.menu, { items: [\n { key: 'move', text: dragOptions.moveMenuItemText, onClick: handleEnterKeyboardMoveMode },\n { key: 'close', text: dragOptions.closeMenuItemText, onClick: handleModalClose },\n ], onDismiss: setModalMenuClose, alignTargetEdge: true, coverTarget: true, directionalHint: DirectionalHint.topLeftEdge, directionalHintFixed: true, shouldFocusOnMount: true, target: internalState.scrollableContent })),\n children)));\n return ((isModalOpen && modalResponsiveMode >= (responsiveMode || ResponsiveMode.small) && (React.createElement(Layer, __assign({ ref: mergedRef }, mergedLayerProps),\n React.createElement(Popup, { role: isAlertRole ? 'alertdialog' : 'dialog', \"aria-modal\": !isModeless, ariaLabelledBy: titleAriaId, ariaDescribedBy: subtitleAriaId, onDismiss: onDismiss, shouldRestoreFocus: !ignoreExternalFocusing },\n React.createElement(\"div\", { className: classNames.root, role: !isModeless ? 'document' : undefined },\n !isModeless && (React.createElement(Overlay, __assign({ \"aria-hidden\": true, isDarkThemed: isDarkOverlay, onClick: isBlocking ? undefined : onDismiss, allowTouchBodyScroll: allowTouchBodyScroll }, overlay))),\n dragOptions ? (React.createElement(DraggableZone, { handleSelector: dragOptions.dragHandleSelector || \"#\" + focusTrapZoneId, preventDragSelector: \"button\", onStart: handleDragStart, onDragChange: handleDrag, onStop: handleDragStop, position: coordinates }, modalContent)) : (modalContent)))))) ||\n null);\n});\nModalBase.displayName = 'Modal';\nfunction useDebugWarnings(props) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n useWarnings({\n name: 'Modal',\n props: props,\n deprecations: { onLayerDidMount: 'layerProps.onLayerDidMount' },\n });\n }\n}\n//# sourceMappingURL=Modal.base.js.map","import { styled } from '../../Utilities';\nimport { ModalBase } from './Modal.base';\nimport { getStyles } from './Modal.styles';\nexport var Modal = styled(ModalBase, getStyles, undefined, {\n scope: 'Modal',\n fields: ['theme', 'styles', 'enableAriaHiddenSiblings'],\n});\nModal.displayName = 'Modal';\n//# sourceMappingURL=Modal.js.map","import { AnimationVariables, getGlobalClassNames, ZIndexes } from '../../Styling';\nexport var animationDuration = AnimationVariables.durationValue2;\nvar globalClassNames = {\n root: 'ms-Modal',\n main: 'ms-Dialog-main',\n scrollableContent: 'ms-Modal-scrollableContent',\n isOpen: 'is-open',\n layer: 'ms-Modal-Layer',\n};\nexport var getStyles = function (props) {\n var _a;\n var className = props.className, containerClassName = props.containerClassName, scrollableContentClassName = props.scrollableContentClassName, isOpen = props.isOpen, isVisible = props.isVisible, hasBeenOpened = props.hasBeenOpened, modalRectangleTop = props.modalRectangleTop, theme = props.theme, topOffsetFixed = props.topOffsetFixed, isModeless = props.isModeless, layerClassName = props.layerClassName, isDefaultDragHandle = props.isDefaultDragHandle, windowInnerHeight = props.windowInnerHeight;\n var palette = theme.palette, effects = theme.effects, fonts = theme.fonts;\n var classNames = getGlobalClassNames(globalClassNames, theme);\n return {\n root: [\n classNames.root,\n fonts.medium,\n {\n backgroundColor: 'transparent',\n position: isModeless ? 'absolute' : 'fixed',\n height: '100%',\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n opacity: 0,\n pointerEvents: 'none',\n transition: \"opacity \" + animationDuration,\n },\n topOffsetFixed &&\n typeof modalRectangleTop === 'number' &&\n hasBeenOpened && {\n alignItems: 'flex-start',\n },\n isOpen && classNames.isOpen,\n isVisible && {\n opacity: 1,\n pointerEvents: 'auto',\n },\n className,\n ],\n main: [\n classNames.main,\n {\n boxShadow: effects.elevation64,\n borderRadius: effects.roundedCorner2,\n backgroundColor: palette.white,\n boxSizing: 'border-box',\n position: 'relative',\n textAlign: 'left',\n outline: '3px solid transparent',\n maxHeight: 'calc(100% - 32px)',\n maxWidth: 'calc(100% - 32px)',\n minHeight: '176px',\n minWidth: '288px',\n overflowY: 'auto',\n zIndex: isModeless ? ZIndexes.Layer : undefined,\n },\n topOffsetFixed &&\n typeof modalRectangleTop === 'number' &&\n hasBeenOpened && {\n top: modalRectangleTop,\n },\n isDefaultDragHandle && {\n cursor: 'move',\n },\n containerClassName,\n ],\n scrollableContent: [\n classNames.scrollableContent,\n {\n overflowY: 'auto',\n flexGrow: 1,\n maxHeight: '100vh',\n selectors: (_a = {},\n _a['@supports (-webkit-overflow-scrolling: touch)'] = {\n maxHeight: windowInnerHeight,\n },\n _a),\n },\n scrollableContentClassName,\n ],\n layer: isModeless && [\n layerClassName,\n classNames.layer,\n {\n position: 'static',\n width: 'unset',\n height: 'unset',\n },\n ],\n keyboardMoveIconContainer: {\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n padding: '3px 0px',\n },\n keyboardMoveIcon: {\n // eslint-disable-next-line deprecation/deprecation\n fontSize: fonts.xLargePlus.fontSize,\n width: '24px',\n },\n };\n};\n//# sourceMappingURL=Modal.styles.js.map","import { __assign, __extends } from \"tslib\";\nimport * as React from 'react';\nimport { ActionButton } from '../../Button';\nimport { buttonStyles } from './Nav.styles';\nimport { classNamesFunction, divProperties, getNativeProps, getWindow, initializeComponentRef } from '../../Utilities';\nimport { FocusZone, FocusZoneDirection } from '../../FocusZone';\nimport { Icon } from '../../Icon';\nimport { composeComponentAs, composeRenderFunction } from '@fluentui/utilities';\n// The number pixels per indentation level for Nav links.\nvar _indentationSize = 14;\n// The number of pixels of left margin\nvar _baseIndent = 3;\n// global var used in _isLinkSelectedKey\nvar _urlResolver;\nexport function isRelativeUrl(url) {\n // A URL is relative if it has no protocol.\n return !!url && !/^[a-z0-9+-.]+:\\/\\//i.test(url);\n}\nvar getClassNames = classNamesFunction();\nvar NavBase = /** @class */ (function (_super) {\n __extends(NavBase, _super);\n function NavBase(props) {\n var _this = _super.call(this, props) || this;\n _this._focusZone = React.createRef();\n _this._onRenderLink = function (link) {\n var _a = _this.props, styles = _a.styles, groups = _a.groups, theme = _a.theme;\n var classNames = getClassNames(styles, { theme: theme, groups: groups });\n return React.createElement(\"div\", { className: classNames.linkText }, link.name);\n };\n _this._renderGroup = function (group, groupIndex) {\n var _a = _this.props, styles = _a.styles, groups = _a.groups, theme = _a.theme, _b = _a.onRenderGroupHeader, onRenderGroupHeader = _b === void 0 ? _this._renderGroupHeader : _b;\n var isExpanded = _this._isGroupExpanded(group);\n var classNames = getClassNames(styles, {\n theme: theme,\n isGroup: true,\n isExpanded: isExpanded,\n groups: groups,\n });\n var finalOnHeaderClick = function (ev, isCollapsing) {\n _this._onGroupHeaderClicked(group, ev);\n };\n var groupProps = __assign(__assign({}, group), { isExpanded: isExpanded, onHeaderClick: finalOnHeaderClick });\n return (React.createElement(\"div\", { key: groupIndex, className: classNames.group },\n groupProps.name ? onRenderGroupHeader(groupProps, _this._renderGroupHeader) : null,\n React.createElement(\"div\", { className: classNames.groupContent }, _this._renderLinks(groupProps.links, 0 /* nestingLevel */))));\n };\n _this._renderGroupHeader = function (group) {\n // eslint-disable-next-line deprecation/deprecation\n var _a = _this.props, styles = _a.styles, groups = _a.groups, theme = _a.theme, expandButtonAriaLabel = _a.expandButtonAriaLabel;\n var isExpanded = group.isExpanded;\n var classNames = getClassNames(styles, {\n theme: theme,\n isGroup: true,\n isExpanded: isExpanded,\n groups: groups,\n });\n var label = (isExpanded ? group.collapseAriaLabel : group.expandAriaLabel) || expandButtonAriaLabel;\n var onHeaderClick = group.onHeaderClick;\n var onClick = onHeaderClick\n ? function (ev) {\n onHeaderClick(ev, isExpanded);\n }\n : undefined;\n return (React.createElement(\"button\", { className: classNames.chevronButton, onClick: onClick, \"aria-label\": label, \"aria-expanded\": isExpanded },\n React.createElement(Icon, { className: classNames.chevronIcon, iconName: \"ChevronDown\" }),\n group.name));\n };\n initializeComponentRef(_this);\n _this.state = {\n isGroupCollapsed: {},\n // TODO: consider removing\n // eslint-disable-next-line react/no-unused-state\n isLinkExpandStateChanged: false,\n selectedKey: props.initialSelectedKey || props.selectedKey,\n };\n return _this;\n }\n NavBase.prototype.render = function () {\n var _a = this.props, styles = _a.styles, groups = _a.groups, className = _a.className, isOnTop = _a.isOnTop, theme = _a.theme;\n if (!groups) {\n return null;\n }\n var groupElements = groups.map(this._renderGroup);\n var classNames = getClassNames(styles, { theme: theme, className: className, isOnTop: isOnTop, groups: groups });\n return (React.createElement(FocusZone, { direction: FocusZoneDirection.vertical, componentRef: this._focusZone },\n React.createElement(\"nav\", { role: \"navigation\", className: classNames.root, \"aria-label\": this.props.ariaLabel }, groupElements)));\n };\n Object.defineProperty(NavBase.prototype, \"selectedKey\", {\n get: function () {\n return this.state.selectedKey;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Sets focus to the first tabbable item in the zone.\n * @param forceIntoFirstElement - If true, focus will be forced into the first element, even\n * if focus is already in the focus zone.\n * @returns True if focus could be set to an active element, false if no operation was taken.\n */\n NavBase.prototype.focus = function (forceIntoFirstElement) {\n if (forceIntoFirstElement === void 0) { forceIntoFirstElement = false; }\n if (this._focusZone && this._focusZone.current) {\n return this._focusZone.current.focus(forceIntoFirstElement);\n }\n return false;\n };\n NavBase.prototype._renderNavLink = function (link, linkIndex, nestingLevel) {\n var _a = this.props, styles = _a.styles, groups = _a.groups, theme = _a.theme;\n var isLinkWithIcon = link.icon || link.iconProps;\n var isSelectedLink = this._isLinkSelected(link);\n var _b = link.ariaCurrent, ariaCurrent = _b === void 0 ? 'page' : _b;\n var classNames = getClassNames(styles, {\n theme: theme,\n isSelected: isSelectedLink,\n isDisabled: link.disabled,\n isButtonEntry: link.onClick && !link.forceAnchor,\n leftPadding: _indentationSize * nestingLevel + _baseIndent + (isLinkWithIcon ? 0 : 24),\n groups: groups,\n });\n // Prevent hijacking of the parent window if link.target is defined\n var rel = link.url && link.target && !isRelativeUrl(link.url) ? 'noopener noreferrer' : undefined;\n var LinkAs = this.props.linkAs ? composeComponentAs(this.props.linkAs, ActionButton) : ActionButton;\n var onRenderLink = this.props.onRenderLink\n ? composeRenderFunction(this.props.onRenderLink, this._onRenderLink)\n : this._onRenderLink;\n return (React.createElement(LinkAs, { className: classNames.link, styles: buttonStyles, href: link.url || (link.forceAnchor ? '#' : undefined), iconProps: link.iconProps || { iconName: link.icon }, \n // eslint-disable-next-line react/jsx-no-bind\n onClick: link.onClick ? this._onNavButtonLinkClicked.bind(this, link) : this._onNavAnchorLinkClicked.bind(this, link), title: link.title !== undefined ? link.title : link.name, target: link.target, rel: rel, disabled: link.disabled, \"aria-current\": isSelectedLink ? ariaCurrent : undefined, \"aria-label\": link.ariaLabel ? link.ariaLabel : undefined, link: link }, onRenderLink(link)));\n };\n NavBase.prototype._renderCompositeLink = function (link, linkIndex, nestingLevel) {\n var divProps = __assign({}, getNativeProps(link, divProperties, ['onClick']));\n // eslint-disable-next-line deprecation/deprecation\n var _a = this.props, expandButtonAriaLabel = _a.expandButtonAriaLabel, styles = _a.styles, groups = _a.groups, theme = _a.theme;\n var classNames = getClassNames(styles, {\n theme: theme,\n isExpanded: !!link.isExpanded,\n isSelected: this._isLinkSelected(link),\n isLink: true,\n isDisabled: link.disabled,\n position: _indentationSize * nestingLevel + 1,\n groups: groups,\n });\n var finalExpandBtnAriaLabel = '';\n if (link.links && link.links.length > 0) {\n if (link.collapseAriaLabel || link.expandAriaLabel) {\n finalExpandBtnAriaLabel = link.isExpanded ? link.collapseAriaLabel : link.expandAriaLabel;\n }\n else {\n // TODO remove when `expandButtonAriaLabel` is removed. This is not an ideal concatenation for localization.\n finalExpandBtnAriaLabel = expandButtonAriaLabel ? link.name + \" \" + expandButtonAriaLabel : link.name;\n }\n }\n return (React.createElement(\"div\", __assign({}, divProps, { key: link.key || linkIndex, className: classNames.compositeLink }),\n link.links && link.links.length > 0 ? (React.createElement(\"button\", { className: classNames.chevronButton, onClick: this._onLinkExpandClicked.bind(this, link), \"aria-label\": finalExpandBtnAriaLabel, \"aria-expanded\": link.isExpanded ? 'true' : 'false' },\n React.createElement(Icon, { className: classNames.chevronIcon, iconName: \"ChevronDown\" }))) : null,\n this._renderNavLink(link, linkIndex, nestingLevel)));\n };\n NavBase.prototype._renderLink = function (link, linkIndex, nestingLevel) {\n var _a = this.props, styles = _a.styles, groups = _a.groups, theme = _a.theme;\n var classNames = getClassNames(styles, { theme: theme, groups: groups });\n return (React.createElement(\"li\", { key: link.key || linkIndex, role: \"listitem\", className: classNames.navItem },\n this._renderCompositeLink(link, linkIndex, nestingLevel),\n link.isExpanded ? this._renderLinks(link.links, ++nestingLevel) : null));\n };\n NavBase.prototype._renderLinks = function (links, nestingLevel) {\n var _this = this;\n if (!links || !links.length) {\n return null;\n }\n var linkElements = links.map(function (link, linkIndex) {\n return _this._renderLink(link, linkIndex, nestingLevel);\n });\n var _a = this.props, styles = _a.styles, groups = _a.groups, theme = _a.theme;\n var classNames = getClassNames(styles, { theme: theme, groups: groups });\n return (React.createElement(\"ul\", { role: \"list\", className: classNames.navItems }, linkElements));\n };\n NavBase.prototype._onGroupHeaderClicked = function (group, ev) {\n if (group.onHeaderClick) {\n group.onHeaderClick(ev, this._isGroupExpanded(group));\n }\n this._toggleCollapsed(group);\n if (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n NavBase.prototype._onLinkExpandClicked = function (link, ev) {\n var onLinkExpandClick = this.props.onLinkExpandClick;\n if (onLinkExpandClick) {\n onLinkExpandClick(ev, link);\n }\n if (!ev.defaultPrevented) {\n link.isExpanded = !link.isExpanded;\n // eslint-disable-next-line react/no-unused-state\n this.setState({ isLinkExpandStateChanged: true });\n }\n ev.preventDefault();\n ev.stopPropagation();\n };\n NavBase.prototype._preventBounce = function (link, ev) {\n if (!link.url && link.forceAnchor) {\n ev.preventDefault();\n }\n };\n NavBase.prototype._onNavAnchorLinkClicked = function (link, ev) {\n // If the href is \"#\" we should call preventDefault to prevent scrolling to the top of the page\n this._preventBounce(link, ev);\n if (this.props.onLinkClick) {\n this.props.onLinkClick(ev, link);\n }\n if (!link.url && link.links && link.links.length > 0) {\n this._onLinkExpandClicked(link, ev);\n }\n this.setState({ selectedKey: link.key });\n };\n NavBase.prototype._onNavButtonLinkClicked = function (link, ev) {\n // If the href is \"#\" we should call preventDefault to prevent scrolling to the top of the page\n this._preventBounce(link, ev);\n if (link.onClick) {\n link.onClick(ev, link);\n }\n if (!link.url && link.links && link.links.length > 0) {\n this._onLinkExpandClicked(link, ev);\n }\n this.setState({ selectedKey: link.key });\n };\n NavBase.prototype._isLinkSelected = function (link) {\n // if caller passes in selectedKey, use it as first choice or\n // if current state.selectedKey (from addressbar) is match to the link or\n // check if URL is matching location.href (if link.url exists)\n if (this.props.selectedKey !== undefined) {\n return link.key === this.props.selectedKey;\n }\n else if (this.state.selectedKey !== undefined) {\n return link.key === this.state.selectedKey;\n }\n else if (typeof getWindow() === 'undefined' || !link.url) {\n // resolve is not supported for ssr\n return false;\n }\n else {\n // If selectedKey is undefined in props and state, then check URL\n _urlResolver = _urlResolver || document.createElement('a');\n _urlResolver.href = link.url || '';\n var target = _urlResolver.href;\n if (location.href === target) {\n return true;\n }\n // If selectedKey is not defined in state, then check URL to determine link selected status\n if (location.protocol + '//' + location.host + location.pathname === target) {\n return true;\n }\n if (location.hash) {\n // Match the hash to the url.\n if (location.hash === link.url) {\n return true;\n }\n // Match a rebased url. (e.g. #foo becomes http://hostname/foo)\n _urlResolver.href = location.hash.substring(1);\n return _urlResolver.href === target;\n }\n }\n return false;\n };\n NavBase.prototype._isGroupExpanded = function (group) {\n if (group.name && this.state.isGroupCollapsed.hasOwnProperty(group.name)) {\n return !this.state.isGroupCollapsed[group.name];\n }\n if (group.collapseByDefault !== undefined) {\n return !group.collapseByDefault;\n }\n return true;\n };\n NavBase.prototype._toggleCollapsed = function (group) {\n var _a;\n if (group.name) {\n var newGroupCollapsed = __assign(__assign({}, this.state.isGroupCollapsed), (_a = {}, _a[group.name] = this._isGroupExpanded(group), _a));\n this.setState({ isGroupCollapsed: newGroupCollapsed });\n }\n };\n NavBase.defaultProps = {\n groups: null,\n };\n return NavBase;\n}(React.Component));\nexport { NavBase };\n//# sourceMappingURL=Nav.base.js.map","import { AnimationClassNames, getFocusStyle, ZIndexes, getGlobalClassNames, HighContrastSelector, FontWeights, } from '../../Styling';\nvar GlobalClassNames = {\n root: 'ms-Nav',\n linkText: 'ms-Nav-linkText',\n compositeLink: 'ms-Nav-compositeLink',\n link: 'ms-Nav-link',\n chevronButton: 'ms-Nav-chevronButton',\n chevronIcon: 'ms-Nav-chevron',\n navItem: 'ms-Nav-navItem',\n navItems: 'ms-Nav-navItems',\n group: 'ms-Nav-group',\n groupContent: 'ms-Nav-groupContent',\n};\nexport var buttonStyles = {\n textContainer: {\n overflow: 'hidden',\n },\n label: {\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n};\nexport var getStyles = function (props) {\n var _a;\n var className = props.className, theme = props.theme, isOnTop = props.isOnTop, isExpanded = props.isExpanded, isGroup = props.isGroup, isLink = props.isLink, isSelected = props.isSelected, isDisabled = props.isDisabled, isButtonEntry = props.isButtonEntry, _b = props.navHeight, navHeight = _b === void 0 ? 44 : _b, position = props.position, _c = props.leftPadding, leftPadding = _c === void 0 ? 20 : _c, _d = props.leftPaddingExpanded, leftPaddingExpanded = _d === void 0 ? 28 : _d, _e = props.rightPadding, rightPadding = _e === void 0 ? 20 : _e;\n var palette = theme.palette, semanticColors = theme.semanticColors, fonts = theme.fonts;\n var classNames = getGlobalClassNames(GlobalClassNames, theme);\n return {\n root: [\n classNames.root,\n className,\n fonts.medium,\n {\n overflowY: 'auto',\n userSelect: 'none',\n WebkitOverflowScrolling: 'touch',\n },\n isOnTop && [\n {\n position: 'absolute',\n },\n AnimationClassNames.slideRightIn40,\n ],\n ],\n linkText: [\n classNames.linkText,\n {\n margin: '0 4px',\n overflow: 'hidden',\n verticalAlign: 'middle',\n textAlign: 'left',\n textOverflow: 'ellipsis',\n },\n ],\n compositeLink: [\n classNames.compositeLink,\n {\n display: 'block',\n position: 'relative',\n color: semanticColors.bodyText,\n },\n isExpanded && 'is-expanded',\n isSelected && 'is-selected',\n isDisabled && 'is-disabled',\n isDisabled && {\n color: semanticColors.disabledText,\n },\n ],\n link: [\n classNames.link,\n getFocusStyle(theme),\n {\n display: 'block',\n position: 'relative',\n height: navHeight,\n width: '100%',\n lineHeight: navHeight + \"px\",\n textDecoration: 'none',\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n paddingLeft: leftPadding,\n paddingRight: rightPadding,\n color: semanticColors.bodyText,\n selectors: (_a = {},\n _a[HighContrastSelector] = {\n border: 0,\n selectors: {\n ':focus': {\n border: '1px solid WindowText',\n },\n },\n },\n _a),\n },\n !isDisabled && {\n selectors: {\n '.ms-Nav-compositeLink:hover &': {\n backgroundColor: semanticColors.bodyBackgroundHovered,\n },\n },\n },\n isSelected && {\n color: semanticColors.bodyTextChecked,\n fontWeight: FontWeights.semibold,\n backgroundColor: semanticColors.bodyBackgroundChecked,\n selectors: {\n '&:after': {\n borderLeft: \"2px solid \" + palette.themePrimary,\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n pointerEvents: 'none',\n },\n },\n },\n isDisabled && {\n color: semanticColors.disabledText,\n },\n isButtonEntry && {\n color: palette.themePrimary,\n },\n ],\n chevronButton: [\n classNames.chevronButton,\n getFocusStyle(theme),\n fonts.small,\n {\n display: 'block',\n textAlign: 'left',\n lineHeight: navHeight + \"px\",\n margin: '5px 0',\n padding: \"0px, \" + rightPadding + \"px, 0px, \" + leftPaddingExpanded + \"px\",\n border: 'none',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n cursor: 'pointer',\n color: semanticColors.bodyText,\n backgroundColor: 'transparent',\n selectors: {\n '&:visited': {\n color: semanticColors.bodyText,\n },\n },\n },\n isGroup && {\n fontSize: fonts.large.fontSize,\n width: '100%',\n height: navHeight,\n borderBottom: \"1px solid \" + semanticColors.bodyDivider,\n },\n isLink && {\n display: 'block',\n width: leftPaddingExpanded - 2,\n height: navHeight - 2,\n position: 'absolute',\n top: '1px',\n left: position + \"px\",\n zIndex: ZIndexes.Nav,\n padding: 0,\n margin: 0,\n },\n isSelected && {\n color: palette.themePrimary,\n backgroundColor: palette.neutralLighterAlt,\n selectors: {\n '&:after': {\n borderLeft: \"2px solid \" + palette.themePrimary,\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n pointerEvents: 'none',\n },\n },\n },\n ],\n chevronIcon: [\n classNames.chevronIcon,\n {\n position: 'absolute',\n left: '8px',\n height: navHeight,\n // inline-flex prevents the chevron from shifting with custom line height styles\n display: 'inline-flex',\n alignItems: 'center',\n lineHeight: navHeight + \"px\",\n fontSize: fonts.small.fontSize,\n transition: 'transform .1s linear',\n },\n isExpanded && {\n transform: 'rotate(-180deg)',\n },\n isLink && {\n top: 0,\n },\n ],\n navItem: [\n classNames.navItem,\n {\n padding: 0,\n },\n ],\n navItems: [\n classNames.navItems,\n {\n listStyleType: 'none',\n padding: 0,\n margin: 0, // remove default