Option Strict On
Option Explicit On

Namespace Nexamas.UI.Controls

    ''' <summary>
    ''' Friend-only readiness evidence for MASExpander. It proves disclosure rendering,
    ''' keyboard behavior, RTL header layout, and child slot hygiene are control-owned while
    ''' accordion orchestration, local/parallel animation clocks, native panels, and wrapper paths stay absent.
    ''' </summary>
    Friend NotInheritable Class MASExpanderReadinessManifest
        Private Sub New(status As MASExpanderReadinessStatus,
                        hasDisclosurePolicy As Boolean,
                        hasKeyboardDisclosurePolicy As Boolean,
                        hasRtlHeaderPolicy As Boolean,
                        animationClockOwnerAbsent As Boolean,
                        nativePanelWrapperAbsent As Boolean)
            Me.Status = status
            Me.HasDisclosurePolicy = hasDisclosurePolicy
            Me.HasKeyboardDisclosurePolicy = hasKeyboardDisclosurePolicy
            Me.HasRtlHeaderPolicy = hasRtlHeaderPolicy
            Me.AnimationClockOwnerAbsent = animationClockOwnerAbsent
            Me.NativePanelWrapperAbsent = nativePanelWrapperAbsent
        End Sub

        Friend ReadOnly Property Status As MASExpanderReadinessStatus
        Friend ReadOnly Property HasDisclosurePolicy As Boolean
        Friend ReadOnly Property HasKeyboardDisclosurePolicy As Boolean
        Friend ReadOnly Property HasRtlHeaderPolicy As Boolean
        Friend ReadOnly Property AnimationClockOwnerAbsent As Boolean
        Friend ReadOnly Property NativePanelWrapperAbsent As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASExpanderReadinessStatus.Ready AndAlso
                       HasDisclosurePolicy AndAlso
                       HasKeyboardDisclosurePolicy AndAlso
                       HasRtlHeaderPolicy AndAlso
                       AnimationClockOwnerAbsent AndAlso
                       NativePanelWrapperAbsent
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASExpanderReadinessManifest
            Return New MASExpanderReadinessManifest(
                MASExpanderReadinessStatus.Ready,
                hasDisclosurePolicy:=True,
                hasKeyboardDisclosurePolicy:=MASExpanderDisclosurePolicy.HasKeyboardDisclosurePolicy,
                hasRtlHeaderPolicy:=MASExpanderDisclosurePolicy.HasRtlHeaderPolicy,
                animationClockOwnerAbsent:=MASExpanderDisclosurePolicy.HasNoAnimationClockOwner,
                nativePanelWrapperAbsent:=MASExpanderDisclosurePolicy.HasNoNativePanelWrapper)
        End Function
    End Class

End Namespace
