---@type Diesal.GUI local DiesalGUI = LibStub("DiesalGUI-2.0") local Type = "DiesalContainer" local Version = 1 ---@class Diesal.GUI.Container.Methods local ContainerMethods = { ---@param self Diesal.GUI.Container OnAcquire = function(self) self:ResetSettings(true) self:Show() end, ---@param self Diesal.GUI.Container OnRelease = function(self) self:ReleaseChildren() end, ---@param self Diesal.GUI.Container ApplySettings = function(self) local content = self.content content:SetPoint("TOPLEFT") content:SetPoint("BOTTOMRIGHT") self.frame:SetToplevel(true) end, ---@param self Diesal.GUI.Container SetTopLevel = function(self) self.frame:SetToplevel(true) end, ---@param self Diesal.GUI.Container ---@param element Diesal.GUI.ObjectBase SetElement = function(self, element) element.container = self element:SetParentObject(self) self:AddChild(element) self.element = element end, } ---@alias DiesalContainer Diesal.GUI.Container local function Constructor() ---@class Diesal.GUI.Container : Diesal.GUI.ObjectBase, Diesal.GUI.Container.Methods ---@field content Frame ---@field element? Diesal.GUI.ObjectBase local self = DiesalGUI:Create(Type, true) self.isContainer = true local frame = CreateFrame("Frame", nil, DiesalGUI.UIParent) self.frame = frame self.defaults = {} local content = self:CreateRegion("Frame", "content", frame) frame:SetToplevel(true) for k, v in pairs(ContainerMethods) do self[k] = v end return self end DiesalGUI:RegisterObjectConstructor(Type, Constructor, Version)