resources/js/murja-helper.js
var app = Elm.Main.init({
node: document.getElementById("app")
});
app.ports.alert.subscribe( (prompt) => {
window.alert(prompt);
});
app.ports.prompt.subscribe( (prompt) => {
let value = window.prompt(prompt);
app.ports.tags.send(value);
});
app.ports.reallySetupAce.subscribe( (content) => {
let editor = ace.edit("editor-post-content");
if(!editor) {
alert("Didn't find ace");
return;
}
editor.setKeyboardHandler("ace/keyboard/emacs");
editor.session.setValue(content);
editor.on('change', event => {
let value = editor.getSession().getValue();
app.ports.aceStateUpdate.send(value);
});
});
app.ports.addImgToAce.subscribe(img_id => {
let editor = ace.edit("editor-post-content");
if (editor) {
editor.insert('<img src="/api/pictures/' + img_id +'" />');
} else alert("Didn't find ace editor");
})
Object.defineProperty(HTMLElement.prototype, "dangerouslySetInnerHTML", {
get () {
return this.innerHTML
},
set (value) {
this.innerHTML = value
}
})
app.ports.savePostToLocalStorage.subscribe( v => {
localStorage.setItem("post", v)
});
app.ports.loadPostFromLocalStorage.subscribe( () => {
const post = localStorage.getItem("post");
if (post)
app.ports.fromLocalStorage.send(post);
});
app.ports.clearPostFromLS.subscribe( () => {
if (window.confirm("Are you sure to clear the editor?")) {
localStorage.removeItem("post");
location.reload();
}
});