diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-07-08 01:35:28 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-07-08 01:58:25 -0400 |
| commit | c631c8fc855b1854f14fc7fbf1d8afedaa37a0db (patch) | |
| tree | e14698c4a26382461f3290564212e77fdaca5d1e /ui/lib/swatch/event-capture.svelte.js | |
| parent | aeb159c401ef446e6564e5a3643027560a3e22f4 (diff) | |
Event capture and display tools.
This is meant to be used in swatches, to display the events and callbacks generated by a component as part of the swatch. The usage pattern is described in the comments (in both places).
Naturally, this has its own swatch.
Diffstat (limited to 'ui/lib/swatch/event-capture.svelte.js')
| -rw-r--r-- | ui/lib/swatch/event-capture.svelte.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ui/lib/swatch/event-capture.svelte.js b/ui/lib/swatch/event-capture.svelte.js new file mode 100644 index 0000000..32c0f39 --- /dev/null +++ b/ui/lib/swatch/event-capture.svelte.js @@ -0,0 +1,22 @@ +/* + * The interface exposed by this class is designed to closely match the interface expected by + * the `EventLog` component, so that you can do this: + * + * let capture = $state(new EventCapture()); + * const someEvent = capture.on('someEvent'); + * + * // … + * + * <EventLog events={capture.events} clear={capture.clear.bind(capture)} /> + */ +export default class EventCapture { + events = $state([]); + + on(event) { + return (...args) => this.events.push({ event, args }); + } + + clear() { + this.events = []; + } +} |
