diff --git a/config.lua b/config.lua index c4e5abd..1cb877d 100644 --- a/config.lua +++ b/config.lua @@ -1,356 +1,348 @@ return { ["metadata"] = { - ["generated"] = "Mon Feb 24 19:52:36 2025", + ["generated"] = "Mon Feb 24 22:13:54 2025", ["version"] = "2.0", }, ["categories"] = { - ["plugins"] = { - ["files"] = { - ["pluginTemplate"] = { - ["size"] = 695, - ["requires"] = { - }, - ["path"] = "plugins/pluginTemplate.lua", - ["default"] = true, - ["description"] = "", - }, - ["xml"] = { - ["size"] = 6371, - ["requires"] = { - }, - ["path"] = "plugins/xml.lua", - ["default"] = true, - ["description"] = "", - }, - ["benchmark"] = { - ["size"] = 12515, - ["requires"] = { - }, - ["path"] = "plugins/benchmark.lua", - ["default"] = true, - ["description"] = "", - }, - ["state"] = { - ["size"] = 5867, - ["requires"] = { - }, - ["path"] = "plugins/state.lua", - ["default"] = true, - ["description"] = "", - }, - ["theme"] = { - ["size"] = 5879, - ["requires"] = { - }, - ["path"] = "plugins/theme.lua", - ["default"] = true, - ["description"] = "", - }, - ["animation"] = { - ["size"] = 14116, - ["requires"] = { - }, - ["path"] = "plugins/animation.lua", - ["default"] = true, - ["description"] = "", - }, - ["debug"] = { - ["size"] = 6175, - ["requires"] = { - }, - ["path"] = "plugins/debug.lua", - ["default"] = true, - ["description"] = "", - }, - ["reactive"] = { - ["size"] = 6989, - ["requires"] = { - }, - ["path"] = "plugins/reactive.lua", - ["default"] = true, - ["description"] = "", - }, - }, - ["description"] = "Plugins", - }, ["libraries"] = { ["files"] = { ["utils"] = { ["size"] = 2661, - ["requires"] = { - }, ["path"] = "libraries/utils.lua", ["default"] = true, - ["description"] = "", - }, - ["colorHex"] = { - ["size"] = 132, ["requires"] = { }, - ["path"] = "libraries/colorHex.lua", - ["default"] = true, ["description"] = "", }, ["expect"] = { ["size"] = 880, - ["requires"] = { - }, ["path"] = "libraries/expect.lua", ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["colorHex"] = { + ["size"] = 132, + ["path"] = "libraries/colorHex.lua", + ["default"] = true, + ["requires"] = { + }, ["description"] = "", }, }, ["description"] = "Libraries", }, + ["plugins"] = { + ["files"] = { + ["state"] = { + ["size"] = 5867, + ["path"] = "plugins/state.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["debug"] = { + ["size"] = 6175, + ["path"] = "plugins/debug.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["benchmark"] = { + ["size"] = 12515, + ["path"] = "plugins/benchmark.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["xml"] = { + ["size"] = 6371, + ["path"] = "plugins/xml.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["theme"] = { + ["size"] = 5879, + ["path"] = "plugins/theme.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["animation"] = { + ["size"] = 14116, + ["path"] = "plugins/animation.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["reactive"] = { + ["size"] = 6962, + ["path"] = "plugins/reactive.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + }, + ["description"] = "Plugins", + }, ["elements"] = { ["files"] = { - ["BaseElement"] = { - ["size"] = 8733, - ["requires"] = { - }, - ["path"] = "elements/BaseElement.lua", + ["Table"] = { + ["size"] = 7673, + ["path"] = "elements/Table.lua", ["default"] = true, - ["description"] = "The base class for all UI elements in Basalt.", - }, - ["Slider"] = { - ["size"] = 4767, ["requires"] = { [1] = "VisualElement", }, - ["path"] = "elements/Slider.lua", - ["default"] = true, ["description"] = "", }, - ["Menu"] = { - ["size"] = 4721, - ["requires"] = { - [1] = "List", - }, - ["path"] = "elements/Menu.lua", - ["default"] = true, - ["description"] = "A horizontal menu bar with selectable items.", - }, - ["Flexbox"] = { - ["size"] = 11685, - ["requires"] = { - [1] = "Container", - }, - ["path"] = "elements/Flexbox.lua", - ["default"] = true, - ["description"] = "A flexbox container that arranges its children in a flexible layout.", - }, - ["VisualElement"] = { - ["size"] = 14506, - ["requires"] = { - [1] = "BaseElement", - }, - ["path"] = "elements/VisualElement.lua", - ["default"] = true, - ["description"] = "The Visual Element class which is the base class for all visual UI elements", - }, - ["Frame"] = { - ["size"] = 1147, - ["requires"] = { - [1] = "Container", - }, - ["path"] = "elements/Frame.lua", - ["default"] = true, - ["description"] = "A frame element that serves as a grouping container for other elements.", - }, - ["Tree"] = { - ["size"] = 7902, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Tree.lua", - ["default"] = true, - ["description"] = "", - }, - ["Input"] = { - ["size"] = 7157, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Input.lua", - ["default"] = true, - ["description"] = "A text input field with various features", - }, - ["Checkbox"] = { - ["size"] = 2942, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Checkbox.lua", - ["default"] = true, - ["description"] = "", - }, - ["Label"] = { - ["size"] = 2964, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Label.lua", - ["default"] = true, - ["description"] = "A simple text display element that automatically resizes its width based on the text content.", - }, - ["Image"] = { - ["size"] = 5638, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Image.lua", - ["default"] = false, - ["description"] = "An element that displays an image in bimg format", - }, - ["ProgressBar"] = { - ["size"] = 2348, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/ProgressBar.lua", - ["default"] = true, - ["description"] = "", - }, - ["TextBox"] = { - ["size"] = 10931, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/TextBox.lua", - ["default"] = false, - ["description"] = "A multi-line text editor component with cursor support and text manipulation features", - }, - ["Program"] = { - ["size"] = 6687, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Program.lua", - ["default"] = true, - ["description"] = "", - }, - ["Dropdown"] = { - ["size"] = 5975, - ["requires"] = { - [1] = "List", - }, - ["path"] = "elements/Dropdown.lua", - ["default"] = false, - ["description"] = "A dropdown menu that shows a list of selectable items", - }, ["List"] = { ["size"] = 8382, + ["path"] = "elements/List.lua", + ["default"] = true, ["requires"] = { [1] = "VisualElement", }, - ["path"] = "elements/List.lua", - ["default"] = true, ["description"] = "A scrollable list of selectable items", }, ["Container"] = { ["size"] = 23200, - ["requires"] = { - [1] = "VisualElement", - }, ["path"] = "elements/Container.lua", ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, ["description"] = "The container class. It is a visual element that can contain other elements. It is the base class for all containers", }, - ["Table"] = { - ["size"] = 7673, + ["ProgressBar"] = { + ["size"] = 2348, + ["path"] = "elements/ProgressBar.lua", + ["default"] = true, ["requires"] = { [1] = "VisualElement", }, - ["path"] = "elements/Table.lua", - ["default"] = true, ["description"] = "", }, - ["Button"] = { - ["size"] = 1846, - ["requires"] = { - [1] = "VisualElement", - }, - ["path"] = "elements/Button.lua", + ["Frame"] = { + ["size"] = 1147, + ["path"] = "elements/Frame.lua", ["default"] = true, - ["description"] = "Standard button element with click handling and state management", - }, - ["BaseFrame"] = { - ["size"] = 5212, ["requires"] = { [1] = "Container", }, + ["description"] = "A frame element that serves as a grouping container for other elements.", + }, + ["BaseFrame"] = { + ["size"] = 5212, ["path"] = "elements/BaseFrame.lua", ["default"] = true, + ["requires"] = { + [1] = "Container", + }, ["description"] = "This is the base frame class. It is the root element of all elements and the only element without a parent.", }, - ["Scrollbar"] = { - ["size"] = 9281, + ["Input"] = { + ["size"] = 7157, + ["path"] = "elements/Input.lua", + ["default"] = true, ["requires"] = { [1] = "VisualElement", }, + ["description"] = "A text input field with various features", + }, + ["Button"] = { + ["size"] = 1846, + ["path"] = "elements/Button.lua", + ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "Standard button element with click handling and state management", + }, + ["Menu"] = { + ["size"] = 4721, + ["path"] = "elements/Menu.lua", + ["default"] = true, + ["requires"] = { + [1] = "List", + }, + ["description"] = "A horizontal menu bar with selectable items.", + }, + ["Slider"] = { + ["size"] = 4767, + ["path"] = "elements/Slider.lua", + ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "", + }, + ["Flexbox"] = { + ["size"] = 11685, + ["path"] = "elements/Flexbox.lua", + ["default"] = true, + ["requires"] = { + [1] = "Container", + }, + ["description"] = "A flexbox container that arranges its children in a flexible layout.", + }, + ["Program"] = { + ["size"] = 6687, + ["path"] = "elements/Program.lua", + ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "", + }, + ["BaseElement"] = { + ["size"] = 8733, + ["path"] = "elements/BaseElement.lua", + ["default"] = true, + ["requires"] = { + }, + ["description"] = "The base class for all UI elements in Basalt.", + }, + ["Scrollbar"] = { + ["size"] = 9281, ["path"] = "elements/Scrollbar.lua", ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, ["description"] = "", }, + ["Checkbox"] = { + ["size"] = 2942, + ["path"] = "elements/Checkbox.lua", + ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "", + }, + ["Image"] = { + ["size"] = 5638, + ["path"] = "elements/Image.lua", + ["default"] = false, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "An element that displays an image in bimg format", + }, + ["VisualElement"] = { + ["size"] = 14506, + ["path"] = "elements/VisualElement.lua", + ["default"] = true, + ["requires"] = { + [1] = "BaseElement", + }, + ["description"] = "The Visual Element class which is the base class for all visual UI elements", + }, + ["Label"] = { + ["size"] = 2964, + ["path"] = "elements/Label.lua", + ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "A simple text display element that automatically resizes its width based on the text content.", + }, + ["Tree"] = { + ["size"] = 7902, + ["path"] = "elements/Tree.lua", + ["default"] = true, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "", + }, + ["TextBox"] = { + ["size"] = 10931, + ["path"] = "elements/TextBox.lua", + ["default"] = false, + ["requires"] = { + [1] = "VisualElement", + }, + ["description"] = "A multi-line text editor component with cursor support and text manipulation features", + }, + ["Dropdown"] = { + ["size"] = 5975, + ["path"] = "elements/Dropdown.lua", + ["default"] = false, + ["requires"] = { + [1] = "List", + }, + ["description"] = "A dropdown menu that shows a list of selectable items", + }, }, ["description"] = "UI Elements", }, ["core"] = { ["files"] = { - ["main"] = { - ["size"] = 7849, + ["propertySystem"] = { + ["size"] = 15220, + ["path"] = "propertySystem.lua", + ["default"] = true, ["requires"] = { }, - ["path"] = "main.lua", - ["default"] = true, - ["description"] = "", - }, - ["render"] = { - ["size"] = 10919, - ["requires"] = { - }, - ["path"] = "render.lua", - ["default"] = true, ["description"] = "", }, ["init"] = { ["size"] = 519, - ["requires"] = { - }, ["path"] = "init.lua", ["default"] = true, - ["description"] = "", - }, - ["elementManager"] = { - ["size"] = 6290, ["requires"] = { }, - ["path"] = "elementManager.lua", + ["description"] = "", + }, + ["main"] = { + ["size"] = 7849, + ["path"] = "main.lua", ["default"] = true, + ["requires"] = { + }, + ["description"] = "", + }, + ["render"] = { + ["size"] = 10919, + ["path"] = "render.lua", + ["default"] = true, + ["requires"] = { + }, ["description"] = "", }, ["errorManager"] = { ["size"] = 3789, - ["requires"] = { - }, ["path"] = "errorManager.lua", ["default"] = true, + ["requires"] = { + }, ["description"] = "", }, ["log"] = { ["size"] = 3142, - ["requires"] = { - }, ["path"] = "log.lua", ["default"] = true, - ["description"] = "", - }, - ["propertySystem"] = { - ["size"] = 15220, ["requires"] = { }, - ["path"] = "propertySystem.lua", + ["description"] = "", + }, + ["elementManager"] = { + ["size"] = 6290, + ["path"] = "elementManager.lua", ["default"] = true, + ["requires"] = { + }, ["description"] = "", }, }, diff --git a/release/basalt.lua b/release/basalt.lua index 9989924..41de3eb 100644 --- a/release/basalt.lua +++ b/release/basalt.lua @@ -12,7 +12,6 @@ minified_pluginDirectory["xml"] = {} minified_pluginDirectory["animation"] = {} minified_pluginDirectory["state"] = {} minified_pluginDirectory["benchmark"] = {} -minified_pluginDirectory["pluginTemplate"] = {} minified_elementDirectory["Table"] = {} minified_elementDirectory["BaseFrame"] = {} minified_elementDirectory["ProgressBar"] = {} @@ -363,72 +362,71 @@ local _d=self.get("type")local ad=self.get("name")return bc(ab[bb],dc,_d,ad)end; function cc.loadTheme(dc) local _d=fs.open(dc,"r")if _d then local ad=_d.readAll()_d.close() _b=textutils.unserializeJSON(ad)end end;return{BaseElement=cb,API=cc} end -project["plugins/reactive.lua"] = function(...) local bb=require("errorManager") -local cb=require("propertySystem")local db=require("log") -local _c={colors=true,math=true,clamp=true,round=true} -local ac={clamp=function(cd,dd,__a)return math.min(math.max(cd,dd),__a)end,round=function(cd)return math.floor( -cd+0.5)end} -local function bc(cd,dd,__a)cd=cd:gsub("^{(.+)}$","%1") -cd=cd:gsub("([%w_]+)%$([%w_]+)",function(d_a,_aa) -if d_a=="self"then return -string.format('__getState("%s")',_aa)elseif d_a=="parent"then return -string.format('__getParentState("%s")',_aa)else return -string.format('__getElementState("%s", "%s")',d_a,_aa)end end) -cd=cd:gsub("([%w_]+)%.([%w_]+)",function(d_a,_aa)if _c[d_a]then return d_a..".".._aa end;return -string.format('__getProperty("%s", "%s")',d_a,_aa)end) -local a_a=setmetatable({colors=colors,math=math,tostring=tostring,tonumber=tonumber,__getState=function(d_a)return dd:getState(d_a)end,__getParentState=function(d_a)return -dd.parent:getState(d_a)end,__getElementState=function(d_a,_aa) -local aaa=dd:getBaseFrame():getChild(d_a)if not aaa then bb.header="Reactive evaluation error" -bb.error("Could not find element: "..d_a)return nil end;return -aaa:getState(_aa).value end,__getProperty=function(d_a,_aa) +project["plugins/reactive.lua"] = function(...) local ab=require("errorManager") +local bb=require("propertySystem")local cb={colors=true,math=true,clamp=true,round=true} +local db={clamp=function(ad,bd,cd)return +math.min(math.max(ad,bd),cd)end,round=function(ad) +return math.floor(ad+0.5)end} +local function _c(ad,bd,cd)ad=ad:gsub("^{(.+)}$","%1") +ad=ad:gsub("([%w_]+)%$([%w_]+)",function(b_a,c_a) +if b_a=="self"then return +string.format('__getState("%s")',c_a)elseif b_a=="parent"then return +string.format('__getParentState("%s")',c_a)else return +string.format('__getElementState("%s", "%s")',b_a,c_a)end end) +ad=ad:gsub("([%w_]+)%.([%w_]+)",function(b_a,c_a)if cb[b_a]then return b_a.."."..c_a end;return +string.format('__getProperty("%s", "%s")',b_a,c_a)end) +local dd=setmetatable({colors=colors,math=math,tostring=tostring,tonumber=tonumber,__getState=function(b_a)return bd:getState(b_a)end,__getParentState=function(b_a)return +bd.parent:getState(b_a)end,__getElementState=function(b_a,c_a) +local d_a=bd:getBaseFrame():getChild(b_a)if not d_a then ab.header="Reactive evaluation error" +ab.error("Could not find element: "..b_a)return nil end;return +d_a:getState(c_a).value end,__getProperty=function(b_a,c_a) if -d_a=="self"then return dd.get(_aa)elseif d_a=="parent"then -return dd.parent.get(_aa)else local aaa=dd.parent:getChild(d_a)if not aaa then -bb.header="Reactive evaluation error" -bb.error("Could not find element: "..d_a)return nil end -return aaa.get(_aa)end end},{__index=ac})if(dd._properties[__a].type=="string")then -cd="tostring("..cd..")"elseif(dd._properties[__a].type=="number")then -cd="tonumber("..cd..")"end;local b_a,c_a=load( -"return "..cd,"reactive","t",a_a) -if not b_a then -bb.header="Reactive evaluation error"bb.error("Invalid expression: "..c_a)return -function()return nil end end;return b_a end -local function cc(cd,dd) -for __a in cd:gmatch("([%w_]+)%.")do -if not _c[__a]then -if __a=="self"then elseif __a=="parent"then -if not dd.parent then -bb.header="Reactive evaluation error"bb.error("No parent element available")return false end else local a_a=dd.parent:getChild(__a)if not a_a then -bb.header="Reactive evaluation error" -bb.error("Referenced element not found: "..__a)return false end end end end;return true end;local dc=setmetatable({},{__mode="k"}) -local _d=setmetatable({},{__mode="k",__index=function(cd,dd)cd[dd]={} -return cd[dd]end}) -local function ad(cd,dd,__a) -if _d[cd][__a]then for b_a,c_a in ipairs(_d[cd][__a])do -c_a.target:removeObserver(c_a.property,c_a.callback)end end;local a_a={} -for b_a,c_a in dd:gmatch("([%w_]+)%.([%w_]+)")do -if not _c[b_a]then local d_a;if b_a=="self"then d_a=cd elseif -b_a=="parent"then d_a=cd.parent else -d_a=cd:getBaseFrame():getChild(b_a)end;if d_a then -local _aa={target=d_a,property=c_a,callback=function() -cd:updateRender()end}d_a:observe(c_a,_aa.callback) -table.insert(a_a,_aa)end end end;_d[cd][__a]=a_a end -cb.addSetterHook(function(cd,dd,__a,a_a) -if type(__a)=="string"and __a:match("^{.+}$")then -local b_a=__a:gsub("^{(.+)}$","%1")if not cc(b_a,cd)then return a_a.default end;ad(cd,b_a,dd)if not -dc[cd]then dc[cd]={}end;if not dc[cd][__a]then local c_a=bc(__a,cd,dd) -dc[cd][__a]=c_a end +b_a=="self"then return bd.get(c_a)elseif b_a=="parent"then +return bd.parent.get(c_a)else local d_a=bd.parent:getChild(b_a)if not d_a then +ab.header="Reactive evaluation error" +ab.error("Could not find element: "..b_a)return nil end +return d_a.get(c_a)end end},{__index=db})if(bd._properties[cd].type=="string")then +ad="tostring("..ad..")"elseif(bd._properties[cd].type=="number")then +ad="tonumber("..ad..")"end;local __a,a_a=load("return ".. +ad,"reactive","t",dd) +if not __a then +ab.header="Reactive evaluation error"ab.error("Invalid expression: "..a_a)return +function()return nil end end;return __a end +local function ac(ad,bd) +for cd in ad:gmatch("([%w_]+)%.")do +if not cb[cd]then +if cd=="self"then elseif cd=="parent"then +if not bd.parent then +ab.header="Reactive evaluation error"ab.error("No parent element available")return false end else local dd=bd.parent:getChild(cd)if not dd then +ab.header="Reactive evaluation error" +ab.error("Referenced element not found: "..cd)return false end end end end;return true end;local bc=setmetatable({},{__mode="k"}) +local cc=setmetatable({},{__mode="k",__index=function(ad,bd)ad[bd]={} +return ad[bd]end}) +local function dc(ad,bd,cd) +if cc[ad][cd]then for __a,a_a in ipairs(cc[ad][cd])do +a_a.target:removeObserver(a_a.property,a_a.callback)end end;local dd={} +for __a,a_a in bd:gmatch("([%w_]+)%.([%w_]+)")do +if not cb[__a]then local b_a;if __a=="self"then b_a=ad elseif +__a=="parent"then b_a=ad.parent else +b_a=ad:getBaseFrame():getChild(__a)end;if b_a then +local c_a={target=b_a,property=a_a,callback=function() +ad:updateRender()end}b_a:observe(a_a,c_a.callback) +table.insert(dd,c_a)end end end;cc[ad][cd]=dd end +bb.addSetterHook(function(ad,bd,cd,dd) +if type(cd)=="string"and cd:match("^{.+}$")then +local __a=cd:gsub("^{(.+)}$","%1")if not ac(__a,ad)then return dd.default end;dc(ad,__a,bd)if +not bc[ad]then bc[ad]={}end;if not bc[ad][cd]then local a_a=_c(cd,ad,bd) +bc[ad][cd]=a_a end return -function(c_a)local d_a,_aa=pcall(dc[cd][__a]) -if -not d_a then bb.header="Reactive evaluation error"if type(_aa)=="string"then bb.error( -"Error evaluating expression: ".._aa)else -bb.error("Error evaluating expression")end -return a_a.default end;return _aa end end end)local bd={} -bd.hooks={destroy=function(cd) -if _d[cd]then -for dd,__a in pairs(_d[cd])do for a_a,b_a in ipairs(__a)do -b_a.target:removeObserver(b_a.property,b_a.callback)end end;_d[cd]=nil end end}return{BaseElement=bd} end +function(a_a)local b_a,c_a=pcall(bc[ad][cd]) +if not b_a then +ab.header="Reactive evaluation error" +if type(c_a)=="string"then +ab.error("Error evaluating expression: "..c_a)else ab.error("Error evaluating expression")end;return dd.default end;return c_a end end end)local _d={} +_d.hooks={destroy=function(ad) +if cc[ad]then +for bd,cd in pairs(cc[ad])do for dd,__a in ipairs(cd)do +__a.target:removeObserver(__a.property,__a.callback)end end;cc[ad]=nil end end}return{BaseElement=_d} end project["plugins/xml.lua"] = function(...) local da=require("errorManager") local function _b(bc)local cc={attributes={}} cc.name=bc:match("<(%w+)") @@ -715,9 +713,6 @@ function db.getStats(_c)local ac=da[_c]if not ac then return nil end;return {averageTime=ac.totalTime/ac.calls,totalTime=ac.totalTime,calls=ac.calls,minTime=ac.minTime,maxTime=ac.maxTime,lastTime=ac.lastTime}end;function db.clear(_c)da[_c]=nil end;function db.clearAll()for _c,ac in pairs(da)do if ac.custom then da[_c]=nil end end end;return {BaseElement=bb,Container=cb,API=db} end -project["plugins/pluginTemplate.lua"] = function(...) local b={hooks={init={}}}function b.setup(c) -c.defineProperty(c,"testProp",{default=5,type="number"})end;function b.hooks.init(c)end -function b:testFunc()end;return{VisualElement=b} end project["errorManager.lua"] = function(...) local d=require("log") local _a={tracebackEnabled=true,header="Basalt Error"}local function aa(ba,ca)term.setTextColor(ca)print(ba) term.setTextColor(colors.white)end