pragma ComponentBehavior: Bound

import Quickshell
import QtQuick
import qs.Components
import ZShell.Config

Item {
	id: root

	property real offsetScale: shouldBeActive ? 0 : 1
	required property var panels
	property string queuedMode: "wallpaper"
	required property ShellScreen screen
	readonly property bool shouldBeActive: visibilities.settings
	required property PersistentProperties visibilities

	implicitHeight: content.implicitHeight
	implicitWidth: content.implicitWidth
	opacity: 1 - offsetScale
	visible: offsetScale < 1

	Behavior on offsetScale {
		Anim {
			duration: Tokens.anim.durations.expressiveDefaultSpatial
			easing: Tokens.anim.expressiveDefaultSpatial
		}
	}

	CustomClippingRect {
		anchors.fill: parent

		Loader {
			id: content

			active: root.shouldBeActive || root.visible
			anchors.bottom: parent.bottom
			anchors.horizontalCenter: parent.horizontalCenter

			sourceComponent: Content {
				sState.animatingContainer: content.opacity < 1
				sState.currentPageIdx: ["wallpaper"].indexOf(root.queuedMode)
				sState.screen: root.screen
			}
		}
	}
}
