Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import type { WaveformAudio } from "../../../Media/WaveformAudio";
import type { RenderContext } from "../Renderer";
 
/**
 * Interface for renderer plugins that provide additional rendering functionality.
 * Plugins follow a similar lifecycle to renderers but receive their state from
 * the parent renderer.
 */
export interface RendererPlugin<Config = unknown> {
  /**
   * The plugin's configuration.
   */
  config: Config;
 
  /**
   * Initializes the plugin with audio data and render state.
   * @param audio - The WaveformAudio object.
   * @param state - The current rendering state.
   */
  init(audio: WaveformAudio, state: RenderContext): void;
 
  /**
   * Called by the parent renderer during the render cycle.
   * @param state - The current rendering state.
   */
  render(state: RenderContext): void;
 
  /**
   * Updates the plugin's configuration.
   * @param config - The new configuration to apply.
   */
  updateConfig(config: Partial<Config>): void;
 
  /**
   * Cleans up resources used by the plugin.
   */
  destroy(): void;
 
  /**
   * Optional resize handler for plugins
   */
  onResize?(): void;
}