Skip to content

Commit dd9bb07

Browse files
authored
Merge pull request #34 from grapp-dev/fix/signal-value-emission
fix: ensure that only the relevant signal value is emitted
2 parents 1169083 + 3395512 commit dd9bb07

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

lua/nui-components/signal/value.lua

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
local Observable = require("nui-components.rx.observable")
12
local fn = require("nui-components.utils.fn")
23

34
local SignalValue = {}
@@ -10,8 +11,12 @@ function SignalValue.create(subject, key)
1011
_private = {
1112
key = key,
1213
subject = subject,
13-
observable = subject:map(function(value)
14-
return value[key]
14+
observable = Observable.defer(function()
15+
return subject
16+
:map(function(value)
17+
return value[key]
18+
end)
19+
:distinct_until_changed(vim.deep_equal)
1520
end),
1621
},
1722
}
@@ -28,7 +33,7 @@ function SignalValue:get_observer_value()
2833
end
2934

3035
function SignalValue:get_observable()
31-
return self._private.observable:distinct_until_changed(vim.deep_equal)
36+
return self._private.observable
3237
end
3338

3439
function SignalValue:map(map_fn)

0 commit comments

Comments
 (0)