{"version":3,"file":"js/custom-32d50967965d4db1670c.js","mappings":"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","sources":["webpack://dash/./app/javascript/custom/halftone.js","webpack://dash/./app/javascript/custom/search.js","webpack://dash/./app/javascript/custom/preload.js","webpack://dash/./app/javascript/custom/nav.js","webpack://dash/./app/javascript/packs/custom.js","webpack://dash/./app/javascript/custom/index.js","webpack://dash/./app/javascript/custom/section.js","webpack://dash/./app/javascript/custom/command.js"],"sourcesContent":["/*!\n * Breathing Halftone\n * Images go whoa with lots of floaty dots\n * http://breathing-halftone.desandro.com\n */\n\nexport default function halftone() {\n (function(window) {\n \"use strict\";\n\n // ----- vars ----- //\n\n window.isAnimated = true;\n var Halftone = (window.BreathingHalftone = window.BreathingHalftone || {});\n\n // -------------------------- Vector -------------------------- //\n\n function Vector(x, y) {\n this.set(x || 0, y || 0);\n }\n\n Vector.prototype.set = function(x, y) {\n this.x = x;\n this.y = y;\n };\n\n Vector.prototype.add = function(v) {\n this.x += v.x;\n this.y += v.y;\n };\n\n Vector.prototype.subtract = function(v) {\n this.x -= v.x;\n this.y -= v.y;\n };\n\n Vector.prototype.scale = function(s) {\n this.x *= s;\n this.y *= s;\n };\n\n Vector.prototype.multiply = function(v) {\n this.x *= v.x;\n this.y *= v.y;\n };\n\n // custom getter whaaaaaaat\n Object.defineProperty(Vector.prototype, \"magnitude\", {\n get: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n });\n\n // ----- class functions ----- //\n\n Vector.subtract = function(a, b) {\n return new Vector(a.x - b.x, a.y - b.y);\n };\n\n Vector.add = function(a, b) {\n return new Vector(a.x + b.x, a.y + b.y);\n };\n\n Vector.copy = function(v) {\n return new Vector(v.x, v.y);\n };\n\n Halftone.Vector = Vector;\n })(window);\n\n (function(window) {\n \"use strict\";\n\n // ----- vars ----- //\n\n var TAU = Math.PI * 2;\n\n function getNow() {\n return new Date();\n }\n\n // -------------------------- -------------------------- //\n\n var Halftone = window.BreathingHalftone || {};\n var Vector = Halftone.Vector;\n\n // -------------------------- Particle -------------------------- //\n\n function Particle(properties) {\n this.channel = properties.channel;\n this.origin = properties.origin;\n this.parent = properties.parent;\n this.friction = properties.friction;\n\n this.position = Vector.copy(this.origin);\n this.velocity = new Vector();\n this.acceleration = new Vector();\n\n this.naturalSize = properties.naturalSize;\n this.size = 0;\n this.sizeVelocity = 0;\n this.oscSize = 0;\n this.initSize = 0;\n this.initSizeVelocity =\n (Math.random() * 0.5 + 0.5) * this.parent.options.initVelocity;\n\n this.oscillationOffset = Math.random() * TAU;\n this.oscillationMagnitude = Math.random();\n // this.isVisible = false;\n this.isVisible = true;\n }\n\n Particle.prototype.applyForce = function(force) {\n this.acceleration.add(force);\n };\n\n Particle.prototype.update = function() {\n // stagger starting\n if (!this.isVisible && Math.random() > 0.03) {\n return;\n }\n this.isVisible = true;\n\n this.applyOriginAttraction();\n\n // velocity\n this.velocity.add(this.acceleration);\n this.velocity.scale(1 - this.friction);\n // position\n this.position.add(this.velocity);\n // reset acceleration\n this.acceleration.set(0, 0);\n\n this.calculateSize();\n };\n\n Particle.prototype.render = function(ctx) {\n var size = this.size; //* this.oscSize;\n // apply initSize with easing\n var initSize = Math.cos((this.initSize * TAU) / 2) * -0.5 + 0.5;\n size *= initSize;\n size = Math.max(0, size);\n\n ctx.beginPath();\n ctx.arc(this.position.x, this.position.y, size, 0, TAU);\n ctx.fill();\n ctx.closePath();\n };\n\n Particle.prototype.calculateSize = function() {\n if (this.initSize !== 1) {\n this.initSize += this.initSizeVelocity;\n this.initSize = Math.min(1, this.initSize);\n }\n\n var targetSize = this.naturalSize * this.getChannelValue();\n\n // use accel/velocity to smooth changes in size\n var sizeAcceleration = (targetSize - this.size) * 0.1;\n this.sizeVelocity += sizeAcceleration;\n // friction\n this.sizeVelocity *= 1 - 0.3;\n this.size += this.sizeVelocity;\n\n // oscillation size\n var now = getNow();\n var opts = this.parent.options;\n var oscSize = (now / (1000 * opts.oscPeriod)) * TAU;\n oscSize = Math.cos(oscSize + this.oscillationOffset);\n oscSize = oscSize * opts.oscAmplitude + 1;\n this.oscSize = oscSize;\n };\n\n Particle.prototype.getChannelValue = function() {\n var channelValue;\n // return origin channel value if not lens\n var position = this.parent.options.isChannelLens\n ? this.position\n : this.origin;\n if (this.parent.options.isChannelLens) {\n channelValue = this.parent.getPixelChannelValue(\n position.x,\n position.y,\n this.channel\n );\n } else {\n if (!this.originChannelValue) {\n this.originChannelValue = this.parent.getPixelChannelValue(\n position.x,\n position.y,\n this.channel\n );\n }\n channelValue = this.originChannelValue;\n }\n\n return channelValue;\n };\n\n Particle.prototype.applyOriginAttraction = function() {\n var attraction = Vector.subtract(this.position, this.origin);\n attraction.scale(-0.02);\n this.applyForce(attraction);\n };\n\n Halftone.Particle = Particle;\n })(window);\n\n (function(window) {\n \"use strict\";\n\n // ----- vars ----- //\n\n var TAU = Math.PI * 2;\n var ROOT_2 = Math.sqrt(2);\n\n // ----- helpers ----- //\n\n var objToString = Object.prototype.toString;\n var isArray =\n Array.isArray ||\n function(obj) {\n return objToString.call(obj) === \"[object Array]\";\n };\n\n // extend objects\n function extend(a, b, isDeep) {\n for (var prop in b) {\n var value = b[prop];\n if (isDeep && typeof value === \"object\" && !isArray(value)) {\n // deep extend\n a[prop] = extend(a[prop] || {}, value, true);\n } else {\n a[prop] = value;\n }\n }\n return a;\n }\n\n function insertAfter(elem, afterElem) {\n var parent = afterElem.parentNode;\n var nextElem = afterElem.nextElementSibling;\n if (nextElem) {\n parent.insertBefore(elem, nextElem);\n } else {\n parent.appendChild(elem);\n }\n }\n\n // -------------------------- supports -------------------------- //\n\n var supports = {};\n\n (function() {\n // check canvas support\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext && canvas.getContext(\"2d\");\n supports.canvas = !!ctx;\n if (!supports.canvas) {\n return;\n }\n\n // check darker composite support\n canvas.width = 1;\n canvas.height = 1;\n ctx.globalCompositeOperation = \"darker\";\n ctx.fillStyle = \"#F00\";\n ctx.fillRect(0, 0, 1, 1);\n ctx.fillStyle = \"#999\";\n ctx.fillRect(0, 0, 1, 1);\n var imgData = ctx.getImageData(0, 0, 1, 1).data;\n supports.darker = imgData[0] === 153 && imgData[1] === 0;\n })();\n\n // -------------------------- requestAnimationFrame -------------------------- //\n\n // https://gist.github.com/1866474\n\n var lastTime = 0;\n var prefixes = \"webkit moz ms o\".split(\" \");\n // get unprefixed rAF and cAF, if present\n var requestAnimationFrame = window.requestAnimationFrame;\n var cancelAnimationFrame = window.cancelAnimationFrame;\n // loop through vendor prefixes and get prefixed rAF and cAF\n var prefix;\n for (var i = 0; i < prefixes.length; i++) {\n if (requestAnimationFrame && cancelAnimationFrame) {\n break;\n }\n prefix = prefixes[i];\n requestAnimationFrame =\n requestAnimationFrame || window[prefix + \"RequestAnimationFrame\"];\n cancelAnimationFrame =\n cancelAnimationFrame ||\n window[prefix + \"CancelAnimationFrame\"] ||\n window[prefix + \"CancelRequestAnimationFrame\"];\n }\n\n // fallback to setTimeout and clearTimeout if either request/cancel is not supported\n if (!requestAnimationFrame || !cancelAnimationFrame) {\n requestAnimationFrame = function(callback) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = setTimeout(function() {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n cancelAnimationFrame = function(id) {\n clearTimeout(id);\n };\n }\n\n // -------------------------- -------------------------- //\n\n var _Halftone = window.BreathingHalftone || {};\n var Vector = _Halftone.Vector;\n var Particle = _Halftone.Particle;\n\n // -------------------------- BreathingHalftone -------------------------- //\n\n function Halftone(img, options) {\n // set options\n this.options = extend({}, this.constructor.defaults, true);\n extend(this.options, options, true);\n\n this.img = img;\n // bail if canvas is not supported\n if (!supports.canvas) {\n return;\n }\n\n this.create();\n this.isAnimated = true;\n\n // stop running animation after 3 seconds\n var self = this;\n setTimeout(function() {\n self.isAnimated = false;\n }, 3500);\n }\n\n Halftone.defaults = {\n // dot size\n dotSize: 1 / 40,\n dotSizeThreshold: 0.05,\n initVelocity: 0.02,\n oscPeriod: 3,\n oscAmplitude: 0.2,\n // layout and color\n isAdditive: false,\n isRadial: false,\n channels: [\"red\", \"green\", \"blue\"],\n isChannelLens: true,\n // behavoir\n friction: 0.06,\n hoverDiameter: 0.3,\n hoverForce: -0.02,\n activeDiameter: 0.6,\n activeForce: 0.01\n };\n\n function makeCanvasAndCtx() {\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n return {\n canvas: canvas,\n ctx: ctx\n };\n }\n\n Halftone.prototype.create = function() {\n this.isActive = true;\n\n // create main canvas\n var canvasAndCtx = makeCanvasAndCtx();\n this.canvas = canvasAndCtx.canvas;\n this.ctx = canvasAndCtx.ctx;\n // copy over class\n this.canvas.className = this.img.className;\n insertAfter(this.canvas, this.img);\n // hide img visually\n this.img.style.visibility = \"hidden\";\n\n // fall back to lum channel if subtractive and darker isn't supported\n this.channels =\n !this.options.isAdditive && !supports.darker\n ? [\"lum\"]\n : this.options.channels;\n\n // create separate canvases for each color\n this.proxyCanvases = {};\n for (var i = 0, len = this.channels.length; i < len; i++) {\n var channel = this.channels[i];\n this.proxyCanvases[channel] = makeCanvasAndCtx();\n }\n\n this.loadImage();\n\n // properties\n this.canvasPosition = new Vector();\n this.getCanvasPosition();\n // hash of mouse / touch events\n this.cursors = {};\n // position -100,000, -100,000 so its not on screen\n this.addCursor(\"mouse\", { pageX: -1e5, pageY: -1e5 });\n\n this.bindEvents();\n };\n\n Halftone.prototype.getCanvasPosition = function() {\n var rect = this.canvas.getBoundingClientRect();\n var x = rect.left + window.pageXOffset;\n var y = rect.top + window.pageYOffset;\n this.canvasPosition.set(x, y);\n this.canvasScale = this.width ? this.width / this.canvas.offsetWidth : 1;\n };\n\n // -------------------------- img -------------------------- //\n\n Halftone.prototype.loadImage = function() {\n // hack img load\n var src = this.img.getAttribute(\"data-src\") || this.img.src;\n var loadingImg = new Image();\n loadingImg.onload = function() {\n this.onImgLoad();\n }.bind(this);\n loadingImg.src = src;\n // set src on image, so we can get correct sizes\n if (this.img.src !== src) {\n this.img.src = src;\n }\n };\n\n Halftone.prototype.onImgLoad = function() {\n this.getImgData();\n this.resizeCanvas();\n this.getCanvasPosition();\n // hide image completely\n this.img.style.display = \"none\";\n this.getCanvasPosition();\n this.initParticles();\n this.animate();\n };\n\n Halftone.prototype.getImgData = function() {\n // get imgData\n var canvasAndCtx = makeCanvasAndCtx();\n var imgCanvas = canvasAndCtx.canvas;\n var ctx = canvasAndCtx.ctx;\n this.imgWidth = imgCanvas.width = this.img.naturalWidth;\n this.imgHeight = imgCanvas.height = this.img.naturalHeight;\n ctx.drawImage(this.img, 0, 0);\n this.imgData = ctx.getImageData(0, 0, this.imgWidth, this.imgHeight).data;\n };\n\n Halftone.prototype.resizeCanvas = function() {\n // width & height\n var w = (this.width = this.img.offsetWidth);\n var h = (this.height = this.img.offsetHeight);\n // size properties\n this.diagonal = Math.sqrt(w * w + h * h);\n this.imgScale = this.width / this.imgWidth;\n this.gridSize = this.options.dotSize * this.diagonal;\n\n // set proxy canvases size\n for (var prop in this.proxyCanvases) {\n var proxy = this.proxyCanvases[prop];\n proxy.canvas.width = w;\n proxy.canvas.height = h;\n }\n this.canvas.width = w;\n this.canvas.height = h;\n };\n\n Halftone.prototype.initParticles = function() {\n var getParticlesMethod = this.options.isRadial\n ? \"getRadialGridParticles\"\n : \"getCartesianGridParticles\";\n\n // all particles\n this.particles = [];\n // separate array of particles for each color\n this.channelParticles = {};\n\n var angles = { red: 1, green: 2.5, blue: 5, lum: 4 };\n\n for (var i = 0, len = this.channels.length; i < len; i++) {\n var channel = this.channels[i];\n var angle = angles[channel];\n var particles = this[getParticlesMethod](channel, angle);\n // associate with channel\n this.channelParticles[channel] = particles;\n // add to all collection\n this.particles = this.particles.concat(particles);\n }\n };\n\n Halftone.prototype.animate = function() {\n // do not animate if not active\n if (!this.isActive || !this.isAnimated) {\n return;\n }\n this.update();\n this.render();\n requestAnimationFrame(this.animate.bind(this));\n };\n\n Halftone.prototype.update = function() {\n // displace particles with cursors (mouse, touches)\n\n for (var i = 0, len = this.particles.length; i < len; i++) {\n var particle = this.particles[i];\n // apply forces for each cursor\n for (var identifier in this.cursors) {\n var cursor = this.cursors[identifier];\n var cursorState = cursor.isDown ? \"active\" : \"hover\";\n var forceScale = this.options[cursorState + \"Force\"];\n var diameter = this.options[cursorState + \"Diameter\"];\n var radius = (diameter / 2) * this.diagonal;\n var force = Vector.subtract(particle.position, cursor.position);\n var distanceScale = Math.max(0, radius - force.magnitude) / radius;\n // easeInOutSine\n distanceScale = Math.cos(distanceScale * Math.PI) * -0.5 + 0.5;\n force.scale(distanceScale * forceScale);\n particle.applyForce(force);\n }\n\n particle.update();\n }\n };\n\n Halftone.prototype.render = function() {\n // clear\n this.ctx.globalCompositeOperation = \"source-over\";\n this.ctx.fillStyle = this.options.isAdditive ? \"black\" : \"white\";\n this.ctx.fillRect(0, 0, this.width, this.height);\n\n // composite grids\n this.ctx.globalCompositeOperation = this.options.isAdditive\n ? \"lighter\"\n : \"darker\";\n\n // render channels\n for (var i = 0, len = this.channels.length; i < len; i++) {\n var channel = this.channels[i];\n this.renderGrid(channel);\n }\n };\n var colorDOM = $(\".js-main\")[0];\n var dynamicColor = \"#F9D568\";\n if (colorDOM) {\n dynamicColor = colorDOM.dataset.color;\n }\n\n var channelFillStyles = {\n additive: {\n red: \"#FF0000\",\n green: \"#00FF00\",\n blue: \"#0000FF\",\n // lum: '#FFF'\n lum: dynamicColor\n },\n subtractive: {\n red: \"#00FFFF\",\n green: \"#FF00FF\",\n blue: \"#FFFF00\",\n lum: \"#000\"\n }\n };\n\n Halftone.prototype.renderGrid = function(channel) {\n var proxy = this.proxyCanvases[channel];\n // clear\n proxy.ctx.fillStyle = this.options.isAdditive ? \"black\" : \"white\";\n proxy.ctx.fillRect(0, 0, this.width, this.height);\n\n // set fill color\n var blend = this.options.isAdditive ? \"additive\" : \"subtractive\";\n proxy.ctx.fillStyle = channelFillStyles[blend][channel];\n\n // render particles\n var particles = this.channelParticles[channel];\n for (var i = 0, len = particles.length; i < len; i++) {\n var particle = particles[i];\n particle.render(proxy.ctx);\n }\n\n // draw proxy canvas to actual canvas as whole layer\n this.ctx.drawImage(proxy.canvas, 0, 0);\n };\n\n Halftone.prototype.getCartesianGridParticles = function(channel, angle) {\n var particles = [];\n\n var w = this.width;\n var h = this.height;\n\n var diag = Math.max(w, h) * ROOT_2;\n\n var gridSize = this.gridSize;\n var cols = Math.ceil(diag / gridSize);\n var rows = Math.ceil(diag / gridSize);\n\n for (var row = 0; row < rows; row++) {\n for (var col = 0; col < cols; col++) {\n var x1 = (col + 0.5) * gridSize;\n var y1 = (row + 0.5) * gridSize;\n // offset for diagonal\n x1 -= (diag - w) / 2;\n y1 -= (diag - h) / 2;\n // shift to center\n x1 -= w / 2;\n y1 -= h / 2;\n // rotate grid\n var x2 = x1 * Math.cos(angle) - y1 * Math.sin(angle);\n var y2 = x1 * Math.sin(angle) + y1 * Math.cos(angle);\n // shift back\n x2 += w / 2;\n y2 += h / 2;\n\n var particle = this.initParticle(channel, x2, y2);\n if (particle) {\n particles.push(particle);\n }\n }\n }\n\n return particles;\n };\n\n Halftone.prototype.getRadialGridParticles = function(channel, angle) {\n var particles = [];\n\n var w = this.width;\n var h = this.height;\n var diag = Math.max(w, h) * ROOT_2;\n\n var gridSize = this.gridSize;\n\n var halfW = w / 2;\n var halfH = h / 2;\n var offset = gridSize;\n var centerX = halfW + Math.cos(angle) * offset;\n var centerY = halfH + Math.sin(angle) * offset;\n\n var maxLevel = Math.ceil((diag + offset) / gridSize);\n\n for (var level = 0; level < maxLevel; level++) {\n var max = level * 6 || 1;\n for (var j = 0; j < max; j++) {\n var theta = (TAU * j) / max + angle;\n var x = centerX + Math.cos(theta) * level * gridSize;\n var y = centerY + Math.sin(theta) * level * gridSize;\n var particle = this.initParticle(channel, x, y);\n if (particle) {\n particles.push(particle);\n }\n }\n }\n\n return particles;\n };\n\n Halftone.prototype.initParticle = function(channel, x, y) {\n // don't render if coords are outside image\n // don't display if under threshold\n var pixelChannelValue = this.getPixelChannelValue(x, y, channel);\n if (pixelChannelValue < this.options.dotSizeThreshold) {\n return;\n }\n\n return new Particle({\n channel: channel,\n parent: this,\n origin: new Vector(x, y),\n naturalSize: (this.gridSize * ROOT_2) / 2,\n friction: this.options.friction\n });\n };\n\n var channelOffset = {\n red: 0,\n green: 1,\n blue: 2\n };\n\n Halftone.prototype.getPixelChannelValue = function(x, y, channel) {\n x = Math.round(x / this.imgScale);\n y = Math.round(y / this.imgScale);\n var w = this.imgWidth;\n var h = this.imgHeight;\n\n // return 0 if position is outside of image\n if (x < 0 || x > w || y < 0 || y > h) {\n return 0;\n }\n\n var pixelIndex = (x + y * w) * 4;\n var value;\n // return 1;\n if (channel === \"lum\") {\n value = this.getPixelLum(pixelIndex);\n } else {\n // rgb\n var index = pixelIndex + channelOffset[channel];\n value = this.imgData[index] / 255;\n }\n\n value = value || 0;\n if (!this.options.isAdditive) {\n value = 1 - value;\n }\n\n return value;\n };\n\n Halftone.prototype.getPixelLum = function(pixelIndex) {\n // thx @jfsiii\n // https://github.com/jfsiii/chromath/blob/master/src/chromath.js\n var r = this.imgData[pixelIndex + 0] / 255;\n var g = this.imgData[pixelIndex + 1] / 255;\n var b = this.imgData[pixelIndex + 2] / 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n return (max + min) / 2;\n };\n\n // ----- bindEvents ----- //\n\n Halftone.prototype.bindEvents = function() {\n // this.canvas.addEventListener( 'mousedown', this, false );\n // this.canvas.addEventListener( 'touchstart', this, false );\n // window.addEventListener( 'mousemove', this, false );\n // window.addEventListener( 'touchmove', this, false );\n // window.addEventListener( 'touchend', this, false );\n window.addEventListener(\"resize\", this, false);\n };\n\n Halftone.prototype.unbindEvents = function() {\n this.canvas.removeEventListener(\"mousedown\", this, false);\n this.canvas.removeEventListener(\"touchstart\", this, false);\n window.removeEventListener(\"mousemove\", this, false);\n window.removeEventListener(\"touchmove\", this, false);\n window.removeEventListener(\"touchend\", this, false);\n window.removeEventListener(\"resize\", this, false);\n };\n\n Halftone.prototype.handleEvent = function(event) {\n var method = \"on\" + event.type;\n if (this[method]) {\n this[method](event);\n }\n };\n\n Halftone.prototype.onmousedown = function(event) {\n event.preventDefault();\n this.cursors.mouse.isDown = true;\n window.addEventListener(\"mouseup\", this, false);\n };\n\n Halftone.prototype.ontouchstart = function(event) {\n event.preventDefault();\n for (var i = 0, len = event.changedTouches.length; i < len; i++) {\n var touch = event.changedTouches[i];\n var cursor = this.addCursor(touch.identifier, touch);\n cursor.isDown = true;\n }\n };\n\n /**\n * @param {MouseEvent or Touch} cursorEvent - with pageX and pageY\n */\n Halftone.prototype.addCursor = function(identifier, cursorEvent) {\n var position = this.setCursorPosition(cursorEvent);\n var cursor = (this.cursors[identifier] = {\n position: position,\n isDown: false\n });\n return cursor;\n };\n\n /**\n * @param {MouseEvent or Touch} cursorEvent - with pageX and pageY\n * @param {Vector} position - optional\n */\n Halftone.prototype.setCursorPosition = function(cursorEvent, position) {\n position = position || new Vector();\n position.set(cursorEvent.pageX, cursorEvent.pageY);\n position.subtract(this.canvasPosition);\n position.scale(this.canvasScale);\n return position;\n };\n\n Halftone.prototype.onmousemove = function(event) {\n this.setCursorPosition(event, this.cursors.mouse.position);\n };\n\n Halftone.prototype.ontouchmove = function(event) {\n // move matching cursors\n for (var i = 0, len = event.changedTouches.length; i < len; i++) {\n var touch = event.changedTouches[i];\n var cursor = this.cursors[touch.identifier];\n if (cursor) {\n this.setCursorPosition(touch, cursor.position);\n }\n }\n };\n\n Halftone.prototype.onmouseup = function() {\n this.cursors.mouse.isDown = false;\n window.removeEventListener(\"mouseup\", this, false);\n };\n\n Halftone.prototype.ontouchend = function(event) {\n // remove matching cursors\n for (var i = 0, len = event.changedTouches.length; i < len; i++) {\n var touch = event.changedTouches[i];\n var cursor = this.cursors[touch.identifier];\n if (cursor) {\n delete this.cursors[touch.identifier];\n }\n }\n };\n\n function debounceProto(_class, methodName, threshold) {\n // original method\n var method = _class.prototype[methodName];\n var timeoutName = methodName + \"Timeout\";\n\n _class.prototype[methodName] = function() {\n var timeout = this[timeoutName];\n if (timeout) {\n clearTimeout(timeout);\n }\n var args = arguments;\n\n this[timeoutName] = setTimeout(\n function() {\n method.apply(this, args);\n delete this[timeoutName];\n }.bind(this),\n threshold || 100\n );\n };\n }\n\n Halftone.prototype.onresize = function() {\n this.getCanvasPosition();\n };\n\n debounceProto(Halftone, \"onresize\", 200);\n\n // ----- destroy ----- //\n\n Halftone.prototype.destroy = function() {\n this.isActive = false;\n this.unbindEvents();\n\n this.img.style.visibility = \"\";\n this.img.style.display = \"\";\n this.canvas.parentNode.removeChild(this.canvas);\n };\n\n // -------------------------- -------------------------- //\n\n Halftone.Vector = Vector;\n Halftone.Particle = Particle;\n window.BreathingHalftone = Halftone;\n })(window);\n}\n","import { debounce } from \"debounce\";\nimport axios from \"axios\";\n\nexport default function() {\n var searchInput = $(\".js-search-input\")[0];\n var searchResults = $(\".js-search-results\")[0];\n var searchView = $(\".js-search-view\")[0];\n\n var init = function() {\n addEventListeners();\n };\n\n var getSearch = function(e) {\n var query = this.value;\n axios\n .get(\"/search\", {\n params: {\n query: query\n }\n })\n .then(function(response) {\n if (response && response.data && response.data.length > 0) {\n renderResults(response.data);\n } else {\n searchResults.classList.remove(\"is-visible\");\n }\n });\n };\n\n var renderResults = function(results) {\n console.log(results);\n searchResults.classList.add(\"is-visible\");\n searchView.innerHTML = \"\";\n results.forEach(result => {\n var tr = document.createElement(\"tr\");\n tr.classList.add(\"result__row\");\n tr.style.borderColor = result[4];\n\n var manual = document.createElement(\"td\");\n manual.innerHTML = result[3];\n manual.classList.add(\"result__rank\");\n\n var command = document.createElement(\"td\");\n command.classList.add(\"result__command\");\n\n var commandLink = document.createElement(\"a\");\n commandLink.href = `/${result[3]}/${result[1]}`;\n commandLink.innerHTML = result[1];\n command.appendChild(commandLink);\n\n var description = document.createElement(\"td\");\n description.innerHTML = result[2];\n description.classList.add(\"result__description\");\n\n tr.appendChild(manual);\n tr.appendChild(command);\n tr.appendChild(description);\n\n searchView.appendChild(tr);\n });\n };\n\n var addEventListeners = function() {\n searchInput.on(\"input\", debounce(getSearch, 400));\n };\n\n init();\n}\n","export default function() {\n document.addEventListener(\"DOMContentLoaded\", function() {\n setTimeout(function() {\n document.body.classList.remove(\"preload\");\n }, 350);\n\n // Hide Referenced By link until all commands online\n var refLinks = document.querySelectorAll('a[href=\"#referenced-by\"]');\n refLinks.forEach(function(link) {\n link.style.display = \"none\";\n });\n });\n}\n","export default function() {\n var navButton = $(\".js-nav-button\");\n var nav = $(\".js-nav-modal\")[0];\n var searchInput = $(\".js-search-input\")[0];\n\n var isOpen = false;\n\n var init = function() {\n addEventListeners();\n };\n\n var triggerNav = function(e) {\n e.preventDefault();\n\n if (isOpen) {\n document.body.classList.remove(\"is-open\");\n nav.classList.remove(\"is-open\");\n setTimeout(function() {\n nav.classList.remove(\"is-visible\");\n }, 400);\n isOpen = false;\n } else {\n document.body.classList.add(\"is-open\");\n nav.classList.add(\"is-open\");\n nav.classList.add(\"is-visible\");\n isOpen = true;\n setTimeout(() => {\n searchInput.focus();\n }, 400);\n }\n };\n\n var addEventListeners = function() {\n navButton.on(\"click\", triggerNav);\n };\n\n init();\n}\n","import preload from \"../custom/preload\";\nimport nav from \"../custom/nav\";\nimport search from \"../custom/search\";\nimport index from \"../custom/index\";\nimport section from \"../custom/section\";\nimport command from \"../custom/command\";\n\npreload();\nnav();\nsearch();\n\n// Page specific\nindex();\nsection();\ncommand();\n","import halftone from \"./halftone\";\n\nexport default function index() {\n if (document.body.classList.contains(\"index\")) {\n console.log(\"index\");\n\n var init = function() {\n var img = $(\".img\")[0];\n\n halftone();\n\n new BreathingHalftone(img, {\n dotSize: 1 / 60,\n isAdditive: true,\n channels: [\"lum\"],\n oscPeriod: 1,\n activeForce: 0,\n\n initVelocity: 0.01,\n // speed at which dots initially grow\n\n oscPeriod: 10,\n // duration in seconds of a cycle of dot size oscilliation or 'breathing'\n\n oscAmplitude: 0.1\n // percentage of change of oscillation\n // options...\n });\n\n addEventListeners();\n };\n\n var addEventListeners = function() {};\n\n init();\n }\n}\n","import halftone from \"./halftone\";\nimport WebFont from \"webfontloader\";\n\nexport default function() {\n if (document.body.classList.contains(\"section\")) {\n var init = function() {\n var url = window.location.href.replace(/\\/$/, \"\");\n var section = url.substr(url.lastIndexOf(\"/\") + 1);\n\n var dim = 1000;\n\n var canvas = $(\".canvas\")[0];\n canvas.width = dim;\n canvas.height = dim;\n\n var ctx = canvas.getContext(\"2d\");\n\n var grd = ctx.createLinearGradient(0, 0, 0, dim);\n grd.addColorStop(0, \"#B8B8B8\");\n grd.addColorStop(1, \"#2E2E2E\");\n\n var grdStrk = ctx.createRadialGradient(\n dim / 2,\n dim / 2,\n 5,\n dim / 2,\n dim / 2,\n dim / 2\n );\n grdStrk.addColorStop(0, \"#353535\");\n grdStrk.addColorStop(0.8, \"#353535\");\n grdStrk.addColorStop(1, \"#000000\");\n\n ctx.font = dim * 1.28 + \"px Atilla Sans\";\n ctx.fillStyle = grd;\n ctx.fillText(section, 20, dim - 50);\n\n ctx.lineWidth = dim / 35;\n ctx.strokeStyle = grdStrk;\n ctx.strokeText(section, 20, dim - 50);\n\n // Create an image\n var image = canvas.toDataURL();\n var img = $(\".img\")[0];\n img.src = image;\n\n // Create halftone\n createHalftone(img);\n\n addEventListeners();\n };\n\n var createHalftone = function(image) {\n halftone();\n\n new BreathingHalftone(image, {\n dotSize: 1 / 60,\n isAdditive: true,\n channels: [\"lum\"],\n oscPeriod: 1,\n activeForce: 0,\n\n initVelocity: 0.01,\n // speed at which dots initially grow\n\n oscPeriod: 10,\n // duration in seconds of a cycle of dot size oscilliation or 'breathing'\n\n oscAmplitude: 0.1\n // percentage of change of oscillation\n // options...\n });\n };\n\n var addEventListeners = function() {};\n\n WebFont.load({\n custom: {\n families: [\"Atilla Sans\"]\n },\n active: function() {\n init();\n }\n });\n }\n}\n","import halftone from \"./halftone\";\nimport fitty from \"fitty\";\nimport WebFont from \"webfontloader\";\n\nexport default function() {\n if (document.body.classList.contains(\"command\")) {\n console.log(\"section\");\n\n var init = function() {\n var url = window.location.href.replace(/\\/$/, \"\");\n var command = url.substr(url.lastIndexOf(\"/\") + 1);\n\n var dim = 700;\n\n var canvas = $(\".canvas\")[0];\n canvas.width = dim * 1.4;\n canvas.height = dim * 0.8;\n\n var ctx = canvas.getContext(\"2d\");\n\n var grd = ctx.createLinearGradient(0, 0, 0, dim);\n grd.addColorStop(0, \"#B8B8B8\");\n grd.addColorStop(1, \"#2E2E2E\");\n\n var grdStrk = ctx.createRadialGradient(\n dim / 2,\n dim / 2,\n 5,\n dim / 2,\n dim / 2,\n dim / 2\n );\n grdStrk.addColorStop(0, \"#353535\");\n grdStrk.addColorStop(0.8, \"#353535\");\n grdStrk.addColorStop(1, \"#000000\");\n\n // ctx.font = dim * 1.28 + \"px Atilla Sans\";\n ctx.font = dim * 0.7 + \"px Atilla Sans\";\n ctx.fillStyle = grd;\n ctx.fillText(command, 0, dim - 300);\n\n ctx.lineWidth = dim / 35;\n ctx.strokeStyle = grdStrk;\n ctx.strokeText(command, 0, dim - 300);\n\n // Create an image\n var image = canvas.toDataURL();\n var img = $(\".img\")[0];\n img.src = image;\n\n // Create halftone\n createHalftone(img);\n\n // Fit text to window\n fitty(\".js-fitty\", { maxSize: 200 });\n addEventListeners();\n };\n\n var createHalftone = function(image) {\n halftone();\n new BreathingHalftone(image, {\n dotSize: 1 / 60,\n isAdditive: true,\n channels: [\"lum\"],\n oscPeriod: 1,\n activeForce: 0,\n\n initVelocity: 0.01,\n // speed at which dots initially grow\n\n oscPeriod: 10,\n // duration in seconds of a cycle of dot size oscilliation or 'breathing'\n\n oscAmplitude: 0.1\n // percentage of change of oscillation\n // options...\n });\n };\n\n var addEventListeners = function() {};\n\n WebFont.load({\n custom: {\n families: [\"Atilla Sans\"]\n },\n active: function() {\n init();\n }\n });\n }\n}\n"],"names":["halftone","window","isAnimated","Halftone","BreathingHalftone","Vector","x","y","this","set","prototype","add","v","subtract","scale","s","multiply","Object","defineProperty","get","Math","sqrt","a","b","copy","TAU","PI","Particle","properties","channel","origin","parent","friction","position","velocity","acceleration","naturalSize","size","sizeVelocity","oscSize","initSize","initSizeVelocity","random","options","initVelocity","oscillationOffset","oscillationMagnitude","isVisible","applyForce","force","update","applyOriginAttraction","calculateSize","render","ctx","cos","max","beginPath","arc","fill","closePath","min","sizeAcceleration","getChannelValue","now","Date","opts","oscPeriod","oscAmplitude","channelValue","isChannelLens","getPixelChannelValue","originChannelValue","attraction","ROOT_2","objToString","toString","isArray","Array","obj","call","extend","isDeep","prop","value","supports","canvas","document","createElement","getContext","width","height","globalCompositeOperation","fillStyle","fillRect","imgData","getImageData","data","darker","prefix","lastTime","prefixes","split","requestAnimationFrame","cancelAnimationFrame","i","length","callback","currTime","getTime","timeToCall","id","setTimeout","clearTimeout","_Halftone","img","constructor","defaults","create","self","makeCanvasAndCtx","dotSize","dotSizeThreshold","isAdditive","isRadial","channels","hoverDiameter","hoverForce","activeDiameter","activeForce","isActive","elem","afterElem","nextElem","canvasAndCtx","className","parentNode","nextElementSibling","insertBefore","appendChild","style","visibility","proxyCanvases","len","loadImage","canvasPosition","getCanvasPosition","cursors","addCursor","pageX","pageY","bindEvents","rect","getBoundingClientRect","left","pageXOffset","top","pageYOffset","canvasScale","offsetWidth","src","getAttribute","loadingImg","Image","onload","onImgLoad","bind","getImgData","resizeCanvas","display","initParticles","animate","imgCanvas","imgWidth","naturalWidth","imgHeight","naturalHeight","drawImage","w","h","offsetHeight","diagonal","imgScale","gridSize","proxy","getParticlesMethod","particles","channelParticles","angles","red","green","blue","lum","angle","concat","particle","identifier","cursor","cursorState","isDown","forceScale","radius","distanceScale","magnitude","renderGrid","colorDOM","$","dynamicColor","dataset","color","channelFillStyles","additive","subtractive","blend","getCartesianGridParticles","diag","cols","ceil","rows","row","col","x1","y1","x2","sin","y2","initParticle","push","getRadialGridParticles","halfH","offset","centerX","centerY","maxLevel","level","j","theta","_class","methodName","threshold","method","timeoutName","channelOffset","round","pixelIndex","getPixelLum","index","r","g","addEventListener","unbindEvents","removeEventListener","handleEvent","event","type","onmousedown","preventDefault","mouse","ontouchstart","changedTouches","touch","cursorEvent","setCursorPosition","onmousemove","ontouchmove","onmouseup","ontouchend","onresize","timeout","args","arguments","apply","destroy","removeChild","searchInput","searchResults","searchView","getSearch","renderResults","body","classList","remove","querySelectorAll","forEach","link","navButton","nav","isOpen","triggerNav","e","focus","on","query","axios","params","then","response","results","console","log","innerHTML","result","tr","borderColor","manual","command","commandLink","href","description","debounce","contains","addEventListeners","createHalftone","image","WebFont","custom","families","active","url","location","replace","section","substr","lastIndexOf","dim","grd","createLinearGradient","addColorStop","grdStrk","createRadialGradient","font","fillText","lineWidth","strokeStyle","strokeText","toDataURL","init","fitty","maxSize"],"sourceRoot":""}