# 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 compatibilité avec tous les navigateurs et appareils modernes n'est pas encore garantie. Safari/WebKit, iOS, Android tactile, l'accessibilité et les régressions visuelles en contexte produit restent à valider spécifiquement. ## 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 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