Skip to content

⬅️ Back to Table of Contents

📄 HiddenItem

📊 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) => ( <span key={`${lev...
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

Parameters:

  • { isArray, level, value, } HiddenItemProps

Returns: React.JSX.Element

Calls:

  • useState (from react)
  • useEffect (from react)
  • value.filter
  • isNaN
  • Number
  • setIsComplex
  • filtered.some
  • setLength
  • value.map
Code
export default function HiddenItem({
  isArray,
  level,
  value,
}: HiddenItemProps): React.JSX.Element {
  const [isComplex, setIsComplex] = useState(true);
  const [length, setLength] = useState(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>
  );
}

Interfaces

HiddenItemProps

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

Properties

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

Generated by Syntax Scribe