UNPKG

@ng-doc/core

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

71 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildPlaygroundDemoTemplate = buildPlaygroundDemoTemplate; exports.buildPlaygroundDemoPipeTemplate = buildPlaygroundDemoPipeTemplate; const CSSWhat = require("css-what"); const css_what_1 = require("css-what"); const classes_1 = require("../classes"); const constants_1 = require("../constants"); const object_keys_1 = require("./object-keys"); /** * * @param template * @param selector * @param content * @param inputs * @param preview */ function buildPlaygroundDemoTemplate(template, selector, content, inputs, preview = true) { const parser = new classes_1.NgDocHtmlParser(template); const selectors = CSSWhat.parse(selector)[0]; if (selectors) { const rootElement = parser.find(constants_1.NG_DOC_DYNAMIC_SELECTOR) ?? parser.find(selector); if (rootElement) { parser.setAttributesFromSelectors(rootElement, selectors); if (String(rootElement.tag).toLowerCase() === constants_1.NG_DOC_DYNAMIC_SELECTOR.toLowerCase()) { rootElement.tag = selectors.find((selector) => selector.type === css_what_1.SelectorType.Tag)?.name ?? 'div'; } inputs && parser.fillAngularAttributes(rootElement, inputs); } } return (replaceContent(parser.serialize(), content ?? {}, preview) .replace(/=""/g, '') // Removes empty lines .replace(/^\s*\n/gm, '')); } /** * * @param template * @param name * @param content * @param inputs * @param preview */ function buildPlaygroundDemoPipeTemplate(template, name, content, inputs, preview = true) { const preparedTemplate = buildPlaygroundDemoTemplate(template, '', content, inputs, preview); const listOfParameters = (0, object_keys_1.objectKeys)(inputs ?? {}) .map((key) => `:${inputs?.[key]}`) .join('') .trim(); return preparedTemplate.replace(new RegExp(`\\| ${name}`, 'gm'), `| ${name}${listOfParameters}`); } /** * * @param htmlData * @param content * @param preview */ function replaceContent(htmlData, content, preview) { (0, object_keys_1.objectKeys)(content).forEach((key) => { const condition = preview ? content[key] : ` <ng-container *ngIf="content['${key}']"> ${content[key]} </ng-container>`.trim(); htmlData = htmlData.replace(new RegExp(`{{\\s*content.${key}\\s*}}`, 'gm'), condition ? `\n${condition}\n` : ''); }); return htmlData; } //# sourceMappingURL=build-playground-demo-template.js.map