Source code for panel.models.jsoneditor
"""
Custom bokeh Markup models.
"""
from bokeh.core.properties import (
Any, Bool, Dict, Enum, List, Nullable, String,
)
from bokeh.events import ModelEvent
from ..config import config
from ..io.resources import bundled_files
from ..util import classproperty
from .layout import HTMLBox
[docs]class JSONEditEvent(ModelEvent):
event_name = 'json_edit'
def __init__(self, model, data=None):
self.data = data
super().__init__(model=model)
[docs]class JSONEditor(HTMLBox):
"""
A bokeh model that allows editing JSON.
"""
css = List(String)
data = Any()
menu = Bool(True)
mode = Enum("tree", "view", "form", "code", "text", "preview", default='tree')
search = Bool(True)
selection = List(Any)
schema = Nullable(Dict(String, Any), default=None)
templates = List(Any)
__javascript_raw__ = [
f"{config.npm_cdn}/jsoneditor@9.5.6/dist/jsoneditor.min.js"
]
__css_raw__ = [
f"{config.npm_cdn}/jsoneditor@9.5.6/dist/jsoneditor.min.css"
]
__resources__ = [
f"{config.npm_cdn}/jsoneditor@9.5.6/dist/img/jsoneditor-icons.svg"
]
@classproperty
def __javascript__(cls):
return bundled_files(cls)
@classproperty
def __css__(cls):
return bundled_files(cls, 'css')
@classproperty
def __js_skip__(cls):
return {'JSONEditor': cls.__javascript__}
__js_require__ = {
'paths': {
'jsoneditor': "//cdn.jsdelivr.net/npm/jsoneditor@9.5.6/dist/jsoneditor.min"
},
'exports': {'jsoneditor': 'JSONEditor'},
'shim': {
'jsoneditor': {
'exports': "JSONEditor"
}
}
}