The code below works with pn.serve
but not when I convert it to a pyodide application. Not sure if this is a bug? Is it possible to include JSComponents in Pyodide?
import param
import panel as pn
import os
import pathlib
from panel.custom import JSComponent
COMPILING = False
class Slideshow(JSComponent):
index = param.Integer(default=0)
# _esm = pathlib.Path("accounter/slideshow.js")
_esm = """
export function render({ model, el }) {
const div = document.createElement('div')
function update(){
div.innerText = model.index
}
model.on('index', update)
el.appendChild(div)
}
"""
class Test(param.Parameterized):
slideshow = param.ClassSelector(default = Slideshow(), class_=Slideshow)
def __init__(self, **params):
super().__init__(**params)
self.view = pn.Column(self.slideshow, self.slideshow.param["index"])
if COMPILING:
test=Test()
test.view.servable()
elif __name__ == "__main__":
test = Test()
pn.serve(test.view)
else:
...
I’m converting to Pyodide like this:
import panel.io.convert
filename = "/path/to/my/file/test.py"
files = panel.io.convert.convert_app(
filename,
dest_path = "./dist",
runtime = 'pyodide-worker',
prerender = False,
)