> ## Documentation Index
> Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# ViewModes

> This extension simplifies working with stock [rendering pipelines](/developers/viewer/rendering-pipeline-api/pipeline-api)

<Warning>
  For correct behavior of SHADED view mode, a FilteringExtension is required to
  be present when adding this extension
</Warning>

## Accessors

### viewMode

```typescript theme={null}
get viewMode(): ViewMode
```

Gets the current view mode.

**Returns**: [*ViewMode*](/developers/viewer/extensions/view-modes-api#viewmode)

### viewModeOptions

```typescript theme={null}
get viewModeOptions(): ViewModeOptions
```

Gets the current view mode options.

**Returns**: [*ViewModeOptions*](/developers/viewer/extensions/view-modes-api#viewmodeoptions)

## Methods

### on

```typescript theme={null}
on<T extends ViewModeEvent>(
    eventType: T,
    listener: (arg: ViewModeEventPayload[T]) => void
): void
```

Method for subscribing to view mode events.

**Parameters**

* **eventType**: [*ViewModeEvent*](/developers/viewer/extensions/view-modes-api#viewmodeevent)
* **listener**: The handler for the events with [*ViewModeEventPayload*](/developers/viewer/extensions/view-modes-api#viewmodeeventpayload) arguments

**Returns**: void

### setViewMode

```typescript theme={null}
setViewMode(viewMode: ViewMode, options?: ViewModeOptions): void
```

Sets the provided [ViewMode](/developers/viewer/extensions/view-modes-api#viewmode) along with the options.

**Parameters**

* **viewMode**: [*ViewMode*](/developers/viewer/extensions/view-modes-api#viewmode)
* *optional* **options**: [*ViewModeOptions*](/developers/viewer/extensions/view-modes-api#viewmodeoptions)

**Returns**: void

## Typedefs

### ViewMode

```typescript theme={null}
enum ViewMode {
  DEFAULT,
  SOLID,
  PEN,
  ARCTIC,
  SHADED,
}
```

Defines the supported view modes.

### ViewModeEvent

```typescript theme={null}
enum ViewModeEvent {
  Changed = 'view-mode-changed',
}
```

Defines the supported view modes events.

### ViewModeOptions

```typescript theme={null}
type ViewModeOptions = PipelineOptions & EdgesPipelineOptions;
```

A union of available [rendering pipeline options](/developers/viewer/rendering-pipeline-api/pipeline-api#pipelineoptions).

### ViewModeEventPayload

```typescript theme={null}
interface ViewModeEventPayload {
  [ViewModeEvent.Changed]: ViewMode;
}
```

Defines the supported view modes events payloads.
