diff options
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; |