import { PropertyValues } from "lit"; import { SpectrogramComponent } from "../spectrogram/spectrogram"; /** * @description * Specifies where you should be able to find a preference setting in the media * controls that can change the spectrogram settings. * * @example * To move the spectrogram color preferences to the overflow menu: * ```html * * ``` * * @value default - Uses sane defaults for the preference positions * @value toolbar - The preference can be changed directly from the toolbar * Warning: If the preference is not shown in the toolbar by * default it is because the icon is not very intuitive. * If you want to change, the icon use the template slots * @value overflow - The preference can be changed through the overflow (cog icon) menu * @value hidden - The preference cannot be changed through the media controls */ type PreferenceLocation = "default" | "toolbar" | "overflow" | "hidden"; declare const MediaControlsComponent_base: import("../../helpers/types/mixins").Component; /** * A simple media player with play/pause and seek functionality that can be used with the open ecoacoustics spectrograms and components. * * @csspart play-icon - Styling applied to the play icon (including default) * @csspart pause-icon - Styling applied to the pause icon (including default) * * @slot play-icon - The icon to display when the media is stopped * @slot pause-icon - The icon to display when the media is playing */ export declare class MediaControlsComponent extends MediaControlsComponent_base { static styles: import("lit").CSSResult; static readonly playShortcut = " "; private static recursiveAxesSearch; /** * A DOM selector or element reference to target the attached spectrogram * element. */ for: string | SpectrogramComponent; playIconPosition: PreferenceLocation; /** * We use a state variable to track whether the settings menu is open or not * because Shoelace sub-menus use getComputedStyle to determine whether they * are in ltr or rtl mode. * This causes some performance issues when there are a lot of sub-menus or * media controls on the page because each submenu causes a reflow whenever * they are created. * By maintaining our own open/close state we can defer the creation of the * sub-menu contents until the menu is open, meaning that we only hit this * reflow cost when the user actually wants to see the menu. * * see: https://github.com/shoelace-style/shoelace/discussions/2527 */ private areSettingsOpen; private axesElement?; private spectrogramElement?; private readonly playHandler; private readonly keyDownHandler; private readonly optionsChangeHandler; disconnectedCallback(): void; connectedCallback(): void; toggleAudio(keyboardShortcut?: boolean): void; isSpectrogramPlaying(): boolean; protected willUpdate(changedProperties: PropertyValues): void; private handleSpectrogramOptionsChange; private handlePointerDown; private handleKeyDown; private handleUpdatePlaying; private showSettings; private hideSettings; private playIcon; private pauseIcon; private discreteSettingsTemplate; private rangeSettingsTemplate; private axesSettingsTemplate; private settingsTemplate; private subMenuTemplate; render(): import("lit").TemplateResult<1>; } declare global { interface HTMLElementTagNameMap { "oe-media-controls": MediaControlsComponent; } } export {};