UNPKG

@bookbox/view-html

Version:

Bookbox view for html

72 lines (71 loc) 2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fillDocumentTemplate = void 0; exports.getBookBoxHtml = getBookBoxHtml; exports.getBookBoxHtmlDocument = getBookBoxHtmlDocument; const bookTemplate_1 = require("./generated/bookTemplate"); const htmlBookSettings_1 = require("./htmlBookSettings"); const model_1 = require("./model"); const katex_css_1 = require("./generated/katex_css"); const katexFontsAll_css_1 = require("./generated/katexFontsAll_css"); const code_css_1 = require("./generated/code_css"); const fillDocumentTemplate = ({ title, book, fontStyle, inlineHead, schema, }) => bookTemplate_1.BOOK_TEMPLATE_HTML.replace('%TITLE', title) .replace('%INLINE_HEAD', inlineHead !== null && inlineHead !== void 0 ? inlineHead : '') .replace('%BOOK', book) .replace('%SCHEMA', JSON.stringify({})) .replace('%FONT_STYLE', fontStyle); exports.fillDocumentTemplate = fillDocumentTemplate; function getBookBoxHtml({ bookData, settingsOptions, layoutOptions }) { var _a; const { tokens, meta, store } = bookData; return `<div class="book-box book-box_layout"> ${(0, htmlBookSettings_1.getBookBoxHtmlSettings)({ bookData, settingsOptions, layoutOptions })} <div class="book-box_content-container"> ${(0, htmlBookSettings_1.getBookBoxHtmlSettingsTabs)({ bookData, settingsOptions, layoutOptions })} <div style="width: 100%"> <label for="settings-settings" class="book-box_layout-settings-item book-box_layout-settings-settings" ${((_a = settingsOptions === null || settingsOptions === void 0 ? void 0 : settingsOptions.viewItems) !== null && _a !== void 0 ? _a : true) ? '' : `style="display:none"`}></label> <div class="book-box_content"> <div>${(0, model_1.listToHtml)(tokens)}</div> </div> </div> </div> </div>`; } function getFontStyle({ bookData }) { const styles = []; const add = (style) => styles.push(`<style>${style}</style>`); if (exist('math')(bookData.store)) { add(katex_css_1.katexCssText); add(katexFontsAll_css_1.katexFontsAllCssText); } if (exist('code')(bookData.store)) { add(code_css_1.codeCssText); } return styles.join('\n'); } function getBookBoxHtmlDocument({ bookData, inlineHead, schema, }) { const { meta } = bookData; const bookHtml = getBookBoxHtml({ bookData, }); const fontStyle = getFontStyle({ bookData }); return (0, exports.fillDocumentTemplate)({ title: meta.contents[0].text, book: bookHtml, fontStyle, inlineHead, schema, }); } // TODO: create stat in core function exist(checkName) { return (store) => { for (const name in store.elementsByKeys) { if (!store.elementsByKeys.hasOwnProperty(name)) continue; if (store.elementsByKeys[name].name === checkName) return true; } return false; }; }