import { Filtered, Message, MessageType } from "silentium"; /** * Allows locking messages * if a $lock message arrives * https://silentium-lab.github.io/silentium-components/#/behaviors/lock */ export function Lock($base: MessageType, $lock: MessageType) { return Message(function LockImpl(r) { let locked = false; $lock.then(function lockLockSub(newLock) { locked = newLock; }); const i = Filtered($base, () => !locked); i.then(function lockBaseSub(v) { r(v); }); }); }