{"version":3,"sources":["../../../src/components/VCarousel/VCarousel.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VCarousel.sass'\n\n// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport VProgressLinear from '../VProgressLinear'\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 { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport default VWindow.extend({\n name: 'v-carousel',\n\n props: {\n continuous: {\n type: Boolean,\n default: true,\n },\n cycle: Boolean,\n delimiterIcon: {\n type: String,\n default: '$vuetify.icons.delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: 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 progress: Boolean,\n progressColor: String,\n showArrows: {\n type: Boolean,\n default: true,\n },\n verticalDelimiters: {\n type: String,\n default: undefined,\n } as PropValidator<'' | 'left' | 'right'>,\n },\n\n data () {\n return {\n internalHeight: this.height,\n slideTimeout: undefined as number | undefined,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-carousel': true,\n 'v-carousel--hide-delimiter-background': this.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': this.isVertical,\n }\n },\n isDark (): boolean {\n return this.dark || !this.light\n },\n isVertical (): boolean {\n return this.verticalDelimiters != null\n },\n },\n\n watch: {\n internalValue: 'restartTimeout',\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 created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('hide-controls')) {\n breaking('hide-controls', ':show-arrows=\"false\"', this)\n }\n },\n\n mounted () {\n this.startTimeout()\n },\n\n methods: {\n genControlIcons () {\n if (this.isVertical) return null\n\n return VWindow.options.methods.genControlIcons.call(this)\n },\n genDelimiters (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-carousel__controls',\n style: {\n left: this.verticalDelimiters === 'left' && this.isVertical ? 0 : 'auto',\n right: this.verticalDelimiters === 'right' ? 0 : 'auto',\n },\n }, [this.genItems()])\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 staticClass: 'v-carousel__controls__item',\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 genProgress () {\n return this.$createElement(VProgressLinear, {\n staticClass: 'v-carousel__progress',\n props: {\n color: this.progressColor,\n value: (this.internalIndex + 1) / this.items.length * 100,\n },\n })\n },\n restartTimeout () {\n this.slideTimeout && clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n\n window.requestAnimationFrame(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 },\n\n render (h): VNode {\n const render = VWindow.options.render.call(this, h)\n\n render.data!.style = `height: ${convertToUnit(this.height)};`\n\n /* istanbul ignore else */\n if (!this.hideDelimiters) {\n render.children!.push(this.genDelimiters())\n }\n\n /* istanbul ignore else */\n if (this.progress || this.progressColor) {\n render.children!.push(this.genProgress())\n }\n\n return render\n },\n})\n"],"sourceRoot":"","file":"VCarousel.js"}