export default function patchDOMForGoogleTranslate()

in src/utils/patchDOMForGoogleTranslate.js [13:51]


export default function patchDOMForGoogleTranslate() {
  if (typeof Node !== 'function' || Node.prototype == null) {
    return;
  }

  // $FlowFixMe Intentionally monkepatching.
  const originalRemoveChild = Node.prototype.removeChild;
  // $FlowFixMe Intentionally monkepatching.
  Node.prototype.removeChild = function(child) {
    if (child.parentNode !== this) {
      if (typeof console !== 'undefined') {
        console.error(
          'Cannot remove a child from a different parent',
          child,
          this,
        );
      }
      return child;
    }
    return originalRemoveChild.apply(this, arguments);
  };

  // $FlowFixMe Intentionally monkepatching.
  const originalInsertBefore = Node.prototype.insertBefore;
  // $FlowFixMe Intentionally monkepatching.
  Node.prototype.insertBefore = function(newNode, referenceNode) {
    if (referenceNode && referenceNode.parentNode !== this) {
      if (typeof console !== 'undefined') {
        console.error(
          'Cannot insert before a reference node from a different parent',
          referenceNode,
          this,
        );
      }
      return newNode;
    }
    return originalInsertBefore.apply(this, arguments);
  };
}