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

Version Path
govuk_publishing_components-17.21.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.20.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.19.1 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.19.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.18.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.17.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.16.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.15.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.14.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.13.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.12.2 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.12.1 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.12.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.11.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.10.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.9.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.8.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.7.0 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.6.1 node_modules/preact/src/vdom/index.js
govuk_publishing_components-17.6.0 node_modules/preact/src/vdom/index.js