UNPKG

embed-support

Version:

Create embed codes for a static web project

62 lines (47 loc) 1.86 kB
const mkpath = require('mkpath'); const embedCode = require('lucify-embed-code'); const hbs = require('handlebars'); const fs = require('fs'); const j = require('path').join; const validateOptions = require('./validate-options'); hbs.renderSync = function renderSync(str, ctx) { const context = ctx || {}; try { const fn = (typeof str === 'function' ? str : hbs.compile(str, context)); return fn(context); } catch (err) { throw err; } }; function copyEmbedScript(destPath) { const scriptFile = require.resolve('lucify-embed-code/lib/embed.js'); fs.writeFileSync(j(destPath, 'embed.js'), fs.readFileSync(scriptFile)); } function copyResizeScript(destPath) { const scriptFile = require.resolve('iframe-resizer/js/iframeResizer.min.js'); fs.writeFileSync(j(destPath, 'resize.js'), fs.readFileSync(scriptFile)); } function createEmbedCodesPage(destPath, template, embedUrl, embedBaseUrl) { // prepare template params const params = { scriptTagEmbedCode: embedCode.getScriptTagEmbedCode(embedBaseUrl, embedUrl), iFrameWithRemoteResizeEmbedCode: embedCode .getIFrameEmbedCodeWithRemoteResize(embedBaseUrl, embedUrl), iFrameWithInlineResizeEmbedCode: embedCode .getIFrameEmbedCodeWithInlineResize(embedBaseUrl, embedUrl), }; // render template const templatePath = template || require.resolve('../../src/www/embed-codes.hbs'); const renderedString = hbs.renderSync(fs.readFileSync(templatePath, 'utf8'), params); fs.writeFileSync(j(destPath, 'embed-codes.html'), renderedString); } function embedSupport(opts) { if (!validateOptions(opts)) { throw Error('Invalid options'); } mkpath.sync(opts.dest); createEmbedCodesPage(opts.dest, opts.template, opts.iframeUrl, opts.destUrl); copyEmbedScript(opts.dest); copyResizeScript(opts.dest); } module.exports = embedSupport;