Upload files to IndexedDB

This commit is contained in:
Magnus Åhall 2026-06-01 14:27:41 +02:00
parent 5bd5ef1f02
commit 8b421ea59e
15 changed files with 539 additions and 99 deletions

View file

@ -92,18 +92,22 @@ function escapeHtmlEntities(html, encode) {// {{{
export class MarkedPosition {
constructor() {// {{{
window.setpos = (event) => {
event.stopPropagation()
event.preventDefault()
_mbus.dispatch('MARKDOWN_EDIT', {
position: {
start: event.target.dataset.offsetStart,
end: event.target.dataset.offsetEnd,
}
})
}
window.setpos = (event) => this.setpos(event)
this.render()
}// }}}
setpos(event) {// {{{
event.stopPropagation()
event.preventDefault()
_mbus.dispatch('MARKDOWN_EDIT', {
position: {
start: event.target.closest('[data-offset-start]').dataset.offsetStart,
end: event.target.closest('[data-offset-start]').dataset.offsetEnd,
}
})
}// }}}
render() {// {{{
const markedObject = this
this.marked = new Marked()
this.marked.use(markedTokenPosition())
this.marked.use({
@ -265,7 +269,6 @@ export class MarkedPosition {
},
image(token) {
if (token.tokens) {
token.text = this.parser.parseInline(token.tokens, this.parser.textRenderer)
}
@ -274,12 +277,11 @@ export class MarkedPosition {
return escapeHtmlEntities(token.text)
}
token.href = cleanHref
let out = `<img ondblclick="setpos(event)" data-offset-start="${token.position.start.offset}" data-offset-end="${token.position.end.offset}" src="${token.href}" alt="${escapeHtmlEntities(token.text)}"`
let out = `<n2-file ondblclick="setpos(event)" data-offset-start="${token.position.start.offset}" data-offset-end="${token.position.end.offset}" src="${token.href}" alt="${escapeHtmlEntities(token.text)}"`
if (token.title) {
out += ` title="${escapeHtmlEntities(token.title)}"`
}
out += '>'
out += '></n2-file>'
return out
},
@ -291,8 +293,34 @@ export class MarkedPosition {
}
})
}// }}}
}// }}}}}}
parse(text) {// {{{
return this.marked.parse(text)
}// }}}
async whenElementExist(id) {// {{{
// The element could have already been created.
const element = document.getElementById(id)
if (element) {
return element
}
const observer = new MutationObserver((_mutations, observer) => {
const target = document.getElementById(id)
if (target) {
observer.disconnect()
return target
}
})
observer.observe(document.documentElement, {
childList: true,
subtree: true
})
}// }}}
async populateImg(fileID, elementID) {// {{{
let img = await globalThis.nodeStore.files.get(fileID)
const el = await this.whenElementExist(elementID)
el.src = URL.createObjectURL(img.file)
}// }}}
}