import QtQuick
import QtQuick.Effects

FullwidthMouseArea {
    id: root
    property bool showPressed: mouseArea.pressed
    property real baseMargin: 0
    property bool directScale: false

    readonly property Item contentItem: mContentItem
    default property alias contentItemData: mContentItem.data

    property real targetBrightness: root.showPressed ? -25 : root.mouseArea.containsMouse && root.enabled ? 75 : 0
    Behavior on targetBrightness {
        SmoothedAnimation {
            velocity: 600
        }
    }

    property real targetMargins: root.showPressed ? 3 : 0
    Behavior on targetMargins {
        SmoothedAnimation {
            velocity: 25
        }
    }

    hoverEnabled: true

    Item {
        id: mContentItem
        anchors.fill: parent

        anchors.margins: root.baseMargin + (root.directScale ? 0 : root.targetMargins)
        scale: root.directScale ? (width - root.targetMargins * 2) / width : 1.0

        opacity: root.enabled ? 1.0 : 0.5
        Behavior on opacity {
            SmoothedAnimation {
                velocity: 5
            }
        }

        layer.enabled: root.targetBrightness != 0
        layer.effect: MultiEffect {
            brightness: root.targetBrightness / 1000
        }
    }
}
