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 • 9.86 kB
Source Map (JSON)
{"version":3,"file":"layout.mjs","sources":["../../../../../node_modules/epubjs/src/layout.js"],"sourcesContent":["import { extend } from \"./utils/core\";\nimport { EVENTS } from \"./utils/constants\";\nimport EventEmitter from \"event-emitter\";\n\n/**\n * Figures out the CSS values to apply for a layout\n * @class\n * @param {object} settings\n * @param {string} [settings.layout='reflowable']\n * @param {string} [settings.spread]\n * @param {number} [settings.minSpreadWidth=800]\n * @param {boolean} [settings.evenSpreads=false]\n */\nclass Layout {\n\tconstructor(settings) {\n\t\tthis.settings = settings;\n\t\tthis.name = settings.layout || \"reflowable\";\n\t\tthis._spread = (settings.spread === \"none\") ? false : true;\n\t\tthis._minSpreadWidth = settings.minSpreadWidth || 800;\n\t\tthis._evenSpreads = settings.evenSpreads || false;\n\n\t\tif (settings.flow === \"scrolled\" ||\n\t\t\t\tsettings.flow === \"scrolled-continuous\" ||\n\t\t\t\tsettings.flow === \"scrolled-doc\") {\n\t\t\tthis._flow = \"scrolled\";\n\t\t} else {\n\t\t\tthis._flow = \"paginated\";\n\t\t}\n\n\n\t\tthis.width = 0;\n\t\tthis.height = 0;\n\t\tthis.spreadWidth = 0;\n\t\tthis.delta = 0;\n\n\t\tthis.columnWidth = 0;\n\t\tthis.gap = 0;\n\t\tthis.divisor = 1;\n\n\t\tthis.props = {\n\t\t\tname: this.name,\n\t\t\tspread: this._spread,\n\t\t\tflow: this._flow,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tspreadWidth: 0,\n\t\t\tdelta: 0,\n\t\t\tcolumnWidth: 0,\n\t\t\tgap: 0,\n\t\t\tdivisor: 1\n\t\t};\n\n\t}\n\n\t/**\n\t * Switch the flow between paginated and scrolled\n\t * @param {string} flow paginated | scrolled\n\t * @return {string} simplified flow\n\t */\n\tflow(flow) {\n\t\tif (typeof(flow) != \"undefined\") {\n\t\t\tif (flow === \"scrolled\" ||\n\t\t\t\t\tflow === \"scrolled-continuous\" ||\n\t\t\t\t\tflow === \"scrolled-doc\") {\n\t\t\t\tthis._flow = \"scrolled\";\n\t\t\t} else {\n\t\t\t\tthis._flow = \"paginated\";\n\t\t\t}\n\t\t\t// this.props.flow = this._flow;\n\t\t\tthis.update({flow: this._flow});\n\t\t}\n\t\treturn this._flow;\n\t}\n\n\t/**\n\t * Switch between using spreads or not, and set the\n\t * width at which they switch to single.\n\t * @param {string} spread \"none\" | \"always\" | \"auto\"\n\t * @param {number} min integer in pixels\n\t * @return {boolean} spread true | false\n\t */\n\tspread(spread, min) {\n\n\t\tif (spread) {\n\t\t\tthis._spread = (spread === \"none\") ? false : true;\n\t\t\t// this.props.spread = this._spread;\n\t\t\tthis.update({spread: this._spread});\n\t\t}\n\n\t\tif (min >= 0) {\n\t\t\tthis._minSpreadWidth = min;\n\t\t}\n\n\t\treturn this._spread;\n\t}\n\n\t/**\n\t * Calculate the dimensions of the pagination\n\t * @param {number} _width width of the rendering\n\t * @param {number} _height height of the rendering\n\t * @param {number} _gap width of the gap between columns\n\t */\n\tcalculate(_width, _height, _gap){\n\n\t\tvar divisor = 1;\n\t\tvar gap = _gap || 0;\n\n\t\t//-- Check the width and create even width columns\n\t\t// var fullWidth = Math.floor(_width);\n\t\tvar width = _width;\n\t\tvar height = _height;\n\n\t\tvar section = Math.floor(width / 12);\n\n\t\tvar columnWidth;\n\t\tvar spreadWidth;\n\t\tvar pageWidth;\n\t\tvar delta;\n\n\t\tif (this._spread && width >= this._minSpreadWidth) {\n\t\t\tdivisor = 2;\n\t\t} else {\n\t\t\tdivisor = 1;\n\t\t}\n\n\t\tif (this.name === \"reflowable\" && this._flow === \"paginated\" && !(_gap >= 0)) {\n\t\t\tgap = ((section % 2 === 0) ? section : section - 1);\n\t\t}\n\n\t\tif (this.name === \"pre-paginated\" ) {\n\t\t\tgap = 0;\n\t\t}\n\n\t\t//-- Double Page\n\t\tif(divisor > 1) {\n\t\t\t// width = width - gap;\n\t\t\t// columnWidth = (width - gap) / divisor;\n\t\t\t// gap = gap / divisor;\n\t\t\tcolumnWidth = (width / divisor) - gap;\n\t\t\tpageWidth = columnWidth + gap;\n\t\t} else {\n\t\t\tcolumnWidth = width;\n\t\t\tpageWidth = width;\n\t\t}\n\n\t\tif (this.name === \"pre-paginated\" && divisor > 1) {\n\t\t\twidth = columnWidth;\n\t\t}\n\n\t\tspreadWidth = (columnWidth * divisor) + gap;\n\n\t\tdelta = width;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.spreadWidth = spreadWidth;\n\t\tthis.pageWidth = pageWidth;\n\t\tthis.delta = delta;\n\n\t\tthis.columnWidth = columnWidth;\n\t\tthis.gap = gap;\n\t\tthis.divisor = divisor;\n\n\t\t// this.props.width = width;\n\t\t// this.props.height = _height;\n\t\t// this.props.spreadWidth = spreadWidth;\n\t\t// this.props.pageWidth = pageWidth;\n\t\t// this.props.delta = delta;\n\t\t//\n\t\t// this.props.columnWidth = colWidth;\n\t\t// this.props.gap = gap;\n\t\t// this.props.divisor = divisor;\n\n\t\tthis.update({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tspreadWidth,\n\t\t\tpageWidth,\n\t\t\tdelta,\n\t\t\tcolumnWidth,\n\t\t\tgap,\n\t\t\tdivisor\n\t\t});\n\n\t}\n\n\t/**\n\t * Apply Css to a Document\n\t * @param {Contents} contents\n\t * @return {Promise}\n\t */\n\tformat(contents, section, axis){\n\t\tvar formating;\n\n\t\tif (this.name === \"pre-paginated\") {\n\t\t\tformating = contents.fit(this.columnWidth, this.height, section);\n\t\t} else if (this._flow === \"paginated\") {\n\t\t\tformating = contents.columns(this.width, this.height, this.columnWidth, this.gap, this.settings.direction);\n\t\t} else if (axis && axis === \"horizontal\") {\n\t\t\tformating = contents.size(null, this.height);\n\t\t} else {\n\t\t\tformating = contents.size(this.width, null);\t\t\t\t\n\t\t}\n\n\t\treturn formating; // might be a promise in some View Managers\n\t}\n\n\t/**\n\t * Count number of pages\n\t * @param {number} totalLength\n\t * @param {number} pageLength\n\t * @return {{spreads: Number, pages: Number}}\n\t */\n\tcount(totalLength, pageLength) {\n\n\t\tlet spreads, pages;\n\n\t\tif (this.name === \"pre-paginated\") {\n\t\t\tspreads = 1;\n\t\t\tpages = 1;\n\t\t} else if (this._flow === \"paginated\") {\n\t\t\tpageLength = pageLength || this.delta;\n\t\t\tspreads = Math.ceil( totalLength / pageLength);\n\t\t\tpages = spreads * this.divisor;\n\t\t} else { // scrolled\n\t\t\tpageLength = pageLength || this.height;\n\t\t\tspreads = Math.ceil( totalLength / pageLength);\n\t\t\tpages = spreads;\n\t\t}\n\n\t\treturn {\n\t\t\tspreads,\n\t\t\tpages\n\t\t};\n\n\t}\n\n\t/**\n\t * Update props that have changed\n\t * @private\n\t * @param {object} props\n\t */\n\tupdate(props) {\n\t\t// Remove props that haven't changed\n\t\tObject.keys(props).forEach((propName) => {\n\t\t\tif (this.props[propName] === props[propName]) {\n\t\t\t\tdelete props[propName];\n\t\t\t}\n\t\t});\n\n\t\tif(Object.keys(props).length > 0) {\n\t\t\tlet newProps = extend(this.props, props);\n\t\t\tthis.emit(EVENTS.LAYOUT.UPDATED, newProps, props);\n\t\t}\n\t}\n}\n\nEventEmitter(Layout.prototype);\n\nexport default Layout;\n"],"names":["Layout","settings","flow","spread","min","_width","_height","_gap","divisor","gap","width","height","section","columnWidth","spreadWidth","pageWidth","delta","contents","axis","formating","totalLength","pageLength","spreads","pages","props","propName","newProps","extend","EVENTS","EventEmitter"],"mappings":"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","x_google_ignoreList":[0]}