diff --git a/js/src/dom/eventHandler.js b/js/src/dom/eventHandler.js
index 25248fb92ffb4699a31dcfae311a9508e598f338..95bafe4ed8cf1ad8cdcc951d0f4118f4bff610f8 100644
--- a/js/src/dom/eventHandler.js
+++ b/js/src/dom/eventHandler.js
@@ -281,7 +281,7 @@ const EventHandler = (() => {
 
       // merge custom informations in our event
       if (typeof args !== 'undefined') {
-        evt = Util.extend(evt, args)
+        evt = Object.assign(evt, args)
       }
 
       if (defaultPrevented) {
diff --git a/js/src/dom/polyfill.js b/js/src/dom/polyfill.js
index 159884df89b40dc8ad55f6bf08021fa879a97c8d..c0c1139f03604a842ff8a7ff9914decfb7a9a401 100644
--- a/js/src/dom/polyfill.js
+++ b/js/src/dom/polyfill.js
@@ -155,6 +155,33 @@ const Polyfill = (() => {
     }
   }
 
+  if (typeof Object.assign !== 'function') {
+    Object.defineProperty(Object, 'assign', {
+      value: (target, ...args) => {
+        if (target === null || typeof target === 'undefined') {
+          throw new TypeError('Cannot convert undefined or null to object')
+        }
+
+        const to = Object(target)
+
+        for (let index = 1; index < args.length; index++) {
+          const nextSource = args[index]
+
+          if (nextSource !== null || !nextSource) {
+            for (const nextKey in nextSource) {
+              if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+                to[nextKey] = nextSource[nextKey]
+              }
+            }
+          }
+        }
+        return to
+      },
+      writable: true,
+      configurable: true
+    })
+  }
+
   return {
     defaultPreventedPreservedOnDispatch,
     focusIn: typeof window.onfocusin === 'undefined',
diff --git a/js/src/util.js b/js/src/util.js
index 0b7f492feea4e2630e9881cdb1d033aa9fd15513..7a97411bbf24ef3aaf6120e26c5d31cdd5dec6f6 100644
--- a/js/src/util.js
+++ b/js/src/util.js
@@ -114,28 +114,6 @@ const Util = {
     }
   },
 
-  extend(obj1, ...others) {
-    const obj2 = others.shift()
-    for (const secondProp in obj2) {
-      if (Object.prototype.hasOwnProperty.call(obj2, secondProp)) {
-        const secondVal = obj2[secondProp]
-        // Is this value an object?  If so, iterate over its properties, copying them over
-        if (secondVal && Object.prototype.toString.call(secondVal) === '[object Object]') {
-          obj1[secondProp] = obj1[secondProp] || {}
-          Util.extend(obj1[secondProp], secondVal)
-        } else {
-          obj1[secondProp] = secondVal
-        }
-      }
-    }
-
-    if (others.length) {
-      this.extend(obj1, ...others)
-    }
-
-    return obj1
-  },
-
   makeArray(nodeList) {
     if (typeof nodeList === 'undefined' || nodeList === null) {
       return []