<script lang="ts" setup>
import { getImageInfo } from '@/utils/functions'
import { computed } from 'vue'

const props = defineProps<{
  extra: any
  data: any
  maxWidth?: Boolean
}>()

const img = computed(() => {
  // console.log(props.extra);
  let info = {
    width: 0,
    height: 0
  }
  if (props.extra.url.includes('blob:http://')) {
    info = {
      width: props.extra.width,
      height: props.extra.height
    }
  }else {
    info = getImageInfo(props.extra.url)
  }

  if (info.width == 0 || info.height == 0) {
    return {
      width: 450,
      height: 298
    }
  }
  if(info.width<300){
    return {
      width: 300,
      height: info.height / (info.width / 300)
    }
  }

  if (info.width < 350) {
    return {
      width: info.width,
      height: info.height
    }
  }

  return {
    width: 350,
    height: info.height / (info.width / 350)
  }
})
</script>
<template>
  <section
    class="im-message-image"
    :class="{
      left: data.float === 'left',
      right: data.float === 'right'
    }"
  >
  <div class="image-container">
    <tm-image preview :width="img.width" :height="img.height" :src="extra.url" model="aspectFill"/>
    <wd-circle custom-class="circleProgress" v-if="props.data.uploadCurrent && props.data.uploadCurrent<100"  v-model="props.data.uploadCurrent" color="#ffffff" layer-color="#E3E3E3"></wd-circle>
  </div>
  </section>
</template>
<style lang="less" scoped>
.im-message-image {
  overflow: hidden;
  padding: 20rpx 18rpx;
  border-radius: 0;
  background-color: #fff;
  min-width: 40rpx;
  min-height: 40rpx;
  max-width: 532rpx;

  &.left {
    background-color: #fff;
    border-radius: 0 16rpx 16rpx 16rpx;
  }

  &.right {
    background-color: #46299D;
    border-radius: 16rpx 0 16rpx 16rpx;
  }
}
.image-container {
    position: relative;

  .circleProgress {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 1;
  }
}
</style>
