{"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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"}