# Rendus de timeacte

`dom-full` et `dom-shadow` partagent `renderers/dom-common/renderer.js`,
les templates DOM et les styles. Les calculs Y sans DOM sont dans `layout/layout.js`.
Le cycle d’une session est dans `renderers/render-session.js`.

```js
import { Theatre, domFullRegister, domShadowRegister } from './src/index.js';
const theatre = domShadowRegister(domFullRegister(new Theatre()));
const cadre = theatre.cadreAdd({id:'cadre',deb:0,fin:100});
// Ajouter les scènes avant ou après le montage.
cadre.mount(document.getElementById('alloframe-stage'));
cadre.renderSet('dom-shadow');
cadre.unmount();
```

Le contrat de rendu conserve `init(context)`, `mount(container)`, `invalidate(changes)`,
`flush()`, `unmount()` et `destroy()`. Un remplacement prépare le candidat avant
de retirer le moteur actif ; un échec de préparation conserve ce dernier.
Les identités des vues sont préservées lors du remplacement.

Les sections comprennent entête, rideau et pied. Le rideau masque la zone des actes,
sans découper l’entête ni le pied. Les dimensions explicites priment sur les dimensions
automatiques ; le repli vertical est de 10 px. Les actes utilisent leurs lignes ou
leur position libre ; aucun placement anticollision n’est ajouté.

`flushAutoDisable()` diffère l’affichage, pas l’état métier.
`flush()` applique les changements en attente ; un flush vide ne refait pas le rendu.
`flushAutoEnable()` applique les changements en attente et réactive l’automatisme.
Les événements sont libérés au démontage ; les contenus étrangers du conteneur restent présents.

Les classes et variables CSS sont préfixées `alloframe-`.
Les styles sont injectés par le module JavaScript partagé, y compris dans les racines shadow.
Voir [dom-shadow.md](dom-shadow.md), [templates.md](templates.md) et [validation.md](validation.md).
