UNPKG

embed-support

Version:

Create embed codes for a static web project

55 lines (46 loc) 1.82 kB
'use strict'; 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;