import BaseView from '../../core/BaseView.js';
import { viewRegistry } from "../../core/registries.js";

class TreeView extends BaseView {

    constructor(options = {}) {
        super(options);
        this.apiUrl = options.apiUrl || '/wp-json/acc/v1/trrc/tree';
    }

    getTitle() {
        return 'نمایش درختی';
    }

    template() {
        return `
            <div class="tree-view-container">
                <h2 class="view-title">🌳 نمایش ساختار درختی</h2>

                <div class="tree-view-content">
                    <div id="tree-root"
                         class="trrc-root"
                         data-module="trrc"
                         data-source="api"
                         data-api="${this.apiUrl}">
                    </div>
                </div>
            </div>
        `;
    }

    afterRender() {
        this.mountTRRC();
    }

    bindEvents() {
        super.bindEvents();
        // نیاز به چیز اضافه نیست
    }

    mountTRRC() {
        if (!this.container) return;

        const el = this.container.querySelector('[data-module="trrc"]');
        if (!el) return;

        if (!window.ACC?.modules?.trrc) {
            console.warn('TRRC module is not loaded');
            return;
        }

        if (el.__trrcMounted) return;
        el.__trrcMounted = true;

        const mod = ACC.modules.trrc;

        try {
            // حالت ۱: کل ماژول تابع است
            if (typeof mod === 'function') {
                const app = mod(el);
                app?.mount?.();
                return;
            }

            // حالت ۲: ماژول mount دارد (مطابق لاگ‌ شما)
            if (typeof mod.mount === 'function') {
                mod.mount(el, {
                    apiUrl: el.dataset.api,
                    tab: this.tab
                });
                return;
            }

            // حالت ۳: init دارد
            if (typeof mod.init === 'function') {
                const app = mod.init({ el, apiUrl: el.dataset.api });
                app?.mount?.();
                return;
            }

            // حالت ۴: کلاس App دارد
            if (mod.App) {
                const app = new mod.App({ el, apiUrl: el.dataset.api });
                app?.mount?.();
                return;
            }

            console.error('ACC.modules.trrc has unsupported shape:', mod);

        } catch (e) {
            console.error('Failed to mount TRRC:', e);
        }
    }

    destroy() {
        super.destroy?.();
    }
}

// *** ثبت ویو در رجیستری (حی) ***
// tabKey = "tree"  ← از treeConfig.js
viewRegistry.register("tree", TreeView);

export default TreeView;
