prepare method

  1. @override
StyledElement prepare(
  1. ExtensionContext context,
  2. List<StyledElement> children
)

Converts parsed HTML to a StyledElement.

Implementation

@override
StyledElement prepare(
    ExtensionContext context, List<StyledElement> children) {
  if (context.elementName == "table") {
    final cellDescendants = _getCellDescendants(children);

    return TableElement(
      name: context.elementName,
      elementId: context.id,
      elementClasses: context.classes.toList(),
      tableStructure: children,
      cellDescendants: cellDescendants,
      style: Style(display: Display.block),
      node: context.node,
    );
  }

  if (context.elementName == "th" || context.elementName == "td") {
    return TableCellElement(
      style: context.elementName == "th"
          ? Style(
              fontWeight: FontWeight.bold,
              textAlign: TextAlign.center,
              verticalAlign: VerticalAlign.middle,
            )
          : Style(
              verticalAlign: VerticalAlign.middle,
            ),
      children: children,
      node: context.node,
      name: context.elementName,
      elementClasses: context.classes.toList(),
      elementId: context.id,
    );
  }

  if (context.elementName == "tbody" ||
      context.elementName == "thead" ||
      context.elementName == "tfoot") {
    return TableSectionLayoutElement(
      name: context.elementName,
      elementId: context.id,
      elementClasses: context.classes.toList(),
      children: children,
      style: Style(),
      node: context.node,
    );
  }

  if (context.elementName == "tr") {
    return TableRowLayoutElement(
      name: context.elementName,
      elementId: context.id,
      elementClasses: context.classes.toList(),
      children: children,
      style: Style(),
      node: context.node,
    );
  }

  if (context.elementName == "col" || context.elementName == "colgroup") {
    return TableStyleElement(
      name: context.elementName,
      elementId: context.id,
      elementClasses: context.classes.toList(),
      children: children,
      style: Style(),
      node: context.node,
    );
  }

  throw UnimplementedError("This isn't possible");
}