cloneNode method

void cloneNode(
  1. Pointer<NativeBindingObject> selfPtr,
  2. Pointer<NativeBindingObject> newPtr
)

Implementation

void cloneNode(Pointer<NativeBindingObject> selfPtr, Pointer<NativeBindingObject> newPtr) {
  assert(hasBindingObject(selfPtr));
  assert(hasBindingObject(newPtr));

  EventTarget? originalTarget = getBindingObject<EventTarget>(selfPtr);
  EventTarget? newTarget = getBindingObject<EventTarget>(newPtr);

  if (originalTarget == null || newTarget == null) return;

  // Current only element clone will process in dart.
  if (originalTarget is Element) {
    Element newElement = newTarget as Element;
    // Copy inline style.
    originalTarget.inlineStyle.forEach((key, value) {
      newElement.setInlineStyle(key, value);
    });
    // Copy element attributes.
    originalTarget.attributes.forEach((key, value) {
      newElement.setAttribute(key, value);
    });
    newElement.className = originalTarget.className;
    newElement.id = originalTarget.id;
  }
}