---
title: "OutputTransformation"
description: "A function ([transformOutput]) that transforms the text presented to a user by a
[BasicTextField]."
type: "interface"
---

<div class='type'>Interface</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>



```kotlin
fun interface OutputTransformation
```


A function (`transformOutput`) that transforms the text presented to a user by a
`BasicTextField`.


## Functions

```kotlin
fun TextFieldBuffer.transformOutput()
```


Given a `TextFieldBuffer` that contains the contents of a `TextFieldState`, modifies the
text. After this function returns, the contents of the buffer will be presented to the user
as the contents of the text field instead of the raw contents of the `TextFieldState`.

Use this function to change the visual and semantics representation of the text. For example,
a phone number field can format the raw input by adding parentheses and white spaces in
between characters.

The result of this transformation is purely representational and does not affect the contents
of `TextFieldState`.

Selection and cursor positions are managed internally by `BasicTextField`. If there's a range
of inserted characters via this `OutputTransformation`, selection or cursor never goes in
between these inserted characters. Furthermore, changing the selection or cursor position of
this `TextFieldBuffer` does not have any affect. Please use `InputTransformation` or
`TextFieldState.edit` to manipulate the current selection placement.

Note that this transformation is called every time a new text needs to be displayed. This
implies that the contents of `TextFieldBuffer` will always be what the `TextFieldState` holds
currently. All the changes made here are discarded after text is presented to the user.


You can call `TextFieldBuffer.addStyle` to add partial styling to the presented text.



