Sha256: d9d10b9c6c0980fde780eb972fa9b410681adc5df588c08158c78d06d1274b99

Contents?: true

Size: 766 Bytes

Versions: 43

Compression:

Stored size: 766 Bytes

Contents

function resolveMemberExpressions(object = {}, property = {}) {
  if (object.type === 'JSXMemberExpression') {
    return `${resolveMemberExpressions(object.object, object.property)}.${property.name}`;
  }

  return `${object.name}.${property.name}`;
}

/**
 * Returns the tagName associated with a JSXElement.
 */
export default function elementType(node = {}) {
  const { name } = node;

  if (!name) {
    throw new Error('The argument provided is not a JSXElement node.');
  }

  if (name.type === 'JSXMemberExpression') {
    const { object = {}, property = {} } = name;
    return resolveMemberExpressions(object, property);
  }

  if (name.type === 'JSXNamespacedName') {
    return `${name.namespace.name}:${name.name.name}`;
  }

  return node.name.name;
}

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.21.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.20.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.19.1 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.19.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.18.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.17.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.16.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.15.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.14.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.13.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.12.2 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.12.1 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.12.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.11.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.10.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.9.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.8.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.7.0 node_modules/jsx-ast-utils/src/elementType.js
govuk_publishing_components-17.6.1 node_modules/jsx-ast-utils/src/elementType.js