diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0f08e1e..3f6b798 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -76,6 +76,6 @@ jobs: run: | git config --global user.name 'github-actions[bot]' git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' - git add config.lua BasaltLS.lua release/basalt.lua CHANGELOG.md - git commit -m "Update config, BasaltLS definitions, bundle and changelog" || exit 0 + git add config.lua BasaltLS.lua release/basalt-full.lua release/basalt-core.lua CHANGELOG.md + git commit -m "Update config, BasaltLS definitions, full and core bundles, and changelog" || exit 0 git push \ No newline at end of file diff --git a/install.lua b/install.lua index 2a8b83b..7545c0c 100644 --- a/install.lua +++ b/install.lua @@ -1,5 +1,6 @@ local basalt -local releasePath = "https://raw.githubusercontent.com/Pyroxenium/Basalt2/refs/heads/main/release/basalt.lua" +local fullPath = "https://raw.githubusercontent.com/Pyroxenium/Basalt2/refs/heads/main/release/basalt-full.lua" +local corePath = "https://raw.githubusercontent.com/Pyroxenium/Basalt2/refs/heads/main/release/basalt-core.lua" local devPath = "https://raw.githubusercontent.com/Pyroxenium/Basalt2/refs/heads/main/src/" local configPath = "https://raw.githubusercontent.com/Pyroxenium/Basalt2/refs/heads/main/config.lua" local luaLSPath = "https://raw.githubusercontent.com/Pyroxenium/Basalt2/refs/heads/main/BasaltLS.lua" @@ -31,7 +32,7 @@ end if(args[1] == "-r")or(args[1] == "--release")then print("Installing release version...") - local request = http.get(releasePath) + local request = http.get(fullPath) if not request then error("Failed to download Basalt") end @@ -83,7 +84,7 @@ if(args[1] == "-d")or(args[1] == "--dev")then end -local basaltRequest = http.get(releasePath) +local basaltRequest = http.get(fullPath) if not basaltRequest then error("Failed to download Basalt") end @@ -131,7 +132,10 @@ local function getScreenPosition(index) end local function createScreen(index) - local screen = main:addFrame(coloring) + local screen = main:addScrollFrame(coloring) + :setScrollBarBackgroundColor(colors.black) + --:setScrollBarBackgroundColor2(colors.gray) + :setScrollBarColor(colors.lightGray) :onScroll(function(self, direction) local height = getChildrenHeight(self) local scrollOffset = self:getOffsetY() @@ -422,7 +426,7 @@ end local function installRelease(installPath, log, progressBar) logMessage(log, "Installing Release version...") - local request = http.get(releasePath) + local request = http.get(fullPath) if not request then logMessage(log, "Failed to download release version, aborting installation.") return diff --git a/src/elements/ScrollFrame.lua b/src/elements/ScrollFrame.lua index c9ece6b..8993d76 100644 --- a/src/elements/ScrollFrame.lua +++ b/src/elements/ScrollFrame.lua @@ -91,8 +91,8 @@ ScrollFrame.defineProperty(ScrollFrame, "showScrollBar", {default = true, type = ---@property scrollBarSymbol string "_" The symbol used for the scrollbar handle ScrollFrame.defineProperty(ScrollFrame, "scrollBarSymbol", {default = " ", type = "string", canTriggerRender = true}) ----@property scrollBarBackground string "\127" The symbol used for the scrollbar background -ScrollFrame.defineProperty(ScrollFrame, "scrollBarBackground", {default = "\127", type = "string", canTriggerRender = true}) +---@property scrollBarBackgroundSymbol string "\127" The symbol used for the scrollbar background +ScrollFrame.defineProperty(ScrollFrame, "scrollBarBackgroundSymbol", {default = "\127", type = "string", canTriggerRender = true}) ---@property scrollBarColor color lightGray Color of the scrollbar handle ScrollFrame.defineProperty(ScrollFrame, "scrollBarColor", {default = colors.lightGray, type = "color", canTriggerRender = true}) @@ -100,6 +100,9 @@ ScrollFrame.defineProperty(ScrollFrame, "scrollBarColor", {default = colors.ligh ---@property scrollBarBackgroundColor color gray Background color of the scrollbar ScrollFrame.defineProperty(ScrollFrame, "scrollBarBackgroundColor", {default = colors.gray, type = "color", canTriggerRender = true}) +---@property scrollBarBackgroundColor2 secondary color black Background color of the scrollbar +ScrollFrame.defineProperty(ScrollFrame, "scrollBarBackgroundColor2", {default = colors.black, type = "color", canTriggerRender = true}) + ---@property contentWidth number 0 The total width of the content (calculated from children) ScrollFrame.defineProperty(ScrollFrame, "contentWidth", { default = 0, @@ -378,20 +381,19 @@ function ScrollFrame:render() local scrollHeight = viewportHeight local handleSize = math.max(1, math.floor((viewportHeight / contentHeight) * scrollHeight)) local maxOffset = contentHeight - viewportHeight - local scrollBarSymbol = self.get("scrollBarSymbol") - local scrollBarBg = self.get("scrollBarBackground") + local scrollBarBg = self.get("scrollBarBackgroundSymbol") local scrollBarColor = self.get("scrollBarColor") local scrollBarBgColor = self.get("scrollBarBackgroundColor") - local foreground = self.get("foreground") + local scrollBarBg2Color = self.get("scrollBarBackgroundColor2") local currentPercent = maxOffset > 0 and (offsetY / maxOffset * 100) or 0 local handlePos = math.floor((currentPercent / 100) * (scrollHeight - handleSize)) + 1 for i = 1, scrollHeight do if i >= handlePos and i < handlePos + handleSize then - self:blit(width, i, scrollBarSymbol, tHex[scrollBarColor], tHex[scrollBarBgColor]) + self:blit(width, i, " ", tHex[scrollBarColor], tHex[scrollBarColor]) else - self:blit(width, i, scrollBarBg, tHex[foreground], tHex[scrollBarBgColor]) + self:blit(width, i, scrollBarBg, tHex[scrollBarBgColor], tHex[scrollBarBg2Color]) end end end @@ -400,20 +402,19 @@ function ScrollFrame:render() local scrollWidth = viewportWidth local handleSize = math.max(1, math.floor((viewportWidth / contentWidth) * scrollWidth)) local maxOffset = contentWidth - viewportWidth - local scrollBarSymbol = self.get("scrollBarSymbol") - local scrollBarBg = self.get("scrollBarBackground") + local scrollBarBg = self.get("scrollBarBackgroundSymbol") local scrollBarColor = self.get("scrollBarColor") local scrollBarBgColor = self.get("scrollBarBackgroundColor") - local foreground = self.get("foreground") + local scrollBarBg2Color = self.get("scrollBarBackgroundColor2") local currentPercent = maxOffset > 0 and (offsetX / maxOffset * 100) or 0 local handlePos = math.floor((currentPercent / 100) * (scrollWidth - handleSize)) + 1 for i = 1, scrollWidth do if i >= handlePos and i < handlePos + handleSize then - self:blit(i, height, scrollBarSymbol, tHex[scrollBarColor], tHex[scrollBarBgColor]) + self:blit(i, height, " ", tHex[scrollBarColor], tHex[scrollBarColor]) else - self:blit(i, height, scrollBarBg, tHex[foreground], tHex[scrollBarBgColor]) + self:blit(i, height, scrollBarBg, tHex[scrollBarBgColor], tHex[scrollBarBg2Color]) end end end diff --git a/tools/bundler.lua b/tools/bundler.lua index 5187188..e645351 100644 --- a/tools/bundler.lua +++ b/tools/bundler.lua @@ -1,5 +1,21 @@ local minify = loadfile("tools/minify.lua")() +local function loadConfig() + local config = dofile("config.lua") + return config +end + +local function isDefaultFile(path, config) + for _, category in pairs(config.categories) do + for fileName, fileInfo in pairs(category.files) do + if fileInfo.path == path and fileInfo.default == true then + return true + end + end + end + return false +end + local function scanDir(dir) local files = {} for file in io.popen('find "'..dir..'" -type f -name "*.lua"'):lines() do @@ -13,9 +29,11 @@ local function scanDir(dir) return files end -local function bundle() +local function bundle(coreOnly) + local outputFile = coreOnly and "release/basalt-core.lua" or "release/basalt-full.lua" + local config = coreOnly and loadConfig() or nil local files = scanDir("src") - + local output = { 'local minified = true\n', 'local minified_elementDirectory = {}\n', @@ -27,51 +45,61 @@ local function bundle() } for _, file in ipairs(files) do + if not coreOnly or isDefaultFile(file.path, config) then + local elementName = file.path:match("^elements/(.+)%.lua$") + if elementName then + table.insert(output, string.format( + 'minified_elementDirectory["%s"] = {}\n', + elementName + )) + end - local elementName = file.path:match("^elements/(.+)%.lua$") - if elementName then - table.insert(output, string.format( - 'minified_elementDirectory["%s"] = {}\n', - elementName - )) - end - - local pluginName = file.path:match("^plugins/(.+)%.lua$") - if pluginName then - table.insert(output, string.format( - 'minified_pluginDirectory["%s"] = {}\n', - pluginName - )) + local pluginName = file.path:match("^plugins/(.+)%.lua$") + if pluginName then + table.insert(output, string.format( + 'minified_pluginDirectory["%s"] = {}\n', + pluginName + )) + end end end + local includedFiles = {} for _, file in ipairs(files) do - local f = io.open(file.fullPath, "r") - local content = f:read("*all") - f:close() + if not coreOnly or isDefaultFile(file.path, config) then + table.insert(includedFiles, file) - local success, minified = minify(content) - if not success then - print("Failed to minify " .. file.path) - os.exit(1) + local f = io.open(file.fullPath, "r") + local content = f:read("*all") + f:close() + + local success, minified = minify(content) + if not success then + print("Failed to minify " .. file.path) + os.exit(1) + end + + table.insert(output, string.format( + 'project["%s"] = function(...) %s end\n', + file.path, minified + )) end - - table.insert(output, string.format( - 'project["%s"] = function(...) %s end\n', - file.path, minified - )) end table.insert(output, 'return project["main.lua"]()') - local out = io.open("release/basalt.lua", "w") + local out = io.open(outputFile, "w") out:write(table.concat(output)) out:close() - print("Successfully bundled files:") - for _, file in ipairs(files) do + print("Successfully bundled " .. outputFile .. ":") + for _, file in ipairs(includedFiles) do print("- " .. file.path) end + print("Total files: " .. #includedFiles) end -bundle() +print("=== Building Full Version ===") +bundle(false) +print("\n=== Building Core Version ===") +bundle(true)