mirror of
https://github.com/pyscript/pyscript.git
synced 2022-05-01 19:47:48 +03:00
Various mime rendering fixes
This commit is contained in:
@@ -29,7 +29,7 @@ MIME_METHODS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def render_image(mime, value, meta):
|
def render_image(mime, value, meta):
|
||||||
data = f'{mime};base64,{value}'
|
data = f'data:{mime};charset=utf-8;base64,{value}'
|
||||||
attrs = ' '.join(['{k}="{v}"' for k, v in meta.items()])
|
attrs = ' '.join(['{k}="{v}"' for k, v in meta.items()])
|
||||||
return f'<img src="{data}" {attrs}</img>'
|
return f'<img src="{data}" {attrs}</img>'
|
||||||
|
|
||||||
@@ -68,7 +68,13 @@ def format_mime(obj):
|
|||||||
"""
|
"""
|
||||||
Formats object using _repr_x_ methods.
|
Formats object using _repr_x_ methods.
|
||||||
"""
|
"""
|
||||||
format_dict, md_dict = eval_formatter(obj, '_repr_mimebundle_')
|
|
||||||
|
mimebundle = eval_formatter(obj, '_repr_mimebundle_')
|
||||||
|
if isinstance(mimebundle, tuple):
|
||||||
|
format_dict, md_dict = mimebundle
|
||||||
|
else:
|
||||||
|
format_dict = mimebundle
|
||||||
|
md_dict = {}
|
||||||
|
|
||||||
output, not_available = None, []
|
output, not_available = None, []
|
||||||
for method, mime_type in reversed(MIME_METHODS.items()):
|
for method, mime_type in reversed(MIME_METHODS.items()):
|
||||||
@@ -113,9 +119,9 @@ class PyScript:
|
|||||||
|
|
||||||
element = document.getElementById(element_id)
|
element = document.getElementById(element_id)
|
||||||
html, mime_type = format_mime(value)
|
html, mime_type = format_mime(value)
|
||||||
if mime_type == 'application/javascript':
|
if mime_type in ('application/javascript', 'text/html'):
|
||||||
scriptEl = document.createRange().createContextualFragment(html)
|
scriptEl = document.createRange().createContextualFragment(html)
|
||||||
element.children = [scriptEl]
|
element.appendChild(scriptEl)
|
||||||
else:
|
else:
|
||||||
element.innerHTML = html
|
element.innerHTML = html
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ MIME_METHODS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def render_image(mime, value, meta):
|
def render_image(mime, value, meta):
|
||||||
data = f'{mime};base64,{value}'
|
data = f'data:{mime};charset=utf-8;base64,{value}'
|
||||||
attrs = ' '.join(['{k}="{v}"' for k, v in meta.items()])
|
attrs = ' '.join(['{k}="{v}"' for k, v in meta.items()])
|
||||||
return f'<img src="{data}" {attrs}</img>'
|
return f'<img src="{data}" {attrs}</img>'
|
||||||
|
|
||||||
@@ -59,7 +59,13 @@ def format_mime(obj):
|
|||||||
"""
|
"""
|
||||||
Formats object using _repr_x_ methods.
|
Formats object using _repr_x_ methods.
|
||||||
"""
|
"""
|
||||||
format_dict, md_dict = eval_formatter(obj, '_repr_mimebundle_')
|
|
||||||
|
mimebundle = eval_formatter(obj, '_repr_mimebundle_')
|
||||||
|
if isinstance(mimebundle, tuple):
|
||||||
|
format_dict, md_dict = mimebundle
|
||||||
|
else:
|
||||||
|
format_dict = mimebundle
|
||||||
|
md_dict = {}
|
||||||
|
|
||||||
output, not_available = None, []
|
output, not_available = None, []
|
||||||
for method, mime_type in reversed(MIME_METHODS.items()):
|
for method, mime_type in reversed(MIME_METHODS.items()):
|
||||||
@@ -104,9 +110,9 @@ class PyScript:
|
|||||||
|
|
||||||
element = document.getElementById(element_id)
|
element = document.getElementById(element_id)
|
||||||
html, mime_type = format_mime(value)
|
html, mime_type = format_mime(value)
|
||||||
if mime_type == 'application/javascript':
|
if mime_type in ('application/javascript', 'text/html'):
|
||||||
scriptEl = document.createRange().createContextualFragment(html)
|
scriptEl = document.createRange().createContextualFragment(html)
|
||||||
element.children = [scriptEl]
|
element.appendChild(scriptEl)
|
||||||
else:
|
else:
|
||||||
element.innerHTML = html
|
element.innerHTML = html
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user