Skip to content

Commit

Permalink
Optimize appendStyle
Browse files Browse the repository at this point in the history
  • Loading branch information
gmpassos committed Dec 21, 2024
1 parent 69b74f2 commit fb276d9
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 19 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## 2.5.12

- `UIComponent`:
- Optimize `parseClasses`, `configureClasses`, `appendClasses`.
- Optimize `parseClasses`, `configureClasses`, `appendClasses` and `appendStyle`.
- `_callRenderImpl`: optimize check if parent contains content.
- `_normalizeRenderListValue`: optimize type check order.
- Improve null-safe code.
Expand Down
60 changes: 42 additions & 18 deletions lib/src/bones_ui_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ abstract class UIComponent extends UIEventHandler {

static final RegExp _classesEntryDelimiter = RegExp(r'[\s,;]+');

static List<String> parseClasses(dynamic classes1, [dynamic classes2]) {
static List<String> parseClasses(Object? classes1, [Object? classes2]) {
if (classes1 != null && classes2 != null) {
var c1 = _parseClasses(classes1);
var c2 = _parseClasses(classes2);
Expand Down Expand Up @@ -508,12 +508,12 @@ abstract class UIComponent extends UIEventHandler {
appendClasses(classes1, classes2);
}

void appendClasses(dynamic classes1, [dynamic classes2]) {
void appendClasses(Object? classes1, [Object? classes2]) {
List<String> classesNames;
if (classes1 != null && classes2 != null) {
classesNames = <String>[
if (classes1 != null) ...parseClasses(classes1),
if (classes2 != null) ...parseClasses(classes2)
...parseClasses(classes1),
...parseClasses(classes2)
];
} else if (classes1 != null) {
classesNames = parseClasses(classes1);

Check warning on line 519 in lib/src/bones_ui_component.dart

View check run for this annotation

Codecov / codecov/patch

lib/src/bones_ui_component.dart#L519

Added line #L519 was not covered by tests
Expand Down Expand Up @@ -545,30 +545,54 @@ abstract class UIComponent extends UIEventHandler {
static List<String> parseStyle(style1) => toFlatListOfStrings(style1,
delimiter: _cssEntryDelimiter, trim: true, ignoreEmpty: true);

void configureStyle(dynamic style1,
[dynamic style2, dynamic componentStyle]) {
void configureStyle(Object? style1,
[Object? style2, Object? componentStyle]) {
appendStyle(componentStyle, style1, style2);
}

void appendStyle(dynamic style1, [dynamic style2, dynamic style3]) {
var styles1 = parseStyle(style1);
var styles2 = parseStyle(style2);
var styles3 = parseStyle(style3);
void appendStyle(Object? style1, [Object? style2, Object? style3]) {
List<String> allStyles;

styles1.addAll(styles2);
styles1.addAll(styles3);
if (style1 != null) {
var styles1 = parseStyle(style1);
if (style2 != null) {
var styles2 = parseStyle(style2);
if (style3 != null) {
var styles3 = parseStyle(style3);
allStyles = [...styles1, ...styles2, ...styles3];
} else {
allStyles = [...styles1, ...styles2];
}
} else {
allStyles = styles1;
}
} else if (style2 != null) {
var styles2 = parseStyle(style2);
if (style3 != null) {
var styles3 = parseStyle(style3);
allStyles = [...styles2, ...styles3];
} else {
allStyles = styles2;
}
} else if (style3 != null) {
allStyles = parseStyle(style3);
} else {
return;
}

if (allStyles.isNotEmpty) {
var allStylesLine = allStyles.join('; ');

Check warning on line 584 in lib/src/bones_ui_component.dart

View check run for this annotation

Codecov / codecov/patch

lib/src/bones_ui_component.dart#L583-L584

Added lines #L583 - L584 were not covered by tests

if (styles1.isNotEmpty) {
var allStyles = styles1.join('; ');
final content = this.content!;

var cssText = content!.style.cssText ?? '';
var cssText = content.style.cssText ?? '';

Check warning on line 588 in lib/src/bones_ui_component.dart

View check run for this annotation

Codecov / codecov/patch

lib/src/bones_ui_component.dart#L588

Added line #L588 was not covered by tests
if (cssText == '') {
cssText = allStyles;
cssText = allStylesLine;
} else {
cssText += allStyles;
cssText += allStylesLine;
}

content!.style.cssText = cssText;
content.style.cssText = cssText;

Check warning on line 595 in lib/src/bones_ui_component.dart

View check run for this annotation

Codecov / codecov/patch

lib/src/bones_ui_component.dart#L595

Added line #L595 was not covered by tests
}
}

Expand Down

0 comments on commit fb276d9

Please sign in to comment.