{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/projects/colour_translator.js","webpack:///./app/javascript/packs/projects/colour_translator/update.js","webpack:///./app/javascript/packs/projects/colour_translator/translators.js","webpack:///./app/javascript/packs/projects/colour_translator/parse.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hue","sat","ltns","sample","document","getElementById","slidersRGB","querySelectorAll","sliderR","sliderG","sliderB","inputHex","inputRGB","inputHSL","slidersHSL","sliderH","sliderS","sliderL","red","Math","floor","random","green","blue","update","updateAll","forEach","slider","addEventListener","event","RGBtoHSL","HSLtoRGB","parseHex","parseRGB","parseHSL","hex","rgb","hsl","updateInputs","hexRed","parseInt","toString","toUpperCase","length","hexGreen","hexBlue","updateHex","round","style","background","updateSlidersRGB","updateSlidersHSL","backgroundColor","updateSample","rPrime","gPrime","bPrime","cMax","max","cMin","min","delta","hValue","Error","calculateH","lRaw","sRaw","lValue","abs","calculateS","sPrime","lPrime","cValue","mValue","RGBPrimes","xValue","calculateRGBPrimes","rValue","gValue","bValue","input","slice","array","map","element","parseThreeDigit","parseSixDigit","window","alert","test","matches","match","some"],"mappings":"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","file":"js/projects/colour_translator-847c9055a217175b2190.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","import { RGBtoHSL, HSLtoRGB } from './colour_translator/translators';\nimport { updateAll } from './colour_translator/update';\nimport { parseHex, parseRGB, parseHSL } from './colour_translator/parse';\n\n// Elements from the page\nconst sample = document.getElementById('box');\n\nconst slidersRGB = document.querySelectorAll('.rgb input');\nconst sliderR = document.getElementById('red');\nconst sliderG = document.getElementById('green');\nconst sliderB = document.getElementById('blue');\n\nconst inputHex = document.getElementById('hex');\nconst inputRGB = document.getElementById('rgb');\nconst inputHSL = document.getElementById('hsl');\n\nconst slidersHSL = document.querySelectorAll('.hsl input');\nconst sliderH = document.getElementById('hue');\nconst sliderS = document.getElementById('saturation');\nconst sliderL = document.getElementById('lightness');\n\n// Colour variables\nexport let red = Math.floor(Math.random() * 256);\nexport let green = Math.floor(Math.random() * 256);\nexport let blue = Math.floor(Math.random() * 256);\n\nexport let hue, sat, ltns;\n\nconst update = () => {\n updateAll(slidersRGB, inputHex, inputRGB, inputHSL, slidersHSL, sample);\n};\n\nslidersRGB.forEach((slider) => {\n slider.addEventListener('input', (event) => {\n red = sliderR.value;\n green = sliderG.value;\n blue = sliderB.value;\n\n [hue, sat, ltns] = RGBtoHSL();\n\n update();\n });\n});\n\nslidersHSL.forEach((slider) => {\n slider.addEventListener('input', (event) => {\n hue = sliderH.value;\n sat = sliderS.value;\n ltns = sliderL.value;\n\n [red, green, blue] = HSLtoRGB();\n\n update();\n });\n});\n\ninputHex.addEventListener('blur', (event) => {\n [red, green, blue] = parseHex(inputHex);;\n [hue, sat, ltns] = RGBtoHSL();\n\n update();\n})\n\ninputRGB.addEventListener('blur', (event) => {\n [red, green, blue] = parseRGB(inputRGB);\n [hue, sat, ltns] = RGBtoHSL();\n\n update();\n});\n\ninputHSL.addEventListener('blur', (event) => {\n [hue, sat, ltns] = parseHSL(inputHSL);\n [red, green, blue] = HSLtoRGB();\n\n update();\n});\n\n[hue, sat, ltns] = RGBtoHSL();\nupdate();\n","import { red, green, blue, hue, sat, ltns } from '../colour_translator';\n\nlet hex, rgb, hsl;\n\nconst updateHex = () => {\n // First calculate the individual components of the hex colour\n let hexRed = parseInt(red).toString(16).toUpperCase();\n // We need to append 0 before a one digit value\n if (hexRed.length === 1) { hexRed = \"0\" + hexRed; }\n\n let hexGreen = parseInt(green).toString(16).toUpperCase();\n if (hexGreen.length === 1) { hexGreen = \"0\" + hexGreen; }\n\n let hexBlue = parseInt(blue).toString(16).toUpperCase();\n if (hexBlue.length === 1) { hexBlue = \"0\" + hexBlue; }\n\n // Update the hex colour based on the values calculated\n hex = `#${hexRed}${hexGreen}${hexBlue}`;\n};\n\nconst updateSlidersRGB = (slidersRGB) => {\n // Set each slider to the new value\n slidersRGB[0].value = red;\n slidersRGB[1].value = green;\n slidersRGB[2].value = blue;\n\n // Update the gradient backgrounds for the new colour\n slidersRGB[0].style.background = `linear-gradient(to right, rgb(0, ${green}, ${blue}), rgb(255, ${green}, ${blue}))`;\n slidersRGB[1].style.background = `linear-gradient(to right, rgb(${red}, 0, ${blue}), rgb(${red}, 255, ${blue}))`;\n slidersRGB[2].style.background = `linear-gradient(to right, rgb(${red}, ${green}, 0), rgb(${red}, ${green}, 255))`;\n};\n\nconst updateSlidersHSL = (slidersHSL) => {\n // Set each slider to the new value\n slidersHSL[0].value = hue;\n slidersHSL[1].value = sat;\n slidersHSL[2].value = ltns;\n\n // Update the gradient backgrounds for the new colour\n slidersHSL[0].style.background = `linear-gradient(to right, hsl(0, ${sat}%, ${ltns}%),\n hsl(120, ${sat}%, ${ltns}%),\n hsl(240, ${sat}%, ${ltns}%),\n hsl(360, ${sat}%, ${ltns}%))`;\n slidersHSL[1].style.background = `linear-gradient(to right, hsl(${hue}, 0%, ${ltns}%),\n hsl(${hue}, 50%, ${ltns}%),\n hsl(${hue}, 100%, ${ltns}%))`;\n slidersHSL[2].style.background = `linear-gradient(to right, hsl(${hue}, ${sat}%, 0%),\n hsl(${hue}, ${sat}%, 50%),\n hsl(${hue}, ${sat}%, 100%))`;\n};\n\nconst updateInputs = (inputHex, inputRGB, inputHSL) => {\n // Hex code is longer so has its own function\n updateHex();\n inputHex.value = hex;\n\n rgb = `rgb(${Math.round(red)}, ${Math.round(green)}, ${Math.round(blue)})`;\n inputRGB.value = rgb;\n\n hsl = `hsl(${Math.round(hue)}, ${Math.round(sat)}, ${Math.round(ltns)})`;\n inputHSL.value = hsl;\n};\n\nconst updateSample = (sample) => {\n sample.style.backgroundColor = rgb;\n};\n\nexport const updateAll = (slidersRGB, inputHex, inputRGB, inputHSL, slidersHSL, sample) => {\n updateSlidersRGB(slidersRGB);\n updateSlidersHSL(slidersHSL);\n updateInputs(inputHex, inputRGB, inputHSL);\n // Sample must be last so rgb used already updated by updateInputs\n updateSample(sample);\n};\n","import { red, green, blue, hue, sat, ltns } from '../colour_translator';\n\nconst calculateH = (rPrime, gPrime, bPrime, cMax, cMin, delta) => {\n let hValue;\n if (delta == 0) {\n hValue = 0;\n } else if (cMax === rPrime) {\n hValue = 60 * (((gPrime - bPrime) / delta) % 6);\n hValue = hValue < 0 ? 360 + hValue : hValue;\n } else if (cMax === gPrime) {\n hValue = 60 * (((bPrime - rPrime) / delta) + 2);\n } else if (cMax === bPrime) {\n hValue = 60 * (((rPrime - gPrime) / delta) + 4);\n } else {\n throw new Error(`Error in calculateH(${rPrime}, ${gPrime}, ${bPrime}, ${cMax}, ${cMin}, ${delta})`);\n }\n return hValue;\n};\n\nconst calculateS = (delta, lValue) => {\n if (delta === 0) {\n return 0;\n } else {\n return delta / (1 - Math.abs(2 * lValue - 1));\n }\n};\n\nexport const RGBtoHSL = () => {\n // We need red, green and blue on 0 to 1\n const rPrime = red / 255;\n const gPrime = green / 255;\n const bPrime = blue / 255;\n\n // Calculate needed intermediate values\n const cMax = Math.max(rPrime, gPrime, bPrime);\n const cMin = Math.min(rPrime, gPrime, bPrime);\n const delta = cMax - cMin;\n\n // Use those to get our HSL (S and L on 0 to 1)\n const hValue = calculateH(rPrime, gPrime, bPrime, cMax, cMin, delta);\n const lRaw = (cMax + cMin) / 2;\n const sRaw = calculateS(delta, lRaw);\n\n // Return the values, moving S and L to 0 to 100\n return [Math.round(hValue), Math.round(sRaw * 100), Math.round(lRaw * 100)];\n};\n\nconst calculateRGBPrimes = (cValue, xValue) => {\n if (hue < 60) {\n return [cValue, xValue, 0];\n } else if (hue < 120) {\n return [xValue, cValue, 0];\n } else if (hue < 180) {\n return [0, cValue, xValue];\n } else if (hue < 240) {\n return [0, xValue, cValue];\n } else if (hue < 300) {\n return [xValue, 0, cValue];\n } else if (hue < 360) {\n return [cValue, 0, xValue];\n } else {\n throw new Error(`Error in calculateRGBPrimes(${cValue}, ${xValue})`);\n }\n};\n\nexport const HSLtoRGB = () => {\n // We need saturation and lightness on 0 to 1\n const sPrime = sat / 100;\n const lPrime = ltns / 100;\n\n // Calculate needed intermediary values\n const cValue = (1 - Math.abs(2 * lPrime - 1)) * sPrime;\n const xValue = cValue * (1 - Math.abs((hue / 60) % 2 - 1));\n const mValue = lPrime - (cValue / 2);\n\n // Now order them as required\n const RGBPrimes = calculateRGBPrimes(cValue, xValue);\n\n const rValue = (RGBPrimes[0] + mValue) * 255;\n const gValue = (RGBPrimes[1] + mValue) * 255;\n const bValue = (RGBPrimes[2] + mValue) * 255;\n\n return [Math.round(rValue), Math.round(gValue), Math.round(bValue)];\n};\n","const parseThreeDigit = (input) => {\n let array = [input.slice(0,1),input.slice(1,2),input.slice(2)];\n array = array.map(element => element + element);\n return array.map(element => parseInt(element, 16));\n};\n\nconst parseSixDigit = (input) => {\n const array = [input.slice(0,2),input.slice(2,4),input.slice(4)];\n return array.map(element => parseInt(element, 16));\n};\n\nexport const parseHex = (inputHex) => {\n let input = inputHex.value;\n\n if (input[0] == \"#\") {\n input = input.slice(1);\n }\n\n if (input.length == 3) {\n return parseThreeDigit(input);\n } else if (input.length == 6) {\n return parseSixDigit(input);\n } else {\n window.alert(\"Invalid input\");\n }\n};\n\nexport const parseRGB = (inputRGB) => {\n const input = inputRGB.value;\n\n const reForm = /(\\d{1,3}), ?(\\d{1,3}), ?(\\d{1,3})/;\n if (!reForm.test(input)) {\n window.alert(\"Invalid input\");\n } else {\n const reCapture = /\\d+/g;\n const matches = input.match(reCapture);\n\n if (matches.some(element => element > 255)) {\n window.alert(\"Invalid input\");\n } else {\n return matches.map(element => parseInt(element));\n }\n }\n};\n\nexport const parseHSL = (inputHSL) => {\n const input = inputHSL.value;\n\n const reForm = /(\\d{1,3}), ?(\\d{1,3}), ?(\\d{1,3})/;\n if (!reForm.test(input)) {\n window.alert(\"Invalid input\");\n } else {\n const reCapture = /\\d+/g;\n const matches = input.match(reCapture);\n\n if (matches[0] > 359 || matches[1] > 100 || matches[2] > 100) {\n window.alert(\"Invalid input\");\n } else {\n return matches.map(element => parseInt(element));\n }\n }\n};\n"],"sourceRoot":""}