Source code for panel.models.terminal
from collections import OrderedDict
from bokeh.core.properties import (
Any, Dict, Int, String,
)
from bokeh.events import ModelEvent
from ..config import config
from ..io.resources import bundled_files
from ..util import classproperty
from .layout import HTMLBox
XTERM_JS = f"{config.npm_cdn}/xterm@4.14.1/lib/xterm.js"
XTERM_LINKS_JS = f"{config.npm_cdn}/xterm-addon-web-links@0.4.0/lib/xterm-addon-web-links.js"
[docs]class KeystrokeEvent(ModelEvent):
event_name = 'keystroke'
def __init__(self, model, key=None):
self.key = key
super().__init__(model=model)
[docs]class Terminal(HTMLBox):
"""Custom Terminal Model"""
__css_raw__ = [f"{config.npm_cdn}/xterm@4.11.0/css/xterm.css"]
@classproperty
def __css__(cls):
return bundled_files(cls, 'css')
__javascript_raw__ = [XTERM_JS, XTERM_LINKS_JS]
@classproperty
def __javascript__(cls):
return bundled_files(cls)
@classproperty
def __js_skip__(cls):
return {
'xtermjs': cls.__javascript__[0:2],
}
__js_require__ = {
'paths': OrderedDict([
("xtermjs", XTERM_JS[:-3]),
("xtermjsweblinks", XTERM_LINKS_JS[:-3]),
]),
'exports': {
"xtermjs": "xtermjs",
"xtermjsweblinks": "WebLinksAddon",
},
'shim': {
'xtermjsweblinks': {
'exports': 'WebLinksAddon',
'deps': ['xtermjs']
},
}
}
_clears = Int()
nrows = Int()
ncols = Int()
options = Dict(String, Any)
output = String()