From 16a9ad205e5086bf88f5b2fd175b987d17fd91e0 Mon Sep 17 00:00:00 2001 From: Daimywil Date: Wed, 29 Jan 2025 20:50:47 +0100 Subject: [PATCH 1/2] added operator --- src/rx/src/Shared/Rx.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/rx/src/Shared/Rx.lua b/src/rx/src/Shared/Rx.lua index bd9cdd86b73..8d5b95627b9 100644 --- a/src/rx/src/Shared/Rx.lua +++ b/src/rx/src/Shared/Rx.lua @@ -1703,6 +1703,34 @@ function Rx.skip(toSkip) end end +--[=[ + https://rxjs.dev/api/operators/debounceTime + + @param seconds number + @return (source: Observable) -> Observable +]=] +function Rx.debounceTime(seconds) + assert(type(seconds) == "number", "Bad seconds") + + return function(source) + assert(Observable.isObservable(source), "Bad observable") + + return Observable.new(function(sub) + local maid = Maid.new() + + maid:GiveTask(source:Subscribe(function(...) + local args = table.pack(...) + maid._delay = task.delay(seconds, function() + maid._delay = nil + sub:Fire(table.unpack(args, 1, args.n)) + end) + end)) + + return maid + end) + end +end + --[=[ Defers the subscription and creation of the observable until the actual subscription of the observable. From 7b0d2d936cae6a2ccc0868645de8985614189dfa Mon Sep 17 00:00:00 2001 From: Daimywil Date: Sun, 10 Aug 2025 16:10:01 +0200 Subject: [PATCH 2/2] applied stylua formatting --- src/rx/src/Shared/Rx.lua | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/rx/src/Shared/Rx.lua b/src/rx/src/Shared/Rx.lua index 11827b5f064..9feddaf070b 100644 --- a/src/rx/src/Shared/Rx.lua +++ b/src/rx/src/Shared/Rx.lua @@ -1712,25 +1712,25 @@ end @return (source: Observable) -> Observable ]=] function Rx.debounceTime(seconds) - assert(type(seconds) == "number", "Bad seconds") + assert(type(seconds) == "number", "Bad seconds") - return function(source) - assert(Observable.isObservable(source), "Bad observable") + return function(source) + assert(Observable.isObservable(source), "Bad observable") - return Observable.new(function(sub) - local maid = Maid.new() + return Observable.new(function(sub) + local maid = Maid.new() - maid:GiveTask(source:Subscribe(function(...) - local args = table.pack(...) - maid._delay = task.delay(seconds, function() - maid._delay = nil - sub:Fire(table.unpack(args, 1, args.n)) - end) - end)) + maid:GiveTask(source:Subscribe(function(...) + local args = table.pack(...) + maid._delay = task.delay(seconds, function() + maid._delay = nil + sub:Fire(table.unpack(args, 1, args.n)) + end) + end)) - return maid - end) - end + return maid + end) + end end --[=[