Open aarondewindt opened 3 years ago
I know probably parsing html into VDOM objects would probably be the best here.
@aarondewindt, idom
has a utility function for converting HTML strings to VDOM. If you're interested in adding any interactivity to what you're displaying I'd recommend taking a deeper look at idom
.
We don't want to inject raw HTML onto the DOM with vdom
, mostly so we can trust that the output is sanitized. React lets you work around this by using dangerouslySetInnerHTML
, but if I recall correctly we don't let that prop pass through.
I know probably parsing html into VDOM objects would probably be the best here.
That's what we built it for!
@rgbkrk perhaps worth porting the html_to_vdom
function here?
Where... did that get written at? It's... been awhile.
Here's the function: https://idom-docs.herokuapp.com/docs/_modules/idom/utils.html#html_to_vdom
I wrote it for IDOM but it should be compatible.
I'm using a third-party library (tabulate) to generate html tables from my data and I would like to insert these in the dom. Since I wasn't able to find a way to do this scanning through the docs and code I came up with this work around.
Running this doesn't result in what expect.
Renders the raw html source in the browser instead of the bold texts. So it's still being escaped.
Calling
component.to_html()
gives me the expected html code<div><b>HTML Source</b></div>
. Which means that rendering the component in a IPython.display.HTML` gives me the expected result.I've obviously missed something in my
RawHTML
class implementation. So does anyone know what I missed? Is there an official way to insert raw html? And if not are there plans to to add this as a feature?