UNPKG

@sanity/visual-editing

Version:

[![npm stat](https://img.shields.io/npm/dm/@sanity/visual-editing.svg?style=flat-square)](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [![npm version](https://img.shields.io/npm/v/@sanity/visual-editing.svg?style=flat-square)](https://

217 lines (184 loc) 4.56 kB
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 {}