%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/opti/public_html/ncf/static/js/
Upload File :
Create Path :
Current File : /home/opti/public_html/ncf/static/js/57.3f1b4f27.chunk.js.map

{"version":3,"sources":["../node_modules/swiper/esm/components/pagination/pagination.js","../../../src/hooks/use-focus-trap.ts","../../../src/hooks/use-inert-others.ts","../../../src/internal/portal-force-root.tsx","../../../../src/components/portal/portal.tsx","../../../../src/components/description/description.tsx","../../../src/internal/stack-context.tsx","../../../../src/components/dialog/dialog.tsx"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","Pagination","update","swiper","rtl","params","pagination","el","$el","current","slidesLength","virtual","enabled","slides","total","loop","Math","ceil","loopedSlides","slidesPerGroup","snapGrid","activeIndex","paginationType","snapIndex","type","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","eq","isHorizontal","css","dynamicMainBullets","undefined","previousIndex","dynamicBulletIndex","min","removeClass","bulletActiveClass","each","bullet","$bullet","$","bulletIndex","index","addClass","prev","next","$firstDisplayedBullet","$lastDisplayedBullet","_i","dynamicBulletsLength","bulletsOffset","offsetProp","find","classesToSelector","currentClass","text","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","transform","transition","speed","renderCustom","html","emit","watchOverflow","isLocked","lockClass","render","paginationHTML","numberOfBullets","freeMode","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","init","createElementIfNotDefined","createElements","uniqueNavElements","clickable","clickableClass","modifierClass","progressbarOppositeClass","on","e","preventDefault","slideTo","extend","destroy","hiddenClass","off","name","hideOnClick","number","create","bindModuleMethods","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","click","targetEl","hasClass","navigation","nextEl","prevEl","toggleClass","Features","useFocusTrap","container","features","All","initialFocus","containers","restoreElement","useRef","window","document","previousActiveElement","mounted","useIsMounted","featuresRestoreFocus","Boolean","featuresInitialFocus","useEffect","focusElement","activeElement","focusIn","Focus","FocusResult","Error","useWindowEvent","event","Keys","allContainers","Set","previous","toElement","contains","interactables","originals","inert","element","restore","original","ForcePortalRootContext","createContext","ForcePortalRoot","props","value","force","usePortalTarget","forceInRoot","useContext","groupTarget","useState","existingRoot","root","setTarget","DEFAULT_PORTAL_TAG","Portal","passthroughProps","ready","useServerHandoffComplete","useIsoMorphicEffect","createPortal","defaultTag","DEFAULT_GROUP_TAG","PortalGroupContext","DescriptionContext","useDescriptionContext","context","err","StackMessage","StackContext","StackProvider","children","onUpdate","parentUpdate","notify","useCallback","args","DialogStates","ActionTypes","reducers","state","action","titleId","id","DialogContext","useDialogContext","component","Dialog","stateReducer","match","DialogRenderFeatures","DialogRoot","forwardRefWithAs","open","onClose","rest","nestedDialogCount","setNestedDialogCount","usesOpenClosedState","useOpenClosed","State","internalDialogRef","dialogRef","useSyncRefs","hasOpen","hasOnClose","dialogState","visible","useReducer","descriptionId","dispatch","close","setTitleId","hasNestedDialogs","hasParentDialog","position","parent","FocusTrapFeatures","leaf","child","interactable","useInertOthers","overflow","paddingRight","scrollbarWidth","observer","IntersectionObserver","entries","entry","descriptionIds","setDescriptionIds","useMemo","register","existing","clone","idx","contextBag","slot","useDescriptions","describedby","DescriptionProvider","useId","Open","propsWeControl","ref","role","onClick","onKeyDown","message","count","React","Overlay","overlayRef","handleClick","isDisabledReactIssue7711","Title","Description","passThroughProps"],"mappings":"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","file":"static/js/57.3f1b4f27.chunk.js","sourcesContent":["function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, classesToSelector, createElementIfNotDefined } from '../../utils/utils';\nvar Pagination = {\n  update: function update() {\n    // Render || Update Pagination bullets/items\n    var swiper = this;\n    var rtl = swiper.rtl;\n    var params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    var $el = swiper.pagination.$el; // Current/Total\n\n    var current;\n    var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      var bullets = swiper.pagination.bullets;\n      var firstIndex;\n      var lastIndex;\n      var midIndex;\n\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + \"px\");\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;\n\n          if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(params.bulletActiveClass + \" \" + params.bulletActiveClass + \"-next \" + params.bulletActiveClass + \"-next-next \" + params.bulletActiveClass + \"-prev \" + params.bulletActiveClass + \"-prev-prev \" + params.bulletActiveClass + \"-main\");\n\n      if ($el.length > 1) {\n        bullets.each(function (bullet) {\n          var $bullet = $(bullet);\n          var bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(params.bulletActiveClass + \"-main\");\n            }\n\n            if (bulletIndex === firstIndex) {\n              $bullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n            }\n\n            if (bulletIndex === lastIndex) {\n              $bullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n            }\n          }\n        });\n      } else {\n        var $bullet = bullets.eq(current);\n        var bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          var $firstDisplayedBullet = bullets.eq(firstIndex);\n          var $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (var i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(params.bulletActiveClass + \"-main\");\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {\n                bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + \"-main\");\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + \"-prev\");\n            } else {\n              $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n              $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n            }\n          } else {\n            $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + \"-prev\").prev().addClass(params.bulletActiveClass + \"-prev-prev\");\n            $lastDisplayedBullet.next().addClass(params.bulletActiveClass + \"-next\").next().addClass(params.bulletActiveClass + \"-next-next\");\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;\n        var offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + \"px\");\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      var progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      var scale = (current + 1) / total;\n      var scaleX = 1;\n      var scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(\"translate3d(0,0,0) scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\").transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  render: function render() {\n    // Render Container\n    var swiper = this;\n    var params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    var $el = swiper.pagination.$el;\n    var paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (var i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += \"<\" + params.bulletElement + \" class=\\\"\" + params.bulletClass + \"\\\"></\" + params.bulletElement + \">\";\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = \"<span class=\\\"\" + params.currentClass + \"\\\"></span>\" + ' / ' + (\"<span class=\\\"\" + params.totalClass + \"\\\"></span>\");\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = \"<span class=\\\"\" + params.progressbarFillClass + \"\\\"></span>\";\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init: function init() {\n    var swiper = this;\n    swiper.params.pagination = createElementIfNotDefined(swiper.$el, swiper.params.pagination, swiper.params.createElements, {\n      el: 'swiper-pagination'\n    });\n    var params = swiper.params.pagination;\n    if (!params.el) return;\n    var $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(\"\" + params.modifierClass + params.type + \"-dynamic\");\n      swiper.pagination.dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n        e.preventDefault();\n        var index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    extend(swiper.pagination, {\n      $el: $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  },\n  destroy: function destroy() {\n    var swiper = this;\n    var params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    var $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n};\nexport default {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: function formatFractionCurrent(number) {\n        return number;\n      },\n      formatFractionTotal: function formatFractionTotal(number) {\n        return number;\n      },\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-',\n      // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable',\n      // NEW\n      lockClass: 'swiper-pagination-lock'\n    }\n  },\n  create: function create() {\n    var swiper = this;\n    bindModuleMethods(swiper, {\n      pagination: _extends({\n        dynamicBulletIndex: 0\n      }, Pagination)\n    });\n  },\n  on: {\n    init: function init(swiper) {\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange: function activeIndexChange(swiper) {\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange: function snapIndexChange(swiper) {\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange: function slidesLengthChange(swiper) {\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange: function snapGridLengthChange(swiper) {\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy: function destroy(swiper) {\n      swiper.pagination.destroy();\n    },\n    'enable disable': function enableDisable(swiper) {\n      var $el = swiper.pagination.$el;\n\n      if ($el) {\n        $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n      }\n    },\n    click: function click(swiper, e) {\n      var targetEl = e.target;\n\n      if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n        if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n        var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n\n        if (isHidden === true) {\n          swiper.emit('paginationShow');\n        } else {\n          swiper.emit('paginationHide');\n        }\n\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    }\n  }\n};","import {\n  useRef,\n  // Types\n  MutableRefObject,\n  useEffect,\n} from 'react'\n\nimport { Keys } from '../components/keyboard'\nimport { focusElement, focusIn, Focus, FocusResult } from '../utils/focus-management'\nimport { useWindowEvent } from './use-window-event'\nimport { useIsMounted } from './use-is-mounted'\n\nexport enum Features {\n  /** No features enabled for the `useFocusTrap` hook. */\n  None = 1 << 0,\n\n  /** Ensure that we move focus initially into the container. */\n  InitialFocus = 1 << 1,\n\n  /** Ensure that pressing `Tab` and `Shift+Tab` is trapped within the container. */\n  TabLock = 1 << 2,\n\n  /** Ensure that programmatically moving focus outside of the container is disallowed. */\n  FocusLock = 1 << 3,\n\n  /** Ensure that we restore the focus when unmounting the component that uses this `useFocusTrap` hook. */\n  RestoreFocus = 1 << 4,\n\n  /** Enable all features. */\n  All = InitialFocus | TabLock | FocusLock | RestoreFocus,\n}\n\nexport function useFocusTrap(\n  container: MutableRefObject<HTMLElement | null>,\n  features: Features = Features.All,\n  {\n    initialFocus,\n    containers,\n  }: {\n    initialFocus?: MutableRefObject<HTMLElement | null>\n    containers?: MutableRefObject<Set<MutableRefObject<HTMLElement | null>>>\n  } = {}\n) {\n  let restoreElement = useRef<HTMLElement | null>(\n    typeof window !== 'undefined' ? (document.activeElement as HTMLElement) : null\n  )\n  let previousActiveElement = useRef<HTMLElement | null>(null)\n  let mounted = useIsMounted()\n\n  let featuresRestoreFocus = Boolean(features & Features.RestoreFocus)\n  let featuresInitialFocus = Boolean(features & Features.InitialFocus)\n\n  // Capture the currently focused element, before we enable the focus trap.\n  useEffect(() => {\n    if (!featuresRestoreFocus) return\n\n    restoreElement.current = document.activeElement as HTMLElement\n  }, [featuresRestoreFocus])\n\n  // Restore the focus when we unmount the component.\n  useEffect(() => {\n    if (!featuresRestoreFocus) return\n\n    return () => {\n      focusElement(restoreElement.current)\n      restoreElement.current = null\n    }\n  }, [featuresRestoreFocus])\n\n  // Handle initial focus\n  useEffect(() => {\n    if (!featuresInitialFocus) return\n    if (!container.current) return\n\n    let activeElement = document.activeElement as HTMLElement\n\n    if (initialFocus?.current) {\n      if (initialFocus?.current === activeElement) {\n        previousActiveElement.current = activeElement\n        return // Initial focus ref is already the active element\n      }\n    } else if (container.current.contains(activeElement)) {\n      previousActiveElement.current = activeElement\n      return // Already focused within Dialog\n    }\n\n    // Try to focus the initialFocus ref\n    if (initialFocus?.current) {\n      focusElement(initialFocus.current)\n    } else {\n      if (focusIn(container.current, Focus.First) === FocusResult.Error) {\n        throw new Error('There are no focusable elements inside the <FocusTrap />')\n      }\n    }\n\n    previousActiveElement.current = document.activeElement as HTMLElement\n  }, [container, initialFocus, featuresInitialFocus])\n\n  // Handle `Tab` & `Shift+Tab` keyboard events\n  useWindowEvent('keydown', event => {\n    if (!(features & Features.TabLock)) return\n\n    if (!container.current) return\n    if (event.key !== Keys.Tab) return\n\n    event.preventDefault()\n\n    if (\n      focusIn(\n        container.current,\n        (event.shiftKey ? Focus.Previous : Focus.Next) | Focus.WrapAround\n      ) === FocusResult.Success\n    ) {\n      previousActiveElement.current = document.activeElement as HTMLElement\n    }\n  })\n\n  // Prevent programmatically escaping the container\n  useWindowEvent(\n    'focus',\n    event => {\n      if (!(features & Features.FocusLock)) return\n\n      let allContainers = new Set(containers?.current)\n      allContainers.add(container)\n\n      if (!allContainers.size) return\n\n      let previous = previousActiveElement.current\n      if (!previous) return\n      if (!mounted.current) return\n\n      let toElement = event.target as HTMLElement | null\n\n      if (toElement && toElement instanceof HTMLElement) {\n        if (!contains(allContainers, toElement)) {\n          event.preventDefault()\n          event.stopPropagation()\n          focusElement(previous)\n        } else {\n          previousActiveElement.current = toElement\n          focusElement(toElement)\n        }\n      } else {\n        focusElement(previousActiveElement.current)\n      }\n    },\n    true\n  )\n}\n\nfunction contains(containers: Set<MutableRefObject<HTMLElement | null>>, element: HTMLElement) {\n  for (let container of containers) {\n    if (container.current?.contains(element)) return true\n  }\n\n  return false\n}\n","import { MutableRefObject } from 'react'\nimport { useIsoMorphicEffect } from './use-iso-morphic-effect'\n\nlet interactables = new Set<HTMLElement>()\nlet originals = new Map<HTMLElement, { 'aria-hidden': string | null; inert: boolean }>()\n\nfunction inert(element: HTMLElement) {\n  element.setAttribute('aria-hidden', 'true')\n  // @ts-expect-error `inert` does not exist on HTMLElement (yet!)\n  element.inert = true\n}\n\nfunction restore(element: HTMLElement) {\n  let original = originals.get(element)\n  if (!original) return\n\n  if (original['aria-hidden'] === null) element.removeAttribute('aria-hidden')\n  else element.setAttribute('aria-hidden', original['aria-hidden'])\n  // @ts-expect-error `inert` does not exist on HTMLElement (yet!)\n  element.inert = original.inert\n}\n\nexport function useInertOthers<TElement extends HTMLElement>(\n  container: MutableRefObject<TElement | null>,\n  enabled: boolean = true\n) {\n  useIsoMorphicEffect(() => {\n    if (!enabled) return\n    if (!container.current) return\n\n    let element = container.current\n\n    // Mark myself as an interactable element\n    interactables.add(element)\n\n    // Restore elements that now contain an interactable child\n    for (let original of originals.keys()) {\n      if (original.contains(element)) {\n        restore(original)\n        originals.delete(original)\n      }\n    }\n\n    // Collect direct children of the body\n    document.querySelectorAll('body > *').forEach(child => {\n      if (!(child instanceof HTMLElement)) return // Skip non-HTMLElements\n\n      // Skip the interactables, and the parents of the interactables\n      for (let interactable of interactables) {\n        if (child.contains(interactable)) return\n      }\n\n      // Keep track of the elements\n      if (interactables.size === 1) {\n        originals.set(child, {\n          'aria-hidden': child.getAttribute('aria-hidden'),\n          // @ts-expect-error `inert` does not exist on HTMLElement (yet!)\n          inert: child.inert,\n        })\n\n        // Mutate the element\n        inert(child)\n      }\n    })\n\n    return () => {\n      // Inert is disabled on the current element\n      interactables.delete(element)\n\n      // We still have interactable elements, therefore this one and its parent\n      // will become inert as well.\n      if (interactables.size > 0) {\n        // Collect direct children of the body\n        document.querySelectorAll('body > *').forEach(child => {\n          if (!(child instanceof HTMLElement)) return // Skip non-HTMLElements\n\n          // Skip already inert parents\n          if (originals.has(child)) return\n\n          // Skip the interactables, and the parents of the interactables\n          for (let interactable of interactables) {\n            if (child.contains(interactable)) return\n          }\n\n          originals.set(child, {\n            'aria-hidden': child.getAttribute('aria-hidden'),\n            // @ts-expect-error `inert` does not exist on HTMLElement (yet!)\n            inert: child.inert,\n          })\n\n          // Mutate the element\n          inert(child)\n        })\n      } else {\n        for (let element of originals.keys()) {\n          // Restore\n          restore(element)\n\n          // Cleanup\n          originals.delete(element)\n        }\n      }\n    }\n  }, [enabled])\n}\n","import React, {\n  createContext,\n  useContext,\n\n  // Types\n  ReactNode,\n} from 'react'\n\nlet ForcePortalRootContext = createContext(false)\n\nexport function usePortalRoot() {\n  return useContext(ForcePortalRootContext)\n}\n\ninterface ForcePortalRootProps {\n  force: boolean\n  children: ReactNode\n}\n\nexport function ForcePortalRoot(props: ForcePortalRootProps) {\n  return (\n    <ForcePortalRootContext.Provider value={props.force}>\n      {props.children}\n    </ForcePortalRootContext.Provider>\n  )\n}\n","import React, {\n  Fragment,\n  createContext,\n  useContext,\n  useEffect,\n  useState,\n\n  // Types\n  ElementType,\n  MutableRefObject,\n} from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { Props } from '../../types'\nimport { render } from '../../utils/render'\nimport { useIsoMorphicEffect } from '../../hooks/use-iso-morphic-effect'\nimport { usePortalRoot } from '../../internal/portal-force-root'\nimport { useServerHandoffComplete } from '../../hooks/use-server-handoff-complete'\n\nfunction usePortalTarget(): HTMLElement | null {\n  let forceInRoot = usePortalRoot()\n  let groupTarget = useContext(PortalGroupContext)\n  let [target, setTarget] = useState(() => {\n    // Group context is used, but still null\n    if (!forceInRoot && groupTarget !== null) return null\n\n    // No group context is used, let's create a default portal root\n    if (typeof window === 'undefined') return null\n    let existingRoot = document.getElementById('headlessui-portal-root')\n    if (existingRoot) return existingRoot\n\n    let root = document.createElement('div')\n    root.setAttribute('id', 'headlessui-portal-root')\n    return document.body.appendChild(root)\n  })\n\n  useEffect(() => {\n    if (forceInRoot) return\n    if (groupTarget === null) return\n    setTarget(groupTarget.current)\n  }, [groupTarget, setTarget, forceInRoot])\n\n  return target\n}\n\n// ---\n\nlet DEFAULT_PORTAL_TAG = Fragment\ninterface PortalRenderPropArg {}\n\nexport function Portal<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(\n  props: Props<TTag, PortalRenderPropArg>\n) {\n  let passthroughProps = props\n  let target = usePortalTarget()\n  let [element] = useState<HTMLDivElement | null>(() =>\n    typeof window === 'undefined' ? null : document.createElement('div')\n  )\n\n  let ready = useServerHandoffComplete()\n\n  useIsoMorphicEffect(() => {\n    if (!target) return\n    if (!element) return\n\n    target.appendChild(element)\n\n    return () => {\n      if (!target) return\n      if (!element) return\n\n      target.removeChild(element)\n\n      if (target.childNodes.length <= 0) {\n        target.parentElement?.removeChild(target)\n      }\n    }\n  }, [target, element])\n\n  if (!ready) return null\n\n  return !target || !element\n    ? null\n    : createPortal(\n        render({ props: passthroughProps, defaultTag: DEFAULT_PORTAL_TAG, name: 'Portal' }),\n        element\n      )\n}\n\n// ---\n\nlet DEFAULT_GROUP_TAG = Fragment\ninterface GroupRenderPropArg {}\n\nlet PortalGroupContext = createContext<MutableRefObject<HTMLElement | null> | null>(null)\n\nfunction Group<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(\n  props: Props<TTag, GroupRenderPropArg> & {\n    target: MutableRefObject<HTMLElement | null>\n  }\n) {\n  let { target, ...passthroughProps } = props\n\n  return (\n    <PortalGroupContext.Provider value={target}>\n      {render({\n        props: passthroughProps,\n        defaultTag: DEFAULT_GROUP_TAG,\n        name: 'Popover.Group',\n      })}\n    </PortalGroupContext.Provider>\n  )\n}\n\n// ---\n\nPortal.Group = Group\n","import React, {\n  createContext,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n\n  // Types\n  ElementType,\n  ReactNode,\n} from 'react'\n\nimport { Props } from '../../types'\nimport { useId } from '../../hooks/use-id'\nimport { render } from '../../utils/render'\nimport { useIsoMorphicEffect } from '../../hooks/use-iso-morphic-effect'\n\n// ---\n\ninterface SharedData {\n  slot?: {}\n  name?: string\n  props?: {}\n}\n\nlet DescriptionContext = createContext<\n  ({ register(value: string): () => void } & SharedData) | null\n>(null)\n\nfunction useDescriptionContext() {\n  let context = useContext(DescriptionContext)\n  if (context === null) {\n    let err = new Error(\n      'You used a <Description /> component, but it is not inside a relevant parent.'\n    )\n    if (Error.captureStackTrace) Error.captureStackTrace(err, useDescriptionContext)\n    throw err\n  }\n  return context\n}\n\ninterface DescriptionProviderProps extends SharedData {\n  children: ReactNode\n}\n\nexport function useDescriptions(): [\n  string | undefined,\n  (props: DescriptionProviderProps) => JSX.Element\n] {\n  let [descriptionIds, setDescriptionIds] = useState<string[]>([])\n\n  return [\n    // The actual id's as string or undefined\n    descriptionIds.length > 0 ? descriptionIds.join(' ') : undefined,\n\n    // The provider component\n    useMemo(() => {\n      return function DescriptionProvider(props: DescriptionProviderProps) {\n        let register = useCallback((value: string) => {\n          setDescriptionIds(existing => [...existing, value])\n\n          return () =>\n            setDescriptionIds(existing => {\n              let clone = existing.slice()\n              let idx = clone.indexOf(value)\n              if (idx !== -1) clone.splice(idx, 1)\n              return clone\n            })\n        }, [])\n\n        let contextBag = useMemo(\n          () => ({ register, slot: props.slot, name: props.name, props: props.props }),\n          [register, props.slot, props.name, props.props]\n        )\n\n        return (\n          <DescriptionContext.Provider value={contextBag}>\n            {props.children}\n          </DescriptionContext.Provider>\n        )\n      }\n    }, [setDescriptionIds]),\n  ]\n}\n\n// ---\n\nlet DEFAULT_DESCRIPTION_TAG = 'p' as const\ninterface DescriptionRenderPropArg {}\ntype DescriptionPropsWeControl = 'id'\n\nexport function Description<TTag extends ElementType = typeof DEFAULT_DESCRIPTION_TAG>(\n  props: Props<TTag, DescriptionRenderPropArg, DescriptionPropsWeControl>\n) {\n  let context = useDescriptionContext()\n  let id = `headlessui-description-${useId()}`\n\n  useIsoMorphicEffect(() => context.register(id), [id, context.register])\n\n  let passThroughProps = props\n  let propsWeControl = { ...context.props, id }\n\n  return render({\n    props: { ...passThroughProps, ...propsWeControl },\n    slot: context.slot || {},\n    defaultTag: DEFAULT_DESCRIPTION_TAG,\n    name: context.name || 'Description',\n  })\n}\n","import React, {\n  createContext,\n  useCallback,\n  useContext,\n\n  // Types\n  MutableRefObject,\n  ReactNode,\n} from 'react'\nimport { useIsoMorphicEffect } from '../hooks/use-iso-morphic-effect'\n\ntype OnUpdate = (\n  message: StackMessage,\n  type: string,\n  element: MutableRefObject<HTMLElement | null>\n) => void\n\nlet StackContext = createContext<OnUpdate>(() => {})\nStackContext.displayName = 'StackContext'\n\nexport enum StackMessage {\n  Add,\n  Remove,\n}\n\nexport function useStackContext() {\n  return useContext(StackContext)\n}\n\nexport function StackProvider({\n  children,\n  onUpdate,\n  type,\n  element,\n}: {\n  children: ReactNode\n  onUpdate?: OnUpdate\n  type: string\n  element: MutableRefObject<HTMLElement | null>\n}) {\n  let parentUpdate = useStackContext()\n\n  let notify = useCallback(\n    (...args: Parameters<OnUpdate>) => {\n      // Notify our layer\n      onUpdate?.(...args)\n\n      // Notify the parent\n      parentUpdate(...args)\n    },\n    [parentUpdate, onUpdate]\n  )\n\n  useIsoMorphicEffect(() => {\n    notify(StackMessage.Add, type, element)\n    return () => notify(StackMessage.Remove, type, element)\n  }, [notify, type, element])\n\n  return <StackContext.Provider value={notify}>{children}</StackContext.Provider>\n}\n","// WAI-ARIA: https://www.w3.org/TR/wai-aria-practices-1.2/#dialog_modal\nimport React, {\n  createContext,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useReducer,\n  useRef,\n\n  // Types\n  ContextType,\n  ElementType,\n  MouseEvent as ReactMouseEvent,\n  KeyboardEvent as ReactKeyboardEvent,\n  MutableRefObject,\n  Ref,\n  useState,\n} from 'react'\n\nimport { Props } from '../../types'\nimport { match } from '../../utils/match'\nimport { forwardRefWithAs, render, Features, PropsForFeatures } from '../../utils/render'\nimport { useSyncRefs } from '../../hooks/use-sync-refs'\nimport { Keys } from '../keyboard'\nimport { isDisabledReactIssue7711 } from '../../utils/bugs'\nimport { useId } from '../../hooks/use-id'\nimport { useFocusTrap, Features as FocusTrapFeatures } from '../../hooks/use-focus-trap'\nimport { useInertOthers } from '../../hooks/use-inert-others'\nimport { Portal } from '../../components/portal/portal'\nimport { ForcePortalRoot } from '../../internal/portal-force-root'\nimport { Description, useDescriptions } from '../description/description'\nimport { useWindowEvent } from '../../hooks/use-window-event'\nimport { useOpenClosed, State } from '../../internal/open-closed'\nimport { useServerHandoffComplete } from '../../hooks/use-server-handoff-complete'\nimport { StackProvider, StackMessage } from '../../internal/stack-context'\n\nenum DialogStates {\n  Open,\n  Closed,\n}\n\ninterface StateDefinition {\n  titleId: string | null\n}\n\nenum ActionTypes {\n  SetTitleId,\n}\n\ntype Actions = { type: ActionTypes.SetTitleId; id: string | null }\n\nlet reducers: {\n  [P in ActionTypes]: (\n    state: StateDefinition,\n    action: Extract<Actions, { type: P }>\n  ) => StateDefinition\n} = {\n  [ActionTypes.SetTitleId](state, action) {\n    if (state.titleId === action.id) return state\n    return { ...state, titleId: action.id }\n  },\n}\n\nlet DialogContext = createContext<\n  | [\n      {\n        dialogState: DialogStates\n        close(): void\n        setTitleId(id: string | null): void\n      },\n      StateDefinition\n    ]\n  | null\n>(null)\nDialogContext.displayName = 'DialogContext'\n\nfunction useDialogContext(component: string) {\n  let context = useContext(DialogContext)\n  if (context === null) {\n    let err = new Error(`<${component} /> is missing a parent <${Dialog.displayName} /> component.`)\n    if (Error.captureStackTrace) Error.captureStackTrace(err, useDialogContext)\n    throw err\n  }\n  return context\n}\n\nfunction stateReducer(state: StateDefinition, action: Actions) {\n  return match(action.type, reducers, state, action)\n}\n\n// ---\n\nlet DEFAULT_DIALOG_TAG = 'div' as const\ninterface DialogRenderPropArg {\n  open: boolean\n}\ntype DialogPropsWeControl =\n  | 'id'\n  | 'role'\n  | 'aria-modal'\n  | 'aria-describedby'\n  | 'aria-labelledby'\n  | 'onClick'\n\nlet DialogRenderFeatures = Features.RenderStrategy | Features.Static\n\nlet DialogRoot = forwardRefWithAs(function Dialog<\n  TTag extends ElementType = typeof DEFAULT_DIALOG_TAG\n>(\n  props: Props<TTag, DialogRenderPropArg, DialogPropsWeControl> &\n    PropsForFeatures<typeof DialogRenderFeatures> & {\n      open?: boolean\n      onClose(value: boolean): void\n      initialFocus?: MutableRefObject<HTMLElement | null>\n    },\n  ref: Ref<HTMLDivElement>\n) {\n  let { open, onClose, initialFocus, ...rest } = props\n  let [nestedDialogCount, setNestedDialogCount] = useState(0)\n\n  let usesOpenClosedState = useOpenClosed()\n  if (open === undefined && usesOpenClosedState !== null) {\n    // Update the `open` prop based on the open closed state\n    open = match(usesOpenClosedState, {\n      [State.Open]: true,\n      [State.Closed]: false,\n    })\n  }\n\n  let containers = useRef<Set<MutableRefObject<HTMLElement | null>>>(new Set())\n  let internalDialogRef = useRef<HTMLDivElement | null>(null)\n  let dialogRef = useSyncRefs(internalDialogRef, ref)\n\n  // Validations\n  let hasOpen = props.hasOwnProperty('open') || usesOpenClosedState !== null\n  let hasOnClose = props.hasOwnProperty('onClose')\n  if (!hasOpen && !hasOnClose) {\n    throw new Error(\n      `You have to provide an \\`open\\` and an \\`onClose\\` prop to the \\`Dialog\\` component.`\n    )\n  }\n\n  if (!hasOpen) {\n    throw new Error(\n      `You provided an \\`onClose\\` prop to the \\`Dialog\\`, but forgot an \\`open\\` prop.`\n    )\n  }\n\n  if (!hasOnClose) {\n    throw new Error(\n      `You provided an \\`open\\` prop to the \\`Dialog\\`, but forgot an \\`onClose\\` prop.`\n    )\n  }\n\n  if (typeof open !== 'boolean') {\n    throw new Error(\n      `You provided an \\`open\\` prop to the \\`Dialog\\`, but the value is not a boolean. Received: ${open}`\n    )\n  }\n\n  if (typeof onClose !== 'function') {\n    throw new Error(\n      `You provided an \\`onClose\\` prop to the \\`Dialog\\`, but the value is not a function. Received: ${onClose}`\n    )\n  }\n  let dialogState = open ? DialogStates.Open : DialogStates.Closed\n  let visible = (() => {\n    if (usesOpenClosedState !== null) {\n      return usesOpenClosedState === State.Open\n    }\n\n    return dialogState === DialogStates.Open\n  })()\n\n  let [state, dispatch] = useReducer(stateReducer, {\n    titleId: null,\n    descriptionId: null,\n  } as StateDefinition)\n\n  let close = useCallback(() => onClose(false), [onClose])\n\n  let setTitleId = useCallback(\n    (id: string | null) => dispatch({ type: ActionTypes.SetTitleId, id }),\n    [dispatch]\n  )\n\n  let ready = useServerHandoffComplete()\n  let enabled = ready && dialogState === DialogStates.Open\n  let hasNestedDialogs = nestedDialogCount > 1 // 1 is the current dialog\n  let hasParentDialog = useContext(DialogContext) !== null\n\n  // If there are multiple dialogs, then you can be the root, the leaf or one\n  // in between. We only care abou whether you are the top most one or not.\n  let position = !hasNestedDialogs ? 'leaf' : 'parent'\n\n  useFocusTrap(\n    internalDialogRef,\n    enabled\n      ? match(position, {\n          parent: FocusTrapFeatures.RestoreFocus,\n          leaf: FocusTrapFeatures.All,\n        })\n      : FocusTrapFeatures.None,\n    { initialFocus, containers }\n  )\n  useInertOthers(internalDialogRef, hasNestedDialogs ? enabled : false)\n\n  // Handle outside click\n  useWindowEvent('mousedown', event => {\n    let target = event.target as HTMLElement\n\n    if (dialogState !== DialogStates.Open) return\n    if (hasNestedDialogs) return\n    if (internalDialogRef.current?.contains(target)) return\n\n    close()\n  })\n\n  // Scroll lock\n  useEffect(() => {\n    if (dialogState !== DialogStates.Open) return\n    if (hasParentDialog) return\n\n    let overflow = document.documentElement.style.overflow\n    let paddingRight = document.documentElement.style.paddingRight\n\n    let scrollbarWidth = window.innerWidth - document.documentElement.clientWidth\n\n    document.documentElement.style.overflow = 'hidden'\n    document.documentElement.style.paddingRight = `${scrollbarWidth}px`\n\n    return () => {\n      document.documentElement.style.overflow = overflow\n      document.documentElement.style.paddingRight = paddingRight\n    }\n  }, [dialogState, hasParentDialog])\n\n  // Trigger close when the FocusTrap gets hidden\n  useEffect(() => {\n    if (dialogState !== DialogStates.Open) return\n    if (!internalDialogRef.current) return\n\n    let observer = new IntersectionObserver(entries => {\n      for (let entry of entries) {\n        if (\n          entry.boundingClientRect.x === 0 &&\n          entry.boundingClientRect.y === 0 &&\n          entry.boundingClientRect.width === 0 &&\n          entry.boundingClientRect.height === 0\n        ) {\n          close()\n        }\n      }\n    })\n\n    observer.observe(internalDialogRef.current)\n\n    return () => observer.disconnect()\n  }, [dialogState, internalDialogRef, close])\n\n  let [describedby, DescriptionProvider] = useDescriptions()\n\n  let id = `headlessui-dialog-${useId()}`\n\n  let contextBag = useMemo<ContextType<typeof DialogContext>>(\n    () => [{ dialogState, close, setTitleId }, state],\n    [dialogState, state, close, setTitleId]\n  )\n\n  let slot = useMemo<DialogRenderPropArg>(() => ({ open: dialogState === DialogStates.Open }), [\n    dialogState,\n  ])\n\n  let propsWeControl = {\n    ref: dialogRef,\n    id,\n    role: 'dialog',\n    'aria-modal': dialogState === DialogStates.Open ? true : undefined,\n    'aria-labelledby': state.titleId,\n    'aria-describedby': describedby,\n    onClick(event: ReactMouseEvent) {\n      event.stopPropagation()\n    },\n\n    // Handle `Escape` to close\n    onKeyDown(event: ReactKeyboardEvent) {\n      if (event.key !== Keys.Escape) return\n      if (dialogState !== DialogStates.Open) return\n      if (hasNestedDialogs) return\n      event.preventDefault()\n      event.stopPropagation()\n      close()\n    },\n  }\n  let passthroughProps = rest\n\n  return (\n    <StackProvider\n      type=\"Dialog\"\n      element={internalDialogRef}\n      onUpdate={useCallback((message, type, element) => {\n        if (type !== 'Dialog') return\n\n        match(message, {\n          [StackMessage.Add]() {\n            containers.current.add(element)\n            setNestedDialogCount(count => count + 1)\n          },\n          [StackMessage.Remove]() {\n            containers.current.add(element)\n            setNestedDialogCount(count => count - 1)\n          },\n        })\n      }, [])}\n    >\n      <ForcePortalRoot force={true}>\n        <Portal>\n          <DialogContext.Provider value={contextBag}>\n            <Portal.Group target={internalDialogRef}>\n              <ForcePortalRoot force={false}>\n                <DescriptionProvider slot={slot} name=\"Dialog.Description\">\n                  {render({\n                    props: { ...passthroughProps, ...propsWeControl },\n                    slot,\n                    defaultTag: DEFAULT_DIALOG_TAG,\n                    features: DialogRenderFeatures,\n                    visible,\n                    name: 'Dialog',\n                  })}\n                </DescriptionProvider>\n              </ForcePortalRoot>\n            </Portal.Group>\n          </DialogContext.Provider>\n        </Portal>\n      </ForcePortalRoot>\n    </StackProvider>\n  )\n})\n\n// ---\n\nlet DEFAULT_OVERLAY_TAG = 'div' as const\ninterface OverlayRenderPropArg {\n  open: boolean\n}\ntype OverlayPropsWeControl = 'id' | 'aria-hidden' | 'onClick'\n\nlet Overlay = forwardRefWithAs(function Overlay<\n  TTag extends ElementType = typeof DEFAULT_OVERLAY_TAG\n>(props: Props<TTag, OverlayRenderPropArg, OverlayPropsWeControl>, ref: Ref<HTMLDivElement>) {\n  let [{ dialogState, close }] = useDialogContext([Dialog.displayName, Overlay.name].join('.'))\n  let overlayRef = useSyncRefs(ref)\n\n  let id = `headlessui-dialog-overlay-${useId()}`\n\n  let handleClick = useCallback(\n    (event: ReactMouseEvent) => {\n      if (isDisabledReactIssue7711(event.currentTarget)) return event.preventDefault()\n      event.preventDefault()\n      event.stopPropagation()\n      close()\n    },\n    [close]\n  )\n\n  let slot = useMemo<OverlayRenderPropArg>(() => ({ open: dialogState === DialogStates.Open }), [\n    dialogState,\n  ])\n  let propsWeControl = {\n    ref: overlayRef,\n    id,\n    'aria-hidden': true,\n    onClick: handleClick,\n  }\n  let passthroughProps = props\n\n  return render({\n    props: { ...passthroughProps, ...propsWeControl },\n    slot,\n    defaultTag: DEFAULT_OVERLAY_TAG,\n    name: 'Dialog.Overlay',\n  })\n})\n\n// ---\n\nlet DEFAULT_TITLE_TAG = 'h2' as const\ninterface TitleRenderPropArg {\n  open: boolean\n}\ntype TitlePropsWeControl = 'id'\n\nfunction Title<TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(\n  props: Props<TTag, TitleRenderPropArg, TitlePropsWeControl>\n) {\n  let [{ dialogState, setTitleId }] = useDialogContext([Dialog.displayName, Title.name].join('.'))\n\n  let id = `headlessui-dialog-title-${useId()}`\n\n  useEffect(() => {\n    setTitleId(id)\n    return () => setTitleId(null)\n  }, [id, setTitleId])\n\n  let slot = useMemo<TitleRenderPropArg>(() => ({ open: dialogState === DialogStates.Open }), [\n    dialogState,\n  ])\n  let propsWeControl = { id }\n  let passthroughProps = props\n\n  return render({\n    props: { ...passthroughProps, ...propsWeControl },\n    slot,\n    defaultTag: DEFAULT_TITLE_TAG,\n    name: 'Dialog.Title',\n  })\n}\n\n// ---\n\nexport let Dialog = Object.assign(DialogRoot, { Overlay, Title, Description })\n"],"sourceRoot":""}

Zerion Mini Shell 1.0