{"version":3,"file":"carousel-3d.es.mjs","names":["isBrowser","Carousel3d","Slide"],"sources":["../src/carousel-3d/Slide.vue","../src/carousel-3d/core/carousel.js","../src/carousel-3d/mixins/autoplay.js","../src/carousel-3d/Controls.vue","../src/carousel-3d/Dots.vue","../src/carousel-3d/Carousel3d.vue","../src/carousel-3d/index.js"],"sourcesContent":["<template>\r\n\t<div class=\"carousel-3d-slide\" :style=\"slideStyle\" :class=\"computedClasses\" @click=\"goTo()\"\r\n       role=\"group\" aria-roledescription=\"slide\" :aria-hidden=\"String(!isCurrent)\"\r\n       :aria-label=\"slideAriaLabel\">\r\n\t\t<slot v-if=\"shouldRenderContent\" :index=\"index\" :isCurrent=\"isCurrent\" :leftIndex=\"leftIndex\" :rightIndex=\"rightIndex\"/>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\n    export default {\r\n        name: 'slide',\r\n        props: {\r\n            index: {\r\n                type: Number\r\n            }\r\n        },\r\n        inject: ['carousel'],\r\n        data () {\r\n            return {\r\n                styles: {},\r\n                zIndex: 999\r\n            }\r\n        },\r\n        computed: {\r\n            parent () {\r\n                return this.carousel\r\n            },\r\n            isCurrent () {\r\n                return this.index === this.parent.currentIndex\r\n            },\r\n            shouldRenderContent () {\r\n                if (!this.parent.lazy) return true\r\n\r\n                const distance = Math.abs(this.index - this.parent.currentIndex)\r\n                const circularDistance = Math.min(distance, this.parent.total - distance)\r\n                const margin = Math.max(this.parent.visible + 1, 3)\r\n\r\n                return circularDistance <= margin\r\n            },\r\n            slideAriaLabel () {\r\n                return Number.isInteger(this.index) ? `${this.index + 1} of ${this.parent.total}` : undefined\r\n            },\r\n            leftIndex () {\r\n                if (this.parent.oneDirectional && this.getSideIndex(this.parent.leftIndices) > this.parent.currentIndex - 1) return -1;\r\n\r\n                return this.getSideIndex(this.parent.leftIndices)\r\n            },\r\n            rightIndex () {\r\n                if (this.parent.oneDirectional && this.getSideIndex(this.parent.rightIndices) > this.parent.total - this.parent.currentIndex - 2) return -1;\r\n\r\n                return this.getSideIndex(this.parent.rightIndices)\r\n            },\r\n            slideStyle () {\r\n                let styles = {}\r\n\r\n                if (!this.isCurrent) {\r\n                    const lIndex = this.leftIndex\r\n                    const rIndex = this.rightIndex\r\n                    if (rIndex >= 0 || lIndex >= 0) {\r\n                        styles = rIndex >= 0 ? this.calculatePosition(rIndex, true, this.zIndex) : this.calculatePosition(lIndex, false, this.zIndex)\r\n                        styles.opacity = 1\r\n                        styles.visibility = 'visible'\r\n                    }\r\n\r\n                    if (this.parent.hasHiddenSlides) {\r\n                        if (this.matchIndex(this.parent.leftOutIndex)) {\r\n                            styles = this.calculatePosition(this.parent.leftIndices.length - 1, false, this.zIndex)\r\n                        } else if (this.matchIndex(this.parent.rightOutIndex)) {\r\n                            styles = this.calculatePosition(this.parent.rightIndices.length - 1, true, this.zIndex)\r\n                        }\r\n                    }\r\n                }\r\n\r\n                return Object.assign(styles, {\r\n                    'border-width': this.parent.border + 'px',\r\n                    'width': this.parent.slideWidth + 'px',\r\n                    'height': this.parent.slideHeight + 'px',\r\n                    'transition': ' transform ' + this.parent.animationSpeed + 'ms, ' +\r\n                    '               opacity ' + this.parent.animationSpeed + 'ms, ' +\r\n                    '               visibility ' + this.parent.animationSpeed + 'ms'\r\n                })\r\n            },\r\n            computedClasses () {\r\n                return {\r\n                    [`left-${this.leftIndex + 1}`]: this.leftIndex >= 0,\r\n                    [`right-${this.rightIndex + 1}`]: this.rightIndex >= 0,\r\n                    'current': this.isCurrent\r\n                }\r\n            }\r\n        },\r\n        methods: {\r\n            getSideIndex (array) {\r\n                let index = -1\r\n\r\n                array.forEach((pos, i) => {\r\n                    if (this.matchIndex(pos)) {\r\n                        index = i\r\n                    }\r\n                })\r\n\r\n                return index\r\n            },\r\n            matchIndex (index) {\r\n                return (index >= 0) ? this.index === index : (this.parent.total + index) === this.index\r\n            },\r\n            calculatePosition (i, positive, zIndex) {\r\n                const z = !this.parent.disable3d ? parseInt(this.parent.inverseScaling) + ((i + 1) * 100) : 0\r\n                const y = !this.parent.disable3d ? parseInt(this.parent.perspective) : 0\r\n                const leftRemain = (this.parent.space === 'auto')\r\n                    ? parseInt((i + 1) * (this.parent.width / 1.5), 10)\r\n                    : parseInt((i + 1) * (this.parent.space), 10)\r\n                const horizon = this.parent.horizonOffset ? parseInt(this.parent.horizonOffset, 10) * (i + 1) : 0\r\n                const transform = (positive)\r\n                    ? 'translateX(' + (leftRemain) + 'px) translateZ(-' + z + 'px) ' +\r\n                    'rotateY(-' + y + 'deg)' + (horizon ? ' translateY(' + horizon + 'px)' : '')\r\n                    : 'translateX(-' + (leftRemain) + 'px) translateZ(-' + z + 'px) ' +\r\n                    'rotateY(' + y + 'deg)' + (horizon ? ' translateY(' + horizon + 'px)' : '')\r\n                const top = this.parent.space === 'auto' ? 0 : parseInt((i + 1) * (this.parent.space))\r\n\r\n                return {\r\n                    transform: transform,\r\n                    top: top,\r\n                    zIndex: zIndex - (Math.abs(i) + 1)\r\n                }\r\n            },\r\n            goTo () {\r\n                if (!this.isCurrent) {\r\n                    if (this.parent.clickable === true) {\r\n                        this.parent.goFar(this.index)\r\n                    }\r\n                } else {\r\n                    const {index} = this;\r\n                    this.parent.onMainSlideClick({index});\r\n                }\r\n            }\r\n        }\r\n    }\r\n</script>\r\n\r\n<style>\r\n\t.carousel-3d-slide {\r\n\t\tposition: absolute;\r\n\t\topacity: 0;\r\n\t\tvisibility: hidden;\r\n\t\toverflow: hidden;\r\n\t\ttop: 0;\r\n\t\tborder-radius: 1px;\r\n\t\tborder-color: #000;\r\n\t\tborder-color: rgba(0, 0, 0, 0.4);\r\n\t\tborder-style: solid;\r\n\t\tbackground-size: cover;\r\n\t\tbackground-color: #ccc;\r\n\t\tdisplay: block;\r\n\t\tmargin: 0;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t.carousel-3d-slide {\r\n\t\ttext-align: left;\r\n\t}\r\n\r\n\t.carousel-3d-slide img {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t.carousel-3d-slide.current {\r\n\t\topacity: 1 !important;\r\n\t\tvisibility: visible !important;\r\n\t\ttransform: none !important;\r\n\t\tz-index: 999;\r\n\t}\r\n\r\n</style>\r\n","export function getVisibleSlideCount (display, total) {\r\n  return display > total ? total : display\r\n}\r\n\r\nexport function getSideIndices ({ currentIndex, total, visible, bias, dir, side }) {\r\n  let count = (visible - 1) / 2\r\n  const isLeft = side === 'left'\r\n  const prefersExtraSlide = bias.toLowerCase() === side\r\n\r\n  count = prefersExtraSlide ? Math.ceil(count) : Math.floor(count)\r\n\r\n  const indices = []\r\n  for (let position = 1; position <= count; position++) {\r\n    const movesForward = (isLeft && dir === 'ltr') || (!isLeft && dir !== 'ltr')\r\n    indices.push(movesForward\r\n      ? (currentIndex + position) % total\r\n      : (currentIndex - position) % total)\r\n  }\r\n\r\n  return indices\r\n}\r\n\r\nexport function getOutIndex ({ currentIndex, total, visible, bias, dir, side }) {\r\n  const isLeft = side === 'left'\r\n  let offset = (visible - 1) / 2\r\n  const prefersExtraSlide = bias.toLowerCase() === side\r\n\r\n  offset = (prefersExtraSlide ? Math.ceil(offset) : Math.floor(offset)) + 1\r\n\r\n  if ((isLeft && dir === 'ltr') || (!isLeft && dir !== 'ltr')) {\r\n    return (total - currentIndex - offset) <= 0\r\n      ? -parseInt(total - currentIndex - offset, 10)\r\n      : currentIndex + offset\r\n  }\r\n\r\n  return currentIndex - offset\r\n}\r\n\r\nexport function getSafeIndex (index, total) {\r\n  const targetIndex = parseInt(index, 10)\r\n\r\n  return !Number.isFinite(targetIndex) || targetIndex < 0 || targetIndex >= total\r\n    ? 0\r\n    : targetIndex\r\n}\r\n\r\nexport function getStartIndex (index, total) {\r\n  if (total === 0) return 0\r\n\r\n  const startIndex = Math.max(0, parseInt(index, 10) || 0)\r\n  return startIndex > total - 1 ? total - 1 : startIndex\r\n}\r\n","const isBrowser = typeof window !== 'undefined'\r\n\r\nconst autoplay = {\r\n  props: {\r\n    autoplay: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    autoplayTimeout: {\r\n      type: Number,\r\n      default: 2000\r\n    },\r\n    autoplayHoverPause: {\r\n      type: Boolean,\r\n      default: true\r\n    }\r\n  },\r\n  data () {\r\n    return {\r\n      autoplayInterval: null\r\n    }\r\n  },\r\n  mounted () {\r\n    if (!isBrowser) return\r\n\r\n    if (this.autoplayHoverPause) {\r\n      this.$el.addEventListener('mouseenter', this.pauseAutoplay)\r\n      this.$el.addEventListener('mouseleave', this.startAutoplay)\r\n    }\r\n\r\n    this.startAutoplay()\r\n  },\r\n  beforeUnmount () {\r\n    if (!isBrowser) return\r\n\r\n    this.pauseAutoplay()\r\n\r\n    if (this.autoplayHoverPause) {\r\n      this.$el.removeEventListener('mouseenter', this.pauseAutoplay)\r\n      this.$el.removeEventListener('mouseleave', this.startAutoplay)\r\n    }\r\n  },\r\n  methods: {\r\n    pauseAutoplay () {\r\n      if (this.autoplayInterval) {\r\n        clearInterval(this.autoplayInterval)\r\n        this.autoplayInterval = null\r\n      }\r\n    },\r\n    startAutoplay () {\r\n      this.pauseAutoplay()\r\n\r\n      if (this.autoplay) {\r\n        this.autoplayInterval = setInterval(() => {\r\n          this.dir === 'ltr' ? this.goPrev() : this.goNext()\r\n        }, this.autoplayTimeout)\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nexport default autoplay\r\n","<template>\r\n  <div class=\"carousel-3d-controls\">\r\n    <button type=\"button\" class=\"prev\" @click=\"parent.goPrev()\"\r\n       :class=\"{ disabled: !parent.isPrevPossible }\"\r\n       :disabled=\"!parent.isPrevPossible\"\r\n       :style=\"`width: ${width}px; height: ${height}px; line-height: ${height}px;`\"\r\n       aria-label=\"Previous slide\">\r\n      <slot name=\"prev\" :go-prev=\"parent.goPrev\" :disabled=\"!parent.isPrevPossible\">\r\n        <span v-html=\"prevHtml\"></span>\r\n      </slot>\r\n    </button>\r\n    <button type=\"button\" class=\"next\" @click=\"parent.goNext()\"\r\n       :class=\"{ disabled: !parent.isNextPossible }\"\r\n       :disabled=\"!parent.isNextPossible\"\r\n       :style=\"`width: ${width}px; height: ${height}px; line-height: ${height}px;`\"\r\n       aria-label=\"Next slide\">\r\n      <slot name=\"next\" :go-next=\"parent.goNext\" :disabled=\"!parent.isNextPossible\">\r\n        <span v-html=\"nextHtml\"></span>\r\n      </slot>\r\n    </button>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: 'controls',\r\n  props: {\r\n    /**\r\n     * Width in pixels of the navigation buttons\r\n     */\r\n    width: {\r\n      type: [String, Number],\r\n      default: 50\r\n    },\r\n    /**\r\n     * Height in pixels of the navigation buttons\r\n     */\r\n    height: {\r\n      type: [String, Number],\r\n      default: 60\r\n    },\r\n    /**\r\n     * Text content of the navigation prev button\r\n     */\r\n    prevHtml: {\r\n      type: String,\r\n      default: '&lsaquo;'\r\n    },\r\n    /**\r\n     * Text content of the navigation next button\r\n     */\r\n    nextHtml: {\r\n      type: String,\r\n      default: '&rsaquo;'\r\n    }\r\n  },\r\n  inject: ['carousel'],\r\n  computed: {\r\n    parent () {\r\n      return this.carousel\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.carousel-3d-controls {\r\n  position: absolute;\r\n  top: 50%;\r\n  height: 0;\r\n  margin-top: -30px;\r\n  left: 0;\r\n  width: 100%;\r\n  z-index: 1000;\r\n}\r\n\r\n.next, .prev {\r\n  padding: 0;\r\n  border: 0;\r\n  background: transparent;\r\n  width: 60px;\r\n  position: absolute;\r\n  z-index: 1010;\r\n  font-size: 60px;\r\n  height: 60px;\r\n  line-height: 60px;\r\n  color: #333;\r\n  -webkit-user-select: none;\r\n  -moz-user-select: none;\r\n  -ms-user-select: none;\r\n  user-select: none;\r\n  text-decoration: none;\r\n  top: 0;\r\n}\r\n\r\n.next:hover, .prev:hover {\r\n  cursor: pointer;\r\n  opacity: 0.7;\r\n}\r\n\r\n.prev {\r\n  left: 10px;\r\n  text-align: left;\r\n}\r\n\r\n.next {\r\n  right: 10px;\r\n  text-align: right;\r\n}\r\n\r\n.disabled {\r\n  opacity: 0.2;\r\n  cursor: default;\r\n}\r\n\r\n.disabled:hover {\r\n  cursor: default;\r\n  opacity: 0.2;\r\n}\r\n</style>\r\n","<template>\r\n  <div class=\"carousel-3d-dots\" :class=\"`carousel-3d-dots--${position}`\" role=\"group\"\r\n       :aria-label=\"`Slide navigation (${total} slides)`\">\r\n    <button\r\n      v-for=\"i in total\"\r\n      :key=\"i\"\r\n      type=\"button\"\r\n      class=\"carousel-3d-dot\"\r\n      :class=\"{ 'is-active': i - 1 === currentIndex }\"\r\n      :aria-label=\"`Go to slide ${i} of ${total}`\"\r\n      :aria-current=\"i - 1 === currentIndex ? 'true' : undefined\"\r\n      @click=\"parent.goSlide(i - 1)\"\r\n    ></button>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: 'carousel-3d-dots',\r\n  props: {\r\n    position: {\r\n      type: String,\r\n      default: 'bottom'\r\n    }\r\n  },\r\n  inject: ['carousel'],\r\n  computed: {\r\n    parent () {\r\n      return this.carousel\r\n    },\r\n    total () {\r\n      return this.parent.total\r\n    },\r\n    currentIndex () {\r\n      return this.parent.currentIndex\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.carousel-3d-dots {\r\n  position: absolute;\r\n  left: 0;\r\n  width: 100%;\r\n  display: flex;\r\n  justify-content: center;\r\n  gap: 8px;\r\n  z-index: 900;\r\n  pointer-events: none;\r\n}\r\n\r\n.carousel-3d-dots--bottom {\r\n  bottom: 14px;\r\n}\r\n\r\n.carousel-3d-dots--top {\r\n  top: 14px;\r\n}\r\n\r\n.carousel-3d-dot {\r\n  pointer-events: auto;\r\n  width: 10px;\r\n  height: 10px;\r\n  padding: 0;\r\n  border: 0;\r\n  border-radius: 50%;\r\n  background: rgba(0, 0, 0, 0.35);\r\n  cursor: pointer;\r\n  transition: background-color 200ms ease;\r\n}\r\n\r\n.carousel-3d-dot:hover {\r\n  background: rgba(0, 0, 0, 0.55);\r\n}\r\n\r\n.carousel-3d-dot.is-active {\r\n  background: rgba(0, 0, 0, 0.85);\r\n}\r\n</style>\r\n","<template>\r\n  <div class=\"carousel-3d-container\" :style=\"{height: slideHeight + 'px'}\"\r\n       role=\"region\" aria-roledescription=\"carousel\" :aria-label=\"ariaLabel\"\r\n       tabindex=\"0\" @keydown.left.prevent=\"goPrev\" @keydown.right.prevent=\"goNext\">\r\n    <div class=\"carousel-3d-slider\" :style=\"{width: slideWidth + 'px', height: slideHeight + 'px'}\">\r\n      <slot></slot>\r\n    </div>\r\n    <controls v-if=\"controlsVisible\" :next-html=\"controlsNextHtml\" :prev-html=\"controlsPrevHtml\"\r\n              :width=\"controlsWidth\" :height=\"controlsHeight\">\r\n      <template #prev=\"slotProps\">\r\n        <slot name=\"prev\" v-bind=\"slotProps\"></slot>\r\n      </template>\r\n      <template #next=\"slotProps\">\r\n        <slot name=\"next\" v-bind=\"slotProps\"></slot>\r\n      </template>\r\n    </controls>\r\n    <dots v-if=\"dots\" :position=\"dotsPosition\"></dots>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { Comment, Fragment, Text } from 'vue'\r\nimport {\r\n  getOutIndex,\r\n  getSafeIndex,\r\n  getSideIndices,\r\n  getStartIndex,\r\n  getVisibleSlideCount\r\n} from '@/carousel-3d/core/carousel.js'\r\nimport autoplay from '@/carousel-3d/mixins/autoplay.js'\r\nimport Controls from '@/carousel-3d/Controls.vue'\r\nimport Dots from '@/carousel-3d/Dots.vue'\r\n\r\nconst isBrowser = typeof window !== 'undefined'\r\n\r\nconst noop = () => {\r\n}\r\n\r\nfunction countSlides (nodes) {\r\n  return nodes.reduce((count, node) => {\r\n    if (node.type === Fragment && Array.isArray(node.children)) {\r\n      return count + countSlides(node.children)\r\n    }\r\n\r\n    return node.type === Comment || node.type === Text ? count : count + 1\r\n  }, 0)\r\n}\r\n\r\nexport default {\r\n  name: 'carousel3d',\r\n  components: {\r\n    Controls,\r\n    Dots\r\n  },\r\n  emits: ['after-slide-change', 'before-slide-change', 'last-slide'],\r\n  provide () {\r\n    return {\r\n      carousel: this\r\n    }\r\n  },\r\n  props: {\r\n    count: {\r\n      type: [Number, String],\r\n      default: 0\r\n    },\r\n    perspective: {\r\n      type: [Number, String],\r\n      default: 35\r\n    },\r\n    display: {\r\n      type: [Number, String],\r\n      default: 5\r\n    },\r\n    loop: {\r\n      type: Boolean,\r\n      default: true\r\n    },\r\n    animationSpeed: {\r\n      type: [Number, String],\r\n      default: 500\r\n    },\r\n    dir: {\r\n      type: String,\r\n      default: 'rtl'\r\n    },\r\n    width: {\r\n      type: [Number, String],\r\n      default: 360\r\n    },\r\n    height: {\r\n      type: [Number, String],\r\n      default: 270\r\n    },\r\n    border: {\r\n      type: [Number, String],\r\n      default: 1\r\n    },\r\n    space: {\r\n      type: [Number, String],\r\n      default: 'auto'\r\n    },\r\n    startIndex: {\r\n      type: [Number, String],\r\n      default: 0\r\n    },\r\n    clickable: {\r\n      type: Boolean,\r\n      default: true\r\n    },\r\n    disable3d: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    minSwipeDistance: {\r\n      type: Number,\r\n      default: 10\r\n    },\r\n    inverseScaling: {\r\n      type: [Number, String],\r\n      default: 300\r\n    },\r\n    controlsVisible: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    controlsPrevHtml: {\r\n      type: String,\r\n      default: '&lsaquo;'\r\n    },\r\n    controlsNextHtml: {\r\n      type: String,\r\n      default: '&rsaquo;'\r\n    },\r\n    controlsWidth: {\r\n      type: [String, Number],\r\n      default: 50\r\n    },\r\n    controlsHeight: {\r\n      type: [String, Number],\r\n      default: 50\r\n    },\r\n    dots: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    dotsPosition: {\r\n      type: String,\r\n      default: 'bottom'\r\n    },\r\n    horizonOffset: {\r\n      type: [Number, String],\r\n      default: 0\r\n    },\r\n    lazy: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    beforeSlideChange: {\r\n      type: Function,\r\n      default: noop\r\n    },\r\n    onLastSlide: {\r\n      type: Function,\r\n      default: noop\r\n    },\r\n    onSlideChange: {\r\n      type: Function,\r\n      default: noop\r\n    },\r\n    bias: {\r\n      type: String,\r\n      default: 'left'\r\n    },\r\n    onMainSlideClick: {\r\n      type: Function,\r\n      default: noop\r\n    },\r\n    oneDirectional: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    ariaLabel: {\r\n      type: String,\r\n      default: '3D carousel'\r\n    }\r\n  },\r\n  data () {\r\n    return {\r\n      viewport: 0,\r\n      currentIndex: 0,\r\n      total: 0,\r\n      dragOffsetX: 0,\r\n      dragStartX: 0,\r\n      dragOffsetY: 0,\r\n      dragStartY: 0,\r\n      mousedown: false,\r\n      zIndex: 998,\r\n      animationTimer: null,\r\n      navigationTimers: []\r\n    }\r\n  },\r\n  mixins: [\r\n    autoplay\r\n  ],\r\n  watch: {\r\n    count () {\r\n      this.computeData()\r\n    }\r\n  },\r\n  created () {\r\n    this.computeSlideData(true)\r\n  },\r\n  computed: {\r\n    isLastSlide () {\r\n      return this.currentIndex === this.total - 1\r\n    },\r\n    isFirstSlide () {\r\n      return this.currentIndex === 0\r\n    },\r\n    isNextPossible () {\r\n      return this.total > 0 && !(!this.loop && this.isLastSlide)\r\n    },\r\n    isPrevPossible () {\r\n      return this.total > 0 && !(!this.loop && this.isFirstSlide)\r\n    },\r\n    slideWidth () {\r\n      const vw = this.viewport\r\n      const sw = parseInt(this.width) + (parseInt(this.border, 10) * 2)\r\n\r\n      return vw > 0 && vw < sw && isBrowser ? vw : sw\r\n    },\r\n    slideHeight () {\r\n      const sw = parseInt(this.width, 10) + (parseInt(this.border, 10) * 2)\r\n      const sh = parseInt(parseInt(this.height) + (this.border * 2), 10)\r\n      const ar = this.calculateAspectRatio(sw, sh)\r\n\r\n      return this.slideWidth / ar\r\n    },\r\n    visible () {\r\n      return getVisibleSlideCount(this.display, this.total)\r\n    },\r\n    hasHiddenSlides () {\r\n      return this.total > this.visible\r\n    },\r\n    leftIndices () {\r\n      return getSideIndices({\r\n        currentIndex: this.currentIndex,\r\n        total: this.total,\r\n        visible: this.visible,\r\n        bias: this.bias,\r\n        dir: this.dir,\r\n        side: 'left'\r\n      })\r\n    },\r\n    rightIndices () {\r\n      return getSideIndices({\r\n        currentIndex: this.currentIndex,\r\n        total: this.total,\r\n        visible: this.visible,\r\n        bias: this.bias,\r\n        dir: this.dir,\r\n        side: 'right'\r\n      })\r\n    },\r\n    leftOutIndex () {\r\n      return getOutIndex({\r\n        currentIndex: this.currentIndex,\r\n        total: this.total,\r\n        visible: this.visible,\r\n        bias: this.bias,\r\n        dir: this.dir,\r\n        side: 'left'\r\n      })\r\n    },\r\n    rightOutIndex () {\r\n      return getOutIndex({\r\n        currentIndex: this.currentIndex,\r\n        total: this.total,\r\n        visible: this.visible,\r\n        bias: this.bias,\r\n        dir: this.dir,\r\n        side: 'right'\r\n      })\r\n    }\r\n  },\r\n  methods: {\r\n    /**\r\n     * Go to next slide\r\n     */\r\n    goNext () {\r\n      if (this.total > 0 && this.isNextPossible) {\r\n        this.isLastSlide ? this.goSlide(0) : this.goSlide(this.currentIndex + 1)\r\n      }\r\n    },\r\n    /**\r\n     * Go to previous slide\r\n     */\r\n    goPrev () {\r\n      if (this.total > 0 && this.isPrevPossible) {\r\n        this.isFirstSlide ? this.goSlide(this.total - 1) : this.goSlide(this.currentIndex - 1)\r\n      }\r\n    },\r\n    /**\r\n     * Go to slide\r\n     * @param  {String} index of slide where to go\r\n     */\r\n    goSlide (index) {\r\n      if (this.total <= 0) return\r\n\r\n      const targetIndex = getSafeIndex(index, this.total)\r\n\r\n      if (this.beforeSlideChange !== noop && this.beforeSlideChange(targetIndex, this.currentIndex) === false) {\r\n        return\r\n      }\r\n\r\n      this.currentIndex = targetIndex\r\n\r\n      if (this.isLastSlide) {\r\n        if (this.onLastSlide !== noop) {\r\n          console.warn('onLastSlide deprecated, please use @last-slide')\r\n        }\r\n        this.onLastSlide(this.currentIndex)\r\n\r\n        this.$emit('last-slide', this.currentIndex)\r\n      }\r\n\r\n      this.$emit('before-slide-change', this.currentIndex)\r\n\r\n      clearTimeout(this.animationTimer)\r\n      this.animationTimer = setTimeout(() => {\r\n        this.animationTimer = null\r\n        this.animationEnd()\r\n      }, parseInt(this.animationSpeed, 10))\r\n    },\r\n    /**\r\n     * Go to slide far slide\r\n     */\r\n    goFar (index) {\r\n      this.clearNavigationTimers()\r\n\r\n      let diff = (index === this.total - 1 && this.isFirstSlide) ? -1 : (index - this.currentIndex)\r\n\r\n      if (this.isLastSlide && index === 0) {\r\n        diff = 1\r\n      }\r\n\r\n      const diff2 = (diff < 0) ? -diff : diff\r\n      let timeBuff = 0\r\n      let i = 0\r\n\r\n      while (i < diff2) {\r\n        i += 1\r\n        const timeout = (diff2 === 1) ? 0 : (timeBuff)\r\n\r\n        const timer = setTimeout(() => {\r\n          diff < 0 ? this.goPrev() : this.goNext()\r\n        }, timeout)\r\n        this.navigationTimers.push(timer)\r\n\r\n        timeBuff += (this.animationSpeed / (diff2))\r\n      }\r\n    },\r\n    clearNavigationTimers () {\r\n      this.navigationTimers.forEach((timer) => clearTimeout(timer))\r\n      this.navigationTimers = []\r\n    },\r\n    /**\r\n     * Trigger actions when animation ends\r\n     */\r\n    animationEnd () {\r\n      if (this.onSlideChange !== noop) {\r\n        console.warn('onSlideChange deprecated, please use @after-slide-change')\r\n      }\r\n      this.onSlideChange(this.currentIndex)\r\n\r\n      this.$emit('after-slide-change', this.currentIndex)\r\n    },\r\n    /**\r\n     * Trigger actions when mouse is released\r\n     * @param  {Object} e The event object\r\n     */\r\n    handleMouseup () {\r\n      this.mousedown = false\r\n      this.dragOffsetX = 0\r\n      this.dragOffsetY = 0\r\n    },\r\n    /**\r\n     * Trigger actions when mouse is pressed\r\n     * @param  {Object} e The event object\r\n     */\r\n    handleMousedown (e) {\r\n      if (!e.touches && e.cancelable) {\r\n        e.preventDefault()\r\n      }\r\n\r\n      const point = this.getEventPoint(e)\r\n      if (!point) return\r\n\r\n      this.mousedown = true\r\n      this.dragStartX = point.clientX\r\n      this.dragStartY = point.clientY\r\n    },\r\n    /**\r\n     * Trigger actions when mouse is pressed and then moved (mouse drag)\r\n     * @param  {Object} e The event object\r\n     */\r\n    handleMousemove (e) {\r\n      if (!this.mousedown) {\r\n        return\r\n      }\r\n\r\n      const point = this.getEventPoint(e)\r\n      if (!point) return\r\n\r\n      const eventPosX = point.clientX\r\n      const eventPosY = point.clientY\r\n      const deltaX = (this.dragStartX - eventPosX)\r\n      const deltaY = (this.dragStartY - eventPosY)\r\n\r\n      this.dragOffsetX = deltaX\r\n      this.dragOffsetY = deltaY\r\n\r\n      // If the swipe is more significant on the Y axis, do not move the slides because this is a scroll gesture\r\n      if (Math.abs(this.dragOffsetY) > Math.abs(this.dragOffsetX)) {\r\n        return\r\n      }\r\n\r\n      if (this.dragOffsetX > this.minSwipeDistance) {\r\n        this.handleMouseup()\r\n        this.goNext()\r\n      } else if (this.dragOffsetX < -this.minSwipeDistance) {\r\n        this.handleMouseup()\r\n        this.goPrev()\r\n      }\r\n    },\r\n    getEventPoint (e) {\r\n      return (e.touches && e.touches[0]) || (e.changedTouches && e.changedTouches[0]) || e\r\n    },\r\n    addInteractionListeners () {\r\n      if (window.PointerEvent) {\r\n        this.$el.addEventListener('pointerdown', this.handleMousedown)\r\n        this.$el.addEventListener('pointerup', this.handleMouseup)\r\n        this.$el.addEventListener('pointercancel', this.handleMouseup)\r\n        this.$el.addEventListener('pointerleave', this.handleMouseup)\r\n        this.$el.addEventListener('pointermove', this.handleMousemove)\r\n        return\r\n      }\r\n\r\n      this.$el.addEventListener('touchstart', this.handleMousedown)\r\n      this.$el.addEventListener('touchend', this.handleMouseup)\r\n      this.$el.addEventListener('touchcancel', this.handleMouseup)\r\n      this.$el.addEventListener('touchmove', this.handleMousemove)\r\n      this.$el.addEventListener('mousedown', this.handleMousedown)\r\n      this.$el.addEventListener('mouseup', this.handleMouseup)\r\n      this.$el.addEventListener('mouseleave', this.handleMouseup)\r\n      this.$el.addEventListener('mousemove', this.handleMousemove)\r\n    },\r\n    removeInteractionListeners () {\r\n      if (window.PointerEvent) {\r\n        this.$el.removeEventListener('pointerdown', this.handleMousedown)\r\n        this.$el.removeEventListener('pointerup', this.handleMouseup)\r\n        this.$el.removeEventListener('pointercancel', this.handleMouseup)\r\n        this.$el.removeEventListener('pointerleave', this.handleMouseup)\r\n        this.$el.removeEventListener('pointermove', this.handleMousemove)\r\n        return\r\n      }\r\n\r\n      this.$el.removeEventListener('touchstart', this.handleMousedown)\r\n      this.$el.removeEventListener('touchend', this.handleMouseup)\r\n      this.$el.removeEventListener('touchcancel', this.handleMouseup)\r\n      this.$el.removeEventListener('touchmove', this.handleMousemove)\r\n      this.$el.removeEventListener('mousedown', this.handleMousedown)\r\n      this.$el.removeEventListener('mouseup', this.handleMouseup)\r\n      this.$el.removeEventListener('mouseleave', this.handleMouseup)\r\n      this.$el.removeEventListener('mousemove', this.handleMousemove)\r\n    },\r\n    /**\r\n     * A mutation observer is used to detect changes to the containing node\r\n     * in order to keep the magnet container in sync with the height its reference node.\r\n     */\r\n    attachMutationObserver () {\r\n      const MutationObserver = window.MutationObserver ||\r\n          window.WebKitMutationObserver ||\r\n          window.MozMutationObserver\r\n\r\n      if (MutationObserver) {\r\n        const config = {\r\n          childList: true,\r\n          characterData: true,\r\n          subtree: true\r\n        }\r\n\r\n        this.mutationObserver = new MutationObserver(() => {\r\n          this.$nextTick(() => {\r\n            this.computeData()\r\n          })\r\n        })\r\n\r\n        if (this.$el) {\r\n          this.mutationObserver.observe(this.$el, config)\r\n        }\r\n      }\r\n    },\r\n\r\n    detachMutationObserver () {\r\n      if (this.mutationObserver) {\r\n        this.mutationObserver.disconnect()\r\n      }\r\n    },\r\n    /**\r\n     * Get the number of slides\r\n     * @return {Number} Number of slides\r\n     */\r\n    getSlideCount () {\r\n      const defaultSlot = this.$slots.default\r\n      if (!defaultSlot) return 0\r\n\r\n      return countSlides(defaultSlot())\r\n    },\r\n    /**\r\n     * Calculate slide with and keep defined aspect ratio\r\n     * @return {Number} Aspect ratio number\r\n     */\r\n    calculateAspectRatio (width, height) {\r\n      return Math.min(width / height)\r\n    },\r\n    /**\r\n     * Re-compute the number of slides and current slide\r\n     */\r\n    computeSlideData (firstRun) {\r\n      this.total = this.getSlideCount()\r\n      if (this.total === 0) {\r\n        this.currentIndex = 0\r\n        return\r\n      }\r\n\r\n      if (firstRun || this.currentIndex >= this.total) {\r\n        this.currentIndex = getStartIndex(this.startIndex, this.total)\r\n      }\r\n    },\r\n    computeData (firstRun) {\r\n      this.computeSlideData(firstRun)\r\n\r\n      this.viewport = this.$el.clientWidth\r\n    },\r\n    setSize () {\r\n      this.viewport = this.$el.clientWidth\r\n      this.$el.style.height = this.slideHeight + 'px'\r\n      const slider = this.$el.querySelector('.carousel-3d-slider')\r\n      if (slider) {\r\n        slider.style.width = this.slideWidth + 'px'\r\n        slider.style.height = this.slideHeight + 'px'\r\n      }\r\n    }\r\n  },\r\n\r\n  mounted () {\r\n    if (isBrowser) {\r\n      this.computeData(true)\r\n      this.attachMutationObserver()\r\n      window.addEventListener('resize', this.setSize)\r\n\r\n      this.addInteractionListeners()\r\n    }\r\n  },\r\n\r\n  beforeUnmount () {\r\n    if (isBrowser) {\r\n      this.detachMutationObserver()\r\n      this.removeInteractionListeners()\r\n      window.removeEventListener('resize', this.setSize)\r\n    }\r\n\r\n    clearTimeout(this.animationTimer)\r\n    this.clearNavigationTimers()\r\n  }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.carousel-3d-container {\r\n  min-height: 1px;\r\n  width: 100%;\r\n  position: relative;\r\n  z-index: 0;\r\n  overflow: hidden;\r\n  touch-action: pan-y;\r\n  margin: 20px auto;\r\n  box-sizing: border-box;\r\n}\r\n\r\n.carousel-3d-slider {\r\n  position: relative;\r\n  margin: 0 auto;\r\n  transform-style: preserve-3d;\r\n  -webkit-perspective: 1000px;\r\n  -moz-perspective: 1000px;\r\n  perspective: 1000px;\r\n}\r\n\r\n</style>\r\n","import Slide from '@/carousel-3d/Slide.vue'\r\nimport Carousel3d from '@/carousel-3d/Carousel3d.vue'\r\n\r\nconst install = (app) => {\r\n    app.component('carousel3d', Carousel3d)\r\n    app.component('slide', Slide)\r\n}\r\n\r\nexport default {\r\n    install\r\n}\r\n\r\nexport {\r\n    Carousel3d,\r\n    Slide\r\n}\r\n"],"mappings":"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"}