{"version":3,"sources":["projects/page.js"],"names":["setPreviewPaneHeight","target","header","find","body","height","outerHeight","css","showProjectSignupBar","count","type","Cookies","get","parseInt","set","getRandomIntInclusive","expires","el","document","querySelector","ohm","window","HAnalytics","keenService","recordEvent","eventName","ctaButton","addEventListener","style","display","classList","add","remove","e","t","n","this","addClass","data","r","author","repo","attr","Error","i","split","length","s","o","html","u","children","text","end","eq","ajax","dataType","url","done","last_updated","logo","insertBefore","forks_count","followers_count","a","website","description","replace","trigger","fail","fn","bitbucketRepo","each","call","loadOnDocumentReady","ready","setImmediate","setTimeout","jQuery","githubWidgetLoader","fetchGithubData","b","$","context","success","m","meta","status","Location","console","error","message","c","d","Date","pushed_at","getMonth","getDate","getFullYear","f","owner","login","name","watchers","forks","html_url","default_branch","homepage","indexOf","replaceWith","initializeGithubWidget","widget","append","exports","module","define","amd","g","global","self","Clipboard","require","code","l","1","matches","element","selector","checkYoSelf","parent","parentNode","matches-selector","2","match","vendor","nodes","querySelectorAll","proto","Element","prototype","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","3","delegate","listenerFn","listener","apply","arguments","destroy","removeEventListener","callback","delegateTarget","closest","Object","defineProperty","value","4","node","undefined","HTMLElement","nodeType","nodeList","toString","string","String","5","listen","is","TypeError","listenNode","listenNodeList","listenSelector","Array","forEach","./is","6","select","selectedText","nodeName","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","7","E","on","ctx","push","once","off","_","emit","slice","evtArr","len","evts","liveEvents","8","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","_select","_select2","ClipboardAction","options","resolveOptions","initSelection","action","emitter","selectFake","selectTarget","_this","removeFake","fakeHandler","fakeElem","createElement","position","left","top","pageYOffset","documentElement","scrollTop","setAttribute","appendChild","copyText","removeChild","succeeded","execCommand","err","handleResult","clearSelection","bind","blur","_action","_target","9","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","getAttributeValue","suffix","attribute","hasAttribute","getAttribute","_clipboardAction","_clipboardAction2","_tinyEmitter","_tinyEmitter2","_goodListener","_goodListener2","_Emitter","listenClick","defaultAction","defaultTarget","defaultText","onClick","clipboardAction","./clipboard-action","good-listener","tiny-emitter","actionBar","initialized","bar","lastScrollTop","toggle","slideDown","st","slideUp","affixer","init","resize","lodashDebounce","reInit","width","preventDefault","offsetTop","smoothScrollTo","block","hljs","highlightBlock","tooltip","title","placement","container","removeClass","codeWidget","hasClass","first","frameElement","postNodeDims","dims","getBoundingClientRect","postMessage","source","payload","main","resizeNode"],"mappings":"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","sourceRoot":"/assets","sourcesContent":["(function(e,t){function n(t){var n=e(this).addClass(\"bitbucket-widget\");if(n.data(\"bitbucket-repo-inited\")){return}n.data(\"bitbucket-repo-inited\",true);var r=t\u0026\u0026t.author\u0026\u0026t.repo?t.author+\"/\"+t.repo:n.attr(\"data-repo\");if(!r){throw new Error(\"Either a data-repo attribute or author and repo options are required.\")}var i=r.split(\"/\");if(i.length!==2){throw new Error(\"data-repo attribute must be in 'username/repository' format.\")}var s=i[0];var o=i[1];n.html('\u003cdiv class=\"repo-header\"\u003e'+'\u003cdiv class=\"repo-stats\"\u003e\u003c/div\u003e'+'\u003cspan class=\"repo-name\"\u003e\u003ca href=\"\"\u003e\u003c/a\u003e / \u003ca href=\"\"\u003e\u003c/a\u003e\u003c/span\u003e'+' \u003cspan class=\"repo-last-update\"\u003e\u003c/span\u003e'+\"\u003c/div\u003e\"+'\u003cdiv class=\"repo-body\"\u003e\u003c/div\u003e');var u=e(\":first-child\",n);u.children(\".repo-name\").children(\":first-child\").attr(\"href\",\"http://www.bitbucket.org/\"+s).attr(\"target\",\"_blank\").text(s).end().children().eq(1).attr(\"href\",\"http://www.bitbucket.org/\"+r).attr(\"target\",\"_blank\").text(o);e.ajax({dataType:\"jsonp\",url:\"https://api.bitbucket.org/1.0/repositories/\"+r}).done(function(t){function o(e,t,n){return e===1?t:n}var r=u.children(\".repo-last-update\");r.text(t.last_updated?\"Last updated on \"+t.last_updated:\"Never updated\");if(t.logo){e('\u003cimg class=\"repo-logo\" src=\"'+t.logo+'\" /\u003e').insertBefore(r)}var i=t.forks_count||0;var s=t.followers_count||0;u.children(\".repo-stats\").html('\u003cdiv class=\"repo-forks\" title=\"Has '+i+o(i,\" fork.\",\" forks.\")+'\"\u003e'+i+\"\u003c/div\u003e\"+'\u003cdiv class=\"repo-followers\" title=\"Has '+s+o(s,\" follower.\",\" followers.\")+'\"\u003e'+s+\"\u003c/div\u003e\");var a=\"\";if(t.website){a+='\u003ca class=\"repo-website\" target=\"_blank\" href=\"'+t.website+'\"\u003e'+t.website+\"\u003c/a\u003e\"}if(t.description){a+='\u003cdiv class=\"repo-description\"\u003e'+t.description.replace(/\\n/g,\"\u003cbr/\u003e\")+\"\u003c/div\u003e\"}n.children(\".repo-body\").html(a);n.trigger(\"repo-retrieved\")}).fail(function(){var e=\"http://bitbucket.org/\"+r;n.children(\".repo-body\").html('\u003cdiv class=\"error\"\u003eThere was error getting this repository\\'s info. '+'Try visiting \u003ca target=\"_blank\" href=\"'+e+'\"\u003e'+e+\"\u003c/a\u003e\u003c/div\u003e\")})}e.fn.bitbucketRepo=function(e){this.each(function(){n.call(this,e)});return this};e.fn.bitbucketRepo.loadOnDocumentReady=true;e(document).ready(function(){(t.setImmediate||t.setTimeout)(function(){if(!e.fn.bitbucketRepo.loadOnDocumentReady){return}e(\".bitbucket-widget\").bitbucketRepo()})})})(jQuery,this);\nvar githubWidgetLoader = {\n fetchGithubData: function(b, url) {\n $.ajax({\n url: url,\n dataType: \"jsonp\",\n context: this,\n success: function(a) {\n var m = a.meta;\n switch (m.status) {\n case 301:\n this.fetchGithubData(b, m.Location);\n return;\n case 403:\n console.error(\"Github: \" + a.data.message);\n return;\n case 404:\n $(b).text(\"Repo not found. Make sure the repo is public!\");\n return;\n }\n var c = a.data;\n var d = new Date(c.pushed_at);\n var e = d.getMonth() + 1 + \"-\" + d.getDate() + \"-\" + d.getFullYear();\n var f = $(' \u003cdiv class=\"github-box repo\"\u003e \u003cdiv class=\"github-box-title\"\u003e \u003ch3\u003e \u003ca rel=\"nofollow\" target=\"_blank\" class=\"owner\" href=\"' + c.owner.url.replace(\"api.\", \"\").replace(\"users/\", \"\") + '\"\u003e' + c.owner.login + '\u003c/a\u003e / \u003ca rel=\"nofollow\" target=\"_blank\" class=\"repo\" href=\"' + c.url.replace(\"api.\", \"\").replace(\"repos/\", \"\") + '\"\u003e' + c.name + '\u003c/a\u003e \u003c/h3\u003e \u003cdiv class=\"github-stats\"\u003e \u003ca rel=\"nofollow\" target=\"_blank\" class=\"watchers\" href=\"' + c.url.replace(\"api.\", \"\").replace(\"repos/\", \"\") + '/watchers\"\u003e' + c.watchers + '\u003c/a\u003e \u003ca rel=\"nofollow\" target=\"_blank\" class=\"forks\" href=\"' + c.url.replace(\"api.\", \"\").replace(\"repos/\", \"\") + '/forks\"\u003e' + c.forks + '\u003c/a\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"github-box-content\"\u003e \u003cp class=\"description\"\u003e' + (c.description != null ? c.description : 'No description') + ' — \u003ca rel=\"nofollow\" target=\"_blank\" href=\"' + c.url.replace(\"api.\", \"\").replace(\"repos/\", \"\") + '#readme\"\u003eRead More\u003c/a\u003e\u003c/p\u003e \u003cp class=\"link github-homepage\"\u003e\u003c/p\u003e \u003c/div\u003e \u003cdiv class=\"github-box-download\"\u003e \u003cp class=\"updated\"\u003eLatest commit to the \u003cstrong\u003emaster\u003c/strong\u003e branch on ' + e + '\u003c/p\u003e \u003ca rel=\"nofollow\" target=\"_blank\" class=\"download\" href=\"' + c.html_url + '/archive/' + c.default_branch + '.zip\"\u003eDownload as zip\u003c/a\u003e \u003c/div\u003e \u003c/div\u003e ');\n if (c.homepage != null) {\n homepage = (c.homepage.indexOf('http') != 0  ? 'http://' + c.homepage : c.homepage);\n $('.github-homepage', f).html($('\u003ca rel=\"nofollow\" target=\"_blank\" href=\"' + homepage + '\"\u003e' + c.homepage + '\u003c/a\u003e'))\n };\n b.replaceWith(f);\n }\n });\n },\n a: 0,\n initializeGithubWidget: function(widget) {\n if (this.a == 0) $(\"head\").append('\u003cstyle type=\"text/css\"\u003e.github-box{font-family:helvetica,arial,sans-serif;font-size:13px;line-height:18px;background:#fafafa;border:1px solid #ddd;color:#666;border-radius:3px}.github-box a{color:#4183c4;border:0;text-decoration:none}.github-box .github-box-title{position:relative;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;background:#fcfcfc;background:-moz-linear-gradient(#fcfcfc,#ebebeb);background:-webkit-linear-gradient(#fcfcfc,#ebebeb);}.github-box .github-box-title h3{font-family:helvetica,arial,sans-serif;font-weight:normal;font-size:16px;color:gray;margin:0;padding:10px 10px 10px 30px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAXCAMAAAAx3e/WAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQjIyNkJERkM0NjYxMUUxOEFDQzk3ODcxRDkzRjhCRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQjIyNkJFMEM0NjYxMUUxOEFDQzk3ODcxRDkzRjhCRSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRCMjI2QkREQzQ2NjExRTE4QUNDOTc4NzFEOTNGOEJFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRCMjI2QkRFQzQ2NjExRTE4QUNDOTc4NzFEOTNGOEJFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dka2KgAAAEVQTFRFxMTEyMjI0tLSvb29vr6+zc3Ny8vLxcXFz8/P6enp3t7ex8fH0dHR1NTUw8PDwMDAzs7OvLy8wcHBu7u7v7+/zMzM////budQFwAAABd0Uk5T/////////////////////////////wDmQOZeAAAAcklEQVR42tSQSQ7DMAwD6chOukWs5eX/Ty2coo0T9wOdEzEgdRBuzNmnDofgja52JDyz5TCqUp0O6kfrb4bzSXkRiTviEZZ6JKLMJ5VQ2v8iGbtbfEwXmjFMG0VwdQo10hQNxYqtLMv9O6xvpZ/QeAkwAKjwHiJLaJc3AAAAAElFTkSuQmCC) 7px center no-repeat}.github-box .github-box-title h3 .repo{font-weight:bold}.github-box .github-box-title .github-stats{position:absolute;top:8px;right:10px;background:white;border:1px solid #ddd;border-radius:3px;font-size:11px;font-weight:bold;line-height:21px;height:21px}.github-box .github-box-title .github-stats a{display:inline-block;height:21px;color:#666;padding:0 5px 0 18px;background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAqCAMAAACEJ4viAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQjIyNkJEQkM0NjYxMUUxOEFDQzk3ODcxRDkzRjhCRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQjIyNkJEQ0M0NjYxMUUxOEFDQzk3ODcxRDkzRjhCRSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRCMjI2QkQ5QzQ2NjExRTE4QUNDOTc4NzFEOTNGOEJFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRCMjI2QkRBQzQ2NjExRTE4QUNDOTc4NzFEOTNGOEJFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+h1kA9gAAAK5QTFRF+fn5sbGx8fHx09PTmpqa2dnZ/f3919fX9PT00NDQ1dXVpKSk+vr6+/v7vb298vLyycnJ8/PztLS0zc3N6enp/v7+q6ur2NjY9/f3srKy/Pz8p6en7u7uoaGhnJyc4eHhtbW1pqam6Ojo9fX17e3toqKirKys1NTUzs7Ox8fHwcHBwMDA5eXlnZ2dpaWl0dHR9vb25ubm4uLi3d3dqqqqwsLCv7+/oKCgmZmZ////8yEsbwAAAMBJREFUeNrE0tcOgjAUBuDSliUoMhTEvfdef9//xUQjgaLX0Ium/ZLT/+SkRPxZpGykvuf5VMJogy5jY9yjDHcWFhqlcRuHc4o6B1QK0BDg+hcZgNDh3NWTwzItH/bRrhvT+g3zSxZkNGCZpoWGIbU0a3Y6zV5VA6keyeDxiw62P0gUqEW0FbDim4nVikFJbU2zZXybUEaxhCqOQqyh5/G0wpWICUwthyqwD4InOMuXJ7/gs7WkoPdVg1vykF8CDACEFanKO3aSYwAAAABJRU5ErkJggg==) no-repeat}.github-box .github-box-title .github-stats .watchers{border-right:1px solid #ddd}.github-box .github-box-title .github-stats .forks{background-position:-4px -21px;padding-left:15px}.github-box .github-box-content{padding:10px;font-weight:300}.github-box .github-box-content p{margin:0}.github-box .github-box-content .link{font-weight:bold}.github-box .github-box-download{position:relative;border-top:1px solid #ddd;background:white;border-radius:0 0 3px 3px;padding:10px;height:24px}.github-box .github-box-download .updated{margin:0;font-size:11px;color:#666;line-height:24px;font-weight:300}.github-box .github-box-download .updated strong{font-weight:bold;color:#000}.github-box .github-box-download .download{position:absolute;display:block;top:10px;right:10px;height:24px;line-height:24px;font-size:12px;color:#666;font-weight:bold;text-shadow:0 1px 0 rgba(255,255,255,0.9);padding:0 10px;border:1px solid #ddd;border-bottom-color:#bbb;border-radius:3px;background:#f5f5f5;background:-moz-linear-gradient(#f5f5f5,#e5e5e5);background:-webkit-linear-gradient(#f5f5f5,#e5e5e5);}.github-box .github-box-download .download:hover{color:#527894;border-color:#cfe3ed;border-bottom-color:#9fc7db;background:#f1f7fa;background:-moz-linear-gradient(#f1f7fa,#dbeaf1);background:-webkit-linear-gradient(#f1f7fa,#dbeaf1);\u003c/style\u003e');\n this.a++;\n var b = $(widget);\n var c = b.data(\"repo\");\n var url = \"https://api.github.com/repos/\" + c;\n this.fetchGithubData(b, url);\n }\n};\n\n$(\".github-widget\").each(function() {\n githubWidgetLoader.initializeGithubWidget(this);\n});\n/*!\n * clipboard.js v1.5.3\n * https://zenorocha.github.io/clipboard.js\n *\n * Licensed MIT © Zeno Rocha\n */\n(function(f){if(typeof exports===\"object\"\u0026\u0026typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"\u0026\u0026define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"\u0026\u0026require;if(!u\u0026\u0026a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"\u0026\u0026require;for(var o=0;o\u003cr.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\nvar matches = require('matches-selector')\n\nmodule.exports = function (element, selector, checkYoSelf) {\n var parent = checkYoSelf ? element : element.parentNode\n\n while (parent \u0026\u0026 parent !== document) {\n if (matches(parent, selector)) return parent;\n parent = parent.parentNode\n }\n}\n\n},{\"matches-selector\":2}],2:[function(require,module,exports){\n\n/**\n * Element prototype.\n */\n\nvar proto = Element.prototype;\n\n/**\n * Vendor function.\n */\n\nvar vendor = proto.matchesSelector\n || proto.webkitMatchesSelector\n || proto.mozMatchesSelector\n || proto.msMatchesSelector\n || proto.oMatchesSelector;\n\n/**\n * Expose `match()`.\n */\n\nmodule.exports = match;\n\n/**\n * Match `el` to `selector`.\n *\n * @param {Element} el\n * @param {String} selector\n * @return {Boolean}\n * @api public\n */\n\nfunction match(el, selector) {\n if (vendor) return vendor.call(el, selector);\n var nodes = el.parentNode.querySelectorAll(selector);\n for (var i = 0; i \u003c nodes.length; ++i) {\n if (nodes[i] == el) return true;\n }\n return false;\n}\n},{}],3:[function(require,module,exports){\nvar closest = require('closest');\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction delegate(element, selector, type, callback) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn);\n }\n }\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n var delegateTarget = closest(e.target, selector, true);\n\n if (delegateTarget) {\n Object.defineProperty(e, 'target', {\n value: delegateTarget\n });\n\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n},{\"closest\":1}],4:[function(require,module,exports){\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n \u0026\u0026 value instanceof HTMLElement\n \u0026\u0026 value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n \u0026\u0026 (type === '[object NodeList]' || type === '[object HTMLCollection]')\n \u0026\u0026 ('length' in value)\n \u0026\u0026 (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.function = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n},{}],5:[function(require,module,exports){\nvar is = require('./is');\nvar delegate = require('delegate');\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target \u0026\u0026 !type \u0026\u0026 !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.function(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n},{\"./is\":4,\"delegate\":3}],6:[function(require,module,exports){\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n element.select();\n\n selectedText = element.value;\n }\n else {\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n},{}],7:[function(require,module,exports){\nfunction E () {\n\t// Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n\ton: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i \u003c len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts \u0026\u0026 callback) {\n for (var i = 0, len = evts.length; i \u003c len; i++) {\n if (evts[i].fn !== callback \u0026\u0026 evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n\n},{}],8:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i \u003c props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj \u0026\u0026 obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _select = require('select');\n\nvar _select2 = _interopRequireDefault(_select);\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar ClipboardAction = (function () {\n /**\n * @param {Object} options\n */\n\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n ClipboardAction.prototype.resolveOptions = function resolveOptions() {\n var options = arguments.length \u003c= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.action = options.action;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n };\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n ClipboardAction.prototype.initSelection = function initSelection() {\n if (this.text \u0026\u0026 this.target) {\n throw new Error('Multiple attributes declared, use either \"target\" or \"text\"');\n } else if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n } else {\n throw new Error('Missing required attributes, use either \"target\" or \"text\"');\n }\n };\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n ClipboardAction.prototype.selectFake = function selectFake() {\n var _this = this;\n\n this.removeFake();\n\n this.fakeHandler = document.body.addEventListener('click', function () {\n return _this.removeFake();\n });\n\n this.fakeElem = document.createElement('textarea');\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style.left = '-9999px';\n this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + 'px';\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n document.body.appendChild(this.fakeElem);\n\n this.selectedText = _select2['default'](this.fakeElem);\n this.copyText();\n };\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n ClipboardAction.prototype.removeFake = function removeFake() {\n if (this.fakeHandler) {\n document.body.removeEventListener('click');\n this.fakeHandler = null;\n }\n\n if (this.fakeElem) {\n document.body.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n };\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n ClipboardAction.prototype.selectTarget = function selectTarget() {\n this.selectedText = _select2['default'](this.target);\n this.copyText();\n };\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n ClipboardAction.prototype.copyText = function copyText() {\n var succeeded = undefined;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n };\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n ClipboardAction.prototype.handleResult = function handleResult(succeeded) {\n if (succeeded) {\n this.emitter.emit('success', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n } else {\n this.emitter.emit('error', {\n action: this.action,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n };\n\n /**\n * Removes current selection and focus from `target` element.\n */\n\n ClipboardAction.prototype.clearSelection = function clearSelection() {\n if (this.target) {\n this.target.blur();\n }\n\n window.getSelection().removeAllRanges();\n };\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n /**\n * Destroy lifecycle.\n */\n\n ClipboardAction.prototype.destroy = function destroy() {\n this.removeFake();\n };\n\n _createClass(ClipboardAction, [{\n key: 'action',\n set: function set() {\n var action = arguments.length \u003c= 0 || arguments[0] === undefined ? 'copy' : arguments[0];\n\n this._action = action;\n\n if (this._action !== 'copy' \u0026\u0026 this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n },\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target \u0026\u0026 typeof target === 'object' \u0026\u0026 target.nodeType === 1) {\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n },\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n})();\n\nexports['default'] = ClipboardAction;\nmodule.exports = exports['default'];\n\n},{\"select\":6}],9:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj \u0026\u0026 obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' \u0026\u0026 superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass \u0026\u0026 superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _clipboardAction = require('./clipboard-action');\n\nvar _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\nvar _tinyEmitter = require('tiny-emitter');\n\nvar _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\nvar _goodListener = require('good-listener');\n\nvar _goodListener2 = _interopRequireDefault(_goodListener);\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\nvar Clipboard = (function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n _Emitter.call(this);\n\n this.resolveOptions(options);\n this.listenClick(trigger);\n }\n\n /**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n Clipboard.prototype.resolveOptions = function resolveOptions() {\n var options = arguments.length \u003c= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n };\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n Clipboard.prototype.listenClick = function listenClick(trigger) {\n var _this = this;\n\n this.listener = _goodListener2['default'](trigger, 'click', function (e) {\n return _this.onClick(e);\n });\n };\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n Clipboard.prototype.onClick = function onClick(e) {\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2['default']({\n action: this.action(e.target),\n target: this.target(e.target),\n text: this.text(e.target),\n trigger: e.target,\n emitter: this\n });\n };\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n Clipboard.prototype.defaultAction = function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n };\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n Clipboard.prototype.defaultTarget = function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n };\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n\n Clipboard.prototype.defaultText = function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n };\n\n /**\n * Destroy lifecycle.\n */\n\n Clipboard.prototype.destroy = function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n };\n\n return Clipboard;\n})(_tinyEmitter2['default']);\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\nexports['default'] = Clipboard;\nmodule.exports = exports['default'];\n\n},{\"./clipboard-action\":8,\"good-listener\":5,\"tiny-emitter\":7}]},{},[9])(9)\n});\n\n\n\n\nfunction setPreviewPaneHeight(target) {\n var header = target.find('.header');\n var body = target.find('.preview-body');\n var height = target.outerHeight() - header.outerHeight();\n body.css('height', height + 'px');\n}\n\n// mobile bottom bar\nvar actionBar = {\n initialized: false,\n bar: $('.project-actions-bar'),\n lastScrollTop: 0,\n toggle: function() {\n if (!this.initialized \u0026\u0026 this.bar.parent().is(':visible')) {\n this.initialized = true;\n this.bar.slideDown();\n window.addEventListener('scroll', function() {\n var st = window.pageYOffset || document.documentElement.scrollTop;\n if (st \u003e this.lastScrollTop) {\n // going down\n if (this.bar.is(':visible'))\n this.bar.slideUp();\n this.lastScrollTop = st;\n } else if ((st + 80) \u003c this.lastScrollTop) { // give 80 padding\n // going up\n if (!this.bar.is(':visible'))\n this.bar.slideDown();\n this.lastScrollTop = st;\n }\n }.bind(this));\n }\n }\n};\n\nfunction showProjectSignupBar(projectId, typeIds) {\n var type = Cookies.get('projectSignupBarType');\n var count, typeId;\n\n if (type) {\n count = Cookies.get('projectSignupBarCount');\n count = parseInt(count) + 1;\n Cookies.set('projectSignupBarCount', count);\n } else {\n var idx = getRandomIntInclusive(0, 1);\n type = ['channel', 'part'][idx];\n count = 1;\n Cookies.set('projectSignupBarType', type, { expires: 1 });\n Cookies.set('projectSignupBarCount', count, { expires: 1 });\n }\n\n var el = document.querySelector('.project-signup-bar.' + type);\n if (el) {\n var ohm = window.HAnalytics \u0026\u0026 window.HAnalytics.keenService ? window.HAnalytics.keenService : null;\n\n if (ohm) {\n ohm.recordEvent({eventName: 'Sign up prompt shown'});\n\n // Fetch the anchor and fire a ohm event when clicked.\n var ctaButton = el.querySelector('.reactPortal');\n if (ctaButton) {\n ctaButton.addEventListener('click', function() {\n ohm.recordEvent({eventName: 'Sign up prompt clicked'});\n });\n }\n }\n // Show the signup bar.\n el.style.display = 'block';\n el.classList.add('project-signup-bar-show');\n el.classList.remove('project-signup-bar-hide');\n }\n}\n\n// fires as soon as jquery is ready\n$(function() {\n affixer.init();\n\n $('.project-page').resize(window.lodashDebounce(function(){\n if (affixer.initialized) affixer.reInit();\n actionBar.toggle();\n $('.related-projects.affixable').width($('.project-page .right-column').width());\n }, 100));\n\n $('.project-page').on('click', 'a.scroll', function(e){\n e.preventDefault();\n target = $($(this).data('target'));\n offsetTop = $(this).data('offset') || 0;\n smoothScrollTo(target, offsetTop);\n });\n});\n\n// fire after everything else is loaded\n$(window).on(\"load\", function() {\n actionBar.toggle();\n\n $('.hljs-active \u003e pre').each(function(i, block) {\n window.hljs.highlightBlock(block);\n });\n\n // handles copying code snippets with clipboard plugin\n new Clipboard('.project-code-widget .copy-code', {\n target: function(trigger) {\n var widget = $(trigger).closest('.preview-pane');\n var code = widget.find('pre')[0];\n return code;\n }\n })\n .on('success', function(e) {\n var trigger = $(e.trigger);\n trigger.tooltip('destroy');\n trigger.attr('title', 'Copied!');\n trigger.tooltip({\n trigger: 'manual'\n }).tooltip('show');\n window.setTimeout(function(){\n trigger.tooltip('destroy');\n trigger.attr('title', 'Copy the code');\n }, 1500);\n trigger.blur();\n\n e.clearSelection();\n })\n .on('error', function(e) {\n var trigger = $(e.trigger);\n var parent = trigger.parent();\n trigger.tooltip('hide');\n parent.tooltip({\n title: 'Press CTRL+C to copy',\n trigger: 'manual',\n placement: 'top',\n container: 'body',\n }).tooltip('show');\n window.setTimeout(function(){\n parent.tooltip('destroy');\n }, 1500);\n trigger.blur();\n });\n\n $('.project-code-widget .tabs a').on('click', function(e){\n var container = $(this).closest('.project-code-widget');\n container.find('.tabs li, .preview-pane').removeClass('active');\n\n $(this).parent().addClass('active');\n var target = $($(this).data('target'));\n target.addClass('active');\n\n setPreviewPaneHeight(target);\n });\n\n var codeWidget = $('.project-code-widget');\n if (codeWidget.length) {\n if (codeWidget.hasClass('single-file') \u0026\u0026 codeWidget.hasClass('no-preview')) {\n var header = codeWidget.find('.header');\n codeWidget.css('height', header.outerHeight() + 'px');\n affixer.init();\n } else if (codeWidget.find('.preview-pane').length) {\n setPreviewPaneHeight(codeWidget.find('.preview-pane').first());\n }\n }\n\n // When project is loaded in a iframe, we can use this message event to pass data to the parent window.\n // postMessage does not get called unless in an iframe.\n (function() {\n if (!window.frameElement) return;\n\n var postNodeDims = function(node) {\n var dims = node.getBoundingClientRect();\n window.parent.postMessage({\n source: 'hster-project-iframe',\n payload: {\n main: { height: dims.height }\n }\n }, '*');\n };\n\n var resizeNode = document.querySelector('.project-page');\n if (resizeNode) {\n // We're forced to use jQuery resize here since everything on the project page is also using it. The fn halts the\n // event from bubbling up to the window it seems.\n $(resizeNode).resize(function() {\n postNodeDims(resizeNode);\n });\n postNodeDims(resizeNode);\n }\n })();\n});\n"]}