UNPKG

ember-cli-zopim-live-chat

Version:

Plugin for ember-cli that injects Zopim Live chat code into HTML content.

90 lines (74 loc) 2.14 kB
'use strict'; function zopimCore(config) { var id = config.id; return [ "<script type='text/javascript'>", "window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=", "d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.", "_.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute('charset','utf-8');", "$.src='//v2.zopim.com/?"+id+"';z.t=+new Date;$.", "type='text/javascript';e.parentNode.insertBefore($,e)})(document,'script');", "</script>" ]; } function zopimWindow(config) { if (!config) { return []; } var prefix = '$zopim.livechat.window.'; var settings = []; if (config.offsetVertical) { settings.push(prefix+'setOffsetVertical('+config.offsetVertical+');') } if (config.offsetHorizontal) { settings.push(prefix+'setOffsetHorizontal('+config.offsetHorizontal+');') } if (config.position) { settings.push(prefix+'setPosition(\''+config.position+'\');') } if (config.size) { settings.push(prefix+'setSize(\''+config.size+'\');') } if (config.title) { settings.push(prefix+'setTitle(\''+config.title+'\');') } return settings; } function zopimBubble(config) { if (!config) { return []; } var prefix = '$zopim.livechat.bubble.'; var settings = []; if (config.color) { settings.push(prefix+'setColor(\''+config.color+'\');') } return settings; } function zopimSettings(config) { var settings = []; settings = settings.concat(zopimWindow(config.window)); settings = settings.concat(zopimBubble(config.bubble)); return [ "<script type='text/javascript'>", "$(document).ready(function() {", "$zopim(function() {", settings.join("\n"), "});", "});", "</script>" ]; } module.exports = { name: 'ember-cli-zopim-live-chat', contentFor: function(type, config) { var zopimConfig = config.zopim; if (type === 'zopim' && zopimConfig) { var content = []; content = content.concat(zopimCore(zopimConfig)); content = content.concat(zopimSettings(zopimConfig)); return content.join("\n"); } return ''; } };