| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <template>
- <div
- class="base-element-video screen-element-video"
- :style="{
- top: elementInfo.top + 'px',
- left: elementInfo.left + 'px',
- width: elementInfo.width + 'px',
- height: elementInfo.height + 'px'
- }"
- >
- <div class="rotate-wrapper" :style="{ transform: `rotate(${elementInfo.rotate}deg)` }">
- <div class="element-content">
- <VideoPlayer
- v-if="inCurrentSlide"
- :width="elementInfo.width"
- :height="elementInfo.height"
- :src="elementInfo.src"
- :poster="elementInfo.poster"
- :autoplay="elementInfo.autoplay"
- :scale="scale"
- :needWaitAnimation="needWaitAnimation"
- />
- </div>
- </div>
- </div>
- </template>
- <script lang="ts" setup>
- import { computed, inject, ref } from "vue"
- import { storeToRefs } from "pinia"
- import { useSlidesStore } from "@/store"
- import type { PPTVideoElement } from "@/types/slides"
- import { injectKeySlideId, injectKeySlideScale } from "@/types/injectKey"
- import VideoPlayer from "./VideoPlayer/index.vue"
- defineProps<{
- elementInfo: PPTVideoElement
- needWaitAnimation: boolean
- }>()
- const { currentSlide } = storeToRefs(useSlidesStore())
- const scale = inject(injectKeySlideScale) || ref(1)
- const slideId = inject(injectKeySlideId) || ref("")
- const inCurrentSlide = computed(() => currentSlide.value.id === slideId.value)
- </script>
- <style lang="scss" scoped>
- .screen-element-video {
- position: absolute;
- }
- .rotate-wrapper {
- width: 100%;
- height: 100%;
- }
- .element-content {
- width: 100%;
- height: 100%;
- }
- </style>
|