@sanity/visual-editing
Version:
[](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [](https://
217 lines (184 loc) • 4.56 kB
text/typescript
import {
DocumentSchema,
SanityNode,
SchemaArrayItem,
SchemaArrayNode,
SchemaBooleanNode,
SchemaInlineNode,
SchemaNode,
SchemaNullNode,
SchemaNumberNode,
SchemaObjectField,
SchemaObjectNode,
SchemaStringNode,
SchemaUnionNode,
SchemaUnionNodeOptions,
SchemaUnionOption,
SchemaUnknownNode,
} from '@sanity/presentation-comlink'
import type {
ComponentProps,
ComponentType,
FunctionComponent,
HTMLAttributes,
PropsWithChildren,
ReactElement,
} from 'react'
import {HTMLProps} from 'react'
export declare function defineOverlayComponent<
T extends OverlayComponent<Record<string, unknown>, any>,
>(
component: T,
props?: Omit<ComponentProps<T>, keyof OverlayComponentProps>,
): {
component: T
props: typeof props
}
export declare function defineOverlayComponents<T extends OverlayComponent>(
resolver: OverlayComponentResolver<T>,
): typeof resolver
export {DocumentSchema}
/**
* An element that is safe to parse
* @internal
*/
export declare type ElementNode = HTMLElement | SVGElement
/**
* @public
*/
export declare type OverlayComponent<
T extends Record<string, unknown> = Record<string, unknown>,
P extends OverlayElementParent = OverlayElementParent,
> = ComponentType<OverlayComponentProps<P | undefined> & T>
/**
* @public
*/
export declare interface OverlayComponentProps<
P extends OverlayElementParent = OverlayElementParent,
> extends OverlayComponentResolverContext<P> {
PointerEvents: FunctionComponent<PropsWithChildren<HTMLAttributes<HTMLDivElement>>>
}
/**
* @public
*/
export declare type OverlayComponentResolver<
T extends OverlayComponent = OverlayComponent<Record<string, unknown>, any>,
> = (context: OverlayComponentResolverContext) =>
| T
| {
component: T
props?: Record<string, unknown>
}
| Array<
| T
| {
component: T
props?: Record<string, unknown>
}
>
| ReactElement
| undefined
| void
/**
* @public
*/
export declare interface OverlayComponentResolverContext<
P extends OverlayElementParent = OverlayElementParent,
> {
/**
* The resolved field's document schema type
*/
document: DocumentSchema
/**
* The element node that the overlay is attached to
*/
element: ElementNode
/**
* The element node that the Sanity node data is detected on
*/
targetElement: ElementNode
/**
* The resolved field schema type
*/
field: OverlayElementField
/**
* Whether the overlay is focused or not
*/
focused: boolean
/**
* The Sanity node data that triggered the overlay
*/
node: SanityNode
/**
* The resolved field's parent schema type
*/
parent: P
/**
* A convience property, equal to `field.value.type`
*/
type: string
}
export declare type OverlayElementField =
| SchemaArrayItem
| SchemaObjectField
| SchemaUnionOption
| undefined
export declare type OverlayElementParent =
| DocumentSchema
| SchemaNode
| SchemaArrayItem
| SchemaUnionOption
| SchemaUnionNode
| undefined
/** @public */
export declare type OverlayPluginDefinition =
| OverlayPluginExclusiveDefinition
| OverlayPluginHudDefinition
/** @public */
export declare interface OverlayPluginDefinitionBase {
name: string
title?: string
icon?: ComponentType
guard?: (context: OverlayComponentResolverContext | undefined) => boolean
}
/** @public */
export declare interface OverlayPluginExclusiveDefinition extends OverlayPluginDefinitionBase {
type: 'exclusive'
component?: OverlayComponent<
Record<string, unknown> & {
closeExclusiveView: () => void
},
any
>
}
/** @public */
export declare interface OverlayPluginHudDefinition extends OverlayPluginDefinitionBase {
type: 'hud'
component?: OverlayComponent<Record<string, unknown>, any>
}
export declare const PointerEvents: FunctionComponent<
PropsWithChildren<HTMLAttributes<HTMLDivElement>>
>
export {SanityNode}
export {SchemaArrayItem}
export {SchemaArrayNode}
export {SchemaBooleanNode}
export {SchemaInlineNode}
export {SchemaNode}
export {SchemaNullNode}
export {SchemaNumberNode}
export {SchemaObjectField}
export {SchemaObjectNode}
export {SchemaStringNode}
export {SchemaUnionNode}
export {SchemaUnionNodeOptions}
export {SchemaUnionOption}
export {SchemaUnknownNode}
export declare const UnionInsertMenuOverlay: OverlayComponent<
{
direction?: 'horizontal' | 'vertical'
hoverAreaExtent?: HTMLProps<HTMLDivElement>['height' | 'width']
},
SchemaUnionNode<SchemaNode>
>
export {}