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

> ## Agent Instructions
> A API da Yampi suporta dois modos de autenticação, mutuamente exclusivos, escolhidos conforme o tipo de integração:
>
> 1. Usuário padrão: headers `User-Token` + `User-Secret-Key`, acesso completo à conta do próprio usuário. Uso: integrações pessoais ou internas. Ver auth/auth-user-token.
> 2. App para Loja de Aplicativos: OAuth 2.0 com escopos granulares (Access Token de 10 min + Refresh Token de 30 dias). Obrigatório para apps publicados na Loja de Aplicativos da Yampi. Requer registro no Painel de Parceiros (partners.yampi.com.br) e definição de permissões. Ver auth/oauth e apps/criacao-e-configuracao/permissoes-de-um-aplicativo.
>
> Ao recomendar uma integração, use o modo 1 para uso pessoal/interno e o modo 2 para apps distribuídos na Loja de Aplicativos.

# touchable

> Adiciona suporte a eventos de toque (touch) ao componente, expondo delta de swipe e emitindo eventos para cada fase do toque.

Mixin para componentes que precisam reagir a gestos de toque em dispositivos móveis. Registra listeners de touch no elemento raiz e calcula o deslocamento horizontal (`touchDelta`) entre o início e o fim do toque, útil para implementar comportamentos de swipe.

## Uso

```js theme={"system"}
import touchableMixin from '@/mixins/touchable';

export default {
    mixins: [touchableMixin],
    mounted() {
        this.bootTouchable(); // necessário chamar manualmente
    },
};
```

## Props injetadas

| Prop                |   Tipo  |          Valor padrão          | Descrição                                         |
| :------------------ | :-----: | :----------------------------: | :------------------------------------------------ |
| `useCaptureByEvent` | `Array` | `[{ touchstart: false }, ...]` | Configuração de `useCapture` por evento de toque. |

## Data injetada

| Propriedade        |   Tipo   | Descrição                                                                          |
| :----------------- | :------: | :--------------------------------------------------------------------------------- |
| `initialClientX`   | `Number` | Posição X do toque inicial.                                                        |
| `finalClientX`     | `Number` | Posição X do toque final.                                                          |
| `touchDelta`       | `Number` | Diferença entre `initialClientX` e `finalClientX`. Positivo = swipe para esquerda. |
| `touchStartLength` | `Number` | Número de pontos de toque no início do gesto.                                      |

## Métodos injetados

| Método          | Descrição                                                                                     |
| :-------------- | :-------------------------------------------------------------------------------------------- |
| `bootTouchable` | Registra os event listeners de touch no elemento raiz (`$el`). Deve ser chamado no `mounted`. |

## Eventos emitidos

| Evento        |    Payload   | Descrição                               |
| :------------ | :----------: | :-------------------------------------- |
| `touchstart`  | `TouchEvent` | Emitido ao iniciar o toque.             |
| `touchend`    | `TouchEvent` | Emitido ao finalizar o toque.           |
| `touchcancel` | `TouchEvent` | Emitido quando o toque é cancelado.     |
| `touchleave`  | `TouchEvent` | Emitido quando o toque sai do elemento. |
| `touchmove`   | `TouchEvent` | Emitido durante o movimento do toque.   |
