local E, L, P, G = unpack(ElvUI)
local S = E:GetModule("Skins")

local _G = _G
local pairs = pairs

function S:BugSack_Open()
    local BugSackFrame = _G.BugSackFrame

    if BugSackFrame.windStyle then
        return
    end

    -- 背景
    BugSackFrame:StripTextures()
    BugSackFrame:CreateBackdrop("Transparent")
    BugSackFrame.backdrop:CreateShadow()

    -- 关闭按钮
    for _, child in pairs {_G.BugSackFrame:GetChildren()} do
        local numRegions = child:GetNumRegions()

        if numRegions == 1 then
            local text = child:GetRegions()
            if text and text.SetText then
                text:FontTemplate()
                text.windStyle = true
            end
        elseif numRegions == 4 then
            S:HandleCloseButton(child)
            child.windStyle = true
        end
    end

    -- 滚动条
    S:HandleScrollBar(_G.BugSackScrollScrollBar)

    -- 滚动文字
    for _, region in pairs {_G.BugSackScrollText:GetRegions()} do
        if region and region.SetText then
            region:FontTemplate()
        end
    end

    -- 下方 3 按钮
    S:HandleButton(_G.BugSackNextButton)
    S:HandleButton(_G.BugSackPrevButton)
    S:HandleButton(_G.BugSackSendButton)

    -- 下方标签页
    local tabs = {
        _G.BugSackTabAll,
        _G.BugSackTabLast,
        _G.BugSackTabSession
    }

    for _, tab in pairs(tabs) do
        S:HandleTab(tab)
        tab.backdrop:SetTemplate("Transparent")
        tab.backdrop:CreateShadow()

        local point, relativeTo, relativePoint, xOffset, yOffset = tab:GetPoint(1)
        tab:ClearAllPoints()
        if yOffset ~= 0 then
            yOffset = -1
        end
        tab:Point(point, relativeTo, relativePoint, xOffset, yOffset)

        local text = _G[tab:GetName() .. "Text"]
        if text then
            text:FontTemplate()
        end
    end

    BugSackFrame.windStyle = true
end

function S:BugSack()
    if not E.private.skins.bugSack then
        return
    end

    S:SecureHook(_G.BugSack, "OpenSack", "BugSack_Open")
end

S:AddCallbackForAddon("BugSack")
