{"version":3,"file":"iframe.vue2.mjs","sources":["../../../../../../packages/components/iframe/src/iframe.vue"],"sourcesContent":["<template>\r\n  <div :style=\"containerStyle\">\r\n    <iframe\r\n      ref=\"iframeRef\"\r\n      :src=\"src\"\r\n      :title=\"title\"\r\n      :style=\"iframeStyle\"\r\n      :loading=\"loadingType\"\r\n      @load=\"handleLoad\"\r\n      @error=\"handleError\"\r\n    ></iframe>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, onBeforeUnmount, onMounted, ref } from 'vue'\r\nimport { iframeProps } from './iframe'\r\n\r\ndefineOptions({\r\n  name: 'LlIframe',\r\n})\r\n\r\n// 定义组件属性\r\nconst props = defineProps(iframeProps)\r\n\r\n// 定义组件事件\r\nconst emit = defineEmits(['loaded', 'error'])\r\n\r\nconst iframeRef = ref<HTMLIFrameElement | null>(null)\r\nconst loading = ref(false)\r\nconst error = ref<string | null>(null)\r\nconst timer = ref<number | null>(null)\r\n\r\n// 容器样式\r\nconst containerStyle = computed(() => ({\r\n  width: props.width,\r\n  height: props.height,\r\n  border: props.showBorder ? '1px solid var(--color-border)' : 'none',\r\n  overflow: 'hidden',\r\n  'border-radius': '6px',\r\n}))\r\n\r\n// iframe样式\r\nconst iframeStyle = computed(() => ({\r\n  width: '100%',\r\n  height: '100%',\r\n  border: 'none',\r\n  borderRadius: '6px',\r\n}))\r\n\r\n// 处理加载完成事件\r\nconst handleLoad = () => {\r\n  loading.value = false\r\n  error.value = null\r\n  if (timer.value) {\r\n    clearTimeout(timer.value)\r\n    timer.value = null\r\n  }\r\n  emit('loaded')\r\n}\r\n\r\n// 处理加载错误事件\r\nconst handleError = () => {\r\n  loading.value = false\r\n  error.value = '无法加载页面内容'\r\n  emit('error', error.value)\r\n}\r\n\r\n// 组件挂载时\r\nonMounted(() => {\r\n  // 设置加载超时\r\n  timer.value = window.setTimeout(() => {\r\n    if (loading.value) {\r\n      handleError()\r\n    }\r\n  }, 10000)\r\n})\r\n\r\n// 组件卸载前\r\nonBeforeUnmount(() => {\r\n  if (timer.value) {\r\n    clearTimeout(timer.value)\r\n  }\r\n})\r\n</script>\r\n"],"names":["_createElementBlock","_createElementVNode","src","title","loadingType"],"mappings":";;;;;;;;;;;;;AAuBA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAGd,IAAA,MAAM,IAAA,GAAO,MAAA;AAEb,IAAA,MAAM,SAAA,GAAY,IAA8B,IAAI,CAAA;AACpD,IAAA,MAAM,OAAA,GAAU,IAAI,KAAK,CAAA;AACzB,IAAA,MAAM,KAAA,GAAQ,IAAmB,IAAI,CAAA;AACrC,IAAA,MAAM,KAAA,GAAQ,IAAmB,IAAI,CAAA;AAGrC,IAAA,MAAM,cAAA,GAAiB,SAAS,OAAO;AAAA,MACrC,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,MAAA,EAAQ,KAAA,CAAM,UAAA,GAAa,+BAAA,GAAkC,MAAA;AAAA,MAC7D,QAAA,EAAU,QAAA;AAAA,MACV,eAAA,EAAiB;AAAA,KACnB,CAAE,CAAA;AAGF,IAAA,MAAM,WAAA,GAAc,SAAS,OAAO;AAAA,MAClC,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,MAAA;AAAA,MACR,YAAA,EAAc;AAAA,KAChB,CAAE,CAAA;AAGF,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAChB,MAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AACd,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AACxB,QAAA,KAAA,CAAM,KAAA,GAAQ,IAAA;AAAA,MAChB;AACA,MAAA,IAAA,CAAK,QAAQ,CAAA;AAAA,IACf,CAAA;AAGA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAChB,MAAA,KAAA,CAAM,KAAA,GAAQ,kDAAA;AACd,MAAA,IAAA,CAAK,OAAA,EAAS,MAAM,KAAK,CAAA;AAAA,IAC3B,CAAA;AAGA,IAAA,SAAA,CAAU,MAAM;AAEd,MAAA,KAAA,CAAM,KAAA,GAAQ,MAAA,CAAO,UAAA,CAAW,MAAM;AACpC,QAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,UAAA,WAAA,EAAY;AAAA,QACd;AAAA,MACF,GAAG,GAAK,CAAA;AAAA,IACV,CAAC,CAAA;AAGD,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAI,MAAM,KAAA,EAAO;AACf,QAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AAAA,MAC1B;AAAA,IACF,CAAC,CAAA;;0BAlFCA,kBAAA;AAAA,QAUM,KAAA;AAAA,QAAA;AAAA,UAVA,KAAA,iBAAO,cAAA,CAAA,KAAc;AAAA;;UACzBC,mBAQU,QAAA,EAAA;AAAA,qBAPJ,WAAA;AAAA,YAAJ,GAAA,EAAI,SAAA;AAAA,YACH,KAAKC,IAAAA,CAAAA,GAAAA;AAAAA,YACL,OAAOC,IAAAA,CAAAA,KAAAA;AAAAA,YACP,KAAA,iBAAO,WAAA,CAAA,KAAW,CAAA;AAAA,YAClB,SAASC,IAAAA,CAAAA,WAAAA;AAAAA,YACT,MAAA,EAAM,UAAA;AAAA,YACN,OAAA,EAAO;AAAA;;;;;;;;;;;"}