window.common = (function(global) {
const {
Rx: { Observable },
common = { init: [] }
} = global;
var libraryIncludes = `
`;
const iFrameScript$ =
common.getScriptContent$('/js/iFrameScripts.js').shareReplay();
// runPreviewTests$ should be set up in the preview window
common.runPreviewTests$ =
() => Observable.throw({ err: new Error('run preview not enabled') });
common.updatePreview$ = function updatePreview$(code = '') {
const previewFrame = document.getElementById('preview');
const preview = previewFrame.contentDocument ||
previewFrame.contentWindow.document;
if (!preview) {
return Observable.just(code);
}
return iFrameScript$
.map(script => ``)
.flatMap(script => {
preview.open();
preview.write(libraryIncludes + code + '' + script);
preview.close();
return Observable.fromCallback($(preview).ready, $(preview))()
.first()
// delay is need here for first initial run
.delay(100);
})
.map(() => code);
};
return common;
}(window));