embed-support
Version:
Create embed codes for a static web project
55 lines (46 loc) • 1.82 kB
JavaScript
;
var mkpath = require('mkpath');
var embedCode = require('lucify-embed-code');
var hbs = require('handlebars');
var fs = require('fs');
var j = require('path').join;
var validateOptions = require('./validate-options');
hbs.renderSync = function renderSync(str, ctx) {
var context = ctx || {};
try {
var fn = typeof str === 'function' ? str : hbs.compile(str, context);
return fn(context);
} catch (err) {
throw err;
}
};
function copyEmbedScript(destPath) {
var scriptFile = require.resolve('lucify-embed-code/lib/embed.js');
fs.writeFileSync(j(destPath, 'embed.js'), fs.readFileSync(scriptFile));
}
function copyResizeScript(destPath) {
var 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
var params = {
scriptTagEmbedCode: embedCode.getScriptTagEmbedCode(embedBaseUrl, embedUrl),
iFrameWithRemoteResizeEmbedCode: embedCode.getIFrameEmbedCodeWithRemoteResize(embedBaseUrl, embedUrl),
iFrameWithInlineResizeEmbedCode: embedCode.getIFrameEmbedCodeWithInlineResize(embedBaseUrl, embedUrl)
};
// render template
var templatePath = template || require.resolve('../../src/www/embed-codes.hbs');
var 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;