import type Accessor from "../../core/Accessor.js";

export interface VisibleElementsProperties extends Partial<Pick<VisibleElements, "directionalButtons" | "rotationResetButton" | "rotationSlider">> {}

/**
 * The visible elements that are displayed within the widget.
 * This provides the ability to turn individual elements of the widget's display on/off.
 * Alternatively, developers may also use CSS (e.g. `display: none`) to show/hide elements, such as labels.
 */
export default abstract class VisibleElements extends Accessor {
  /**
   * Indicates whether to display the directional pad buttons.
   *   This can be disabled if only the map rotation slider is needed
   *
   * @default true
   */
  accessor directionalButtons: boolean;
  /**
   * Indicates whether to display the button to reset the rotation
   *   angle. If rotation slider is hidden, rotation reset button will be hidden too.
   *
   * @default false
   */
  accessor rotationResetButton: boolean;
  /**
   * Indicates whether to display the map rotation slider.
   *   This can be disabled if only the directional buttons are needed. Note, this is independent of the
   *   `view.constraints.rotationEnabled` setting.
   *
   * @default false
   */
  accessor rotationSlider: boolean;
}