mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-20 20:55:50 +00:00
49 lines
1.2 KiB
Lua
49 lines
1.2 KiB
Lua
local Rojo = script:FindFirstAncestor("Rojo")
|
|
local Plugin = Rojo.Plugin
|
|
local Packages = Rojo.Packages
|
|
|
|
local Roact = require(Packages.Roact)
|
|
|
|
local BorderedContainer = require(Plugin.App.Components.BorderedContainer)
|
|
local Array = require(script:FindFirstChild("Array"))
|
|
local Dictionary = require(script:FindFirstChild("Dictionary"))
|
|
|
|
local e = Roact.createElement
|
|
|
|
local TableDiffVisualizer = Roact.Component:extend("TableDiffVisualizer")
|
|
|
|
function TableDiffVisualizer:render()
|
|
local oldTable, newTable = self.props.oldTable or {}, self.props.newTable or {}
|
|
|
|
-- Ensure we're diffing tables, not mixing types
|
|
if type(oldTable) ~= "table" then
|
|
oldTable = {}
|
|
end
|
|
if type(newTable) ~= "table" then
|
|
newTable = {}
|
|
end
|
|
|
|
local isArray = next(newTable) == 1 or next(oldTable) == 1
|
|
|
|
return e(BorderedContainer, {
|
|
size = self.props.size,
|
|
position = self.props.position,
|
|
anchorPoint = self.props.anchorPoint,
|
|
transparency = self.props.transparency,
|
|
}, {
|
|
Content = if isArray
|
|
then e(Array, {
|
|
oldTable = oldTable,
|
|
newTable = newTable,
|
|
transparency = self.props.transparency,
|
|
})
|
|
else e(Dictionary, {
|
|
oldTable = oldTable,
|
|
newTable = newTable,
|
|
transparency = self.props.transparency,
|
|
}),
|
|
})
|
|
end
|
|
|
|
return TableDiffVisualizer
|