@miyagi/core
Version:
miyagi is a component development tool for JavaScript template engines.
67 lines (53 loc) • 1.63 kB
JavaScript
const init = require("../lib");
const { getVariationData, resolveVariationData } = require("../lib/mocks");
const renderIframeVariation = require("../lib/render/views/iframe/variation.js");
const {
getTemplateFilePathFromDirectoryPath,
} = require("../lib/render/helpers");
module.exports = function Api() {
process.env.MIYAGI_JS_API = true;
return new Promise((resolve) => {
init("api").then((app) => {
const getMockData = async ({ component, variant = "default" }) => {
const file = getTemplateFilePathFromDirectoryPath(app, component);
const { extended: variationData } = await getVariationData(
app,
file,
variant
);
return await resolveVariationData(app, variationData);
};
const getHtml = async ({ component, variant = "default" }) => {
return await renderIframeVariation({
app,
file: component,
variation: variant,
});
};
const getNode = async ({ component, variant = "default" }) => {
const html = await getHtml({
component,
variant,
});
return createElementFromHTML(html);
};
resolve({
getMockData,
getHtml,
getNode,
});
});
});
};
function createElementFromHTML(html) {
const div = document.createElement("div");
div.innerHTML = html.trim();
if (div.childNodes.length > 1) {
const container = document.createElement("div");
div.childNodes.forEach((node) => {
container.appendChild(node);
});
return container;
}
return div.firstChild;
}