import QtQuick
import QtQuick.Layouts
import Quickshell
import qs.modules.common

RowLayout {
    id: root

    required property string section
    property var widgetComponents
    spacing: Config.data.layout[section]?.spacing || 0

    readonly property var widgetModel: {
        let model = [];
        let hasPreviousWidget = false;
        const widgets = Config.data.layout[section]?.widgets || [];
        const useSeparator = Config.data.layout[section]?.separator || false;

        for (let i = 0; i < widgets.length; i++) {
            const widget = widgetComponents[widgets[i]];
            if (!widget) {
                console.error(`invalid widget: ${widgets[i]}`);
                continue;
            }

            if (useSeparator && hasPreviousWidget) {
                model.push(widgetComponents["separator"]);
            }
            model.push(widget);
            hasPreviousWidget = true;
        }

        return model;
    }

    Repeater {
        model: root.widgetModel
        delegate: Loader {
            active: true
            sourceComponent: modelData
        }
    }
}