Skip to content

Commit

Permalink
feat: dynamicEventHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Apr 4, 2022
1 parent 9d0bf70 commit ce98257
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/event.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,20 @@ export function lazyEventHandler (factory: LazyEventHandler): EventHandler {
/** @deprecated use lazyEventHandler() */
export const defineLazyEventHandler = lazyEventHandler

export interface DynamicEventHandler extends EventHandler {
set: (handler: EventHandler) => void
}
export function dynamicEventHandler (initial?: EventHandler): DynamicEventHandler {
let current: EventHandler | undefined = initial
const wrapper = eventHandler((event) => {
if (current) {
return current(event)
}
}) as DynamicEventHandler
wrapper.set = (handler) => { current = handler }
return wrapper
}

export function isEventHandler (input: any): input is EventHandler {
return '__is_handler__' in input
}
Expand Down

0 comments on commit ce98257

Please sign in to comment.