# turn.js 3e release, fork local de maintenance turn.js est un plugin jQuery qui affiche des pages HTML sous forme de livre ou de magazine avec une transition de page tournée. Ce dépôt contient une copie locale maintenue de la 3e release originale de `turn.js`. Le travail actuel vise à rendre la librairie plus facile à tester et plus sûre avec les versions modernes de jQuery, tout en conservant la forme de l'API historique. Version anglaise : [readme.md](readme.md) ## Etat actuel Ce fork a été testé avec jQuery `4.0.0` dans la démo minimale et il est couvert par des tests unitaires et visuels automatisés. Le coeur du plugin peut s'initialiser, naviguer, redimensionner, ajouter/supprimer des pages et se détruire correctement dans les tests sur navigateur moderne. La couverture visuelle automatisée tourne actuellement sur Chromium desktop et sur un viewport mobile compact Chromium. Un projet Playwright WebKit est configuré quand l'hôte possède les dépendances système WebKit requises ; sur la machine locale actuelle, il n'est pas activé car `libgstcodecparsers-1.0.so.0` est absente. Les appareils iOS/Android natifs, l'accessibilité et les régressions visuelles en contexte produit restent à valider spécifiquement. La stratégie de maintenance et les travaux futurs sont documentés dans [docs/roadmap.md](docs/roadmap.md). ## Modifications réalisées - Migration des enregistrements d'événements internes depuis les anciens patterns jQuery `.bind()` / `.unbind()` vers `.on()` / `.off()`. - Modernisation des événements d'entrée pour privilégier Pointer Events quand ils sont disponibles, tout en conservant les chemins touch et souris en fallback. - Ajout de namespaces d'événements : - `.turn` pour les événements du livre et du document ; - `.turnFlip` pour les événements internes des pages pliées. - Ajout d'une méthode publique `destroy` : - stoppe les animations ; - détache les handlers d'événements de turn.js ; - supprime les wrappers turn et flip ; - restaure les pages originales comme enfants directs ; - restaure les attributs `style` et `class` d'origine ; - supprime les données jQuery internes de turn.js sans effacer les données utilisateur sans lien. - Remplacement de la boucle d'animation interne `setInterval` par `requestAnimationFrame`. - Correction de `animatef(false)` pour que l'annulation d'une animation annule bien la frame planifiée. - Modernisation des sorties CSS : - les gradients utilisent maintenant la syntaxe standard `linear-gradient(...deg, ...)` ; - les gradients de pli conservent des stops normalisés entre `0` et `100%` avec des ombres plus douces, sans highlight blanc ; - les transforms écrivent maintenant les propriétés standard `transform` et `transform-origin`, avec fallback préfixé quand il est détecté. - Déplacement des styles statiques des wrappers vers `turn.css` et des classes internes, en conservant inline les valeurs dynamiques de taille, position, z-index, transform et gradient. - Ajout d'une démo navigateur minimale avec jQuery `4.0.0`. - Ajout de texte et d'images locales dans la démo minimale. - Correction de la mise en page de la démo minimale afin que les dimensions mesurées par turn.js correspondent à la taille réellement rendue des pages. - Ajout de tests unitaires avec Vitest et JSDOM. - Ajout de tests visuels Playwright et de snapshots de référence pour la démo minimale. - Ajout d'une validation visuelle Chromium mobile pour la démo minimale et les démos magazine. - Ajout d'une validation Playwright WebKit conditionnelle pour les hôtes qui possèdent les dépendances système WebKit requises. - Ajout des scripts npm et de la configuration projet pour les tests automatisés. - Régénération de `turn.min.js` à partir de la source mise à jour. ## Démo Ouvrir la démo minimale directement dans un navigateur : ```bash xdg-open demos/minimal/index.html ``` La démo charge : - jQuery `4.0.0` depuis le CDN jQuery ; - `../../turn.css` ; - `../../turn.js` ; - des images locales depuis `demos/minimal/assets`. Elle contient un livre de six pages avec boutons précédent/suivant, navigation clavier, texte et images. ## Installation pour le développement Installer les dépendances : ```bash npm install ``` Les dépendances de développement incluent : - `jquery` `4.0.0` ; - `vitest` ; - `jsdom` ; - `@playwright/test`. ## Utilisation HTML minimal : ```html