window.produitManager = function(paginator, fournisseurs, magasins) {
        const p = paginator && typeof paginator === 'object' && 'data' in paginator ? paginator : {
            data: []
        };
        const fourns = fournisseurs || [];
        const mags = magasins || [];
        return {
            showModal: false
            , showDeleteModal: false
            , deleteIndex: null
            , deleteLabel: ''
            , editingIndex: null
            , produits: p.data || []
            , fournisseurs: fourns
            , magasins: mags
            , form: {
                designation: ''
                , fournisseur_id: ''
                , prix: 0
                , prix_vente: 0
                , unite: ''
                , magasin_id: mags.length ? mags[0].id : ''
                , quantite: 0
                , seuil_alerte: 0
            }
            , fournisseurSearch: ''
            , fournisseurDropdownOpen: false
            , formatPrice(n) {
                return new Intl.NumberFormat('fr-FR').format(n) + ' FCFA';
            }
            , getStockInfo(produit) {
                const stocks = produit.stock || [];
                if (stocks.length === 0) return '-';
                const s = stocks[0];
                return (s.quantite ?? 0) + ' / ' + (s.seuil_alerte ?? 0);
            }
            , openModal() {
                this.editingIndex = null;
                this.form = {
                    designation: ''
                    , fournisseur_id: ''
                    , prix: 0
                    , prix_vente: 0
                    , unite: ''
                    , magasin_id: mags.length ? mags[0].id : ''
                    , quantite: 0
                    , seuil_alerte: 0
                };
                this.fournisseurSearch = '';
                this.fournisseurDropdownOpen = false;
                this.showModal = true;
            }
            , editProduit(i) {
                this.editingIndex = i;
                const prod = this.produits[i];
                const stock = (prod.stock && prod.stock[0]) || {};
                const fourn = prod.fournisseur;
                this.form = {
                    designation: prod.designation
                    , fournisseur_id: prod.fournisseur_id || ''
                    , prix: prod.prix
                    , prix_vente: prod.prix_vente ?? 0
                    , unite: prod.unite ?? ''
                    , magasin_id: stock.magasin_id || (mags.length ? mags[0].id : '')
                    , quantite: stock.quantite ?? 0
                    , seuil_alerte: stock.seuil_alerte ?? 0
                };
                this.fournisseurSearch = fourn ? fourn.nom : '';
                this.fournisseurDropdownOpen = false;
                this.showModal = true;
            }
            , openDeleteModal(i) {
                this.deleteIndex = i;
                this.deleteLabel = this.produits[i].designation;
                this.showDeleteModal = true;
            }
            , confirmDelete() {
                if (this.deleteIndex === null) return;
                const c = this.produits[this.deleteIndex];
                const id = c.hash_id || c.id;
                const form = document.createElement('form');
                form.method = 'POST';
                form.action = (window.__produitsBaseUrl || '/produits') + '/' + id;
                const token = document.querySelector('meta[name="csrf-token"]')?.content || '';
                form.innerHTML = '<input type="hidden" name="_token" value="' + token + '"><input type="hidden" name="_method" value="DELETE">';
                document.body.appendChild(form);
                form.submit();
            }
        };
    };
