ether-code 0.6.6 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -247,10 +247,15 @@ class CSSGenerator {
247
247
  'débordement-texte': 'text-overflow',
248
248
  'débordement texte': 'text-overflow',
249
249
  'texte-débordement': 'text-overflow',
250
+ 'retour-texte': 'text-wrap',
251
+ 'retour texte': 'text-wrap',
252
+ 'texte-retour': 'text-wrap',
250
253
  'renvoi-mots': 'word-wrap',
251
254
  'renvoi mots': 'word-wrap',
252
255
  'cesure-mots': 'word-break',
253
256
  'cesure mots': 'word-break',
257
+ 'coupure-mots': 'word-break',
258
+ 'coupure mots': 'word-break',
254
259
  'espace-blanc': 'white-space',
255
260
  'espace blanc': 'white-space',
256
261
  'blanc-espace': 'white-space',
@@ -278,6 +283,11 @@ class CSSGenerator {
278
283
  'justifier-contenu': 'justify-content',
279
284
  'justifier contenu': 'justify-content',
280
285
  'contenu-justifier': 'justify-content',
286
+ 'justifier-elements': 'justify-items',
287
+ 'justifier éléments': 'justify-items',
288
+ 'justifier elements': 'justify-items',
289
+ 'justifier-soi': 'justify-self',
290
+ 'justifier soi': 'justify-self',
281
291
  'aligner-elements': 'align-items',
282
292
  'aligner elements': 'align-items',
283
293
  'elements-aligner': 'align-items',
@@ -290,6 +300,13 @@ class CSSGenerator {
290
300
  'aligner-contenu': 'align-content',
291
301
  'aligner contenu': 'align-content',
292
302
  'contenu-aligner': 'align-content',
303
+ 'placer-contenu': 'place-content',
304
+ 'placer contenu': 'place-content',
305
+ 'placer-elements': 'place-items',
306
+ 'placer éléments': 'place-items',
307
+ 'placer elements': 'place-items',
308
+ 'placer-soi': 'place-self',
309
+ 'placer soi': 'place-self',
293
310
  'colonnes-grille': 'grid-template-columns',
294
311
  'colonnes grille': 'grid-template-columns',
295
312
  'grille-colonnes': 'grid-template-columns',
@@ -299,21 +316,35 @@ class CSSGenerator {
299
316
  'zones-grille': 'grid-template-areas',
300
317
  'zones grille': 'grid-template-areas',
301
318
  'grille-zones': 'grid-template-areas',
319
+ 'modele-grille': 'grid-template',
320
+ 'modèle-grille': 'grid-template',
321
+ 'modele grille': 'grid-template',
322
+ 'modèle grille': 'grid-template',
302
323
  'colonne-grille': 'grid-column',
303
324
  'colonne grille': 'grid-column',
304
325
  'grille-colonne': 'grid-column',
326
+ 'debut-colonne-grille': 'grid-column-start',
327
+ 'début-colonne-grille': 'grid-column-start',
328
+ 'debut colonne grille': 'grid-column-start',
329
+ 'fin-colonne-grille': 'grid-column-end',
330
+ 'fin colonne grille': 'grid-column-end',
305
331
  'ligne-grille': 'grid-row',
306
332
  'ligne grille': 'grid-row',
307
333
  'grille-ligne': 'grid-row',
334
+ 'debut-ligne-grille': 'grid-row-start',
335
+ 'début-ligne-grille': 'grid-row-start',
336
+ 'debut ligne grille': 'grid-row-start',
337
+ 'fin-ligne-grille': 'grid-row-end',
338
+ 'fin ligne grille': 'grid-row-end',
308
339
  'zone-grille': 'grid-area',
309
340
  'zone grille': 'grid-area',
310
341
  'grille-zone': 'grid-area',
311
- 'ecart-grille': 'grid-gap',
312
- 'ecart grille': 'grid-gap',
313
- 'grille-ecart': 'grid-gap',
314
- 'écart-grille': 'grid-gap',
315
- 'écart grille': 'grid-gap',
316
- 'grille-écart': 'grid-gap',
342
+ 'ecart-grille': 'gap',
343
+ 'ecart grille': 'gap',
344
+ 'grille-ecart': 'gap',
345
+ 'écart-grille': 'gap',
346
+ 'écart grille': 'gap',
347
+ 'grille-écart': 'gap',
317
348
  'flux-automatique-grille': 'grid-auto-flow',
318
349
  'flux automatique grille': 'grid-auto-flow',
319
350
  'colonnes-automatiques-grille': 'grid-auto-columns',
@@ -354,6 +385,7 @@ class CSSGenerator {
354
385
  'index-z': 'z-index',
355
386
  'z-index': 'z-index',
356
387
  'indice-z': 'z-index',
388
+ 'ordre': 'order',
357
389
  'debordement': 'overflow',
358
390
  'debordement-x': 'overflow-x',
359
391
  'debordement x': 'overflow-x',
@@ -375,12 +407,41 @@ class CSSGenerator {
375
407
  'comportement-defilement': 'scroll-behavior',
376
408
  'comportement defilement': 'scroll-behavior',
377
409
  'defilement-comportement': 'scroll-behavior',
410
+ 'comportement-défilement': 'scroll-behavior',
411
+ 'comportement défilement': 'scroll-behavior',
412
+ 'défilement-comportement': 'scroll-behavior',
378
413
  'accrochage-defilement': 'scroll-snap-type',
379
414
  'accrochage defilement': 'scroll-snap-type',
380
415
  'defilement-accrochage': 'scroll-snap-type',
381
416
  'accrochage-défilement': 'scroll-snap-type',
382
417
  'accrochage défilement': 'scroll-snap-type',
383
418
  'défilement-accrochage': 'scroll-snap-type',
419
+ 'alignement-accrochage': 'scroll-snap-align',
420
+ 'alignement accrochage': 'scroll-snap-align',
421
+ 'arret-accrochage': 'scroll-snap-stop',
422
+ 'arrêt-accrochage': 'scroll-snap-stop',
423
+ 'arret accrochage': 'scroll-snap-stop',
424
+ 'arrêt accrochage': 'scroll-snap-stop',
425
+ 'marge-defilement': 'scroll-margin',
426
+ 'marge-défilement': 'scroll-margin',
427
+ 'marge defilement': 'scroll-margin',
428
+ 'marge défilement': 'scroll-margin',
429
+ 'remplissage-defilement': 'scroll-padding',
430
+ 'remplissage-défilement': 'scroll-padding',
431
+ 'remplissage defilement': 'scroll-padding',
432
+ 'remplissage défilement': 'scroll-padding',
433
+ 'comportement-surdefilement': 'overscroll-behavior',
434
+ 'comportement-surdéfilement': 'overscroll-behavior',
435
+ 'comportement surdefilement': 'overscroll-behavior',
436
+ 'comportement surdéfilement': 'overscroll-behavior',
437
+ 'largeur-barre-defilement': 'scrollbar-width',
438
+ 'largeur-barre-défilement': 'scrollbar-width',
439
+ 'largeur barre defilement': 'scrollbar-width',
440
+ 'largeur barre défilement': 'scrollbar-width',
441
+ 'couleur-barre-defilement': 'scrollbar-color',
442
+ 'couleur-barre-défilement': 'scrollbar-color',
443
+ 'couleur barre defilement': 'scrollbar-color',
444
+ 'couleur barre défilement': 'scrollbar-color',
384
445
  'origine-transformation': 'transform-origin',
385
446
  'origine transformation': 'transform-origin',
386
447
  'transformation-origine': 'transform-origin',
@@ -451,6 +512,8 @@ class CSSGenerator {
451
512
  'état-lecture-animation': 'animation-play-state',
452
513
  'état lecture animation': 'animation-play-state',
453
514
  'animation-état-lecture': 'animation-play-state',
515
+ 'chronologie-animation': 'animation-timeline',
516
+ 'chronologie animation': 'animation-timeline',
454
517
  'ajustement-objet': 'object-fit',
455
518
  'ajustement objet': 'object-fit',
456
519
  'objet-ajustement': 'object-fit',
@@ -475,12 +538,16 @@ class CSSGenerator {
475
538
  'comportement-tactile': 'touch-action',
476
539
  'comportement tactile': 'touch-action',
477
540
  'tactile-comportement': 'touch-action',
541
+ 'action-tactile': 'touch-action',
542
+ 'action tactile': 'touch-action',
478
543
  'sens-ecriture': 'writing-mode',
479
544
  'sens ecriture': 'writing-mode',
480
545
  'ecriture-sens': 'writing-mode',
481
546
  'sens-écriture': 'writing-mode',
482
547
  'sens écriture': 'writing-mode',
483
548
  'écriture-sens': 'writing-mode',
549
+ 'mode-ecriture': 'writing-mode',
550
+ 'mode écriture': 'writing-mode',
484
551
  'direction-texte': 'direction',
485
552
  'direction texte': 'direction',
486
553
  'texte-direction': 'direction',
@@ -507,7 +574,6 @@ class CSSGenerator {
507
574
  'colonnes-regle': 'column-rule',
508
575
  'etendue-colonnes': 'column-span',
509
576
  'étendue-colonnes': 'column-span',
510
- 'etendue-colonnes': 'column-span',
511
577
  'étendue colonnes': 'column-span',
512
578
  'colonnes-etendue': 'column-span',
513
579
  'remplissage-colonnes': 'column-fill',
@@ -547,7 +613,6 @@ class CSSGenerator {
547
613
  'bordure rayon': 'border-radius',
548
614
  'rayon-bordure': 'border-radius',
549
615
  'rayon bordure': 'border-radius',
550
- 'rayon bordure': 'border-radius',
551
616
  'texte-aligner': 'text-align',
552
617
  'texte aligner': 'text-align',
553
618
  'aligner-texte': 'text-align',
@@ -566,6 +631,9 @@ class CSSGenerator {
566
631
  'schema-couleurs': 'color-scheme',
567
632
  'schema couleurs': 'color-scheme',
568
633
  'couleurs-schema': 'color-scheme',
634
+ 'schéma-couleurs': 'color-scheme',
635
+ 'schéma couleurs': 'color-scheme',
636
+ 'couleurs-schéma': 'color-scheme',
569
637
  'ratio-aspect': 'aspect-ratio',
570
638
  'ratio aspect': 'aspect-ratio',
571
639
  'aspect-ratio': 'aspect-ratio',
@@ -579,8 +647,18 @@ class CSSGenerator {
579
647
  'volonte-changement': 'will-change',
580
648
  'volonte changement': 'will-change',
581
649
  'changement-volonte': 'will-change',
650
+ 'volonté-changement': 'will-change',
651
+ 'volonté changement': 'will-change',
582
652
  'optimisation-changement': 'will-change',
583
653
  'optimisation changement': 'will-change',
654
+ 'visibilite-contenu': 'content-visibility',
655
+ 'visibilité-contenu': 'content-visibility',
656
+ 'visibilite contenu': 'content-visibility',
657
+ 'visibilité contenu': 'content-visibility',
658
+ 'taille-contenu-intrinseque': 'contain-intrinsic-size',
659
+ 'taille-contenu-intrinsèque': 'contain-intrinsic-size',
660
+ 'taille contenu intrinseque': 'contain-intrinsic-size',
661
+ 'taille contenu intrinsèque': 'contain-intrinsic-size',
584
662
  'masque': 'mask',
585
663
  'image-masque': 'mask-image',
586
664
  'image masque': 'mask-image',
@@ -588,12 +666,30 @@ class CSSGenerator {
588
666
  'clip-masque': 'mask-clip',
589
667
  'clip masque': 'mask-clip',
590
668
  'masque-clip': 'mask-clip',
669
+ 'mode-masque': 'mask-mode',
670
+ 'mode masque': 'mask-mode',
671
+ 'origine-masque': 'mask-origin',
672
+ 'origine masque': 'mask-origin',
673
+ 'position-masque': 'mask-position',
674
+ 'position masque': 'mask-position',
675
+ 'repetition-masque': 'mask-repeat',
676
+ 'répétition-masque': 'mask-repeat',
677
+ 'repetition masque': 'mask-repeat',
678
+ 'répétition masque': 'mask-repeat',
679
+ 'taille-masque': 'mask-size',
680
+ 'taille masque': 'mask-size',
681
+ 'type-masque': 'mask-type',
682
+ 'type masque': 'mask-type',
683
+ 'composite-masque': 'mask-composite',
684
+ 'composite masque': 'mask-composite',
591
685
  'chemin-decoupe': 'clip-path',
592
686
  'chemin decoupe': 'clip-path',
593
687
  'decoupe-chemin': 'clip-path',
594
688
  'chemin-découpé': 'clip-path',
595
689
  'chemin découpé': 'clip-path',
596
690
  'découpe-chemin': 'clip-path',
691
+ 'chemin-découpe': 'clip-path',
692
+ 'chemin découpe': 'clip-path',
597
693
  'forme-exterieure': 'shape-outside',
598
694
  'forme exterieure': 'shape-outside',
599
695
  'exterieure-forme': 'shape-outside',
@@ -602,7 +698,130 @@ class CSSGenerator {
602
698
  'extérieure-forme': 'shape-outside',
603
699
  'marge-forme': 'shape-margin',
604
700
  'marge forme': 'shape-margin',
605
- 'forme-marge': 'shape-margin'
701
+ 'forme-marge': 'shape-margin',
702
+ 'seuil-image-forme': 'shape-image-threshold',
703
+ 'seuil image forme': 'shape-image-threshold',
704
+ 'marge-bloc': 'margin-block',
705
+ 'marge bloc': 'margin-block',
706
+ 'marge-bloc-debut': 'margin-block-start',
707
+ 'marge-bloc-début': 'margin-block-start',
708
+ 'marge bloc debut': 'margin-block-start',
709
+ 'marge bloc début': 'margin-block-start',
710
+ 'marge-bloc-fin': 'margin-block-end',
711
+ 'marge bloc fin': 'margin-block-end',
712
+ 'marge-en-ligne': 'margin-inline',
713
+ 'marge en ligne': 'margin-inline',
714
+ 'marge-en-ligne-debut': 'margin-inline-start',
715
+ 'marge-en-ligne-début': 'margin-inline-start',
716
+ 'marge en ligne debut': 'margin-inline-start',
717
+ 'marge en ligne début': 'margin-inline-start',
718
+ 'marge-en-ligne-fin': 'margin-inline-end',
719
+ 'marge en ligne fin': 'margin-inline-end',
720
+ 'remplissage-bloc': 'padding-block',
721
+ 'remplissage bloc': 'padding-block',
722
+ 'remplissage-bloc-debut': 'padding-block-start',
723
+ 'remplissage-bloc-début': 'padding-block-start',
724
+ 'remplissage bloc debut': 'padding-block-start',
725
+ 'remplissage bloc début': 'padding-block-start',
726
+ 'remplissage-bloc-fin': 'padding-block-end',
727
+ 'remplissage bloc fin': 'padding-block-end',
728
+ 'remplissage-en-ligne': 'padding-inline',
729
+ 'remplissage en ligne': 'padding-inline',
730
+ 'remplissage-en-ligne-debut': 'padding-inline-start',
731
+ 'remplissage-en-ligne-début': 'padding-inline-start',
732
+ 'remplissage en ligne debut': 'padding-inline-start',
733
+ 'remplissage en ligne début': 'padding-inline-start',
734
+ 'remplissage-en-ligne-fin': 'padding-inline-end',
735
+ 'remplissage en ligne fin': 'padding-inline-end',
736
+ 'bordure-bloc': 'border-block',
737
+ 'bordure bloc': 'border-block',
738
+ 'bordure-bloc-debut': 'border-block-start',
739
+ 'bordure-bloc-début': 'border-block-start',
740
+ 'bordure bloc debut': 'border-block-start',
741
+ 'bordure bloc début': 'border-block-start',
742
+ 'bordure-bloc-fin': 'border-block-end',
743
+ 'bordure bloc fin': 'border-block-end',
744
+ 'bordure-en-ligne': 'border-inline',
745
+ 'bordure en ligne': 'border-inline',
746
+ 'bordure-en-ligne-debut': 'border-inline-start',
747
+ 'bordure-en-ligne-début': 'border-inline-start',
748
+ 'bordure en ligne debut': 'border-inline-start',
749
+ 'bordure en ligne début': 'border-inline-start',
750
+ 'bordure-en-ligne-fin': 'border-inline-end',
751
+ 'bordure en ligne fin': 'border-inline-end',
752
+ 'debut-bloc': 'inset-block-start',
753
+ 'début-bloc': 'inset-block-start',
754
+ 'debut bloc': 'inset-block-start',
755
+ 'début bloc': 'inset-block-start',
756
+ 'fin-bloc': 'inset-block-end',
757
+ 'fin bloc': 'inset-block-end',
758
+ 'debut-en-ligne': 'inset-inline-start',
759
+ 'début-en-ligne': 'inset-inline-start',
760
+ 'debut en ligne': 'inset-inline-start',
761
+ 'début en ligne': 'inset-inline-start',
762
+ 'fin-en-ligne': 'inset-inline-end',
763
+ 'fin en ligne': 'inset-inline-end',
764
+ 'encart': 'inset',
765
+ 'encart-bloc': 'inset-block',
766
+ 'encart bloc': 'inset-block',
767
+ 'encart-en-ligne': 'inset-inline',
768
+ 'encart en ligne': 'inset-inline',
769
+ 'taille-bloc': 'block-size',
770
+ 'taille bloc': 'block-size',
771
+ 'taille-en-ligne': 'inline-size',
772
+ 'taille en ligne': 'inline-size',
773
+ 'taille-bloc-min': 'min-block-size',
774
+ 'taille bloc min': 'min-block-size',
775
+ 'taille-bloc-max': 'max-block-size',
776
+ 'taille bloc max': 'max-block-size',
777
+ 'taille-en-ligne-min': 'min-inline-size',
778
+ 'taille en ligne min': 'min-inline-size',
779
+ 'taille-en-ligne-max': 'max-inline-size',
780
+ 'taille en ligne max': 'max-inline-size',
781
+ 'type-conteneur': 'container-type',
782
+ 'type conteneur': 'container-type',
783
+ 'nom-conteneur': 'container-name',
784
+ 'nom conteneur': 'container-name',
785
+ 'conteneur': 'container',
786
+ 'variation-police': 'font-variation-settings',
787
+ 'variation police': 'font-variation-settings',
788
+ 'caracteristiques-police': 'font-feature-settings',
789
+ 'caractéristiques-police': 'font-feature-settings',
790
+ 'caracteristiques police': 'font-feature-settings',
791
+ 'caractéristiques police': 'font-feature-settings',
792
+ 'crenage': 'font-kerning',
793
+ 'crénage': 'font-kerning',
794
+ 'synthese-police': 'font-synthesis',
795
+ 'synthèse-police': 'font-synthesis',
796
+ 'synthese police': 'font-synthesis',
797
+ 'synthèse police': 'font-synthesis',
798
+ 'coupure-apres': 'break-after',
799
+ 'coupure-après': 'break-after',
800
+ 'coupure apres': 'break-after',
801
+ 'coupure après': 'break-after',
802
+ 'coupure-avant': 'break-before',
803
+ 'coupure avant': 'break-before',
804
+ 'coupure-dans': 'break-inside',
805
+ 'coupure dans': 'break-inside',
806
+ 'orphelins': 'orphans',
807
+ 'veuves': 'widows',
808
+ 'chronologie-defilement': 'scroll-timeline',
809
+ 'chronologie-défilement': 'scroll-timeline',
810
+ 'chronologie defilement': 'scroll-timeline',
811
+ 'chronologie défilement': 'scroll-timeline',
812
+ 'nom-chronologie-defilement': 'scroll-timeline-name',
813
+ 'nom-chronologie-défilement': 'scroll-timeline-name',
814
+ 'axe-chronologie-defilement': 'scroll-timeline-axis',
815
+ 'axe-chronologie-défilement': 'scroll-timeline-axis',
816
+ 'nom-transition-vue': 'view-transition-name',
817
+ 'nom transition vue': 'view-transition-name',
818
+ 'nom-ancre': 'anchor-name',
819
+ 'nom ancre': 'anchor-name',
820
+ 'ancre-defaut': 'anchor-default',
821
+ 'ancre-défaut': 'anchor-default',
822
+ 'ancre defaut': 'anchor-default',
823
+ 'ancre défaut': 'anchor-default',
824
+ 'apparence': 'appearance'
606
825
  }
607
826
 
608
827
  if (priorityMap[lower]) {
@@ -639,11 +858,25 @@ class CSSGenerator {
639
858
  result = result.replace(/degrade radial:\s*/gi, 'radial-gradient(')
640
859
  result = result.replace(/dégradé conique:\s*/gi, 'conic-gradient(')
641
860
  result = result.replace(/degrade conique:\s*/gi, 'conic-gradient(')
861
+ result = result.replace(/dégradé linéaire répété:\s*/gi, 'repeating-linear-gradient(')
862
+ result = result.replace(/degrade lineaire repete:\s*/gi, 'repeating-linear-gradient(')
863
+ result = result.replace(/dégradé radial répété:\s*/gi, 'repeating-radial-gradient(')
864
+ result = result.replace(/degrade radial repete:\s*/gi, 'repeating-radial-gradient(')
865
+ result = result.replace(/dégradé conique répété:\s*/gi, 'repeating-conic-gradient(')
866
+ result = result.replace(/degrade conique repete:\s*/gi, 'repeating-conic-gradient(')
642
867
 
643
868
  result = result.replace(/rgba:\s*(\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)/gi, 'rgba($1, $2, $3, $4)')
644
869
  result = result.replace(/rgb:\s*(\d+),\s*(\d+),\s*(\d+)/gi, 'rgb($1, $2, $3)')
645
870
  result = result.replace(/hsl:\s*(\d+),\s*([\d.]+%?),\s*([\d.]+%?)/gi, 'hsl($1, $2, $3)')
646
871
  result = result.replace(/hsla:\s*(\d+),\s*([\d.]+%?),\s*([\d.]+%?),\s*([\d.]+)/gi, 'hsla($1, $2, $3, $4)')
872
+ result = result.replace(/lch:\s*([\d.]+%?),\s*([\d.]+),\s*([\d.]+)/gi, 'lch($1 $2 $3)')
873
+ result = result.replace(/lab:\s*([\d.]+%?),\s*([\d.\-]+),\s*([\d.\-]+)/gi, 'lab($1 $2 $3)')
874
+ result = result.replace(/oklch:\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/gi, 'oklch($1 $2 $3)')
875
+ result = result.replace(/oklab:\s*([\d.]+),\s*([\d.\-]+),\s*([\d.\-]+)/gi, 'oklab($1 $2 $3)')
876
+ result = result.replace(/hwb:\s*(\d+),\s*([\d.]+%?),\s*([\d.]+%?)/gi, 'hwb($1 $2 $3)')
877
+ result = result.replace(/couleur:\s*([^\s,]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/gi, 'color($1 $2 $3 $4)')
878
+ result = result.replace(/mélange couleur:\s*([^,]+),\s*([^\s]+)\s+([\d.]+%?)/gi, 'color-mix(in srgb, $1, $2 $3)')
879
+ result = result.replace(/melange couleur:\s*([^,]+),\s*([^\s]+)\s+([\d.]+%?)/gi, 'color-mix(in srgb, $1, $2 $3)')
647
880
 
648
881
  result = result.replace(/flou:\s*([\d.]+\w*)/gi, 'blur($1)')
649
882
  result = result.replace(/luminosité:\s*([\d.]+%?)/gi, 'brightness($1)')
@@ -656,29 +889,101 @@ class CSSGenerator {
656
889
  result = result.replace(/sépia:\s*([\d.]+%?)/gi, 'sepia($1)')
657
890
  result = result.replace(/sepia:\s*([\d.]+%?)/gi, 'sepia($1)')
658
891
  result = result.replace(/teinte:\s*([\d.]+\w*)/gi, 'hue-rotate($1)')
892
+ result = result.replace(/rotation-teinte:\s*([\d.]+\w*)/gi, 'hue-rotate($1)')
893
+ result = result.replace(/ombre-portée:\s*(.+)/gi, 'drop-shadow($1)')
894
+ result = result.replace(/ombre portée:\s*(.+)/gi, 'drop-shadow($1)')
895
+ result = result.replace(/ombre-portee:\s*(.+)/gi, 'drop-shadow($1)')
896
+ result = result.replace(/ombre portee:\s*(.+)/gi, 'drop-shadow($1)')
659
897
 
660
898
  result = result.replace(/déplacer-y:\s*([\d.\-]+\w*)/gi, 'translateY($1)')
661
899
  result = result.replace(/deplacer-y:\s*([\d.\-]+\w*)/gi, 'translateY($1)')
662
900
  result = result.replace(/déplacer-x:\s*([\d.\-]+\w*)/gi, 'translateX($1)')
663
901
  result = result.replace(/deplacer-x:\s*([\d.\-]+\w*)/gi, 'translateX($1)')
902
+ result = result.replace(/déplacer-z:\s*([\d.\-]+\w*)/gi, 'translateZ($1)')
903
+ result = result.replace(/deplacer-z:\s*([\d.\-]+\w*)/gi, 'translateZ($1)')
904
+ result = result.replace(/déplacer-3d:\s*([\d.\-]+\w*),\s*([\d.\-]+\w*),\s*([\d.\-]+\w*)/gi, 'translate3d($1, $2, $3)')
905
+ result = result.replace(/deplacer-3d:\s*([\d.\-]+\w*),\s*([\d.\-]+\w*),\s*([\d.\-]+\w*)/gi, 'translate3d($1, $2, $3)')
664
906
  result = result.replace(/déplacer:\s*([\d.\-]+\w*),?\s*([\d.\-]+\w*)?/gi, (match, x, y) => {
665
907
  if (y) return `translate(${x}, ${y})`
666
908
  return `translate(${x})`
667
909
  })
668
910
  result = result.replace(/rotation:\s*([\d.\-]+\w*)/gi, 'rotate($1)')
911
+ result = result.replace(/rotation-x:\s*([\d.\-]+\w*)/gi, 'rotateX($1)')
912
+ result = result.replace(/rotation-y:\s*([\d.\-]+\w*)/gi, 'rotateY($1)')
913
+ result = result.replace(/rotation-z:\s*([\d.\-]+\w*)/gi, 'rotateZ($1)')
914
+ result = result.replace(/rotation-3d:\s*([\d.\-]+),\s*([\d.\-]+),\s*([\d.\-]+),\s*([\d.\-]+\w*)/gi, 'rotate3d($1, $2, $3, $4)')
669
915
  result = result.replace(/échelle:\s*([\d.]+)/gi, 'scale($1)')
670
916
  result = result.replace(/echelle:\s*([\d.]+)/gi, 'scale($1)')
917
+ result = result.replace(/échelle-x:\s*([\d.]+)/gi, 'scaleX($1)')
918
+ result = result.replace(/echelle-x:\s*([\d.]+)/gi, 'scaleX($1)')
919
+ result = result.replace(/échelle-y:\s*([\d.]+)/gi, 'scaleY($1)')
920
+ result = result.replace(/echelle-y:\s*([\d.]+)/gi, 'scaleY($1)')
921
+ result = result.replace(/échelle-z:\s*([\d.]+)/gi, 'scaleZ($1)')
922
+ result = result.replace(/echelle-z:\s*([\d.]+)/gi, 'scaleZ($1)')
923
+ result = result.replace(/échelle-3d:\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/gi, 'scale3d($1, $2, $3)')
924
+ result = result.replace(/echelle-3d:\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/gi, 'scale3d($1, $2, $3)')
925
+ result = result.replace(/incliner:\s*([\d.\-]+\w*),?\s*([\d.\-]+\w*)?/gi, (match, x, y) => {
926
+ if (y) return `skew(${x}, ${y})`
927
+ return `skew(${x})`
928
+ })
929
+ result = result.replace(/incliner-x:\s*([\d.\-]+\w*)/gi, 'skewX($1)')
930
+ result = result.replace(/incliner-y:\s*([\d.\-]+\w*)/gi, 'skewY($1)')
931
+ result = result.replace(/matrice:\s*([\d.\-]+),\s*([\d.\-]+),\s*([\d.\-]+),\s*([\d.\-]+),\s*([\d.\-]+),\s*([\d.\-]+)/gi, 'matrix($1, $2, $3, $4, $5, $6)')
932
+ result = result.replace(/matrice-3d:\s*(.+)/gi, 'matrix3d($1)')
933
+ result = result.replace(/perspective:\s*([\d.]+\w*)/gi, 'perspective($1)')
671
934
 
672
935
  result = result.replace(/répéter:\s*([^,]+),\s*minmax:\s*([^,]+),\s*([^\s\)]+)/gi, 'repeat($1, minmax($2, $3))')
673
936
  result = result.replace(/repeter:\s*([^,]+),\s*minmax:\s*([^,]+),\s*([^\s\)]+)/gi, 'repeat($1, minmax($2, $3))')
937
+ result = result.replace(/répéter:\s*([^,]+),\s*([^\s\)]+)/gi, 'repeat($1, $2)')
938
+ result = result.replace(/repeter:\s*([^,]+),\s*([^\s\)]+)/gi, 'repeat($1, $2)')
674
939
  result = result.replace(/minmax:\s*([^,]+),\s*([^\s\)]+)/gi, 'minmax($1, $2)')
940
+ result = result.replace(/ajuster-contenu/gi, 'fit-content')
675
941
 
676
942
  result = result.replace(/calcul:\s*(.+)/gi, 'calc($1)')
677
943
  result = result.replace(/minimum:\s*([^,]+),\s*([^\s\)]+)/gi, 'min($1, $2)')
678
944
  result = result.replace(/maximum:\s*([^,]+),\s*([^\s\)]+)/gi, 'max($1, $2)')
679
945
  result = result.replace(/borner:\s*([^,]+),\s*([^,]+),\s*([^\s\)]+)/gi, 'clamp($1, $2, $3)')
946
+ result = result.replace(/sinus:\s*([\d.\-]+\w*)/gi, 'sin($1)')
947
+ result = result.replace(/cosinus:\s*([\d.\-]+\w*)/gi, 'cos($1)')
948
+ result = result.replace(/tangente:\s*([\d.\-]+\w*)/gi, 'tan($1)')
949
+ result = result.replace(/arcsinus:\s*([\d.\-]+)/gi, 'asin($1)')
950
+ result = result.replace(/arccosinus:\s*([\d.\-]+)/gi, 'acos($1)')
951
+ result = result.replace(/arctangente:\s*([\d.\-]+)/gi, 'atan($1)')
952
+ result = result.replace(/arctangente2:\s*([\d.\-]+\w*),\s*([\d.\-]+\w*)/gi, 'atan2($1, $2)')
953
+ result = result.replace(/racine:\s*([\d.]+)/gi, 'sqrt($1)')
954
+ result = result.replace(/puissance:\s*([\d.\-]+),\s*([\d.\-]+)/gi, 'pow($1, $2)')
955
+ result = result.replace(/exponentielle:\s*([\d.\-]+)/gi, 'exp($1)')
956
+ result = result.replace(/logarithme:\s*([\d.]+)/gi, 'log($1)')
957
+ result = result.replace(/absolu:\s*([\d.\-]+)/gi, 'abs($1)')
958
+ result = result.replace(/signe:\s*([\d.\-]+)/gi, 'sign($1)')
959
+ result = result.replace(/arrondi:\s*([\d.\-]+)/gi, 'round($1)')
960
+ result = result.replace(/modulo:\s*([\d.\-]+),\s*([\d.\-]+)/gi, 'mod($1, $2)')
961
+ result = result.replace(/reste:\s*([\d.\-]+),\s*([\d.\-]+)/gi, 'rem($1, $2)')
962
+ result = result.replace(/hypot:\s*(.+)/gi, 'hypot($1)')
963
+
964
+ result = result.replace(/polygone:\s*(.+)/gi, 'polygon($1)')
965
+ result = result.replace(/cercle:\s*(.+)/gi, 'circle($1)')
966
+ result = result.replace(/ellipse:\s*(.+)/gi, 'ellipse($1)')
967
+ result = result.replace(/encart:\s*(.+)/gi, 'inset($1)')
968
+ result = result.replace(/chemin:\s*"([^"]+)"/gi, 'path("$1")')
969
+
970
+ result = result.replace(/url:\s*"([^"]+)"/gi, 'url("$1")')
971
+ result = result.replace(/url:\s*'([^']+)'/gi, "url('$1')")
972
+
973
+ result = result.replace(/aisance-cubic:\s*([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/gi, 'cubic-bezier($1, $2, $3, $4)')
974
+ result = result.replace(/cubic-bezier:\s*([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/gi, 'cubic-bezier($1, $2, $3, $4)')
975
+ result = result.replace(/etapes:\s*(\d+),\s*([^)]+)/gi, 'steps($1, $2)')
976
+ result = result.replace(/étapes:\s*(\d+),\s*([^)]+)/gi, 'steps($1, $2)')
977
+ result = result.replace(/ressort:\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/gi, 'spring($1, $2, $3)')
978
+
979
+ result = result.replace(/compteur:\s*([\w\-]+)/gi, 'counter($1)')
980
+ result = result.replace(/compteurs:\s*([\w\-]+)/gi, 'counters($1)')
981
+ result = result.replace(/attr:\s*([\w\-]+)/gi, 'attr($1)')
680
982
 
681
- if (result.includes('linear-gradient(') || result.includes('radial-gradient(') || result.includes('conic-gradient(')) {
983
+ result = result.replace(/ancre:\s*(.+)/gi, 'anchor($1)')
984
+
985
+ if (result.includes('linear-gradient(') || result.includes('radial-gradient(') || result.includes('conic-gradient(') ||
986
+ result.includes('repeating-linear-gradient(') || result.includes('repeating-radial-gradient(') || result.includes('repeating-conic-gradient(')) {
682
987
  if (!result.endsWith(')')) {
683
988
  result = result + ')'
684
989
  }
@@ -717,7 +1022,38 @@ class CSSGenerator {
717
1022
  'prune': 'plum',
718
1023
  'chocolat': 'chocolate',
719
1024
  'transparent': 'transparent',
720
- 'marron': 'brown'
1025
+ 'marron': 'brown',
1026
+ 'aqua': 'aqua',
1027
+ 'citron': 'lemonchiffon',
1028
+ 'neige': 'snow',
1029
+ 'lin': 'linen',
1030
+ 'ble': 'wheat',
1031
+ 'blé': 'wheat',
1032
+ 'tomate': 'tomato',
1033
+ 'fuchsia': 'fuchsia',
1034
+ 'lime': 'lime',
1035
+ 'teal': 'teal',
1036
+ 'ardoise': 'slategray',
1037
+ 'acier': 'steelblue',
1038
+ 'azur': 'azure',
1039
+ 'menthe': 'mintcream',
1040
+ 'miel': 'honeydew',
1041
+ 'coquillage': 'seashell',
1042
+ 'peche': 'peachpuff',
1043
+ 'pêche': 'peachpuff',
1044
+ 'papaye': 'papayawhip',
1045
+ 'mais': 'cornsilk',
1046
+ 'maïs': 'cornsilk',
1047
+ 'florale': 'floralwhite',
1048
+ 'fantome': 'ghostwhite',
1049
+ 'fantôme': 'ghostwhite',
1050
+ 'ancien-blanc': 'antiquewhite',
1051
+ 'amande': 'blanchedalmond',
1052
+ 'bisque': 'bisque',
1053
+ 'mocassin': 'moccasin',
1054
+ 'navajo': 'navajowhite',
1055
+ 'actuel': 'currentColor',
1056
+ 'courant': 'currentColor'
721
1057
  }
722
1058
 
723
1059
  const shadeMap = {
@@ -731,6 +1067,14 @@ class CSSGenerator {
731
1067
  'bleu pale': 'lightsteelblue',
732
1068
  'bleu pâle': 'lightsteelblue',
733
1069
  'bleu vif': 'royalblue',
1070
+ 'bleu ciel': 'skyblue',
1071
+ 'bleu acier': 'steelblue',
1072
+ 'bleu poudre': 'powderblue',
1073
+ 'bleu ardoise': 'slateblue',
1074
+ 'bleu cadet': 'cadetblue',
1075
+ 'bleu dodger': 'dodgerblue',
1076
+ 'bleu royal': 'royalblue',
1077
+ 'bleu nuit': 'midnightblue',
734
1078
  'vert clair': 'lightgreen',
735
1079
  'vert fonce': 'darkgreen',
736
1080
  'vert foncé': 'darkgreen',
@@ -741,6 +1085,13 @@ class CSSGenerator {
741
1085
  'vert pale': 'palegreen',
742
1086
  'vert pâle': 'palegreen',
743
1087
  'vert vif': 'limegreen',
1088
+ 'vert mer': 'seagreen',
1089
+ 'vert olive': 'olivedrab',
1090
+ 'vert foret': 'forestgreen',
1091
+ 'vert forêt': 'forestgreen',
1092
+ 'vert printemps': 'springgreen',
1093
+ 'vert gazon': 'lawngreen',
1094
+ 'vert chartreuse': 'chartreuse',
744
1095
  'rouge clair': 'lightcoral',
745
1096
  'rouge fonce': 'darkred',
746
1097
  'rouge foncé': 'darkred',
@@ -751,12 +1102,15 @@ class CSSGenerator {
751
1102
  'rouge pale': 'lightpink',
752
1103
  'rouge pâle': 'lightpink',
753
1104
  'rouge vif': 'crimson',
1105
+ 'rouge indien': 'indianred',
1106
+ 'rouge brique': 'firebrick',
754
1107
  'jaune clair': 'lightyellow',
755
1108
  'jaune fonce': 'darkgoldenrod',
756
1109
  'jaune foncé': 'darkgoldenrod',
757
1110
  'jaune pale': 'lemonchiffon',
758
1111
  'jaune pâle': 'lemonchiffon',
759
1112
  'jaune vif': 'gold',
1113
+ 'jaune vert': 'yellowgreen',
760
1114
  'gris clair': 'lightgray',
761
1115
  'gris fonce': 'darkgray',
762
1116
  'gris foncé': 'darkgray',
@@ -764,10 +1118,12 @@ class CSSGenerator {
764
1118
  'gris très clair': 'whitesmoke',
765
1119
  'gris tres fonce': 'dimgray',
766
1120
  'gris très foncé': 'dimgray',
1121
+ 'gris ardoise': 'slategray',
767
1122
  'violet clair': 'plum',
768
1123
  'violet fonce': 'darkviolet',
769
1124
  'violet foncé': 'darkviolet',
770
1125
  'violet vif': 'blueviolet',
1126
+ 'violet moyen': 'mediumvioletred',
771
1127
  'orange clair': 'lightsalmon',
772
1128
  'orange fonce': 'darkorange',
773
1129
  'orange foncé': 'darkorange',
@@ -776,6 +1132,8 @@ class CSSGenerator {
776
1132
  'rose fonce': 'hotpink',
777
1133
  'rose foncé': 'hotpink',
778
1134
  'rose vif': 'deeppink',
1135
+ 'rose profond': 'deeppink',
1136
+ 'rose chaud': 'hotpink',
779
1137
  'cyan clair': 'lightcyan',
780
1138
  'cyan fonce': 'darkcyan',
781
1139
  'cyan foncé': 'darkcyan'
@@ -803,6 +1161,10 @@ class CSSGenerator {
803
1161
  'hériter': 'inherit',
804
1162
  'heriter': 'inherit',
805
1163
  'initial': 'initial',
1164
+ 'non-défini': 'unset',
1165
+ 'non-defini': 'unset',
1166
+ 'revenir': 'revert',
1167
+ 'revenir-couche': 'revert-layer',
806
1168
  'caché': 'hidden',
807
1169
  'cache': 'hidden',
808
1170
  'visible': 'visible',
@@ -820,6 +1182,7 @@ class CSSGenerator {
820
1182
  'collante': 'sticky',
821
1183
  'centre': 'center',
822
1184
  'centré': 'center',
1185
+ 'centrée': 'center',
823
1186
  'début': 'flex-start',
824
1187
  'debut': 'flex-start',
825
1188
  'fin': 'flex-end',
@@ -829,6 +1192,7 @@ class CSSGenerator {
829
1192
  'espace autour': 'space-around',
830
1193
  'espace-égal': 'space-evenly',
831
1194
  'espace egal': 'space-evenly',
1195
+ 'espace-egal': 'space-evenly',
832
1196
  'étirer': 'stretch',
833
1197
  'etirer': 'stretch',
834
1198
  'ligne': 'row',
@@ -838,24 +1202,67 @@ class CSSGenerator {
838
1202
  'colonne-inverse': 'column-reverse',
839
1203
  'colonne inverse': 'column-reverse',
840
1204
  'envelopper': 'wrap',
1205
+ 'enveloppe': 'wrap',
1206
+ 'inverse-enveloppe': 'wrap-reverse',
1207
+ 'enveloppe-inverse': 'wrap-reverse',
841
1208
  'sans-retour': 'nowrap',
842
1209
  'sans retour': 'nowrap',
843
1210
  'gras': 'bold',
844
1211
  'normal': 'normal',
845
1212
  'italique': 'italic',
1213
+ 'oblique': 'oblique',
846
1214
  'souligné': 'underline',
847
1215
  'souligne': 'underline',
1216
+ 'souligner': 'underline',
848
1217
  'barré': 'line-through',
849
1218
  'barre': 'line-through',
1219
+ 'surligner': 'overline',
1220
+ 'surligné': 'overline',
850
1221
  'majuscules': 'uppercase',
851
1222
  'minuscules': 'lowercase',
852
1223
  'capitaliser': 'capitalize',
1224
+ 'capitale': 'capitalize',
853
1225
  'pointeur': 'pointer',
854
1226
  'attente': 'wait',
855
1227
  'interdit': 'not-allowed',
1228
+ 'texte': 'text',
1229
+ 'croix': 'crosshair',
1230
+ 'deplacer': 'move',
1231
+ 'déplacer': 'move',
1232
+ 'aide': 'help',
1233
+ 'progres': 'progress',
1234
+ 'progrès': 'progress',
1235
+ 'cellule': 'cell',
1236
+ 'copier': 'copy',
1237
+ 'alias': 'alias',
1238
+ 'menu-contextuel': 'context-menu',
1239
+ 'menu contextuel': 'context-menu',
1240
+ 'pas-abandonne': 'no-drop',
1241
+ 'pas-deplace': 'no-drop',
1242
+ 'saisir': 'grab',
1243
+ 'saisi': 'grabbing',
1244
+ 'tout-defiler': 'all-scroll',
1245
+ 'zoom-avant': 'zoom-in',
1246
+ 'zoom-arriere': 'zoom-out',
1247
+ 'redim-e': 'e-resize',
1248
+ 'redim-n': 'n-resize',
1249
+ 'redim-ne': 'ne-resize',
1250
+ 'redim-nw': 'nw-resize',
1251
+ 'redim-s': 's-resize',
1252
+ 'redim-se': 'se-resize',
1253
+ 'redim-sw': 'sw-resize',
1254
+ 'redim-w': 'w-resize',
1255
+ 'redim-ew': 'ew-resize',
1256
+ 'redim-ns': 'ns-resize',
1257
+ 'redim-nesw': 'nesw-resize',
1258
+ 'redim-nwse': 'nwse-resize',
1259
+ 'redim-col': 'col-resize',
1260
+ 'redim-ligne': 'row-resize',
856
1261
  'couvrir': 'cover',
857
1262
  'contenir': 'contain',
858
1263
  'remplir': 'fill',
1264
+ 'aucune-echelle': 'scale-down',
1265
+ 'aucune-échelle': 'scale-down',
859
1266
  'bloc': 'block',
860
1267
  'en-ligne': 'inline',
861
1268
  'en ligne': 'inline',
@@ -866,31 +1273,69 @@ class CSSGenerator {
866
1273
  'grille': 'grid',
867
1274
  'grille-en-ligne': 'inline-grid',
868
1275
  'grille en ligne': 'inline-grid',
1276
+ 'flux': 'flow',
1277
+ 'flux-racine': 'flow-root',
1278
+ 'table': 'table',
1279
+ 'tableau-en-ligne': 'inline-table',
1280
+ 'élément-liste': 'list-item',
1281
+ 'element-liste': 'list-item',
1282
+ 'contenu': 'contents',
869
1283
  'préservé': 'pre',
870
1284
  'preserve': 'pre',
871
1285
  'pré-ligne': 'pre-line',
872
1286
  'pre-ligne': 'pre-line',
873
1287
  'pré-enveloppe': 'pre-wrap',
874
1288
  'pre-enveloppe': 'pre-wrap',
1289
+ 'equilibrer': 'balance',
1290
+ 'équilibrer': 'balance',
1291
+ 'equilibre': 'balance',
1292
+ 'équilibre': 'balance',
1293
+ 'joli': 'pretty',
875
1294
  'solide': 'solid',
876
1295
  'pointillée': 'dotted',
877
1296
  'pointillee': 'dotted',
1297
+ 'pointille': 'dotted',
878
1298
  'tirets': 'dashed',
879
1299
  'double': 'double',
1300
+ 'rainure': 'groove',
1301
+ 'rainuree': 'groove',
1302
+ 'rainurée': 'groove',
1303
+ 'crete': 'ridge',
1304
+ 'crête': 'ridge',
1305
+ 'insertion': 'inset',
1306
+ 'extension': 'outset',
880
1307
  'tout': 'all',
881
1308
  'ease': 'ease',
1309
+ 'aisance': 'ease',
882
1310
  'ease-in': 'ease-in',
1311
+ 'aisance-entree': 'ease-in',
1312
+ 'aisance-entrée': 'ease-in',
883
1313
  'ease-out': 'ease-out',
1314
+ 'aisance-sortie': 'ease-out',
884
1315
  'ease-in-out': 'ease-in-out',
1316
+ 'aisance-entree-sortie': 'ease-in-out',
1317
+ 'aisance-entrée-sortie': 'ease-in-out',
885
1318
  'linéaire': 'linear',
886
1319
  'lineaire': 'linear',
1320
+ 'etape-debut': 'step-start',
1321
+ 'étape-début': 'step-start',
1322
+ 'etape-fin': 'step-end',
1323
+ 'étape-fin': 'step-end',
887
1324
  'infini': 'infinite',
888
1325
  'alternatif': 'alternate',
889
1326
  'inverse': 'reverse',
1327
+ 'alternatif-inverse': 'alternate-reverse',
890
1328
  'alternatif inverse': 'alternate-reverse',
1329
+ 'en-avant': 'forwards',
891
1330
  'en avant': 'forwards',
1331
+ 'en-arriere': 'backwards',
892
1332
  'en arriere': 'backwards',
1333
+ 'les-deux': 'both',
893
1334
  'les deux': 'both',
1335
+ 'en-pause': 'paused',
1336
+ 'en pause': 'paused',
1337
+ 'en-cours': 'running',
1338
+ 'en cours': 'running',
894
1339
  'bordure-boite': 'border-box',
895
1340
  'boite-bordure': 'border-box',
896
1341
  'boite bordure': 'border-box',
@@ -904,11 +1349,11 @@ class CSSGenerator {
904
1349
  'boite contenu': 'content-box',
905
1350
  'contenu-boite': 'content-box',
906
1351
  'remplissage-boite': 'padding-box',
907
- 'en pause': 'paused',
908
- 'en cours': 'running',
1352
+ 'remplissage-boîte': 'padding-box',
1353
+ 'remplissage boite': 'padding-box',
1354
+ 'remplissage boîte': 'padding-box',
909
1355
  'ombre': 'box-shadow',
910
1356
  'transformation': 'transform',
911
- 'souligner': 'underline',
912
1357
  'transformer': 'transform',
913
1358
  'fond': 'background',
914
1359
  'couleur': 'color',
@@ -918,7 +1363,147 @@ class CSSGenerator {
918
1363
  'largeur': 'width',
919
1364
  'hauteur': 'height',
920
1365
  'marge': 'margin',
921
- 'remplissage': 'padding'
1366
+ 'remplissage': 'padding',
1367
+ 'gauche': 'left',
1368
+ 'droite': 'right',
1369
+ 'centrer': 'center',
1370
+ 'justifié': 'justify',
1371
+ 'justifie': 'justify',
1372
+ 'haut': 'top',
1373
+ 'bas': 'bottom',
1374
+ 'repeter': 'repeat',
1375
+ 'répéter': 'repeat',
1376
+ 'repeter-x': 'repeat-x',
1377
+ 'répéter-x': 'repeat-x',
1378
+ 'repeter-y': 'repeat-y',
1379
+ 'répéter-y': 'repeat-y',
1380
+ 'pas-repeter': 'no-repeat',
1381
+ 'pas-répéter': 'no-repeat',
1382
+ 'ne-pas-repeter': 'no-repeat',
1383
+ 'ne-pas-répéter': 'no-repeat',
1384
+ 'etirer': 'stretch',
1385
+ 'arrondi': 'round',
1386
+ 'espace': 'space',
1387
+ 'local': 'local',
1388
+ 'vers-haut': 'to top',
1389
+ 'vers-bas': 'to bottom',
1390
+ 'vers-gauche': 'to left',
1391
+ 'vers-droite': 'to right',
1392
+ 'vers haut': 'to top',
1393
+ 'vers bas': 'to bottom',
1394
+ 'vers gauche': 'to left',
1395
+ 'vers droite': 'to right',
1396
+ 'cercle': 'circle',
1397
+ 'ellipse': 'ellipse',
1398
+ 'le-plus-proche': 'closest-side',
1399
+ 'le-plus-loin': 'farthest-side',
1400
+ 'coin-proche': 'closest-corner',
1401
+ 'coin-loin': 'farthest-corner',
1402
+ 'au-coin-proche': 'at closest-corner',
1403
+ 'au-coin-loin': 'at farthest-corner',
1404
+ 'dense': 'dense',
1405
+ 'ligne-dense': 'row dense',
1406
+ 'colonne-dense': 'column dense',
1407
+ 'auto-remplir': 'auto-fill',
1408
+ 'auto-ajuster': 'auto-fit',
1409
+ 'sous-grille': 'subgrid',
1410
+ 'maconnerie': 'masonry',
1411
+ 'maçonnerie': 'masonry',
1412
+ 'disque': 'disc',
1413
+ 'point': 'disc',
1414
+ 'cercle-liste': 'circle',
1415
+ 'carre': 'square',
1416
+ 'carré': 'square',
1417
+ 'decimale': 'decimal',
1418
+ 'décimale': 'decimal',
1419
+ 'decimale-zeros': 'decimal-leading-zero',
1420
+ 'decimale-zéros': 'decimal-leading-zero',
1421
+ 'décimale-zéros': 'decimal-leading-zero',
1422
+ 'romain-minuscule': 'lower-roman',
1423
+ 'romain-majuscule': 'upper-roman',
1424
+ 'lettre-minuscule': 'lower-alpha',
1425
+ 'lettre-majuscule': 'upper-alpha',
1426
+ 'grec-minuscule': 'lower-greek',
1427
+ 'interieur': 'inside',
1428
+ 'intérieur': 'inside',
1429
+ 'exterieur': 'outside',
1430
+ 'extérieur': 'outside',
1431
+ 'fusionner': 'collapse',
1432
+ 'separer': 'separate',
1433
+ 'séparer': 'separate',
1434
+ 'horizontal': 'horizontal-tb',
1435
+ 'vertical-droite': 'vertical-rl',
1436
+ 'vertical-gauche': 'vertical-lr',
1437
+ 'ltr': 'ltr',
1438
+ 'rtl': 'rtl',
1439
+ 'melange': 'mixed',
1440
+ 'mélange': 'mixed',
1441
+ 'droit': 'upright',
1442
+ 'sideways': 'sideways',
1443
+ 'les-deux-sens': 'both',
1444
+ 'horizontal-seulement': 'horizontal',
1445
+ 'vertical-seulement': 'vertical',
1446
+ 'x-obligatoire': 'x mandatory',
1447
+ 'y-obligatoire': 'y mandatory',
1448
+ 'x-proximite': 'x proximity',
1449
+ 'x-proximité': 'x proximity',
1450
+ 'y-proximite': 'y proximity',
1451
+ 'y-proximité': 'y proximity',
1452
+ 'les-deux-obligatoire': 'both mandatory',
1453
+ 'les-deux-proximite': 'both proximity',
1454
+ 'les-deux-proximité': 'both proximity',
1455
+ 'toujours': 'always',
1456
+ 'conserver': 'contain',
1457
+ 'lisse': 'smooth',
1458
+ 'automatique': 'auto',
1459
+ 'fine': 'thin',
1460
+ 'épaisse': 'thick',
1461
+ 'epaisse': 'thick',
1462
+ 'eviter': 'avoid',
1463
+ 'éviter': 'avoid',
1464
+ 'eviter-page': 'avoid-page',
1465
+ 'éviter-page': 'avoid-page',
1466
+ 'eviter-colonne': 'avoid-column',
1467
+ 'éviter-colonne': 'avoid-column',
1468
+ 'page': 'page',
1469
+ 'clair': 'light',
1470
+ 'sombre': 'dark',
1471
+ 'plat': 'flat',
1472
+ 'preserver-3d': 'preserve-3d',
1473
+ 'préserver-3d': 'preserve-3d',
1474
+ 'strict': 'strict',
1475
+ 'contenu-strict': 'content',
1476
+ 'taille': 'size',
1477
+ 'disposition': 'layout',
1478
+ 'style': 'style',
1479
+ 'peinture': 'paint',
1480
+ 'isoler': 'isolate',
1481
+ 'auto-isoler': 'auto'
1482
+ }
1483
+
1484
+ const blendModes = {
1485
+ 'multiplier': 'multiply',
1486
+ 'ecran': 'screen',
1487
+ 'écran': 'screen',
1488
+ 'superposition': 'overlay',
1489
+ 'assombrir': 'darken',
1490
+ 'eclaircir': 'lighten',
1491
+ 'éclaircir': 'lighten',
1492
+ 'esquive-couleur': 'color-dodge',
1493
+ 'brulure-couleur': 'color-burn',
1494
+ 'brûlure-couleur': 'color-burn',
1495
+ 'lumiere-vive': 'hard-light',
1496
+ 'lumière-vive': 'hard-light',
1497
+ 'lumiere-douce': 'soft-light',
1498
+ 'lumière-douce': 'soft-light',
1499
+ 'difference': 'difference',
1500
+ 'différence': 'difference',
1501
+ 'exclusion': 'exclusion',
1502
+ 'teinte-mode': 'hue',
1503
+ 'saturation-mode': 'saturation',
1504
+ 'couleur-mode': 'color',
1505
+ 'luminosite-mode': 'luminosity',
1506
+ 'luminosité-mode': 'luminosity'
922
1507
  }
923
1508
 
924
1509
  const filterFunctions = {
@@ -954,6 +1539,11 @@ class CSSGenerator {
954
1539
  result = result.replace(regex, `${en}(`)
955
1540
  }
956
1541
 
1542
+ for (const [fr, en] of Object.entries(blendModes)) {
1543
+ const regex = new RegExp(`(?<![a-zA-ZÀ-ÿ])${fr}(?![a-zA-ZÀ-ÿ])`, 'gi')
1544
+ result = result.replace(regex, en)
1545
+ }
1546
+
957
1547
  for (const [fr, en] of Object.entries(keywords)) {
958
1548
  const regex = new RegExp(`(?<![a-zA-ZÀ-ÿ])${fr}(?![a-zA-ZÀ-ÿ])`, 'gi')
959
1549
  result = result.replace(regex, en)
@@ -1019,6 +1609,11 @@ class CSSGenerator {
1019
1609
  'marge-droite': 'margin-right',
1020
1610
  'marge dedans': 'padding',
1021
1611
  'marge-dedans': 'padding',
1612
+ 'marge intérieure': 'padding',
1613
+ 'marge-intérieure': 'padding',
1614
+ 'marge interieure': 'padding',
1615
+ 'marge-interieure': 'padding',
1616
+ 'padding': 'padding',
1022
1617
  'remplissage': 'padding',
1023
1618
  'remplissage haut': 'padding-top',
1024
1619
  'remplissage-haut': 'padding-top',
@@ -1054,6 +1649,10 @@ class CSSGenerator {
1054
1649
  'rayon bordure': 'border-radius',
1055
1650
  'bordure-arrondie': 'border-radius',
1056
1651
  'bordure arrondie': 'border-radius',
1652
+ 'coins arrondis': 'border-radius',
1653
+ 'coins-arrondis': 'border-radius',
1654
+ 'bords arrondis': 'border-radius',
1655
+ 'bords-arrondis': 'border-radius',
1057
1656
  'largeur': 'width',
1058
1657
  'hauteur': 'height',
1059
1658
  'largeur minimum': 'min-width',
@@ -1069,6 +1668,7 @@ class CSSGenerator {
1069
1668
  'hauteur-maximum': 'max-height',
1070
1669
  'max-hauteur': 'max-height',
1071
1670
  'affichage': 'display',
1671
+ 'afficher': 'display',
1072
1672
  'position': 'position',
1073
1673
  'haut': 'top',
1074
1674
  'bas': 'bottom',
@@ -1088,6 +1688,7 @@ class CSSGenerator {
1088
1688
  'transition': 'transition',
1089
1689
  'animation': 'animation',
1090
1690
  'transformation': 'transform',
1691
+ 'transformer': 'transform',
1091
1692
  'origine transformation': 'transform-origin',
1092
1693
  'origine-transformation': 'transform-origin',
1093
1694
  'style transformation': 'transform-style',
@@ -1104,6 +1705,7 @@ class CSSGenerator {
1104
1705
  'ombre-boite': 'box-shadow',
1105
1706
  'ombre boîte': 'box-shadow',
1106
1707
  'ombre boite': 'box-shadow',
1708
+ 'ombrage': 'box-shadow',
1107
1709
  'modèle-boîte': 'box-sizing',
1108
1710
  'modele-boite': 'box-sizing',
1109
1711
  'modèle boîte': 'box-sizing',
@@ -1113,6 +1715,8 @@ class CSSGenerator {
1113
1715
  'espace-ligne': 'row-gap',
1114
1716
  'espace colonne': 'column-gap',
1115
1717
  'espace-colonne': 'column-gap',
1718
+ 'ecart': 'gap',
1719
+ 'écart': 'gap',
1116
1720
  'justifier-contenu': 'justify-content',
1117
1721
  'justifier contenu': 'justify-content',
1118
1722
  'aligner-éléments': 'align-items',
@@ -1153,9 +1757,8 @@ class CSSGenerator {
1153
1757
  'style': 'font-style',
1154
1758
  'alignement': 'text-align',
1155
1759
  'decoration': 'text-decoration',
1760
+ 'décoration': 'text-decoration',
1156
1761
  'ombre': 'box-shadow',
1157
- 'ecart': 'gap',
1158
- 'écart': 'gap',
1159
1762
  'direction': 'flex-direction',
1160
1763
  'envelopper': 'flex-wrap',
1161
1764
  'justifier': 'justify-content',
@@ -1163,8 +1766,12 @@ class CSSGenerator {
1163
1766
  'visibilite': 'visibility',
1164
1767
  'visibilité': 'visibility',
1165
1768
  'redimensionnement': 'resize',
1769
+ 'redim': 'resize',
1166
1770
  'apparence': 'appearance',
1167
- 'contour': 'outline'
1771
+ 'contour': 'outline',
1772
+ 'arriere-plan': 'background',
1773
+ 'arrière-plan': 'background',
1774
+ 'teinte': 'color'
1168
1775
  }
1169
1776
 
1170
1777
  const lower = text.toLowerCase()
@@ -1191,32 +1798,90 @@ class CSSGenerator {
1191
1798
  result = result.replace(/::sélection\b/gi, '::selection')
1192
1799
  result = result.replace(/::selection\b/gi, '::selection')
1193
1800
  result = result.replace(/::marqueur\b/gi, '::marker')
1801
+ result = result.replace(/::espace-réservé\b/gi, '::placeholder')
1802
+ result = result.replace(/::espace-reserve\b/gi, '::placeholder')
1803
+ result = result.replace(/::fond-dialogue\b/gi, '::backdrop')
1804
+ result = result.replace(/::repère\b/gi, '::cue')
1805
+ result = result.replace(/::repere\b/gi, '::cue')
1806
+ result = result.replace(/::partie\s*\(\s*([^)]+)\s*\)/gi, '::part($1)')
1807
+ result = result.replace(/::fendu\s*\(\s*([^)]+)\s*\)/gi, '::slotted($1)')
1194
1808
 
1195
1809
  result = result.replace(/\bau survol\b/gi, ':hover')
1196
1810
  result = result.replace(/\bquand survolé\b/gi, ':hover')
1197
1811
  result = result.replace(/\bquand survole\b/gi, ':hover')
1198
1812
  result = result.replace(/\ben survol\b/gi, ':hover')
1813
+ result = result.replace(/:survol\b/gi, ':hover')
1199
1814
  result = result.replace(/\bau clic\b/gi, ':active')
1200
1815
  result = result.replace(/\bquand cliqué\b/gi, ':active')
1201
1816
  result = result.replace(/\bquand clique\b/gi, ':active')
1202
1817
  result = result.replace(/\ben clic\b/gi, ':active')
1203
- result = result.replace(/\bactif\b/gi, ':active')
1818
+ result = result.replace(/:actif\b/gi, ':active')
1204
1819
  result = result.replace(/\bau focus\b/gi, ':focus')
1205
1820
  result = result.replace(/\bquand focalisé\b/gi, ':focus')
1206
1821
  result = result.replace(/\bquand focalise\b/gi, ':focus')
1207
1822
  result = result.replace(/\ben focus\b/gi, ':focus')
1823
+ result = result.replace(/:focus\b/gi, ':focus')
1208
1824
  result = result.replace(/\bau focus dans\b/gi, ':focus-within')
1825
+ result = result.replace(/:focus-dans\b/gi, ':focus-within')
1826
+ result = result.replace(/:focus-visible\b/gi, ':focus-visible')
1209
1827
  result = result.replace(/\bvisité\b/gi, ':visited')
1210
1828
  result = result.replace(/\bvisite\b/gi, ':visited')
1829
+ result = result.replace(/:visité\b/gi, ':visited')
1830
+ result = result.replace(/:visite\b/gi, ':visited')
1831
+ result = result.replace(/:lien\b/gi, ':link')
1832
+ result = result.replace(/:cible\b/gi, ':target')
1833
+ result = result.replace(/:désactivé\b/gi, ':disabled')
1834
+ result = result.replace(/:desactive\b/gi, ':disabled')
1835
+ result = result.replace(/:activé\b/gi, ':enabled')
1836
+ result = result.replace(/:active\b/gi, ':enabled')
1837
+ result = result.replace(/:vérifié\b/gi, ':checked')
1838
+ result = result.replace(/:verifie\b/gi, ':checked')
1839
+ result = result.replace(/:requis\b/gi, ':required')
1840
+ result = result.replace(/:optionnel\b/gi, ':optional')
1841
+ result = result.replace(/:valide\b/gi, ':valid')
1842
+ result = result.replace(/:invalide\b/gi, ':invalid')
1843
+ result = result.replace(/:lecture-seule\b/gi, ':read-only')
1844
+ result = result.replace(/:lecture-écriture\b/gi, ':read-write')
1845
+ result = result.replace(/:lecture-ecriture\b/gi, ':read-write')
1846
+ result = result.replace(/:dans-plage\b/gi, ':in-range')
1847
+ result = result.replace(/:hors-plage\b/gi, ':out-of-range')
1848
+ result = result.replace(/:vide\b/gi, ':empty')
1849
+ result = result.replace(/:modal\b/gi, ':modal')
1850
+ result = result.replace(/:plein-écran\b/gi, ':fullscreen')
1851
+ result = result.replace(/:plein-ecran\b/gi, ':fullscreen')
1852
+ result = result.replace(/:espace-réservé-affiché\b/gi, ':placeholder-shown')
1853
+ result = result.replace(/:espace-reserve-affiche\b/gi, ':placeholder-shown')
1854
+ result = result.replace(/:défaut\b/gi, ':default')
1855
+ result = result.replace(/:defaut\b/gi, ':default')
1856
+ result = result.replace(/:indéterminé\b/gi, ':indeterminate')
1857
+ result = result.replace(/:indetermine\b/gi, ':indeterminate')
1211
1858
 
1212
- result = result.replace(/\s+(:hover|:active|:focus|:focus-within|:visited|:checked|:disabled|:enabled|:required|:optional|:valid|:invalid|:empty|:target)/gi, '$1')
1859
+ result = result.replace(/:a\s*\(\s*([^)]+)\s*\)/gi, ':has($1)')
1860
+ result = result.replace(/:est\s*\(\s*([^)]+)\s*\)/gi, ':is($1)')
1861
+ result = result.replace(/:où\s*\(\s*([^)]+)\s*\)/gi, ':where($1)')
1862
+ result = result.replace(/:ou\s*\(\s*([^)]+)\s*\)/gi, ':where($1)')
1863
+ result = result.replace(/:non\s*\(\s*([^)]+)\s*\)/gi, ':not($1)')
1864
+
1865
+ result = result.replace(/\s+(:hover|:active|:focus|:focus-within|:focus-visible|:visited|:checked|:disabled|:enabled|:required|:optional|:valid|:invalid|:empty|:target|:link|:read-only|:read-write|:in-range|:out-of-range|:modal|:fullscreen|:placeholder-shown|:default|:indeterminate)/gi, '$1')
1866
+ result = result.replace(/:premier-enfant\b/gi, ':first-child')
1213
1867
  result = result.replace(/\bpremier enfant\b/gi, ':first-child')
1868
+ result = result.replace(/:dernier-enfant\b/gi, ':last-child')
1214
1869
  result = result.replace(/\bdernier enfant\b/gi, ':last-child')
1870
+ result = result.replace(/:nième-enfant\s*\(\s*([^)]+)\s*\)/gi, ':nth-child($1)')
1871
+ result = result.replace(/:nieme-enfant\s*\(\s*([^)]+)\s*\)/gi, ':nth-child($1)')
1872
+ result = result.replace(/:nième-dernier-enfant\s*\(\s*([^)]+)\s*\)/gi, ':nth-last-child($1)')
1873
+ result = result.replace(/:nieme-dernier-enfant\s*\(\s*([^)]+)\s*\)/gi, ':nth-last-child($1)')
1215
1874
  result = result.replace(/\benfant impair\b/gi, ':nth-child(odd)')
1216
1875
  result = result.replace(/\benfant pair\b/gi, ':nth-child(even)')
1876
+ result = result.replace(/:premier-type\b/gi, ':first-of-type')
1217
1877
  result = result.replace(/\bpremier de type\b/gi, ':first-of-type')
1878
+ result = result.replace(/:dernier-type\b/gi, ':last-of-type')
1218
1879
  result = result.replace(/\bdernier de type\b/gi, ':last-of-type')
1880
+ result = result.replace(/:nième-type\s*\(\s*([^)]+)\s*\)/gi, ':nth-of-type($1)')
1881
+ result = result.replace(/:nieme-type\s*\(\s*([^)]+)\s*\)/gi, ':nth-of-type($1)')
1882
+ result = result.replace(/:enfant-unique\b/gi, ':only-child')
1219
1883
  result = result.replace(/\benfant unique\b/gi, ':only-child')
1884
+ result = result.replace(/:type-unique\b/gi, ':only-of-type')
1220
1885
  result = result.replace(/\bunique de type\b/gi, ':only-of-type')
1221
1886
  result = result.replace(/\bvide\b/gi, ':empty')
1222
1887
  result = result.replace(/\bcible\b/gi, ':target')
@@ -1285,21 +1950,34 @@ class CSSGenerator {
1285
1950
  result = result.replace(/\bportee\b/gi, 'span')
1286
1951
  result = result.replace(/\bpréformaté\b/gi, 'pre')
1287
1952
  result = result.replace(/\bpreformate\b/gi, 'pre')
1953
+ result = result.replace(/\bcode\b/gi, 'code')
1288
1954
  result = result.replace(/\bétiquette\b/gi, 'label')
1289
1955
  result = result.replace(/\betiquette\b/gi, 'label')
1290
1956
  result = result.replace(/\bsélection\b/gi, 'select')
1291
1957
  result = result.replace(/\bselection\b/gi, 'select')
1958
+ result = result.replace(/\boption\b/gi, 'option')
1292
1959
  result = result.replace(/\bterme\b/gi, 'dt')
1293
1960
  result = result.replace(/\bdéfinition\b/gi, 'dd')
1294
1961
  result = result.replace(/\bdefinition\b/gi, 'dd')
1295
1962
  result = result.replace(/\brésumé\b/gi, 'summary')
1296
1963
  result = result.replace(/\bresume\b/gi, 'summary')
1964
+ result = result.replace(/\bdétails\b/gi, 'details')
1965
+ result = result.replace(/\bdetails\b/gi, 'details')
1297
1966
  result = result.replace(/\bpetit\b/gi, 'small')
1298
1967
  result = result.replace(/\badresse\b/gi, 'address')
1299
1968
  result = result.replace(/\blégende\b/gi, 'legend')
1300
1969
  result = result.replace(/\blegende\b/gi, 'legend')
1301
1970
  result = result.replace(/\bfigure\b/gi, 'figure')
1302
1971
  result = result.replace(/\bligne\b/gi, 'tr')
1972
+ result = result.replace(/\bvideo\b/gi, 'video')
1973
+ result = result.replace(/\bvidéo\b/gi, 'video')
1974
+ result = result.replace(/\baudio\b/gi, 'audio')
1975
+ result = result.replace(/\bcanevas\b/gi, 'canvas')
1976
+ result = result.replace(/\bdialogue\b/gi, 'dialog')
1977
+ result = result.replace(/\btemps\b/gi, 'time')
1978
+ result = result.replace(/\bprogression\b/gi, 'progress')
1979
+ result = result.replace(/\bjauge\b/gi, 'meter')
1980
+ result = result.replace(/\bsortie\b/gi, 'output')
1303
1981
 
1304
1982
  for (let i = 0; i < preserved.length; i++) {
1305
1983
  result = result.replace(`__PRESERVED_${i}__`, preserved[i])
@@ -1313,6 +1991,7 @@ class CSSGenerator {
1313
1991
 
1314
1992
  const unitMap = {
1315
1993
  'px': 'px',
1994
+ 'points': 'px',
1316
1995
  'em': 'em',
1317
1996
  'rem': 'rem',
1318
1997
  'pourcent': '%',
@@ -1321,16 +2000,61 @@ class CSSGenerator {
1321
2000
  'vh': 'vh',
1322
2001
  'vmin': 'vmin',
1323
2002
  'vmax': 'vmax',
2003
+ 'svw': 'svw',
2004
+ 'svh': 'svh',
2005
+ 'lvw': 'lvw',
2006
+ 'lvh': 'lvh',
2007
+ 'dvw': 'dvw',
2008
+ 'dvh': 'dvh',
2009
+ 'cqw': 'cqw',
2010
+ 'cqh': 'cqh',
2011
+ 'cqi': 'cqi',
2012
+ 'cqb': 'cqb',
2013
+ 'cqmin': 'cqmin',
2014
+ 'cqmax': 'cqmax',
1324
2015
  'ch': 'ch',
1325
2016
  'ex': 'ex',
1326
2017
  'cm': 'cm',
1327
2018
  'mm': 'mm',
2019
+ 'in': 'in',
1328
2020
  'pt': 'pt',
1329
2021
  'pc': 'pc',
1330
2022
  'deg': 'deg',
2023
+ 'rad': 'rad',
2024
+ 'grad': 'grad',
2025
+ 'turn': 'turn',
1331
2026
  's': 's',
1332
2027
  'ms': 'ms',
1333
- 'fr': 'fr'
2028
+ 'fr': 'fr',
2029
+ 'degrés': 'deg',
2030
+ 'degres': 'deg',
2031
+ 'radians': 'rad',
2032
+ 'tours': 'turn',
2033
+ 'grades': 'grad',
2034
+ 'secondes': 's',
2035
+ 'millisecondes': 'ms',
2036
+ 'centimètres': 'cm',
2037
+ 'centimetres': 'cm',
2038
+ 'millimètres': 'mm',
2039
+ 'millimetres': 'mm',
2040
+ 'pouces': 'in',
2041
+ 'picas': 'pc',
2042
+ 'caractère': 'ch',
2043
+ 'caractere': 'ch',
2044
+ 'écran largeur': 'vw',
2045
+ 'ecran largeur': 'vw',
2046
+ 'écran hauteur': 'vh',
2047
+ 'ecran hauteur': 'vh',
2048
+ 'écran min': 'vmin',
2049
+ 'ecran min': 'vmin',
2050
+ 'écran max': 'vmax',
2051
+ 'ecran max': 'vmax',
2052
+ 'conteneur largeur': 'cqw',
2053
+ 'conteneur hauteur': 'cqh',
2054
+ 'conteneur inline': 'cqi',
2055
+ 'conteneur bloc': 'cqb',
2056
+ 'conteneur min': 'cqmin',
2057
+ 'conteneur max': 'cqmax'
1334
2058
  }
1335
2059
 
1336
2060
  let result = value
@@ -1401,6 +2125,18 @@ class CSSGenerator {
1401
2125
  case 'import':
1402
2126
  this.generateImport(node)
1403
2127
  break
2128
+ case 'Container':
2129
+ case 'container':
2130
+ this.generateContainer(node)
2131
+ break
2132
+ case 'Layer':
2133
+ case 'layer':
2134
+ this.generateLayer(node)
2135
+ break
2136
+ case 'Supports':
2137
+ case 'supports':
2138
+ this.generateSupports(node)
2139
+ break
1404
2140
  case 'Comment':
1405
2141
  case 'comment':
1406
2142
  break
@@ -1473,7 +2209,18 @@ class CSSGenerator {
1473
2209
  'box-decoration-break',
1474
2210
  'text-stroke',
1475
2211
  'text-stroke-width',
1476
- 'text-stroke-color'
2212
+ 'text-stroke-color',
2213
+ 'text-fill-color',
2214
+ 'mask',
2215
+ 'mask-image',
2216
+ 'mask-clip',
2217
+ 'mask-mode',
2218
+ 'mask-origin',
2219
+ 'mask-position',
2220
+ 'mask-repeat',
2221
+ 'mask-size',
2222
+ 'mask-type',
2223
+ 'mask-composite'
1477
2224
  ]
1478
2225
 
1479
2226
  if (needsWebkitPrefix.includes(property) && !property.startsWith('-webkit-')) {
@@ -1567,6 +2314,7 @@ class CSSGenerator {
1567
2314
  result = result.replace(/écran/gi, 'screen')
1568
2315
  result = result.replace(/ecran/gi, 'screen')
1569
2316
  result = result.replace(/imprimante/gi, 'print')
2317
+ result = result.replace(/impression/gi, 'print')
1570
2318
  result = result.replace(/tous/gi, 'all')
1571
2319
  result = result.replace(/largeur-min/gi, 'min-width')
1572
2320
  result = result.replace(/largeur min/gi, 'min-width')
@@ -1583,6 +2331,18 @@ class CSSGenerator {
1583
2331
  result = result.replace(/orientation/gi, 'orientation')
1584
2332
  result = result.replace(/paysage/gi, 'landscape')
1585
2333
  result = result.replace(/portrait/gi, 'portrait')
2334
+ result = result.replace(/préfère sombre/gi, 'prefers-color-scheme: dark')
2335
+ result = result.replace(/prefere sombre/gi, 'prefers-color-scheme: dark')
2336
+ result = result.replace(/préfère clair/gi, 'prefers-color-scheme: light')
2337
+ result = result.replace(/prefere clair/gi, 'prefers-color-scheme: light')
2338
+ result = result.replace(/préfère mouvement réduit/gi, 'prefers-reduced-motion: reduce')
2339
+ result = result.replace(/prefere mouvement reduit/gi, 'prefers-reduced-motion: reduce')
2340
+ result = result.replace(/préfère contraste élevé/gi, 'prefers-contrast: more')
2341
+ result = result.replace(/prefere contraste eleve/gi, 'prefers-contrast: more')
2342
+ result = result.replace(/hover disponible/gi, 'hover: hover')
2343
+ result = result.replace(/pointeur précis/gi, 'pointer: fine')
2344
+ result = result.replace(/pointeur precis/gi, 'pointer: fine')
2345
+ result = result.replace(/pointeur grossier/gi, 'pointer: coarse')
1586
2346
  result = result.replace(/\bet\b/gi, 'and')
1587
2347
  result = result.replace(/\bou\b/gi, 'or')
1588
2348
  result = result.replace(/\bpas\b/gi, 'not')
@@ -1596,11 +2356,14 @@ class CSSGenerator {
1596
2356
 
1597
2357
  const plusPetitMatch = condition.match(/plus petit que\s+([\d.]+\w*)/i)
1598
2358
  const plusGrandMatch = condition.match(/plus grand que\s+([\d.]+\w*)/i)
1599
- const inferieurMatch = condition.match(/inférieur[e]?\s+a\s+([\d.]+\w*)/i) || condition.match(/inferieur[e]?\s+a\s+([\d.]+\w*)/i)
1600
- const superieurMatch = condition.match(/supérieur[e]?\s+a\s+([\d.]+\w*)/i) || condition.match(/superieur[e]?\s+a\s+([\d.]+\w*)/i)
1601
- const egalMatch = condition.match(/égal[e]?\s+a\s+([\d.]+\w*)/i) || condition.match(/egal[e]?\s+a\s+([\d.]+\w*)/i)
2359
+ const inferieurMatch = condition.match(/inférieur[e]?\s+[àa]\s+([\d.]+\w*)/i) || condition.match(/inferieur[e]?\s+a\s+([\d.]+\w*)/i)
2360
+ const superieurMatch = condition.match(/supérieur[e]?\s+[àa]\s+([\d.]+\w*)/i) || condition.match(/superieur[e]?\s+a\s+([\d.]+\w*)/i)
2361
+ const egalMatch = condition.match(/égal[e]?\s+[àa]\s+([\d.]+\w*)/i) || condition.match(/egal[e]?\s+a\s+([\d.]+\w*)/i)
1602
2362
  const simpleInfMatch = condition.match(/<\s*([\d.]+\w*)/i)
1603
2363
  const simpleSupMatch = condition.match(/>\s*([\d.]+\w*)/i)
2364
+ const simpleInfEqMatch = condition.match(/<=\s*([\d.]+\w*)/i)
2365
+ const simpleSupEqMatch = condition.match(/>=\s*([\d.]+\w*)/i)
2366
+ const simpleEqMatch = condition.match(/=\s*([\d.]+\w*)/i)
1604
2367
 
1605
2368
  if (plusPetitMatch) {
1606
2369
  query = `(max-width: ${plusPetitMatch[1]})`
@@ -1612,10 +2375,20 @@ class CSSGenerator {
1612
2375
  query = `(min-width: ${superieurMatch[1]})`
1613
2376
  } else if (egalMatch) {
1614
2377
  query = `(width: ${egalMatch[1]})`
2378
+ } else if (simpleInfEqMatch) {
2379
+ query = `(max-width: ${simpleInfEqMatch[1]})`
2380
+ } else if (simpleSupEqMatch) {
2381
+ query = `(min-width: ${simpleSupEqMatch[1]})`
1615
2382
  } else if (simpleInfMatch) {
1616
- query = `(max-width: ${simpleInfMatch[1]})`
2383
+ const val = parseInt(simpleInfMatch[1])
2384
+ const unit = simpleInfMatch[1].replace(/[\d.]+/, '')
2385
+ query = `(max-width: ${val - 1}${unit || 'px'})`
1617
2386
  } else if (simpleSupMatch) {
1618
- query = `(min-width: ${simpleSupMatch[1]})`
2387
+ const val = parseInt(simpleSupMatch[1])
2388
+ const unit = simpleSupMatch[1].replace(/[\d.]+/, '')
2389
+ query = `(min-width: ${val + 1}${unit || 'px'})`
2390
+ } else if (simpleEqMatch) {
2391
+ query = `(width: ${simpleEqMatch[1]})`
1619
2392
  } else {
1620
2393
  query = this.translateMediaQuery(condition)
1621
2394
  }
@@ -1633,6 +2406,93 @@ class CSSGenerator {
1633
2406
  this.writeLine('')
1634
2407
  }
1635
2408
 
2409
+ generateContainer(node) {
2410
+ let name = node.name || ''
2411
+ let condition = node.condition || node.query || ''
2412
+
2413
+ condition = this.translateContainerQuery(condition)
2414
+
2415
+ const containerQuery = name ? `${name} ${condition}` : condition
2416
+
2417
+ this.writeLine(`@container ${containerQuery} {`)
2418
+ this.indent++
2419
+
2420
+ const rules = node.rules || node.children || []
2421
+ for (const rule of rules) {
2422
+ this.generateNode(rule)
2423
+ }
2424
+
2425
+ this.indent--
2426
+ this.writeLine('}')
2427
+ this.writeLine('')
2428
+ }
2429
+
2430
+ translateContainerQuery(query) {
2431
+ let result = query
2432
+
2433
+ result = result.replace(/largeur-min/gi, 'min-width')
2434
+ result = result.replace(/largeur min/gi, 'min-width')
2435
+ result = result.replace(/largeur-max/gi, 'max-width')
2436
+ result = result.replace(/largeur max/gi, 'max-width')
2437
+ result = result.replace(/hauteur-min/gi, 'min-height')
2438
+ result = result.replace(/hauteur min/gi, 'min-height')
2439
+ result = result.replace(/hauteur-max/gi, 'max-height')
2440
+ result = result.replace(/hauteur max/gi, 'max-height')
2441
+ result = result.replace(/\bet\b/gi, 'and')
2442
+ result = result.replace(/\bou\b/gi, 'or')
2443
+ result = result.replace(/\bpas\b/gi, 'not')
2444
+
2445
+ return result
2446
+ }
2447
+
2448
+ generateLayer(node) {
2449
+ const name = node.name || ''
2450
+
2451
+ if (node.rules || node.children) {
2452
+ this.writeLine(`@layer ${name} {`)
2453
+ this.indent++
2454
+
2455
+ const rules = node.rules || node.children || []
2456
+ for (const rule of rules) {
2457
+ this.generateNode(rule)
2458
+ }
2459
+
2460
+ this.indent--
2461
+ this.writeLine('}')
2462
+ } else {
2463
+ this.writeLine(`@layer ${name};`)
2464
+ }
2465
+ this.writeLine('')
2466
+ }
2467
+
2468
+ generateSupports(node) {
2469
+ let condition = node.condition || node.query || ''
2470
+
2471
+ condition = this.translateSupportsQuery(condition)
2472
+
2473
+ this.writeLine(`@supports ${condition} {`)
2474
+ this.indent++
2475
+
2476
+ const rules = node.rules || node.children || []
2477
+ for (const rule of rules) {
2478
+ this.generateNode(rule)
2479
+ }
2480
+
2481
+ this.indent--
2482
+ this.writeLine('}')
2483
+ this.writeLine('')
2484
+ }
2485
+
2486
+ translateSupportsQuery(query) {
2487
+ let result = query
2488
+
2489
+ result = result.replace(/\bet\b/gi, 'and')
2490
+ result = result.replace(/\bou\b/gi, 'or')
2491
+ result = result.replace(/\bpas\b/gi, 'not')
2492
+
2493
+ return result
2494
+ }
2495
+
1636
2496
  generateFontFace(node) {
1637
2497
  this.writeLine('@font-face {')
1638
2498
  this.indent++
@@ -1647,6 +2507,8 @@ class CSSGenerator {
1647
2507
  property = property.replace(/poids/gi, 'font-weight')
1648
2508
  property = property.replace(/style/gi, 'font-style')
1649
2509
  property = property.replace(/affichage/gi, 'font-display')
2510
+ property = property.replace(/étendue unicode/gi, 'unicode-range')
2511
+ property = property.replace(/etendue unicode/gi, 'unicode-range')
1650
2512
 
1651
2513
  this.writeLine(`${property}: ${value};`)
1652
2514
  }
@@ -1659,12 +2521,22 @@ class CSSGenerator {
1659
2521
  generateImport(node) {
1660
2522
  const url = node.url || node.path
1661
2523
  const media = node.media || ''
2524
+ const layer = node.layer || ''
2525
+ const supports = node.supports || ''
1662
2526
 
2527
+ let importStatement = `@import url("${url}")`
2528
+
2529
+ if (layer) {
2530
+ importStatement += ` layer(${layer})`
2531
+ }
2532
+ if (supports) {
2533
+ importStatement += ` supports(${supports})`
2534
+ }
1663
2535
  if (media) {
1664
- this.writeLine(`@import url("${url}") ${media};`)
1665
- } else {
1666
- this.writeLine(`@import url("${url}");`)
2536
+ importStatement += ` ${media}`
1667
2537
  }
2538
+
2539
+ this.writeLine(`${importStatement};`)
1668
2540
  }
1669
2541
 
1670
2542
  writeLine(text) {