{"version":3,"file":"video-player.vue2.mjs","sources":["../../../../../../packages/components/video-player/src/video-player.vue"],"sourcesContent":["<template>\r\n  <video\r\n    ref=\"videoElement\"\r\n    v-bind=\"attrs\"\r\n    :class=\"[bem.b()]\"\r\n    :src=\"src\"\r\n    :poster=\"poster\"\r\n    :autoplay=\"autoplay\"\r\n    :loop=\"loop\"\r\n    :preload=\"preload\"\r\n    :muted=\"muted\"\r\n    :controls=\"controls\"\r\n    :width=\"width\"\r\n    :height=\"height\"\r\n  >\r\n    <source :src=\"src\" :type=\"getType(format)\" />\r\n    您的浏览器不支持视频播放。\r\n  </video>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { onMounted, ref, useAttrs, watch } from 'vue'\r\nimport { videoPlayerProps } from './video-player'\r\n\r\ndefineOptions({ name: 'LlVideoPlayer' })\r\n\r\nconst attrs = useAttrs()\r\nconst bem = createNamespace('video-player')\r\n\r\nconst props = defineProps(videoPlayerProps)\r\n\r\n// 响应式数据\r\nconst videoElement = ref<HTMLVideoElement>()\r\n\r\nconst videoTypeMap = {\r\n  MP4: 'video/mp4',\r\n  WebM: 'video/webm',\r\n  OGG: 'video/ogg',\r\n  MOV: 'video/quicktime',\r\n  AVI: 'video/x-msvideo',\r\n  WMV: 'video/x-ms-wmv',\r\n  FLV: 'video/x-flv',\r\n  MKV: 'video/x-matroska',\r\n}\r\n\r\nconst getType = (format: string) => {\r\n  return videoTypeMap[format.toUpperCase()] || 'video/mp4'\r\n}\r\n\r\n/**\r\n * 浏览器自动播放策略：页面刷新后 autoplay 属性可能被阻止\r\n * 通过 JS 调用 play() 并在被拦截时静音后重试，确保自动播放生效\r\n */\r\nconst tryAutoplay = () => {\r\n  const video = videoElement.value\r\n  if (!video || !props.autoplay) return\r\n  video.play().catch(() => {\r\n    // 浏览器阻止了有声自动播放，静音后再试\r\n    video.muted = true\r\n    video.play().catch(() => {\r\n      // 静音播放也失败，忽略\r\n    })\r\n  })\r\n}\r\n\r\nonMounted(() => {\r\n  tryAutoplay()\r\n})\r\n\r\nwatch(\r\n  () => props.src,\r\n  () => {\r\n    // src 变化后重新触发自动播放\r\n    const video = videoElement.value\r\n    if (!video) return\r\n    video.load()\r\n    tryAutoplay()\r\n  },\r\n)\r\n</script>\r\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","src","poster","autoplay","loop","preload","muted","controls","width","height","_createElementVNode","format"],"mappings":";;;;;;;;;;;;;AA2BA,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,MAAM,GAAA,GAAM,gBAAgB,cAAc,CAAA;AAE1C,IAAA,MAAM,KAAA,GAAQ,OAAA;AAGd,IAAA,MAAM,eAAe,GAAA,EAAsB;AAE3C,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,GAAA,EAAK,WAAA;AAAA,MACL,IAAA,EAAM,YAAA;AAAA,MACN,GAAA,EAAK,WAAA;AAAA,MACL,GAAA,EAAK,iBAAA;AAAA,MACL,GAAA,EAAK,iBAAA;AAAA,MACL,GAAA,EAAK,gBAAA;AAAA,MACL,GAAA,EAAK,aAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAEA,IAAA,MAAM,OAAA,GAAU,CAAC,MAAA,KAAmB;AAClC,MAAA,OAAO,YAAA,CAAa,MAAA,CAAO,WAAA,EAAa,CAAA,IAAK,WAAA;AAAA,IAC/C,CAAA;AAMA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,MAAM,QAAQ,YAAA,CAAa,KAAA;AAC3B,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,KAAA,CAAM,QAAA,EAAU;AAC/B,MAAA,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM;AAEvB,QAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AACd,QAAA,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM;AAAA,QAEzB,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,WAAA,EAAY;AAAA,IACd,CAAC,CAAA;AAED,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,GAAA;AAAA,MACZ,MAAM;AAEJ,QAAA,MAAM,QAAQ,YAAA,CAAa,KAAA;AAC3B,QAAA,IAAI,CAAC,KAAA,EAAO;AACZ,QAAA,KAAA,CAAM,IAAA,EAAK;AACX,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,KACF;;AA9EE,MAAA,OAAAA,SAAA,EAAA,EAAAC,kBAAA,CAgBQ,OAAA,EAhBRC,UAAA,CAgBQ;AAAA,iBAfF,cAAA;AAAA,QAAJ,GAAA,EAAI;AAAA,SACIC,KAAA,CAAA,KAAA,CAAA,EAAK;AAAA,QACZ,OAAK,CAAGA,KAAA,CAAA,GAAA,CAAA,CAAI,GAAC,CAAA;AAAA,QACb,KAAKC,IAAAA,CAAAA,GAAAA;AAAAA,QACL,QAAQC,IAAAA,CAAAA,MAAAA;AAAAA,QACR,UAAUC,IAAAA,CAAAA,QAAAA;AAAAA,QACV,MAAMC,IAAAA,CAAAA,IAAAA;AAAAA,QACN,SAASC,IAAAA,CAAAA,OAAAA;AAAAA,QACT,OAAOC,IAAAA,CAAAA,KAAAA;AAAAA,QACP,UAAUC,IAAAA,CAAAA,QAAAA;AAAAA,QACV,OAAOC,IAAAA,CAAAA,KAAAA;AAAAA,QACP,QAAQC,IAAAA,CAAAA;AAAAA;QAETC,mBAA6C,QAAA,EAAA;AAAA,UAApC,KAAKT,IAAAA,CAAAA,GAAAA;AAAAA,UAAM,IAAA,EAAM,OAAA,CAAQU,IAAAA,CAAAA,MAAM;AAAA;;UAAK,kFAAA;AAAA,UAE/C,CAAA;AAAA;AAAA,SAAA;AAAA;;;;;;;"}