'use strict';
{
    const $ = django.jQuery;
    /**
     * 定义jQuery扩展方法：djangoAdminSelect2
     * 给匹配的元素初始化Select2组件，实现远程搜索自动完成
     * @return {jQuery} 返回jQuery对象，支持链式调用
     */
    $.fn.djangoAdminSelect2 = function() {
        // 遍历每个匹配的元素（可能有多个关联字段选择框）
        $.each(this, function(i, element) {
            // 给当前元素初始化Select2
            $(element).select2({
                // 配置AJAX请求：从后端获取搜索结果
                ajax: {
                    // 定义AJAX请求的参数（传递给后端）
                    data: (params) => {
                        return {
                            term: params.term,
                            page: params.page,
                            app_label: element.dataset.appLabel,
                            model_name: element.dataset.modelName,
                            field_name: element.dataset.fieldName
                        };
                    }
                }
            });
        });
        return this;
    };
    // 页面DOM加载完成后执行初始化
    $(function() {
        // Initialize all autocomplete widgets except the one in the template
        // form used when a new formset is added.
        $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2();
    });
    // 监听表单集新增事件（formset:added）：当动态新增表单时触发
    document.addEventListener('formset:added', (event) => {
        $(event.target).find('.admin-autocomplete').djangoAdminSelect2();
    });
}
