diff options
author | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:46:06 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-08-23 16:48:30 -0300 |
commit | 38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch) | |
tree | 453dbf70000cc5e338b06201af1eaca8343f8f73 /preact/src/util.js | |
parent | f26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff) | |
download | node-vendor-master.tar.gz node-vendor-master.tar.bz2 node-vendor-master.zip |
Diffstat (limited to 'preact/src/util.js')
-rw-r--r-- | preact/src/util.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/preact/src/util.js b/preact/src/util.js new file mode 100644 index 0000000..0e9b3b1 --- /dev/null +++ b/preact/src/util.js @@ -0,0 +1,27 @@ +import { EMPTY_ARR } from './constants'; + +/** + * 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) { + // @ts-ignore We change the type of `obj` to be `O & P` + for (let i in props) obj[i] = props[i]; + return /** @type {O & P} */ (obj); +} + +/** + * Remove a child node from its parent if attached. This is a workaround for + * IE11 which doesn't support `Element.prototype.remove()`. Using this function + * is smaller than including a dedicated polyfill. + * @param {Node} node The node to remove + */ +export function removeNode(node) { + let parentNode = node.parentNode; + if (parentNode) parentNode.removeChild(node); +} + +export const slice = EMPTY_ARR.slice; |