getCssStyles method

List<String> getCssStyles()

Implementation

List<String> getCssStyles() {
  final OpAttributes attrs = op.attributes;

  final List<List<String>> propsArr = <List<String>>[
    <String>['color']
  ];
  final bool inlineStyles = _supportInlineStyles();
  if (inlineStyles || options.allowBackgroundClasses != true) {
    propsArr.add(<String>['background', 'background-color']);
  }
  if (inlineStyles) {
    propsArr.addAll(<List<String>>[
      <String>['indent'],
      <String>['align', 'text-align'],
      <String>['direction'],
      <String>['line-height'],
      <String>['font', 'font-family'],
      <String>['size'],
      <String>['list'],
    ]);
  }

  final List<String> props = propsArr
      .where((List<String> item) => isTruthy(attrs[item[0]]))
      .map((List<String> item) {
        final String attribute = item[0];
        final attrValue = attrs[attribute];

        final InlineStyleType? attributeConverter =
            (_supportInlineStyles() ? (options.inlineStyles?[attribute]) : null) ?? defaultInlineStyles[attribute];

        if (attributeConverter?.map != null) {
          return attributeConverter!.map![attrValue];
        } else if (attributeConverter?.fn != null) {
          return attributeConverter!.fn!(attrValue.toString(), op);
        } else {
          return '${arr.preferSecond(item)}:$attrValue';
        }
      })
      .where((String? item) => item != null)
      .map((String? item) => item!)
      .toList();

  final List<String>? customCssStyles = getCustomCssStyles();
  if (customCssStyles != null) props.insertAll(0, customCssStyles);

  return props;
}