vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
1 lines • 10.9 kB
Source Map (JSON)
{"version":3,"file":"spine.mjs","sources":["../../../../../node_modules/epubjs/src/spine.js"],"sourcesContent":["import EpubCFI from \"./epubcfi\";\nimport Hook from \"./utils/hook\";\nimport Section from \"./section\";\nimport {replaceBase, replaceCanonical, replaceMeta} from \"./utils/replacements\";\n\n/**\n * A collection of Spine Items\n */\nclass Spine {\n\tconstructor() {\n\t\tthis.spineItems = [];\n\t\tthis.spineByHref = {};\n\t\tthis.spineById = {};\n\n\t\tthis.hooks = {};\n\t\tthis.hooks.serialize = new Hook();\n\t\tthis.hooks.content = new Hook();\n\n\t\t// Register replacements\n\t\tthis.hooks.content.register(replaceBase);\n\t\tthis.hooks.content.register(replaceCanonical);\n\t\tthis.hooks.content.register(replaceMeta);\n\n\t\tthis.epubcfi = new EpubCFI();\n\n\t\tthis.loaded = false;\n\n\t\tthis.items = undefined;\n\t\tthis.manifest = undefined;\n\t\tthis.spineNodeIndex = undefined;\n\t\tthis.baseUrl = undefined;\n\t\tthis.length = undefined;\n\t}\n\n\t/**\n\t * Unpack items from a opf into spine items\n\t * @param {Packaging} _package\n\t * @param {method} resolver URL resolver\n\t * @param {method} canonical Resolve canonical url\n\t */\n\tunpack(_package, resolver, canonical) {\n\n\t\tthis.items = _package.spine;\n\t\tthis.manifest = _package.manifest;\n\t\tthis.spineNodeIndex = _package.spineNodeIndex;\n\t\tthis.baseUrl = _package.baseUrl || _package.basePath || \"\";\n\t\tthis.length = this.items.length;\n\n\t\tthis.items.forEach( (item, index) => {\n\t\t\tvar manifestItem = this.manifest[item.idref];\n\t\t\tvar spineItem;\n\n\t\t\titem.index = index;\n\t\t\titem.cfiBase = this.epubcfi.generateChapterComponent(this.spineNodeIndex, item.index, item.id);\n\n\t\t\tif (item.href) {\n\t\t\t\titem.url = resolver(item.href, true);\n\t\t\t\titem.canonical = canonical(item.href);\n\t\t\t}\n\n\t\t\tif(manifestItem) {\n\t\t\t\titem.href = manifestItem.href;\n\t\t\t\titem.url = resolver(item.href, true);\n\t\t\t\titem.canonical = canonical(item.href);\n\n\t\t\t\tif(manifestItem.properties.length){\n\t\t\t\t\titem.properties.push.apply(item.properties, manifestItem.properties);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (item.linear === \"yes\") {\n\t\t\t\titem.prev = function() {\n\t\t\t\t\tlet prevIndex = item.index;\n\t\t\t\t\twhile (prevIndex > 0) {\n\t\t\t\t\t\tlet prev = this.get(prevIndex-1);\n\t\t\t\t\t\tif (prev && prev.linear) {\n\t\t\t\t\t\t\treturn prev;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevIndex -= 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}.bind(this);\n\t\t\t\titem.next = function() {\n\t\t\t\t\tlet nextIndex = item.index;\n\t\t\t\t\twhile (nextIndex < this.spineItems.length-1) {\n\t\t\t\t\t\tlet next = this.get(nextIndex+1);\n\t\t\t\t\t\tif (next && next.linear) {\n\t\t\t\t\t\t\treturn next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextIndex += 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}.bind(this);\n\t\t\t} else {\n\t\t\t\titem.prev = function() {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\titem.next = function() {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tspineItem = new Section(item, this.hooks);\n\n\t\t\tthis.append(spineItem);\n\n\n\t\t});\n\n\t\tthis.loaded = true;\n\t}\n\n\t/**\n\t * Get an item from the spine\n\t * @param {string|number} [target]\n\t * @return {Section} section\n\t * @example spine.get();\n\t * @example spine.get(1);\n\t * @example spine.get(\"chap1.html\");\n\t * @example spine.get(\"#id1234\");\n\t */\n\tget(target) {\n\t\tvar index = 0;\n\n\t\tif (typeof target === \"undefined\") {\n\t\t\twhile (index < this.spineItems.length) {\n\t\t\t\tlet next = this.spineItems[index];\n\t\t\t\tif (next && next.linear) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tindex += 1;\n\t\t\t}\n\t\t} else if(this.epubcfi.isCfiString(target)) {\n\t\t\tlet cfi = new EpubCFI(target);\n\t\t\tindex = cfi.spinePos;\n\t\t} else if(typeof target === \"number\" || isNaN(target) === false){\n\t\t\tindex = target;\n\t\t} else if(typeof target === \"string\" && target.indexOf(\"#\") === 0) {\n\t\t\tindex = this.spineById[target.substring(1)];\n\t\t} else if(typeof target === \"string\") {\n\t\t\t// Remove fragments\n\t\t\ttarget = target.split(\"#\")[0];\n\t\t\tindex = this.spineByHref[target] || this.spineByHref[encodeURI(target)];\n\t\t}\n\n\t\treturn this.spineItems[index] || null;\n\t}\n\n\t/**\n\t * Append a Section to the Spine\n\t * @private\n\t * @param {Section} section\n\t */\n\tappend(section) {\n\t\tvar index = this.spineItems.length;\n\t\tsection.index = index;\n\n\t\tthis.spineItems.push(section);\n\n\t\t// Encode and Decode href lookups\n\t\t// see pr for details: https://github.com/futurepress/epub.js/pull/358\n\t\tthis.spineByHref[decodeURI(section.href)] = index;\n\t\tthis.spineByHref[encodeURI(section.href)] = index;\n\t\tthis.spineByHref[section.href] = index;\n\n\t\tthis.spineById[section.idref] = index;\n\n\t\treturn index;\n\t}\n\n\t/**\n\t * Prepend a Section to the Spine\n\t * @private\n\t * @param {Section} section\n\t */\n\tprepend(section) {\n\t\t// var index = this.spineItems.unshift(section);\n\t\tthis.spineByHref[section.href] = 0;\n\t\tthis.spineById[section.idref] = 0;\n\n\t\t// Re-index\n\t\tthis.spineItems.forEach(function(item, index){\n\t\t\titem.index = index;\n\t\t});\n\n\t\treturn 0;\n\t}\n\n\t// insert(section, index) {\n\t//\n\t// };\n\n\t/**\n\t * Remove a Section from the Spine\n\t * @private\n\t * @param {Section} section\n\t */\n\tremove(section) {\n\t\tvar index = this.spineItems.indexOf(section);\n\n\t\tif(index > -1) {\n\t\t\tdelete this.spineByHref[section.href];\n\t\t\tdelete this.spineById[section.idref];\n\n\t\t\treturn this.spineItems.splice(index, 1);\n\t\t}\n\t}\n\n\t/**\n\t * Loop over the Sections in the Spine\n\t * @return {method} forEach\n\t */\n\teach() {\n\t\treturn this.spineItems.forEach.apply(this.spineItems, arguments);\n\t}\n\n\t/**\n\t * Find the first Section in the Spine\n\t * @return {Section} first section\n\t */\n\tfirst() {\n\t\tlet index = 0;\n\n\t\tdo {\n\t\t\tlet next = this.get(index);\n\n\t\t\tif (next && next.linear) {\n\t\t\t\treturn next;\n\t\t\t}\n\t\t\tindex += 1;\n\t\t} while (index < this.spineItems.length) ;\n\t}\n\n\t/**\n\t * Find the last Section in the Spine\n\t * @return {Section} last section\n\t */\n\tlast() {\n\t\tlet index = this.spineItems.length-1;\n\n\t\tdo {\n\t\t\tlet prev = this.get(index);\n\t\t\tif (prev && prev.linear) {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t\tindex -= 1;\n\t\t} while (index >= 0);\n\t}\n\n\tdestroy() {\n\t\tthis.each((section) => section.destroy());\n\n\t\tthis.spineItems = undefined\n\t\tthis.spineByHref = undefined\n\t\tthis.spineById = undefined\n\n\t\tthis.hooks.serialize.clear();\n\t\tthis.hooks.content.clear();\n\t\tthis.hooks = undefined;\n\n\t\tthis.epubcfi = undefined;\n\n\t\tthis.loaded = false;\n\n\t\tthis.items = undefined;\n\t\tthis.manifest = undefined;\n\t\tthis.spineNodeIndex = undefined;\n\t\tthis.baseUrl = undefined;\n\t\tthis.length = undefined;\n\t}\n}\n\nexport default Spine;\n"],"names":["Spine","Hook","replaceBase","replaceCanonical","replaceMeta","EpubCFI","_package","resolver","canonical","item","index","manifestItem","spineItem","prevIndex","prev","nextIndex","next","Section","target","section"],"mappings":"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","x_google_ignoreList":[0]}