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 = (
11+ element : Element ,
12+ language : 'fr' | 'en' ,
13+ category : RandomCategory ,
14+ equivalents ?: string ,
15+ darkMode ?: boolean
16+ ) => {
1017 if ( forbiddenTag . includes ( element . tagName ) || element . getAttribute ( 'impactCO2' ) === 'managed' ) {
1118 return
1219 }
@@ -25,14 +32,23 @@ const transform = (element: Element, language: 'fr' | 'en', darkMode?: boolean)
2532 const after = document . createElement ( 'DIV' )
2633 after . className = className
2734 after . innerHTML = existingValues [ 1 ]
28- transform ( after , language , darkMode )
29- render ( React . createElement ( Detector , { impact : hasImpact [ 0 ] , language } ) , etiquette )
35+ transform ( after , language , category , equivalents , darkMode )
36+ render (
37+ React . createElement ( Detector , { impact : hasImpact [ 0 ] , language, category, customEquivalents : equivalents } ) ,
38+ etiquette
39+ )
3040 element . setAttribute ( 'impactCO2' , 'managed' )
3141 element . replaceChildren ( before , etiquette , after )
3242 }
3343}
3444
35- const transformText = ( element : Element , language : 'fr' | 'en' , darkMode ?: boolean ) => {
45+ const transformText = (
46+ element : Element ,
47+ language : 'fr' | 'en' ,
48+ category : RandomCategory ,
49+ equivalents ?: string ,
50+ darkMode ?: boolean
51+ ) => {
3652 ; [ ...element . childNodes . values ( ) ]
3753 . filter ( ( child ) => child . nodeName === '#text' )
3854 . forEach ( ( child ) => {
@@ -51,8 +67,11 @@ const transformText = (element: Element, language: 'fr' | 'en', darkMode?: boole
5167 const after = document . createElement ( 'DIV' )
5268 after . className = className
5369 after . innerHTML = existingValues [ 1 ]
54- transform ( after , language , darkMode )
55- render ( React . createElement ( Detector , { impact : hasImpact [ 0 ] , language } ) , etiquette )
70+ transform ( after , language , category , equivalents , darkMode )
71+ render (
72+ React . createElement ( Detector , { impact : hasImpact [ 0 ] , language, category, customEquivalents : equivalents } ) ,
73+ etiquette
74+ )
5675 child . replaceWith ( before , etiquette , after )
5776 }
5877 }
@@ -91,7 +110,7 @@ export const initMatomo = () => {
91110 }
92111}
93112
94- export const start = ( darkMode ?: boolean , language ?: 'fr' | 'en' ) => {
113+ export const start = ( darkMode ?: boolean , language ?: 'fr' | 'en' , category ?: RandomCategory , equivalents ?: string ) => {
95114 const elems = document . querySelectorAll ( '*' )
96115
97116 Array . from ( elems )
@@ -128,12 +147,12 @@ export const start = (darkMode?: boolean, language?: 'fr' | 'en') => {
128147 child . nodeName === 'STRONG'
129148 )
130149 ) {
131- transform ( elem , language || 'fr' , darkMode )
150+ transform ( elem , language || 'fr' , category || 'all' , equivalents , darkMode )
132151 } else {
133152 ; [ ...elem . children ] . forEach ( ( child ) => {
134- transform ( child , language || 'fr' , darkMode )
153+ transform ( child , language || 'fr' , category || 'all' , equivalents , darkMode )
135154 } )
136- transformText ( elem , language || 'fr' , darkMode )
155+ transformText ( elem , language || 'fr' , category || 'all' , equivalents , darkMode )
137156 }
138157 } catch ( e ) {
139158 console . error ( 'Impossible de générer les équivalents' , e )
0 commit comments