@@ -8,6 +8,7 @@ import 'dom/image_transformers.dart';
88import 'dom/link_transformers.dart' ;
99import 'dom/meta_transformers.dart' ;
1010import 'dom/script_transformers.dart' ;
11+ import 'dom/width_transformers.dart' ;
1112import 'text/convert_tags_text_transformer.dart' ;
1213import 'text/linebreak_text_transformer.dart' ;
1314import 'text/links_text_transformer.dart' ;
@@ -28,6 +29,7 @@ class TransformConfiguration {
2829 this .enableDarkMode = false ,
2930 this .emptyMessageText = standardEmptyMessageText,
3031 this .plainTextHtmlTemplate = standardPlainTextHtmlTemplate,
32+ this .attributeWidthMax = standardAttributeMaxWidth,
3133 this .customValues,
3234 });
3335
@@ -44,6 +46,7 @@ class TransformConfiguration {
4446 String plainTextHtmlTemplate = standardPlainTextHtmlTemplate,
4547 List <DomTransformer >? customDomTransformers,
4648 List <TextTransformer >? customTextTransformers,
49+ int attributeWidthMax = standardAttributeMaxWidth,
4750 Map <String , dynamic >? customValues,
4851 }) {
4952 final domTransformers = (customDomTransformers != null )
@@ -53,6 +56,7 @@ class TransformConfiguration {
5356 ? [...standardTextTransformers, ...customTextTransformers]
5457 : standardTextTransformers;
5558 maxImageWidth ?? = standardMaxImageWidth;
59+
5660 return TransformConfiguration (
5761 blockExternalImages: blockExternalImages,
5862 preferPlainText: preferPlainText,
@@ -62,6 +66,7 @@ class TransformConfiguration {
6266 domTransformers: domTransformers,
6367 textTransformers: textTransformers,
6468 plainTextHtmlTemplate: plainTextHtmlTemplate,
69+ attributeWidthMax: attributeWidthMax,
6570 customValues: customValues,
6671 );
6772 }
@@ -96,6 +101,9 @@ class TransformConfiguration {
96101 /// before a plain text message without HTML part is converted into HTML
97102 final List <TextTransformer > textTransformers;
98103
104+ /// The maximum value for width attributes, defaults to 400.
105+ final int attributeWidthMax;
106+
99107 /// Optional custom values, `null` unless specified.
100108 final Map <String , dynamic >? customValues;
101109
@@ -111,6 +119,7 @@ class TransformConfiguration {
111119 domTransformers: standardDomTransformers,
112120 textTransformers: standardTextTransformers,
113121 plainTextHtmlTemplate: standardPlainTextHtmlTemplate,
122+ attributeWidthMax: standardAttributeMaxWidth,
114123 );
115124
116125 /// The standard maximum image width is `null` , ie not restricted.
@@ -129,13 +138,17 @@ class TransformConfiguration {
129138 static const String standardEmptyMessageText =
130139 'This message has no contents.' ;
131140
141+ /// The standard maximum width for attributes is 400.
142+ static const int standardAttributeMaxWidth = 400 ;
143+
132144 /// The list of default DOM transformers
133145 static const List <DomTransformer > standardDomTransformers = [
134146 ViewPortTransformer (),
135147 RemoveScriptTransformer (),
136148 ImageTransformer (),
137149 EnsureRelationNoreferrerTransformer (),
138150 DarkModeTransformer (),
151+ WidthTransformer (),
139152 ];
140153
141154 /// The list of default text transformers
@@ -155,8 +168,11 @@ abstract class DomTransformer {
155168 /// Transforms the [document] of the [message] using [configuration] .
156169 ///
157170 /// All changes will be visible to subsequent transformers.
158- void process (Document document, MimeMessage message,
159- TransformConfiguration configuration);
171+ void process (
172+ Document document,
173+ MimeMessage message,
174+ TransformConfiguration configuration,
175+ );
160176
161177 /// Adds a HEAD element if necessary
162178 void ensureDocumentHeadIsAvailable (Document document) {
0 commit comments