summaryrefslogtreecommitdiff
path: root/preact/compat/src/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'preact/compat/src/util.js')
-rw-r--r--preact/compat/src/util.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/preact/compat/src/util.js b/preact/compat/src/util.js
new file mode 100644
index 0000000..fa12b09
--- /dev/null
+++ b/preact/compat/src/util.js
@@ -0,0 +1,28 @@
+/**
+ * Assign properties from `props` to `obj`
+ * @template O, P The obj and props types
+ * @param {O} obj The object to copy properties to
+ * @param {P} props The object to copy properties from
+ * @returns {O & P}
+ */
+export function assign(obj, props) {
+ for (let i in props) obj[i] = props[i];
+ return /** @type {O & P} */ (obj);
+}
+
+/**
+ * Check if two objects have a different shape
+ * @param {object} a
+ * @param {object} b
+ * @returns {boolean}
+ */
+export function shallowDiffers(a, b) {
+ for (let i in a) if (i !== '__source' && !(i in b)) return true;
+ for (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;
+ return false;
+}
+
+export function removeNode(node) {
+ let parentNode = node.parentNode;
+ if (parentNode) parentNode.removeChild(node);
+}