Publish Docker Image / build-and-push (./build/Dockerfile, git.lzstealth.com/lzstealth/pulse-signage-web, web) (push) Successful in 1m16s
Publish Docker Image / build-and-push (./build/Dockerfile.player, git.lzstealth.com/lzstealth/pulse-signage-player, player) (push) Successful in 32s
52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
// HTML region rendering with sandboxed iframe output.
|
|
|
|
var registry = window.pulsePlayerRegionTypes;
|
|
|
|
function normalizeRenderableValue(value) {
|
|
if (value && typeof value === 'object') {
|
|
if (value.value !== undefined) {
|
|
return normalizeRenderableValue(value.value);
|
|
}
|
|
if (value.text !== undefined) {
|
|
return normalizeRenderableValue(value.text);
|
|
}
|
|
if (value.html !== undefined) {
|
|
return normalizeRenderableValue(value.html);
|
|
}
|
|
if (value.content !== undefined) {
|
|
return normalizeRenderableValue(value.content);
|
|
}
|
|
return '';
|
|
}
|
|
|
|
return String(value === undefined || value === null ? '' : value);
|
|
}
|
|
|
|
function buildHtmlDocument(html) {
|
|
var raw = String(html || '').trim();
|
|
if (!raw) {
|
|
return '';
|
|
}
|
|
|
|
if (/^<!doctype\b/i.test(raw) || /^<html\b/i.test(raw)) {
|
|
return raw;
|
|
}
|
|
|
|
return '<!doctype html><html><head><style>html,body{margin:0;width:100%;height:100%;overflow:hidden;background:transparent;}</style></head><body>' + raw + '</body></html>';
|
|
}
|
|
|
|
function renderHtmlRegionContent(value) {
|
|
var html = normalizeRenderableValue(value).trim();
|
|
if (!html) {
|
|
return '';
|
|
}
|
|
return '<iframe class="template-region-html-frame" sandbox="" scrolling="no" srcdoc="' + escapeHtml(buildHtmlDocument(html)) + '" title="HTML region" loading="eager" style="width:100%;height:100%;border:0;display:block;background:transparent;overflow:hidden;"></iframe>';
|
|
}
|
|
|
|
function renderHtmlRegion(region, regionContent) {
|
|
return '<div class="template-region html" style="' + region.baseStyle + '">' + renderHtmlRegionContent(regionContent && regionContent.value !== undefined ? regionContent.value : '') + '</div>';
|
|
}
|
|
|
|
registry.register('html', {
|
|
renderRegion: renderHtmlRegion
|
|
}); |