@bookbox/view-html
Version:
Bookbox view for html
65 lines (64 loc) • 2.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBookBoxHtmlDocument = exports.getBookBoxHtml = exports.fillDocumentTemplate = void 0;
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, }) => bookTemplate_1.BOOK_TEMPLATE_HTML.replace('%TITLE', title)
.replace('%INLINE_HEAD', inlineHead !== null && inlineHead !== void 0 ? inlineHead : '')
.replace('%BOOK', book)
.replace('%FONT_STYLE', fontStyle);
exports.fillDocumentTemplate = fillDocumentTemplate;
function getBookBoxHtml({ bookData, settingsOptions, layoutOptions }) {
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">
<div>${(0, model_1.listToHtml)(tokens)}</div>
</div>
</div>`;
}
exports.getBookBoxHtml = getBookBoxHtml;
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, }) {
const { meta } = bookData;
const bookHtml = getBookBoxHtml({
bookData,
settingsOptions: { viewTumbler: false },
layoutOptions: { fullPage: true },
});
const fontStyle = getFontStyle({ bookData });
return (0, exports.fillDocumentTemplate)({
title: meta.contents[0].text,
book: bookHtml,
fontStyle,
inlineHead,
});
}
exports.getBookBoxHtmlDocument = getBookBoxHtmlDocument;
// 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;
};
}