render method

  1. @override
ValueProvider render(
  1. JSONRender render,
  2. DivElement output,
  3. dynamic node,
  4. dynamic nodeOriginal,
  5. NodeKey nodeKey,
)
override

Implementation

@override
ValueProvider render(JSONRender render, DivElement output, dynamic node,
    dynamic nodeOriginal, NodeKey nodeKey) {
  var list = node as List;

  var simpleList = isSimpleList(list, 8, 10);

  var listContent = _createClosableContent(
      render, output, '[', ']', simpleList, () => list.length, cssClass);

  var valueSet = JSONValueSet(true);

  for (var i = 0; i < list.length; ++i) {
    var elem = list[i];

    var elemIdx = SpanElement()
      ..innerHtml =
          simpleList ? ' &nbsp; #$i: &nbsp; ' : ' &nbsp; &nbsp; #$i: &nbsp; ';
    var elemContent = createDivInline();

    var elemNodeKey = nodeKey.append('$i');

    if (render.isHiddenNode(elemNodeKey)) {
      valueSet.put(elemNodeKey, (p) => nodeOriginal);
      continue;
    }

    var elemValueProvider =
        render.renderNode(elemContent, elem, node, elemNodeKey);

    valueSet.put(elemNodeKey, elemValueProvider);

    if (elemValueProvider == null) continue;

    listContent.children.add(elemIdx);
    listContent.children.add(elemContent);

    if (!simpleList) {
      listContent.children.add(BRElement());
    }
  }

  this.applyCSS(render, output);

  return valueSet.asValueProvider();
}