2026-07-09 01:17:35 +02:00
|
|
|
<template>
|
2026-07-10 22:28:26 +02:00
|
|
|
<span class="hms-speaker-icon-wrap" v-html="svgStr"></span>
|
2026-07-09 01:17:35 +02:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2026-07-10 22:28:26 +02:00
|
|
|
import { computed } from 'vue'
|
|
|
|
|
|
|
|
|
|
const props = withDefaults(defineProps<{ type?: string }>(), { type: 'linearray' })
|
|
|
|
|
|
|
|
|
|
const icons: Record<string, string> = {
|
|
|
|
|
linearray: '<rect x="8" y="2" width="16" height="40" rx="2"/><circle cx="16" cy="10" r="3"/><circle cx="16" cy="22" r="4"/><circle cx="16" cy="34" r="3"/>',
|
|
|
|
|
subwoofer: '<rect x="4" y="8" width="24" height="20" rx="3"/><circle cx="16" cy="18" r="7"/><circle cx="16" cy="18" r="3"/>',
|
|
|
|
|
monitor: '<path d="M4 6h20v14H4z"/><path d="M8 24h12"/><circle cx="14" cy="13" r="3"/>',
|
|
|
|
|
pointsource: '<circle cx="16" cy="16" r="12"/><circle cx="16" cy="16" r="6"/><circle cx="16" cy="16" r="2"/>',
|
|
|
|
|
column: '<rect x="10" y="2" width="12" height="44" rx="2"/><circle cx="16" cy="8" r="2"/><circle cx="16" cy="16" r="2"/><circle cx="16" cy="24" r="2"/><circle cx="16" cy="32" r="2"/><circle cx="16" cy="40" r="2"/>',
|
|
|
|
|
movinghead: '<rect x="10" y="4" width="12" height="16" rx="2"/><path d="M16 20v8"/><rect x="8" y="28" width="16" height="4" rx="1"/>'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const svgStr = computed(() =>
|
|
|
|
|
'<svg class="hms-speaker-icon" viewBox="0 0 32 48" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">' +
|
|
|
|
|
(icons[props.type] || icons.linearray) +
|
|
|
|
|
'</svg>'
|
|
|
|
|
)
|
2026-07-09 01:17:35 +02:00
|
|
|
</script>
|