import { css } from '@emotion/react'; import { theme, spacing, UndoIcon, iconSize } from '@expo/styleguide'; import React from 'react'; import ReactMarkdown from 'react-markdown'; import { InlineCode } from '~/components/base/code'; import { LI, UL } from '~/components/base/list'; import { H2, H3Code, H4, H4Code } from '~/components/plugins/Headings'; import { MethodDefinitionData, MethodSignatureData, PropData, TypeSignaturesData, } from '~/components/plugins/api/APIDataTypes'; import { APISectionDeprecationNote } from '~/components/plugins/api/APISectionDeprecationNote'; import { APISectionPlatformTags } from '~/components/plugins/api/APISectionPlatformTags'; import { CommentTextBlock, getTagNamesList, listParams, mdComponents, renderParams, resolveTypeName, STYLES_APIBOX, STYLES_APIBOX_NESTED, STYLES_NESTED_SECTION_HEADER, STYLES_NOT_EXPOSED_HEADER, } from '~/components/plugins/api/APISectionUtils'; export type APISectionMethodsProps = { data: (MethodDefinitionData | PropData)[]; apiName?: string; header?: string; }; export type RenderMethodOptions = { apiName?: string; header?: string; exposeInSidebar?: boolean; }; export const renderMethod = ( method: MethodDefinitionData | PropData, { apiName, exposeInSidebar = true }: RenderMethodOptions = {} ): JSX.Element[] => { const signatures = method.signatures || (method as PropData)?.type?.declaration?.signatures || []; const HeaderComponent = exposeInSidebar ? H3Code : H4Code; return signatures.map( ({ name, parameters, comment, type }: MethodSignatureData | TypeSignaturesData) => (