@d3fc/d3fc-annotation
Advanced tools
Comparing version 2.4.42 to 2.5.0
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-scale'), require('d3-selection'), require('d3-path'), require('d3-shape'), require('d3-array')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'd3-scale', 'd3-selection', 'd3-path', 'd3-shape', 'd3-array'], factory) : | ||
(global = global || self, factory(global.fc = global.fc || {}, global.d3, global.d3, global.d3, global.d3, global.d3)); | ||
}(this, function (exports, d3Scale, d3Selection, d3Path, d3Shape, d3Array) { 'use strict'; | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-scale'), require('d3-selection'), require('@d3fc/d3fc-data-join'), require('@d3fc/d3fc-shape'), require('@d3fc/d3fc-rebind'), require('@d3fc/d3fc-series'), require('d3-shape')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'd3-scale', 'd3-selection', '@d3fc/d3fc-data-join', '@d3fc/d3fc-shape', '@d3fc/d3fc-rebind', '@d3fc/d3fc-series', 'd3-shape'], factory) : | ||
(global = global || self, factory(global.fc = global.fc || {}, global.d3, global.d3, global.fc, global.fc, global.fc, global.fc, global.d3)); | ||
}(this, function (exports, d3Scale, d3Selection, d3fcDataJoin, d3fcShape, d3fcRebind, d3fcSeries, d3Shape) { 'use strict'; | ||
var d3Scale__default = 'default' in d3Scale ? d3Scale['default'] : d3Scale; | ||
var d3Shape__default = 'default' in d3Shape ? d3Shape['default'] : d3Shape; | ||
// "Caution: avoid interpolating to or from the number zero when the interpolator is used to generate | ||
// a string (such as with attr). | ||
// Very small values, when stringified, may be converted to scientific notation and | ||
// cause a temporarily invalid attribute or style property value. | ||
// For example, the number 0.0000001 is converted to the string "1e-7". | ||
// This is particularly noticeable when interpolating opacity values. | ||
// To avoid scientific notation, start or end the transition at 1e-6, | ||
// which is the smallest value that is not stringified in exponential notation." | ||
// - https://github.com/mbostock/d3/wiki/Transitions#d3_interpolateNumber | ||
const effectivelyZero = 1e-6; // Wrapper around d3's selectAll/data data-join, which allows decoration of the result. | ||
// This is achieved by appending the element to the enter selection before exposing it. | ||
// A default transition of fade in/out is also implicitly added but can be modified. | ||
var dataJoin = ((element, className) => { | ||
element = element || 'g'; | ||
let key = (_, i) => i; | ||
let explicitTransition = null; | ||
const dataJoin = function (container, data) { | ||
data = data || (d => d); | ||
const implicitTransition = container.selection ? container : null; | ||
if (implicitTransition) { | ||
container = container.selection(); | ||
} | ||
const selected = container.selectAll((d, i, nodes) => Array.from(nodes[i].childNodes).filter(node => node.nodeType === 1)).filter(className == null ? element : `${element}.${className}`); | ||
let update = selected.data(data, key); | ||
const enter = update.enter().append(element).attr('class', className); | ||
let exit = update.exit(); // automatically merge in the enter selection | ||
update = update.merge(enter); // if transitions are enabled apply a default fade in/out transition | ||
const transition = implicitTransition || explicitTransition; | ||
if (transition) { | ||
update = update.transition(transition).style('opacity', 1); | ||
enter.style('opacity', effectivelyZero); | ||
exit = exit.transition(transition).style('opacity', effectivelyZero); | ||
} | ||
exit.remove(); | ||
update.enter = () => enter; | ||
update.exit = () => exit; | ||
return update; | ||
}; | ||
dataJoin.element = (...args) => { | ||
if (!args.length) { | ||
return element; | ||
} | ||
element = args[0]; | ||
return dataJoin; | ||
}; | ||
dataJoin.className = (...args) => { | ||
if (!args.length) { | ||
return className; | ||
} | ||
className = args[0]; | ||
return dataJoin; | ||
}; | ||
dataJoin.key = (...args) => { | ||
if (!args.length) { | ||
return key; | ||
} | ||
key = args[0]; | ||
return dataJoin; | ||
}; | ||
dataJoin.transition = (...args) => { | ||
if (!args.length) { | ||
return explicitTransition; | ||
} | ||
explicitTransition = args[0]; | ||
return dataJoin; | ||
}; | ||
return dataJoin; | ||
}); | ||
var functor = (v => typeof v === 'function' ? v : () => v); | ||
// bar has a fixed width, whilst the x, y and height are obtained from each data | ||
// point via the supplied accessor functions. | ||
var shapeBar = (() => { | ||
let context = null; | ||
let x = d => d.x; | ||
let y = d => d.y; | ||
let horizontalAlign = 'center'; | ||
let verticalAlign = 'center'; | ||
let height = d => d.height; | ||
let width = functor(3); | ||
const bar = function (data, index) { | ||
const drawingContext = context || d3Path.path(); | ||
data.forEach(function (d, i) { | ||
const xValue = x.call(this, d, index || i); | ||
const yValue = y.call(this, d, index || i); | ||
const barHeight = height.call(this, d, index || i); | ||
const barWidth = width.call(this, d, index || i); | ||
let horizontalOffset; | ||
switch (horizontalAlign) { | ||
case 'left': | ||
horizontalOffset = barWidth; | ||
break; | ||
case 'right': | ||
horizontalOffset = 0; | ||
break; | ||
case 'center': | ||
horizontalOffset = barWidth / 2; | ||
break; | ||
default: | ||
throw new Error('Invalid horizontal alignment ' + horizontalAlign); | ||
} | ||
let verticalOffset; | ||
switch (verticalAlign) { | ||
case 'bottom': | ||
verticalOffset = -barHeight; | ||
break; | ||
case 'top': | ||
verticalOffset = 0; | ||
break; | ||
case 'center': | ||
verticalOffset = barHeight / 2; | ||
break; | ||
default: | ||
throw new Error('Invalid vertical alignment ' + verticalAlign); | ||
} | ||
drawingContext.rect(xValue - horizontalOffset, yValue - verticalOffset, barWidth, barHeight); | ||
}, this); | ||
return context ? null : drawingContext.toString(); | ||
}; | ||
bar.context = (...args) => { | ||
if (!args.length) { | ||
return context; | ||
} | ||
context = args[0]; | ||
return bar; | ||
}; | ||
bar.x = (...args) => { | ||
if (!args.length) { | ||
return x; | ||
} | ||
x = functor(args[0]); | ||
return bar; | ||
}; | ||
bar.y = (...args) => { | ||
if (!args.length) { | ||
return y; | ||
} | ||
y = functor(args[0]); | ||
return bar; | ||
}; | ||
bar.width = (...args) => { | ||
if (!args.length) { | ||
return width; | ||
} | ||
width = functor(args[0]); | ||
return bar; | ||
}; | ||
bar.horizontalAlign = (...args) => { | ||
if (!args.length) { | ||
return horizontalAlign; | ||
} | ||
horizontalAlign = args[0]; | ||
return bar; | ||
}; | ||
bar.height = (...args) => { | ||
if (!args.length) { | ||
return height; | ||
} | ||
height = functor(args[0]); | ||
return bar; | ||
}; | ||
bar.verticalAlign = (...args) => { | ||
if (!args.length) { | ||
return verticalAlign; | ||
} | ||
verticalAlign = args[0]; | ||
return bar; | ||
}; | ||
return bar; | ||
}); | ||
var constant = (function (value) { | ||
@@ -258,4 +28,4 @@ return typeof value === 'function' ? value : function () { | ||
var join = dataJoin('g', 'annotation-band'); | ||
var pathGenerator = shapeBar().horizontalAlign('center').verticalAlign('center').x(0).y(0); | ||
var join = d3fcDataJoin.dataJoin('g', 'annotation-band'); | ||
var pathGenerator = d3fcShape.shapeBar().horizontalAlign('center').verticalAlign('center').x(0).y(0); | ||
@@ -363,57 +133,2 @@ var instance = function instance(selection) { | ||
var createReboundMethod = ((target, source, name) => { | ||
const method = source[name]; | ||
if (typeof method !== 'function') { | ||
throw new Error(`Attempt to rebind ${name} which isn't a function on the source object`); | ||
} | ||
return (...args) => { | ||
var value = method.apply(source, args); | ||
return value === source ? target : value; | ||
}; | ||
}); | ||
var rebind = ((target, source, ...names) => { | ||
for (const name of names) { | ||
target[name] = createReboundMethod(target, source, name); | ||
} | ||
return target; | ||
}); | ||
const createTransform = transforms => name => transforms.reduce((name, fn) => name && fn(name), name); | ||
var rebindAll = ((target, source, ...transforms) => { | ||
const transform = createTransform(transforms); | ||
for (const name of Object.keys(source)) { | ||
const result = transform(name); | ||
if (result) { | ||
target[result] = createReboundMethod(target, source, name); | ||
} | ||
} | ||
return target; | ||
}); | ||
var regexify = (strsOrRegexes => strsOrRegexes.map(strOrRegex => typeof strOrRegex === 'string' ? new RegExp(`^${strOrRegex}$`) : strOrRegex)); | ||
var exclude = ((...exclusions) => { | ||
exclusions = regexify(exclusions); | ||
return name => exclusions.every(exclusion => !exclusion.test(name)) && name; | ||
}); | ||
var include = ((...inclusions) => { | ||
inclusions = regexify(inclusions); | ||
return name => inclusions.some(inclusion => inclusion.test(name)) && name; | ||
}); | ||
var includeMap = (mappings => name => mappings[name]); | ||
const capitalizeFirstLetter = str => str[0].toUpperCase() + str.slice(1); | ||
var prefix = (prefix => name => prefix + capitalizeFirstLetter(name)); | ||
var band$1 = (function () { | ||
@@ -434,3 +149,3 @@ var xScale = d3Scale.scaleIdentity(); | ||
var pathGenerator = shapeBar().horizontalAlign('right').verticalAlign('top'); | ||
var pathGenerator = d3fcShape.shapeBar().horizontalAlign('right').verticalAlign('top'); | ||
@@ -525,3 +240,3 @@ var instance = function instance(data) { | ||
rebind(instance, pathGenerator, 'context'); | ||
d3fcRebind.rebind(instance, pathGenerator, 'context'); | ||
return instance; | ||
@@ -543,3 +258,3 @@ }); | ||
var orient = 'horizontal'; | ||
var join = dataJoin('g', 'annotation-line'); | ||
var join = d3fcDataJoin.dataJoin('g', 'annotation-line'); | ||
@@ -657,367 +372,2 @@ var instance = function instance(selection) { | ||
var functor$1 = (d => typeof d === 'function' ? d : () => d); | ||
// Checks that passed properties are 'defined', meaning that calling them with (d, i) returns non null values | ||
function defined() { | ||
const outerArguments = arguments; | ||
return function (d, i) { | ||
for (let c = 0, j = outerArguments.length; c < j; c++) { | ||
if (outerArguments[c](d, i) == null) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
}; | ||
} | ||
// determines the offset required along the cross scale based | ||
// on the series alignment | ||
var alignOffset = ((align, width) => { | ||
switch (align) { | ||
case 'left': | ||
return width / 2; | ||
case 'right': | ||
return -width / 2; | ||
default: | ||
return 0; | ||
} | ||
}); | ||
var createBase = (initialValues => { | ||
const env = Object.assign({}, initialValues); | ||
const base = () => {}; | ||
Object.keys(env).forEach(key => { | ||
base[key] = (...args) => { | ||
if (!args.length) { | ||
return env[key]; | ||
} | ||
env[key] = args[0]; | ||
return base; | ||
}; | ||
}); | ||
return base; | ||
}); | ||
var xyBase = (() => { | ||
let baseValue = () => 0; | ||
let crossValue = d => d.x; | ||
let mainValue = d => d.y; | ||
let align = 'center'; | ||
let bandwidth = () => 5; | ||
let orient = 'vertical'; | ||
const base = createBase({ | ||
decorate: () => {}, | ||
defined: (d, i) => defined(baseValue, crossValue, mainValue)(d, i), | ||
xScale: d3Scale.scaleIdentity(), | ||
yScale: d3Scale.scaleIdentity() | ||
}); | ||
base.values = (d, i) => { | ||
const width = bandwidth(d, i); | ||
const offset = alignOffset(align, width); | ||
const xScale = base.xScale(); | ||
const yScale = base.yScale(); | ||
if (orient === 'vertical') { | ||
const y = yScale(mainValue(d, i), i); | ||
const y0 = yScale(baseValue(d, i), i); | ||
const x = xScale(crossValue(d, i), i) + offset; | ||
return { | ||
d, | ||
x, | ||
y, | ||
y0, | ||
width, | ||
height: y - y0, | ||
origin: [x, y], | ||
baseOrigin: [x, y0], | ||
transposedX: x, | ||
transposedY: y | ||
}; | ||
} else { | ||
const y = xScale(mainValue(d, i), i); | ||
const y0 = xScale(baseValue(d, i), i); | ||
const x = yScale(crossValue(d, i), i) + offset; | ||
return { | ||
d, | ||
x, | ||
y, | ||
y0, | ||
width, | ||
height: y - y0, | ||
origin: [y, x], | ||
baseOrigin: [y0, x], | ||
transposedX: y, | ||
transposedY: x | ||
}; | ||
} | ||
}; | ||
base.xValues = () => orient === 'vertical' ? [crossValue] : [baseValue, mainValue]; | ||
base.yValues = () => orient !== 'vertical' ? [crossValue] : [baseValue, mainValue]; | ||
base.baseValue = (...args) => { | ||
if (!args.length) { | ||
return baseValue; | ||
} | ||
baseValue = functor$1(args[0]); | ||
return base; | ||
}; | ||
base.crossValue = (...args) => { | ||
if (!args.length) { | ||
return crossValue; | ||
} | ||
crossValue = functor$1(args[0]); | ||
return base; | ||
}; | ||
base.mainValue = (...args) => { | ||
if (!args.length) { | ||
return mainValue; | ||
} | ||
mainValue = functor$1(args[0]); | ||
return base; | ||
}; | ||
base.bandwidth = (...args) => { | ||
if (!args.length) { | ||
return bandwidth; | ||
} | ||
bandwidth = functor$1(args[0]); | ||
return base; | ||
}; | ||
base.align = (...args) => { | ||
if (!args.length) { | ||
return align; | ||
} | ||
align = args[0]; | ||
return base; | ||
}; | ||
base.orient = (...args) => { | ||
if (!args.length) { | ||
return orient; | ||
} | ||
orient = args[0]; | ||
return base; | ||
}; | ||
return base; | ||
}); | ||
const red = '#c60'; | ||
const green = '#6c0'; | ||
const black = '#000'; | ||
const gray = '#ddd'; | ||
const darkGray = '#999'; | ||
var colors = { | ||
red, | ||
green, | ||
black, | ||
gray, | ||
darkGray | ||
}; | ||
var seriesSvgPoint = (() => { | ||
const symbol = d3Shape.symbol(); | ||
const base = xyBase(); | ||
const join = dataJoin('g', 'point'); | ||
const containerTransform = origin => 'translate(' + origin[0] + ', ' + origin[1] + ')'; | ||
const point = selection => { | ||
if (selection.selection) { | ||
join.transition(selection); | ||
} | ||
selection.each((data, index, group) => { | ||
const filteredData = data.filter(base.defined()); | ||
const g = join(d3Selection.select(group[index]), filteredData); | ||
g.enter().attr('transform', (d, i) => containerTransform(base.values(d, i).origin)).attr('fill', colors.gray).attr('stroke', colors.black).append('path'); | ||
g.attr('transform', (d, i) => containerTransform(base.values(d, i).origin)).select('path').attr('d', symbol); | ||
base.decorate()(g, data, index); | ||
}); | ||
}; | ||
rebindAll(point, base, exclude('baseValue', 'bandwidth', 'align')); | ||
rebind(point, join, 'key'); | ||
rebind(point, symbol, 'type', 'size'); | ||
return point; | ||
}); | ||
var seriesCanvasPoint = (() => { | ||
const symbol = d3Shape.symbol(); | ||
const base = xyBase(); | ||
const point = data => { | ||
const filteredData = data.filter(base.defined()); | ||
const context = symbol.context(); | ||
filteredData.forEach((d, i) => { | ||
context.save(); | ||
const values = base.values(d, i); | ||
context.translate(values.origin[0], values.origin[1]); | ||
context.beginPath(); | ||
context.strokeStyle = colors.black; | ||
context.fillStyle = colors.gray; | ||
base.decorate()(context, d, i); | ||
symbol(d, i); | ||
context.fill(); | ||
context.stroke(); | ||
context.closePath(); | ||
context.restore(); | ||
}); | ||
}; | ||
rebindAll(point, base, exclude('baseValue', 'bandwidth', 'align')); | ||
rebind(point, symbol, 'size', 'type', 'context'); | ||
return point; | ||
}); | ||
var multiBase = (() => { | ||
let series = []; | ||
let mapping = d => d; | ||
let key = (_, i) => i; | ||
const multi = createBase({ | ||
decorate: () => {}, | ||
xScale: d3Scale.scaleIdentity(), | ||
yScale: d3Scale.scaleIdentity() | ||
}); | ||
multi.xValues = () => series.map(s => s.xValues()).reduce((a, b) => a.concat(b)); | ||
multi.yValues = () => series.map(s => s.yValues()).reduce((a, b) => a.concat(b)); | ||
multi.mapping = (...args) => { | ||
if (!args.length) { | ||
return mapping; | ||
} | ||
mapping = args[0]; | ||
return multi; | ||
}; | ||
multi.key = (...args) => { | ||
if (!args.length) { | ||
return key; | ||
} | ||
key = args[0]; | ||
return multi; | ||
}; | ||
multi.series = (...args) => { | ||
if (!args.length) { | ||
return series; | ||
} | ||
series = args[0]; | ||
return multi; | ||
}; | ||
return multi; | ||
}); | ||
var seriesSvgMulti = (() => { | ||
const base = multiBase(); | ||
const innerJoin = dataJoin('g'); | ||
const join = dataJoin('g', 'multi'); | ||
const multi = selection => { | ||
if (selection.selection) { | ||
join.transition(selection); | ||
innerJoin.transition(selection); | ||
} | ||
const mapping = base.mapping(); | ||
const series = base.series(); | ||
const xScale = base.xScale(); | ||
const yScale = base.yScale(); | ||
selection.each((data, index, group) => { | ||
const container = join(d3Selection.select(group[index]), series); // iterate over the containers, 'call'-ing the series for each | ||
container.each((dataSeries, seriesIndex, seriesGroup) => { | ||
dataSeries.xScale(xScale).yScale(yScale); | ||
const seriesData = mapping(data, seriesIndex, series); | ||
const innerContainer = innerJoin(d3Selection.select(seriesGroup[seriesIndex]), [seriesData]); | ||
innerContainer.call(dataSeries); | ||
}); | ||
const unwrappedSelection = container.selection ? container.selection() : container; | ||
unwrappedSelection.order(); | ||
base.decorate()(container, data, index); | ||
}); | ||
}; | ||
rebindAll(multi, base); | ||
rebind(multi, join, 'key'); | ||
return multi; | ||
}); | ||
var seriesCanvasMulti = (() => { | ||
let context = null; | ||
const base = multiBase(); | ||
const multi = data => { | ||
const mapping = base.mapping(); | ||
const series = base.series(); | ||
const xScale = base.xScale(); | ||
const yScale = base.yScale(); | ||
series.forEach((dataSeries, index) => { | ||
const seriesData = mapping(data, index, series); | ||
dataSeries.context(context).xScale(xScale).yScale(yScale); | ||
let adaptedDecorate; | ||
if (dataSeries.decorate) { | ||
adaptedDecorate = dataSeries.decorate(); | ||
dataSeries.decorate((c, d, i) => { | ||
base.decorate()(c, data, index); | ||
adaptedDecorate(c, d, i); | ||
}); | ||
} else { | ||
base.decorate()(context, data, index); | ||
} | ||
dataSeries(seriesData); | ||
if (adaptedDecorate) { | ||
dataSeries.decorate(adaptedDecorate); | ||
} | ||
}); | ||
}; | ||
multi.context = (...args) => { | ||
if (!args.length) { | ||
return context; | ||
} | ||
context = args[0]; | ||
return multi; | ||
}; | ||
rebindAll(multi, base); | ||
return multi; | ||
}); | ||
function crosshair () { | ||
@@ -1037,4 +387,4 @@ var x = function x(d) { | ||
var join = dataJoin('g', 'annotation-crosshair'); | ||
var point = seriesSvgPoint(); | ||
var join = d3fcDataJoin.dataJoin('g', 'annotation-crosshair'); | ||
var point = d3fcSeries.seriesSvgPoint(); | ||
var horizontalLine = annotationLine(); | ||
@@ -1046,3 +396,3 @@ var verticalLine = annotationLine().orient('vertical'); // The line annotations and point series used to render the crosshair are positioned using | ||
var yIdentity = d3Scale.scaleIdentity(); | ||
var multi = seriesSvgMulti().series([horizontalLine, verticalLine, point]).xScale(xIdentity).yScale(yIdentity).mapping(function (data) { | ||
var multi = d3fcSeries.seriesSvgMulti().series([horizontalLine, verticalLine, point]).xScale(xIdentity).yScale(yIdentity).mapping(function (data) { | ||
return [data]; | ||
@@ -1119,5 +469,5 @@ }); | ||
var lineIncludes = include('label'); | ||
rebindAll(instance, horizontalLine, lineIncludes, prefix('y')); | ||
rebindAll(instance, verticalLine, lineIncludes, prefix('x')); | ||
var lineIncludes = d3fcRebind.include('label'); | ||
d3fcRebind.rebindAll(instance, horizontalLine, lineIncludes, d3fcRebind.prefix('y')); | ||
d3fcRebind.rebindAll(instance, verticalLine, lineIncludes, d3fcRebind.prefix('x')); | ||
return instance; | ||
@@ -1235,3 +585,3 @@ } | ||
rebind(instance, lineData, 'context'); | ||
d3fcRebind.rebind(instance, lineData, 'context'); | ||
return instance; | ||
@@ -1251,3 +601,3 @@ }); | ||
var yScale = d3Scale.scaleIdentity(); | ||
var point = seriesCanvasPoint(); | ||
var point = d3fcSeries.seriesCanvasPoint(); | ||
var horizontalLine = annotationLine$1(); | ||
@@ -1259,3 +609,3 @@ var verticalLine = annotationLine$1().orient('vertical'); // The line annotations and point series used to render the crosshair are positioned using | ||
var yIdentity = d3Scale.scaleIdentity(); | ||
var multi = seriesCanvasMulti().series([horizontalLine, verticalLine, point]).xScale(xIdentity).yScale(yIdentity).mapping(function (data) { | ||
var multi = d3fcSeries.seriesCanvasMulti().series([horizontalLine, verticalLine, point]).xScale(xIdentity).yScale(yIdentity).mapping(function (data) { | ||
return [data]; | ||
@@ -1315,7 +665,7 @@ }); | ||
var lineIncludes = include('label', 'decorate'); | ||
rebindAll(instance, horizontalLine, lineIncludes, prefix('y')); | ||
rebindAll(instance, verticalLine, lineIncludes, prefix('x')); | ||
rebind(instance, point, 'decorate'); | ||
rebind(instance, multi, 'context'); | ||
var lineIncludes = d3fcRebind.include('label', 'decorate'); | ||
d3fcRebind.rebindAll(instance, horizontalLine, lineIncludes, d3fcRebind.prefix('y')); | ||
d3fcRebind.rebindAll(instance, verticalLine, lineIncludes, d3fcRebind.prefix('x')); | ||
d3fcRebind.rebind(instance, point, 'decorate'); | ||
d3fcRebind.rebind(instance, multi, 'context'); | ||
return instance; | ||
@@ -1405,4 +755,4 @@ }); | ||
var yTicks = ticks(); | ||
var xJoin = dataJoin('line', 'gridline-y').key(identity); | ||
var yJoin = dataJoin('line', 'gridline-x').key(identity); | ||
var xJoin = d3fcDataJoin.dataJoin('line', 'gridline-y').key(identity); | ||
var yJoin = d3fcDataJoin.dataJoin('line', 'gridline-x').key(identity); | ||
@@ -1459,10 +809,10 @@ var instance = function instance(selection) { | ||
rebindAll(instance, xJoin, includeMap({ | ||
d3fcRebind.rebindAll(instance, xJoin, d3fcRebind.includeMap({ | ||
'key': 'xKey' | ||
})); | ||
rebindAll(instance, yJoin, includeMap({ | ||
d3fcRebind.rebindAll(instance, yJoin, d3fcRebind.includeMap({ | ||
'key': 'yKey' | ||
})); | ||
rebindAll(instance, xTicks, prefix('x')); | ||
rebindAll(instance, yTicks, prefix('y')); | ||
d3fcRebind.rebindAll(instance, xTicks, d3fcRebind.prefix('x')); | ||
d3fcRebind.rebindAll(instance, yTicks, d3fcRebind.prefix('y')); | ||
return instance; | ||
@@ -1532,5 +882,5 @@ }); | ||
rebindAll(instance, xTicks, prefix('x')); | ||
rebindAll(instance, yTicks, prefix('y')); | ||
rebind(instance, lineData, 'context'); | ||
d3fcRebind.rebindAll(instance, xTicks, d3fcRebind.prefix('x')); | ||
d3fcRebind.rebindAll(instance, yTicks, d3fcRebind.prefix('y')); | ||
d3fcRebind.rebind(instance, lineData, 'context'); | ||
return instance; | ||
@@ -1537,0 +887,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports,require("d3-scale"),require("d3-selection"),require("d3-path"),require("d3-shape"),require("d3-array")):"function"==typeof define&&define.amd?define(["exports","d3-scale","d3-selection","d3-path","d3-shape","d3-array"],b):(a=a||self,b(a.fc=a.fc||{},a.d3,a.d3,a.d3,a.d3,a.d3))})(this,function(a,b,c,d,e){'use strict';function f(){const a=arguments;return function(b,d){for(let e=0,c=a.length;e<c;e++)if(null==a[e](b,d))return!1;return!0}}function g(a){return h(a)||i(a)||j()}function h(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}}function i(a){if(Symbol.iterator in Object(a)||"[object Arguments]"===Object.prototype.toString.call(a))return Array.from(a)}function j(){throw new TypeError("Invalid attempt to spread non-iterable instance")}var k="default"in b?b["default"]:b,l="default"in e?e["default"]:e;const m=1e-6;var n=(a,b)=>{a=a||"g";let c=(a,b)=>b,d=null;const e=function(e,f){f=f||(a=>a);const g=e.selection?e:null;g&&(e=e.selection());const h=e.selectAll((a,b,c)=>Array.from(c[b].childNodes).filter(a=>1===a.nodeType)).filter(null==b?a:`${a}.${b}`);let i=h.data(f,c);const j=i.enter().append(a).attr("class",b);let k=i.exit();i=i.merge(j);const l=g||d;return l&&(i=i.transition(l).style("opacity",1),j.style("opacity",m),k=k.transition(l).style("opacity",m)),k.remove(),i.enter=()=>j,i.exit=()=>k,i};return e.element=(...b)=>b.length?(a=b[0],e):a,e.className=(...a)=>a.length?(b=a[0],e):b,e.key=(...a)=>a.length?(c=a[0],e):c,e.transition=(...a)=>a.length?(d=a[0],e):d,e},o=a=>"function"==typeof a?a:()=>a,p=()=>{let a=null,b=a=>a.x,c=a=>a.y,e="center",f="center",g=a=>a.height,h=o(3);const i=function(i,j){const k=a||d.path();return i.forEach(function(a,d){const i=b.call(this,a,j||d),l=c.call(this,a,j||d),m=g.call(this,a,j||d),n=h.call(this,a,j||d);let o;switch(e){case"left":o=n;break;case"right":o=0;break;case"center":o=n/2;break;default:throw new Error("Invalid horizontal alignment "+e);}let p;switch(f){case"bottom":p=-m;break;case"top":p=0;break;case"center":p=m/2;break;default:throw new Error("Invalid vertical alignment "+f);}k.rect(i-o,l-p,n,m)},this),a?null:k.toString()};return i.context=(...b)=>b.length?(a=b[0],i):a,i.x=(...a)=>a.length?(b=o(a[0]),i):b,i.y=(...a)=>a.length?(c=o(a[0]),i):c,i.width=(...a)=>a.length?(h=o(a[0]),i):h,i.horizontalAlign=(...a)=>a.length?(e=a[0],i):e,i.height=(...a)=>a.length?(g=o(a[0]),i):g,i.verticalAlign=(...a)=>a.length?(f=a[0],i):f,i},q=function(a){return"function"==typeof a?a:function(){return a}},r=(a,b,c)=>{const d=b[c];if("function"!=typeof d)throw new Error(`Attempt to rebind ${c} which isn't a function on the source object`);return(...c)=>{var e=d.apply(b,c);return e===b?a:e}},s=(a,b,...c)=>{for(const d of c)a[d]=r(a,b,d);return a};const t=a=>b=>a.reduce((a,b)=>a&&b(a),b);var u=(a,b,...c)=>{const d=t(c);for(const e of Object.keys(b)){const c=d(e);c&&(a[c]=r(a,b,e))}return a},v=a=>a.map(a=>"string"==typeof a?new RegExp(`^${a}$`):a),w=(...a)=>(a=v(a),b=>a.every(a=>!a.test(b))&&b),z=(...a)=>(a=v(a),b=>a.some(a=>a.test(b))&&b),A=a=>b=>a[b];const B=a=>a[0].toUpperCase()+a.slice(1);var C=a=>b=>a+B(b),D=function(){var a=b.scaleIdentity(),d=b.scaleIdentity(),e=function(a){return a},f=e,h=function(){},i="horizontal",j=n("g","annotation-line"),k=function(b){if(b.selection&&j.transition(b),"horizontal"!==i&&"vertical"!==i)throw new Error("Invalid orientation");var g="horizontal"===i,k=g?function(c,a){return"translate(".concat(c,", ").concat(a,")")}:function(c,a){return"translate(".concat(a,", ").concat(c,")")},l=g?"x2":"y2",m=g?a:d,n=g?d:a,o=g?"left-handle":"bottom-handle",p=g?"right-handle":"top-handle",q=g?"9":"0",r=g?"0":"9",s=g?"0.32em":"0.71em",t=g?"start":"middle",u=m.range(),v=function(){return k(u[0],n(e.apply(void 0,arguments)))},w=u[1]-u[0];b.each(function(a,b,d){var e=j(c.select(d[b]),a),g=e.enter().attr("transform",v).style("stroke","#bbb");g.append("line").attr(l,w),g.append("g").classed(o,!0).style("stroke","none"),g.append("g").classed(p,!0).style("stroke","none").attr("transform",k(w,0)).append("text").attr("text-anchor",t).attr("x",q).attr("y",r).attr("dy",s),e.attr("class","annotation-line ".concat(i)),e.attr("transform",v),e.select("line").attr(l,w),e.select("g."+p).attr("transform",k(w,0)),e.select("text").text(f),h(e,a,b)})};return k.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],k):a},k.yScale=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],k):d},k.value=function(){return arguments.length?(e=q(0>=arguments.length?void 0:arguments[0]),k):e},k.label=function(){return arguments.length?(f=q(0>=arguments.length?void 0:arguments[0]),k):f},k.decorate=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],k):h},k.orient=function(){return arguments.length?(i=0>=arguments.length?void 0:arguments[0],k):i},k},E=a=>"function"==typeof a?a:()=>a,F=(a,b)=>"left"===a?b/2:"right"===a?-b/2:0,G=a=>{const b=Object.assign({},a),c=()=>{};return Object.keys(b).forEach(a=>{c[a]=(...d)=>d.length?(b[a]=d[0],c):b[a]}),c},H=()=>{let a=()=>0,c=a=>a.x,e=a=>a.y,g="center",h=()=>5,j="vertical";const k=G({decorate:()=>{},defined:(b,d)=>f(a,c,e)(b,d),xScale:b.scaleIdentity(),yScale:b.scaleIdentity()});return k.values=(b,d)=>{const f=h(b,d),i=F(g,f),l=k.xScale(),m=k.yScale();if("vertical"===j){const g=m(e(b,d),d),h=m(a(b,d),d),j=l(c(b,d),d)+i;return{d:b,x:j,y:g,y0:h,width:f,height:g-h,origin:[j,g],baseOrigin:[j,h],transposedX:j,transposedY:g}}else{const g=l(e(b,d),d),h=l(a(b,d),d),j=m(c(b,d),d)+i;return{d:b,x:j,y:g,y0:h,width:f,height:g-h,origin:[g,j],baseOrigin:[h,j],transposedX:g,transposedY:j}}},k.xValues=()=>"vertical"===j?[c]:[a,e],k.yValues=()=>"vertical"===j?[a,e]:[c],k.baseValue=(...b)=>b.length?(a=E(b[0]),k):a,k.crossValue=(...a)=>a.length?(c=E(a[0]),k):c,k.mainValue=(...a)=>a.length?(e=E(a[0]),k):e,k.bandwidth=(...a)=>a.length?(h=E(a[0]),k):h,k.align=(...a)=>a.length?(g=a[0],k):g,k.orient=(...a)=>a.length?(j=a[0],k):j,k};var I={red:"#c60",green:"#6c0",black:"#000",gray:"#ddd",darkGray:"#999"},J=()=>{const a=e.symbol(),b=H(),d=n("g","point"),f=a=>"translate("+a[0]+", "+a[1]+")",g=e=>{e.selection&&d.transition(e),e.each((e,h,i)=>{const j=e.filter(b.defined()),k=d(c.select(i[h]),j);k.enter().attr("transform",(a,c)=>f(b.values(a,c).origin)).attr("fill",I.gray).attr("stroke",I.black).append("path"),k.attr("transform",(a,c)=>f(b.values(a,c).origin)).select("path").attr("d",a),b.decorate()(k,e,h)})};return u(g,b,w("baseValue","bandwidth","align")),s(g,d,"key"),s(g,a,"type","size"),g},K=()=>{const a=e.symbol(),b=H(),c=c=>{const d=c.filter(b.defined()),e=a.context();d.forEach((c,d)=>{e.save();const f=b.values(c,d);e.translate(f.origin[0],f.origin[1]),e.beginPath(),e.strokeStyle=I.black,e.fillStyle=I.gray,b.decorate()(e,c,d),a(c,d),e.fill(),e.stroke(),e.closePath(),e.restore()})};return u(c,b,w("baseValue","bandwidth","align")),s(c,a,"size","type","context"),c},L=()=>{let a=[],c=a=>a,d=(a,b)=>b;const e=G({decorate:()=>{},xScale:b.scaleIdentity(),yScale:b.scaleIdentity()});return e.xValues=()=>a.map(a=>a.xValues()).reduce((c,a)=>c.concat(a)),e.yValues=()=>a.map(a=>a.yValues()).reduce((c,a)=>c.concat(a)),e.mapping=(...a)=>a.length?(c=a[0],e):c,e.key=(...a)=>a.length?(d=a[0],e):d,e.series=(...b)=>b.length?(a=b[0],e):a,e},M=()=>{const a=L(),b=n("g"),d=n("g","multi"),e=e=>{e.selection&&(d.transition(e),b.transition(e));const f=a.mapping(),g=a.series(),h=a.xScale(),i=a.yScale();e.each((e,j,k)=>{const l=d(c.select(k[j]),g);l.each((a,d,j)=>{a.xScale(h).yScale(i);const k=f(e,d,g),l=b(c.select(j[d]),[k]);l.call(a)});const m=l.selection?l.selection():l;m.order(),a.decorate()(l,e,j)})};return u(e,a),s(e,d,"key"),e},N=()=>{let a=null;const b=L(),c=e=>{const f=b.mapping(),g=b.series(),h=b.xScale(),i=b.yScale();g.forEach((c,j)=>{const k=f(e,j,g);c.context(a).xScale(h).yScale(i);let l;c.decorate?(l=c.decorate(),c.decorate((a,c,d)=>{b.decorate()(a,e,j),l(a,c,d)})):b.decorate()(a,e,j),c(k),l&&c.decorate(l)})};return c.context=(...b)=>b.length?(a=b[0],c):a,u(c,b),c},O=function(){var a=b.scaleIdentity(),c=b.scaleIdentity(),f=function(a){return a},g=f,h=function(){},i="horizontal",j=e.line(),k=function(b){if("horizontal"!==i&&"vertical"!==i)throw new Error("Invalid orientation");var e="horizontal"===i,k=j.context(),l=e?a:c,m=e?c:a,n=l.domain(),o=e?9:0,p=e?0:9,q=e?"left":"center",r=e?"middle":"hanging";b.forEach(function(a,b){k.save(),k.beginPath(),k.strokeStyle="#bbb",k.fillStyle="#000",k.textAlign=q,k.textBaseline=r,h(k,a,b),j.context(k)(n.map(function(b){var c=[l(b),m(f(a))];return e?c:c.reverse()}));var c=e?l(n[1]):m(f(a)),d=e?m(f(a)):l(n[1]);k.fillText(g(a),c+o,d+p),k.fill(),k.stroke(),k.closePath(),k.restore()})};return k.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],k):a},k.yScale=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],k):c},k.value=function(){return arguments.length?(f=q(0>=arguments.length?void 0:arguments[0]),k):f},k.label=function(){return arguments.length?(g=q(0>=arguments.length?void 0:arguments[0]),k):g},k.decorate=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],k):h},k.orient=function(){return arguments.length?(i=0>=arguments.length?void 0:arguments[0],k):i},s(k,j,"context"),k},P=function(){var a=b.scaleIdentity(),c=[10],d=null,e=function(){var b;return null==d?a.ticks?(b=a).ticks.apply(b,g(c)):a.domain():d};return e.scale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],e):a},e.ticks=function(){for(var a=arguments.length,b=Array(a),d=0;d<a;d++)b[d]=arguments[d];return c=b,e},e.tickArguments=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],e):c},e.tickValues=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],e):d},e},Q=function(a){return a};a.annotationCanvasBand=function(){var a=b.scaleIdentity(),c=b.scaleIdentity(),d="horizontal",e=function(a){return a.from},f=function(a){return a.to},g=function(){},h=p().horizontalAlign("right").verticalAlign("top"),i=function(b){if("horizontal"!==d&&"vertical"!==d)throw new Error("Invalid orientation");var j=h.context(),k="horizontal"===d,l=k?a:c,m=k?c:a,n=l.range(),o=n[1]-n[0],p=k?"x":"y",q=k?"y":"x",r=k?"height":"width",s=k?"width":"height";b.forEach(function(a,b){j.save(),j.beginPath(),j.strokeStyle="transparent",h[q](m(e(a))),h[p](n[0]),h[s](o),h[r](m(f(a))-m(e(a))),g(j,a,b),h.context(j)([a],b),j.fill(),j.stroke(),j.closePath(),j.restore()})};return i.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],i):a},i.yScale=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],i):c},i.orient=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],i):d},i.decorate=function(){return arguments.length?(g=0>=arguments.length?void 0:arguments[0],i):g},i.fromValue=function(){return arguments.length?(e=q(0>=arguments.length?void 0:arguments[0]),i):e},i.toValue=function(){return arguments.length?(f=q(0>=arguments.length?void 0:arguments[0]),i):f},s(i,h,"context"),i},a.annotationCanvasCrosshair=function(){var a=function(a){return a.x},c=function(a){return a.y},e=b.scaleIdentity(),f=b.scaleIdentity(),g=K(),h=O(),i=O().orient("vertical"),j=b.scaleIdentity(),k=b.scaleIdentity(),l=N().series([h,i,g]).xScale(j).yScale(k).mapping(function(a){return[a]}),m=function(b){b.forEach(function(b){j.range(e.range()),k.range(f.range()),g.crossValue(a).mainValue(c),h.value(c),i.value(a),l(b)})};m.x=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],m):a},m.y=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],m):c},m.xScale=function(){return arguments.length?(e=0>=arguments.length?void 0:arguments[0],m):e},m.yScale=function(){return arguments.length?(f=0>=arguments.length?void 0:arguments[0],m):f};var n=z("label","decorate");return u(m,h,n,C("y")),u(m,i,n,C("x")),s(m,g,"decorate"),s(m,l,"context"),m},a.annotationCanvasGridline=function(){var a=function(){},b=function(){},c=P(),d=P(),f=e.line(),g=function(){var e=f.context(),g=c.scale(),h=d.scale();c().forEach(function(b,c){e.save(),e.beginPath(),e.strokeStyle="#bbb",e.fillStyle="transparent",a(e,b,c),f.context(e)(h.domain().map(function(a){return[g(b),h(a)]})),e.fill(),e.stroke(),e.closePath(),e.restore()}),d().forEach(function(a,c){e.save(),e.beginPath(),e.strokeStyle="#bbb",e.fillStyle="transparent",b(e,a,c),f.context(e)(g.domain().map(function(b){return[g(b),h(a)]})),e.fill(),e.stroke(),e.closePath(),e.restore()})};return g.yDecorate=function(){return arguments.length?(b=0>=arguments.length?void 0:arguments[0],g):b},g.xDecorate=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],g):a},u(g,c,C("x")),u(g,d,C("y")),s(g,f,"context"),g},a.annotationCanvasLine=O,a.annotationSvgBand=function(){var a=b.scaleIdentity(),d=b.scaleIdentity(),e="horizontal",f=function(a){return a.from},g=function(a){return a.to},h=function(){},i=n("g","annotation-band"),j=p().horizontalAlign("center").verticalAlign("center").x(0).y(0),k=function(b){if(b.selection&&i.transition(b),"horizontal"!==e&&"vertical"!==e)throw new Error("Invalid orientation");var k="horizontal"===e,l=k?function(c,a){return"translate(".concat(c,", ").concat(a,")")}:function(c,a){return"translate(".concat(a,", ").concat(c,")")},m=k?a:d,n=k?d:a,o=m.range(),p=o[1]-o[0],q=k?"height":"width",r=k?"width":"height",s=function(){return l((o[1]+o[0])/2,(n(g.apply(void 0,arguments))+n(f.apply(void 0,arguments)))/2)};j[r](p),j[q](function(){return n(g.apply(void 0,arguments))-n(f.apply(void 0,arguments))}),b.each(function(a,b,d){var f=i(c.select(d[b]),a);f.enter().attr("transform",s).append("path").classed("band",!0),f.attr("class","annotation-band ".concat(e)).attr("transform",s).select("path").attr("d",function(a,b){return j([a],b)}),h(f,a,b)})};return k.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],k):a},k.yScale=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],k):d},k.orient=function(){return arguments.length?(e=0>=arguments.length?void 0:arguments[0],k):e},k.decorate=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],k):h},k.fromValue=function(){return arguments.length?(f=q(0>=arguments.length?void 0:arguments[0]),k):f},k.toValue=function(){return arguments.length?(g=q(0>=arguments.length?void 0:arguments[0]),k):g},k},a.annotationSvgCrosshair=function(){var a=function(a){return a.x},d=function(a){return a.y},e=b.scaleIdentity(),f=b.scaleIdentity(),h=function(){},i=n("g","annotation-crosshair"),j=J(),k=D(),l=D().orient("vertical"),m=b.scaleIdentity(),o=b.scaleIdentity(),p=M().series([k,l,j]).xScale(m).yScale(o).mapping(function(a){return[a]}),q=function(b){b.selection&&i.transition(b),b.each(function(b,n,q){var r=i(c.select(q[n]),b);r.enter().style("pointer-events","none"),m.range(e.range()),o.range(f.range()),j.crossValue(a).mainValue(d),k.value(d),l.value(a),r.call(p),h(r,b,n)})};q.x=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],q):a},q.y=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],q):d},q.xScale=function(){return arguments.length?(e=0>=arguments.length?void 0:arguments[0],q):e},q.yScale=function(){return arguments.length?(f=0>=arguments.length?void 0:arguments[0],q):f},q.decorate=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],q):h};var r=z("label");return u(q,k,r,C("y")),u(q,l,r,C("x")),q},a.annotationSvgGridline=function(){var a=function(){},b=function(){},d=P(),e=P(),f=n("line","gridline-y").key(Q),g=n("line","gridline-x").key(Q),h=function(h){h.selection&&(f.transition(h),g.transition(h)),h.each(function(h,i,j){var k=j[i],l=c.select(j[i]),m=d.scale(),n=e.scale(),o=k.__x_scale__||m;k.__x_scale__=m.copy();var p=d(),q=f(l,p);q.enter().attr("x1",o).attr("x2",o).attr("y1",n.range()[0]).attr("y2",n.range()[1]),q.attr("x1",m).attr("x2",m).attr("y1",n.range()[0]).attr("y2",n.range()[1]).attr("stroke","#bbb"),q.exit().attr("x1",m).attr("x2",m),a(q,p,i);var r=k.__y_scale__||n;k.__y_scale__=n.copy();var s=e(),t=g(l,s);t.enter().attr("y1",r).attr("y2",r).attr("x1",m.range()[0]).attr("x2",m.range()[1]),t.attr("y1",n).attr("y2",n).attr("x1",m.range()[0]).attr("x2",m.range()[1]).attr("stroke","#bbb"),t.exit().attr("y1",n).attr("y2",n),b(t,s,i)})};return h.yDecorate=function(){return arguments.length?(b=0>=arguments.length?void 0:arguments[0],h):b},h.xDecorate=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],h):a},u(h,f,A({key:"xKey"})),u(h,g,A({key:"yKey"})),u(h,d,C("x")),u(h,e,C("y")),h},a.annotationSvgLine=D,Object.defineProperty(a,"__esModule",{value:!0})}); | ||
(function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports,require("d3-scale"),require("d3-selection"),require("@d3fc/d3fc-data-join"),require("@d3fc/d3fc-shape"),require("@d3fc/d3fc-rebind"),require("@d3fc/d3fc-series"),require("d3-shape")):"function"==typeof define&&define.amd?define(["exports","d3-scale","d3-selection","@d3fc/d3fc-data-join","@d3fc/d3fc-shape","@d3fc/d3fc-rebind","@d3fc/d3fc-series","d3-shape"],b):(a=a||self,b(a.fc=a.fc||{},a.d3,a.d3,a.fc,a.fc,a.fc,a.fc,a.d3))})(this,function(a,b,c,d,e,f,g,h){'use strict';function i(a){return j(a)||k(a)||l()}function j(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}}function k(a){if(Symbol.iterator in Object(a)||"[object Arguments]"===Object.prototype.toString.call(a))return Array.from(a)}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}var m=function(a){return"function"==typeof a?a:function(){return a}},n=function(){var a=b.scaleIdentity(),e=b.scaleIdentity(),f=function(a){return a},h=f,i=function(){},j="horizontal",k=d.dataJoin("g","annotation-line"),l=function(b){if(b.selection&&k.transition(b),"horizontal"!==j&&"vertical"!==j)throw new Error("Invalid orientation");var d="horizontal"===j,l=d?function(c,a){return"translate(".concat(c,", ").concat(a,")")}:function(c,a){return"translate(".concat(a,", ").concat(c,")")},m=d?"x2":"y2",n=d?a:e,o=d?e:a,p=d?"left-handle":"bottom-handle",q=d?"right-handle":"top-handle",r=d?"9":"0",s=d?"0":"9",t=d?"0.32em":"0.71em",u=d?"start":"middle",v=n.range(),w=function(){return l(v[0],o(f.apply(void 0,arguments)))},x=v[1]-v[0];b.each(function(a,b,d){var e=k(c.select(d[b]),a),f=e.enter().attr("transform",w).style("stroke","#bbb");f.append("line").attr(m,x),f.append("g").classed(p,!0).style("stroke","none"),f.append("g").classed(q,!0).style("stroke","none").attr("transform",l(x,0)).append("text").attr("text-anchor",u).attr("x",r).attr("y",s).attr("dy",t),e.attr("class","annotation-line ".concat(j)),e.attr("transform",w),e.select("line").attr(m,x),e.select("g."+q).attr("transform",l(x,0)),e.select("text").text(h),i(e,a,b)})};return l.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],l):a},l.yScale=function(){return arguments.length?(e=0>=arguments.length?void 0:arguments[0],l):e},l.value=function(){return arguments.length?(f=m(0>=arguments.length?void 0:arguments[0]),l):f},l.label=function(){return arguments.length?(h=m(0>=arguments.length?void 0:arguments[0]),l):h},l.decorate=function(){return arguments.length?(i=0>=arguments.length?void 0:arguments[0],l):i},l.orient=function(){return arguments.length?(j=0>=arguments.length?void 0:arguments[0],l):j},l},o=function(){var a=b.scaleIdentity(),c=b.scaleIdentity(),e=function(a){return a},g=e,j=function(){},k="horizontal",l=h.line(),n=function(b){if("horizontal"!==k&&"vertical"!==k)throw new Error("Invalid orientation");var f="horizontal"===k,h=l.context(),m=f?a:c,n=f?c:a,o=m.domain(),p=f?9:0,q=f?0:9,r=f?"left":"center",s=f?"middle":"hanging";b.forEach(function(a,b){h.save(),h.beginPath(),h.strokeStyle="#bbb",h.fillStyle="#000",h.textAlign=r,h.textBaseline=s,j(h,a,b),l.context(h)(o.map(function(b){var c=[m(b),n(e(a))];return f?c:c.reverse()}));var c=f?m(o[1]):n(e(a)),d=f?n(e(a)):m(o[1]);h.fillText(g(a),c+p,d+q),h.fill(),h.stroke(),h.closePath(),h.restore()})};return n.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],n):a},n.yScale=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],n):c},n.value=function(){return arguments.length?(e=m(0>=arguments.length?void 0:arguments[0]),n):e},n.label=function(){return arguments.length?(g=m(0>=arguments.length?void 0:arguments[0]),n):g},n.decorate=function(){return arguments.length?(j=0>=arguments.length?void 0:arguments[0],n):j},n.orient=function(){return arguments.length?(k=0>=arguments.length?void 0:arguments[0],n):k},f.rebind(n,l,"context"),n},p=function(){var a=b.scaleIdentity(),c=[10],d=null,e=function(){var b;return null==d?a.ticks?(b=a).ticks.apply(b,i(c)):a.domain():d};return e.scale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],e):a},e.ticks=function(){for(var a=arguments.length,b=Array(a),d=0;d<a;d++)b[d]=arguments[d];return c=b,e},e.tickArguments=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],e):c},e.tickValues=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],e):d},e},q=function(a){return a};a.annotationCanvasBand=function(){var a=b.scaleIdentity(),c=b.scaleIdentity(),d="horizontal",g=function(a){return a.from},h=function(a){return a.to},j=function(){},k=e.shapeBar().horizontalAlign("right").verticalAlign("top"),l=function(b){if("horizontal"!==d&&"vertical"!==d)throw new Error("Invalid orientation");var e=k.context(),f="horizontal"===d,i=f?a:c,l=f?c:a,m=i.range(),n=m[1]-m[0],o=f?"x":"y",p=f?"y":"x",q=f?"height":"width",r=f?"width":"height";b.forEach(function(a,b){e.save(),e.beginPath(),e.strokeStyle="transparent",k[p](l(g(a))),k[o](m[0]),k[r](n),k[q](l(h(a))-l(g(a))),j(e,a,b),k.context(e)([a],b),e.fill(),e.stroke(),e.closePath(),e.restore()})};return l.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],l):a},l.yScale=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],l):c},l.orient=function(){return arguments.length?(d=0>=arguments.length?void 0:arguments[0],l):d},l.decorate=function(){return arguments.length?(j=0>=arguments.length?void 0:arguments[0],l):j},l.fromValue=function(){return arguments.length?(g=m(0>=arguments.length?void 0:arguments[0]),l):g},l.toValue=function(){return arguments.length?(h=m(0>=arguments.length?void 0:arguments[0]),l):h},f.rebind(l,k,"context"),l},a.annotationCanvasCrosshair=function(){var a=function(a){return a.x},c=function(a){return a.y},e=b.scaleIdentity(),h=b.scaleIdentity(),i=g.seriesCanvasPoint(),j=o(),k=o().orient("vertical"),l=b.scaleIdentity(),m=b.scaleIdentity(),n=g.seriesCanvasMulti().series([j,k,i]).xScale(l).yScale(m).mapping(function(a){return[a]}),p=function(b){b.forEach(function(b){l.range(e.range()),m.range(h.range()),i.crossValue(a).mainValue(c),j.value(c),k.value(a),n(b)})};p.x=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],p):a},p.y=function(){return arguments.length?(c=0>=arguments.length?void 0:arguments[0],p):c},p.xScale=function(){return arguments.length?(e=0>=arguments.length?void 0:arguments[0],p):e},p.yScale=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],p):h};var q=f.include("label","decorate");return f.rebindAll(p,j,q,f.prefix("y")),f.rebindAll(p,k,q,f.prefix("x")),f.rebind(p,i,"decorate"),f.rebind(p,n,"context"),p},a.annotationCanvasGridline=function(){var a=function(){},b=function(){},c=p(),d=p(),e=h.line(),g=function(){var f=e.context(),g=c.scale(),h=d.scale();c().forEach(function(b,c){f.save(),f.beginPath(),f.strokeStyle="#bbb",f.fillStyle="transparent",a(f,b,c),e.context(f)(h.domain().map(function(a){return[g(b),h(a)]})),f.fill(),f.stroke(),f.closePath(),f.restore()}),d().forEach(function(a,c){f.save(),f.beginPath(),f.strokeStyle="#bbb",f.fillStyle="transparent",b(f,a,c),e.context(f)(g.domain().map(function(b){return[g(b),h(a)]})),f.fill(),f.stroke(),f.closePath(),f.restore()})};return g.yDecorate=function(){return arguments.length?(b=0>=arguments.length?void 0:arguments[0],g):b},g.xDecorate=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],g):a},f.rebindAll(g,c,f.prefix("x")),f.rebindAll(g,d,f.prefix("y")),f.rebind(g,e,"context"),g},a.annotationCanvasLine=o,a.annotationSvgBand=function(){var a=b.scaleIdentity(),f=b.scaleIdentity(),h="horizontal",i=function(a){return a.from},j=function(a){return a.to},k=function(){},l=d.dataJoin("g","annotation-band"),n=e.shapeBar().horizontalAlign("center").verticalAlign("center").x(0).y(0),o=function(b){if(b.selection&&l.transition(b),"horizontal"!==h&&"vertical"!==h)throw new Error("Invalid orientation");var d="horizontal"===h,e=d?function(c,a){return"translate(".concat(c,", ").concat(a,")")}:function(c,a){return"translate(".concat(a,", ").concat(c,")")},g=d?a:f,m=d?f:a,o=g.range(),p=o[1]-o[0],q=d?"height":"width",r=d?"width":"height",s=function(){return e((o[1]+o[0])/2,(m(j.apply(void 0,arguments))+m(i.apply(void 0,arguments)))/2)};n[r](p),n[q](function(){return m(j.apply(void 0,arguments))-m(i.apply(void 0,arguments))}),b.each(function(a,b,d){var e=l(c.select(d[b]),a);e.enter().attr("transform",s).append("path").classed("band",!0),e.attr("class","annotation-band ".concat(h)).attr("transform",s).select("path").attr("d",function(a,b){return n([a],b)}),k(e,a,b)})};return o.xScale=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],o):a},o.yScale=function(){return arguments.length?(f=0>=arguments.length?void 0:arguments[0],o):f},o.orient=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],o):h},o.decorate=function(){return arguments.length?(k=0>=arguments.length?void 0:arguments[0],o):k},o.fromValue=function(){return arguments.length?(i=m(0>=arguments.length?void 0:arguments[0]),o):i},o.toValue=function(){return arguments.length?(j=m(0>=arguments.length?void 0:arguments[0]),o):j},o},a.annotationSvgCrosshair=function(){var a=function(a){return a.x},e=function(a){return a.y},h=b.scaleIdentity(),i=b.scaleIdentity(),j=function(){},k=d.dataJoin("g","annotation-crosshair"),l=g.seriesSvgPoint(),m=n(),o=n().orient("vertical"),p=b.scaleIdentity(),q=b.scaleIdentity(),r=g.seriesSvgMulti().series([m,o,l]).xScale(p).yScale(q).mapping(function(a){return[a]}),s=function(b){b.selection&&k.transition(b),b.each(function(b,d,f){var n=k(c.select(f[d]),b);n.enter().style("pointer-events","none"),p.range(h.range()),q.range(i.range()),l.crossValue(a).mainValue(e),m.value(e),o.value(a),n.call(r),j(n,b,d)})};s.x=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],s):a},s.y=function(){return arguments.length?(e=0>=arguments.length?void 0:arguments[0],s):e},s.xScale=function(){return arguments.length?(h=0>=arguments.length?void 0:arguments[0],s):h},s.yScale=function(){return arguments.length?(i=0>=arguments.length?void 0:arguments[0],s):i},s.decorate=function(){return arguments.length?(j=0>=arguments.length?void 0:arguments[0],s):j};var t=f.include("label");return f.rebindAll(s,m,t,f.prefix("y")),f.rebindAll(s,o,t,f.prefix("x")),s},a.annotationSvgGridline=function(){var a=function(){},b=function(){},e=p(),g=p(),h=d.dataJoin("line","gridline-y").key(q),i=d.dataJoin("line","gridline-x").key(q),j=function(d){d.selection&&(h.transition(d),i.transition(d)),d.each(function(d,f,j){var k=j[f],l=c.select(j[f]),m=e.scale(),n=g.scale(),o=k.__x_scale__||m;k.__x_scale__=m.copy();var p=e(),q=h(l,p);q.enter().attr("x1",o).attr("x2",o).attr("y1",n.range()[0]).attr("y2",n.range()[1]),q.attr("x1",m).attr("x2",m).attr("y1",n.range()[0]).attr("y2",n.range()[1]).attr("stroke","#bbb"),q.exit().attr("x1",m).attr("x2",m),a(q,p,f);var r=k.__y_scale__||n;k.__y_scale__=n.copy();var s=g(),t=i(l,s);t.enter().attr("y1",r).attr("y2",r).attr("x1",m.range()[0]).attr("x2",m.range()[1]),t.attr("y1",n).attr("y2",n).attr("x1",m.range()[0]).attr("x2",m.range()[1]).attr("stroke","#bbb"),t.exit().attr("y1",n).attr("y2",n),b(t,s,f)})};return j.yDecorate=function(){return arguments.length?(b=0>=arguments.length?void 0:arguments[0],j):b},j.xDecorate=function(){return arguments.length?(a=0>=arguments.length?void 0:arguments[0],j):a},f.rebindAll(j,h,f.includeMap({key:"xKey"})),f.rebindAll(j,i,f.includeMap({key:"yKey"})),f.rebindAll(j,e,f.prefix("x")),f.rebindAll(j,g,f.prefix("y")),j},a.annotationSvgLine=n,Object.defineProperty(a,"__esModule",{value:!0})}); |
@@ -6,2 +6,13 @@ # Change Log | ||
# [2.5.0](https://github.com/d3fc/d3fc/compare/@d3fc/d3fc-annotation@2.4.42...@d3fc/d3fc-annotation@2.5.0) (2020-03-19) | ||
### Features | ||
* add fill to webgl boxplot ([7ea7859](https://github.com/d3fc/d3fc/commit/7ea7859)) | ||
## [2.4.42](https://github.com/d3fc/d3fc/compare/@d3fc/d3fc-annotation@2.4.41...@d3fc/d3fc-annotation@2.4.42) (2020-02-18) | ||
@@ -8,0 +19,0 @@ |
{ | ||
"name": "@d3fc/d3fc-annotation", | ||
"version": "2.4.42", | ||
"version": "2.5.0", | ||
"description": "A collection of D3 components for rendering plot area annotations to SVG, including lines, crosshairs, gridlines and more", | ||
@@ -27,3 +27,3 @@ "license": "MIT", | ||
"babel-polyfill": "^6.16.0", | ||
"canvas": "2.3.1", | ||
"canvas": "2.6.1", | ||
"d3": "^4.3.0", | ||
@@ -33,6 +33,6 @@ "webshot": "^0.18.0" | ||
"dependencies": { | ||
"@d3fc/d3fc-data-join": "^5.0.11", | ||
"@d3fc/d3fc-data-join": "^5.1.0", | ||
"@d3fc/d3fc-rebind": "^5.0.10", | ||
"@d3fc/d3fc-series": "^4.4.17", | ||
"@d3fc/d3fc-shape": "^5.0.19", | ||
"@d3fc/d3fc-series": "^4.5.0", | ||
"@d3fc/d3fc-shape": "^5.1.0", | ||
"d3-scale": "^1.0.1", | ||
@@ -44,3 +44,3 @@ "d3-selection": "^1.0.2" | ||
}, | ||
"gitHead": "6562a4dc0cea7adeb693f94c5844e5be081f53fc" | ||
"gitHead": "8a27597494353a1441a1a71ca06707d9e28c4381" | ||
} |
148354
1967
Updated@d3fc/d3fc-data-join@^5.1.0
Updated@d3fc/d3fc-series@^4.5.0
Updated@d3fc/d3fc-shape@^5.1.0