cosmos-explorer/src/components/dynamic/ArrayElement.vue
Alisa | Side.one d5b71cf5f2 feat: Card
2023-05-12 21:47:43 +08:00

29 lines
782 B
Vue

<script lang="ts" setup>
import ArrayBytesElement from './ArrayBytesElement.vue';
import ArrayObjectElement from './ArrayObjectElement.vue';
import TextElement from './TextElement.vue';
import ArrayCoinElement from './ArrayCoinElement.vue';
const props = defineProps({
value: { type: Array<Object> },
});
function selectByElement() {
if (props.value && props.value.length > 0) {
const [first] = props.value;
switch (true) {
case first instanceof Uint8Array:
return ArrayBytesElement;
case Object.keys(first).includes('denom'):
return ArrayCoinElement;
default:
return ArrayObjectElement;
}
}
return TextElement;
}
</script>
<template>
<Component :is="selectByElement()" :value="props.value"></Component>
</template>