Skip to content

⬅️ Back to Table of Contents

πŸ“„ SimplifiedTreeView

πŸ“Š Analysis Summary

Metric Count
πŸ”§ Functions 2
πŸ“¦ Imports 9
πŸ’  JSX Elements 7
πŸ“ Interfaces 1

πŸ“š Table of Contents

πŸ› οΈ File Location:

πŸ“‚ packages/website/src/components/typeDetails/SimplifiedTreeView.tsx

πŸ“¦ Imports

Name Source
clsx clsx
useCallback react
useMemo react
React react
OnHoverNodeFn ../ast/types
styles ../ast/ASTViewer.module.css
PropertyName ../ast/PropertyName
tsEnumToString ../ast/tsUtils
getRange ../ast/utils

JSX Elements

Component Type Props Children
div element className={styles.nonExpand} ,
span element className={selectedNode === value ? styles.selected : ''}
PropertyName component className={styles.propName}, onClick={(): void => { onSelect(value); }}, onHo... none
div element className={clsx(styles.subList, 'padding-left--md')} {items.map((item, index) => ( <SimplifiedItem key={index.toString()} onHoverN...
SimplifiedItem component key={index.toString()}, onHoverNode={onHoverNode}, onSelect={onSelect}, selec... none
div element className={clsx(styles.list, 'padding-left--sm')}
SimplifiedItem component none none

Functions

SimplifiedTreeView(params: SimplifiedTreeViewProps): React.JSX.Element

Parameters:

  • params SimplifiedTreeViewProps

Returns: React.JSX.Element

Calls:

  • clsx (from clsx)
Code
export function SimplifiedTreeView(
  params: SimplifiedTreeViewProps,
): React.JSX.Element {
  return (
    <div className={clsx(styles.list, 'padding-left--sm')}>
      <SimplifiedItem {...params} />
    </div>
  );
}

SimplifiedItem({ onHoverNode, onSelect, select…: SimplifiedTreeViewProps): React.JSX.Element

Parameters:

  • { onHoverNode, onSelect, selectedNode, value, } SimplifiedTreeViewProps

Returns: React.JSX.Element

Calls:

  • useMemo (from react)
  • value.forEachChild
  • result.push
  • useCallback (from react)
  • onHoverNode
  • getRange (from ../ast/utils)
  • onSelect
  • tsEnumToString (from ../ast/tsUtils)
  • clsx (from clsx)
  • items.map
  • index.toString
Code
function SimplifiedItem({
  onHoverNode,
  onSelect,
  selectedNode,
  value,
}: SimplifiedTreeViewProps): React.JSX.Element {
  const items = useMemo(() => {
    const result: ts.Node[] = [];
    value.forEachChild(child => {
      result.push(child);
    });
    return result;
  }, [value]);

  const onHover = useCallback(
    (v: boolean) => {
      if (onHoverNode) {
        return onHoverNode(v ? getRange(value, 'tsNode') : undefined);
      }
    },
    [onHoverNode, value],
  );

  return (
    <div className={styles.nonExpand}>
      <span className={selectedNode === value ? styles.selected : ''}>
        <PropertyName
          className={styles.propName}
          onClick={(): void => {
            onSelect(value);
          }}
          onHover={onHover}
          value={tsEnumToString('SyntaxKind', value.kind)}
        />
      </span>

      <div className={clsx(styles.subList, 'padding-left--md')}>
        {items.map((item, index) => (
          <SimplifiedItem
            key={index.toString()}
            onHoverNode={onHoverNode}
            onSelect={onSelect}
            selectedNode={selectedNode}
            value={item}
          />
        ))}
      </div>
    </div>
  );
}

Interfaces

SimplifiedTreeViewProps

Interface Code
export interface SimplifiedTreeViewProps {
  readonly onHoverNode?: OnHoverNodeFn;
  readonly onSelect: (value: ts.Node) => void;
  readonly selectedNode: ts.Node | undefined;
  readonly value: ts.Node;
}

Properties

Name Type Optional Description
onHoverNode OnHoverNodeFn βœ“ not shown
onSelect (value: ts.Node) => void βœ— not shown
selectedNode ts.Node \| undefined βœ— not shown
value ts.Node βœ— not shown

Generated by Syntax Scribe