{"mappings":";gSAqBA,SAASA,EACPC,EAA4B,CAAA,EAC5BC,EAA6B,CAAA,EAAE,CAE/B,IAAMC,EAAgBC,EAAOH,CAAO,EAC9BI,EAAgBD,EAAOF,CAAO,EAC9B,CAACI,EAAUC,CAAW,EAAIC,EAAQ,EAClC,CAACC,EAAUC,CAAW,EAAIF,EAAQ,EAElCG,EAASC,EAAY,IAAK,CAC1BN,GAAUA,EAASK,OAAOR,EAAcU,QAASR,EAAcQ,OAAO,CAC5E,EAAG,CAACP,CAAQ,CAAC,EAEbQ,OAAAA,EAAU,IAAK,CACTC,EAAgBZ,EAAcU,QAASZ,CAAO,IAClDE,EAAcU,QAAUZ,EACxBU,EAAM,EACR,EAAG,CAACV,EAASU,CAAM,CAAC,EAEpBG,EAAU,IAAK,CACTE,EAAgBX,EAAcQ,QAASX,CAAO,IAClDG,EAAcQ,QAAUX,EACxBS,EAAM,EACR,EAAG,CAACT,EAASS,CAAM,CAAC,EAEpBG,EAAU,IAAK,CACb,GAAIG,EAAS,GAAMR,EAAU,CAC3BS,EAAcC,cAAgBnB,EAAiBmB,cAC/C,IAAMC,EAAcF,EAClBT,EACAN,EAAcU,QACdR,EAAcQ,OAAO,EAEvBN,OAAAA,EAAYa,CAAW,EAChB,IAAMA,EAAYC,QAAO,CAClC,MACEd,EAAYe,MAAS,CAEzB,EAAG,CAACb,EAAUF,CAAW,CAAC,EAEnB,CAAuBG,EAAaJ,CAAQ,CACrD,CAMAN,EAAiBmB,cAAgBG","names":["useEmblaCarousel","options","plugins","storedOptions","useRef","storedPlugins","emblaApi","setEmblaApi","useState","viewport","setViewport","reInit","useCallback","current","useEffect","areOptionsEqual","arePluginsEqual","canUseDOM","EmblaCarousel","globalOptions","newEmblaApi","destroy","undefined"],"sources":["../esm/npm/embla-carousel-react@8.6.0/node_modules/embla-carousel-react/src/components/useEmblaCarousel.ts"],"sourcesContent":["import { useRef, useEffect, useState, useCallback } from 'react'\nimport {\n  areOptionsEqual,\n  arePluginsEqual,\n  canUseDOM\n} from 'embla-carousel-reactive-utils'\nimport EmblaCarousel, {\n  EmblaCarouselType,\n  EmblaOptionsType,\n  EmblaPluginType\n} from 'embla-carousel'\n\nexport type EmblaViewportRefType = \u003cViewportElement extends HTMLElement\u003e(\n  instance: ViewportElement | null\n) =\u003e void\n\nexport type UseEmblaCarouselType = [\n  EmblaViewportRefType,\n  EmblaCarouselType | undefined\n]\n\nfunction useEmblaCarousel(\n  options: EmblaOptionsType = {},\n  plugins: EmblaPluginType[] = []\n): UseEmblaCarouselType {\n  const storedOptions = useRef(options)\n  const storedPlugins = useRef(plugins)\n  const [emblaApi, setEmblaApi] = useState\u003cEmblaCarouselType\u003e()\n  const [viewport, setViewport] = useState\u003cHTMLElement\u003e()\n\n  const reInit = useCallback(() =\u003e {\n    if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current)\n  }, [emblaApi])\n\n  useEffect(() =\u003e {\n    if (areOptionsEqual(storedOptions.current, options)) return\n    storedOptions.current = options\n    reInit()\n  }, [options, reInit])\n\n  useEffect(() =\u003e {\n    if (arePluginsEqual(storedPlugins.current, plugins)) return\n    storedPlugins.current = plugins\n    reInit()\n  }, [plugins, reInit])\n\n  useEffect(() =\u003e {\n    if (canUseDOM() \u0026\u0026 viewport) {\n      EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions\n      const newEmblaApi = EmblaCarousel(\n        viewport,\n        storedOptions.current,\n        storedPlugins.current\n      )\n      setEmblaApi(newEmblaApi)\n      return () =\u003e newEmblaApi.destroy()\n    } else {\n      setEmblaApi(undefined)\n    }\n  }, [viewport, setEmblaApi])\n\n  return [\u003cEmblaViewportRefType\u003esetViewport, emblaApi]\n}\n\ndeclare namespace useEmblaCarousel {\n  let globalOptions: EmblaOptionsType | undefined\n}\n\nuseEmblaCarousel.globalOptions = undefined\n\nexport default useEmblaCarousel\n"],"version":3}
