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.