import type { Clonable, ClonableMixinProperties } from "./core/Clonable.js";

export interface CameraLayoutProperties extends ClonableMixinProperties, Partial<Pick<CameraLayout, "column" | "columns" | "row" | "rows">> {}

/**
 * The camera layout defines the position of the current view in a distributed larger view.
 *
 * The layout selects the sub-region of the camera defined by the row and column in the large view of size
 * [rows, columns]. One application is to represent a display in a larger tile display wall.
 *
 * @since 4.29
 * @see [Camera#layout](https://developers.arcgis.com/javascript/latest/api-reference/esri-Camera.html#layout)
 */
export default class CameraLayout extends Clonable {
  constructor(properties?: CameraLayoutProperties);
  /**
   * The active column a display client renders to in a tiled display setup.
   *
   * The camera is subdivided in rows and columns, and this client will render the given column.
   *
   * @default 0
   */
  accessor column: number;
  /**
   * The number of columns to decompose the camera in a tiled display setup.
   *
   * @default 1
   */
  accessor columns: number;
  /**
   * The active row a display client renders to in a tiled display setup.
   *
   * The camera is subdivided in rows and columns, and this client will render the given row.
   *
   * @default 0
   */
  accessor row: number;
  /**
   * The number of rows to decompose the camera in a tiled display setup.
   *
   * @default 1
   */
  accessor rows: number;
}