Sha256: 5c86f385741f6b1497ed7acd2d5b343aa325d31a11d550de2fd85baa7e3d1756
Contents?: true
Size: 1.66 KB
Versions: 92
Compression:
Stored size: 1.66 KB
Contents
import { extend } from '../util'; /** * Check if two nodes are equivalent. * @param {import('../dom').PreactElement} node DOM Node to compare * @param {import('../vnode').VNode} vnode Virtual DOM node to compare * @param {boolean} [hydrating=false] If true, ignores component constructors * when comparing. * @private */ export function isSameNodeType(node, vnode, hydrating) { if (typeof vnode==='string' || typeof vnode==='number') { return node.splitText!==undefined; } if (typeof vnode.nodeName==='string') { return !node._componentConstructor && isNamedNode(node, vnode.nodeName); } return hydrating || node._componentConstructor===vnode.nodeName; } /** * Check if an Element has a given nodeName, case-insensitively. * @param {import('../dom').PreactElement} node A DOM Element to inspect the name of. * @param {string} nodeName Unnormalized name to compare against. */ export function isNamedNode(node, nodeName) { return node.normalizedNodeName===nodeName || node.nodeName.toLowerCase()===nodeName.toLowerCase(); } /** * 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 {import('../vnode').VNode} vnode The VNode to get props for * @returns {object} The props to use for this VNode */ export function getNodeProps(vnode) { let props = extend({}, vnode.attributes); props.children = vnode.children; let defaultProps = vnode.nodeName.defaultProps; if (defaultProps!==undefined) { for (let i in defaultProps) { if (props[i]===undefined) { props[i] = defaultProps[i]; } } } return props; }
Version data entries
92 entries across 92 versions & 1 rubygems