UNPKG

@sanity/tsdoc

Version:

Generate API reference docs from TypeScript projects and store in a Sanity-friendly JSON format. Render a static frontend, or as React components.

1 lines 71.5 kB
{"version":3,"file":"studio.mjs","sources":["../../src/studio/documentActions/useDeletePackageAction.tsx","../../src/studio/schema/api/export.ts","../../src/studio/schema/api/members/callSignature.ts","../../src/studio/schema/api/members/class.ts","../../src/studio/schema/api/members/constructor.ts","../../src/studio/schema/api/members/constructSignature.ts","../../src/studio/schema/api/members/enum.ts","../../src/studio/schema/api/members/function.ts","../../src/studio/schema/api/members/indexSignature.ts","../../src/studio/schema/api/members/interface.ts","../../src/studio/schema/api/members/method.ts","../../src/studio/schema/api/members/methodSignature.ts","../../src/studio/schema/api/members/namespace.ts","../../src/studio/schema/api/members/property.ts","../../src/studio/schema/api/components/APIPropertySignaturePreview.tsx","../../src/studio/schema/api/members/propertySignature.ts","../../src/studio/schema/api/members/typeAlias.ts","../../src/studio/schema/api/members/variable.ts","../../src/studio/schema/api/package.ts","../../src/studio/schema/api/release.ts","../../src/studio/schema/api/shared/parameter.ts","../../src/studio/schema/api/shared/releaseTag.ts","../../src/studio/schema/api/shared/token.ts","../../src/studio/schema/api/components/APITokensInput.tsx","../../src/studio/schema/api/shared/tokens.ts","../../src/studio/schema/api/shared/typeParameter.ts","../../src/studio/schema/api/symbol.ts","../../src/studio/schema/api/index.ts","../../src/studio/schema/tsdoc/components/Blocks.tsx","../../src/studio/schema/tsdoc/components/TsdocComment.tsx","../../src/studio/schema/tsdoc/comment.ts","../../src/studio/schema/tsdoc/exampleBlock.ts","../../src/studio/schema/tsdoc/modifierTag.ts","../../src/studio/schema/tsdoc/paramBlock.ts","../../src/studio/schema/tsdoc/remarks.ts","../../src/studio/schema/tsdoc/returnsBlock.ts","../../src/studio/schema/tsdoc/seeBlock.ts","../../src/studio/schema/tsdoc/index.ts","../../src/studio/index.ts"],"sourcesContent":["import {TrashIcon} from '@sanity/icons'\nimport {API_MEMBER_TYPES} from '@sanity/tsdoc/store'\nimport {Button, Card, Code, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {\n DocumentActionComponent,\n DocumentActionDialogProps,\n Preview,\n useClient,\n useSchema,\n} from 'sanity'\n\nexport const useDeletePackageAction: DocumentActionComponent = (props) => {\n const {id: documentId} = props\n const [dialogOpen, setDialogOpen] = useState(false)\n\n const onHandle = useCallback(() => {\n setDialogOpen(true)\n }, [])\n\n const dialog: DocumentActionDialogProps | null = useMemo(() => {\n if (!dialogOpen) return null\n\n return {\n type: 'dialog',\n header: 'Delete package',\n content: (\n <DeletePackageDialogContent\n documentId={documentId}\n onComplete={() => setDialogOpen(false)}\n />\n ),\n onClose() {\n setDialogOpen(false)\n },\n }\n }, [dialogOpen, documentId])\n\n return {\n dialog,\n disabled: dialogOpen,\n icon: TrashIcon,\n label: 'Delete package',\n onHandle,\n tone: 'critical',\n }\n}\n\nfunction DeletePackageDialogContent(props: {documentId: string; onComplete: () => void}) {\n const {documentId, onComplete} = props\n const client = useClient({apiVersion: '2023-01-01'})\n const schema = useSchema()\n const schemaType = schema.get('api.package')!\n const [error, setError] = useState<Error | null>(null)\n const [running, setRunning] = useState(false)\n const previewValue = useMemo(() => ({_type: 'api.package', _id: documentId}), [documentId])\n\n const handleDelete = useCallback(async () => {\n try {\n setRunning(true)\n\n await client.delete({\n query: `*[_id == $documentId || (references($documentId) && _type in $types)]`,\n params: {\n documentId,\n types: API_MEMBER_TYPES.concat(['api.release', 'api.export', 'api.symbol']),\n },\n })\n onComplete()\n setRunning(false)\n } catch (err) {\n if (err instanceof Error) setError(err)\n else setError(new Error(String(err)))\n setRunning(false)\n }\n }, [client, documentId, onComplete])\n\n if (error) {\n return (\n <Stack space={4}>\n <Text>Error: {error.message}</Text>\n <Code size={1}>{error.stack}</Code>\n </Stack>\n )\n }\n\n return (\n <Stack space={4}>\n <Text>Are you sure you want to delete this package and all related documents?</Text>\n\n <Card border padding={2} radius={2}>\n <Preview schemaType={schemaType} value={previewValue} />\n </Card>\n\n <Button\n // disabled={running}\n loading={running}\n onClick={handleDelete}\n text=\"Yes, delete now\"\n tone=\"critical\"\n />\n </Stack>\n )\n}\n","import {PublishIcon} from '@sanity/icons'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiExportType = defineType({\n type: 'document',\n name: 'api.export',\n title: 'Export',\n icon: PublishIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'array',\n name: 'members',\n title: 'Members',\n of: [\n defineArrayMember({\n type: 'reference',\n to: [\n {type: 'api.class'},\n {type: 'api.enum'},\n {type: 'api.function'},\n {type: 'api.interface'},\n {type: 'api.namespace'},\n {type: 'api.typeAlias'},\n {type: 'api.variable'},\n ],\n }),\n ],\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n ],\n preview: {\n select: {\n name: 'name',\n packageScope: 'package.scope',\n packageName: 'package.name',\n version: 'release.version',\n },\n prepare: (data: any) => ({\n title: data.name,\n icon: PublishIcon,\n subtitle:\n [data.packageScope, data.packageName].filter(Boolean).join('/') + `@${data.version}`,\n }),\n },\n readOnly: true,\n})\n","import {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiCallSignatureType = defineType({\n type: 'object',\n name: 'api.callSignature',\n title: 'Call signature',\n fields: [\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'array',\n name: 'parameters',\n title: 'Parameters',\n of: [defineArrayMember({type: 'api.parameter'})],\n }),\n defineField({\n type: 'api.tokens',\n name: 'returnType',\n title: 'Return type',\n }),\n defineField({\n type: 'array',\n name: 'typeParameters',\n title: 'Type parameters',\n of: [defineArrayMember({type: 'api.typeParameter'})],\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Call signature'}),\n },\n})\n","import {ComponentIcon, TokenIcon} from '@sanity/icons'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiClassType = defineType({\n type: 'document',\n name: 'api.class',\n title: 'Class',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'boolean',\n name: 'isReactComponentType',\n title: 'This is a React component',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'array',\n name: 'typeParameters',\n title: 'Type parameters',\n of: [defineArrayMember({type: 'api.typeParameter'})],\n }),\n defineField({\n type: 'array',\n name: 'members',\n title: 'Members',\n of: [\n defineArrayMember({type: 'api.constructor'}),\n defineArrayMember({type: 'api.method'}),\n defineArrayMember({type: 'api.property'}),\n ],\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name', isReactComponentType: 'isReactComponentType'},\n prepare({isReactComponentType, title}: any) {\n if (isReactComponentType) {\n return {title: `<${title}>`, subtitle: 'Component · Class', icon: ComponentIcon}\n }\n\n return {title, subtitle: 'Class', icon: TokenIcon}\n },\n },\n readOnly: true,\n})\n","import {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiConstructorType = defineType({\n type: 'object',\n name: 'api.constructor',\n title: 'Constructor',\n fields: [\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'array',\n name: 'parameters',\n title: 'Parameters',\n of: [defineArrayMember({type: 'api.parameter'})],\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {},\n prepare: () => ({title: '(constructor)'}),\n },\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiConstructSignatureType = defineType({\n type: 'object',\n name: 'api.constructSignature',\n title: 'Construct signature',\n fields: [\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Construct signature'}),\n },\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiEnumType = defineType({\n type: 'document',\n name: 'api.enum',\n title: 'Enum',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Enum'}),\n },\n readOnly: true,\n})\n","import {ComponentIcon, TokenIcon} from '@sanity/icons'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiFunctionType = defineType({\n type: 'document',\n name: 'api.function',\n title: 'Function',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'array',\n name: 'parameters',\n title: 'Parameters',\n of: [defineArrayMember({type: 'api.parameter'})],\n }),\n defineField({\n type: 'api.tokens',\n name: 'returnType',\n title: 'Return type',\n }),\n defineField({\n type: 'array',\n name: 'typeParameters',\n title: 'Type parameters',\n of: [defineArrayMember({type: 'api.typeParameter'})],\n }),\n defineField({\n type: 'boolean',\n name: 'isReactComponentType',\n title: 'This is a React component',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'boolean',\n name: 'isReactHook',\n title: 'This is a React hook',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'boolean',\n name: 'isOverloading',\n title: 'This function is overloaded',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name', isReactComponentType: 'isReactComponentType'},\n prepare({isReactComponentType, title}: any) {\n if (isReactComponentType) {\n return {title: `<${title}>`, subtitle: 'Component · Function', icon: ComponentIcon}\n }\n\n return {title, subtitle: 'Function', icon: TokenIcon}\n },\n },\n readOnly: true,\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiIndexSignatureType = defineType({\n type: 'object',\n name: 'api.indexSignature',\n title: 'Index signature',\n fields: [\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Index signature'}),\n },\n})\n","import {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiInterfaceType = defineType({\n type: 'document',\n name: 'api.interface',\n title: 'Interface',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'array',\n name: 'typeParameters',\n title: 'Type parameters',\n of: [defineArrayMember({type: 'api.typeParameter'})],\n }),\n defineField({\n type: 'array',\n name: 'extends',\n title: 'Extends',\n of: [\n defineArrayMember({\n type: 'object',\n name: 'api.extend',\n title: 'Extend',\n fields: [\n defineField({\n type: 'api.tokens',\n name: 'type',\n title: 'Type',\n }),\n ],\n preview: {\n select: {type: 'type'},\n prepare: ({type}: any) => ({title: type.map((t: any) => t.text).join('')}),\n },\n }),\n ],\n }),\n defineField({\n type: 'array',\n name: 'members',\n title: 'Members',\n of: [\n defineArrayMember({type: 'api.callSignature'}),\n defineArrayMember({type: 'api.constructSignature'}),\n defineArrayMember({type: 'api.indexSignature'}),\n defineArrayMember({type: 'api.methodSignature'}),\n defineArrayMember({type: 'api.propertySignature'}),\n ],\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Interface'}),\n },\n readOnly: true,\n})\n","import {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiMethodType = defineType({\n type: 'object',\n name: 'api.method',\n title: 'Method',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'boolean',\n name: 'isOptional',\n title: 'Is optional',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'boolean',\n name: 'isStatic',\n title: 'Is static',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'array',\n name: 'parameters',\n title: 'Parameters',\n of: [defineArrayMember({type: 'api.parameter'})],\n }),\n defineField({\n type: 'api.tokens',\n name: 'returnType',\n title: 'Return type',\n }),\n defineField({\n type: 'array',\n name: 'typeParameters',\n title: 'Type parameters',\n of: [defineArrayMember({type: 'api.typeParameter'})],\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Method'}),\n },\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiMethodSignatureType = defineType({\n type: 'object',\n name: 'api.methodSignature',\n title: 'Method signature',\n fields: [\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Method signature'}),\n },\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiNamespaceType = defineType({\n type: 'document',\n name: 'api.namespace',\n title: 'Namespace',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Namespace'}),\n },\n readOnly: true,\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiPropertyType = defineType({\n type: 'object',\n name: 'api.property',\n title: 'Property',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'boolean',\n name: 'isEventProperty',\n title: 'Is event property',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'boolean',\n name: 'isOptional',\n title: 'Is optional',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'boolean',\n name: 'isStatic',\n title: 'Is static',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'api.tokens',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Property'}),\n },\n})\n","import {Box, Stack, Text} from '@sanity/ui'\nimport {PreviewProps} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst StyledText = styled(Text)`\n code {\n background-color: transparent;\n color: inherit;\n }\n`\n\nexport function APIPropertySignaturePreview(props: PreviewProps): React.ReactNode {\n const {name, isOptional, type} = props as any\n\n return (\n <Box padding={2}>\n <Stack space={2}>\n <StyledText size={1} textOverflow=\"ellipsis\" weight=\"semibold\">\n <code>\n {name}\n {isOptional ? '?' : ''}: {type?.map((t: any) => t.text).join('')}\n </code>\n </StyledText>\n <Text muted size={1}>\n Property signature\n </Text>\n </Stack>\n </Box>\n )\n}\n","import {defineField, defineType} from 'sanity'\n\nimport {APIPropertySignaturePreview} from '../components/APIPropertySignaturePreview'\n\nexport const apiPropertySignatureType = defineType({\n type: 'object',\n name: 'api.propertySignature',\n title: 'Property signature',\n\n components: {\n preview: APIPropertySignaturePreview,\n },\n\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'boolean',\n name: 'isOptional',\n title: 'Is optional',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'api.tokens',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {name: 'name', isOptional: 'isOptional', type: 'type'},\n // prepare: ({isOptional, name, type}: any) => ({\n // title: `${name}${isOptional ? '?' : ''}: ${type?.map((t) => t.text).join('')})}`,\n // subtitle: 'Property signature',\n // }),\n },\n})\n","import {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiTypeAliasType = defineType({\n type: 'document',\n name: 'api.typeAlias',\n title: 'Type alias',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'api.tokens',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'array',\n name: 'typeParameters',\n title: 'Type parameters',\n of: [defineArrayMember({type: 'api.typeParameter'})],\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name'},\n prepare: ({title}: any) => ({title, subtitle: 'Type alias'}),\n },\n readOnly: true,\n})\n","import {ComponentIcon, TokenIcon} from '@sanity/icons'\nimport {defineField, defineType} from 'sanity'\n\nexport const apiVariableType = defineType({\n type: 'document',\n name: 'api.variable',\n title: 'Variable',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'slug',\n name: 'slug',\n title: 'Slug',\n }),\n\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'reference',\n name: 'export',\n title: 'Export',\n to: [{type: 'api.export'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'release',\n title: 'Release',\n to: [{type: 'api.release'}],\n hidden: true,\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n\n defineField({\n type: 'api.tokens',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'reference',\n name: 'propsType',\n title: 'Props type',\n to: [{type: 'api.interface'}, {type: 'api.typeAlias'}],\n }),\n defineField({\n type: 'boolean',\n name: 'isReactComponentType',\n title: 'This is a React component',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'boolean',\n name: 'isReactHook',\n title: 'This is a React hook',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n\n preview: {\n select: {title: 'name', isReactComponentType: 'isReactComponentType'},\n prepare({isReactComponentType, title}: any) {\n if (isReactComponentType) {\n return {title: `<${title}>`, subtitle: 'Component · Variable', icon: ComponentIcon}\n }\n\n return {title, subtitle: 'Variable', icon: TokenIcon}\n },\n },\n readOnly: true,\n})\n","import {PackageIcon} from '@sanity/icons'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiPackageType = defineType({\n type: 'document',\n name: 'api.package',\n title: 'Package',\n icon: PackageIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'scope',\n title: 'Scope',\n }),\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'reference',\n name: 'latestRelease',\n title: 'Latest release',\n to: [{type: 'api.release'}],\n }),\n defineField({\n type: 'array',\n name: 'releases',\n title: 'Releases',\n of: [\n defineArrayMember({\n type: 'reference',\n to: [{type: 'api.release'}],\n }),\n ],\n }),\n ],\n readOnly: true,\n preview: {\n select: {\n scope: 'scope',\n name: 'name',\n },\n prepare(data: any) {\n return {\n title: [data.scope, data.name].filter(Boolean).join('/'),\n }\n },\n },\n})\n","import {RocketIcon} from '@sanity/icons'\nimport {defineArrayMember, defineField, defineType} from 'sanity'\n\nexport const apiReleaseType = defineType({\n type: 'document',\n name: 'api.release',\n title: 'Release',\n icon: RocketIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'version',\n title: 'Version',\n }),\n defineField({\n type: 'array',\n name: 'exports',\n title: 'Exports',\n of: [\n defineArrayMember({\n type: 'reference',\n to: [{type: 'api.export'}],\n }),\n ],\n }),\n defineField({\n type: 'array',\n name: 'memberNames',\n title: 'Member names',\n of: [{type: 'string'}],\n options: {\n layout: 'tags',\n },\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n hidden: true,\n }),\n ],\n preview: {\n select: {\n packageScope: 'package.scope',\n packageName: 'package.name',\n version: 'version',\n },\n prepare: (data: any) => ({\n title: data.version,\n icon: RocketIcon,\n subtitle: [data.packageScope, data.packageName].filter(Boolean).join('/'),\n }),\n },\n readOnly: true,\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiParameterType = defineType({\n type: 'object',\n name: 'api.parameter',\n title: 'Parameter',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'api.releaseTag',\n name: 'releaseTag',\n title: 'Release tag',\n }),\n defineField({\n type: 'api.tokens',\n name: 'type',\n title: 'Type',\n }),\n defineField({\n type: 'boolean',\n name: 'isOptional',\n title: 'Is optional',\n options: {layout: 'checkbox'},\n }),\n defineField({\n type: 'tsdoc.docComment',\n name: 'comment',\n title: 'Comment',\n }),\n ],\n})\n","import {defineType} from 'sanity'\n\nexport const apiReleaseTagType = defineType({\n type: 'string',\n name: 'api.releaseTag',\n title: 'Release tag',\n options: {\n list: [\n {title: 'Public', value: 'public'},\n {title: 'Beta', value: 'beta'},\n ],\n },\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiTokenType = defineType({\n type: 'object',\n name: 'api.token',\n title: 'Token',\n\n fields: [\n defineField({\n type: 'string',\n name: 'text',\n title: 'Text',\n }),\n defineField({\n type: 'reference',\n name: 'member',\n title: 'Member',\n to: [\n {type: 'api.class'},\n {type: 'api.enum'},\n {type: 'api.function'},\n {type: 'api.interface'},\n {type: 'api.typeAlias'},\n {type: 'api.variable'},\n ],\n }),\n ],\n})\n","import {SanityArrayItem, SerializedAPIToken} from '@sanity/tsdoc'\nimport {Card, Code as UICode} from '@sanity/ui'\nimport {ArrayOfObjectsInputProps} from 'sanity'\nimport {IntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nconst Code = styled(UICode)`\n & a {\n color: var(--card-link-color);\n\n &:hover {\n text-decoration: underline;\n }\n }\n`\n\nexport function APITokensInput(\n props: ArrayOfObjectsInputProps<SanityArrayItem<SerializedAPIToken>>,\n): React.ReactNode {\n const {value = []} = props\n\n return (\n <Card border padding={3} overflow=\"auto\" radius={1}>\n <Code size={1}>\n {value.length > 0 && value.map((token) => <TokenPreview key={token._key} token={token} />)}\n {value.length === 0 && ' '}\n </Code>\n </Card>\n )\n}\n\nfunction TokenPreview({token}: {token: SanityArrayItem<SerializedAPIToken>}) {\n if (token.member?._ref) {\n return (\n <IntentLink intent=\"edit\" params={{id: token.member?._ref}}>\n {token.text}\n </IntentLink>\n )\n }\n\n return <>{token.text}</>\n}\n","// import {APITokensInput} from './APITokensInput'\n\nimport {defineType} from 'sanity'\n\nimport {APITokensInput} from '../components/APITokensInput'\n\nexport const apiTokensType = defineType({\n type: 'array',\n name: 'api.tokens',\n title: 'Tokens',\n of: [{type: 'api.token'}],\n components: {\n input: APITokensInput as any,\n },\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiTypeParameterType = defineType({\n type: 'object',\n name: 'api.typeParameter',\n title: 'Type parameter',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'api.tokens',\n name: 'constraintType',\n title: 'Constraint type',\n }),\n defineField({\n type: 'api.tokens',\n name: 'defaultType',\n title: 'Default type',\n }),\n // defineField({\n // type: 'api.releaseTag',\n // name: 'releaseTag',\n // title: 'Release tag',\n // }),\n // defineField({\n // type: 'api.tokens',\n // name: 'type',\n // title: 'Type',\n // }),\n ],\n})\n","import {defineField, defineType} from 'sanity'\n\nexport const apiSymbolType = defineType({\n type: 'document',\n name: 'api.symbol',\n title: 'Symbol',\n fields: [\n defineField({\n type: 'string',\n name: 'name',\n title: 'Name',\n }),\n defineField({\n type: 'reference',\n name: 'package',\n title: 'Package',\n to: [{type: 'api.package'}],\n // hidden: true,\n }),\n ],\n preview: {\n select: {\n name: 'name',\n packageScope: 'package.scope',\n packageName: 'package.name',\n },\n prepare(data: any) {\n return {\n title: data.name,\n subtitle: [data.packageScope, data.packageName].filter(Boolean).join('/'),\n }\n },\n },\n readOnly: true,\n})\n","import {apiExportType} from './export'\nimport {apiCallSignatureType} from './members/callSignature'\nimport {apiClassType} from './members/class'\nimport {apiConstructorType} from './members/constructor'\nimport {apiConstructSignatureType} from './members/constructSignature'\nimport {apiEnumType} from './members/enum'\nimport {apiFunctionType} from './members/function'\nimport {apiIndexSignatureType} from './members/indexSignature'\nimport {apiInterfaceType} from './members/interface'\nimport {apiMethodType} from './members/method'\nimport {apiMethodSignatureType} from './members/methodSignature'\nimport {apiNamespaceType} from './members/namespace'\nimport {apiPropertyType} from './members/property'\nimport {apiPropertySignatureType} from './members/propertySignature'\nimport {apiTypeAliasType} from './members/typeAlias'\nimport {apiVariableType} from './members/variable'\nimport {apiPackageType} from './package'\nimport {apiReleaseType} from './release'\nimport {apiParameterType} from './shared/parameter'\nimport {apiReleaseTagType} from './shared/releaseTag'\nimport {apiTokenType} from './shared/token'\nimport {apiTokensType} from './shared/tokens'\nimport {apiTypeParameterType} from './shared/typeParameter'\nimport {apiSymbolType} from './symbol'\n\nexport const apiTypes = [\n apiPackageType,\n apiReleaseType,\n apiExportType,\n apiSymbolType,\n\n // members\n apiCallSignatureType,\n apiClassType,\n apiConstructSignatureType,\n apiConstructorType,\n apiEnumType,\n apiFunctionType,\n apiIndexSignatureType,\n apiInterfaceType,\n apiMethodSignatureType,\n apiMethodType,\n apiNamespaceType,\n apiPropertySignatureType,\n apiPropertyType,\n apiTypeAliasType,\n apiVariableType,\n\n // shared\n apiParameterType,\n apiReleaseTagType,\n apiTokenType,\n apiTokensType,\n apiTypeParameterType,\n]\n","import {PortableText, PortableTextProps} from '@portabletext/react'\nimport {Card, Code, Text} from '@sanity/ui'\n\nconst CODE_LANGUAGE: Record<string, string> = {\n tsx: 'typescript',\n}\n\nconst components: PortableTextProps['components'] = {\n block: {\n normal: ({children}) => (\n <Text as=\"p\" muted>\n {children}\n </Text>\n ),\n },\n\n types: {\n code: ({value}) => (\n <Card padding={3} tone=\"transparent\">\n <Code language={CODE_LANGUAGE[value?.language || 'tsx']} size={1}>\n {value?.code}\n </Code>\n </Card>\n ),\n },\n}\n\nexport function Blocks(props: {value?: any[]}): React.ReactNode {\n const {value = []} = props\n\n return <PortableText value={value} components={components} />\n}\n","import {TSDocComment as TSDocCommentType} from '@sanity/tsdoc'\nimport {Card, Stack, Text} from '@sanity/ui'\nimport {ObjectInputProps} from 'sanity'\n\nimport {Blocks} from './Blocks'\n\nexport function TsdocComment(props: ObjectInputProps<TSDocCommentType>): React.ReactNode {\n const {\n customBlocks,\n deprecated,\n exampleBlocks,\n // modifierTags,\n // parameters,\n // remarks,\n // returns,\n seeBlocks,\n summary,\n // ...rest\n } = props.value || {}\n\n if (!deprecated && !exampleBlocks && !seeBlocks && !summary) {\n return (\n <Card padding={3} radius={2} tone=\"caution\">\n <Stack space={3}>\n <Text size={1} weight=\"semibold\">\n No comment\n </Text>\n <Text muted>No extracted tsdoc comment.</Text>\n </Stack>\n </Card>\n )\n }\n\n return (\n <Stack space={4}>\n {deprecated && (\n <Card padding={3} radius={2} tone=\"caution\">\n <Stack space={3}>\n <Text size={1} weight=\"semibold\">\n Deprecated\n </Text>\n <Blocks value={deprecated.content || []} />\n </Stack>\n </Card>\n )}\n\n {summary && <Blocks value={summary || []} />}\n\n {exampleBlocks &&\n exampleBlocks.length > 0 &&\n exampleBlocks.map((exampleBlock, i) => {\n return (\n <Stack key={exampleBlock._key} space={3}>\n <Text size={1} weight=\"semibold\">\n Example #{i + 1}\n </Text>\n <Blocks value={exampleBlock.content || []} />\n </Stack>\n )\n })}\n\n {customBlocks && (\n <Stack space={3}>\n <Text size={1} weight=\"semibold\">\n Custom blocks\n </Text>\n\n <Stack space={1}>\n {customBlocks.map((block) => (\n <Card key={block._key} padding={3} radius={2} tone=\"transparent\">\n <div>{block.tag}</div>\n <Blocks value={block?.content || []} />\n </Card>\n ))}\n </Stack>\n </Stack>\n )}\n\n {seeBlocks && (\n <Stack space={3}>\n <Text size={1} weight=\"semibold\">\n See also\n </Text>\n\n <Stack space={1}>\n {seeBlocks.map((block) => (\n <Card key={block._key} padding={3} radius={2} tone=\"transparent\">\n <Blocks value={block?.content || []} />\n </Card>\n ))}\n </Stack>\n </Stack>\n )}\n </Stack>\n )\n}\n","import {defineType} from 'sanity'\n\nimport {TsdocComment} from './components/TsdocComment'\n\nexport const tsdocCommentType = defineType({\n type: 'object',\n name: 'tsdoc.docComment',\n title: 'TSDoc comment',\n components: {input: TsdocComment as any},\n fields: [\n {\n type: 'array',\n name: 'summary',\n title: 'Summary',\n of: [{type: 'block'}],\n },\n {\n type: 'tsdoc.remarksBlock',\n name: 'remarks',\n title: 'Remarks',\n },\n {\n type: 'array',\n name: 'seeBlocks',\n title: 'See',\n of: [{type: 'tsdoc.seeBlock'}],\n },\n {\n type: 'array',\n name: 'parameters',\n title: 'Parameters',\n of: [{type: 'tsdoc.paramBlock'}],\n },\n {\n type: 'tsdoc.returnsBlock',\n name: 'returns',\n title: 'Returns',\n },\n {\n type: 'array',\n name: 'exampleBlocks',\n title: 'Example blocks',\n of: [{type: 'tsdoc.exampleBlock'}],\n },\n {\n type: 'array',\n name: 'modifierTags',\n title: 'Modifier tags',\n of: [{type: 'tsdoc.modifierTag'}],\n },\n ],\n options: {\n collapsible: true,\n },\n})\n","import {defineType} from 'sanity'\n\nexport const tsdocExampleBlockType = defineType({\n type: 'object',\n name: 'tsdoc.exampleBlock',\n title: 'Example block',\n fields: [\n {\n type: 'array',\n name: 'content',\n title: 'Content',\n of: [\n {\n type: 'block',\n },\n {\n type: 'code',\n name: 'code',\n title: 'Code',\n },\n ],\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport const tsdocModifierTagType = defineType({\n type: 'object',\n name: 'tsdoc.modifierTag',\n title: 'Modifier tag',\n fields: [\n {\n type: 'string',\n name: 'name',\n title: 'Name',\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport const tsdocParamBlockType = defineType({\n type: 'object',\n name: 'tsdoc.paramBlock',\n title: 'Param block',\n fields: [\n {\n type: 'string',\n name: 'name',\n title: 'Name',\n },\n {\n type: 'array',\n name: 'content',\n title: 'Content',\n of: [\n {\n type: 'block',\n },\n {\n type: 'code',\n name: 'code',\n title: 'Code',\n },\n ],\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport const tsdocRemarksBlockType = defineType({\n type: 'object',\n name: 'tsdoc.remarksBlock',\n title: 'Remarks',\n fields: [\n {\n type: 'array',\n name: 'content',\n title: 'Content',\n of: [\n {\n type: 'block',\n },\n {\n type: 'code',\n name: 'code',\n title: 'Code',\n },\n ],\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport const tsdocReturnsBlockType = defineType({\n type: 'object',\n name: 'tsdoc.returnsBlock',\n title: 'Returns block',\n fields: [\n {\n type: 'array',\n name: 'content',\n title: 'Content',\n of: [\n {\n type: 'block',\n },\n {\n type: 'code',\n name: 'code',\n title: 'Code',\n },\n ],\n },\n ],\n})\n","import {defineType} from 'sanity'\n\nexport const tsdocSeeBlockType = defineType({\n type: 'object',\n name: 'tsdoc.seeBlock',\n title: 'See block',\n fields: [\n {\n type: 'array',\n name: 'content',\n title: 'Content',\n of: [\n {\n type: 'block',\n },\n {\n type: 'code',\n name: 'code',\n title: 'Code',\n },\n ],\n },\n ],\n})\n","import {tsdocCommentType} from './comment'\nimport {tsdocExampleBlockType} from './exampleBlock'\nimport {tsdocModifierTagType} from './modifierTag'\nimport {tsdocParamBlockType} from './paramBlock'\nimport {tsdocRemarksBlockType} from './remarks'\nimport {tsdocReturnsBlockType} from './returnsBlock'\nimport {tsdocSeeBlockType} from './seeBlock'\n\nexport const tsdocTypes = [\n tsdocCommentType,\n tsdocExampleBlockType,\n tsdocModifierTagType,\n tsdocParamBlockType,\n tsdocRemarksBlockType,\n tsdocReturnsBlockType,\n tsdocSeeBlockType,\n]\n","import {API_MEMBER_TYPES} from '@sanity/tsdoc/store'\nimport {definePlugin} from 'sanity'\n\nimport {useDeletePackageAction} from './documentActions/useDeletePackageAction'\nimport {apiTypes} from './schema/api'\nimport {tsdocTypes} from './schema/tsdoc'\n\n/** @beta */\nexport const tsdoc = definePlugin(() => {\n return {\n name: '@sanity/tsdoc/studio-plugin',\n document: {\n actions: (prev, ctx) => {\n if (ctx.schemaType === 'api.package') {\n return [useDeletePackageAction]\n }\n\n if (ctx.schemaType === 'api.release') {\n return [] // TODO\n }\n\n if (ctx.schemaType === 'api.export') {\n return [] // TODO\n }\n\n if (ctx.schemaType === 'api.symbol') {\n return [] // TODO\n }\n\n if (API_MEMBER_TYPES.includes(ctx.schemaType)) {\n return [] // TODO\n }\n\n return prev\n },\n },\n schema: {\n types: [...apiTypes, ...tsdocTypes],\n },\n }\n})\n"],"names":["Code","UICode"],"mappings":"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