Vendor helgoboss/helgobox (ReaLearn) as basis for custom UI fork

Stripped upstream git history; starting point for replacing the native
SWELL/Win32 mapping UI with something more suited to bulk editing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Paul Lipscomb
2026-07-15 17:38:29 -04:00
parent 583ed77a67
commit e58f06d9fa
2232 changed files with 685575 additions and 1 deletions
@@ -0,0 +1,56 @@
--!strict
local realearn = require("realearn")
local partial = require("partial")
local util = {}
--- Creates a partial mapping.
---
--- A partial mapping can be conveniently mixed with other partial mappings by using the + operator.
--- This enables a very intuitive but still flexible way of writing mappings.
---
--- Ideally, we would return Partial & Mapping but Luau has still issues with that. In particular, it
--- can't resolve the + operator when used in an intersection.
function util.partial_mapping(m: realearn.Mapping): partial.Partial
return partial.Partial.new(m)
end
--- Returns the values of the given key-value table as array.
function util.to_array<V>(t: { [string]: V }): { V }
local array = {}
for _, v in t do
table.insert(array, v)
end
return array
end
--- Returns the values of the given key-value table as array, sorted by the values'
--- `index` key.
function util.sorted_by_index<V>(t: { [string]: V }): { V }
local sorted = util.to_array(t)
local compare_index = function(left: any, right: any): boolean
return left.index < right.index
end
table.sort(sorted, compare_index)
return sorted
end
--- Takes a key-value table and adds a new attribute `id` to each value that
--- corresponds to the key.
function util.set_keys_as_ids(t: { [string]: { [string]: any } })
for key, value in pairs(t) do
value.id = key
end
end
--- Puts each `label` property value of the given array of tables into a new array.
function util.extract_labels(array: { { [string]: any } }): { string }
local labels = {}
for _, element in ipairs(array) do
table.insert(labels, element.label)
end
return labels
end
return util