notes/node_modules/onecolor/one-color.map

1 line
23 KiB
Plaintext

{"version":3,"sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","minimal","lib/HSV.js","lib/color.js","lib/HSL.js"],"names":["module","exports","color","installColorSpace","rgb","red","green","blue","hue","this","_hue","saturation","_saturation","value","_value","i","Math","min","floor","f","p","q","t","RGB","_alpha","hsl","l","sv","svDivisor","HSL","fromRgb","_red","_green","_blue","max","delta","HSV","obj","Array","isArray","slice","length","lowerCased","toLowerCase","namedColors","matchCssSyntax","match","cssColorRegExp","colorSpaceName","toUpperCase","alpha","undef","parseFloat","hasHue","firstChannelDivisor","secondChannelDivisor","thirdChannelDivisor","Error","replace","hexMatch","parseInt","CMYK","cmykMatch","RegExp","percentageChannelRegExp","source","isColor","installedColorSpaces","channelRegExp","alphaChannelRegExp","propertyNames","config","installForeignMethods","targetColorSpaceName","sourceColorSpaceName","forEach","propertyName","shortName","charAt","isDelta","prop","hasOwnProperty","undefined","prototype","a1","args","arguments","propertyValue","isNaN","join","methodName","hex","equals","otherColor","epsilon","abs","toJSON","concat","map","matchFromColorSpace","toString","constructor","otherPropertyName","otherColorSpaceName","push","pluginList","use","plugin","indexOf","installMethod","name","fn","colorSpace","hexString","round","substr","hexa","alphaString","css","cssa","require","hsv","_lightness","s"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)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\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","module.exports=require(3).use(require(2)).use(require(1));","module.exports = function HSV(color) {\n color.installColorSpace('HSV', ['hue', 'saturation', 'value', 'alpha'], {\n rgb: function () {\n var hue = this._hue,\n saturation = this._saturation,\n value = this._value,\n i = Math.min(5, Math.floor(hue * 6)),\n f = hue * 6 - i,\n p = value * (1 - saturation),\n q = value * (1 - f * saturation),\n t = value * (1 - (1 - f) * saturation),\n red,\n green,\n blue;\n switch (i) {\n case 0:\n red = value;\n green = t;\n blue = p;\n break;\n case 1:\n red = q;\n green = value;\n blue = p;\n break;\n case 2:\n red = p;\n green = value;\n blue = t;\n break;\n case 3:\n red = p;\n green = q;\n blue = value;\n break;\n case 4:\n red = t;\n green = p;\n blue = value;\n break;\n case 5:\n red = value;\n green = p;\n blue = q;\n break;\n }\n return new color.RGB(red, green, blue, this._alpha);\n },\n\n hsl: function () {\n var l = (2 - this._saturation) * this._value,\n sv = this._saturation * this._value,\n svDivisor = l <= 1 ? l : (2 - l),\n saturation;\n\n // Avoid division by zero when lightness approaches zero:\n if (svDivisor < 1e-9) {\n saturation = 0;\n } else {\n saturation = sv / svDivisor;\n }\n return new color.HSL(this._hue, saturation, l / 2, this._alpha);\n },\n\n fromRgb: function () { // Becomes one.color.RGB.prototype.hsv\n var red = this._red,\n green = this._green,\n blue = this._blue,\n max = Math.max(red, green, blue),\n min = Math.min(red, green, blue),\n delta = max - min,\n hue,\n saturation = (max === 0) ? 0 : (delta / max),\n value = max;\n if (delta === 0) {\n hue = 0;\n } else {\n switch (max) {\n case red:\n hue = (green - blue) / delta / 6 + (green < blue ? 1 : 0);\n break;\n case green:\n hue = (blue - red) / delta / 6 + 1 / 3;\n break;\n case blue:\n hue = (red - green) / delta / 6 + 2 / 3;\n break;\n }\n }\n return new color.HSV(hue, saturation, value, this._alpha);\n }\n });\n};\n","var installedColorSpaces = [],\n undef = function (obj) {\n return typeof obj === 'undefined';\n },\n channelRegExp = /\\s*(\\.\\d+|\\d+(?:\\.\\d+)?)(%)?\\s*/,\n percentageChannelRegExp = /\\s*(\\.\\d+|100|\\d?\\d(?:\\.\\d+)?)%\\s*/,\n alphaChannelRegExp = /\\s*(\\.\\d+|\\d+(?:\\.\\d+)?)\\s*/,\n cssColorRegExp = new RegExp(\n '^(rgb|hsl|hsv)a?' +\n '\\\\(' +\n channelRegExp.source + ',' +\n channelRegExp.source + ',' +\n channelRegExp.source +\n '(?:,' + alphaChannelRegExp.source + ')?' +\n '\\\\)$', 'i');\n\nfunction color(obj) {\n if (Array.isArray(obj)) {\n if (typeof obj[0] === 'string' && typeof color[obj[0]] === 'function') {\n // Assumed array from .toJSON()\n return new color[obj[0]](obj.slice(1, obj.length));\n } else if (obj.length === 4) {\n // Assumed 4 element int RGB array from canvas with all channels [0;255]\n return new color.RGB(obj[0] / 255, obj[1] / 255, obj[2] / 255, obj[3] / 255);\n }\n } else if (typeof obj === 'string') {\n var lowerCased = obj.toLowerCase();\n if (color.namedColors[lowerCased]) {\n obj = '#' + color.namedColors[lowerCased];\n }\n if (lowerCased === 'transparent') {\n obj = 'rgba(0,0,0,0)';\n }\n // Test for CSS rgb(....) string\n var matchCssSyntax = obj.match(cssColorRegExp);\n if (matchCssSyntax) {\n var colorSpaceName = matchCssSyntax[1].toUpperCase(),\n alpha = undef(matchCssSyntax[8]) ? matchCssSyntax[8] : parseFloat(matchCssSyntax[8]),\n hasHue = colorSpaceName[0] === 'H',\n firstChannelDivisor = matchCssSyntax[3] ? 100 : (hasHue ? 360 : 255),\n secondChannelDivisor = (matchCssSyntax[5] || hasHue) ? 100 : 255,\n thirdChannelDivisor = (matchCssSyntax[7] || hasHue) ? 100 : 255;\n if (undef(color[colorSpaceName])) {\n throw new Error('color.' + colorSpaceName + ' is not installed.');\n }\n return new color[colorSpaceName](\n parseFloat(matchCssSyntax[2]) / firstChannelDivisor,\n parseFloat(matchCssSyntax[4]) / secondChannelDivisor,\n parseFloat(matchCssSyntax[6]) / thirdChannelDivisor,\n alpha\n );\n }\n // Assume hex syntax\n if (obj.length < 6) {\n // Allow CSS shorthand\n obj = obj.replace(/^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i, '$1$1$2$2$3$3');\n }\n // Split obj into red, green, and blue components\n var hexMatch = obj.match(/^#?([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/i);\n if (hexMatch) {\n return new color.RGB(\n parseInt(hexMatch[1], 16) / 255,\n parseInt(hexMatch[2], 16) / 255,\n parseInt(hexMatch[3], 16) / 255\n );\n }\n\n // No match so far. Lets try the less likely ones\n if (color.CMYK) {\n var cmykMatch = obj.match(new RegExp(\n '^cmyk' +\n '\\\\(' +\n percentageChannelRegExp.source + ',' +\n percentageChannelRegExp.source + ',' +\n percentageChannelRegExp.source + ',' +\n percentageChannelRegExp.source +\n '\\\\)$', 'i'));\n if (cmykMatch) {\n return new color.CMYK(\n parseFloat(cmykMatch[1]) / 100,\n parseFloat(cmykMatch[2]) / 100,\n parseFloat(cmykMatch[3]) / 100,\n parseFloat(cmykMatch[4]) / 100\n );\n }\n }\n } else if (typeof obj === 'object' && obj.isColor) {\n return obj;\n }\n return false;\n}\n\ncolor.namedColors = {};\n\ncolor.installColorSpace = function (colorSpaceName, propertyNames, config) {\n color[colorSpaceName] = function (a1) { // ...\n var args = Array.isArray(a1) ? a1 : arguments;\n propertyNames.forEach(function (propertyName, i) {\n var propertyValue = args[i];\n if (propertyName === 'alpha') {\n this._alpha = (isNaN(propertyValue) || propertyValue > 1) ? 1 : (propertyValue < 0 ? 0 : propertyValue);\n } else {\n if (isNaN(propertyValue)) {\n throw new Error('[' + colorSpaceName + ']: Invalid color: (' + propertyNames.join(',') + ')');\n }\n if (propertyName === 'hue') {\n this._hue = propertyValue < 0 ? propertyValue - Math.floor(propertyValue) : propertyValue % 1;\n } else {\n this['_' + propertyName] = propertyValue < 0 ? 0 : (propertyValue > 1 ? 1 : propertyValue);\n }\n }\n }, this);\n };\n color[colorSpaceName].propertyNames = propertyNames;\n\n var prototype = color[colorSpaceName].prototype;\n\n ['valueOf', 'hex', 'hexa', 'css', 'cssa'].forEach(function (methodName) {\n prototype[methodName] = prototype[methodName] || (colorSpaceName === 'RGB' ? prototype.hex : function () {\n return this.rgb()[methodName]();\n });\n });\n\n prototype.isColor = true;\n\n prototype.equals = function (otherColor, epsilon) {\n if (undef(epsilon)) {\n epsilon = 1e-10;\n }\n\n otherColor = otherColor[colorSpaceName.toLowerCase()]();\n\n for (var i = 0; i < propertyNames.length; i = i + 1) {\n if (Math.abs(this['_' + propertyNames[i]] - otherColor['_' + propertyNames[i]]) > epsilon) {\n return false;\n }\n }\n\n return true;\n };\n\n prototype.toJSON = function () {\n return [colorSpaceName].concat(propertyNames.map(function (propertyName) {\n return this['_' + propertyName];\n }, this));\n };\n\n for (var propertyName in config) {\n if (config.hasOwnProperty(propertyName)) {\n var matchFromColorSpace = propertyName.match(/^from(.*)$/);\n if (matchFromColorSpace) {\n color[matchFromColorSpace[1].toUpperCase()].prototype[colorSpaceName.toLowerCase()] = config[propertyName];\n } else {\n prototype[propertyName] = config[propertyName];\n }\n }\n }\n\n // It is pretty easy to implement the conversion to the same color space:\n prototype[colorSpaceName.toLowerCase()] = function () {\n return this;\n };\n prototype.toString = function () {\n return '[' + colorSpaceName + ' ' + propertyNames.map(function (propertyName) {\n return this['_' + propertyName];\n }).join(', ') + ']';\n };\n\n // Generate getters and setters\n propertyNames.forEach(function (propertyName) {\n var shortName = propertyName === 'black' ? 'k' : propertyName.charAt(0);\n prototype[propertyName] = prototype[shortName] = function (value, isDelta) {\n // Simple getter mode: color.red()\n if (typeof value === 'undefined') {\n return this['_' + propertyName];\n } else if (isDelta) {\n // Adjuster: color.red(+.2, true)\n return new this.constructor(propertyNames.map(function (otherPropertyName) {\n return this['_' + otherPropertyName] + (propertyName === otherPropertyName ? value : 0);\n }, this));\n } else {\n // Setter: color.red(.2);\n return new this.constructor(propertyNames.map(function (otherPropertyName) {\n return (propertyName === otherPropertyName) ? value : this['_' + otherPropertyName];\n }, this));\n }\n };\n });\n\n function installForeignMethods(targetColorSpaceName, sourceColorSpaceName) {\n var obj = {};\n obj[sourceColorSpaceName.toLowerCase()] = function () {\n return this.rgb()[sourceColorSpaceName.toLowerCase()]();\n };\n color[sourceColorSpaceName].propertyNames.forEach(function (propertyName) {\n var shortName = propertyName === 'black' ? 'k' : propertyName.charAt(0);\n obj[propertyName] = obj[shortName] = function (value, isDelta) {\n return this[sourceColorSpaceName.toLowerCase()]()[propertyName](value, isDelta);\n };\n });\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && color[targetColorSpaceName].prototype[prop] === undefined) {\n color[targetColorSpaceName].prototype[prop] = obj[prop];\n }\n }\n }\n\n installedColorSpaces.forEach(function (otherColorSpaceName) {\n installForeignMethods(colorSpaceName, otherColorSpaceName);\n installForeignMethods(otherColorSpaceName, colorSpaceName);\n });\n\n installedColorSpaces.push(colorSpaceName);\n return color;\n};\n\ncolor.pluginList = [];\n\ncolor.use = function (plugin) {\n if (color.pluginList.indexOf(plugin) === -1) {\n this.pluginList.push(plugin);\n plugin(color);\n }\n return color;\n};\n\ncolor.installMethod = function (name, fn) {\n installedColorSpaces.forEach(function (colorSpace) {\n color[colorSpace].prototype[name] = fn;\n });\n return this;\n};\n\ncolor.installColorSpace('RGB', ['red', 'green', 'blue', 'alpha'], {\n hex: function () {\n var hexString = (Math.round(255 * this._red) * 0x10000 + Math.round(255 * this._green) * 0x100 + Math.round(255 * this._blue)).toString(16);\n return '#' + ('00000'.substr(0, 6 - hexString.length)) + hexString;\n },\n\n hexa: function () {\n var alphaString = Math.round(this._alpha * 255).toString(16);\n return '#' + '00'.substr(0, 2 - alphaString.length) + alphaString + this.hex().substr(1, 6);\n },\n\n css: function () {\n return 'rgb(' + Math.round(255 * this._red) + ',' + Math.round(255 * this._green) + ',' + Math.round(255 * this._blue) + ')';\n },\n\n cssa: function () {\n return 'rgba(' + Math.round(255 * this._red) + ',' + Math.round(255 * this._green) + ',' + Math.round(255 * this._blue) + ',' + this._alpha + ')';\n }\n});\n\nmodule.exports = color;\n","module.exports = function HSL(color) {\n color.use(require('./HSV'));\n\n color.installColorSpace('HSL', ['hue', 'saturation', 'lightness', 'alpha'], {\n hsv: function () {\n // Algorithm adapted from http://wiki.secondlife.com/wiki/Color_conversion_scripts\n var l = this._lightness * 2,\n s = this._saturation * ((l <= 1) ? l : 2 - l),\n saturation;\n\n // Avoid division by zero when l + s is very small (approaching black):\n if (l + s < 1e-9) {\n saturation = 0;\n } else {\n saturation = (2 * s) / (l + s);\n }\n\n return new color.HSV(this._hue, saturation, (l + s) / 2, this._alpha);\n },\n\n rgb: function () {\n return this.hsv().rgb();\n },\n\n fromRgb: function () { // Becomes one.color.RGB.prototype.hsv\n return this.hsv().hsl();\n }\n });\n};\n"]}