import { isTsClass , isTsMethod , ITag , ITsClass , ITypescriptPluginData } from "@documentalist/client" ; import * as React from "react" ; import { Props } from "@blueprintjs/core" ; import { DocumentationContextTypes , IDocumentationContext } from "../common/context" ; import { MethodTable } from "../components/typescript/methodTable" ; export const Method = ( { className , value } , { getDocsData } ) => { const { typescript } = getDocsData ( ) as ITypescriptPluginData ; const member = typescript [ value ] ; if ( member === undefined ) { const possibleClass = value . split ( "." ) [ 0 ] ; const possibleClassMethod = value . split ( "." ) [ 1 ] ; const classMember = typescript [ possibleClass ] as ITsClass ; if ( isTsClass ( classMember ) && possibleClassMethod ) { const classMethod = classMember . methods . find ( method => method . name === possibleClassMethod ) ; if ( isTsMethod ( classMethod ) ) { return < MethodTable className = { className } data = { classMethod } / > ; } } throw new Error ( `Unknown @method ${ value }` ) ; } else if ( isTsMethod ( member ) ) { return < MethodTable className = { className } data = { member } / > ; } else { throw new Error ( `"@method ${ value }": unknown member kind "${ ( member as any ) . kind }"` ) ; } } ; Method . contextTypes = DocumentationContextTypes ; Method . displayName = "Docs2.Method" ;