{"version":3,"file":"FullscreenRegion.cjs","names":["_utils","require","_react","_AnimationContext","_createOdysseyStyledComponent","_i18n","_index","_fullscreenTransitionTokens","_createStore","_easeFullscreenTransition","_getBackgroundColorBehindElement","_useFullscreen","_jsxRuntime","FULLSCREEN_REGION_BASE_Z_INDEX","ANIMATED_RECT_PROPERTIES","StyledFullscreenRegionPlaceholder","createOdysseyStyledComponent","shouldForwardProp","prop","tag","reservedSize","height","width","StyledFullscreenRegion","fullscreenBackgroundColor","fullscreenStackIndex","isFullscreen","odysseyDesignTokens","backgroundColor","inset","overflow","padding","Spacing5","position","zIndex","Math","max","outline","StyledFullscreenAnnouncement","visuallyHidden","getElementSize","element","getBoundingClientRect","getElementRect","left","top","getViewportRect","document","documentElement","clientHeight","clientWidth","getInterpolatedRect","endRect","progress","startRect","applyRegionRect","rect","style","setProperty","clearRegionRect","forEach","propertyName","removeProperty","NON_RENDERED_TAG_NAMES","Set","getElementsOutside","rootNode","getRootNode","siblingContainer","parentElement","ShadowRoot","undefined","nextElement","host","body","Array","from","children","filter","siblingElement","concat","makeElementsOutsideInert","newlyInertElements","outsideElement","has","tagName","hasAttribute","setAttribute","removeAttribute","getDeepActiveElement","root","activeElement","shadowRoot","getIsFocusable","HTMLElement","isConnected","isolateFullscreenRegion","regionElement","previouslyFocusedElement","restoreElementsOutside","hasMovedFocus","contains","focus","preventScroll","focusedElement","hasFocusStayedInRegion","animateRegionRect","getEndRect","onFinish","animationFrameStore","createStore","animateFrame","frameTime","startTime","min","fullscreenTransitionTokens","durationMilliseconds","easeFullscreenTransition","setState","requestAnimationFrame","nextFrameTime","animationFrameId","getState","cancelAnimationFrame","FullscreenRegion","fullscreenId","hasAnimations","useAnimation","t","useTranslation","exitFullscreen","isInFullscreenStack","useFullscreen","isDisplayedFullscreen","setIsDisplayedFullscreen","useState","placeholderSize","setPlaceholderSize","setFullscreenBackgroundColor","fullscreenAnnouncement","setFullscreenAnnouncement","hasEnteredFullscreenRef","useRef","enterStartRectRef","inlineSizesRef","placeholderRef","regionRef","useLayoutEffect","placeholderElement","current","storeInlineSizes","regionSize","resizeObserver","ResizeObserver","observe","disconnect","inlineSizes","getBackgroundColorBehindElement","enterStartRect","placeholderRect","useEffect","watchElementDisconnection","onDisconnected","jsx","ref","jsxs","id","getFullscreenElementId","role","tabIndex","MemoizedFullscreenRegion","exports","memo","displayName"],"sources":["../../../src/fullscreen/FullscreenRegion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2026-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { visuallyHidden } from \"@mui/utils\";\nimport {\n  memo,\n  type ReactNode,\n  useEffect,\n  useLayoutEffect,\n  useRef,\n  useState,\n} from \"react\";\n\nimport { useAnimation } from \"../AnimationContext.js\";\nimport { createOdysseyStyledComponent } from \"../createOdysseyStyledComponent.js\";\nimport { useTranslation } from \"../i18n.generated/i18n.js\";\nimport {\n  getFullscreenElementId,\n  watchElementDisconnection,\n} from \"../message-bus/index.js\";\nimport { fullscreenTransitionTokens } from \"../pendingDesignTokens/fullscreenTransitionTokens.js\";\nimport { createStore } from \"../tools/createStore.js\";\nimport { easeFullscreenTransition } from \"./easeFullscreenTransition.js\";\nimport { getBackgroundColorBehindElement } from \"./getBackgroundColorBehindElement.js\";\nimport { useFullscreen } from \"./useFullscreen.js\";\n\n// Below MUI's app bar (1100), drawer (1200), and modal (1300) layers, so drawers, dialogs, and menus opened from inside the region still appear above it. A region higher in the fullscreen stack adds its position, so it covers the ones under it while staying below those layers.\nconst FULLSCREEN_REGION_BASE_Z_INDEX = 1000;\n\n// `right` and `bottom` are here because `inset: 0` sets them too. They have to be cleared to `auto`, or they fight the animated `width` and `height`.\nconst ANIMATED_RECT_PROPERTIES = [\n  \"bottom\",\n  \"height\",\n  \"left\",\n  \"right\",\n  \"top\",\n  \"width\",\n] as const;\n\ntype RegionRect = {\n  height: number;\n  left: number;\n  top: number;\n  width: number;\n};\n\ntype RegionSize = Pick<RegionRect, \"height\" | \"width\">;\n\nconst StyledFullscreenRegionPlaceholder = createOdysseyStyledComponent({\n  shouldForwardProp: (prop) => prop !== \"reservedSize\",\n  tag: \"div\",\n})<{ reservedSize?: RegionSize }>(({ reservedSize }) =>\n  reservedSize\n    ? { height: reservedSize.height, width: reservedSize.width }\n    : {},\n);\n\nconst StyledFullscreenRegion = createOdysseyStyledComponent({\n  shouldForwardProp: (prop) =>\n    prop !== \"fullscreenBackgroundColor\" &&\n    prop !== \"fullscreenStackIndex\" &&\n    prop !== \"isFullscreen\",\n  tag: \"div\",\n})<{\n  fullscreenBackgroundColor?: string;\n  fullscreenStackIndex: number;\n  isFullscreen: boolean;\n}>(\n  ({\n    fullscreenBackgroundColor,\n    fullscreenStackIndex,\n    isFullscreen,\n    odysseyDesignTokens,\n  }) =>\n    isFullscreen\n      ? {\n          backgroundColor: fullscreenBackgroundColor,\n          inset: 0,\n          overflow: \"auto\",\n          ...(isFullscreen ? { padding: odysseyDesignTokens.Spacing5 } : {}),\n          position: \"fixed\",\n          zIndex:\n            FULLSCREEN_REGION_BASE_Z_INDEX + Math.max(fullscreenStackIndex, 0),\n          // The region only takes focus so screen readers start reading inside it. It isn't a control, so a focus ring on the whole viewport would only be noise.\n          \"&:focus\": {\n            outline: \"none\",\n          },\n        }\n      : {},\n);\n\n// The same styles as `ScreenReaderText`, which can't carry the `role` a live region needs. They position it out of flow, so it never changes the region's layout or the margins its placeholder holds.\nconst StyledFullscreenAnnouncement = createOdysseyStyledComponent({\n  tag: \"span\",\n})(() => ({ ...visuallyHidden }));\n\nconst getElementSize = ({ element }: { element: Element }): RegionSize => {\n  const { height, width } = element.getBoundingClientRect();\n\n  return { height, width };\n};\n\nconst getElementRect = ({ element }: { element: Element }): RegionRect => {\n  const { height, left, top, width } = element.getBoundingClientRect();\n\n  return { height, left, top, width };\n};\n\n// `clientWidth` and `clientHeight` leave out the scrollbar, the same way `inset: 0` on a fixed element does.\nconst getViewportRect = (): RegionRect => ({\n  height: document.documentElement.clientHeight,\n  left: 0,\n  top: 0,\n  width: document.documentElement.clientWidth,\n});\n\nconst getInterpolatedRect = ({\n  endRect,\n  progress,\n  startRect,\n}: {\n  endRect: RegionRect;\n  progress: number;\n  startRect: RegionRect;\n}): RegionRect => ({\n  height: startRect.height + (endRect.height - startRect.height) * progress,\n  left: startRect.left + (endRect.left - startRect.left) * progress,\n  top: startRect.top + (endRect.top - startRect.top) * progress,\n  width: startRect.width + (endRect.width - startRect.width) * progress,\n});\n\nconst applyRegionRect = ({\n  element,\n  rect,\n}: {\n  element: HTMLElement;\n  rect: RegionRect;\n}) => {\n  element.style.setProperty(\"bottom\", \"auto\");\n  element.style.setProperty(\"height\", `${rect.height}px`);\n  element.style.setProperty(\"left\", `${rect.left}px`);\n  // Between its start and end sizes, the region's content can be larger than the region. With `overflow: auto`, a scrollbar flashes in for those frames and takes width from the content, which reflows and jumps. The scrollbar comes back once the region reaches the viewport.\n  element.style.setProperty(\"overflow\", \"hidden\");\n  element.style.setProperty(\"right\", \"auto\");\n  element.style.setProperty(\"top\", `${rect.top}px`);\n  element.style.setProperty(\"width\", `${rect.width}px`);\n};\n\nconst clearRegionRect = ({ element }: { element: HTMLElement }) => {\n  ANIMATED_RECT_PROPERTIES.forEach((propertyName) => {\n    element.style.removeProperty(propertyName);\n  });\n  element.style.removeProperty(\"overflow\");\n};\n\n// These never render, so making them inert changes nothing and only adds noise to the DOM.\nconst NON_RENDERED_TAG_NAMES = new Set([\n  \"LINK\",\n  \"META\",\n  \"SCRIPT\",\n  \"STYLE\",\n  \"TEMPLATE\",\n]);\n\n/**\n * Every element on the page that is not the given element, one of its ancestors, or inside it. Walks out through shadow roots, so a region rendered inside a web component still isolates the page around that component.\n */\nconst getElementsOutside = ({ element }: { element: Element }): Element[] => {\n  const rootNode = element.getRootNode();\n  const siblingContainer =\n    element.parentElement ??\n    (rootNode instanceof ShadowRoot ? rootNode : undefined);\n  const nextElement =\n    element.parentElement ??\n    (rootNode instanceof ShadowRoot ? rootNode.host : undefined);\n\n  // `<body>` is where the page ends. Its siblings are `<head>` and nothing a user can reach.\n  if (element === document.body || !siblingContainer || !nextElement) {\n    return [];\n  }\n\n  return Array.from(siblingContainer.children)\n    .filter((siblingElement) => siblingElement !== element)\n    .concat(getElementsOutside({ element: nextElement }));\n};\n\n/**\n * Makes everything outside the given element inert, so keyboard and screen reader users can't reach content the element covers.\n *\n * Returns a function that restores those elements. Elements that were already inert are left alone, so restoring never wakes something another component made inert.\n */\nconst makeElementsOutsideInert = ({ element }: { element: Element }) => {\n  const newlyInertElements = getElementsOutside({ element }).filter(\n    (outsideElement) =>\n      !NON_RENDERED_TAG_NAMES.has(outsideElement.tagName) &&\n      !outsideElement.hasAttribute(\"inert\"),\n  );\n\n  newlyInertElements.forEach((outsideElement) => {\n    outsideElement.setAttribute(\"inert\", \"\");\n  });\n\n  return () => {\n    newlyInertElements.forEach((outsideElement) => {\n      outsideElement.removeAttribute(\"inert\");\n    });\n  };\n};\n\n/**\n * The focused element, looking inside shadow roots. `document.activeElement` stops at a shadow host.\n */\nconst getDeepActiveElement = (\n  root: Document | ShadowRoot = document,\n): Element | null => {\n  const { activeElement } = root;\n\n  return activeElement?.shadowRoot\n    ? (getDeepActiveElement(activeElement.shadowRoot) ?? activeElement)\n    : activeElement;\n};\n\nconst getIsFocusable = (element: Element): element is HTMLElement =>\n  element instanceof HTMLElement && element.isConnected;\n\n/**\n * Isolates the region while it's in fullscreen and points keyboard and screen reader users at it.\n *\n * Focus moves to the region only when it starts outside, such as when another app or UI Shell put the region in fullscreen. A user who pressed the region's own button keeps focus on it. On exit, focus goes back to where it was, the way a dialog returns focus to its opener, unless focus has since left the region, such as into a menu opened from it.\n *\n * Returns a function that undoes both.\n */\nconst isolateFullscreenRegion = ({\n  regionElement,\n}: {\n  regionElement: HTMLElement;\n}) => {\n  // Read before the page around the region goes inert, because the browser drops focus from an inert element.\n  const previouslyFocusedElement = getDeepActiveElement();\n  const restoreElementsOutside = makeElementsOutsideInert({\n    element: regionElement,\n  });\n  const hasMovedFocus =\n    previouslyFocusedElement === null ||\n    !regionElement.contains(previouslyFocusedElement);\n\n  if (hasMovedFocus) {\n    regionElement.focus({ preventScroll: true });\n  }\n\n  return () => {\n    restoreElementsOutside();\n\n    const focusedElement = getDeepActiveElement();\n    const hasFocusStayedInRegion =\n      focusedElement === null ||\n      focusedElement === document.body ||\n      regionElement.contains(focusedElement);\n\n    if (\n      hasMovedFocus &&\n      hasFocusStayedInRegion &&\n      previouslyFocusedElement &&\n      getIsFocusable(previouslyFocusedElement)\n    ) {\n      previouslyFocusedElement.focus({ preventScroll: true });\n    }\n  };\n};\n\n/**\n * Moves a fixed element from one rect to another, one frame at a time. The end rect is read every frame because the page underneath it can move while the shell's navigation grows back.\n *\n * Returns a function that stops the animation and clears its inline styles.\n */\nconst animateRegionRect = ({\n  element,\n  getEndRect,\n  onFinish,\n  startRect,\n}: {\n  element: HTMLElement;\n  getEndRect: () => RegionRect;\n  onFinish: () => void;\n  startRect: RegionRect;\n}) => {\n  // Applied before the browser paints, so the region never flashes at its end size first.\n  applyRegionRect({ element, rect: startRect });\n\n  // The latest frame request, so stopping cancels whichever frame is pending.\n  const animationFrameStore = createStore<{ animationFrameId: number }>();\n\n  // Timed from the first frame's timestamp, not `performance.now()`. A frame's timestamp can be earlier than the moment it was requested, which would make the first frame's progress negative and move the region backward.\n  const animateFrame = ({\n    frameTime,\n    startTime,\n  }: {\n    frameTime: number;\n    startTime: number;\n  }) => {\n    const progress = Math.min(\n      (frameTime - startTime) / fullscreenTransitionTokens.durationMilliseconds,\n      1,\n    );\n\n    applyRegionRect({\n      element,\n      rect: getInterpolatedRect({\n        endRect: getEndRect(),\n        progress: easeFullscreenTransition(progress),\n        startRect,\n      }),\n    });\n\n    if (progress < 1) {\n      animationFrameStore.setState(\n        \"animationFrameId\",\n        requestAnimationFrame((nextFrameTime) =>\n          animateFrame({ frameTime: nextFrameTime, startTime }),\n        ),\n      );\n    } else {\n      onFinish();\n    }\n  };\n\n  animationFrameStore.setState(\n    \"animationFrameId\",\n    requestAnimationFrame((frameTime) =>\n      animateFrame({ frameTime, startTime: frameTime }),\n    ),\n  );\n\n  return () => {\n    const animationFrameId = animationFrameStore.getState(\"animationFrameId\");\n\n    if (animationFrameId !== undefined) {\n      cancelAnimationFrame(animationFrameId);\n    }\n\n    clearRegionRect({ element });\n  };\n};\n\nexport type FullscreenRegionProps = {\n  /**\n   * The content that fills the viewport while the region is in fullscreen.\n   */\n  children: ReactNode;\n  /**\n   * This region's id, from `useFullscreenId`. Pass the same id to every `FullscreenButton` that controls it, wherever that button sits on the page.\n   */\n  fullscreenId: string;\n};\n\n/**\n * A part of a page that can go fullscreen on its own. While it's in fullscreen, it fills the viewport, and Unified UI Shell hides its navigation and banners.\n *\n * Give it an id from `useFullscreenId`, and pass the same id to each `FullscreenButton` that controls it. The button can sit inside the region or anywhere else on the page.\n *\n * The region grows from its place on the page to the viewport, and shrinks back when it exits. It keeps its space on the page the whole time, so nothing around it moves.\n *\n * Regions stack. A region that enters fullscreen while another is in fullscreen covers it, and Escape or its own button goes back to the one under it.\n *\n * While it's on top, the rest of the page is `inert`, so keyboard and screen reader users stay inside the region the same way sighted users do. Dialogs, drawers, menus, and toasts opened from inside the region still work. Without shadow DOM, they render after the page around the region was made inert. With shadow DOM, they render into Odyssey's overlay container on `<body>`, which removes `inert` from itself while anything on the page is in fullscreen.\n *\n * Entering and exiting fullscreen are announced to screen readers. If focus was outside the region when it entered fullscreen, focus moves to the region, which is labelled \"Fullscreen mode\", and goes back when it exits.\n *\n * If the region's element leaves the page while it's in fullscreen without React unmounting it, such as a host page removing a view, it exits. Otherwise UI Shell's navigation would stay hidden with nothing on screen to bring it back.\n *\n * @experimental The fullscreen API is in alpha and may change in a future release.\n */\nconst FullscreenRegion = ({\n  children,\n  fullscreenId,\n}: FullscreenRegionProps) => {\n  const hasAnimations = useAnimation();\n  const { t } = useTranslation();\n  const {\n    exitFullscreen,\n    fullscreenStackIndex,\n    isFullscreen,\n    isInFullscreenStack,\n  } = useFullscreen({ fullscreenId });\n\n  // Trails `isInFullscreenStack` while the region shrinks back, so it stays fixed until it lands on its placeholder. A region covered by one above it is still in the stack, so it stays fixed underneath.\n  const [isDisplayedFullscreen, setIsDisplayedFullscreen] =\n    useState(isInFullscreenStack);\n  const [placeholderSize, setPlaceholderSize] = useState<RegionSize>();\n  // Read from what's behind the region on the page, so a region inside a `Surface` stays white and one on the UI Shell app area stays gray. Its content was designed against that background.\n  const [fullscreenBackgroundColor, setFullscreenBackgroundColor] =\n    useState<string>();\n  // Empty until the first change, so loading a page never announces anything.\n  const [fullscreenAnnouncement, setFullscreenAnnouncement] = useState(\"\");\n  const hasEnteredFullscreenRef = useRef(isInFullscreenStack);\n\n  const enterStartRectRef = useRef<RegionRect>();\n  const inlineSizesRef = useRef<{\n    placeholderSize: RegionSize;\n    regionSize: RegionSize;\n  }>();\n  const placeholderRef = useRef<HTMLDivElement>(null);\n  const regionRef = useRef<HTMLDivElement>(null);\n\n  // The content inside the region can change size in the same commit that enters fullscreen, such as a component that reads `useFullscreen` and changes its layout. Sizes kept from before that commit let the region start from what the user saw, and keep the page around it from moving.\n  useLayoutEffect(() => {\n    const placeholderElement = placeholderRef.current;\n    const regionElement = regionRef.current;\n\n    if (isDisplayedFullscreen || !placeholderElement || !regionElement) {\n      return;\n    }\n\n    const storeInlineSizes = () => {\n      inlineSizesRef.current = {\n        placeholderSize: getElementSize({ element: placeholderElement }),\n        regionSize: getElementSize({ element: regionElement }),\n      };\n    };\n\n    storeInlineSizes();\n\n    const resizeObserver = new ResizeObserver(storeInlineSizes);\n    resizeObserver.observe(placeholderElement);\n    resizeObserver.observe(regionElement);\n\n    return () => resizeObserver.disconnect();\n  }, [isDisplayedFullscreen]);\n\n  // A layout effect, so each measurement and first frame happens before the browser paints.\n  useLayoutEffect(() => {\n    const placeholderElement = placeholderRef.current;\n    const regionElement = regionRef.current;\n\n    if (!placeholderElement || !regionElement) {\n      return;\n    }\n\n    if (isInFullscreenStack && !isDisplayedFullscreen) {\n      const { left, top } = getElementRect({ element: regionElement });\n      const inlineSizes = inlineSizesRef.current ?? {\n        placeholderSize: getElementSize({ element: placeholderElement }),\n        regionSize: getElementSize({ element: regionElement }),\n      };\n\n      enterStartRectRef.current = hasAnimations\n        ? { ...inlineSizes.regionSize, left, top }\n        : undefined;\n      setFullscreenBackgroundColor(\n        getBackgroundColorBehindElement({ element: placeholderElement }),\n      );\n      setPlaceholderSize(inlineSizes.placeholderSize);\n      setIsDisplayedFullscreen(true);\n\n      return;\n    }\n\n    if (isInFullscreenStack && isDisplayedFullscreen) {\n      const enterStartRect = enterStartRectRef.current;\n      enterStartRectRef.current = undefined;\n\n      if (!enterStartRect) {\n        return;\n      }\n\n      return animateRegionRect({\n        element: regionElement,\n        getEndRect: getViewportRect,\n        // Hands the size back to `inset: 0`, so the region follows the viewport when the window resizes.\n        onFinish: () => clearRegionRect({ element: regionElement }),\n        startRect: enterStartRect,\n      });\n    }\n\n    if (!isInFullscreenStack && isDisplayedFullscreen) {\n      if (!hasAnimations) {\n        setIsDisplayedFullscreen(false);\n\n        return;\n      }\n\n      // The inline styles stay on after the last frame. This effect's cleanup clears them in the same commit that drops the fixed position, so the region never flashes full size.\n      return animateRegionRect({\n        element: regionElement,\n        getEndRect: () => {\n          const placeholderRect = getElementRect({\n            element: placeholderElement,\n          });\n\n          // The placeholder also holds the margin of the region's first and last child, which sits outside the region once it is back inline.\n          return {\n            ...placeholderRect,\n            height:\n              inlineSizesRef.current?.regionSize.height ??\n              placeholderRect.height,\n          };\n        },\n        onFinish: () => setIsDisplayedFullscreen(false),\n        startRect: getElementRect({ element: regionElement }),\n      });\n    }\n\n    return;\n  }, [hasAnimations, isDisplayedFullscreen, isInFullscreenStack]);\n\n  // Only the region on top isolates. One covered by another region gives that up, so focus and the reading order follow whatever the user can see.\n  useEffect(() => {\n    const regionElement = regionRef.current;\n\n    if (!isFullscreen || !regionElement) {\n      return;\n    }\n\n    return isolateFullscreenRegion({ regionElement });\n  }, [isFullscreen]);\n\n  useEffect(() => {\n    if (isInFullscreenStack) {\n      hasEnteredFullscreenRef.current = true;\n      setFullscreenAnnouncement(t(\"fullscreen.entered.text\"));\n    } else if (hasEnteredFullscreenRef.current) {\n      setFullscreenAnnouncement(t(\"fullscreen.exited.text\"));\n    }\n  }, [isInFullscreenStack, t]);\n\n  useEffect(() => {\n    const regionElement = regionRef.current;\n\n    if (!isInFullscreenStack || !regionElement) {\n      return;\n    }\n\n    return watchElementDisconnection({\n      element: regionElement,\n      onDisconnected: exitFullscreen,\n    });\n  }, [exitFullscreen, isInFullscreenStack]);\n\n  // A region that unmounts while in fullscreen would otherwise leave the shell's navigation hidden with nothing on screen to bring it back.\n  useEffect(() => exitFullscreen, [exitFullscreen]);\n\n  return (\n    <StyledFullscreenRegionPlaceholder\n      ref={placeholderRef}\n      reservedSize={isDisplayedFullscreen ? placeholderSize : undefined}\n    >\n      <StyledFullscreenRegion\n        aria-label={\n          isInFullscreenStack ? t(\"fullscreen.region.label\") : undefined\n        }\n        fullscreenBackgroundColor={fullscreenBackgroundColor}\n        fullscreenStackIndex={fullscreenStackIndex}\n        id={getFullscreenElementId({ fullscreenId })}\n        isFullscreen={isDisplayedFullscreen}\n        ref={regionRef}\n        role={isInFullscreenStack ? \"region\" : undefined}\n        tabIndex={isFullscreen ? -1 : undefined}\n      >\n        {children}\n        {/* Inside the region, because everything outside it is inert while it's in fullscreen, and an inert live region is never read. */}\n        <StyledFullscreenAnnouncement role=\"status\">\n          {fullscreenAnnouncement}\n        </StyledFullscreenAnnouncement>\n      </StyledFullscreenRegion>\n    </StyledFullscreenRegionPlaceholder>\n  );\n};\n\nconst MemoizedFullscreenRegion = memo(FullscreenRegion);\nMemoizedFullscreenRegion.displayName = \"FullscreenRegion\";\n\nexport { MemoizedFullscreenRegion as FullscreenRegion };\n"],"mappings":"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","ignoreList":[]}