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 • 12.8 kB
Source Map (JSON)
{"version":3,"file":"resources.mjs","sources":["../../../../../node_modules/epubjs/src/resources.js"],"sourcesContent":["import {substitute} from \"./utils/replacements\";\nimport {createBase64Url, createBlobUrl, blob2base64} from \"./utils/core\";\nimport Url from \"./utils/url\";\nimport mime from \"./utils/mime\";\nimport Path from \"./utils/path\";\nimport path from \"path-webpack\";\n\n/**\n * Handle Package Resources\n * @class\n * @param {Manifest} manifest\n * @param {object} [options]\n * @param {string} [options.replacements=\"base64\"]\n * @param {Archive} [options.archive]\n * @param {method} [options.resolver]\n */\nclass Resources {\n\tconstructor(manifest, options) {\n\t\tthis.settings = {\n\t\t\treplacements: (options && options.replacements) || \"base64\",\n\t\t\tarchive: (options && options.archive),\n\t\t\tresolver: (options && options.resolver),\n\t\t\trequest: (options && options.request)\n\t\t};\n\n\t\tthis.process(manifest);\n\t}\n\n\t/**\n\t * Process resources\n\t * @param {Manifest} manifest\n\t */\n\tprocess(manifest){\n\t\tthis.manifest = manifest;\n\t\tthis.resources = Object.keys(manifest).\n\t\t\tmap(function (key){\n\t\t\t\treturn manifest[key];\n\t\t\t});\n\n\t\tthis.replacementUrls = [];\n\n\t\tthis.html = [];\n\t\tthis.assets = [];\n\t\tthis.css = [];\n\n\t\tthis.urls = [];\n\t\tthis.cssUrls = [];\n\n\t\tthis.split();\n\t\tthis.splitUrls();\n\t}\n\n\t/**\n\t * Split resources by type\n\t * @private\n\t */\n\tsplit(){\n\n\t\t// HTML\n\t\tthis.html = this.resources.\n\t\t\tfilter(function (item){\n\t\t\t\tif (item.type === \"application/xhtml+xml\" ||\n\t\t\t\t\t\titem.type === \"text/html\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Exclude HTML\n\t\tthis.assets = this.resources.\n\t\t\tfilter(function (item){\n\t\t\t\tif (item.type !== \"application/xhtml+xml\" &&\n\t\t\t\t\t\titem.type !== \"text/html\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Only CSS\n\t\tthis.css = this.resources.\n\t\t\tfilter(function (item){\n\t\t\t\tif (item.type === \"text/css\") {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Convert split resources into Urls\n\t * @private\n\t */\n\tsplitUrls(){\n\n\t\t// All Assets Urls\n\t\tthis.urls = this.assets.\n\t\t\tmap(function(item) {\n\t\t\t\treturn item.href;\n\t\t\t}.bind(this));\n\n\t\t// Css Urls\n\t\tthis.cssUrls = this.css.map(function(item) {\n\t\t\treturn item.href;\n\t\t});\n\n\t}\n\n\t/**\n\t * Create a url to a resource\n\t * @param {string} url\n\t * @return {Promise<string>} Promise resolves with url string\n\t */\n\tcreateUrl (url) {\n\t\tvar parsedUrl = new Url(url);\n\t\tvar mimeType = mime.lookup(parsedUrl.filename);\n\n\t\tif (this.settings.archive) {\n\t\t\treturn this.settings.archive.createUrl(url, {\"base64\": (this.settings.replacements === \"base64\")});\n\t\t} else {\n\t\t\tif (this.settings.replacements === \"base64\") {\n\t\t\t\treturn this.settings.request(url, 'blob')\n\t\t\t\t\t.then((blob) => {\n\t\t\t\t\t\treturn blob2base64(blob);\n\t\t\t\t\t})\n\t\t\t\t\t.then((blob) => {\n\t\t\t\t\t\treturn createBase64Url(blob, mimeType);\n\t\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn this.settings.request(url, 'blob').then((blob) => {\n\t\t\t\t\treturn createBlobUrl(blob, mimeType);\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Create blob urls for all the assets\n\t * @return {Promise} returns replacement urls\n\t */\n\treplacements(){\n\t\tif (this.settings.replacements === \"none\") {\n\t\t\treturn new Promise(function(resolve) {\n\t\t\t\tresolve(this.urls);\n\t\t\t}.bind(this));\n\t\t}\n\n\t\tvar replacements = this.urls.map( (url) => {\n\t\t\t\tvar absolute = this.settings.resolver(url);\n\n\t\t\t\treturn this.createUrl(absolute).\n\t\t\t\t\tcatch((err) => {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t});\n\n\t\treturn Promise.all(replacements)\n\t\t\t.then( (replacementUrls) => {\n\t\t\t\tthis.replacementUrls = replacementUrls.filter((url) => {\n\t\t\t\t\treturn (typeof(url) === \"string\");\n\t\t\t\t});\n\t\t\t\treturn replacementUrls;\n\t\t\t});\n\t}\n\n\t/**\n\t * Replace URLs in CSS resources\n\t * @private\n\t * @param {Archive} [archive]\n\t * @param {method} [resolver]\n\t * @return {Promise}\n\t */\n\treplaceCss(archive, resolver){\n\t\tvar replaced = [];\n\t\tarchive = archive || this.settings.archive;\n\t\tresolver = resolver || this.settings.resolver;\n\t\tthis.cssUrls.forEach(function(href) {\n\t\t\tvar replacement = this.createCssFile(href, archive, resolver)\n\t\t\t\t.then(function (replacementUrl) {\n\t\t\t\t\t// switch the url in the replacementUrls\n\t\t\t\t\tvar indexInUrls = this.urls.indexOf(href);\n\t\t\t\t\tif (indexInUrls > -1) {\n\t\t\t\t\t\tthis.replacementUrls[indexInUrls] = replacementUrl;\n\t\t\t\t\t}\n\t\t\t\t}.bind(this))\n\n\n\t\t\treplaced.push(replacement);\n\t\t}.bind(this));\n\t\treturn Promise.all(replaced);\n\t}\n\n\t/**\n\t * Create a new CSS file with the replaced URLs\n\t * @private\n\t * @param {string} href the original css file\n\t * @return {Promise} returns a BlobUrl to the new CSS file or a data url\n\t */\n\tcreateCssFile(href){\n\t\tvar newUrl;\n\n\t\tif (path.isAbsolute(href)) {\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\n\t\tvar absolute = this.settings.resolver(href);\n\n\t\t// Get the text of the css file from the archive\n\t\tvar textResponse;\n\n\t\tif (this.settings.archive) {\n\t\t\ttextResponse = this.settings.archive.getText(absolute);\n\t\t} else {\n\t\t\ttextResponse = this.settings.request(absolute, \"text\");\n\t\t}\n\n\t\t// Get asset links relative to css file\n\t\tvar relUrls = this.urls.map( (assetHref) => {\n\t\t\tvar resolved = this.settings.resolver(assetHref);\n\t\t\tvar relative = new Path(absolute).relative(resolved);\n\n\t\t\treturn relative;\n\t\t});\n\n\t\tif (!textResponse) {\n\t\t\t// file not found, don't replace\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t}\n\n\t\treturn textResponse.then( (text) => {\n\t\t\t// Replacements in the css text\n\t\t\ttext = substitute(text, relUrls, this.replacementUrls);\n\n\t\t\t// Get the new url\n\t\t\tif (this.settings.replacements === \"base64\") {\n\t\t\t\tnewUrl = createBase64Url(text, \"text/css\");\n\t\t\t} else {\n\t\t\t\tnewUrl = createBlobUrl(text, \"text/css\");\n\t\t\t}\n\n\t\t\treturn newUrl;\n\t\t}, (err) => {\n\t\t\t// handle response errors\n\t\t\treturn new Promise(function(resolve){\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\n\t}\n\n\t/**\n\t * Resolve all resources URLs relative to an absolute URL\n\t * @param {string} absolute to be resolved to\n\t * @param {resolver} [resolver]\n\t * @return {string[]} array with relative Urls\n\t */\n\trelativeTo(absolute, resolver){\n\t\tresolver = resolver || this.settings.resolver;\n\n\t\t// Get Urls relative to current sections\n\t\treturn this.urls.\n\t\t\tmap(function(href) {\n\t\t\t\tvar resolved = resolver(href);\n\t\t\t\tvar relative = new Path(absolute).relative(resolved);\n\t\t\t\treturn relative;\n\t\t\t}.bind(this));\n\t}\n\n\t/**\n\t * Get a URL for a resource\n\t * @param {string} path\n\t * @return {string} url\n\t */\n\tget(path) {\n\t\tvar indexInUrls = this.urls.indexOf(path);\n\t\tif (indexInUrls === -1) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.replacementUrls.length) {\n\t\t\treturn new Promise(function(resolve, reject) {\n\t\t\t\tresolve(this.replacementUrls[indexInUrls]);\n\t\t\t}.bind(this));\n\t\t} else {\n\t\t\treturn this.createUrl(path);\n\t\t}\n\t}\n\n\t/**\n\t * Substitute urls in content, with replacements,\n\t * relative to a url if provided\n\t * @param {string} content\n\t * @param {string} [url] url to resolve to\n\t * @return {string} content with urls substituted\n\t */\n\tsubstitute(content, url) {\n\t\tvar relUrls;\n\t\tif (url) {\n\t\t\trelUrls = this.relativeTo(url);\n\t\t} else {\n\t\t\trelUrls = this.urls;\n\t\t}\n\t\treturn substitute(content, relUrls, this.replacementUrls);\n\t}\n\n\tdestroy() {\n\t\tthis.settings = undefined;\n\t\tthis.manifest = undefined;\n\t\tthis.resources = undefined;\n\t\tthis.replacementUrls = undefined;\n\t\tthis.html = undefined;\n\t\tthis.assets = undefined;\n\t\tthis.css = undefined;\n\n\t\tthis.urls = undefined;\n\t\tthis.cssUrls = undefined;\n\t}\n}\n\nexport default Resources;\n"],"names":["Resources","manifest","options","key","item","url","parsedUrl","Url","mimeType","mime","blob","blob2base64","createBase64Url","createBlobUrl","resolve","replacements","absolute","err","replacementUrls","archive","resolver","replaced","href","replacement","replacementUrl","indexInUrls","newUrl","path","textResponse","relUrls","assetHref","resolved","relative","Path","text","substitute","reject","content"],"mappings":"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","x_google_ignoreList":[0]}