Update preview on keystroke
Also removes need to check for unfinished html comments
This commit is contained in:
@ -7,12 +7,15 @@ $(document).ready(function() {
|
||||
init($);
|
||||
});
|
||||
|
||||
common.editorKeyUp$
|
||||
const code$ = common.editorKeyUp$
|
||||
.debounce(750)
|
||||
.map(() => common.editor.getValue())
|
||||
.distinctUntilChanged()
|
||||
.doOnNext(() => console.log('updating value'))
|
||||
.subscribe(
|
||||
.shareReplay();
|
||||
|
||||
// update storage
|
||||
code$.subscribe(
|
||||
code => {
|
||||
common.codeStorage.updateStorage(common.challengeName, code);
|
||||
common.codeUri.querify(code);
|
||||
@ -20,6 +23,28 @@ $(document).ready(function() {
|
||||
err => console.error(err)
|
||||
);
|
||||
|
||||
code$
|
||||
.flatMap(code => {
|
||||
if (common.hasJs(code)) {
|
||||
return common.detectLoops$(code)
|
||||
.flatMap(
|
||||
({ err }) => err ? Observable.throw(err) : Observable.just(code)
|
||||
);
|
||||
}
|
||||
return Observable.just(code);
|
||||
})
|
||||
.flatMap(code => common.updatePreview$(code))
|
||||
.catch(err => Observable.just({ err }))
|
||||
.subscribe(
|
||||
({ err }) => {
|
||||
if (err) {
|
||||
return console.error(err);
|
||||
}
|
||||
console.log('updating preview');
|
||||
},
|
||||
err => console.error(err)
|
||||
);
|
||||
|
||||
common.resetBtn$
|
||||
.doOnNext(() => {
|
||||
common.editor.setValue(common.replaceSafeTags(common.seed));
|
||||
|
@ -60,20 +60,6 @@ window.common = (function(global) {
|
||||
});
|
||||
}
|
||||
|
||||
if (common.challengeType === '0') {
|
||||
let openingComments = code.match(/\<\!\-\-/gi);
|
||||
let closingComments = code.match(/\-\-\>/gi) || [];
|
||||
if (
|
||||
openingComments &&
|
||||
openingComments.length > closingComments.length
|
||||
) {
|
||||
return Observable.throw({
|
||||
err: 'SyntaxError: Unfinished HTML comment',
|
||||
code
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (code.match(detectUnsafeConsoleCall)) {
|
||||
return Observable.throw({
|
||||
err: 'Invalid if (null) console.log(1); detected',
|
||||
|
@ -43,7 +43,7 @@ window.common = (function(global) {
|
||||
.map(script => `<script>${script}</script>`)
|
||||
.flatMap(script => {
|
||||
preview.open();
|
||||
preview.write(libraryIncludes + code + script);
|
||||
preview.write(libraryIncludes + code + '<!-- -->' + script);
|
||||
preview.close();
|
||||
return Observable.fromCallback($(preview).ready, $(preview))()
|
||||
.first()
|
||||
|
Reference in New Issue
Block a user