change to DI

This commit is contained in:
Michael Freno
2025-11-12 23:30:29 -05:00
parent 84f45a019b
commit b886085d3e
8 changed files with 258 additions and 192 deletions

View File

@@ -1,14 +1,9 @@
--- ScrollManager.lua
--- Handles scrolling, overflow detection, and scrollbar rendering/interaction for Elements
--- Extracted from Element.lua as part of element-refactor-modularization task 05
-- Setup module path for relative requires
local modulePath = (...):match("(.-)[^%.]+$")
local function req(name)
return require(modulePath .. name)
end
local Color = req("Color")
---
--- Dependencies (must be injected via deps parameter):
--- - Color: Color module for creating color instances
---@class ScrollManager
---@field overflow string -- "visible"|"hidden"|"auto"|"scroll"
@@ -41,10 +36,19 @@ ScrollManager.__index = ScrollManager
--- Create a new ScrollManager instance
---@param config table Configuration options
---@param deps table Dependencies {Color: Color module}
---@return ScrollManager
function ScrollManager.new(config)
function ScrollManager.new(config, deps)
-- Pure DI: Dependencies must be injected
assert(deps, "ScrollManager.new: deps parameter is required")
assert(deps.Color, "ScrollManager.new: deps.Color is required")
local Color = deps.Color
local self = setmetatable({}, ScrollManager)
-- Store dependency for instance methods
self._Color = Color
-- Configuration
self.overflow = config.overflow or "hidden"
self.overflowX = config.overflowX