11import React , { render } from 'preact/compat'
22import 'utils/variables.css'
3+ import { RandomCategory } from 'components/comparateur/randomEtiquette'
34import Detector , { regexs } from 'components/externalModules/detection/Detector'
45import './style.css'
56
67const className = 'impactCO2-container'
78const forbiddenTag = [ 'TITLE' , 'HEAD' , 'STYLE' , 'SCRIPT' , 'path' , 'IMG' , 'META' , 'BUTTON' , 'A' ]
89
9- const transform = ( element : Element , language : 'fr' | 'en' , darkMode ?: boolean ) => {
10+ const transform = ( element : Element , language : 'fr' | 'en' , category : RandomCategory , darkMode ?: boolean ) => {
1011 if ( forbiddenTag . includes ( element . tagName ) || element . getAttribute ( 'impactCO2' ) === 'managed' ) {
1112 return
1213 }
@@ -25,14 +26,14 @@ const transform = (element: Element, language: 'fr' | 'en', darkMode?: boolean)
2526 const after = document . createElement ( 'DIV' )
2627 after . className = className
2728 after . innerHTML = existingValues [ 1 ]
28- transform ( after , language , darkMode )
29- render ( React . createElement ( Detector , { impact : hasImpact [ 0 ] , language } ) , etiquette )
29+ transform ( after , language , category , darkMode )
30+ render ( React . createElement ( Detector , { impact : hasImpact [ 0 ] , language, category } ) , etiquette )
3031 element . setAttribute ( 'impactCO2' , 'managed' )
3132 element . replaceChildren ( before , etiquette , after )
3233 }
3334}
3435
35- const transformText = ( element : Element , language : 'fr' | 'en' , darkMode ?: boolean ) => {
36+ const transformText = ( element : Element , language : 'fr' | 'en' , category : RandomCategory , darkMode ?: boolean ) => {
3637 ; [ ...element . childNodes . values ( ) ]
3738 . filter ( ( child ) => child . nodeName === '#text' )
3839 . forEach ( ( child ) => {
@@ -51,8 +52,8 @@ const transformText = (element: Element, language: 'fr' | 'en', darkMode?: boole
5152 const after = document . createElement ( 'DIV' )
5253 after . className = className
5354 after . innerHTML = existingValues [ 1 ]
54- transform ( after , language , darkMode )
55- render ( React . createElement ( Detector , { impact : hasImpact [ 0 ] , language } ) , etiquette )
55+ transform ( after , language , category , darkMode )
56+ render ( React . createElement ( Detector , { impact : hasImpact [ 0 ] , language, category } ) , etiquette )
5657 child . replaceWith ( before , etiquette , after )
5758 }
5859 }
@@ -91,7 +92,7 @@ export const initMatomo = () => {
9192 }
9293}
9394
94- export const start = ( darkMode ?: boolean , language ?: 'fr' | 'en' ) => {
95+ export const start = ( darkMode ?: boolean , language ?: 'fr' | 'en' , category ?: RandomCategory ) => {
9596 const elems = document . querySelectorAll ( '*' )
9697
9798 Array . from ( elems )
@@ -128,12 +129,12 @@ export const start = (darkMode?: boolean, language?: 'fr' | 'en') => {
128129 child . nodeName === 'STRONG'
129130 )
130131 ) {
131- transform ( elem , language || 'fr' , darkMode )
132+ transform ( elem , language || 'fr' , category || 'all' , darkMode )
132133 } else {
133134 ; [ ...elem . children ] . forEach ( ( child ) => {
134- transform ( child , language || 'fr' , darkMode )
135+ transform ( child , language || 'fr' , category || 'all' , darkMode )
135136 } )
136- transformText ( elem , language || 'fr' , darkMode )
137+ transformText ( elem , language || 'fr' , category || 'all' , darkMode )
137138 }
138139 } catch ( e ) {
139140 console . error ( 'Impossible de générer les équivalents' , e )
0 commit comments