diff options
author | tg(x) <*@tg-x.net> | 2016-10-05 00:02:10 +0200 |
---|---|---|
committer | tg(x) <*@tg-x.net> | 2016-10-05 00:02:10 +0200 |
commit | ec62d29c90958aa8d41474ed2fe5a179d6fafed7 (patch) | |
tree | 367cc55bc6772cf194ed6c4778cd344d581d3d7c /thirdparty/preact/src/vdom/index.js | |
parent | fda241d74d5c1c39203b64da676c684d4dc9d800 (diff) | |
parent | d3ccf4103900b8d990b1970d135695b938d94eae (diff) |
Merge branch 'master' of taler.net:/var/git/wallet-webex
Diffstat (limited to 'thirdparty/preact/src/vdom/index.js')
-rw-r--r-- | thirdparty/preact/src/vdom/index.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/thirdparty/preact/src/vdom/index.js b/thirdparty/preact/src/vdom/index.js new file mode 100644 index 000000000..50d4ca2b9 --- /dev/null +++ b/thirdparty/preact/src/vdom/index.js @@ -0,0 +1,50 @@ +import { clone, isString, isFunction, toLowerCase } from '../util'; +import { isFunctionalComponent } from './functional-component'; + + +/** Check if two nodes are equivalent. + * @param {Element} node + * @param {VNode} vnode + * @private + */ +export function isSameNodeType(node, vnode) { + if (isString(vnode)) { + return node instanceof Text; + } + if (isString(vnode.nodeName)) { + return isNamedNode(node, vnode.nodeName); + } + if (isFunction(vnode.nodeName)) { + return node._componentConstructor===vnode.nodeName || isFunctionalComponent(vnode); + } +} + + +export function isNamedNode(node, nodeName) { + return node.normalizedNodeName===nodeName || toLowerCase(node.nodeName)===toLowerCase(nodeName); +} + + +/** + * Reconstruct Component-style `props` from a VNode. + * Ensures default/fallback values from `defaultProps`: + * Own-properties of `defaultProps` not present in `vnode.attributes` are added. + * @param {VNode} vnode + * @returns {Object} props + */ +export function getNodeProps(vnode) { + let defaultProps = vnode.nodeName.defaultProps, + props = clone(vnode.attributes); + + if (defaultProps) { + for (let i in defaultProps) { + if (props[i]===undefined) { + props[i] = defaultProps[i]; + } + } + } + + if (vnode.children) props.children = vnode.children; + + return props; +} |