Source code for panel.widgets.texteditor

Defines a WYSIWYG TextEditor widget based on quill.js.
from __future__ import annotations

from typing import (
    TYPE_CHECKING, ClassVar, Mapping, Optional,

import param

from pyviz_comms import JupyterComm

from ..util import lazy_load
from .base import Widget

    from bokeh.document import Document
    from bokeh.model import Model
    from pyviz_comms import Comm

[docs]class TextEditor(Widget): """ The `TextEditor` widget provides a WYSIWYG (what-you-see-is-what-you-get) rich text editor which outputs HTML. The editor is built on top of the [Quill.js]( library. Reference: :Example: >>> TextEditor(placeholder='Enter some text') """ disabled = param.Boolean(default=False, doc=""" Whether the editor is disabled.""") mode = param.Selector(default='toolbar', objects=['bubble', 'toolbar'], doc=""" Whether to display a toolbar or a bubble menu on highlight.""") toolbar = param.ClassSelector(default=True, class_=(list, bool), doc=""" Toolbar configuration either as a boolean toggle or a configuration specified as a list.""") placeholder = param.String(doc="Placeholder output when the editor is empty.") value = param.String(doc="State of the current text in the editor") _rename: ClassVar[Mapping[str, str | None]] = { 'name': 'name', 'value': 'text' } def _get_model( self, doc: Document, root: Optional[Model] = None, parent: Optional[Model] = None, comm: Optional[Comm] = None ) -> Model: if self._widget_type is None: self._widget_type = lazy_load( 'panel.models.quill', 'QuillInput', isinstance(comm, JupyterComm), root, ext='texteditor' ) return super()._get_model(doc, root, parent, comm)