<script lang="ts" setup>
import type { AttachmentLike, AttachmentSimple } from "@halo-dev/ui-shared";
import { ref } from "vue";
const props = withDefaults(
defineProps<{
selected: AttachmentLike[];
}>(),
{
selected: () => [],
},
);
const emit = defineEmits<{
(event: "update:selected", attachments: AttachmentLike[]): void;
}>();
const stickers: AttachmentSimple[] = [
{
url: "https://picsum.photos/200?random=1",
mediaType: "image/*",
},
{
url: "https://picsum.photos/200?random=2",
mediaType: "image/*",
},
{
url: "https://picsum.photos/200?random=3",
mediaType: "image/*",
},
];
const selectedStickers = ref<Set<string>>(new Set());
const handleSelect = async (url: string) => {
if (selectedStickers.value.has(url)) {
selectedStickers.value.delete(url);
return;
}
selectedStickers.value.add(url);
emit("update:selected", Array.from(selectedStickers.value));
};
</script>
<template>
<div>
<img
v-for="sticker in stickers"
:src="sticker.url"
@click="handleSelect(sticker.url)"
/>
</div>
</template>