Tipi
Tipi pubblici
Tipi TypeScript esportati da @pzeta/vue-wiki per WikiEditor, i comandi del modulo, i blocchi personalizzati e i commenti.
Tutti i tipi si importano da @pzeta/vue-wiki:
import type {
WikiEditorProps,
ComandoPowerbox,
ContestoComando,
BloccoPersonalizzatoProps,
CommentoAncorato,
SelezioneCommento,
ImmagineCaricata,
LinkRisolto,
TipoCallout,
VueWikiPluginOptions,
ComponentName,
} from '@pzeta/vue-wiki'
WikiEditorProps
interface WikiEditorProps {
/** Contenuto HTML (v-model); '' per un documento vuoto. */
modelValue?: string
readonly?: boolean
/** Comandi / del modulo, dopo quelli dell'editor. */
comandi?: ComandoPowerbox[]
/** Senza, il comando Immagine non c'è e le immagini incollate sono scartate. */
caricaImmagine?: (file: File) => Promise<ImmagineCaricata>
risolviLink?: (ricerca: string) => Promise<LinkRisolto[]>
/** Con un array, anche vuoto, la barra sulla selezione offre «Commenta». */
commenti?: CommentoAncorato[]
/** Oltre questo numero di caratteri compare un avviso; 0 = nessun limite. */
maxLength?: number
placeholder?: string
/** Nome accessibile dell'area di testo. */
ariaLabel?: string
/** Ritardo (ms) di update:modelValue dall'ultima modifica. */
emitDebounce?: number
}
ComandoPowerbox e ContestoComando
interface ComandoPowerbox {
id: string
etichetta: string
/** Seconda riga della voce nel menu. */
descrizione?: string
/** Classe dell'icona, per esempio 'pi pi-th-large'. */
icona?: string
/** Parole che trovano il comando oltre all'etichetta. */
parole?: string[]
/** Eseguito dopo aver tolto dal testo il / e la ricerca digitata. */
inserisci: (contesto: ContestoComando) => void | Promise<void>
}
interface ContestoComando {
/** Istanza Tiptap (@tiptap/core), per i casi non coperti dagli altri strumenti. */
editor: Editor
/** Inserisce un blocco reso dallo slot blocco-personalizzato. */
inserisciBlocco: (tipo: string, dati?: Record<string, unknown>) => void
/** Inserisce un link alla posizione del cursore; un indirizzo non sicuro è ignorato. */
inserisciLink: (link: LinkRisolto) => void
/** Apre il dialogo del link, con la ricerca di risolviLink. */
chiediLink: () => void
}
Vedi Comandi e blocchi del modulo.
BloccoPersonalizzatoProps
Scope dello slot blocco-personalizzato.
interface BloccoPersonalizzatoProps {
tipo: string
dati: Record<string, unknown>
readonly: boolean
/** Sostituisce i dati del blocco; in sola lettura non fa nulla. */
aggiorna: (dati: Record<string, unknown>) => void
/** Toglie il blocco dal contenuto; in sola lettura non fa nulla. */
elimina: () => void
}
CommentoAncorato e SelezioneCommento
interface CommentoAncorato {
id: string
/** Valore di data-commento nel contenuto (la colonna codancora). */
ancora: string
aperto: boolean
}
/** Payload dell'evento commenta. */
interface SelezioneCommento {
/** Testo selezionato (la colonna selezionetesto). */
testo: string
/** Ancora appena applicata alla selezione. */
ancora: string
/** Contenuto con l'ancora applicata: in sola lettura è l'unico modo di salvarla. */
html: string
}
Vedi Commenti ancorati.
ImmagineCaricata e LinkRisolto
/** Restituita da caricaImmagine. */
interface ImmagineCaricata {
/** Indirizzo da cui il browser mostra l'immagine (http, https, blob o relativo). */
src: string
/** Identificativo dell'allegato, salvato come data-id sull'<img>. */
id: string
}
/** Destinazione proposta da risolviLink. */
interface LinkRisolto {
etichetta: string
href: string
}
TipoCallout
/** Varianti del callout, sulla palette semantica della shell. */
type TipoCallout = 'info' | 'success' | 'warn' | 'danger'
Plugin
type ComponentName = 'WikiEditor'
interface VueWikiPluginOptions {
/** Prefisso del nome registrato. */
prefix?: string
/** Componenti da registrare; tutti se assente. */
components?: ComponentName[]
}
Fino alla 0.4.4
ComponentName era string, perché la libreria non aveva componenti. Dalla 0.5.0 è l'unione dei nomi registrabili: un nome sconosciuto in components è un errore di tipo.