{"version":3,"file":"embla-carousel-auto-height.esm.js","sources":["../src/components/AutoHeight.ts"],"sourcesContent":["import { OptionsType } from './Options'\nimport {\n EmblaEventType,\n CreatePluginType,\n EmblaCarouselType\n} from 'embla-carousel'\n\ndeclare module 'embla-carousel' {\n interface EmblaPluginsType {\n autoHeight: AutoHeightType\n }\n}\n\nexport type AutoHeightType = CreatePluginType<{}, OptionsType>\n\nexport type AutoHeightOptionsType = AutoHeightType['options']\n\nfunction AutoHeight(userOptions: AutoHeightOptionsType = {}): AutoHeightType {\n let emblaApi: EmblaCarouselType\n let slideHeights: number[] = []\n const heightEvents: EmblaEventType[] = ['select', 'slideFocus']\n\n function init(emblaApiInstance: EmblaCarouselType): void {\n emblaApi = emblaApiInstance\n\n const {\n options: { axis },\n slideRects\n } = emblaApi.internalEngine()\n\n if (axis === 'y') return\n\n slideHeights = slideRects.map((slideRect) => slideRect.height)\n\n heightEvents.forEach((evt) => emblaApi.on(evt, setContainerHeight))\n setContainerHeight()\n }\n\n function destroy(): void {\n heightEvents.forEach((evt) => emblaApi.off(evt, setContainerHeight))\n const container = emblaApi.containerNode()\n container.style.height = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n function highestInView(): number | null {\n const { slideRegistry } = emblaApi.internalEngine()\n const selectedIndexes = slideRegistry[emblaApi.selectedScrollSnap()]\n\n if (!selectedIndexes) return null\n\n return selectedIndexes\n .map((index) => slideHeights[index])\n .reduce((a, b) => Math.max(a, b), 0)\n }\n\n function setContainerHeight(): void {\n const height = highestInView()\n if (height === null) return\n\n emblaApi.containerNode().style.height = `${highestInView()}px`\n }\n\n const self: AutoHeightType = {\n name: 'autoHeight',\n options: userOptions,\n init,\n destroy\n }\n return self\n}\n\ndeclare namespace AutoHeight {\n let globalOptions: AutoHeightOptionsType | undefined\n}\n\nAutoHeight.globalOptions = undefined\n\nexport default AutoHeight\n"],"names":["AutoHeight","userOptions","emblaApi","slideHeights","heightEvents","init","emblaApiInstance","options","axis","slideRects","internalEngine","map","slideRect","height","forEach","evt","on","setContainerHeight","destroy","off","container","containerNode","style","getAttribute","removeAttribute","highestInView","slideRegistry","selectedIndexes","selectedScrollSnap","index","reduce","a","b","Math","max","self","name","globalOptions","undefined"],"mappings":"AAiBA,SAASA,UAAUA,CAACC,WAAA,GAAqC,EAAE,EAAA;AACzD,EAAA,IAAIC,QAA2B;EAC/B,IAAIC,YAAY,GAAa,EAAE;AAC/B,EAAA,MAAMC,YAAY,GAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC;EAE/D,SAASC,IAAIA,CAACC,gBAAmC,EAAA;AAC/CJ,IAAAA,QAAQ,GAAGI,gBAAgB;IAE3B,MAAM;AACJC,MAAAA,OAAO,EAAE;AAAEC,QAAAA;OAAM;AACjBC,MAAAA;AAAU,KACX,GAAGP,QAAQ,CAACQ,cAAc,EAAE;IAE7B,IAAIF,IAAI,KAAK,GAAG,EAAE;IAElBL,YAAY,GAAGM,UAAU,CAACE,GAAG,CAAEC,SAAS,IAAKA,SAAS,CAACC,MAAM,CAAC;AAE9DT,IAAAA,YAAY,CAACU,OAAO,CAAEC,GAAG,IAAKb,QAAQ,CAACc,EAAE,CAACD,GAAG,EAAEE,kBAAkB,CAAC,CAAC;AACnEA,IAAAA,kBAAkB,EAAE;AACtB;EAEA,SAASC,OAAOA,GAAA;AACdd,IAAAA,YAAY,CAACU,OAAO,CAAEC,GAAG,IAAKb,QAAQ,CAACiB,GAAG,CAACJ,GAAG,EAAEE,kBAAkB,CAAC,CAAC;AACpE,IAAA,MAAMG,SAAS,GAAGlB,QAAQ,CAACmB,aAAa,EAAE;AAC1CD,IAAAA,SAAS,CAACE,KAAK,CAACT,MAAM,GAAG,EAAE;AAC3B,IAAA,IAAI,CAACO,SAAS,CAACG,YAAY,CAAC,OAAO,CAAC,EAAEH,SAAS,CAACI,eAAe,CAAC,OAAO,CAAC;AAC1E;EAEA,SAASC,aAAaA,GAAA;IACpB,MAAM;AAAEC,MAAAA;AAAe,KAAA,GAAGxB,QAAQ,CAACQ,cAAc,EAAE;IACnD,MAAMiB,eAAe,GAAGD,aAAa,CAACxB,QAAQ,CAAC0B,kBAAkB,EAAE,CAAC;AAEpE,IAAA,IAAI,CAACD,eAAe,EAAE,OAAO,IAAI;AAEjC,IAAA,OAAOA,eAAe,CACnBhB,GAAG,CAAEkB,KAAK,IAAK1B,YAAY,CAAC0B,KAAK,CAAC,CAAC,CACnCC,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKC,IAAI,CAACC,GAAG,CAACH,CAAC,EAAEC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC;EAEA,SAASf,kBAAkBA,GAAA;AACzB,IAAA,MAAMJ,MAAM,GAAGY,aAAa,EAAE;IAC9B,IAAIZ,MAAM,KAAK,IAAI,EAAE;AAErBX,IAAAA,QAAQ,CAACmB,aAAa,EAAE,CAACC,KAAK,CAACT,MAAM,GAAG,CAAA,EAAGY,aAAa,EAAE,CAAI,EAAA,CAAA;AAChE;AAEA,EAAA,MAAMU,IAAI,GAAmB;AAC3BC,IAAAA,IAAI,EAAE,YAAY;AAClB7B,IAAAA,OAAO,EAAEN,WAAW;IACpBI,IAAI;AACJa,IAAAA;GACD;AACD,EAAA,OAAOiB,IAAI;AACb;AAMAnC,UAAU,CAACqC,aAAa,GAAGC,SAAS;;;;"}