{"version":3,"sources":["../../../src/components/VWindow/VWindowItem.ts"],"names":[],"mappings":"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","sourcesContent":["// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\n\ntype VBaseWindow = InstanceType<typeof VWindow>\n\ninterface options extends Vue {\n  $el: HTMLElement\n  windowGroup: VBaseWindow\n}\n\nexport default mixins<options & ExtractVue<[typeof Bootable]>>(\n  Bootable,\n  GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n  /* @vue/component */\n).extend({\n  name: 'v-window-item',\n\n  directives: {\n    Touch\n  },\n\n  props: {\n    reverseTransition: {\n      type: [Boolean, String],\n      default: undefined\n    },\n    transition: {\n      type: [Boolean, String],\n      default: undefined\n    },\n    value: {\n      required: false\n    }\n  },\n\n  data () {\n    return {\n      done: null as null | (() => void),\n      isActive: false,\n      wasCancelled: false\n    }\n  },\n\n  computed: {\n    computedTransition (): string | boolean {\n      if (!this.windowGroup.internalReverse) {\n        return typeof this.transition !== 'undefined'\n          ? this.transition || ''\n          : this.windowGroup.computedTransition\n      }\n\n      return typeof this.reverseTransition !== 'undefined'\n        ? this.reverseTransition || ''\n        : this.windowGroup.computedTransition\n    }\n  },\n\n  mounted () {\n    this.$el.addEventListener('transitionend', this.onTransitionEnd, false)\n  },\n\n  beforeDestroy () {\n    this.$el.removeEventListener('transitionend', this.onTransitionEnd, false)\n  },\n\n  methods: {\n    genDefaultSlot () {\n      return this.$slots.default\n    },\n    onAfterEnter () {\n      if (this.wasCancelled) {\n        this.wasCancelled = false\n        return\n      }\n\n      requestAnimationFrame(() => {\n        this.windowGroup.internalHeight = undefined\n        this.windowGroup.isActive = false\n      })\n    },\n    onBeforeEnter () {\n      this.windowGroup.isActive = true\n    },\n    onLeave (el: HTMLElement) {\n      this.windowGroup.internalHeight = convertToUnit(el.clientHeight)\n    },\n    onEnterCancelled () {\n      this.wasCancelled = true\n    },\n    onEnter (el: HTMLElement, done: () => void) {\n      const isBooted = this.windowGroup.isBooted\n\n      if (isBooted) this.done = done\n\n      requestAnimationFrame(() => {\n        if (!this.computedTransition) return done()\n\n        this.windowGroup.internalHeight = convertToUnit(el.clientHeight)\n\n        // On initial render, there is no transition\n        // Vue leaves a `enter` transition class\n        // if done is called too fast\n        !isBooted && setTimeout(done, 100)\n      })\n    },\n    onTransitionEnd (e: TransitionEvent) {\n      // This ensures we only call done\n      // when the element transform\n      // completes\n      if (\n        e.propertyName !== 'transform' ||\n        e.target !== this.$el ||\n        !this.done\n      ) return\n\n      this.done()\n      this.done = null\n    }\n  },\n\n  render (h): VNode {\n    const div = h('div', {\n      staticClass: 'v-window-item',\n      directives: [{\n        name: 'show',\n        value: this.isActive\n      }],\n      on: this.$listeners\n    }, this.showLazyContent(this.genDefaultSlot()))\n\n    return h('transition', {\n      props: {\n        name: this.computedTransition\n      },\n      on: {\n        afterEnter: this.onAfterEnter,\n        beforeEnter: this.onBeforeEnter,\n        leave: this.onLeave,\n        enter: this.onEnter,\n        enterCancelled: this.onEnterCancelled\n      }\n    }, [div])\n  }\n})\n"],"sourceRoot":""}