Skip to content

⬅️ Back to Table of Contents

📄 HiddenItem.tsx

📊 Analysis Summary

Metric Count
🔧 Functions 1
📦 Imports 5
💠 JSX Elements 5
📐 Interfaces 1

📚 Table of Contents

🛠️ File Location:

📂 packages/website/src/components/ast/HiddenItem.tsx

📦 Imports

Name Source
useEffect react
useState react
React react
styles ./ASTViewer.module.css
PropertyValue ./PropertyValue

JSX Elements

Component Type Props Children
span element className={styles.hidden} {isArray && !isComplex ? (
value.map(([, item], index) => (
${level}_[${index}]}>
{index > 0 && ', '}
))
) : isArray ? (
<>
{length}
) : (
value.map(([key], index) => (
${level}_[${index}]}>
{index > 0 && ', '}
{key}
))
)}
span element key={${level}_[${index}]} {index > 0 && ', '},
PropertyValue component value={item} none
Fragment fragment none none
span element key={${level}_[${index}]} {index > 0 && ', '},

Functions

`HiddenItem({

isArray, level, value, }: HiddenItemProps): React.JSX.Element`

Code
export default function HiddenItem({
  isArray,
  level,
  value,
}: HiddenItemProps): React.JSX.Element {
  const [isComplex, setIsComplex] = useState<boolean>(true);
  const [length, setLength] = useState<number>(0);

  useEffect(() => {
    if (isArray) {
      const filtered = value.filter(([key]) => !isNaN(Number(key)));
      setIsComplex(filtered.some(([, item]) => typeof item !== 'number'));
      setLength(filtered.length);
    }
  }, [value, isArray]);

  return (
    <span className={styles.hidden}>
      {isArray && !isComplex ? (
        value.map(([, item], index) => (
          <span key={`${level}_[${index}]`}>
            {index > 0 && ', '}
            <PropertyValue value={item} />
          </span>
        ))
      ) : isArray ? (
        <>
          {length} {length === 1 ? 'element' : 'elements'}
        </>
      ) : (
        value.map(([key], index) => (
          <span key={`${level}_[${index}]`}>
            {index > 0 && ', '}
            {key}
          </span>
        ))
      )}
    </span>
  );
}
  • Parameters:
  • { isArray, level, value, }: HiddenItemProps
  • Return Type: React.JSX.Element
  • Calls:
  • useState (from react)
  • useEffect (from react)
  • value.filter
  • isNaN
  • Number
  • setIsComplex
  • filtered.some
  • setLength
  • value.map

Interfaces

HiddenItemProps

Interface Code
export interface HiddenItemProps {
  readonly isArray?: boolean;
  readonly level: string;
  readonly value: [string, unknown][];
}

Properties

Name Type Optional Description
isArray boolean
level string
value [string, unknown][]