{"version":3,"sources":["../../src/components/Button/IconButton/IconButton.styles.ts","../../src/components/Button/IconButton/IconButton.tsx","../../src/useUnmount.ts","../../src/components/Overlay/Overlay.base.tsx","../../src/components/Overlay/Overlay.styles.ts","../../src/components/Overlay/Overlay.tsx","../../src/useEventCallback.ts","../../src/components/FocusTrapZone/FocusTrapZone.tsx","../../src/components/Dialog/DialogContent.types.ts","../../src/components/Modal/Modal.styles.ts","../../src/utilities/DraggableZone/DraggableZone.styles.ts","../../src/utilities/DraggableZone/DraggableZone.tsx","../../src/useSetTimeout.ts","../../src/components/Modal/Modal.base.tsx","../../src/useBoolean.ts","../../src/components/Modal/Modal.ts","../../src/components/Dialog/DialogFooter.base.tsx","../../src/components/Dialog/DialogFooter.styles.ts","../../src/components/Dialog/DialogFooter.tsx","../../src/components/Dialog/DialogContent.base.tsx","../../src/components/Dialog/DialogContent.styles.ts","../../src/components/Dialog/DialogContent.tsx","../../src/components/Dialog/Dialog.base.tsx","../../src/components/Dialog/Dialog.styles.ts","../../src/components/Dialog/Dialog.tsx"],"names":["getStyles","memoizeFunction","theme","customStyles","baseButtonStyles","getBaseButtonStyles","splitButtonStyles","getSplitButtonStyles","palette","iconButtonStyles","root","padding","width","height","backgroundColor","border","color","semanticColors","link","rootHovered","themeDarkAlt","neutralLighter","selectors","_a","HighContrastSelector","borderColor","rootHasMenu","rootPressed","themeDark","neutralLight","rootExpanded","rootChecked","rootCheckedHovered","neutralQuaternaryAlt","rootDisabled","neutralTertiaryAlt","concatStyleSets","IconButton","_super","__extends","prototype","render","this","props","styles","React","BaseButton","__assign","variantClassName","onRenderText","nullRender","onRenderDescription","__decorate","customizable","useUnmount","callback","unmountRef","current","call","getClassNames","classNamesFunction","OverlayBase","_this","initializeComponentRef","allowTouchBodyScroll","_allowTouchBodyScroll","componentDidMount","disableBodyScroll","componentWillUnmount","enableBodyScroll","isDark","isDarkThemed","className","divProps","getNativeProps","divProperties","classNames","GlobalClassNames","rootDark","Overlay","styled","isNone","getGlobalClassNames","fonts","medium","whiteTranslucent40","top","right","bottom","left","position","opacity","visibility","blackTranslucent40","undefined","scope","useEventCallback","fn","callbackRef","Error","useIsomorphicLayoutEffect","useConst","args","_i","arguments","length","apply","DEFAULT_PROPS","disabled","disableFirstFocus","forceFocusInsideTrap","isClickableOutsideFocusTrap","FocusTrapZone","propsWithoutDefaults","ref","firstBumper","lastBumper","mergedRootRef","useMergedRefs","doc","useDocument","isFirstRender","usePrevious","getPropsWithDefaults","internalState","hasFocus","focusStackId","useId","id","children","componentRef","focusPreviouslyFocusedInnerElement","firstFocusableSelector","firstFocusableTarget","_b","disableRestoreFocus","ignoreExternalFocusing","enableAriaHiddenSiblings","bumperProps","style","pointerEvents","tabIndex","focusElementAsync","element","focusAsync","focusFTZ","previouslyFocusedElementInTrapZone","elementContains","firstFocusableChild","querySelector","focusSelector","getNextElement","firstChild","focusBumper","isFirstBumper","nextFocusable","getLastTabbable","getFirstTabbable","focus","returnFocusToInitiator","elementToFocusOnDismiss","focusStack","filter","value","activeElement","body","forceFocusOrClickInTrap","ev","slice","targetElement","target","setTimeout","preventDefault","stopPropagation","disposables","push","on","window","forEach","dispose","modalize","previouslyFocusedElement","useComponentRef","ariaLabelledBy","onFocusCapture","currentTarget","onBlurCapture","relatedTarget","displayName","DialogType","animationDuration","AnimationVariables","durationValue2","globalClassNames","main","scrollableContent","isOpen","layer","isDragging","mergeStyles","touchAction","userSelect","eventMapping","start","move","stop","DraggableZone","_currentEventType","_events","_onMouseDown","event","onMouseDown","only","_onDragStart","_onMouseUp","onMouseUp","_onDragStop","_onTouchStart","onTouchStart","_onTouchEnd","onTouchEnd","button","handleSelector","_matchesSelector","preventDragSelector","_touchId","_getTouchId","_getControlPosition","dragData","_createDragDataFromPosition","onStart","setState","lastPosition","document","_onDrag","type","updatedData","_createUpdatedDragData","updatedPosition","onDragChange","state","baseDragData","onStop","x","y","componentDidUpdate","prevProps","child","statePosition","transform","touchObj","_getActiveTouch","eventToGetOffset","clientX","clientY","targetTouches","_findTouchInTouchList","changedTouches","touch","identifier","selector","matchesSelectorFn","matches","webkitMatchesSelector","msMatchesSelector","parentElement","touchList","i","delta","useSetTimeout","timeoutIds","Object","keys","clearTimeout","_setTimeout","_x","_x2","toString","func","duration","_clearTimeout","_x3","ZERO","isDarkOverlay","containerClassName","ModalBase","scrollableContentClassName","focusTrapZoneProps","_f","isBlocking","isAlert","onDismiss","layerProps","overlay","titleAriaId","subtitleAriaId","topOffsetFixed","responsiveMode","onLayerDidMount","isModeless","dragOptions","onDismissed","popupProps","rootRef","focusTrapZone","focusTrapZoneRef","focusTrapZoneElm","mergedRef","modalResponsiveMode","useResponsiveMode","focusTrapZoneId","win","useWindow","_g","_h","isModalOpen","setIsModalOpen","_j","isVisible","setIsVisible","_k","coordinates","setCoordinates","_l","modalRectangleTop","setModalRectangleTop","_m","initialState","setValue","setTrue","setFalse","toggle","currentValue","useBoolean","isModalMenuOpen","_o","toggleModalMenuOpen","setModalMenuClose","onModalCloseTimer","lastSetCoordinates","events","EventGroup","keepInBounds","isAlertRole","layerClassName","hasBeenOpened","windowInnerHeight","innerHeight","isDefaultDragHandle","dragHandleSelector","mergedLayerProps","eventBubblingEnabled","insertFirst","allowScrollOnModal","elt","allowOverscrollOnElement","allowScrollOnElement","off","registerInitialModalPosition","dialogMain","modalRectangle","getBoundingClientRect","minPosition","maxPosition","getClampedAxis","axis","Math","max","min","handleModalClose","isInKeyboardMoveMode","disposeOnKeyUp","handleDragStart","handleDrag","prevValue","handleDragStop","requestAnimationFrame","handleKeyUp","altKey","ctrlKey","keyCode","KeyCodes","space","registerForKeyUp","parseFloat","modalContent","css","_c","_d","_e","onBlur","disposeOnKeyDown","keyboardMoveIconContainer","keyboardMoveIconProps","Icon","iconName","keyboardMoveIcon","menu","items","key","text","moveMenuItemText","onClick","handleKeyDown","newLocal","escape","enter","handledEvent","delta_1","shiftKey","getMoveDelta","up","down","closeMenuItemText","alignTargetEdge","coverTarget","directionalHint","DirectionalHint","topLeftEdge","directionalHintFixed","shouldFocusOnMount","ResponsiveMode","small","Layer","Popup","role","ariaDescribedBy","shouldRestoreFocus","Modal","effects","display","alignItems","justifyContent","transition","boxShadow","elevation64","borderRadius","roundedCorner2","white","boxSizing","textAlign","outline","maxHeight","maxWidth","minHeight","minWidth","overflowY","zIndex","ZIndexes","cursor","flexGrow","fontSize","xLargePlus","fields","DialogFooterBase","_classNames","actions","actionsRight","_renderChildrenAsActions","map","action","DialogFooter","lineHeight","margin","verticalAlign","marginRight","DialogFooterType","DialogContentBase","warnDeprecations","titleId","subTextContent","showCloseButton","closeButtonAriaLabel","subTextId","subText","titleProps","title","draggableHeaderClassName","isLargeHeader","largeHeader","isClose","close","groupings","_groupChildren","content","header","topButton","topButtonsProps","index","uniqueId","iconProps","ariaLabel","inner","innerContent","contents","footers","defaultProps","withResponsiveMode","contentLgHeader","headerLg","DialogContent","hidden","isMultiline","borderTop","themePrimary","bodySubtext","wordWrap","fontWeight","FontWeights","regular","buttonText","IconFontSizes","ScreenWidthMinSmall","ScreenWidthMaxSmall","xLarge","bodyText","menuHeader","xxLarge","flexDirection","flexWrap","flex","buttonTextHovered","DefaultModalProps","DefaultDialogContentProps","normal","DialogBase","_getSubTextId","ariaDescribedById","modalProps","dialogContentProps","_defaultSubTextId","_getTitleTextId","ariaLabelledById","_defaultTitleTextId","_id","getId","dialogDraggableClassName","contentClassName","mergedModalProps","dialogDefaultMinWidth","dialogDefaultMaxWidth","Dialog","ScreenWidthMinMedium"],"mappings":"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","file":"static/js/55.0af8e212.chunk.js","sourcesContent":["import { concatStyleSets, HighContrastSelector } from '../../../Styling';\nimport { memoizeFunction } from '../../../Utilities';\nimport { getStyles as getBaseButtonStyles } from '../BaseButton.styles';\nimport { getStyles as getSplitButtonStyles } from '../SplitButton/SplitButton.styles';\nimport type { IButtonStyles } from '../Button.types';\nimport type { ITheme } from '../../../Styling';\n\nexport const getStyles = memoizeFunction((theme: ITheme, customStyles?: IButtonStyles): IButtonStyles => {\n  const baseButtonStyles: IButtonStyles = getBaseButtonStyles(theme);\n  const splitButtonStyles: IButtonStyles = getSplitButtonStyles(theme);\n  const { palette, semanticColors } = theme;\n  const iconButtonStyles: IButtonStyles = {\n    root: {\n      padding: '0 4px',\n      width: '32px',\n      height: '32px',\n      backgroundColor: 'transparent',\n      border: 'none',\n      color: semanticColors.link,\n    },\n\n    rootHovered: {\n      color: palette.themeDarkAlt,\n      backgroundColor: palette.neutralLighter,\n      selectors: {\n        [HighContrastSelector]: {\n          borderColor: 'Highlight',\n          color: 'Highlight',\n        },\n      },\n    },\n\n    rootHasMenu: {\n      width: 'auto',\n    },\n\n    rootPressed: {\n      color: palette.themeDark,\n      backgroundColor: palette.neutralLight,\n    },\n\n    rootExpanded: {\n      color: palette.themeDark,\n      backgroundColor: palette.neutralLight,\n    },\n\n    rootChecked: {\n      color: palette.themeDark,\n      backgroundColor: palette.neutralLight,\n    },\n\n    rootCheckedHovered: {\n      color: palette.themeDark,\n      backgroundColor: palette.neutralQuaternaryAlt,\n    },\n\n    rootDisabled: {\n      color: palette.neutralTertiaryAlt,\n    },\n  };\n\n  return concatStyleSets(baseButtonStyles, iconButtonStyles, splitButtonStyles, customStyles)!;\n});\n","import * as React from 'react';\nimport { BaseButton } from '../BaseButton';\nimport { customizable, nullRender } from '../../../Utilities';\nimport { getStyles } from './IconButton.styles';\nimport type { IButtonProps } from '../Button.types';\n\n/**\n * {@docCategory Button}\n */\n@customizable('IconButton', ['theme', 'styles'], true)\nexport class IconButton extends React.Component<IButtonProps, {}> {\n  public render(): JSX.Element {\n    const { styles, theme } = this.props;\n\n    return (\n      <BaseButton\n        {...this.props}\n        variantClassName=\"ms-Button--icon\"\n        styles={getStyles(theme!, styles)}\n        onRenderText={nullRender}\n        onRenderDescription={nullRender}\n      />\n    );\n  }\n}\n","import * as React from 'react';\n\n/**\n * Hook which synchronously executes a callback when the component is about to unmount.\n *\n * @param callback - Function to call during unmount.\n */\nexport const useUnmount = (callback: () => void) => {\n  const unmountRef = React.useRef(callback);\n  unmountRef.current = callback;\n  React.useEffect(\n    () => () => {\n      unmountRef.current?.();\n    },\n    [],\n  );\n};\n","import * as React from 'react';\nimport {\n  classNamesFunction,\n  getNativeProps,\n  divProperties,\n  enableBodyScroll,\n  disableBodyScroll,\n  initializeComponentRef,\n} from '../../Utilities';\nimport type { IOverlayProps, IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\n\nconst getClassNames = classNamesFunction<IOverlayStyleProps, IOverlayStyles>();\n\nexport class OverlayBase extends React.Component<IOverlayProps, {}> {\n  private _allowTouchBodyScroll: boolean;\n\n  constructor(props: IOverlayProps) {\n    super(props);\n\n    initializeComponentRef(this);\n    const { allowTouchBodyScroll = false } = this.props;\n    this._allowTouchBodyScroll = allowTouchBodyScroll;\n  }\n\n  public componentDidMount(): void {\n    !this._allowTouchBodyScroll && disableBodyScroll();\n  }\n\n  public componentWillUnmount(): void {\n    !this._allowTouchBodyScroll && enableBodyScroll();\n  }\n\n  public render(): JSX.Element {\n    const { isDarkThemed: isDark, className, theme, styles } = this.props;\n\n    const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(this.props, divProperties);\n\n    const classNames = getClassNames(styles!, {\n      theme: theme!,\n      className,\n      isDark,\n    });\n\n    return <div {...divProps} className={classNames.root} />;\n  }\n}\n","import { HighContrastSelector, getGlobalClassNames } from '../../Styling';\nimport type { IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\n\nconst GlobalClassNames = {\n  root: 'ms-Overlay',\n  rootDark: 'ms-Overlay--dark',\n};\n\nexport const getStyles = (props: IOverlayStyleProps): IOverlayStyles => {\n  const { className, theme, isNone, isDark } = props;\n\n  const { palette } = theme;\n\n  const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n  return {\n    root: [\n      classNames.root,\n      theme.fonts.medium,\n      {\n        backgroundColor: palette.whiteTranslucent40,\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0,\n        position: 'absolute',\n\n        selectors: {\n          [HighContrastSelector]: {\n            border: '1px solid WindowText',\n            opacity: 0,\n          },\n        },\n      },\n\n      isNone && {\n        visibility: 'hidden',\n      },\n\n      isDark && [\n        classNames.rootDark,\n        {\n          backgroundColor: palette.blackTranslucent40,\n        },\n      ],\n\n      className,\n    ],\n  };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { OverlayBase } from './Overlay.base';\nimport { getStyles } from './Overlay.styles';\nimport type { IOverlayProps, IOverlayStyleProps, IOverlayStyles } from './Overlay.types';\n\nexport const Overlay: React.FunctionComponent<IOverlayProps> = styled<\n  IOverlayProps,\n  IOverlayStyleProps,\n  IOverlayStyles\n>(OverlayBase, getStyles, undefined, {\n  scope: 'Overlay',\n});\n","import * as React from 'react';\nimport { useConst } from './useConst';\nimport { useIsomorphicLayoutEffect } from '@fluentui/utilities';\n\n/**\n * Modified `useCallback` that returns the same function reference every time, but internally calls\n * the most-recently passed callback implementation. Can be useful in situations such as:\n * - Event handler dependencies change too frequently, such as user props which might change on\n *   every render, or volatile values such as useState/useDispatch\n * - Callback must be referenced in a captured context (such as a window event handler or unmount\n *   handler that's registered once) but needs access to the latest props\n *\n * In general, prefer `useCallback` unless you've encountered one of the problems above.\n *\n * https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n *\n * @param fn - The callback function that will be used\n * @returns A function which is referentially stable but internally calls the most recently passed callback\n */\nexport function useEventCallback<Args extends unknown[], Return>(fn: (...args: Args) => Return) {\n  const callbackRef = React.useRef<typeof fn>(() => {\n    throw new Error('Cannot call an event handler while rendering');\n  });\n\n  useIsomorphicLayoutEffect(() => {\n    callbackRef.current = fn;\n  }, [fn]);\n\n  // useConst rather than useCallback to ensure the reference is always stable\n  // (useCallback's deps list is an optimization, not a guarantee)\n  return useConst(() => (...args: Args) => {\n    const callback = callbackRef.current;\n    return callback(...args);\n  });\n}\n","import * as React from 'react';\nimport {\n  elementContains,\n  getNativeProps,\n  divProperties,\n  getFirstTabbable,\n  getLastTabbable,\n  getNextElement,\n  focusAsync,\n  getPropsWithDefaults,\n  modalize,\n  on,\n} from '../../Utilities';\nimport { useId, useConst, useMergedRefs, useEventCallback, usePrevious, useUnmount } from '@fluentui/react-hooks';\nimport { useDocument } from '../../WindowProvider';\nimport type { IRefObject } from '../../Utilities';\nimport type { IFocusTrapZoneProps, IFocusTrapZone } from './FocusTrapZone.types';\n\ninterface IFocusTrapZoneInternalState {\n  previouslyFocusedElementInTrapZone?: HTMLElement;\n  hasFocus: boolean;\n  /** ID tracked in focusStack. Don't respect prop updates in case the ID changes while the FTZ is active. */\n  focusStackId: string;\n}\n\nconst COMPONENT_NAME = 'FocusTrapZone';\n\nconst DEFAULT_PROPS = {\n  disabled: false,\n  disableFirstFocus: false,\n  forceFocusInsideTrap: true,\n  isClickableOutsideFocusTrap: false,\n};\n\nconst useComponentRef = (\n  componentRef: IRefObject<IFocusTrapZone> | undefined,\n  previouslyFocusedElement: HTMLElement | undefined,\n  focusFTZ: () => void,\n) => {\n  React.useImperativeHandle(\n    componentRef,\n    () => ({\n      get previouslyFocusedElement() {\n        return previouslyFocusedElement;\n      },\n      focus: focusFTZ,\n    }),\n    [focusFTZ, previouslyFocusedElement],\n  );\n};\n\nexport const FocusTrapZone: React.FunctionComponent<IFocusTrapZoneProps> & {\n  /**\n   * Stack of active FocusTrapZone identifiers, exposed for testing purposes only.\n   * (This is always set, just marked as optional to avoid a cast in the component definition.)\n   * @internal\n   */\n  focusStack?: string[];\n} = React.forwardRef<HTMLDivElement, IFocusTrapZoneProps>((propsWithoutDefaults, ref) => {\n  const root = React.useRef<HTMLDivElement>(null);\n  const firstBumper = React.useRef<HTMLDivElement>(null);\n  const lastBumper = React.useRef<HTMLDivElement>(null);\n  const mergedRootRef = useMergedRefs(root, ref) as React.Ref<HTMLDivElement>;\n  const doc = useDocument();\n\n  const isFirstRender = usePrevious(false) ?? true;\n\n  const props = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults);\n\n  const internalState = useConst<IFocusTrapZoneInternalState>({\n    hasFocus: false,\n    focusStackId: useId('ftz-', props.id),\n  });\n\n  const {\n    children,\n    componentRef,\n    disabled,\n    disableFirstFocus,\n    forceFocusInsideTrap,\n    focusPreviouslyFocusedInnerElement,\n    // eslint-disable-next-line deprecation/deprecation\n    firstFocusableSelector,\n    firstFocusableTarget,\n    // eslint-disable-next-line deprecation/deprecation\n    disableRestoreFocus = props.ignoreExternalFocusing,\n    isClickableOutsideFocusTrap,\n    enableAriaHiddenSiblings,\n  } = props;\n\n  const bumperProps = {\n    'aria-hidden': true,\n    style: {\n      pointerEvents: 'none',\n      position: 'fixed', // 'fixed' prevents browsers from scrolling to bumpers when viewport does not contain them\n    },\n    tabIndex: disabled ? -1 : 0, // make bumpers tabbable only when enabled\n    'data-is-visible': true,\n    'data-is-focus-trap-zone-bumper': true,\n  } as React.HTMLAttributes<HTMLDivElement>;\n\n  const focusElementAsync = React.useCallback((element: HTMLElement) => {\n    if (element !== firstBumper.current && element !== lastBumper.current) {\n      focusAsync(element);\n    }\n  }, []);\n\n  /**\n   * Callback to force focus into FTZ (named to avoid overlap with global focus() callback).\n   * useEventCallback always returns the same callback reference but updates the implementation\n   * every render to avoid stale captured values.\n   */\n  const focusFTZ = useEventCallback(() => {\n    if (!root.current) {\n      return; // not done mounting\n    }\n\n    const { previouslyFocusedElementInTrapZone } = internalState;\n    if (\n      focusPreviouslyFocusedInnerElement &&\n      previouslyFocusedElementInTrapZone &&\n      elementContains(root.current, previouslyFocusedElementInTrapZone)\n    ) {\n      // focus on the last item that had focus in the zone before we left the zone\n      focusElementAsync(previouslyFocusedElementInTrapZone);\n      return;\n    }\n\n    let firstFocusableChild: HTMLElement | null = null;\n\n    if (typeof firstFocusableTarget === 'string') {\n      firstFocusableChild = root.current.querySelector(firstFocusableTarget);\n    } else if (firstFocusableTarget) {\n      firstFocusableChild = firstFocusableTarget(root.current);\n    } else if (firstFocusableSelector) {\n      const focusSelector =\n        typeof firstFocusableSelector === 'string' ? firstFocusableSelector : firstFocusableSelector();\n      firstFocusableChild = root.current.querySelector('.' + focusSelector);\n    }\n\n    // Fall back to first element if query selector did not match any elements.\n    if (!firstFocusableChild) {\n      firstFocusableChild = getNextElement(\n        root.current,\n        root.current.firstChild as HTMLElement,\n        false,\n        false,\n        false,\n        true,\n      );\n    }\n\n    if (firstFocusableChild) {\n      focusElementAsync(firstFocusableChild);\n    }\n  });\n\n  /** Used in root div focus/blur handlers */\n  const focusBumper = (isFirstBumper: boolean) => {\n    if (disabled || !root.current) {\n      return;\n    }\n\n    const nextFocusable =\n      isFirstBumper === internalState.hasFocus\n        ? getLastTabbable(root.current, lastBumper.current!, true, false)\n        : getFirstTabbable(root.current, firstBumper.current!, true, false);\n\n    if (nextFocusable) {\n      if (nextFocusable === firstBumper.current || nextFocusable === lastBumper.current) {\n        // This can happen when FTZ contains no tabbable elements.\n        // focusFTZ() will take care of finding a focusable element in FTZ.\n        focusFTZ();\n      } else {\n        nextFocusable.focus();\n      }\n    }\n  };\n\n  /** Root div blur handler (doesn't need useCallback since it's for a native element) */\n  const onRootBlurCapture = (ev: React.FocusEvent<HTMLDivElement>) => {\n    props.onBlurCapture?.(ev);\n    let relatedTarget = ev.relatedTarget;\n    if (ev.relatedTarget === null) {\n      // In IE11, due to lack of support, event.relatedTarget is always\n      // null making every onBlur call to be \"outside\" of the root\n      // even when it's not. Using document.activeElement is another way\n      // for us to be able to get what the relatedTarget without relying\n      // on the event\n      relatedTarget = doc!.activeElement as Element;\n    }\n    if (!elementContains(root.current, relatedTarget as HTMLElement)) {\n      internalState.hasFocus = false;\n    }\n  };\n\n  /** Root div focus handler (doesn't need useCallback since it's for a native element) */\n  const onRootFocusCapture = (ev: React.FocusEvent<HTMLDivElement>) => {\n    props.onFocusCapture?.(ev);\n\n    if (ev.target === firstBumper.current) {\n      focusBumper(true);\n    } else if (ev.target === lastBumper.current) {\n      focusBumper(false);\n    }\n\n    internalState.hasFocus = true;\n\n    if (ev.target !== ev.currentTarget && !(ev.target === firstBumper.current || ev.target === lastBumper.current)) {\n      // every time focus changes within the trap zone, remember the focused element so that\n      // it can be restored if focus leaves the pane and returns via keystroke (i.e. via a call to this.focus(true))\n      internalState.previouslyFocusedElementInTrapZone = ev.target as HTMLElement;\n    }\n  };\n\n  /** Called to restore focus on unmount or props change. (useEventCallback ensures latest prop values are used.) */\n  const returnFocusToInitiator = useEventCallback((elementToFocusOnDismiss: HTMLElement | null) => {\n    FocusTrapZone.focusStack = FocusTrapZone.focusStack!.filter(value => internalState.focusStackId !== value);\n\n    if (!doc) {\n      return;\n    }\n\n    const activeElement = doc.activeElement as HTMLElement;\n    if (\n      !disableRestoreFocus &&\n      typeof elementToFocusOnDismiss?.focus === 'function' &&\n      // only restore focus if the current focused element is within the FTZ, or if nothing is focused\n      (elementContains(root.current, activeElement) || activeElement === doc.body)\n    ) {\n      focusElementAsync(elementToFocusOnDismiss);\n    }\n  });\n\n  /** Called in window event handlers. (useEventCallback ensures latest prop values are used.) */\n  const forceFocusOrClickInTrap = useEventCallback((ev: FocusEvent | MouseEvent): void => {\n    // be sure to use the latest values here\n    if (disabled) {\n      return;\n    }\n    if (internalState.focusStackId === FocusTrapZone.focusStack!.slice(-1)[0]) {\n      const targetElement = ev.target as HTMLElement | null;\n      if (targetElement && !elementContains(root.current, targetElement)) {\n        if (doc && doc.activeElement === doc.body) {\n          setTimeout(() => {\n            if (doc && doc.activeElement === doc.body) {\n              focusFTZ();\n              internalState.hasFocus = true; // set focus here since we stop event propagation\n            }\n          }, 0);\n        } else {\n          focusFTZ();\n          internalState.hasFocus = true; // set focus here since we stop event propagation\n        }\n        ev.preventDefault();\n        ev.stopPropagation();\n      }\n    }\n  });\n\n  // Update window event handlers when relevant props change\n  React.useEffect(() => {\n    const disposables: Array<() => void> = [];\n\n    if (forceFocusInsideTrap) {\n      disposables.push(on(window, 'focus', forceFocusOrClickInTrap, true));\n    }\n    if (!isClickableOutsideFocusTrap) {\n      disposables.push(on(window, 'click', forceFocusOrClickInTrap, true));\n    }\n\n    return () => {\n      disposables.forEach(dispose => dispose());\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run when these two props change\n  }, [forceFocusInsideTrap, isClickableOutsideFocusTrap]);\n\n  // On prop change or first render, focus the FTZ and update focusStack if appropriate\n  React.useEffect(() => {\n    // Do nothing if disabled, or if it's a re-render and forceFocusInsideTrap is false\n    // (to match existing behavior, the FTZ handles first focus even if forceFocusInsideTrap\n    // is false, though it's debatable whether it should do this)\n    if (disabled || (!isFirstRender && !forceFocusInsideTrap) || !root.current) {\n      return;\n    }\n\n    // Transition from forceFocusInsideTrap / FTZ disabled to enabled (or initial mount)\n    FocusTrapZone.focusStack!.push(internalState.focusStackId);\n\n    const elementToFocusOnDismiss = props.elementToFocusOnDismiss || (doc!.activeElement as HTMLElement | null);\n\n    if (!disableFirstFocus && !elementContains(root.current, elementToFocusOnDismiss)) {\n      focusFTZ();\n    }\n\n    // To match existing behavior, always return focus on cleanup (even if we didn't handle\n    // initial focus), but it's debatable whether that's correct\n    return () => returnFocusToInitiator(elementToFocusOnDismiss);\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- should only run when these two props change\n  }, [forceFocusInsideTrap, disabled]);\n\n  // Handle modalization separately from first focus\n  React.useEffect(() => {\n    if (!disabled && enableAriaHiddenSiblings) {\n      const unmodalize = modalize(root.current!);\n      return unmodalize;\n    }\n  }, [disabled, enableAriaHiddenSiblings, root]);\n\n  // Cleanup lifecyle method for internalState.\n  useUnmount(() => {\n    // Dispose of element references so the DOM Nodes can be garbage-collected\n    delete internalState.previouslyFocusedElementInTrapZone;\n  });\n\n  useComponentRef(componentRef, internalState.previouslyFocusedElementInTrapZone, focusFTZ);\n\n  return (\n    <div\n      // this is above the native props spread so props['aria-labelledby'] will override it if provided\n      aria-labelledby={props.ariaLabelledBy}\n      // native props include onFocus, onBlur, className\n      {...getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, divProperties)}\n      ref={mergedRootRef}\n      onFocusCapture={onRootFocusCapture}\n      onBlurCapture={onRootBlurCapture}\n    >\n      <div {...bumperProps} ref={firstBumper} />\n      {children}\n      <div {...bumperProps} ref={lastBumper} />\n    </div>\n  );\n});\n\nFocusTrapZone.displayName = COMPONENT_NAME;\nFocusTrapZone.focusStack = [];\n","import * as React from 'react';\nimport { DialogContentBase } from './DialogContent.base';\nimport { ResponsiveMode } from '../../ResponsiveMode';\nimport type { IButtonProps } from '../../Button';\nimport type { IStyle, ITheme } from '../../Styling';\nimport type { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Dialog}\n */\nexport interface IDialogContent {}\n\n/**\n * {@docCategory Dialog}\n */\nexport interface IDialogContentProps extends React.ClassAttributes<DialogContentBase> {\n  children?: React.ReactNode;\n\n  /**\n   * Optional callback to access the IDialogContent interface. Use this instead of ref for accessing\n   * the public methods and properties of the component.\n   */\n  componentRef?: IRefObject<IDialogContent>;\n\n  /**\n   * Call to provide customized styling that will layer on top of the variant rules\n   */\n  styles?: IStyleFunctionOrObject<IDialogContentStyleProps, IDialogContentStyles>;\n\n  /**\n   * Theme provided by HOC.\n   */\n  theme?: ITheme;\n\n  /**\n   * Is inside a multiline wrapper\n   */\n  isMultiline?: boolean;\n\n  /**\n   * Show an 'x' close button in the upper-right corner\n   */\n  showCloseButton?: boolean;\n\n  /**\n   * Other top buttons that will show up next to the close button\n   */\n  topButtonsProps?: IButtonProps[];\n\n  /**\n   * Optional override class name\n   */\n  className?: string;\n\n  /**\n   * Callback for when the Dialog is dismissed from the close button or light dismiss, before the animation completes.\n   */\n  onDismiss?: (ev?: React.MouseEvent<HTMLButtonElement>) => any;\n\n  /**\n   * The Id for subText container\n   */\n  subTextId?: string;\n\n  /**\n   * The subtext to display in the dialog\n   */\n  subText?: string;\n\n  /**\n   * The Id for title container\n   *\n   * @deprecated use the `id` attribute in `titleProps` instead.\n   */\n  titleId?: string;\n\n  /**\n   * The title text to display at the top of the dialog.\n   */\n  title?: string | JSX.Element;\n\n  /**\n   * The props for title container.\n   */\n  titleProps?: React.HTMLAttributes<HTMLDivElement>;\n\n  /**\n   * Responsive mode passed in from decorator.\n   */\n  responsiveMode?: ResponsiveMode;\n\n  /**\n   * Label to be passed to to aria-label of close button\n   * @defaultvalue Close\n   */\n  closeButtonAriaLabel?: string;\n\n  /**\n   * The type of Dialog to display.\n   * @defaultvalue DialogType.normal\n   */\n  type?: DialogType;\n\n  /**\n   * The classname for when the header is draggable\n   */\n  draggableHeaderClassName?: string;\n}\n\n/**\n * {@docCategory Dialog}\n */\nexport enum DialogType {\n  /** Standard dialog */\n  normal = 0,\n  /** Dialog with large header banner */\n  largeHeader = 1,\n  /** Dialog with an 'x' close button in the upper-right corner */\n  close = 2,\n}\n\n/**\n * {@docCategory Dialog}\n */\nexport interface IDialogContentStyleProps {\n  /**\n   * Accept theme prop.\n   */\n  theme: ITheme;\n\n  /**\n   * Accept custom classNames\n   */\n  className?: string;\n\n  isLargeHeader?: boolean;\n  isClose?: boolean;\n  hidden?: boolean;\n\n  /**\n   * Is inside a multiline wrapper\n   */\n  isMultiline?: boolean;\n\n  /**\n   * The classname for when the header is draggable\n   */\n  draggableHeaderClassName?: string;\n}\n\n/**\n * {@docCategory Dialog}\n */\nexport interface IDialogContentStyles {\n  /**\n   * Style for the content element.\n   */\n  content: IStyle;\n  subText: IStyle;\n  header: IStyle;\n  button: IStyle;\n  inner: IStyle;\n  innerContent: IStyle;\n  title: IStyle;\n  topButton: IStyle;\n}\n","import { AnimationVariables, getGlobalClassNames, ZIndexes } from '../../Styling';\nimport type { IModalStyleProps, IModalStyles } from './Modal.types';\n\nexport const animationDuration = AnimationVariables.durationValue2;\n\nconst 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};\n\nexport const getStyles = (props: IModalStyleProps): IModalStyles => {\n  const {\n    className,\n    containerClassName,\n    scrollableContentClassName,\n    isOpen,\n    isVisible,\n    hasBeenOpened,\n    modalRectangleTop,\n    theme,\n    topOffsetFixed,\n    isModeless,\n    layerClassName,\n    isDefaultDragHandle,\n    windowInnerHeight,\n  } = props;\n  const { palette, effects, fonts } = theme;\n\n  const classNames = getGlobalClassNames(globalClassNames, theme);\n\n  return {\n    root: [\n      classNames.root,\n      fonts.medium,\n      {\n        backgroundColor: 'transparent',\n        position: '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      },\n      isVisible &&\n        !isModeless && {\n          pointerEvents: 'auto',\n        },\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      isModeless && {\n        pointerEvents: 'auto',\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: {\n          ['@supports (-webkit-overflow-scrolling: touch)']: {\n            maxHeight: windowInnerHeight,\n          },\n        },\n      },\n      scrollableContentClassName,\n    ],\n    layer: isModeless && [layerClassName, classNames.layer, { pointerEvents: 'none' }],\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","import { memoizeFunction } from '../../Utilities';\nimport { mergeStyles } from '../../Styling';\n\nexport interface IDraggableZoneStyles {\n  root: string;\n}\n\nexport const getClassNames = memoizeFunction((className: string, isDragging: boolean): IDraggableZoneStyles => {\n  return {\n    root: mergeStyles(\n      className,\n      isDragging && {\n        touchAction: 'none',\n        selectors: {\n          '& *': {\n            userSelect: 'none',\n          },\n        },\n      },\n    ),\n  };\n});\n","import * as React from 'react';\nimport { getClassNames } from './DraggableZone.styles';\nimport { on } from '../../Utilities';\nimport type { IDraggableZoneProps, ICoordinates, IDragData } from './DraggableZone.types';\n\nexport interface IDraggableZoneState {\n  isDragging: boolean;\n  position: ICoordinates;\n  lastPosition?: ICoordinates;\n}\n\nconst eventMapping = {\n  touch: {\n    start: 'touchstart',\n    move: 'touchmove',\n    stop: 'touchend',\n  },\n  mouse: {\n    start: 'mousedown',\n    move: 'mousemove',\n    stop: 'mouseup',\n  },\n};\n\n// These are needed so that we can generalize the events\n// and so we have access to clientX and clientY in the touch events\ntype MouseTouchEvent<T> = React.MouseEvent<T> & React.TouchEvent<T> & Event;\n\nexport class DraggableZone extends React.Component<IDraggableZoneProps, IDraggableZoneState> {\n  private _touchId?: number;\n  private _currentEventType = eventMapping.mouse;\n  private _events: (() => void)[] = [];\n\n  constructor(props: IDraggableZoneProps) {\n    super(props);\n\n    this.state = {\n      isDragging: false,\n      position: this.props.position || { x: 0, y: 0 },\n      lastPosition: undefined,\n    };\n  }\n\n  public componentDidUpdate(prevProps: IDraggableZoneProps) {\n    if (this.props.position && (!prevProps.position || this.props.position !== prevProps.position)) {\n      this.setState({ position: this.props.position });\n    }\n  }\n\n  public componentWillUnmount() {\n    this._events.forEach(dispose => dispose());\n  }\n\n  public render() {\n    const child: any = React.Children.only(this.props.children);\n    const { props } = child;\n    const { position } = this.props;\n    const { position: statePosition, isDragging } = this.state;\n    let x = statePosition.x;\n    let y = statePosition.y;\n\n    if (position && !isDragging) {\n      x = position.x;\n      y = position.y;\n    }\n\n    return React.cloneElement(child, {\n      style: {\n        ...props.style,\n        transform: `translate(${x}px, ${y}px)`,\n      },\n      className: getClassNames(props.className, this.state.isDragging).root,\n      onMouseDown: this._onMouseDown,\n      onMouseUp: this._onMouseUp,\n      onTouchStart: this._onTouchStart,\n      onTouchEnd: this._onTouchEnd,\n    });\n  }\n\n  private _onMouseDown = (event: MouseTouchEvent<HTMLElement>) => {\n    const onMouseDown = (React.Children.only(this.props.children) as any).props.onMouseDown;\n    if (onMouseDown) {\n      onMouseDown(event);\n    }\n\n    this._currentEventType = eventMapping.mouse;\n    return this._onDragStart(event);\n  };\n\n  private _onMouseUp = (event: MouseTouchEvent<HTMLElement>) => {\n    const onMouseUp = (React.Children.only(this.props.children) as any).props.onMouseUp;\n    if (onMouseUp) {\n      onMouseUp(event);\n    }\n\n    this._currentEventType = eventMapping.mouse;\n    return this._onDragStop(event);\n  };\n\n  private _onTouchStart = (event: MouseTouchEvent<HTMLElement>) => {\n    const onTouchStart = (React.Children.only(this.props.children) as any).props.onTouchStart;\n    if (onTouchStart) {\n      onTouchStart(event);\n    }\n\n    this._currentEventType = eventMapping.touch;\n    return this._onDragStart(event);\n  };\n\n  private _onTouchEnd = (event: MouseTouchEvent<HTMLElement>) => {\n    const onTouchEnd = (React.Children.only(this.props.children) as any).props.onTouchEnd;\n    if (onTouchEnd) {\n      onTouchEnd(event);\n    }\n\n    this._currentEventType = eventMapping.touch;\n    this._onDragStop(event);\n  };\n\n  private _onDragStart = (event: MouseTouchEvent<HTMLElement>) => {\n    // Only handle left click for dragging\n    if (typeof event.button === 'number' && event.button !== 0) {\n      return false;\n    }\n\n    // If the target doesn't match the handleSelector OR\n    // if the target does match the preventDragSelector, bail out\n    if (\n      (this.props.handleSelector && !this._matchesSelector(event.target as HTMLElement, this.props.handleSelector)) ||\n      (this.props.preventDragSelector &&\n        this._matchesSelector(event.target as HTMLElement, this.props.preventDragSelector))\n    ) {\n      return;\n    }\n\n    // Remember the touch identifier if this is a touch event so we can\n    // distinguish between individual touches in multitouch scenarios\n    // by remembering which touch point we were given\n    this._touchId = this._getTouchId(event);\n\n    const position = this._getControlPosition(event);\n    if (position === undefined) {\n      return;\n    }\n\n    const dragData = this._createDragDataFromPosition(position);\n    this.props.onStart && this.props.onStart(event, dragData);\n\n    this.setState({\n      isDragging: true,\n      lastPosition: position,\n    });\n\n    // hook up the appropriate mouse/touch events to the body to ensure\n    // smooth dragging\n    this._events = [\n      on(document.body, this._currentEventType.move, this._onDrag, true /* use capture phase */),\n      on(document.body, this._currentEventType.stop, this._onDragStop, true /* use capture phase */),\n    ];\n  };\n\n  private _onDrag = (event: MouseTouchEvent<HTMLElement>) => {\n    // Prevent scrolling on mobile devices\n    if (event.type === 'touchmove') {\n      event.preventDefault();\n    }\n\n    const position = this._getControlPosition(event);\n    if (!position) {\n      return;\n    }\n\n    // create the updated drag data from the position data\n    const updatedData = this._createUpdatedDragData(this._createDragDataFromPosition(position));\n    const updatedPosition = updatedData.position;\n\n    this.props.onDragChange && this.props.onDragChange(event, updatedData);\n\n    this.setState({\n      position: updatedPosition,\n      lastPosition: position,\n    });\n  };\n\n  private _onDragStop = (event: MouseTouchEvent<HTMLElement>) => {\n    if (!this.state.isDragging) {\n      return;\n    }\n\n    const position = this._getControlPosition(event);\n    if (!position) {\n      return;\n    }\n\n    const baseDragData = this._createDragDataFromPosition(position);\n\n    // Set dragging to false and reset the lastPosition\n    this.setState({\n      isDragging: false,\n      lastPosition: undefined,\n    });\n\n    this.props.onStop && this.props.onStop(event, baseDragData);\n\n    if (this.props.position) {\n      this.setState({\n        position: this.props.position,\n      });\n    }\n\n    // Remove event handlers\n    this._events.forEach(dispose => dispose());\n  };\n\n  /**\n   * Get the control position based off the event that fired\n   * @param event - The event to get offsets from\n   */\n  private _getControlPosition(event: MouseTouchEvent<HTMLElement>): ICoordinates | undefined {\n    const touchObj = this._getActiveTouch(event);\n\n    // did we get the right touch?\n    if (this._touchId !== undefined && !touchObj) {\n      return undefined;\n    }\n\n    const eventToGetOffset = touchObj || event;\n    return {\n      x: eventToGetOffset.clientX,\n      y: eventToGetOffset.clientY,\n    };\n  }\n\n  /**\n   * Get the active touch point that we have saved from the event's TouchList\n   * @param event - The event used to get the TouchList for the active touch point\n   */\n  private _getActiveTouch(event: MouseTouchEvent<HTMLElement>): React.Touch | undefined {\n    return (\n      (event.targetTouches && this._findTouchInTouchList(event.targetTouches)) ||\n      (event.changedTouches && this._findTouchInTouchList(event.changedTouches))\n    );\n  }\n\n  /**\n   * Get the initial touch identifier associated with the given event\n   * @param event - The event that contains the TouchList\n   */\n  private _getTouchId(event: MouseTouchEvent<HTMLElement>): number | undefined {\n    const touch: React.Touch | undefined =\n      (event.targetTouches && event.targetTouches[0]) || (event.changedTouches && event.changedTouches[0]);\n\n    if (touch) {\n      return touch.identifier;\n    }\n  }\n\n  /**\n   * Returns if an element (or any of the element's parents) match the given selector\n   */\n  private _matchesSelector(element: HTMLElement | null, selector: string): boolean {\n    if (!element || element === document.body) {\n      return false;\n    }\n\n    const matchesSelectorFn: Function =\n      element.matches || element.webkitMatchesSelector || (element as any).msMatchesSelector; /* for IE */\n\n    if (!matchesSelectorFn) {\n      return false;\n    }\n\n    return matchesSelectorFn.call(element, selector) || this._matchesSelector(element.parentElement, selector);\n  }\n\n  /**\n   * Attempts to find the Touch that matches the identifier  we stored in dragStart\n   * @param touchList The TouchList to look for the stored identifier from dragStart\n   */\n  private _findTouchInTouchList(touchList: React.TouchList): React.Touch | undefined {\n    if (this._touchId === undefined) {\n      return;\n    }\n\n    for (let i = 0; i < touchList.length; i++) {\n      if (touchList[i].identifier === this._touchId) {\n        return touchList[i];\n      }\n    }\n\n    return undefined;\n  }\n\n  /**\n   * Create DragData based off of the last known position and the new position passed in\n   * @param position The new position as part of the drag\n   */\n  private _createDragDataFromPosition(position: ICoordinates): IDragData {\n    const { lastPosition } = this.state;\n\n    // If we have no lastPosition, use the given position\n    // for last position\n    if (lastPosition === undefined) {\n      return {\n        delta: { x: 0, y: 0 },\n        lastPosition: position,\n        position,\n      };\n    }\n\n    return {\n      delta: {\n        x: position.x - lastPosition.x,\n        y: position.y - lastPosition.y,\n      },\n      lastPosition,\n      position,\n    };\n  }\n\n  /**\n   * Creates an updated DragData based off the current position and given baseDragData\n   * @param baseDragData The base DragData (from _createDragDataFromPosition) used to calculate the updated positions\n   */\n  private _createUpdatedDragData(baseDragData: IDragData): IDragData {\n    const { position } = this.state;\n    return {\n      position: {\n        x: position.x + baseDragData.delta.x,\n        y: position.y + baseDragData.delta.y,\n      },\n      delta: baseDragData.delta,\n      lastPosition: position,\n    };\n  }\n}\n","import * as React from 'react';\nimport { useConst } from './useConst';\n\nexport type UseSetTimeoutReturnType = {\n  setTimeout: (callback: () => void, duration: number) => number;\n  clearTimeout: (id: number) => void;\n};\n\n/**\n *  Returns a wrapper function for `setTimeout` which automatically handles disposal.\n */\nexport const useSetTimeout = (): UseSetTimeoutReturnType => {\n  const timeoutIds = useConst<Record<number, number>>({});\n\n  // Cleanup function.\n  React.useEffect(\n    () => () => {\n      for (const id of Object.keys(timeoutIds)) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        clearTimeout(id as any);\n      }\n    },\n    // useConst ensures this will never change, but react-hooks/exhaustive-deps doesn't know that\n    [timeoutIds],\n  );\n\n  // Return wrapper which will auto cleanup.\n  return useConst({\n    setTimeout: (func: () => void, duration: number): number => {\n      const id = setTimeout(func, duration) as unknown as number;\n\n      timeoutIds[id] = 1;\n\n      return id;\n    },\n\n    clearTimeout: (id: number): void => {\n      delete timeoutIds[id];\n      clearTimeout(id);\n    },\n  });\n};\n","import * as React from 'react';\nimport {\n  classNamesFunction,\n  css,\n  allowScrollOnElement,\n  allowOverscrollOnElement,\n  getPropsWithDefaults,\n  KeyCodes,\n  elementContains,\n  EventGroup,\n} 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 {\n  useBoolean,\n  useMergedRefs,\n  useWarnings,\n  useConst,\n  useSetTimeout,\n  useId,\n  useUnmount,\n} from '@fluentui/react-hooks';\nimport type { IFocusTrapZone } from '../../FocusTrapZone';\nimport type { IDragOptions, IModalProps, IModalStyleProps, IModalStyles } from './Modal.types';\nimport type { ILayerProps } from '../../Layer';\nimport type { ICoordinates, IDragData } from '../../utilities/DraggableZone/index';\n\n// @TODO - need to change this to a panel whenever the breakpoint is under medium (verify the spec)\n\ninterface IModalInternalState {\n  onModalCloseTimer: number;\n  allowTouchBodyScroll?: boolean;\n  scrollableContent: HTMLDivElement | null;\n  lastSetCoordinates: ICoordinates;\n  /** Minimum clamped position, if dragging and clamping (`dragOptions.keepInBounds`) are enabled */\n  minPosition?: ICoordinates;\n  /** Maximum clamped position, if dragging and clamping (`dragOptions.keepInBounds`) are enabled */\n  maxPosition?: ICoordinates;\n  events: EventGroup;\n  /** Ensures we dispose the same keydown callback as was registered */\n  disposeOnKeyDown?: () => void;\n  /** Ensures we dispose the same keyup callback as was registered (also tracks whether keyup has been registered) */\n  disposeOnKeyUp?: () => void;\n  isInKeyboardMoveMode?: boolean;\n  hasBeenOpened?: boolean;\n}\n\nconst ZERO: ICoordinates = { x: 0, y: 0 };\n\nconst DEFAULT_PROPS: Partial<IModalProps> = {\n  isOpen: false,\n  isDarkOverlay: true,\n  className: '',\n  containerClassName: '',\n  enableAriaHiddenSiblings: true,\n};\n\nconst getClassNames = classNamesFunction<IModalStyleProps, IModalStyles>();\n\nconst getMoveDelta = (ev: React.KeyboardEvent<HTMLElement>): number => {\n  let delta = 10;\n  if (ev.shiftKey) {\n    if (!ev.ctrlKey) {\n      delta = 50;\n    }\n  } else if (ev.ctrlKey) {\n    delta = 1;\n  }\n\n  return delta;\n};\n\nconst useComponentRef = (props: IModalProps, focusTrapZone: React.RefObject<IFocusTrapZone>) => {\n  React.useImperativeHandle(\n    props.componentRef,\n    () => ({\n      focus() {\n        if (focusTrapZone.current) {\n          focusTrapZone.current.focus();\n        }\n      },\n    }),\n    [focusTrapZone],\n  );\n};\n\nexport const ModalBase: React.FunctionComponent<IModalProps> = React.forwardRef<HTMLDivElement, IModalProps>(\n  (propsWithoutDefaults, ref) => {\n    const props = getPropsWithDefaults(DEFAULT_PROPS, propsWithoutDefaults);\n    const {\n      allowTouchBodyScroll,\n      className,\n      children,\n      containerClassName,\n      scrollableContentClassName,\n      elementToFocusOnDismiss,\n      firstFocusableSelector,\n      focusTrapZoneProps,\n      forceFocusInsideTrap,\n      // eslint-disable-next-line deprecation/deprecation\n      disableRestoreFocus = props.ignoreExternalFocusing,\n      isBlocking,\n      isAlert,\n      isClickableOutsideFocusTrap,\n      isDarkOverlay,\n      onDismiss,\n      layerProps,\n      overlay,\n      isOpen,\n      titleAriaId,\n      styles,\n      subtitleAriaId,\n      theme,\n      topOffsetFixed,\n      responsiveMode,\n      // eslint-disable-next-line deprecation/deprecation\n      onLayerDidMount,\n      isModeless,\n      dragOptions,\n      onDismissed,\n      // eslint-disable-next-line deprecation/deprecation\n      enableAriaHiddenSiblings,\n      popupProps,\n    } = props;\n\n    const rootRef = React.useRef<HTMLDivElement>(null);\n    const focusTrapZone = React.useRef<IFocusTrapZone>(null);\n    const focusTrapZoneRef = useMergedRefs(focusTrapZone, focusTrapZoneProps?.componentRef);\n    const focusTrapZoneElm = React.useRef<HTMLDivElement>(null);\n    const mergedRef = useMergedRefs(rootRef, ref);\n\n    const modalResponsiveMode = useResponsiveMode(mergedRef);\n\n    const focusTrapZoneId = useId('ModalFocusTrapZone', focusTrapZoneProps?.id);\n\n    const win = useWindow();\n\n    const { setTimeout, clearTimeout } = useSetTimeout();\n\n    const [isModalOpen, setIsModalOpen] = React.useState(isOpen);\n    const [isVisible, setIsVisible] = React.useState(isOpen);\n    const [coordinates, setCoordinates] = React.useState<ICoordinates>(ZERO);\n    const [modalRectangleTop, setModalRectangleTop] = React.useState<number | undefined>();\n\n    const [isModalMenuOpen, { toggle: toggleModalMenuOpen, setFalse: setModalMenuClose }] = useBoolean(false);\n\n    const internalState = useConst<IModalInternalState>(() => ({\n      onModalCloseTimer: 0,\n      allowTouchBodyScroll,\n      scrollableContent: null,\n      lastSetCoordinates: ZERO,\n      events: new EventGroup({}),\n    }));\n\n    const { keepInBounds } = dragOptions || ({} as IDragOptions);\n    const isAlertRole = isAlert ?? (isBlocking && !isModeless);\n\n    const layerClassName = layerProps === undefined ? '' : layerProps.className;\n    const classNames = getClassNames(styles, {\n      theme: theme!,\n      className,\n      containerClassName,\n      scrollableContentClassName,\n      isOpen,\n      isVisible,\n      hasBeenOpened: internalState.hasBeenOpened,\n      modalRectangleTop,\n      topOffsetFixed,\n      isModeless,\n      layerClassName,\n      windowInnerHeight: win?.innerHeight,\n      isDefaultDragHandle: dragOptions && !dragOptions.dragHandleSelector,\n    });\n\n    const mergedLayerProps: ILayerProps = {\n      eventBubblingEnabled: false,\n      ...layerProps,\n      onLayerDidMount: layerProps && layerProps.onLayerDidMount ? layerProps.onLayerDidMount : onLayerDidMount,\n      insertFirst: layerProps?.insertFirst || isModeless,\n      className: classNames.layer,\n    };\n\n    // Allow the user to scroll within the modal but not on the body\n    const allowScrollOnModal = React.useCallback(\n      (elt: HTMLDivElement | null): void => {\n        if (elt) {\n          if (internalState.allowTouchBodyScroll) {\n            allowOverscrollOnElement(elt, internalState.events);\n          } else {\n            allowScrollOnElement(elt, internalState.events);\n          }\n        } else {\n          internalState.events.off(internalState.scrollableContent);\n        }\n        internalState.scrollableContent = elt;\n      },\n      [internalState],\n    );\n\n    const registerInitialModalPosition = (): void => {\n      const dialogMain = focusTrapZoneElm.current;\n      const modalRectangle = dialogMain?.getBoundingClientRect();\n\n      if (modalRectangle) {\n        if (topOffsetFixed) {\n          setModalRectangleTop(modalRectangle.top);\n        }\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    /**\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    const getClampedAxis = React.useCallback(\n      (axis: keyof ICoordinates, position: number) => {\n        const { minPosition, maxPosition } = internalState;\n        if (keepInBounds && minPosition && maxPosition) {\n          position = Math.max(minPosition[axis], position);\n          position = Math.min(maxPosition[axis], position);\n        }\n        return position;\n      },\n      [keepInBounds, internalState],\n    );\n\n    const handleModalClose = (): void => {\n      internalState.lastSetCoordinates = ZERO;\n\n      setModalMenuClose();\n      internalState.isInKeyboardMoveMode = false;\n      setIsModalOpen(false);\n      setCoordinates(ZERO);\n\n      internalState.disposeOnKeyUp?.();\n\n      onDismissed?.();\n    };\n\n    const handleDragStart = React.useCallback((): void => {\n      setModalMenuClose();\n      internalState.isInKeyboardMoveMode = false;\n    }, [internalState, setModalMenuClose]);\n\n    const handleDrag = React.useCallback(\n      (ev: React.MouseEvent<HTMLElement> & React.TouchEvent<HTMLElement>, dragData: IDragData): void => {\n        setCoordinates(prevValue => ({\n          x: getClampedAxis('x', prevValue.x + dragData.delta.x),\n          y: getClampedAxis('y', prevValue.y + dragData.delta.y),\n        }));\n      },\n      [getClampedAxis],\n    );\n\n    const handleDragStop = React.useCallback((): void => {\n      if (focusTrapZone.current) {\n        focusTrapZone.current.focus();\n      }\n    }, []);\n\n    const handleEnterKeyboardMoveMode = () => {\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      const handleKeyDown = (ev: React.KeyboardEvent<HTMLElement>): void => {\n        // eslint-disable-next-line deprecation/deprecation\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\n        // eslint-disable-next-line deprecation/deprecation\n        const newLocal = ev.altKey || ev.keyCode === KeyCodes.escape;\n        if (isModalMenuOpen && newLocal) {\n          setModalMenuClose();\n        }\n\n        // eslint-disable-next-line deprecation/deprecation\n        if (internalState.isInKeyboardMoveMode && (ev.keyCode === KeyCodes.escape || ev.keyCode === KeyCodes.enter)) {\n          internalState.isInKeyboardMoveMode = false;\n          ev.preventDefault();\n          ev.stopPropagation();\n        }\n\n        if (internalState.isInKeyboardMoveMode) {\n          let handledEvent = true;\n          const delta = getMoveDelta(ev);\n\n          // eslint-disable-next-line deprecation/deprecation\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(prevValue => ({ x: prevValue.x, y: getClampedAxis('y', prevValue.y - delta) }));\n              break;\n            }\n            case KeyCodes.down: {\n              setCoordinates(prevValue => ({ x: prevValue.x, y: getClampedAxis('y', prevValue.y + delta) }));\n              break;\n            }\n            case KeyCodes.left: {\n              setCoordinates(prevValue => ({ x: getClampedAxis('x', prevValue.x - delta), y: prevValue.y }));\n              break;\n            }\n            case KeyCodes.right: {\n              setCoordinates(prevValue => ({ x: getClampedAxis('x', prevValue.x + delta), 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\n      internalState.lastSetCoordinates = coordinates;\n      setModalMenuClose();\n      internalState.isInKeyboardMoveMode = true;\n\n      internalState.events.on(win, 'keydown', handleKeyDown, true /* useCapture */);\n      internalState.disposeOnKeyDown = () => {\n        internalState.events.off(win, 'keydown', handleKeyDown, true /* useCapture */);\n        internalState.disposeOnKeyDown = undefined;\n      };\n    };\n\n    const handleExitKeyboardMoveMode = (ev: React.FocusEvent<HTMLDivElement>) => {\n      focusTrapZoneProps?.onBlur?.(ev);\n      internalState.lastSetCoordinates = ZERO;\n      internalState.isInKeyboardMoveMode = false;\n      internalState.disposeOnKeyDown?.();\n    };\n\n    const registerForKeyUp = (): void => {\n      const handleKeyUp = (ev: React.KeyboardEvent<HTMLElement>): void => {\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        // eslint-disable-next-line deprecation/deprecation\n        if (ev.altKey && ev.ctrlKey && ev.keyCode === KeyCodes.space) {\n          if (elementContains(internalState.scrollableContent, ev.target as HTMLElement)) {\n            toggleModalMenuOpen();\n            ev.preventDefault();\n            ev.stopPropagation();\n          }\n        }\n      };\n\n      if (!internalState.disposeOnKeyUp) {\n        internalState.events.on(win, 'keyup', handleKeyUp, true /* useCapture */);\n        internalState.disposeOnKeyUp = () => {\n          internalState.events.off(win, 'keyup', handleKeyUp, true /* useCapture */);\n          internalState.disposeOnKeyUp = undefined;\n        };\n      }\n    };\n\n    React.useEffect(() => {\n      clearTimeout(internalState.onModalCloseTimer);\n      // Opening the dialog\n      if (isOpen) {\n        // This must be done after the modal content has rendered\n        requestAnimationFrame(() => setTimeout(registerInitialModalPosition, 0));\n\n        setIsModalOpen(true);\n\n        // Add a keyUp handler for all key up events once the dialog is open.\n        if (dragOptions) {\n          registerForKeyUp();\n        }\n\n        internalState.hasBeenOpened = true;\n        setIsVisible(true);\n      }\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\n    useUnmount(() => {\n      internalState.events.dispose();\n    });\n\n    useComponentRef(props, focusTrapZone);\n    useDebugWarnings(props);\n\n    const modalContent = (\n      <FocusTrapZone\n        {...focusTrapZoneProps}\n        id={focusTrapZoneId}\n        ref={focusTrapZoneElm}\n        componentRef={focusTrapZoneRef}\n        className={css(classNames.main, focusTrapZoneProps?.className)}\n        elementToFocusOnDismiss={focusTrapZoneProps?.elementToFocusOnDismiss ?? elementToFocusOnDismiss}\n        isClickableOutsideFocusTrap={\n          focusTrapZoneProps?.isClickableOutsideFocusTrap ?? (isModeless || isClickableOutsideFocusTrap || !isBlocking)\n        }\n        disableRestoreFocus={focusTrapZoneProps?.disableRestoreFocus ?? disableRestoreFocus}\n        forceFocusInsideTrap={(focusTrapZoneProps?.forceFocusInsideTrap ?? forceFocusInsideTrap) && !isModeless}\n        // eslint-disable-next-line deprecation/deprecation\n        firstFocusableSelector={focusTrapZoneProps?.firstFocusableSelector || firstFocusableSelector}\n        focusPreviouslyFocusedInnerElement={focusTrapZoneProps?.focusPreviouslyFocusedInnerElement ?? true}\n        onBlur={internalState.isInKeyboardMoveMode ? handleExitKeyboardMoveMode : undefined}\n        // enableAriaHiddenSiblings is handled by the Popup\n      >\n        {dragOptions && internalState.isInKeyboardMoveMode && (\n          <div className={classNames.keyboardMoveIconContainer}>\n            {dragOptions.keyboardMoveIconProps ? (\n              <Icon {...dragOptions.keyboardMoveIconProps} />\n            ) : (\n              <Icon iconName=\"move\" className={classNames.keyboardMoveIcon} />\n            )}\n          </div>\n        )}\n        <div ref={allowScrollOnModal} className={classNames.scrollableContent} data-is-scrollable>\n          {dragOptions && isModalMenuOpen && (\n            <dragOptions.menu\n              items={[\n                { key: 'move', text: dragOptions.moveMenuItemText, onClick: handleEnterKeyboardMoveMode },\n                { key: 'close', text: dragOptions.closeMenuItemText, onClick: handleModalClose },\n              ]}\n              onDismiss={setModalMenuClose}\n              alignTargetEdge\n              coverTarget\n              directionalHint={DirectionalHint.topLeftEdge}\n              directionalHintFixed\n              shouldFocusOnMount\n              target={internalState.scrollableContent}\n            />\n          )}\n          {children}\n        </div>\n      </FocusTrapZone>\n    );\n\n    return (\n      (isModalOpen && modalResponsiveMode! >= (responsiveMode || ResponsiveMode.small) && (\n        <Layer ref={mergedRef} {...mergedLayerProps}>\n          <Popup\n            role={isAlertRole ? 'alertdialog' : 'dialog'}\n            ariaLabelledBy={titleAriaId}\n            ariaDescribedBy={subtitleAriaId}\n            onDismiss={onDismiss}\n            shouldRestoreFocus={!disableRestoreFocus}\n            // Modeless modals shouldn't hide siblings.\n            // Popup will automatically handle this based on the aria-modal setting.\n            enableAriaHiddenSiblings={enableAriaHiddenSiblings}\n            aria-modal={!isModeless}\n            {...popupProps}\n          >\n            <div className={classNames.root} role={!isModeless ? 'document' : undefined}>\n              {!isModeless && (\n                <Overlay\n                  aria-hidden={true}\n                  isDarkThemed={isDarkOverlay}\n                  onClick={isBlocking ? undefined : onDismiss}\n                  allowTouchBodyScroll={allowTouchBodyScroll}\n                  {...overlay}\n                />\n              )}\n              {dragOptions ? (\n                <DraggableZone\n                  handleSelector={dragOptions.dragHandleSelector || `#${focusTrapZoneId}`}\n                  preventDragSelector=\"button\"\n                  onStart={handleDragStart}\n                  onDragChange={handleDrag}\n                  onStop={handleDragStop}\n                  position={coordinates}\n                >\n                  {modalContent}\n                </DraggableZone>\n              ) : (\n                modalContent\n              )}\n            </div>\n          </Popup>\n        </Layer>\n      )) ||\n      null\n    );\n  },\n);\nModalBase.displayName = 'Modal';\n\nfunction useDebugWarnings(props: IModalProps) {\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,\n      deprecations: { onLayerDidMount: 'layerProps.onLayerDidMount' },\n    });\n  }\n}\n","import * as React from 'react';\nimport { useConst } from './useConst';\n\n/** Updater callbacks returned by `useBoolean`. */\nexport interface IUseBooleanCallbacks {\n  /** Set the value to true. Always has the same identity. */\n  setTrue: () => void;\n  /** Set the value to false. Always has the same identity. */\n  setFalse: () => void;\n  /** Toggle the value. Always has the same identity. */\n  toggle: () => void;\n}\n\n/**\n * Hook to store a value and generate callbacks for setting the value to true or false.\n * The identity of the callbacks will always stay the same.\n *\n * @param initialState - Initial value\n * @returns Array with the current value and an object containing the updater callbacks.\n */\nexport function useBoolean(initialState: boolean): [boolean, IUseBooleanCallbacks] {\n  const [value, setValue] = React.useState(initialState);\n\n  const setTrue = useConst(() => () => {\n    setValue(true);\n  });\n  const setFalse = useConst(() => () => {\n    setValue(false);\n  });\n  const toggle = useConst(() => () => {\n    setValue(currentValue => !currentValue);\n  });\n\n  return [value, { setTrue, setFalse, toggle }];\n}\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { ModalBase } from './Modal.base';\nimport { getStyles } from './Modal.styles';\nimport type { IModalProps, IModalStyleProps, IModalStyles } from './Modal.types';\n\nexport const Modal: React.FunctionComponent<IModalProps> = styled<IModalProps, IModalStyleProps, IModalStyles>(\n  ModalBase,\n  getStyles,\n  undefined,\n  {\n    scope: 'Modal',\n    fields: ['theme', 'styles', 'enableAriaHiddenSiblings'],\n  },\n);\nModal.displayName = 'Modal';\n","import * as React from 'react';\nimport { classNamesFunction, initializeComponentRef } from '../../Utilities';\nimport type { IDialogFooterProps, IDialogFooterStyleProps, IDialogFooterStyles } from './DialogFooter.types';\nimport type { IProcessedStyleSet } from '../../Styling';\n\nconst getClassNames = classNamesFunction<IDialogFooterStyleProps, IDialogFooterStyles>();\n\nexport class DialogFooterBase extends React.Component<IDialogFooterProps, {}> {\n  private _classNames: IProcessedStyleSet<IDialogFooterStyles>;\n\n  constructor(props: IDialogFooterProps) {\n    super(props);\n\n    initializeComponentRef(this);\n  }\n\n  public render(): JSX.Element {\n    const { className, styles, theme } = this.props;\n\n    this._classNames = getClassNames(styles!, {\n      theme: theme!,\n      className,\n    });\n\n    return (\n      <div className={this._classNames.actions}>\n        <div className={this._classNames.actionsRight}>{this._renderChildrenAsActions()}</div>\n      </div>\n    );\n  }\n\n  private _renderChildrenAsActions(): (JSX.Element | null)[] | null | undefined {\n    return React.Children.map(this.props.children, child =>\n      child ? <span className={this._classNames.action}>{child}</span> : null,\n    );\n  }\n}\n","import { getGlobalClassNames } from '../../Styling';\nimport type { IDialogFooterStyleProps, IDialogFooterStyles } from './DialogFooter.types';\n\nconst GlobalClassNames = {\n  actions: 'ms-Dialog-actions',\n  action: 'ms-Dialog-action',\n  actionsRight: 'ms-Dialog-actionsRight',\n};\n\nexport const getStyles = (props: IDialogFooterStyleProps): IDialogFooterStyles => {\n  const { className, theme } = props;\n\n  const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n  return {\n    actions: [\n      classNames.actions,\n      {\n        position: 'relative',\n        width: '100%',\n        minHeight: '24px',\n        lineHeight: '24px',\n        margin: '16px 0 0',\n        fontSize: '0',\n\n        selectors: {\n          '.ms-Button': {\n            lineHeight: 'normal',\n            verticalAlign: 'middle',\n          },\n        },\n      },\n      className,\n    ],\n\n    action: [\n      classNames.action,\n      {\n        margin: '0 4px',\n      },\n    ],\n\n    actionsRight: [\n      classNames.actionsRight,\n      {\n        alignItems: 'center',\n        display: 'flex',\n        fontSize: '0',\n        justifyContent: 'flex-end',\n        marginRight: '-4px',\n      },\n    ],\n  };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DialogFooterBase } from './DialogFooter.base';\nimport { getStyles } from './DialogFooter.styles';\nimport type { IDialogFooterProps, IDialogFooterStyleProps, IDialogFooterStyles } from './DialogFooter.types';\n\nexport const DialogFooter: React.FunctionComponent<IDialogFooterProps> = styled<\n  IDialogFooterProps,\n  IDialogFooterStyleProps,\n  IDialogFooterStyles\n>(DialogFooterBase, getStyles, undefined, { scope: 'DialogFooter' });\n","import * as React from 'react';\nimport { classNamesFunction, css, warnDeprecations, initializeComponentRef } from '../../Utilities';\nimport { DialogType } from './DialogContent.types';\nimport { IconButton } from '../../Button';\nimport { DialogFooter } from './DialogFooter';\nimport { withResponsiveMode } from '../../ResponsiveMode';\nimport type { IDialogContentProps, IDialogContentStyleProps, IDialogContentStyles } from './DialogContent.types';\nimport type { IDialogFooterProps } from './DialogFooter.types';\n\nconst getClassNames = classNamesFunction<IDialogContentStyleProps, IDialogContentStyles>();\n\nconst DialogFooterType = ((<DialogFooter />) as React.ReactElement<IDialogFooterProps>).type;\n\nconst COMPONENT_NAME = 'DialogContent';\n\n// eslint-disable-next-line deprecation/deprecation\n@withResponsiveMode\nexport class DialogContentBase extends React.Component<IDialogContentProps, {}> {\n  public static defaultProps: IDialogContentProps = {\n    showCloseButton: false,\n    className: '',\n    topButtonsProps: [],\n    closeButtonAriaLabel: 'Close',\n  };\n\n  constructor(props: IDialogContentProps) {\n    super(props);\n\n    initializeComponentRef(this);\n    warnDeprecations(COMPONENT_NAME, props, {\n      titleId: 'titleProps.id',\n    });\n  }\n\n  public render(): JSX.Element {\n    const {\n      showCloseButton,\n      className,\n      closeButtonAriaLabel,\n      onDismiss,\n      subTextId,\n      subText,\n      titleProps = {},\n      // eslint-disable-next-line deprecation/deprecation\n      titleId,\n      title,\n      type,\n      styles,\n      theme,\n      draggableHeaderClassName,\n    } = this.props;\n\n    const classNames = getClassNames(styles!, {\n      theme: theme!,\n      className,\n      isLargeHeader: type === DialogType.largeHeader,\n      isClose: type === DialogType.close,\n      draggableHeaderClassName,\n    });\n\n    const groupings = this._groupChildren();\n    let subTextContent;\n    if (subText) {\n      subTextContent = (\n        <p className={classNames.subText} id={subTextId}>\n          {subText}\n        </p>\n      );\n    }\n\n    return (\n      <div className={classNames.content}>\n        <div className={classNames.header}>\n          <div\n            id={titleId}\n            role=\"heading\"\n            aria-level={1}\n            {...titleProps}\n            className={css(classNames.title, titleProps.className)}\n          >\n            {title}\n          </div>\n          <div className={classNames.topButton}>\n            {this.props.topButtonsProps!.map((props, index) => (\n              <IconButton key={props.uniqueId || index} {...props} />\n            ))}\n            {(type === DialogType.close || (showCloseButton && type !== DialogType.largeHeader)) && (\n              <IconButton\n                className={classNames.button}\n                iconProps={{ iconName: 'Cancel' }}\n                ariaLabel={closeButtonAriaLabel}\n                onClick={onDismiss as any}\n              />\n            )}\n          </div>\n        </div>\n        <div className={classNames.inner}>\n          <div className={classNames.innerContent}>\n            {subTextContent}\n            {groupings.contents}\n          </div>\n          {groupings.footers}\n        </div>\n      </div>\n    );\n  }\n\n  // @TODO - typing the footers as an array of DialogFooter is difficult because\n  // casing \"child as DialogFooter\" causes a problem because\n  // \"Neither type 'ReactElement<any>' nor type 'DialogFooter' is assignable to the other.\"\n  private _groupChildren(): { footers: any[]; contents: any[] } {\n    const groupings: { footers: any[]; contents: any[] } = {\n      footers: [],\n      contents: [],\n    };\n\n    React.Children.map(this.props.children, child => {\n      if (typeof child === 'object' && child !== null && (child as any).type === DialogFooterType) {\n        groupings.footers.push(child);\n      } else {\n        groupings.contents.push(child);\n      }\n    });\n\n    return groupings;\n  }\n}\n","import {\n  FontWeights,\n  getGlobalClassNames,\n  IconFontSizes,\n  ScreenWidthMinSmall,\n  ScreenWidthMaxSmall,\n} from '../../Styling';\nimport type { IDialogContentStyleProps, IDialogContentStyles } from './DialogContent.types';\n\nconst GlobalClassNames = {\n  contentLgHeader: 'ms-Dialog-lgHeader',\n  close: 'ms-Dialog--close',\n  subText: 'ms-Dialog-subText',\n  header: 'ms-Dialog-header',\n  headerLg: 'ms-Dialog--lgHeader',\n  button: 'ms-Dialog-button ms-Dialog-button--close',\n  inner: 'ms-Dialog-inner',\n  content: 'ms-Dialog-content',\n  title: 'ms-Dialog-title',\n};\n\nexport const getStyles = (props: IDialogContentStyleProps): IDialogContentStyles => {\n  const { className, theme, isLargeHeader, isClose, hidden, isMultiline, draggableHeaderClassName } = props;\n\n  const { palette, fonts, effects, semanticColors } = theme;\n\n  const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n  return {\n    content: [\n      isLargeHeader && [\n        classNames.contentLgHeader,\n        {\n          borderTop: `4px solid ${palette.themePrimary}`,\n        },\n      ],\n      isClose && classNames.close,\n      {\n        flexGrow: 1,\n        overflowY: 'hidden', // required for allowScrollOnElement\n      },\n      className,\n    ],\n\n    subText: [\n      classNames.subText,\n      fonts.medium,\n      {\n        margin: '0 0 24px 0',\n        color: semanticColors.bodySubtext,\n        lineHeight: '1.5',\n        wordWrap: 'break-word',\n        fontWeight: FontWeights.regular,\n      },\n    ],\n\n    header: [\n      classNames.header,\n      {\n        position: 'relative',\n        width: '100%',\n        boxSizing: 'border-box',\n      },\n      isClose && classNames.close,\n      draggableHeaderClassName && [\n        draggableHeaderClassName,\n        {\n          cursor: 'move',\n        },\n      ],\n    ],\n\n    button: [\n      classNames.button,\n      hidden && {\n        selectors: {\n          '.ms-Icon.ms-Icon--Cancel': {\n            color: semanticColors.buttonText,\n            fontSize: IconFontSizes.medium,\n          },\n        },\n      },\n    ],\n\n    inner: [\n      classNames.inner,\n      {\n        padding: '0 24px 24px',\n        selectors: {\n          [`@media (min-width: ${ScreenWidthMinSmall}px) and (max-width: ${ScreenWidthMaxSmall}px)`]: {\n            padding: '0 16px 16px',\n          },\n        },\n      },\n    ],\n\n    innerContent: [\n      classNames.content,\n      {\n        position: 'relative',\n        width: '100%',\n      },\n    ],\n\n    title: [\n      classNames.title,\n      fonts.xLarge,\n      {\n        color: semanticColors.bodyText,\n        margin: '0',\n        minHeight: fonts.xLarge.fontSize,\n        padding: '16px 46px 20px 24px',\n        lineHeight: 'normal',\n        selectors: {\n          [`@media (min-width: ${ScreenWidthMinSmall}px) and (max-width: ${ScreenWidthMaxSmall}px)`]: {\n            padding: '16px 46px 16px 16px',\n          },\n        },\n      },\n      isLargeHeader && {\n        color: semanticColors.menuHeader,\n      },\n      isMultiline && { fontSize: fonts.xxLarge.fontSize },\n    ],\n\n    topButton: [\n      {\n        display: 'flex',\n        flexDirection: 'row',\n        flexWrap: 'nowrap',\n        position: 'absolute',\n        top: '0',\n        right: '0',\n        padding: '15px 15px 0 0',\n        selectors: {\n          '> *': {\n            flex: '0 0 auto',\n          },\n          '.ms-Dialog-button': {\n            color: semanticColors.buttonText,\n          },\n          '.ms-Dialog-button:hover': {\n            color: semanticColors.buttonTextHovered,\n            borderRadius: effects.roundedCorner2,\n          },\n          [`@media (min-width: ${ScreenWidthMinSmall}px) and (max-width: ${ScreenWidthMaxSmall}px)`]: {\n            padding: '15px 8px 0 0',\n          },\n        },\n      },\n    ],\n  };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DialogContentBase } from './DialogContent.base';\nimport { getStyles } from './DialogContent.styles';\nimport type { IDialogContentProps, IDialogContentStyleProps, IDialogContentStyles } from './DialogContent.types';\n\nexport const DialogContent: React.FunctionComponent<IDialogContentProps> = styled<\n  IDialogContentProps,\n  IDialogContentStyleProps,\n  IDialogContentStyles\n>(DialogContentBase, getStyles, undefined, { scope: 'DialogContent' });\n","import * as React from 'react';\nimport { warnDeprecations, classNamesFunction, getId } from '../../Utilities';\nimport { DialogType } from './DialogContent.types';\nimport { Modal } from '../../Modal';\nimport { withResponsiveMode } from '../../ResponsiveMode';\n\nconst getClassNames = classNamesFunction<IDialogStyleProps, IDialogStyles>();\n\nimport { DialogContent } from './DialogContent';\nimport type { IDialogProps, IDialogStyleProps, IDialogStyles } from './Dialog.types';\nimport type { IDialogContentProps } from './DialogContent.types';\nimport type { IModalProps } from '../../Modal';\nimport type { ILayerProps } from '../../Layer';\n\nconst DefaultModalProps: IModalProps = {\n  isDarkOverlay: false,\n  isBlocking: false,\n  className: '',\n  containerClassName: '',\n  topOffsetFixed: false,\n  enableAriaHiddenSiblings: true,\n};\n\nconst DefaultDialogContentProps: IDialogContentProps = {\n  type: DialogType.normal,\n  className: '',\n  topButtonsProps: [],\n};\n\n// eslint-disable-next-line deprecation/deprecation\n@withResponsiveMode\nexport class DialogBase extends React.Component<IDialogProps, {}> {\n  public static defaultProps: IDialogProps = {\n    hidden: true,\n  };\n\n  private _id: string;\n  private _defaultTitleTextId: string;\n  private _defaultSubTextId: string;\n\n  constructor(props: IDialogProps) {\n    super(props);\n\n    this._id = getId('Dialog');\n    this._defaultTitleTextId = this._id + '-title';\n    this._defaultSubTextId = this._id + '-subText';\n\n    if (process.env.NODE_ENV !== 'production') {\n      warnDeprecations('Dialog', props, {\n        isOpen: 'hidden',\n        type: 'dialogContentProps.type',\n        subText: 'dialogContentProps.subText',\n        contentClassName: 'dialogContentProps.className',\n        topButtonsProps: 'dialogContentProps.topButtonsProps',\n        className: 'modalProps.className',\n        isDarkOverlay: 'modalProps.isDarkOverlay',\n        isBlocking: 'modalProps.isBlocking',\n        containerClassName: 'modalProps.containerClassName',\n        onDismissed: 'modalProps.onDismissed',\n        onLayerDidMount: 'modalProps.layerProps.onLayerDidMount',\n        ariaDescribedById: 'modalProps.subtitleAriaId',\n        ariaLabelledById: 'modalProps.titleAriaId',\n      });\n    }\n  }\n\n  public render(): JSX.Element {\n    const props = this.props;\n    const {\n      /* eslint-disable deprecation/deprecation */\n      className,\n      containerClassName,\n      contentClassName,\n      elementToFocusOnDismiss,\n      firstFocusableSelector,\n      forceFocusInsideTrap,\n      styles,\n      hidden,\n      disableRestoreFocus = props.ignoreExternalFocusing,\n      isBlocking,\n      isClickableOutsideFocusTrap,\n      isDarkOverlay,\n      isOpen = !hidden,\n      onDismiss,\n      onDismissed,\n      onLayerDidMount,\n      responsiveMode,\n      subText,\n      theme,\n      title,\n      topButtonsProps,\n      type,\n      /* eslint-enable deprecation/deprecation */\n      minWidth,\n      maxWidth,\n      modalProps,\n    } = props;\n\n    const mergedLayerProps: ILayerProps = {\n      onLayerDidMount,\n      ...modalProps?.layerProps,\n    };\n\n    let dialogDraggableClassName: string | undefined;\n    let dragOptions: IModalProps['dragOptions'];\n\n    // If dragOptions are provided, but no drag handle is specified, we supply a drag handle,\n    // and inform dialog contents to add class to draggable class to the header\n    if (modalProps?.dragOptions && !modalProps.dragOptions?.dragHandleSelector) {\n      // spread options to avoid mutating props\n      dragOptions = { ...modalProps.dragOptions };\n      dialogDraggableClassName = 'ms-Dialog-draggable-header';\n      dragOptions.dragHandleSelector = `.${dialogDraggableClassName}`;\n    }\n\n    const mergedModalProps: IModalProps = {\n      ...DefaultModalProps,\n      elementToFocusOnDismiss,\n      firstFocusableSelector,\n      forceFocusInsideTrap,\n      disableRestoreFocus,\n      isClickableOutsideFocusTrap,\n      responsiveMode,\n      className,\n      containerClassName,\n      isBlocking,\n      isDarkOverlay,\n      onDismissed,\n      ...modalProps,\n      dragOptions,\n      layerProps: mergedLayerProps,\n      isOpen,\n    };\n\n    const dialogContentProps: IDialogContentProps = {\n      className: contentClassName,\n      subText,\n      title,\n      topButtonsProps,\n      type,\n      ...DefaultDialogContentProps,\n      ...props.dialogContentProps,\n      draggableHeaderClassName: dialogDraggableClassName,\n      titleProps: {\n        // eslint-disable-next-line deprecation/deprecation\n        id: props.dialogContentProps?.titleId || this._defaultTitleTextId,\n        ...props.dialogContentProps?.titleProps,\n      },\n    };\n\n    const classNames = getClassNames(styles!, {\n      theme: theme!,\n      className: mergedModalProps.className,\n      containerClassName: mergedModalProps.containerClassName,\n      hidden,\n      dialogDefaultMinWidth: minWidth,\n      dialogDefaultMaxWidth: maxWidth,\n    });\n\n    return (\n      <Modal\n        {...mergedModalProps}\n        className={classNames.root}\n        containerClassName={classNames.main}\n        onDismiss={onDismiss || mergedModalProps.onDismiss}\n        subtitleAriaId={this._getSubTextId()}\n        titleAriaId={this._getTitleTextId()}\n      >\n        <DialogContent\n          subTextId={this._defaultSubTextId}\n          showCloseButton={mergedModalProps.isBlocking}\n          onDismiss={onDismiss}\n          {...dialogContentProps}\n        >\n          {props.children}\n        </DialogContent>\n      </Modal>\n    );\n  }\n\n  private _getSubTextId = (): string | undefined => {\n    // eslint-disable-next-line deprecation/deprecation\n    const { ariaDescribedById, modalProps, dialogContentProps, subText } = this.props;\n    let id = (modalProps && modalProps.subtitleAriaId) || ariaDescribedById;\n\n    if (!id) {\n      id = ((dialogContentProps && dialogContentProps.subText) || subText) && this._defaultSubTextId;\n    }\n\n    return id;\n  };\n\n  private _getTitleTextId = (): string | undefined => {\n    // eslint-disable-next-line deprecation/deprecation\n    const { ariaLabelledById, modalProps, dialogContentProps, title } = this.props;\n    let id = (modalProps && modalProps.titleAriaId) || ariaLabelledById;\n\n    if (!id) {\n      id = ((dialogContentProps && dialogContentProps.title) || title) && this._defaultTitleTextId;\n    }\n\n    return id;\n  };\n}\n","import { ScreenWidthMinMedium, getGlobalClassNames } from '../../Styling';\nimport type { IDialogStyleProps, IDialogStyles } from './Dialog.types';\n\nconst GlobalClassNames = {\n  root: 'ms-Dialog',\n};\n\nexport const getStyles = (props: IDialogStyleProps): IDialogStyles => {\n  const {\n    className,\n    containerClassName, // eslint-disable-line deprecation/deprecation\n    dialogDefaultMinWidth = '288px',\n    dialogDefaultMaxWidth = '340px',\n    hidden,\n    theme,\n  } = props;\n\n  const classNames = getGlobalClassNames(GlobalClassNames, theme);\n\n  return {\n    root: [classNames.root, theme.fonts.medium, className],\n\n    main: [\n      {\n        width: dialogDefaultMinWidth,\n        outline: '3px solid transparent',\n\n        selectors: {\n          [`@media (min-width: ${ScreenWidthMinMedium}px)`]: {\n            width: 'auto',\n            maxWidth: dialogDefaultMaxWidth,\n            minWidth: dialogDefaultMinWidth,\n          },\n        },\n      },\n      !hidden && { display: 'flex' },\n      containerClassName,\n    ],\n  };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { DialogBase } from './Dialog.base';\nimport { getStyles } from './Dialog.styles';\nimport type { IDialogProps, IDialogStyleProps, IDialogStyles } from './Dialog.types';\n\nexport const Dialog: React.FunctionComponent<IDialogProps> = styled<IDialogProps, IDialogStyleProps, IDialogStyles>(\n  DialogBase,\n  getStyles,\n  undefined,\n  { scope: 'Dialog' },\n);\nDialog.displayName = 'Dialog';\n"],"sourceRoot":""}