@gram-lang/renderer
Gère le rendu d’un CompilationResult (ou d’un AnalyzedCompilationResult) en Markdown, en HTML, ou en un document HTML autonome optimisé pour l’impression. Si vous construisez une interface front-end native (React, Vue, Svelte, etc.), vous n’aurez probablement pas besoin de ce package : vous consommerez le JSON directement. Voir Créer une UI personnalisée.
toMarkdown / toHTML / toPrintHTML
Section intitulée « toMarkdown / toHTML / toPrintHTML »toPrintHTML génère un document HTML complet et autonome (<style> inline, règles @page A4, aucune dépendance externe), idéal pour des fonctionnalités « exporter en PDF » ou « imprimer la recette ». À l’inverse, toHTML retourne un simple fragment conçu pour s’intégrer discrètement dans une page existante.
Ces trois formateurs partagent un seul et même moteur de traversée sous le capot (RenderBackend). Cela garantit que les résumés nutritionnels, les notes de bas de page, les badges de masse brute ou les avertissements d’unités incompatibles seront rendus de manière parfaitement homogène, que vous cibliez du Markdown, du HTML ou du Print.
RendererOptions
Section intitulée « RendererOptions »| Option | Type | Description |
|---|---|---|
icons | RendererIcons | Surcharge tout ou partie des icônes par défaut (voir DEFAULT_ICONS ci-dessous). |
classes | RendererClasses | Surcharge les noms de classes CSS appliquées aux éléments générés (HTML/print uniquement). |
formatFraction | (value: number) => string | Fonction de formatage décimal → fraction personnalisée (par défaut, on gère les fractions courantes, ex : 0.5 → "1/2"). |
formatDuration | (minutes: number) => string | Formateur de durée personnalisé (par défaut : ex. 90 → "1h 30m"). |
hideStepQty | boolean | Masque purement et simplement les quantités d’ingrédients au sein du texte narratif des étapes, pour tous les formats (la liste de courses et les instructions de mise en place restent intactes). |
bakersMathOnly | boolean | N’affiche que les pourcentages boulanger, masquant les quantités absolues. |
interactiveScaling | boolean | Affiche des contrôles interactifs d’ajustement des portions/ingrédients (HTML uniquement). |
nutritionBasis | 'auto' | 'total' | 'perPortion' | 'per100g' | Base nutritionnelle affichée. 'auto' (défaut) montre le par-portion si la recette déclare des portions, sinon la recette entière. |
interactiveNutrition | boolean | HTML uniquement : émet toutes les bases disponibles derrière un sélecteur en CSS pur, au lieu d’une seule. Nécessite la feuille de style du renderer ; ignoré si nutritionBasis fixe une base. |
lang | string | Code de langue (ex. 'en', 'fr') pour traduire les chaînes UI, via les dictionnaires de @gram-lang/i18n. |
renderId | string | Préfixe pour les ids d’ancre de notes de bas de page — à redéfinir en cas de rendu de plusieurs recettes sur une même page pour éviter les collisions d’id. |
Diagramme de Gantt (toGanttHTML & attachGanttInteractivity)
Section intitulée « Diagramme de Gantt (toGanttHTML & attachGanttInteractivity) »Génère une chronologie interactive (diagramme de Gantt) pour offrir une représentation visuelle fidèle de la recette (étapes actives, temps d’attente en arrière-plan, etc.).
GanttRenderOptions
Section intitulée « GanttRenderOptions »| Option | Type | Description |
|---|---|---|
lang | string | Code de langue (ex. 'en', 'fr') pour traduire les chaînes UI via @gram-lang/i18n. |
gapThresholdMinutes | number | Durée minimale d’inactivité en minutes avant d’appliquer la compression de la période d’attente (par défaut : 60). |
compressedGapSize | number | Largeur en minutes virtuelles à laquelle une période d’inactivité compressée est réduite (par défaut : 20). |
GanttInteractivityOptions
Section intitulée « GanttInteractivityOptions »| Option | Type | Description |
|---|---|---|
timeMode | 'forward' | 'reverse' | 'target' | Mode d’affichage de l’axe temporel : temps écoulé (T+), compte à rebours (T-), ou heure réelle basée sur l’objectif de service. |
targetTime | string | Heure de service cible au format "HH:MM". |
isCompactMode | boolean | Bascule le composant en vue compacte pour optimiser la hauteur verticale. |
DEFAULT_ICONS a deux variantes, DEFAULT_ICONS.html (balises <i> Phosphor) et DEFAULT_ICONS.md (emoji), chacune indexée par un sous-ensemble de RendererIcons : hourglass, timer, thermometer, caretRight, arrowRight, arrowUDownLeft, warning, pencilSimple, minus, plus. Les autres champs de RendererIcons (clock, fire, knife, scales, clockCounterClockwise, arrowElbowDownRight, info) ne font pas partie de DEFAULT_ICONS — toHTML utilise son propre balisage Phosphor codé en dur pour ceux-ci quand options.icons ne les redéfinit pas ; les redéfinir n’a donc d’effet que si on les passe directement via options.icons, pas via un spread de DEFAULT_ICONS.
Utilitaires de formatage
Section intitulée « Utilitaires de formatage »Une poignée d’utilitaires bas niveau (utilisés en interne par les formateurs) est exportée si vous avez besoin de bricoler vos propres rendus sur-mesure tout en respectant les conventions existantes :