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.6 kB
Source Map (JSON)
{"version":3,"file":"themes.mjs","sources":["../../../../../node_modules/epubjs/src/themes.js"],"sourcesContent":["import Url from \"./utils/url\";\n\n/**\n * Themes to apply to displayed content\n * @class\n * @param {Rendition} rendition\n */\nclass Themes {\n\tconstructor(rendition) {\n\t\tthis.rendition = rendition;\n\t\tthis._themes = {\n\t\t\t\"default\" : {\n\t\t\t\t\"rules\" : {},\n\t\t\t\t\"url\" : \"\",\n\t\t\t\t\"serialized\" : \"\"\n\t\t\t}\n\t\t};\n\t\tthis._overrides = {};\n\t\tthis._current = \"default\";\n\t\tthis._injected = [];\n\t\tthis.rendition.hooks.content.register(this.inject.bind(this));\n\t\tthis.rendition.hooks.content.register(this.overrides.bind(this));\n\n\t}\n\n\t/**\n\t * Add themes to be used by a rendition\n\t * @param {object | Array<object> | string}\n\t * @example themes.register(\"light\", \"http://example.com/light.css\")\n\t * @example themes.register(\"light\", { \"body\": { \"color\": \"purple\"}})\n\t * @example themes.register({ \"light\" : {...}, \"dark\" : {...}})\n\t */\n\tregister () {\n\t\tif (arguments.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (arguments.length === 1 && typeof(arguments[0]) === \"object\") {\n\t\t\treturn this.registerThemes(arguments[0]);\n\t\t}\n\t\tif (arguments.length === 1 && typeof(arguments[0]) === \"string\") {\n\t\t\treturn this.default(arguments[0]);\n\t\t}\n\t\tif (arguments.length === 2 && typeof(arguments[1]) === \"string\") {\n\t\t\treturn this.registerUrl(arguments[0], arguments[1]);\n\t\t}\n\t\tif (arguments.length === 2 && typeof(arguments[1]) === \"object\") {\n\t\t\treturn this.registerRules(arguments[0], arguments[1]);\n\t\t}\n\t}\n\n\t/**\n\t * Add a default theme to be used by a rendition\n\t * @param {object | string} theme\n\t * @example themes.register(\"http://example.com/default.css\")\n\t * @example themes.register({ \"body\": { \"color\": \"purple\"}})\n\t */\n\tdefault (theme) {\n\t\tif (!theme) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof(theme) === \"string\") {\n\t\t\treturn this.registerUrl(\"default\", theme);\n\t\t}\n\t\tif (typeof(theme) === \"object\") {\n\t\t\treturn this.registerRules(\"default\", theme);\n\t\t}\n\t}\n\n\t/**\n\t * Register themes object\n\t * @param {object} themes\n\t */\n\tregisterThemes (themes) {\n\t\tfor (var theme in themes) {\n\t\t\tif (themes.hasOwnProperty(theme)) {\n\t\t\t\tif (typeof(themes[theme]) === \"string\") {\n\t\t\t\t\tthis.registerUrl(theme, themes[theme]);\n\t\t\t\t} else {\n\t\t\t\t\tthis.registerRules(theme, themes[theme]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Register a theme by passing its css as string\n\t * @param {string} name \n\t * @param {string} css \n\t */\n\tregisterCss (name, css) {\n\t\tthis._themes[name] = { \"serialized\" : css };\n\t\tif (this._injected[name] || name == 'default') {\n\t\t\tthis.update(name);\n\t\t}\n\t}\n\n\t/**\n\t * Register a url\n\t * @param {string} name\n\t * @param {string} input\n\t */\n\tregisterUrl (name, input) {\n\t\tvar url = new Url(input);\n\t\tthis._themes[name] = { \"url\": url.toString() };\n\t\tif (this._injected[name] || name == 'default') {\n\t\t\tthis.update(name);\n\t\t}\n\t}\n\n\t/**\n\t * Register rule\n\t * @param {string} name\n\t * @param {object} rules\n\t */\n\tregisterRules (name, rules) {\n\t\tthis._themes[name] = { \"rules\": rules };\n\t\t// TODO: serialize css rules\n\t\tif (this._injected[name] || name == 'default') {\n\t\t\tthis.update(name);\n\t\t}\n\t}\n\n\t/**\n\t * Select a theme\n\t * @param {string} name\n\t */\n\tselect (name) {\n\t\tvar prev = this._current;\n\t\tvar contents;\n\n\t\tthis._current = name;\n\t\tthis.update(name);\n\n\t\tcontents = this.rendition.getContents();\n\t\tcontents.forEach( (content) => {\n\t\t\tcontent.removeClass(prev);\n\t\t\tcontent.addClass(name);\n\t\t});\n\t}\n\n\t/**\n\t * Update a theme\n\t * @param {string} name\n\t */\n\tupdate (name) {\n\t\tvar contents = this.rendition.getContents();\n\t\tcontents.forEach( (content) => {\n\t\t\tthis.add(name, content);\n\t\t});\n\t}\n\n\t/**\n\t * Inject all themes into contents\n\t * @param {Contents} contents\n\t */\n\tinject (contents) {\n\t\tvar links = [];\n\t\tvar themes = this._themes;\n\t\tvar theme;\n\n\t\tfor (var name in themes) {\n\t\t\tif (themes.hasOwnProperty(name) && (name === this._current || name === \"default\")) {\n\t\t\t\ttheme = themes[name];\n\t\t\t\tif((theme.rules && Object.keys(theme.rules).length > 0) || (theme.url && links.indexOf(theme.url) === -1)) {\n\t\t\t\t\tthis.add(name, contents);\n\t\t\t\t}\n\t\t\t\tthis._injected.push(name);\n\t\t\t}\n\t\t}\n\n\t\tif(this._current != \"default\") {\n\t\t\tcontents.addClass(this._current);\n\t\t}\n\t}\n\n\t/**\n\t * Add Theme to contents\n\t * @param {string} name\n\t * @param {Contents} contents\n\t */\n\tadd (name, contents) {\n\t\tvar theme = this._themes[name];\n\n\t\tif (!theme || !contents) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (theme.url) {\n\t\t\tcontents.addStylesheet(theme.url);\n\t\t} else if (theme.serialized) {\n\t\t\tcontents.addStylesheetCss(theme.serialized, name);\n\t\t\ttheme.injected = true;\n\t\t} else if (theme.rules) {\n\t\t\tcontents.addStylesheetRules(theme.rules, name);\n\t\t\ttheme.injected = true;\n\t\t}\n\t}\n\n\t/**\n\t * Add override\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {boolean} priority\n\t */\n\toverride (name, value, priority) {\n\t\tvar contents = this.rendition.getContents();\n\n\t\tthis._overrides[name] = {\n\t\t\tvalue: value,\n\t\t\tpriority: priority === true\n\t\t};\n\n\t\tcontents.forEach( (content) => {\n\t\t\tcontent.css(name, this._overrides[name].value, this._overrides[name].priority);\n\t\t});\n\t}\n\n\tremoveOverride (name) {\n\t\tvar contents = this.rendition.getContents();\n\n\t\tdelete this._overrides[name];\n\n\t\tcontents.forEach( (content) => {\n\t\t\tcontent.css(name);\n\t\t});\n\t}\n\n\t/**\n\t * Add all overrides\n\t * @param {Content} content\n\t */\n\toverrides (contents) {\n\t\tvar overrides = this._overrides;\n\n\t\tfor (var rule in overrides) {\n\t\t\tif (overrides.hasOwnProperty(rule)) {\n\t\t\t\tcontents.css(rule, overrides[rule].value, overrides[rule].priority);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Adjust the font size of a rendition\n\t * @param {number} size\n\t */\n\tfontSize (size) {\n\t\tthis.override(\"font-size\", size);\n\t}\n\n\t/**\n\t * Adjust the font-family of a rendition\n\t * @param {string} f\n\t */\n\tfont (f) {\n\t\tthis.override(\"font-family\", f, true);\n\t}\n\n\tdestroy() {\n\t\tthis.rendition = undefined;\n\t\tthis._themes = undefined;\n\t\tthis._overrides = undefined;\n\t\tthis._current = undefined;\n\t\tthis._injected = undefined;\n\t}\n\n}\n\nexport default Themes;\n"],"names":["Themes","rendition","theme","themes","name","css","input","url","Url","rules","prev","contents","content","links","value","priority","overrides","rule","size","f"],"mappings":"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","x_google_ignoreList":[0]}