render method
ValueProvider
render(
- JSONRender render,
- DivElement output,
- dynamic node,
- dynamic nodeOriginal,
- NodeKey nodeKey,
override
Implementation
@override
ValueProvider render(JSONRender render, DivElement output, dynamic node,
dynamic nodeOriginal, NodeKey nodeKey) {
var urlLabel = '$node';
var url = urlLabel.trim();
String? target;
if (filterURL != null) {
var ret = filterURL!(url);
url = ret.url;
urlLabel = ret.label;
target = ret.target;
}
if (target != null && target.trim().isEmpty) target = null;
target ??= 'self';
Element elem;
ValueProvider valueProvider;
if (render.renderMode == JSONRenderMode.input) {
var input = InputElement()
..value = urlLabel
..type = 'url';
elem = input;
_adjustInputWidthByValueOnKeyPress(elem as InputElement);
elem.onDoubleClick.listen((e) {
var inputURL = input.value;
if (inputURL == urlLabel) {
// ignore: unsafe_html
window.open(url, target!);
} else {
// ignore: unsafe_html
window.open(inputURL!, target!);
}
});
valueProvider = (parent) => (elem as InputElement).value;
} else {
var a = AnchorElement(href: url)
..text = urlLabel
..target = target;
elem = a;
valueProvider = (parent) => nodeOriginal;
}
output.children.add(elem);
applyCSS(render, output, extraElements: [elem]);
return valueProvider;
}