import { Color } from '../Core';

/**
 * Contain all updatable options for a Surface.
 */
export interface SurfaceUpdateOptions {
    /**
     * Custom color of the Surface while not clicked or overflown.
     * Note that if current Surface has no color it'll use its bundle defined color.
     * To set back current Surface color to bundle's defined, update this member with 'initial' as value.
     */
    readonly color?: Color | 'initial';
    /**
     * Change the behavior of current Surface.
     * If set to true, it'll be clickable, its color may change while clicked or overflown.
     */
    readonly isInteractive?: boolean;
    /**
     * Color of the Surface while overflown.
     * Note that if current Surface has no hover color and is interactive, a global hover color would be used @see {@link View~View.surfaceHoverColor | View.surfaceHoverColor}.
     * In order to set it back to global hover color, set hoverColor to 'default'.
     */
    readonly hoverColor?: Color | 'default';
    /**
     * Color of the Surface while clicked.
     * Note that if current Surface has no selection color and is interactive, a global hover color would be used @see {@link View~View.surfaceSelectionColor | View.surfaceSelectionColor}.
     * In order to set it back to global hover color, set selectionColor to 'default'.
     */
    readonly selectionColor?: Color | 'default';
    /**
     * Height of the displayed shape, relative to its floor ground.
     */
    readonly extrusionHeight?: number;
    /**
     * If set to false, current Surface won't be rendered. This flag is not used from surfaces defined through VisioMapEditor.
     */
    readonly isVisible?: boolean;
    /**
     * The opacity of the shape (only valid for created surfaces, not for surfaces with isFromBundle set to true).
     */
    readonly opacity?: number;
}
