# Cartes mentales

- Human documentation: [https://docs.univer.ai/fr-FR/guides/boards/features/mind-maps](https://docs.univer.ai/fr-FR/guides/boards/features/mind-maps)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/boards/features/mind-maps.md](https://docs.univer.ai/fr-FR/guides/boards/features/mind-maps.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [boards/features/mind-maps.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/boards/features/mind-maps.fr-FR.mdx)

---

#### Package metadata

```json
{
  "mobile": true,
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs-pro/boards-mind",
      "facade": "@univerjs-pro/boards-mind/facade"
    },
    {
      "client": "@univerjs-pro/boards-mind-ui",
      "locale": "@univerjs-pro/boards-mind-ui/locale/fr-FR",
      "style": "@univerjs-pro/boards-mind-ui/lib/index.css"
    }
  ],
  "license": true,
  "server": false
}
```

La prise en charge des cartes mentales dans Boards est facultative. Ajoutez-la si votre produit nécessite des nœuds de carte mentale et des interactions avec ceux-ci dans le canevas Board.

## Enregistrer la prise en charge des cartes mentales

```ts
import { UniverBoardsMindPlugin } from '@univerjs-pro/boards-mind'
import { UniverBoardsMindUIPlugin } from '@univerjs-pro/boards-mind-ui'
import BoardsMindUIFrFR from '@univerjs-pro/boards-mind-ui/locale/fr-FR'
import '@univerjs-pro/boards-mind/facade'
import '@univerjs-pro/boards-mind-ui/lib/index.css'

univer.registerPlugin(UniverBoardsMindPlugin)
univer.registerPlugin(UniverBoardsMindUIPlugin)
```

## Prise en charge mobile

Configurez d’abord l’[éditeur mobile](https://docs.univer.ai/fr-FR/guides/boards/getting-started/installation.md#mobile-support). Dans l’initialisation en mode plugin de cette page, remplacez les inscriptions de bureau ci-dessous par les exports mobiles des mêmes paquets **avant d’ouvrir un document**. Conservez modèles, styles, traductions et imports Facade ; n’enregistrez pas les deux variantes.

| Paquet                         | Inscription de bureau      | Inscription mobile               |
| ------------------------------ | -------------------------- | -------------------------------- |
| `@univerjs-pro/boards-mind-ui` | `UniverBoardsMindUIPlugin` | `UniverBoardsMindMobileUIPlugin` |

## Rôle des packages

* `@univerjs-pro/boards-mind` intègre les éléments de carte mentale au modèle Board.
* `@univerjs-pro/boards-mind-ui` ajoute la modification, le rendu et les interactions avec l'interface utilisateur des cartes mentales. Il fournit également `@univerjs-pro/boards-mind-ui/locale/*` et `@univerjs-pro/boards-mind-ui/lib/index.css` pour les éditeurs utilisés dans un navigateur.

## Choix selon l'environnement d'exécution

Utilisez les deux packages dans un éditeur exécuté dans un navigateur. Pour traiter des instantanés côté serveur, enregistrez le package du modèle avec `UniverBoardsPlugin` et n'incluez pas les packages d'interface utilisateur.

Enregistrez la prise en charge des cartes mentales avant d'ouvrir des instantanés qui contiennent des éléments de carte mentale.

## Facade API

Utilisez la Facade structurée plutôt que de modifier séparément les formes et les connecteurs.

```ts
const board = univerAPI.getActiveBoard()
if (!board) throw new Error('No active Board')

const mindMap = board.insertMindMap({
  left: 180,
  top: 180,
  root: {
    text: 'Release',
    children: [
      { text: 'Product', children: [{ text: 'Scope' }, { text: 'UX' }] },
      { text: 'Engineering', children: [{ text: 'API' }, { text: 'QA' }] },
      { text: 'Launch', children: [{ text: 'Docs' }] },
    ],
  },
})
if (!mindMap) throw new Error('Cannot insert mind map')

const qa = mindMap.getNodes().find(node => node.getText() === 'QA')
qa?.addChild({ text: 'Automation' })
```

`FBoard` expose `insertMindMap`, `getMindMap` et `getMindMaps`. La carte permet de rechercher les nœuds et descendants, gérer disposition et limites, appeler `reflow`, `setLayout`, `setBranchLineType` et supprimer. Les nœuds gèrent texte, insertion d’enfants ou de frères, changement de parent, promotion, détachement, ordre, styles et repli.

## Réorganiser dans des limites

`reflow()` dispose et centre atomiquement la carte dans un rectangle en coordonnées Board, sans changer la taille des nœuds et du texte. Il réessaie par défaut avec les espacements minimaux autorisés. Si la carte ne tient toujours pas, Board reste inchangé et le résultat contient `bounds-too-small` et `requiredBounds`.

```ts
const result = mindMap.reflow({
  bounds: { left: 80, top: 80, width: 1_000, height: 600 },
  padding: 24,
})

if (!result.success) {
  console.warn(result.reason, result.requiredBounds)
}
```

Le rectangle sert uniquement au placement : il ne change pas le parent, ne rogne pas et ne redimensionne pas le conteneur. Une réorganisation réussie forme une seule opération d’annulation.
