mirror of
https://github.com/john-okeefe/foliate-js.git
synced 2026-09-09 11:29:14 -04:00
Add transform target for KF8 files (#74)
This commit is contained in:
@@ -925,6 +925,7 @@ const getPageSpread = properties => {
|
|||||||
class KF8 {
|
class KF8 {
|
||||||
parser = new DOMParser()
|
parser = new DOMParser()
|
||||||
serializer = new XMLSerializer()
|
serializer = new XMLSerializer()
|
||||||
|
transformTarget = new EventTarget()
|
||||||
#cache = new Map()
|
#cache = new Map()
|
||||||
#fragmentOffsets = new Map()
|
#fragmentOffsets = new Map()
|
||||||
#fragmentSelectors = new Map()
|
#fragmentSelectors = new Map()
|
||||||
@@ -1071,8 +1072,13 @@ class KF8 {
|
|||||||
: await this.mobi.loadResource(id - 1)
|
: await this.mobi.loadResource(id - 1)
|
||||||
const result = [MIME.XHTML, MIME.HTML, MIME.CSS, MIME.SVG].includes(type)
|
const result = [MIME.XHTML, MIME.HTML, MIME.CSS, MIME.SVG].includes(type)
|
||||||
? await this.replaceResources(this.mobi.decode(raw)) : raw
|
? await this.replaceResources(this.mobi.decode(raw)) : raw
|
||||||
const doc = type === MIME.SVG ? this.parser.parseFromString(result, type) : null
|
const detail = { data: result, type }
|
||||||
return [new Blob([result], { type }),
|
const event = new CustomEvent('data', { detail })
|
||||||
|
this.transformTarget.dispatchEvent(event)
|
||||||
|
const newData = await event.detail.data
|
||||||
|
const newType = await event.detail.type
|
||||||
|
const doc = newType === MIME.SVG ? this.parser.parseFromString(newData, newType) : null
|
||||||
|
return [new Blob([newData], { newType }),
|
||||||
// SVG wrappers need to be inlined
|
// SVG wrappers need to be inlined
|
||||||
// as browsers don't allow external resources when loading SVG as an image
|
// as browsers don't allow external resources when loading SVG as an image
|
||||||
doc?.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'image')?.length
|
doc?.getElementsByTagNameNS('http://www.w3.org/2000/svg', 'image')?.length
|
||||||
|
|||||||
Reference in New Issue
Block a user