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($);
|
init($);
|
||||||
});
|
});
|
||||||
|
|
||||||
common.editorKeyUp$
|
const code$ = common.editorKeyUp$
|
||||||
.debounce(750)
|
.debounce(750)
|
||||||
.map(() => common.editor.getValue())
|
.map(() => common.editor.getValue())
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.doOnNext(() => console.log('updating value'))
|
.doOnNext(() => console.log('updating value'))
|
||||||
.subscribe(
|
.shareReplay();
|
||||||
|
|
||||||
|
// update storage
|
||||||
|
code$.subscribe(
|
||||||
code => {
|
code => {
|
||||||
common.codeStorage.updateStorage(common.challengeName, code);
|
common.codeStorage.updateStorage(common.challengeName, code);
|
||||||
common.codeUri.querify(code);
|
common.codeUri.querify(code);
|
||||||
@ -20,6 +23,28 @@ $(document).ready(function() {
|
|||||||
err => console.error(err)
|
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$
|
common.resetBtn$
|
||||||
.doOnNext(() => {
|
.doOnNext(() => {
|
||||||
common.editor.setValue(common.replaceSafeTags(common.seed));
|
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)) {
|
if (code.match(detectUnsafeConsoleCall)) {
|
||||||
return Observable.throw({
|
return Observable.throw({
|
||||||
err: 'Invalid if (null) console.log(1); detected',
|
err: 'Invalid if (null) console.log(1); detected',
|
||||||
|
@ -43,7 +43,7 @@ window.common = (function(global) {
|
|||||||
.map(script => `<script>${script}</script>`)
|
.map(script => `<script>${script}</script>`)
|
||||||
.flatMap(script => {
|
.flatMap(script => {
|
||||||
preview.open();
|
preview.open();
|
||||||
preview.write(libraryIncludes + code + script);
|
preview.write(libraryIncludes + code + '<!-- -->' + script);
|
||||||
preview.close();
|
preview.close();
|
||||||
return Observable.fromCallback($(preview).ready, $(preview))()
|
return Observable.fromCallback($(preview).ready, $(preview))()
|
||||||
.first()
|
.first()
|
||||||
|
Reference in New Issue
Block a user