element di migration

This commit is contained in:
Michael Freno
2025-11-14 22:41:24 -05:00
parent 48d44a1a11
commit f35bb11770
4 changed files with 525 additions and 242 deletions

View File

@@ -10,6 +10,17 @@ local Units = req("Units")
local Context = req("Context")
local StateManager = req("StateManager")
local ErrorHandler = req("ErrorHandler")
local ImageRenderer = req("ImageRenderer")
local NinePatch = req("NinePatch")
local RoundedRect = req("RoundedRect")
local ImageCache = req("ImageCache")
local Grid = req("Grid")
local InputEvent = req("InputEvent")
local TextEditor = req("TextEditor")
local LayoutEngine = req("LayoutEngine")
local Renderer = req("Renderer")
local EventHandler = req("EventHandler")
local ScrollManager = req("ScrollManager")
---@type Element
local Element = req("Element")
@@ -22,6 +33,28 @@ local Color = req("Color")
local Theme = req("Theme")
local enums = utils.enums
Element.defaultDependencies = {
Context = Context,
Theme = Theme,
Color = Color,
Units = Units,
Blur = Blur,
ImageRenderer = ImageRenderer,
NinePatch = NinePatch,
RoundedRect = RoundedRect,
ImageCache = ImageCache,
utils = utils,
Grid = Grid,
InputEvent = InputEvent,
StateManager = StateManager,
TextEditor = TextEditor,
LayoutEngine = LayoutEngine,
Renderer = Renderer,
EventHandler = EventHandler,
ScrollManager = ScrollManager,
ErrorHandler = ErrorHandler,
}
---@class FlexLove
local flexlove = Context
@@ -630,7 +663,7 @@ function flexlove.new(props)
-- If not in immediate mode, use standard Element.new
if not flexlove._immediateMode then
return Element.new(props)
return Element.new(props, Element.defaultDependencies)
end
-- Auto-begin frame if not manually started (convenience feature)
@@ -656,7 +689,7 @@ function flexlove.new(props)
props._scrollY = state._scrollY or 0
-- Create the element
local element = Element.new(props)
local element = Element.new(props, Element.defaultDependencies)
-- Bind persistent state to element (ImmediateModeState)
-- Restore event handler state