map method
void
map(
- DOMNode domNode,
- T element, {
- DOMGenerator<
T> ? generator, - DOMContext<
T> ? context, - bool allowOverwrite = false,
Maps in this instance the pair domNode and element.
Implementation
void map(DOMNode domNode, T element,
{DOMGenerator<T>? generator,
DOMContext<T>? context,
bool allowOverwrite = false}) {
if (generator != null) {
var mappable = generator.isMappable(domNode, context: context);
// Skip mapping:
if (!mappable) {
return;
}
}
final elementToDOMNodeMap = _elementToDOMNodeMap ??= DualMap();
var put = elementToDOMNodeMap.putValueIfAbsent(element, domNode);
if (!put) {
var prevDomNode = elementToDOMNodeMap.get(element);
var samePrevDomNode = identical(prevDomNode, domNode);
if (samePrevDomNode) {
if (!identical(domNode.treeMap, this)) {
domNode.treeMap = this;
_elementsDOMTreeMap[element] = _selfWeakReference;
}
return;
} else {
if (!allowOverwrite) {
print(
'WARNING> Mapping to different instances: $element ; $prevDomNode');
}
}
}
domNode.treeMap = this;
_elementsDOMTreeMap[element] = _selfWeakReference;
if (domNode is DOMElement) {
domGenerator.resolveActionAttribute(this, domNode, element, context);
domGenerator.registerEventListeners(this, domNode, element, context);
manageDOMElementDSXs(domNode);
}
}