<script setup lang="ts">
import { shallowRef, useTemplateRef, ref, h } from "vue"
import { ImageUploader, type Image } from "@/lib/ImageUploader"
import { message } from "@/scripts/client/message"

const imgs = shallowRef<Image[]>([])
const ImageUploaderRef = useTemplateRef("ImageUploaderRef")

// 自訂圖示
const renderAppendIcon = () => h("iconify-icon", { icon: "line-md:plus" })
const renderRemoveIcon = () => h("iconify-icon", { icon: "line-md:remove" })

const change = async (item: {
    images: Image[]
    action: "append" | "remove"
}) => {
    console.log(item)
    console.log(ImageUploaderRef.value?.size)
}

// 初始相片
void (async function init() {
    const res = await fetch(`${import.meta.env.BASE_URL}images/IMG_2568.json`)
    const IMG_2568 = (await res.json()) as Image
    if (IMG_2568.url)
        IMG_2568.url = IMG_2568.url.replace(/^\//, import.meta.env.BASE_URL)
    imgs.value = [IMG_2568]
})()

// 測試 `v-if`
const hidden = ref(false)
</script>
<template>
    <main style="display: contents">
        <ImageUploader
            v-if="!hidden"
            v-model="imgs"
            :limit="9"
            :accept="[`image/gif`, `image/jpeg`, `image/png`]"
            ref="ImageUploaderRef"
            @change="change"
            :render-append-icon
            :render-remove-icon
            @over-limit="message({ content: `最多9張`, primary: `danger` })"
        />
        <p class="na-paragraph na-font-mono" data-has-indent>
            {{ imgs.map((x: Image) => x.name) }}
        </p>
        <form onsubmit="return false">
            <label class="na-form-item">
                <span>hidden</span>
                <div class="na-input-wrapper">
                    <span class="na-switch">
                        <input
                            type="checkbox"
                            class="na-input"
                            v-model="hidden"
                            id="hidden"
                            name="hidden"
                        />
                        <i class="na-switch-mover"></i>
                        <span class="na-switch-slot"></span>
                    </span>
                </div>
            </label>
        </form>
    </main>
</template>
<style scoped>
form {
    margin: 2em;
}
</style>