<template>
    <uv-popup mode="bottom" ref="meaningPopup" round="32rpx" bg-color="#FFFFFF" :overlay="true" safeAreaInsetBottom>
        <view class="meaning-popup" v-if="currentWordMeaning">
            <view class="meaning-header">
                <view class="close-btn" @click="closeMeaningPopup">
                    <text class="close-text">关闭</text>
                </view>
                <view class="meaning-title">释义</view>
                <view style="width: 80rpx;"></view>
            </view>

            <scroll-view class="meaning-scroll-container" scroll-y="true" :show-scrollbar="false" :enhanced="true">
                <view class="meaning-content">
                    <image v-if="currentWordMeaning.image" class="meaning-image" :src="currentWordMeaning.image"
                        mode="widthFix" />

                    <view class="word-info">
                        <view class="word-main">
                            <text class="word-text">{{ currentWordMeaning.word }}</text>
                        </view>
                        <view class="phonetic-container">
                            <uv-icon name="volume-fill" size="16" color="#007AFF" class="speaker-icon"
                                @click="repeatWordAudio" v-if="currentWordMeaning.phonetic" />
                            <text class="phonetic-text" v-if="currentWordMeaning.phonetic">{{ currentWordMeaning.phonetic }}</text>
                        </view>
                        <view class="word-meaning">
                            <text class="part-of-speech" v-if="currentWordMeaning.partOfSpeech">{{ currentWordMeaning.partOfSpeech }}</text>
                            <text class="meaning-text" v-if="currentWordMeaning.meaning">{{ currentWordMeaning.meaning }}</text>
                        </view>
                    </view>

                    <view class="knowledge-gain" v-if="currentWordMeaning.knowledgeGain">
                        <view class="knowledge-header">
                            <image src="/static/knowledge-icon.png" class="knowledge-icon" mode="aspectFill" />
                            <text class="knowledge-title">知识收获</text>
                        </view>
                        <text class="knowledge-content">{{ currentWordMeaning.knowledgeGain }}</text>
                    </view>
                </view>
            </scroll-view>
        </view>
    </uv-popup>
</template>

<script>
export default {
    name: 'MeaningPopup',
    props: {
        currentWordMeaning: {
            type: Object,
            default: null
        }
    },
    methods: {
        open() {
            if (this.$refs.meaningPopup) {
                this.$refs.meaningPopup.open()
            }
        },
        close() {
            if (this.$refs.meaningPopup) {
                this.$refs.meaningPopup.close()
            }
        },
        closeMeaningPopup() {
            this.$emit('close-meaning-popup')
            this.close()
        },
        repeatWordAudio() {
            this.$emit('repeat-word-audio')
        }
    }
}
</script>

<style lang="scss" scoped>
/* 释义弹窗样式 */
.meaning-popup {
    background-color: #FFFFFF;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    max-height: 80vh;
}

.meaning-scroll-container {
    flex: 1;
    height: 60vh;
}

.meaning-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 32rpx;
    border-bottom: 2rpx solid #EEEEEE;
    flex-shrink: 0;
}

.close-btn {
    width: 80rpx;
}

.close-text {
    font-family: PingFang SC;
    font-size: 32rpx;
    color: #8b8b8b;
}

.meaning-title {
    font-family: PingFang SC;
    font-weight: 500;
    font-size: 34rpx;
    color: #181818;
}

.meaning-content {
    padding: 32rpx;
}

.meaning-image {
    width: 670rpx;
    height: 268rpx;
    border-radius: 24rpx;
    margin-bottom: 32rpx;
}

.word-info {
    margin-bottom: 32rpx;
}

.word-main {
    display: flex;
    align-items: center;
    gap: 16rpx;
    margin-bottom: 8rpx;
}

.word-text {
    font-family: PingFang SC;
    font-weight: 500;
    font-size: 40rpx;
    color: #181818;
}

.phonetic-container {
    display: flex;
    gap: 24rpx;
    align-items: center;

    .speaker-icon {
        cursor: pointer;
        transition: opacity 0.2s ease;
        padding: 8rpx;
        border-radius: 8rpx;

        &:hover {
            opacity: 0.7;
            background-color: rgba(0, 122, 255, 0.1);
        }
    }

    .phonetic-text {
        font-family: PingFang SC;
        font-size: 28rpx;
        color: #262626;
        margin-bottom: 16rpx;
    }
}

.word-meaning {
    display: flex;
    gap: 16rpx;
}

.part-of-speech {
    font-family: PingFang SC;
    font-size: 28rpx;
    color: #262626;
}

.meaning-text {
    font-family: PingFang SC;
    font-size: 28rpx;
    color: #181818;
    flex: 1;
}

.knowledge-gain {
    background: linear-gradient(180deg, #DEFFFF 0%, #FBFEFF 22.65%, #F0FBFF 100%);
    border-radius: 24rpx;
    padding: 32rpx 40rpx;
}

.knowledge-header {
    display: flex;
    align-items: center;
    gap: 16rpx;
    margin-bottom: 20rpx;
}

.knowledge-icon {
    width: 48rpx;
    height: 48rpx;
}

.knowledge-title {
    font-family: PingFang SC;
    font-weight: 600;
    font-size: 30rpx;
    color: #3B3D3D;
}

.knowledge-content {
    font-family: PingFang SC;
    font-size: 28rpx;
    color: #4f4f4f;
    line-height: 48rpx;
}
</style>