Files
metabuilder/packages/data_table/seed/scripts/selection/select_range.lua

33 lines
841 B
Lua

-- Select a range of rows (for shift-click)
-- Single function module for data table selection
---@class SelectRange
local M = {}
---Select a range of rows (for shift-click)
---@param state SelectionState Current selection state
---@param from_index integer Start row index (1-indexed)
---@param to_index integer End row index (1-indexed)
---@return SelectionState New selection state
function M.selectRange(state, from_index, to_index)
local newSelected = {}
for k, v in pairs(state.selected) do
newSelected[k] = v
end
local startIdx = math.min(from_index, to_index)
local endIdx = math.max(from_index, to_index)
for i = startIdx, endIdx do
newSelected[i] = true
end
return {
selected = newSelected,
mode = state.mode,
lastSelected = to_index
}
end
return M