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 imageURL = parseImageURL(node);
  var perspectiveFilter = parsePerspectiveFilter(node);
  var clip = parseClip(node);
  var rectangles = parseRectangles(node);
  var points = parsePoints(node);

  var time = parseTime(node);

  String? urlType;

  if (filterURL != null) {
    var ret = filterURL!(imageURL);
    imageURL = ret.url;
    urlType = ret.type;
  }

  Element elem = createDivInline();

  var imgElemContainer =
      createImageElementFromURL(render, lazyLoad, imageURL, urlType);
  imgElemContainer.style.maxWidth = '70vw';
  imgElemContainer.style.maxHeight = '40vw';

  var imgElem = imgElemContainer is ImageElement
      ? imgElemContainer
      : imgElemContainer.querySelector('img') as ImageElement;

  valueProviderOriginal(parent) => nodeOriginal;

  var valueProviderRef = ValueProviderReference(valueProviderOriginal);

  imgElem.onLoad.listen((e) {
    renderLoadedImage(render, node, elem, imgElem, perspectiveFilter, clip,
        rectangles, points, time, valueProviderRef);
  });

  elem.children.add(imgElemContainer);

  output.children.add(elem);

  this.applyCSS(render, output, extraElements: [elem]);

  return valueProviderRef.asValueProvider();
}