@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 • 80.8 kB
Source Map (JSON)
{"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":["useDeletePackageAction","props","$","_c","id","documentId","dialogOpen","setDialogOpen","useState","t0","Symbol","for","onHandle","t1","bb0","t2","t3","type","header","content","onClose","dialog","disabled","icon","TrashIcon","label","tone","DeletePackageDialogContent","onComplete","apiVersion","client","useClient","schema","useSchema","get","schemaType","error","setError","running","setRunning","_type","_id","previewValue","t4","delete","query","params","types","API_MEMBER_TYPES","concat","t5","err","Error","String","handleDelete","message","t6","stack","Code","t7","t8","apiExportType","defineType","name","title","PublishIcon","fields","defineField","of","defineArrayMember","to","hidden","preview","select","packageScope","packageName","version","prepare","data","subtitle","filter","Boolean","join","readOnly","apiCallSignatureType","apiClassType","options","layout","isReactComponentType","ComponentIcon","TokenIcon","apiConstructorType","apiConstructSignatureType","apiEnumType","apiFunctionType","apiIndexSignatureType","apiInterfaceType","map","t","text","apiMethodType","apiMethodSignatureType","apiNamespaceType","apiPropertyType","StyledText","styled","Text","APIPropertySignaturePreview","isOptional","_temp","apiPropertySignatureType","components","apiTypeAliasType","apiVariableType","apiPackageType","PackageIcon","scope","apiReleaseType","RocketIcon","apiParameterType","apiReleaseTagType","list","value","apiTokenType","UICode","APITokensInput","undefined","length","token","_key","TokenPreview","member","_ref","apiTokensType","input","apiTypeParameterType","apiSymbolType","apiTypes","CODE_LANGUAGE","tsx","block","normal","children","code","language","Blocks","TsdocComment","customBlocks","deprecated","exampleBlocks","seeBlocks","summary","_temp2","_temp3","block_0","tag","exampleBlock","i","tsdocCommentType","collapsible","tsdocExampleBlockType","tsdocModifierTagType","tsdocParamBlockType","tsdocRemarksBlockType","tsdocReturnsBlockType","tsdocSeeBlockType","tsdocTypes","tsdoc","definePlugin","document","actions","prev","ctx","includes"],"mappings":"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