import { Controller } from '@hotwired/stimulus'

export default class extends Controller {
    static targets = ['title', 'slug', 'bouton', 'formulaire', 'ligneSlug']

    show() {
        this.ligneSlugTarget.classList.toggle('hidden', true)
        this.formulaireTarget.classList.toggle('hidden', false)
    }

    async open() {
        const basePath = this.slugTarget.dataset.url
            this.slugTarget.value = await this.getSlug(this.titleTarget.value, basePath);
            this.slugTarget.focus();
    }

    async getSlug(text, basePath) {
        // Envoyer le titre au serveur pour générer le slug
        const response = await fetch(basePath + '/generate-slug', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
            },
            body: JSON.stringify({ title: text })
        })
        const data = await response.json()
        return data.slug
    }

    generateSlug(text) {
        return text.toString().toLowerCase()
            .replace(/\s+/g, '-')           // Remplace les espaces par des tirets
            .replace(/[^\w\-]+/g, '')       // Enlève les caractères non alphanumériques
            .replace(/\-\-+/g, '-')         // Remplace les tirets doubles
            .replace(/^-+/, '')             // Enlève les tirets au début
            .replace(/-+$/, '');            // Enlève les tirets à la fin
    }
}