{"version":3,"file":"BImg-QBS2ECBc.mjs","names":[],"sources":["../src/components/BImg/BImg.vue","../src/components/BImg/BImg.vue"],"sourcesContent":["<template>\n  <component\n    :is=\"props.tag\"\n    :class=\"computedClasses\"\n    class=\"b-img\"\n    :src=\"!props.blank ? props.src : computedBlankImgSrc\"\n    :width=\"computedDimensions.width || undefined\"\n    :height=\"computedDimensions.height || undefined\"\n    :srcset=\"!props.blank ? computedSrcset : undefined\"\n    :sizes=\"!props.blank ? computedSizes : undefined\"\n    :loading=\"props.lazy ? 'lazy' : 'eager'\"\n  />\n</template>\n\n<script setup lang=\"ts\">\nimport type {BImgProps} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\nimport {useToNumber} from '@vueuse/core'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {isReadOnlyArray} from '../../utils/object'\n\nconst _props = withDefaults(defineProps<BImgProps>(), {\n  blank: false,\n  blankColor: 'transparent',\n  block: false,\n  fluid: false,\n  fluidGrow: false,\n  height: undefined,\n  lazy: false,\n  sizes: undefined,\n  tag: 'img',\n  src: undefined,\n  srcset: undefined,\n  placement: undefined,\n  thumbnail: false,\n  width: undefined,\n  // RadiusElementExtendables props\n  rounded: false,\n  roundedBottom: undefined,\n  roundedEnd: undefined,\n  roundedStart: undefined,\n  roundedTop: undefined,\n  // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BImg')\n\nconst heightNumber = useToNumber(() => props.height ?? Number.NaN)\nconst widthNumber = useToNumber(() => props.width ?? Number.NaN)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n  rounded: props.rounded,\n  roundedTop: props.roundedTop,\n  roundedBottom: props.roundedBottom,\n  roundedStart: props.roundedStart,\n  roundedEnd: props.roundedEnd,\n}))\n\nconst computedSrcset = computed(() =>\n  typeof props.srcset === 'string'\n    ? props.srcset\n        .split(',')\n        .filter((x) => x)\n        .join(',')\n    : isReadOnlyArray(props.srcset)\n      ? props.srcset.filter((x) => x).join(',')\n      : undefined\n)\n\nconst computedSizes = computed(() =>\n  typeof props.sizes === 'string'\n    ? props.sizes\n        .split(',')\n        .filter((x) => x)\n        .join(',')\n    : isReadOnlyArray(props.sizes)\n      ? props.sizes.filter((x) => x).join(',')\n      : undefined\n)\n\nconst computedDimensions = computed<{height: number | undefined; width: number | undefined}>(() => {\n  const width = Number.isNaN(widthNumber.value) ? undefined : widthNumber.value\n  const height = Number.isNaN(heightNumber.value) ? undefined : heightNumber.value\n  if (props.blank) {\n    if (width !== undefined && height === undefined) return {height: width, width}\n    if (width === undefined && height !== undefined) return {height, width: height}\n    if (width === undefined && height === undefined) return {height: 1, width: 1}\n  }\n  return {\n    width,\n    height,\n  }\n})\n\nconst computedBlankImgSrc = computed(() =>\n  makeBlankImgSrc(computedDimensions.value.width, computedDimensions.value.height, props.blankColor)\n)\n\nconst computedAlignment = computed(() => ({\n  'float-start': props.placement === 'start',\n  'float-end': props.placement === 'end',\n  'mx-auto': props.placement === 'center',\n}))\n\nconst computedClasses = computed(() => [\n  radiusElementClasses.value,\n  computedAlignment.value,\n  {\n    'img-thumbnail': props.thumbnail,\n    'img-fluid': props.fluid || props.fluidGrow,\n    'w-100': props.fluidGrow,\n    'd-block': props.block || props.placement === 'center',\n  },\n])\n\nconst makeBlankImgSrc = (width: number | undefined, height: number | undefined, color: string) =>\n  `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(`<svg width=\"${width}\" height=\"${height}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\">\n    <rect width=\"100%\" height=\"100%\" style=\"fill:${color};\"></rect>\n    </svg>`)}`\n</script>\n","<template>\n  <component\n    :is=\"props.tag\"\n    :class=\"computedClasses\"\n    class=\"b-img\"\n    :src=\"!props.blank ? props.src : computedBlankImgSrc\"\n    :width=\"computedDimensions.width || undefined\"\n    :height=\"computedDimensions.height || undefined\"\n    :srcset=\"!props.blank ? computedSrcset : undefined\"\n    :sizes=\"!props.blank ? computedSizes : undefined\"\n    :loading=\"props.lazy ? 'lazy' : 'eager'\"\n  />\n</template>\n\n<script setup lang=\"ts\">\nimport type {BImgProps} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\nimport {useToNumber} from '@vueuse/core'\nimport {useRadiusElementClasses} from '../../composables/useRadiusElementClasses'\nimport {isReadOnlyArray} from '../../utils/object'\n\nconst _props = withDefaults(defineProps<BImgProps>(), {\n  blank: false,\n  blankColor: 'transparent',\n  block: false,\n  fluid: false,\n  fluidGrow: false,\n  height: undefined,\n  lazy: false,\n  sizes: undefined,\n  tag: 'img',\n  src: undefined,\n  srcset: undefined,\n  placement: undefined,\n  thumbnail: false,\n  width: undefined,\n  // RadiusElementExtendables props\n  rounded: false,\n  roundedBottom: undefined,\n  roundedEnd: undefined,\n  roundedStart: undefined,\n  roundedTop: undefined,\n  // End RadiusElementExtendables props\n})\nconst props = useDefaults(_props, 'BImg')\n\nconst heightNumber = useToNumber(() => props.height ?? Number.NaN)\nconst widthNumber = useToNumber(() => props.width ?? Number.NaN)\n\nconst radiusElementClasses = useRadiusElementClasses(() => ({\n  rounded: props.rounded,\n  roundedTop: props.roundedTop,\n  roundedBottom: props.roundedBottom,\n  roundedStart: props.roundedStart,\n  roundedEnd: props.roundedEnd,\n}))\n\nconst computedSrcset = computed(() =>\n  typeof props.srcset === 'string'\n    ? props.srcset\n        .split(',')\n        .filter((x) => x)\n        .join(',')\n    : isReadOnlyArray(props.srcset)\n      ? props.srcset.filter((x) => x).join(',')\n      : undefined\n)\n\nconst computedSizes = computed(() =>\n  typeof props.sizes === 'string'\n    ? props.sizes\n        .split(',')\n        .filter((x) => x)\n        .join(',')\n    : isReadOnlyArray(props.sizes)\n      ? props.sizes.filter((x) => x).join(',')\n      : undefined\n)\n\nconst computedDimensions = computed<{height: number | undefined; width: number | undefined}>(() => {\n  const width = Number.isNaN(widthNumber.value) ? undefined : widthNumber.value\n  const height = Number.isNaN(heightNumber.value) ? undefined : heightNumber.value\n  if (props.blank) {\n    if (width !== undefined && height === undefined) return {height: width, width}\n    if (width === undefined && height !== undefined) return {height, width: height}\n    if (width === undefined && height === undefined) return {height: 1, width: 1}\n  }\n  return {\n    width,\n    height,\n  }\n})\n\nconst computedBlankImgSrc = computed(() =>\n  makeBlankImgSrc(computedDimensions.value.width, computedDimensions.value.height, props.blankColor)\n)\n\nconst computedAlignment = computed(() => ({\n  'float-start': props.placement === 'start',\n  'float-end': props.placement === 'end',\n  'mx-auto': props.placement === 'center',\n}))\n\nconst computedClasses = computed(() => [\n  radiusElementClasses.value,\n  computedAlignment.value,\n  {\n    'img-thumbnail': props.thumbnail,\n    'img-fluid': props.fluid || props.fluidGrow,\n    'w-100': props.fluidGrow,\n    'd-block': props.block || props.placement === 'center',\n  },\n])\n\nconst makeBlankImgSrc = (width: number | undefined, height: number | undefined, color: string) =>\n  `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(`<svg width=\"${width}\" height=\"${height}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\">\n    <rect width=\"100%\" height=\"100%\" style=\"fill:${color};\"></rect>\n    </svg>`)}`\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ,YAvBC,SAuBmB,OAAM;EAExC,MAAM,eAAe,kBAAkB,MAAM,UAAU,IAAU;EACjE,MAAM,cAAc,kBAAkB,MAAM,SAAS,IAAU;EAE/D,MAAM,uBAAuB,+BAA+B;GAC1D,SAAS,MAAM;GACf,YAAY,MAAM;GAClB,eAAe,MAAM;GACrB,cAAc,MAAM;GACpB,YAAY,MAAM;GACnB,EAAC;EAEF,MAAM,iBAAiB,eACrB,OAAO,MAAM,WAAW,WACpB,MAAM,OACH,MAAM,IAAG,CACT,QAAQ,MAAM,EAAC,CACf,KAAK,IAAG,GACX,gBAAgB,MAAM,OAAM,GAC1B,MAAM,OAAO,QAAQ,MAAM,EAAE,CAAC,KAAK,IAAG,GACtC,KAAA,EACR;EAEA,MAAM,gBAAgB,eACpB,OAAO,MAAM,UAAU,WACnB,MAAM,MACH,MAAM,IAAG,CACT,QAAQ,MAAM,EAAC,CACf,KAAK,IAAG,GACX,gBAAgB,MAAM,MAAK,GACzB,MAAM,MAAM,QAAQ,MAAM,EAAE,CAAC,KAAK,IAAG,GACrC,KAAA,EACR;EAEA,MAAM,qBAAqB,eAAwE;GACjG,MAAM,QAAQ,OAAO,MAAM,YAAY,MAAM,GAAG,KAAA,IAAY,YAAY;GACxE,MAAM,SAAS,OAAO,MAAM,aAAa,MAAM,GAAG,KAAA,IAAY,aAAa;AAC3E,OAAI,MAAM,OAAO;AACf,QAAI,UAAU,KAAA,KAAa,WAAW,KAAA,EAAW,QAAO;KAAC,QAAQ;KAAO;KAAK;AAC7E,QAAI,UAAU,KAAA,KAAa,WAAW,KAAA,EAAW,QAAO;KAAC;KAAQ,OAAO;KAAM;AAC9E,QAAI,UAAU,KAAA,KAAa,WAAW,KAAA,EAAW,QAAO;KAAC,QAAQ;KAAG,OAAO;KAAC;;AAE9E,UAAO;IACL;IACA;IACF;IACD;EAED,MAAM,sBAAsB,eAC1B,gBAAgB,mBAAmB,MAAM,OAAO,mBAAmB,MAAM,QAAQ,MAAM,WAAU,CACnG;EAEA,MAAM,oBAAoB,gBAAgB;GACxC,eAAe,MAAM,cAAc;GACnC,aAAa,MAAM,cAAc;GACjC,WAAW,MAAM,cAAc;GAChC,EAAC;EAEF,MAAM,kBAAkB,eAAe;GACrC,qBAAqB;GACrB,kBAAkB;GAClB;IACE,iBAAiB,MAAM;IACvB,aAAa,MAAM,SAAS,MAAM;IAClC,SAAS,MAAM;IACf,WAAW,MAAM,SAAS,MAAM,cAAc;;GAEjD,CAAA;EAED,MAAM,mBAAmB,OAA2B,QAA4B,UAC9E,oCAAoC,mBAAmB,eAAe,MAAM,YAAY,OAAO,oDAAoD,MAAM,GAAG,OAAO;mDAClH,MAAM;YAC7C;;uBArHV,YAUE,wBATK,MAAA,MAAK,CAAC,IAAG,EAAA;IACb,OAAK,eAAA,CAAE,gBAAA,OACF,QAAO,CAAA;IACZ,KAAG,CAAG,MAAA,MAAK,CAAC,QAAQ,MAAA,MAAK,CAAC,MAAM,oBAAA;IAChC,OAAO,mBAAA,MAAmB,SAAS,KAAA;IACnC,QAAQ,mBAAA,MAAmB,UAAU,KAAA;IACrC,QAAM,CAAG,MAAA,MAAK,CAAC,QAAQ,eAAA,QAAiB,KAAA;IACxC,OAAK,CAAG,MAAA,MAAK,CAAC,QAAQ,cAAA,QAAgB,KAAA;IACtC,SAAS,MAAA,MAAK,CAAC,OAAI,SAAA"}