UNPKG

piral-vue-3

Version:

Plugin for integrating Vue@3 components in Piral.

53 lines (52 loc) 1.58 kB
import type { App, Component } from 'vue'; import type { ForeignComponent, ExtensionSlotProps } from 'piral-core'; declare module 'piral-core/lib/types/custom' { interface PiletCustomApi extends PiletVue3Api { } interface PiralCustomComponentConverters<TProps> { vue3(component: Vue3Component<TProps>): ForeignComponent<TProps>; } } /** * Defines a handler to set up Vue 3 middleware. */ export interface Vue3MiddlewareHandler { /** * Receives the app instance to integrate middleware. */ (app: App<Element>): void; } export interface Vue3Component<TProps> { /** * The root component of Vue rendering tree. */ root: Component<TProps>; /** * The type of the Vue component. */ type: 'vue3'; /** * Captures props for transport into the Vue component. */ captured?: Record<string, any>; } /** * Defines the provided set of Vue Pilet API extensions. */ export interface PiletVue3Api { /** * Wraps a Vue component for use in Piral. * @param component The root component. * @param captured The optionally captured props. * @returns The Piral Vue component. */ fromVue3<TProps>(component: Component<TProps>, captured?: Record<string, any>): Vue3Component<TProps>; /** * Vue component for displaying extensions of the given name. */ Vue3Extension: Component<ExtensionSlotProps>; /** * Function to use for declaring a callback to setup additional middleware. */ defineVue3Middleware(setup: Vue3MiddlewareHandler): void; }