{"version":3,"file":"FlickityCarouselItem-Cw-nzRL_.js","sources":["../../../app/javascript/components/shared/FlickityCarousel.vue","../../../app/javascript/components/shared/FlickityCarouselItem.vue"],"sourcesContent":["<template>\n <div\n ref=\"flickityCarousel\"\n :class=\"\n requiresFlickity\n ? 'flickity-carousel-component'\n : 'mx-3 grid gap-y-6 gap-x-0 sm:gap-6 grid-cols-2 sm:grid-cols-2 md:grid-cols-4'\n \"\n :style=\"cssProps\">\n <slot></slot>\n </div>\n</template>\n\n<script>\nimport Flickity from \"flickity\";\n\nexport default {\n name: \"FlickityCarousel\",\n props: {\n requiresFlickity: {\n type: Boolean,\n default: false\n },\n afterHeightOffset: {\n type: String,\n default: \"40px\"\n },\n buttonOffset: {\n type: String,\n default: \"-3rem\"\n },\n hideArrows: {\n type: Boolean,\n default: false\n },\n flickityId: {\n type: String,\n default: null\n },\n cellAlign: {\n type: String,\n default: \"left\"\n },\n pageDots: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update-selected-elements\"],\n data() {\n return {\n rightGradientOpacity: 1,\n leftGradientOpacity: 0,\n resizeObserver: null\n };\n },\n computed: {\n cssProps() {\n return {\n \"--button-offset\": this.buttonOffset,\n \"--after-height-offset\": this.afterHeightOffset,\n \"--left-carousel\":\n this.hideArrows || !this.requiresFlickity\n ? 0\n : this.leftGradientOpacity,\n \"--right-carousel\":\n this.hideArrows || !this.requiresFlickity\n ? 0\n : this.rightGradientOpacity\n };\n }\n },\n mounted() {\n if (this.requiresFlickity) {\n this.$nextTick(() => {\n this.initCarousel();\n });\n }\n\n window.addEventListener(\"flickityNavigate\", ({ detail }) => {\n const { id, next } = detail;\n\n if (id === this.flickityId) {\n if (next) {\n this.flkty.next();\n } else {\n this.flkty.previous();\n }\n }\n });\n },\n methods: {\n updateSelectedElements() {\n this.$emit(\"update-selected-elements\", this.flkty.selectedElements);\n },\n resizeFlickity() {\n window.dispatchEvent(new Event(\"resize\"));\n },\n initCarousel() {\n const { flickityCarousel } = this.$refs;\n const options = {\n pageDots: this.pageDots,\n contain: true,\n cellAlign: this.cellAlign,\n groupCells: true,\n imagesLoaded: true,\n prevNextButtons: !this.hideArrows,\n cellSelector: \".carousel-cell\",\n arrowShape:\n \"M2.896 52.164A4.716 4.716 0 0 1 .6 48a4.716 4.716 0 0 1 2.292-4.164l41.82-42.464a4.572 4.572 0 0 1 6.536 0c1.8 1.832 1.8 4.804 0 6.636L11.86 48l39.388 39.992c1.8 1.832 1.8 4.8 0 6.636a4.572 4.572 0 0 1-6.536 0L2.896 52.16v.004z\",\n\n // These events work around ios 11.3+ bug\n // https://github.com/metafizzy/flickity/issues/740\n on: {\n dragStart() {\n document.ontouchmove = e => {\n e.preventDefault();\n };\n },\n\n dragEnd() {\n document.ontouchmove = () => {\n return true;\n };\n }\n }\n };\n this.flkty = new Flickity(flickityCarousel, options);\n this.flkty.resize();\n this.updateSelectedElements();\n this.flkty.on(\"dragStart\", () => {\n this.flkty.slider.style.pointerEvents = \"none\";\n });\n this.flkty.on(\"dragEnd\", () => {\n this.flkty.slider.style.pointerEvents = \"auto\";\n });\n this.flkty.on(\"change\", index => {\n const maxSlides = this.flkty.slides.length;\n const currentSlide = index + 1;\n this.updateSelectedElements();\n\n switch (true) {\n case currentSlide === 1:\n this.leftGradientOpacity = 0;\n this.rightGradientOpacity = 1;\n break;\n case currentSlide === maxSlides:\n this.leftGradientOpacity = 1;\n this.rightGradientOpacity = 0;\n break;\n case currentSlide < maxSlides && currentSlide !== 1:\n this.leftGradientOpacity = 1;\n this.rightGradientOpacity = 1;\n break;\n default:\n this.leftGradientOpacity = 0;\n this.rightGradientOpacity = 1;\n break;\n }\n });\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n.flickity-carousel-component {\n &:after {\n bottom: 0;\n left: 0;\n position: absolute;\n height: calc(100% - var(--after-height-offset));\n width: 100%;\n content: \"\";\n pointer-events: none;\n background: linear-gradient(\n to left,\n rgba(#faf7f0, var(--right-carousel)) 0%,\n rgba(255, 255, 255, 0) 10%,\n rgba(255, 255, 255, 0) 90%,\n rgba(#faf7f0, var(--left-carousel)) 100%\n );\n display: none;\n\n @media screen and (min-width: $screen-md-min) {\n display: block;\n }\n }\n\n .flickity-prev-next-button {\n &.next {\n right: var(--button-offset) !important;\n }\n\n &.previous {\n left: var(--button-offset) !important;\n }\n }\n}\n</style>\n","<template>\n <div\n class=\"flex flex-col slider-item carousel-cell w-1/2 md:w-1/3 lg:w-1/4\"\n :style=\"styles\">\n <slot></slot>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"FlickityCarouselItem\",\n props: {\n maxWidth: {\n type: String,\n default: \"25%\"\n },\n mobileMinWidth: {\n type: String,\n default: \"100%\"\n },\n lgMinWidth: {\n type: String,\n default: \"21.8%\"\n },\n mdMinWidth: {\n type: String,\n default: \"29%\"\n },\n smMinWidth: {\n type: String,\n default: \"40%\"\n },\n flickityId: {\n type: String,\n default: null\n }\n },\n data() {\n return {\n height: null\n };\n },\n computed: {\n cssProps() {\n return {\n \"--mobile-min-width\": `${this.mobileMinWidth}`,\n \"--max-width\": `${this.maxWidth}`,\n \"--lg-min-width\": `${this.lgMinWidth}`,\n \"--sm-min-width\": `${this.smMinWidth}`,\n \"--md-min-width\": `${this.mdMinWidth}`\n };\n },\n heightStyle() {\n if (!this.height) {\n return {};\n }\n\n return {\n height: `${this.height}px`\n };\n },\n styles() {\n return {\n ...this.cssProps,\n ...this.heightStyle\n };\n }\n },\n mounted() {\n window.addEventListener(\"setCellHeights\", e => {\n if (e.detail.id === this.flickityId) {\n this.height = e.detail.height;\n }\n });\n }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.slider-item {\n min-width: var(--mobile-min-width);\n max-width: var(--max-width);\n width: var(--max-width);\n\n @media (min-width: $screen-sm-min) {\n min-width: var(--sm-min-width);\n }\n @media (min-width: $screen-md-min) {\n min-width: var(--md-min-width);\n }\n @media (min-width: $screen-lg-min) {\n min-width: var(--lg-min-width);\n }\n}\n</style>\n"],"names":["_sfc_main","detail","id","next","flickityCarousel","options","Flickity","index","maxSlides","currentSlide","_createElementBlock","_normalizeClass","$props","_normalizeStyle","$options","_renderSlot","_ctx","e"],"mappings":"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"}