{"version":3,"sources":["../../../src/components/VWindow/VWindow.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n  name: 'v-window',\n\n  directives: { Touch },\n\n  provide (): object {\n    return {\n      windowGroup: this,\n    }\n  },\n\n  props: {\n    activeClass: {\n      type: String,\n      default: 'v-window-item--active',\n    },\n    continuous: Boolean,\n    mandatory: {\n      type: Boolean,\n      default: true,\n    },\n    nextIcon: {\n      type: [Boolean, String],\n      default: '$next',\n    },\n    prevIcon: {\n      type: [Boolean, String],\n      default: '$prev',\n    },\n    reverse: Boolean,\n    showArrows: Boolean,\n    showArrowsOnHover: Boolean,\n    touch: Object as PropType<TouchHandlers>,\n    touchless: Boolean,\n    value: {\n      required: false,\n    },\n    vertical: Boolean,\n  },\n\n  data () {\n    return {\n      changedByDelimiters: false,\n      internalHeight: undefined as undefined | string, // This can be fixed by child class.\n      transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n      transitionCount: 0, // Number of windows in transition state.\n      isBooted: false,\n      isReverse: false,\n    }\n  },\n\n  computed: {\n    isActive (): boolean {\n      return this.transitionCount > 0\n    },\n    classes (): object {\n      return {\n        ...BaseItemGroup.options.computed.classes.call(this),\n        'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n      }\n    },\n    computedTransition (): string {\n      if (!this.isBooted) return ''\n\n      const axis = this.vertical ? 'y' : 'x'\n      const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n      const direction = reverse ? '-reverse' : ''\n\n      return `v-window-${axis}${direction}-transition`\n    },\n    hasActiveItems (): boolean {\n      return Boolean(\n        this.items.find(item => !item.disabled)\n      )\n    },\n    hasNext (): boolean {\n      return this.continuous || this.internalIndex < this.items.length - 1\n    },\n    hasPrev (): boolean {\n      return this.continuous || this.internalIndex > 0\n    },\n    internalIndex (): number {\n      return this.items.findIndex((item, i) => {\n        return this.internalValue === this.getValue(item, i)\n      })\n    },\n    internalReverse (): boolean {\n      return this.$vuetify.rtl ? !this.reverse : this.reverse\n    },\n  },\n\n  watch: {\n    internalIndex (val, oldVal) {\n      this.isReverse = this.updateReverse(val, oldVal)\n    },\n  },\n\n  mounted () {\n    window.requestAnimationFrame(() => (this.isBooted = true))\n  },\n\n  methods: {\n    genDefaultSlot () {\n      return getSlot(this)\n    },\n    genContainer (): VNode {\n      const children = [this.genDefaultSlot()]\n\n      if (this.showArrows) {\n        children.push(this.genControlIcons())\n      }\n\n      return this.$createElement('div', {\n        staticClass: 'v-window__container',\n        class: {\n          'v-window__container--is-active': this.isActive,\n        },\n        style: {\n          height: this.internalHeight || this.transitionHeight,\n        },\n      }, children)\n    },\n    genIcon (\n      direction: 'prev' | 'next',\n      icon: string,\n      click: () => void\n    ) {\n      const on = {\n        click: (e: Event) => {\n          e.stopPropagation()\n          this.changedByDelimiters = true\n          click()\n        },\n      }\n      const attrs = {\n        'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n      }\n      const children = this.$scopedSlots[direction]?.({\n        on,\n        attrs,\n      }) ?? [this.$createElement(VBtn, {\n        props: { icon: true },\n        attrs,\n        on,\n      }, [\n        this.$createElement(VIcon, {\n          props: { large: true },\n        }, icon),\n      ])]\n\n      return this.$createElement('div', {\n        staticClass: `v-window__${direction}`,\n      }, children)\n    },\n    genControlIcons () {\n      const icons = []\n\n      const prevIcon = this.$vuetify.rtl\n        ? this.nextIcon\n        : this.prevIcon\n\n      /* istanbul ignore else */\n      if (\n        this.hasPrev &&\n        prevIcon &&\n        typeof prevIcon === 'string'\n      ) {\n        const icon = this.genIcon('prev', prevIcon, this.prev)\n        icon && icons.push(icon)\n      }\n\n      const nextIcon = this.$vuetify.rtl\n        ? this.prevIcon\n        : this.nextIcon\n\n      /* istanbul ignore else */\n      if (\n        this.hasNext &&\n        nextIcon &&\n        typeof nextIcon === 'string'\n      ) {\n        const icon = this.genIcon('next', nextIcon, this.next)\n        icon && icons.push(icon)\n      }\n\n      return icons\n    },\n    getNextIndex (index: number): number {\n      const nextIndex = (index + 1) % this.items.length\n      const item = this.items[nextIndex]\n\n      if (item.disabled) return this.getNextIndex(nextIndex)\n\n      return nextIndex\n    },\n    getPrevIndex (index: number): number {\n      const prevIndex = (index + this.items.length - 1) % this.items.length\n      const item = this.items[prevIndex]\n\n      if (item.disabled) return this.getPrevIndex(prevIndex)\n\n      return prevIndex\n    },\n    next () {\n      /* istanbul ignore if */\n      if (!this.hasActiveItems || !this.hasNext) return\n\n      const nextIndex = this.getNextIndex(this.internalIndex)\n      const item = this.items[nextIndex]\n\n      this.internalValue = this.getValue(item, nextIndex)\n    },\n    prev () {\n      /* istanbul ignore if */\n      if (!this.hasActiveItems || !this.hasPrev) return\n\n      const lastIndex = this.getPrevIndex(this.internalIndex)\n      const item = this.items[lastIndex]\n\n      this.internalValue = this.getValue(item, lastIndex)\n    },\n    updateReverse (val: number, oldVal: number) {\n      const itemsLength = this.items.length\n      const lastIndex = itemsLength - 1\n\n      if (itemsLength <= 2) return val < oldVal\n\n      if (val === lastIndex && oldVal === 0) {\n        return true\n      } else if (val === 0 && oldVal === lastIndex) {\n        return false\n      } else {\n        return val < oldVal\n      }\n    },\n  },\n\n  render (h): VNode {\n    const data = {\n      staticClass: 'v-window',\n      class: this.classes,\n      directives: [] as VNodeDirective[],\n    }\n\n    if (!this.touchless) {\n      const value = this.touch || {\n        left: () => {\n          this.$vuetify.rtl ? this.prev() : this.next()\n        },\n        right: () => {\n          this.$vuetify.rtl ? this.next() : this.prev()\n        },\n        end: (e: TouchEvent) => {\n          e.stopPropagation()\n        },\n        start: (e: TouchEvent) => {\n          e.stopPropagation()\n        },\n      }\n\n      data.directives.push({\n        name: 'touch',\n        value,\n      })\n    }\n\n    return h('div', data, [this.genContainer()])\n  },\n})\n"],"sourceRoot":"","file":"VWindow.js"}