{"version":3,"sources":["../../../src/components/VCarousel/VCarousel.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport '../../stylus/components/_carousel.styl'\n\n// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\n// TODO: Move this into core components v2.0\nimport ButtonGroup from '../../mixins/button-group'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { deprecate } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { VNodeDirective } from 'vue/types/vnode'\n\nexport default VWindow.extend({\n  name: 'v-carousel',\n\n  props: {\n    cycle: {\n      type: Boolean,\n      default: true\n    },\n    delimiterIcon: {\n      type: String,\n      default: '$vuetify.icons.delimiter'\n    },\n    height: {\n      type: [Number, String],\n      default: 500\n    },\n    hideControls: Boolean,\n    hideDelimiters: Boolean,\n    interval: {\n      type: [Number, String],\n      default: 6000,\n      validator: (value: string | number) => value > 0\n    },\n    mandatory: {\n      type: Boolean,\n      default: true\n    },\n    nextIcon: {\n      type: [Boolean, String],\n      default: '$vuetify.icons.next'\n    },\n    prevIcon: {\n      type: [Boolean, String],\n      default: '$vuetify.icons.prev'\n    }\n  },\n\n  data () {\n    return {\n      changedByDelimiters: false,\n      internalHeight: this.height,\n      slideTimeout: undefined as number | undefined\n    }\n  },\n\n  computed: {\n    isDark (): boolean {\n      return this.dark || !this.light\n    }\n  },\n\n  watch: {\n    internalValue (val) {\n      this.restartTimeout()\n      /* @deprecate */\n      /* istanbul ignore else */\n      if (!this.$listeners['input']) return\n\n      this.$emit('input', val)\n    },\n    interval: 'restartTimeout',\n    height (val, oldVal) {\n      if (val === oldVal || !val) return\n      this.internalHeight = val\n    },\n    cycle (val) {\n      if (val) {\n        this.restartTimeout()\n      } else {\n        clearTimeout(this.slideTimeout)\n        this.slideTimeout = undefined\n      }\n    }\n  },\n\n  mounted () {\n    /* @deprecate */\n    /* istanbul ignore next */\n    if (this.$listeners['input']) {\n      deprecate('@input', '@change', this)\n    }\n    this.startTimeout()\n  },\n\n  methods: {\n    genDelimiters (): VNode {\n      return this.$createElement('div', {\n        staticClass: 'v-carousel__controls'\n      }, [this.genItems()])\n    },\n    genIcon (\n      direction: 'prev' | 'next',\n      icon: string,\n      fn: () => void\n    ): VNode {\n      return this.$createElement('div', {\n        staticClass: `v-carousel__${direction}`\n      }, [\n        this.$createElement(VBtn, {\n          props: {\n            icon: true\n          },\n          attrs: {\n            'aria-label': this.$vuetify.t(`$vuetify.carousel.${direction}`)\n          },\n          on: {\n            click: () => {\n              this.changedByDelimiters = true\n              fn()\n            }\n          }\n        }, [\n          this.$createElement(VIcon, {\n            props: { 'size': '46px' }\n          }, icon)\n        ])\n      ])\n    },\n    genIcons (): VNode[] {\n      const icons = []\n\n      const prevIcon = this.$vuetify.rtl\n        ? this.nextIcon\n        : this.prevIcon\n\n      if (prevIcon && typeof prevIcon === 'string') {\n        icons.push(this.genIcon('prev', prevIcon, this.prev))\n      }\n\n      const nextIcon = this.$vuetify.rtl\n        ? this.prevIcon\n        : this.nextIcon\n\n      if (nextIcon && typeof nextIcon === 'string') {\n        icons.push(this.genIcon('next', nextIcon, this.next))\n      }\n\n      return icons\n    },\n    genItems (): VNode {\n      const length = this.items.length\n      const children = []\n\n      for (let i = 0; i < length; i++) {\n        const child = this.$createElement(VBtn, {\n          class: {\n            'v-carousel__controls__item': true\n          },\n          props: {\n            icon: true,\n            small: true,\n            value: this.getValue(this.items[i], i)\n          }\n        }, [\n          this.$createElement(VIcon, {\n            props: { size: 18 }\n          }, this.delimiterIcon)\n        ])\n\n        children.push(child)\n      }\n\n      return this.$createElement(ButtonGroup, {\n        props: {\n          value: this.internalValue\n        },\n        on: {\n          change: (val: any) => {\n            this.internalValue = val\n          }\n        }\n      }, children)\n    },\n    restartTimeout () {\n      this.slideTimeout && clearTimeout(this.slideTimeout)\n      this.slideTimeout = undefined\n\n      const raf = requestAnimationFrame || setTimeout\n      raf(this.startTimeout)\n    },\n    startTimeout () {\n      if (!this.cycle) return\n\n      this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000)\n    },\n    updateReverse (val: number, oldVal: number) {\n      if (this.changedByDelimiters) {\n        this.changedByDelimiters = false\n        return\n      }\n\n      VWindow.options.methods.updateReverse.call(this, val, oldVal)\n    }\n  },\n\n  render (h): VNode {\n    const children = []\n    const data = {\n      staticClass: 'v-window v-carousel',\n      style: {\n        height: convertToUnit(this.height)\n      },\n      directives: [] as VNodeDirective[]\n    }\n\n    if (!this.touchless) {\n      data.directives.push({\n        name: 'touch',\n        value: {\n          left: this.next,\n          right: this.prev\n        }\n      } as VNodeDirective)\n    }\n\n    if (!this.hideControls) {\n      children.push(this.genIcons())\n    }\n\n    if (!this.hideDelimiters) {\n      children.push(this.genDelimiters())\n    }\n\n    return h('div', data, [this.genContainer(), children])\n  }\n})\n"],"sourceRoot":""}