UNPKG

89.3 kBSource Map (JSON)View Raw
1{"version":3,"file":"vega-encode.min.js","sources":["../src/AxisTicks.js","../src/DataJoin.js","../src/Encode.js","../src/LegendEntries.js","../src/LinkPath.js","../../../node_modules/d3-array/src/range.js","../src/Pie.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-array/src/sum.js","../../../node_modules/d3-interpolate/src/constant.js","../../../node_modules/d3-interpolate/src/color.js","../../../node_modules/d3-interpolate/src/rgb.js","../../../node_modules/d3-interpolate/src/numberArray.js","../../../node_modules/d3-interpolate/src/array.js","../../../node_modules/d3-interpolate/src/date.js","../../../node_modules/d3-interpolate/src/number.js","../../../node_modules/d3-interpolate/src/object.js","../../../node_modules/d3-interpolate/src/string.js","../../../node_modules/d3-interpolate/src/value.js","../../../node_modules/d3-interpolate/src/round.js","../src/Scale.js","../src/SortItems.js","../src/Stack.js"],"sourcesContent":["import {Transform, ingest} from 'vega-dataflow';\nimport {tickCount, tickFormat, tickValues, validTicks} from 'vega-scale';\nimport {inherits} from 'vega-util';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function AxisTicks(params) {\n Transform.call(this, null, params);\n}\n\ninherits(AxisTicks, Transform, {\n transform(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? (_.values ? _.values.length : 10) : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n\n if (ticks) out.rem = ticks;\n\n ticks = values.map((value, i) =>\n ingest({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n })\n );\n\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {value: ticks[0].value},\n label: ''\n }));\n }\n\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n\n return out;\n }\n});\n","import {Transform, ingest, tupleid} from 'vega-dataflow';\nimport {error, fastmap, inherits, isArray} from 'vega-util';\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nexport default function DataJoin(params) {\n Transform.call(this, null, params);\n}\n\nfunction defaultItemCreate() {\n return ingest({});\n}\n\nfunction newMap(key) {\n const map = fastmap().test(t => t.exit);\n map.lookup = t => map.get(key(t));\n return map;\n}\n\ninherits(DataJoin, Transform, {\n transform(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = newMap(key);\n }\n\n pulse.visit(pulse.ADD, t => {\n const k = key(t);\n let x = map.get(k);\n\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n x = item(t);\n map.set(k, x);\n out.add.push(x);\n }\n\n x.datum = t;\n x.exit = false;\n });\n\n pulse.visit(pulse.MOD, t => {\n const k = key(t),\n x = map.get(k);\n\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n\n pulse.visit(pulse.REM, t => {\n const k = key(t),\n x = map.get(k);\n\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n\n if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n df.runAfter(map.clean);\n }\n\n return out;\n }\n});\n","import {Transform} from 'vega-dataflow';\nimport {falsy, inherits, isArray} from 'vega-util';\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nexport default function Encode(params) {\n Transform.call(this, null, params);\n}\n\ninherits(Encode, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(e => encoders[e])) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, t => { enter(t, _); update(t, _); });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, t => { set(t, _); });\n out.modifies(set.output);\n }\n }\n\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, t => { exit(t, _); });\n out.modifies(exit.output);\n }\n\n if (reenter || set !== falsy) {\n const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, t => {\n const mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, t => {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n\n return out.changed() ? out : pulse.StopPropagation;\n }\n});\n","import {Transform, ingest} from 'vega-dataflow';\nimport {\n GradientLegend, SymbolLegend,\n labelFormat, labelFraction, labelValues,\n scaleFraction, tickCount\n} from 'vega-scale';\nimport {constant, inherits, isFunction, peek} from 'vega-util';\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n * include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nexport default function LegendEntries(params) {\n Transform.call(this, [], params);\n}\n\ninherits(LegendEntries, Transform, {\n transform(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || SymbolLegend,\n scale = _.scale,\n limit = +_.limit,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n lskip = !!_.values || type === SymbolLegend,\n format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n values = _.values || labelValues(scale, count),\n domain, fraction, size, offset, ellipsis;\n\n if (items) out.rem = items;\n\n if (type === SymbolLegend) {\n if (limit && values.length > limit) {\n pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n items = values.slice(0, limit - 1);\n ellipsis = true;\n } else {\n items = values;\n }\n\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(items[0]) === 0) {\n items = items.slice(1);\n }\n // compute size offset for legend entries\n offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0);\n } else {\n size = constant(offset = size || 8);\n }\n\n items = items.map((value, index) =>\n ingest({\n index: index,\n label: format(value, index, items),\n value: value,\n offset: offset,\n size: size(value, _)\n })\n );\n\n if (ellipsis) {\n ellipsis = values[items.length];\n items.push(ingest({\n index: items.length,\n label: `\\u2026${values.length-items.length} entries`,\n value: ellipsis,\n offset: offset,\n size: size(ellipsis, _)\n }));\n }\n }\n\n else if (type === GradientLegend) {\n domain = scale.domain(),\n fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n\n items = values.map((value, index) =>\n ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n })\n );\n }\n\n else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n\n items = values.map((value, index) =>\n ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index+1])\n })\n );\n }\n\n out.source = items;\n out.add = items;\n this.value = items;\n\n return out;\n }\n});\n","import {Transform} from 'vega-dataflow';\nimport {error, fastmap, inherits} from 'vega-util';\n\nconst sourceX = t => t.source.x;\nconst sourceY = t => t.source.y;\nconst targetX = t => t.target.x;\nconst targetY = t => t.target.y;\n\n /**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function LinkPath(params) {\n Transform.call(this, {}, params);\n}\n\nLinkPath.Definition = {\n 'type': 'LinkPath',\n 'metadata': {'modifies': true},\n 'params': [\n { 'name': 'sourceX', 'type': 'field', 'default': 'source.x' },\n { 'name': 'sourceY', 'type': 'field', 'default': 'source.y' },\n { 'name': 'targetX', 'type': 'field', 'default': 'target.x' },\n { 'name': 'targetY', 'type': 'field', 'default': 'target.y' },\n { 'name': 'orient', 'type': 'enum', 'default': 'vertical',\n 'values': ['horizontal', 'vertical', 'radial'] },\n { 'name': 'shape', 'type': 'enum', 'default': 'line',\n 'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal'] },\n { 'name': 'require', 'type': 'signal' },\n { 'name': 'as', 'type': 'string', 'default': 'path' }\n ]\n};\n\ninherits(LinkPath, Transform, {\n transform(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape\n + (_.orient ? '-' + _.orient : ''));\n }\n\n pulse.visit(pulse.SOURCE, t => {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\nconst line = (sx, sy, tx, ty) =>\n 'M' + sx + ',' + sy +\n 'L' + tx + ',' + ty;\n\nconst lineR= (sa, sr, ta, tr) => line(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n);\n\nconst arc = (sx, sy, tx, ty) => {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.sqrt(dx * dx + dy * dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy +\n 'A' + rr + ',' + rr +\n ' ' + ra + ' 0 1' +\n ' ' + tx + ',' + ty;\n};\n\nconst arcR = (sa, sr, ta, tr) => arc(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n);\n\nconst curve = (sx, sy, tx, ty) => {\n const dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy +\n 'C' + (sx+ix) + ',' + (sy+iy) +\n ' ' + (tx+iy) + ',' + (ty-ix) +\n ' ' + tx + ',' + ty;\n};\n\nconst curveR = (sa, sr, ta, tr) => curve(\n sr * Math.cos(sa), sr * Math.sin(sa),\n tr * Math.cos(ta), tr * Math.sin(ta)\n);\n\nconst orthoX = (sx, sy, tx, ty) =>\n 'M' + sx + ',' + sy +\n 'V' + ty + 'H' + tx;\n\nconst orthoY = (sx, sy, tx, ty) =>\n 'M' + sx + ',' + sy +\n 'H' + tx + 'V' + ty;\n\nconst orthoR = (sa, sr, ta, tr) => {\n const sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'A' + sr + ',' + sr + ' 0 0,' + (sf?1:0) +\n ' ' + (sr*tc) + ',' + (sr*ts) +\n 'L' + (tr*tc) + ',' + (tr*ts);\n};\n\nconst diagonalX = (sx, sy, tx, ty) => {\n const m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + m + ',' + sy +\n ' ' + m + ',' + ty +\n ' ' + tx + ',' + ty;\n};\n\nconst diagonalY = (sx, sy, tx, ty) => {\n const m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy +\n 'C' + sx + ',' + m +\n ' ' + tx + ',' + m +\n ' ' + tx + ',' + ty;\n};\n\nconst diagonalR = (sa, sr, ta, tr) => {\n const sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + (sr*sc) + ',' + (sr*ss) +\n 'C' + (mr*sc) + ',' + (mr*ss) +\n ' ' + (mr*tc) + ',' + (mr*ts) +\n ' ' + (tr*tc) + ',' + (tr*ts);\n};\n\nconst Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import {Transform} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\nimport {range, sum} from 'd3-array';\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2π] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nexport default function Pie(params) {\n Transform.call(this, null, params);\n}\n\nPie.Definition = {\n 'type': 'Pie',\n 'metadata': {'modifies': true},\n 'params': [\n { 'name': 'field', 'type': 'field' },\n { 'name': 'startAngle', 'type': 'number', 'default': 0 },\n { 'name': 'endAngle', 'type': 'number', 'default': 6.283185307179586 },\n { 'name': 'sort', 'type': 'boolean', 'default': false },\n { 'name': 'as', 'type': 'string', 'array': true, 'length': 2, 'default': ['startAngle', 'endAngle'] }\n ]\n};\n\ninherits(Pie, Transform, {\n transform(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i, t, v;\n\n if (_.sort) {\n index.sort((a, b) => values[a] - values[b]);\n }\n\n for (i=0; i<n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = (a += v * k);\n }\n\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import {Transform} from 'vega-dataflow';\nimport {\n error, inherits, isArray, isFunction, isString, peek, stringValue,\n toSet, zoomLinear, zoomLog, zoomPow, zoomSymlog\n} from 'vega-util';\n\nimport {\n Band,\n BinOrdinal,\n Diverging,\n Linear,\n Log,\n Ordinal,\n Point,\n Pow,\n Quantile,\n Quantize,\n Sequential,\n Sqrt,\n Symlog,\n Threshold,\n Time,\n UTC,\n bandSpace,\n interpolate as getInterpolate,\n scale as getScale,\n scheme as getScheme,\n interpolateColors,\n interpolateRange,\n isContinuous,\n isInterpolating,\n isLogarithmic,\n quantizeInterpolator,\n scaleImplicit,\n tickCount\n} from 'vega-scale';\n\nimport {range as sequence} from 'd3-array';\n\nimport {\n interpolate,\n interpolateRound\n} from 'd3-interpolate';\n\nconst DEFAULT_COUNT = 5;\n\nfunction includeZero(scale) {\n const type = scale.type;\n return !scale.bins && (\n type === Linear || type === Pow || type === Sqrt\n );\n}\n\nfunction includePad(type) {\n return isContinuous(type) && type !== Sequential;\n}\n\nconst SKIP = toSet([\n 'set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount',\n 'domain', 'domainMin', 'domainMid', 'domainMax',\n 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins',\n 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma'\n]);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nexport default function Scale(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Scale, Transform, {\n transform(_, pulse) {\n var df = pulse.dataflow,\n scale = this.value,\n key = scaleKey(_);\n\n if (!scale || key !== scale.type) {\n this.value = scale = getScale(key)();\n }\n\n for (key in _) if (!SKIP[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction(scale[key])\n ? scale[key](_[key])\n : df.warn('Unsupported scale property: ' + key);\n }\n\n configureRange(scale, _,\n configureBins(scale, _, configureDomain(scale, _, df))\n );\n\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\n\nfunction scaleKey(_) {\n var t = _.type, d = '', n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length\n : _.domain ? _.domain.length + +(_.domainMid != null)\n : 0;\n d = n === 2 ? Sequential + '-'\n : n === 3 ? Diverging + '-'\n : '';\n }\n\n return ((d + t) || Linear).toLowerCase();\n}\n\nfunction isContinuousColor(_) {\n const t = _.type;\n return isContinuous(t) && t !== Time && t !== UTC && (\n _.scheme || _.range && _.range.length && _.range.every(isString)\n );\n}\n\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n const raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || (_.zero === undefined && includeZero(scale)),\n n, mid;\n\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = ((domain = domain.slice()).length - 1) || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n\n if (_.domainMid != null) {\n mid = _.domainMid;\n const i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n domain.splice(i, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice((_.nice !== true && tickCount(scale, _.nice)) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\n\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\n\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac)\n : type === Sqrt ? zoomPow(domain, null, frac, 0.5)\n : type === Pow ? zoomPow(domain, null, frac, exponent || 1)\n : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1)\n : zoomLinear(domain, null, frac);\n\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length-1] = d[1];\n return domain;\n}\n\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0));\n\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\n\nfunction configureBins(scale, _, count) {\n let bins = _.bins;\n\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n const domain = scale.domain(),\n lo = domain[0],\n hi = peek(domain),\n step = bins.step;\n\n let start = bins.start == null ? lo : bins.start,\n stop = bins.stop == null ? hi : bins.stop;\n\n if (!step) error('Scale bins parameter missing step property.');\n if (start < lo) start = step * Math.ceil(lo / step);\n if (stop > hi) stop = step * Math.floor(hi / step);\n bins = sequence(start, stop + step / 2, step);\n }\n\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\n\nfunction configureRange(scale, _, count) {\n var type = scale.type,\n round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(type, _, count);\n if (isFunction(range)) {\n if (scale.interpolator) {\n return scale.interpolator(range);\n } else {\n error(`Scale type ${type} does not support interpolating color schemes.`);\n }\n }\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n if (range && isInterpolating(type)) {\n return scale.interpolator(\n interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma)\n );\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(getInterpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate);\n }\n\n if (range) scale.range(flip(range, _.reverse));\n}\n\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1\n : ((_.paddingInner != null ? _.paddingInner : _.padding) || 0);\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\n\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name, scheme;\n\n if (isArray(_.scheme)) {\n scheme = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme = getScheme(name);\n if (!scheme) error(`Unrecognized scheme name: ${_.scheme}`);\n }\n\n // determine size for potential discrete range\n count = (type === Threshold) ? count + 1\n : (type === BinOrdinal) ? count - 1\n : (type === Quantile || type === Quantize) ? (+_.schemeCount || DEFAULT_COUNT)\n : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme, extent, _.reverse)\n : isFunction(scheme) ? quantizeInterpolator(adjustScheme(scheme, extent), count)\n : type === Ordinal ? scheme : scheme.slice(0, count);\n}\n\nfunction adjustScheme(scheme, extent, reverse) {\n return (isFunction(scheme) && (extent || reverse))\n ? interpolateRange(scheme, flip(extent || [0, 1], reverse))\n : scheme;\n}\n\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n","import {Transform, stableCompare} from 'vega-dataflow';\nimport {inherits} from 'vega-util';\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nexport default function SortItems(params) {\n Transform.call(this, null, params);\n}\n\ninherits(SortItems, Transform, {\n transform(_, pulse) {\n const mod = _.modified('sort')\n || pulse.changed(pulse.ADD)\n || pulse.modified(_.sort.fields)\n || pulse.modified('datum');\n\n if (mod) pulse.source.sort(stableCompare(_.sort));\n\n this.modified(mod);\n return pulse;\n }\n});\n","import {Transform, stableCompare} from 'vega-dataflow';\nimport {inherits, one} from 'vega-util';\n\nconst Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\nexport default function Stack(params) {\n Transform.call(this, null, params);\n}\n\nStack.Definition = {\n 'type': 'Stack',\n 'metadata': {'modifies': true},\n 'params': [\n { 'name': 'field', 'type': 'field' },\n { 'name': 'groupby', 'type': 'field', 'array': true },\n { 'name': 'sort', 'type': 'compare' },\n { 'name': 'offset', 'type': 'enum', 'default': Zero, 'values': [Zero, Center, Normalize] },\n { 'name': 'as', 'type': 'string', 'array': true, 'length': 2, 'default': DefOutput }\n ]\n};\n\ninherits(Stack, Transform, {\n transform(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n sort = stableCompare(_.sort),\n field = _.field || one,\n stack = _.offset === Center ? stackCenter\n : _.offset === Normalize ? stackNormalize\n : stackZero,\n groups, i, n, max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, sort, field);\n\n // compute stack layouts per group\n for (i=0, n=groups.length, max=groups.max; i<n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0, t;\n\n for (; j<m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = (last += Math.abs(field(t)));\n }\n}\n\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0, v = 0, t;\n\n for (; j<m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\n\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0, v, t;\n\n for (; j<m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = (lastNeg += v);\n } else {\n t[y0] = lastPos;\n t[y1] = (lastPos += v);\n }\n }\n}\n\nfunction partition(data, groupby, sort, field) {\n var groups = [],\n get = f => f(t),\n map, i, n, m, t, k, g, s, max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map={}, i=0, n=data.length; i<n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = (g = []);\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k=0, max=0, m=groups.length; k<m; ++k) {\n g = groups[k];\n for (i=0, s=0, n=g.length; i<n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n\n return groups;\n}\n"],"names":["AxisTicks","params","Transform","call","this","DataJoin","defaultItemCreate","ingest","Encode","LegendEntries","inherits","transform","_","pulse","value","modified","StopPropagation","locale","dataflow","out","fork","NO_SOURCE","NO_FIELDS","ticks","scale","tally","count","values","length","tickCount","minstep","format","tickFormat","formatSpecifier","formatType","validTicks","tickValues","rem","map","i","index","label","extra","push","source","add","df","item","key","tupleid","isArray","encode","error","addAll","fastmap","test","t","exit","lookup","get","newMap","visit","ADD","k","x","empty","mod","set","datum","MOD","REM","changed","ADD_MOD","modifies","clean","cleanThreshold","runAfter","ADD_REM","fmod","encoders","every","e","reenter","update","falsy","enter","output","flag","REFLOW","domain","fraction","size","offset","ellipsis","items","type","SymbolLegend","limit","lskip","labelFormat","labelValues","warn","slice","isFunction","reduce","max","Math","constant","GradientLegend","scaleFraction","peek","perc","labelFraction","perc2","sourceX","sourceY","y","targetX","target","targetY","LinkPath","Definition","metadata","name","default","sx","sy","tx","ty","as","orient","shape","path","Paths","SOURCE","reflow","line","arc","dx","dy","rr","sqrt","atan2","PI","curve","ix","iy","sa","sr","ta","tr","cos","sin","sc","ss","tc","ts","abs","m","diagonalR","mr","range","start","stop","step","n","arguments","ceil","Array","Pie","define","constructor","factory","prototype","extend","parent","definition","Object","create","Color","array","v","startAngle","endAngle","field","one","data","a","valueof","sum","undefined","sort","b","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","l","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","NaN","r","g","rgbConvert","o","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","min","round","toString","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHsl","pow","gamma","nogamma","exponential","d","linear","rgbGamma","end","colorRgb","numberArray","c","genericArray","nb","na","date","Date","setTime","number","object","reA","reB","string","bi","am","bm","bs","lastIndex","q","zero","join","interpolate","ArrayBuffer","isView","DataView","valueOf","interpolateRound","includePad","isContinuous","Sequential","SKIP","toSet","Scale","domainCheck","isLogarithmic","stringValue","adjustScheme","scheme","extent","reverse","interpolateRange","flip","SortItems","Linear","Time","UTC","isString","isContinuousColor","rawDomain","domainMid","Diverging","scaleKey","getScale","rangeStep","Band","Point","outer","paddingOuter","padding","inner","paddingInner","bandSpace","configureRangeStep","schemeExtent","interpolateColors","interpolateGamma","getScheme","isInterpolating","Threshold","BinOrdinal","Quantile","Quantize","schemeCount","quantizeInterpolator","Ordinal","configureScheme","interpolator","getInterpolate","rangeRound","configureRange","bins","lo","hi","floor","sequence","domainRaw","configureBins","raw","mid","Pow","Sqrt","includeZero","pad","exponent","span","frac","Log","zoomLog","zoomPow","Symlog","zoomSymlog","zoomLinear","padDomain","domainMin","domainMax","splice","unknown","domainImplicit","scaleImplicit","nice","configureDomain","fields","stableCompare","Zero","Center","Normalize","DefOutput","Stack","stackCenter","group","y0","y1","last","j","stackNormalize","stackZero","lastPos","lastNeg","groups","stack","groupby","f","partition"],"mappings":"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"}
\No newline at end of file