mirror of https://github.com/snachodog/mybuddy.git
Update NPM dependencies
This commit is contained in:
parent
72c157c661
commit
73b89886e7
File diff suppressed because it is too large
Load Diff
12
package.json
12
package.json
|
@ -20,16 +20,16 @@
|
|||
"gulp-stylelint": "^13.0.0",
|
||||
"gulp-uglify": "^3.0.2",
|
||||
"jquery": "^3.5.1",
|
||||
"moment": "^2.25.3",
|
||||
"moment-timezone": "^0.5.30",
|
||||
"plotly.js": "^1.54.1",
|
||||
"moment": "^2.27.0",
|
||||
"moment-timezone": "^0.5.31",
|
||||
"plotly.js": "^1.54.6",
|
||||
"popper.js": "^1.16.1",
|
||||
"pulltorefreshjs": "^0.1.20",
|
||||
"pump": "^3.0.0",
|
||||
"stylelint": "^13.4.0",
|
||||
"stylelint": "^13.6.1",
|
||||
"stylelint-config-recommended-scss": "^4.2.0",
|
||||
"stylelint-order": "^4.0.0",
|
||||
"stylelint-scss": "^3.17.2",
|
||||
"stylelint-order": "^4.1.0",
|
||||
"stylelint-scss": "^3.18.0",
|
||||
"tempusdominus-bootstrap-4": "^5.1.2",
|
||||
"tempusdominus-core": "^5.0.3"
|
||||
},
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* plotly.js (cartesian) v1.54.1
|
||||
* plotly.js (cartesian) v1.54.6
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
* Licensed under the MIT license
|
||||
|
@ -26043,6 +26043,8 @@ module.exports = function draw(gd, opts) {
|
|||
.text(title.text);
|
||||
|
||||
textLayout(titleEl, scrollBox, gd, opts); // handle mathjax or multi-line text and compute title height
|
||||
} else {
|
||||
scrollBox.selectAll('.legendtitletext').remove();
|
||||
}
|
||||
|
||||
var scrollBar = Lib.ensureSingle(legend, 'rect', 'scrollbar', function(s) {
|
||||
|
@ -37439,58 +37441,81 @@ exports.valObjectMeta = {
|
|||
* as a convenience, returns the value it finally set
|
||||
*/
|
||||
exports.coerce = function(containerIn, containerOut, attributes, attribute, dflt) {
|
||||
var opts = nestedProperty(attributes, attribute).get();
|
||||
return _coerce(containerIn, containerOut, attributes, attribute, dflt).val;
|
||||
};
|
||||
|
||||
function _coerce(containerIn, containerOut, attributes, attribute, dflt, opts) {
|
||||
var shouldValidate = (opts || {}).shouldValidate;
|
||||
|
||||
var attr = nestedProperty(attributes, attribute).get();
|
||||
if(dflt === undefined) dflt = attr.dflt;
|
||||
var src = false;
|
||||
|
||||
var propIn = nestedProperty(containerIn, attribute);
|
||||
var propOut = nestedProperty(containerOut, attribute);
|
||||
var v = propIn.get();
|
||||
var valIn = propIn.get();
|
||||
|
||||
var template = containerOut._template;
|
||||
if(v === undefined && template) {
|
||||
v = nestedProperty(template, attribute).get();
|
||||
if(valIn === undefined && template) {
|
||||
valIn = nestedProperty(template, attribute).get();
|
||||
src = (valIn !== undefined);
|
||||
|
||||
// already used the template value, so short-circuit the second check
|
||||
template = 0;
|
||||
}
|
||||
|
||||
if(dflt === undefined) dflt = opts.dflt;
|
||||
|
||||
/**
|
||||
* arrayOk: value MAY be an array, then we do no value checking
|
||||
* at this point, because it can be more complicated than the
|
||||
* individual form (eg. some array vals can be numbers, even if the
|
||||
* single values must be color strings)
|
||||
*/
|
||||
if(opts.arrayOk && isArrayOrTypedArray(v)) {
|
||||
propOut.set(v);
|
||||
return v;
|
||||
if(attr.arrayOk && isArrayOrTypedArray(valIn)) {
|
||||
propOut.set(valIn);
|
||||
return {
|
||||
inp: valIn,
|
||||
val: valIn,
|
||||
src: true
|
||||
};
|
||||
}
|
||||
|
||||
var coerceFunction = exports.valObjectMeta[opts.valType].coerceFunction;
|
||||
coerceFunction(v, propOut, dflt, opts);
|
||||
var coerceFunction = exports.valObjectMeta[attr.valType].coerceFunction;
|
||||
coerceFunction(valIn, propOut, dflt, attr);
|
||||
|
||||
var valOut = propOut.get();
|
||||
src = (valOut !== undefined) && shouldValidate && validate(valIn, attr);
|
||||
|
||||
var out = propOut.get();
|
||||
// in case v was provided but invalid, try the template again so it still
|
||||
// overrides the regular default
|
||||
if(template && out === dflt && !validate(v, opts)) {
|
||||
v = nestedProperty(template, attribute).get();
|
||||
coerceFunction(v, propOut, dflt, opts);
|
||||
out = propOut.get();
|
||||
if(template && valOut === dflt && !validate(valIn, attr)) {
|
||||
valIn = nestedProperty(template, attribute).get();
|
||||
coerceFunction(valIn, propOut, dflt, attr);
|
||||
valOut = propOut.get();
|
||||
|
||||
src = (valOut !== undefined) && shouldValidate && validate(valIn, attr);
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
return {
|
||||
inp: valIn,
|
||||
val: valOut,
|
||||
src: src
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Variation on coerce
|
||||
* useful when setting an attribute to a valid value
|
||||
* can change the default for another attribute.
|
||||
*
|
||||
* Uses coerce to get attribute value if user input is valid,
|
||||
* returns attribute default if user input it not valid or
|
||||
* returns false if there is no user input.
|
||||
*/
|
||||
exports.coerce2 = function(containerIn, containerOut, attributes, attribute, dflt) {
|
||||
var propIn = nestedProperty(containerIn, attribute);
|
||||
var propOut = exports.coerce(containerIn, containerOut, attributes, attribute, dflt);
|
||||
var valIn = propIn.get();
|
||||
|
||||
return (valIn !== undefined && valIn !== null) ? propOut : false;
|
||||
var out = _coerce(containerIn, containerOut, attributes, attribute, dflt, {
|
||||
shouldValidate: true
|
||||
});
|
||||
return (out.src && out.inp !== undefined) ? out.val : false;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -39187,10 +39212,10 @@ lib.bBoxIntersect = function(a, b, pad) {
|
|||
* func: the function to apply
|
||||
* x1, x2: optional extra args
|
||||
*/
|
||||
lib.simpleMap = function(array, func, x1, x2) {
|
||||
lib.simpleMap = function(array, func, x1, x2, opts) {
|
||||
var len = array.length;
|
||||
var out = new Array(len);
|
||||
for(var i = 0; i < len; i++) out[i] = func(array[i], x1, x2);
|
||||
for(var i = 0; i < len; i++) out[i] = func(array[i], x1, x2, opts);
|
||||
return out;
|
||||
};
|
||||
|
||||
|
@ -41745,9 +41770,8 @@ module.exports = function relinkPrivateKeys(toContainer, fromContainer) {
|
|||
var fromVal = fromContainer[k];
|
||||
var toVal = toContainer[k];
|
||||
|
||||
if(toVal === fromVal) {
|
||||
continue;
|
||||
}
|
||||
if(toVal === fromVal) continue;
|
||||
|
||||
if(k.charAt(0) === '_' || typeof fromVal === 'function') {
|
||||
// if it already exists at this point, it's something
|
||||
// that we recreate each time around, so ignore it
|
||||
|
@ -41791,6 +41815,7 @@ module.exports = function relinkPrivateKeys(toContainer, fromContainer) {
|
|||
var isNumeric = _dereq_('fast-isnumeric');
|
||||
var loggers = _dereq_('./loggers');
|
||||
var identity = _dereq_('./identity');
|
||||
var BADNUM = _dereq_('../constants/numerical').BADNUM;
|
||||
|
||||
// don't trust floating point equality - fraction of bin size to call
|
||||
// "on the line" and ensure that they go the right way specified by
|
||||
|
@ -41851,22 +41876,35 @@ exports.sorterDes = function(a, b) { return b - a; };
|
|||
*/
|
||||
exports.distinctVals = function(valsIn) {
|
||||
var vals = valsIn.slice(); // otherwise we sort the original array...
|
||||
vals.sort(exports.sorterAsc);
|
||||
vals.sort(exports.sorterAsc); // undefined listed in the end - also works on IE11
|
||||
|
||||
var l = vals.length - 1;
|
||||
var minDiff = (vals[l] - vals[0]) || 1;
|
||||
var errDiff = minDiff / (l || 1) / 10000;
|
||||
var v2 = [vals[0]];
|
||||
var last;
|
||||
for(last = vals.length - 1; last > -1; last--) {
|
||||
if(vals[last] !== BADNUM) break;
|
||||
}
|
||||
|
||||
var minDiff = (vals[last] - vals[0]) || 1;
|
||||
var errDiff = minDiff / (last || 1) / 10000;
|
||||
var newVals = [];
|
||||
var preV;
|
||||
for(var i = 0; i <= last; i++) {
|
||||
var v = vals[i];
|
||||
|
||||
for(var i = 0; i < l; i++) {
|
||||
// make sure values aren't just off by a rounding error
|
||||
if(vals[i + 1] > vals[i] + errDiff) {
|
||||
minDiff = Math.min(minDiff, vals[i + 1] - vals[i]);
|
||||
v2.push(vals[i + 1]);
|
||||
var diff = v - preV;
|
||||
|
||||
if(preV === undefined) {
|
||||
newVals.push(v);
|
||||
preV = v;
|
||||
} else if(diff > errDiff) {
|
||||
minDiff = Math.min(minDiff, diff);
|
||||
|
||||
newVals.push(v);
|
||||
preV = v;
|
||||
}
|
||||
}
|
||||
|
||||
return {vals: v2, minDiff: minDiff};
|
||||
return {vals: newVals, minDiff: minDiff};
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -41963,7 +42001,7 @@ exports.findIndexOfMin = function(arr, fn) {
|
|||
return ind;
|
||||
};
|
||||
|
||||
},{"./identity":177,"./loggers":182,"fast-isnumeric":18}],197:[function(_dereq_,module,exports){
|
||||
},{"../constants/numerical":158,"./identity":177,"./loggers":182,"fast-isnumeric":18}],197:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -44457,7 +44495,13 @@ function plot(gd, data, layout, config) {
|
|||
fullLayout._replotting = true;
|
||||
|
||||
// make or remake the framework if we need to
|
||||
if(graphWasEmpty) makePlotFramework(gd);
|
||||
if(graphWasEmpty || fullLayout._shouldCreateBgLayer) {
|
||||
makePlotFramework(gd);
|
||||
|
||||
if(fullLayout._shouldCreateBgLayer) {
|
||||
delete fullLayout._shouldCreateBgLayer;
|
||||
}
|
||||
}
|
||||
|
||||
// polar need a different framework
|
||||
if(gd.framework !== makePlotFramework) {
|
||||
|
@ -47011,6 +47055,16 @@ function react(gd, data, layout, config) {
|
|||
|
||||
applyUIRevisions(gd.data, gd.layout, oldFullData, oldFullLayout);
|
||||
|
||||
var allNames = Object.getOwnPropertyNames(oldFullLayout);
|
||||
for(var q = 0; q < allNames.length; q++) {
|
||||
var name = allNames[q];
|
||||
var start = name.substring(0, 5);
|
||||
if(start === 'xaxis' || start === 'yaxis') {
|
||||
var emptyCategories = oldFullLayout[name]._emptyCategories;
|
||||
if(emptyCategories) emptyCategories();
|
||||
}
|
||||
}
|
||||
|
||||
// "true" skips updating calcdata and remapping arrays from calcTransforms,
|
||||
// which supplyDefaults usually does at the end, but we may need to NOT do
|
||||
// if the diff (which we haven't determined yet) says we'll recalc
|
||||
|
@ -50977,6 +51031,9 @@ var isArrayOrTypedArray = Lib.isArrayOrTypedArray;
|
|||
* error message (shown in console in logger config argument is enable)
|
||||
*/
|
||||
module.exports = function validate(data, layout) {
|
||||
if(data === undefined) data = [];
|
||||
if(layout === undefined) layout = {};
|
||||
|
||||
var schema = PlotSchema.get();
|
||||
var errorList = [];
|
||||
var gd = {_context: Lib.extendFlat({}, dfltConfig)};
|
||||
|
@ -52311,6 +52368,15 @@ var autorange = _dereq_('./autorange');
|
|||
axes.getAutoRange = autorange.getAutoRange;
|
||||
axes.findExtremes = autorange.findExtremes;
|
||||
|
||||
var epsilon = 0.0001;
|
||||
function expandRange(range) {
|
||||
var delta = (range[1] - range[0]) * epsilon;
|
||||
return [
|
||||
range[0] - delta,
|
||||
range[1] + delta
|
||||
];
|
||||
}
|
||||
|
||||
/*
|
||||
* find the list of possible axes to reference with an xref or yref attribute
|
||||
* and coerce it to that list
|
||||
|
@ -52755,8 +52821,8 @@ function autoShiftMonthBins(binStart, data, dtick, dataMin, calendar) {
|
|||
// ----------------------------------------------------
|
||||
|
||||
// ensure we have tick0, dtick, and tick rounding calculated
|
||||
axes.prepTicks = function(ax) {
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
axes.prepTicks = function(ax, opts) {
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts);
|
||||
|
||||
// calculate max number of (auto) ticks to display based on plot size
|
||||
if(ax.tickmode === 'auto' || !ax.dtick) {
|
||||
|
@ -52809,20 +52875,21 @@ axes.prepTicks = function(ax) {
|
|||
// if ticks are set to automatic, determine the right values (tick0,dtick)
|
||||
// in any case, set tickround to # of digits to round tick labels to,
|
||||
// or codes to this effect for log and date scales
|
||||
axes.calcTicks = function calcTicks(ax) {
|
||||
axes.prepTicks(ax);
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
axes.calcTicks = function calcTicks(ax, opts) {
|
||||
axes.prepTicks(ax, opts);
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts);
|
||||
|
||||
// now that we've figured out the auto values for formatting
|
||||
// in case we're missing some ticktext, we can break out for array ticks
|
||||
if(ax.tickmode === 'array') return arrayTicks(ax);
|
||||
|
||||
// find the first tick
|
||||
ax._tmin = axes.tickFirst(ax);
|
||||
ax._tmin = axes.tickFirst(ax, opts);
|
||||
|
||||
// add a tiny bit so we get ticks which may have rounded out
|
||||
var startTick = rng[0] * 1.0001 - rng[1] * 0.0001;
|
||||
var endTick = rng[1] * 1.0001 - rng[0] * 0.0001;
|
||||
var exRng = expandRange(rng);
|
||||
var startTick = exRng[0];
|
||||
var endTick = exRng[1];
|
||||
// check for reversed axis
|
||||
var axrev = (rng[1] < rng[0]);
|
||||
|
||||
|
@ -52867,26 +52934,15 @@ axes.calcTicks = function calcTicks(ax) {
|
|||
|
||||
if(ax.rangebreaks) {
|
||||
// replace ticks inside breaks that would get a tick
|
||||
if(ax.tickmode === 'auto') {
|
||||
for(var t = 0; t < tickVals.length; t++) {
|
||||
var value = tickVals[t].value;
|
||||
if(ax.maskBreaks(value) === BADNUM) {
|
||||
// find which break we are in
|
||||
for(var k = 0; k < ax._rangebreaks.length; k++) {
|
||||
var brk = ax._rangebreaks[k];
|
||||
if(value >= brk.min && value < brk.max) {
|
||||
tickVals[t].value = brk.max; // replace with break end
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// reduce ticks
|
||||
// and reduce ticks
|
||||
var len = tickVals.length;
|
||||
if(len > 2) {
|
||||
var tf2 = 2 * (ax.tickfont ? ax.tickfont.size : 12);
|
||||
if(len) {
|
||||
var tf = 0;
|
||||
if(ax.tickmode === 'auto') {
|
||||
tf =
|
||||
(ax._id.charAt(0) === 'y' ? 2 : 6) *
|
||||
(ax.tickfont ? ax.tickfont.size : 12);
|
||||
}
|
||||
|
||||
var newTickVals = [];
|
||||
var prevPos;
|
||||
|
@ -52894,12 +52950,26 @@ axes.calcTicks = function calcTicks(ax) {
|
|||
var dir = axrev ? 1 : -1;
|
||||
var first = axrev ? 0 : len - 1;
|
||||
var last = axrev ? len - 1 : 0;
|
||||
for(var q = first; dir * q <= dir * last; q += dir) { // apply reverse loop to pick greater values in breaks first
|
||||
var pos = ax.c2p(tickVals[q].value);
|
||||
for(var q = first; dir * q <= dir * last; q += dir) {
|
||||
var tickVal = tickVals[q];
|
||||
if(ax.maskBreaks(tickVal.value) === BADNUM) {
|
||||
tickVal.value = moveOutsideBreak(tickVal.value, ax);
|
||||
|
||||
if(prevPos === undefined || Math.abs(pos - prevPos) > tf2) {
|
||||
if(ax._rl && (
|
||||
ax._rl[0] === tickVal.value ||
|
||||
ax._rl[1] === tickVal.value
|
||||
)) continue;
|
||||
}
|
||||
|
||||
var pos = ax.c2p(tickVal.value);
|
||||
|
||||
if(pos === prevPos) {
|
||||
if(newTickVals[newTickVals.length - 1].value < tickVal.value) {
|
||||
newTickVals[newTickVals.length - 1] = tickVal;
|
||||
}
|
||||
} else if(prevPos === undefined || Math.abs(pos - prevPos) > tf) {
|
||||
prevPos = pos;
|
||||
newTickVals.push(tickVals[q]);
|
||||
newTickVals.push(tickVal);
|
||||
}
|
||||
}
|
||||
tickVals = newTickVals.reverse();
|
||||
|
@ -52946,10 +53016,9 @@ function arrayTicks(ax) {
|
|||
var text = ax.ticktext;
|
||||
var ticksOut = new Array(vals.length);
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
var r0expanded = rng[0] * 1.0001 - rng[1] * 0.0001;
|
||||
var r1expanded = rng[1] * 1.0001 - rng[0] * 0.0001;
|
||||
var tickMin = Math.min(r0expanded, r1expanded);
|
||||
var tickMax = Math.max(r0expanded, r1expanded);
|
||||
var exRng = expandRange(rng);
|
||||
var tickMin = Math.min(exRng[0], exRng[1]);
|
||||
var tickMax = Math.max(exRng[0], exRng[1]);
|
||||
var j = 0;
|
||||
|
||||
// without a text array, just format the given values as any other ticks
|
||||
|
@ -53040,8 +53109,7 @@ axes.autoTicks = function(ax, roughDTick) {
|
|||
roughDTick /= ONEAVGMONTH;
|
||||
ax.dtick = 'M' + roundDTick(roughDTick, 1, roundBase24);
|
||||
} else if(roughX2 > ONEDAY) {
|
||||
ax.dtick = roundDTick(roughDTick, ONEDAY, ax._hasDayOfWeekBreaks ? [1, 7, 14] : roundDays);
|
||||
|
||||
ax.dtick = roundDTick(roughDTick, ONEDAY, ax._hasDayOfWeekBreaks ? [1, 2, 7, 14] : roundDays);
|
||||
// get week ticks on sunday
|
||||
// this will also move the base tick off 2000-01-01 if dtick is
|
||||
// 2 or 3 days... but that's a weird enough case that we'll ignore it.
|
||||
|
@ -53189,29 +53257,31 @@ axes.tickIncrement = function(x, dtick, axrev, calendar) {
|
|||
if(tType === 'M') return Lib.incrementMonth(x, dtSigned, calendar);
|
||||
|
||||
// Log scales: Linear, Digits
|
||||
else if(tType === 'L') return Math.log(Math.pow(10, x) + dtSigned) / Math.LN10;
|
||||
if(tType === 'L') return Math.log(Math.pow(10, x) + dtSigned) / Math.LN10;
|
||||
|
||||
// log10 of 2,5,10, or all digits (logs just have to be
|
||||
// close enough to round)
|
||||
else if(tType === 'D') {
|
||||
if(tType === 'D') {
|
||||
var tickset = (dtick === 'D2') ? roundLog2 : roundLog1;
|
||||
var x2 = x + axSign * 0.01;
|
||||
var frac = Lib.roundUp(Lib.mod(x2, 1), tickset, axrev);
|
||||
|
||||
return Math.floor(x2) +
|
||||
Math.log(d3.round(Math.pow(10, frac), 1)) / Math.LN10;
|
||||
} else throw 'unrecognized dtick ' + String(dtick);
|
||||
}
|
||||
|
||||
throw 'unrecognized dtick ' + String(dtick);
|
||||
};
|
||||
|
||||
// calculate the first tick on an axis
|
||||
axes.tickFirst = function(ax) {
|
||||
axes.tickFirst = function(ax, opts) {
|
||||
var r2l = ax.r2l || Number;
|
||||
var rng = Lib.simpleMap(ax.range, r2l);
|
||||
var rng = Lib.simpleMap(ax.range, r2l, undefined, undefined, opts);
|
||||
var axrev = rng[1] < rng[0];
|
||||
var sRound = axrev ? Math.floor : Math.ceil;
|
||||
// add a tiny extra bit to make sure we get ticks
|
||||
// that may have been rounded out
|
||||
var r0 = rng[0] * 1.0001 - rng[1] * 0.0001;
|
||||
var r0 = expandRange(rng)[0];
|
||||
var dtick = ax.dtick;
|
||||
var tick0 = r2l(ax.tick0);
|
||||
|
||||
|
@ -54342,6 +54412,8 @@ function getDividerVals(ax, vals) {
|
|||
var out = [];
|
||||
var i, current;
|
||||
|
||||
var reversed = (vals.length && vals[vals.length - 1].x < vals[0].x);
|
||||
|
||||
// never used for labels;
|
||||
// no need to worry about the other tickTextObj keys
|
||||
var _push = function(d, bndIndex) {
|
||||
|
@ -54355,11 +54427,11 @@ function getDividerVals(ax, vals) {
|
|||
for(i = 0; i < vals.length; i++) {
|
||||
var d = vals[i];
|
||||
if(d.text2 !== current) {
|
||||
_push(d, 0);
|
||||
_push(d, reversed ? 1 : 0);
|
||||
}
|
||||
current = d.text2;
|
||||
}
|
||||
_push(vals[i - 1], 1);
|
||||
_push(vals[i - 1], reversed ? 0 : 1);
|
||||
}
|
||||
|
||||
return out;
|
||||
|
@ -55414,6 +55486,17 @@ function isAngular(ax) {
|
|||
return ax._id === 'angularaxis';
|
||||
}
|
||||
|
||||
function moveOutsideBreak(v, ax) {
|
||||
var len = ax._rangebreaks.length;
|
||||
for(var k = 0; k < len; k++) {
|
||||
var brk = ax._rangebreaks[k];
|
||||
if(v >= brk.min && v < brk.max) {
|
||||
return brk.max;
|
||||
}
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
},{"../../components/color":52,"../../components/drawing":74,"../../components/titles":147,"../../constants/alignment":154,"../../constants/numerical":158,"../../lib":178,"../../lib/svg_text_utils":199,"../../plots/plots":256,"../../registry":269,"./autorange":221,"./axis_autotype":223,"./axis_ids":225,"./clean_ticks":227,"./layout_attributes":236,"./set_convert":242,"d3":16,"fast-isnumeric":18}],223:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
|
@ -55824,7 +55907,7 @@ exports.name2id = function name2id(name) {
|
|||
};
|
||||
|
||||
exports.cleanId = function cleanId(id, axLetter) {
|
||||
if(!id.match(constants.AX_ID_PATTERN)) return;
|
||||
if(typeof id !== 'string' || !id.match(constants.AX_ID_PATTERN)) return;
|
||||
if(axLetter && id.charAt(0) !== axLetter) return;
|
||||
|
||||
var axNum = id.substr(1).replace(/^0+/, '');
|
||||
|
@ -57810,6 +57893,10 @@ function attachWheelEventHandler(element, handler) {
|
|||
if(!supportsPassive) {
|
||||
if(element.onwheel !== undefined) element.onwheel = handler;
|
||||
else if(element.onmousewheel !== undefined) element.onmousewheel = handler;
|
||||
else if(!element.isAddedWheelEvent) {
|
||||
element.isAddedWheelEvent = true;
|
||||
element.addEventListener('wheel', handler, {passive: false});
|
||||
}
|
||||
} else {
|
||||
var wheelEventName = element.onwheel !== undefined ? 'wheel' : 'mousewheel';
|
||||
|
||||
|
@ -61156,7 +61243,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
* - inserts a dummy arg so calendar is the 3rd arg (see notes below).
|
||||
* - defaults to ax.calendar
|
||||
*/
|
||||
function dt2ms(v, _, calendar) {
|
||||
function dt2ms(v, _, calendar, opts) {
|
||||
// NOTE: Changed this behavior: previously we took any numeric value
|
||||
// to be a ms, even if it was a string that could be a bare year.
|
||||
// Now we convert it as a date if at all possible, and only try
|
||||
|
@ -61165,6 +61252,13 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
if(ms === BADNUM) {
|
||||
if(isNumeric(v)) {
|
||||
v = +v;
|
||||
if((opts || {}).msUTC) {
|
||||
// For now it is only used
|
||||
// to fix bar length in milliseconds.
|
||||
// It could be applied in other places in v2
|
||||
return v;
|
||||
}
|
||||
|
||||
// keep track of tenths of ms, that `new Date` will drop
|
||||
// same logic as in Lib.ms2DateTime
|
||||
var msecTenths = Math.floor(Lib.mod(v + 0.05, 1) * 10);
|
||||
|
@ -61752,9 +61846,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
var isNewBreak = true;
|
||||
for(var j = 0; j < rangebreaksOut.length; j++) {
|
||||
var brkj = rangebreaksOut[j];
|
||||
if(min > brkj.max || max < brkj.min) {
|
||||
// potentially a new break
|
||||
} else {
|
||||
if(min < brkj.max && max >= brkj.min) {
|
||||
if(min < brkj.min) {
|
||||
brkj.min = min;
|
||||
}
|
||||
|
@ -61859,7 +61951,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
// the first letter of ax._id?)
|
||||
// in case the expected data isn't there, make a list of
|
||||
// integers based on the opposite data
|
||||
ax.makeCalcdata = function(trace, axLetter) {
|
||||
ax.makeCalcdata = function(trace, axLetter, opts) {
|
||||
var arrayIn, arrayOut, i, len;
|
||||
|
||||
var axType = ax.type;
|
||||
|
@ -61883,7 +61975,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
|
||||
arrayOut = new Array(len);
|
||||
for(i = 0; i < len; i++) {
|
||||
arrayOut[i] = ax.d2c(arrayIn[i], 0, cal);
|
||||
arrayOut[i] = ax.d2c(arrayIn[i], 0, cal, opts);
|
||||
}
|
||||
} else {
|
||||
var v0 = ((axLetter + '0') in trace) ? ax.d2c(trace[axLetter + '0'], 0, cal) : 0;
|
||||
|
@ -61931,13 +62023,13 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
}
|
||||
};
|
||||
|
||||
ax._emptyCategories = function() {
|
||||
ax._categories = [];
|
||||
ax._categoriesMap = {};
|
||||
};
|
||||
|
||||
// should skip if not category nor multicategory
|
||||
ax.clearCalc = function() {
|
||||
var emptyCategories = function() {
|
||||
ax._categories = [];
|
||||
ax._categoriesMap = {};
|
||||
};
|
||||
|
||||
var matchGroups = fullLayout._axisMatchGroups;
|
||||
|
||||
if(matchGroups && matchGroups.length) {
|
||||
|
@ -61964,14 +62056,14 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
ax._categories = categories;
|
||||
ax._categoriesMap = categoriesMap;
|
||||
} else {
|
||||
emptyCategories();
|
||||
ax._emptyCategories();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found) emptyCategories();
|
||||
if(!found) ax._emptyCategories();
|
||||
} else {
|
||||
emptyCategories();
|
||||
ax._emptyCategories();
|
||||
}
|
||||
|
||||
if(ax._initialCategories) {
|
||||
|
@ -61985,12 +62077,8 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
// returns the indices of the traces affected by the reordering
|
||||
ax.sortByInitialCategories = function() {
|
||||
var affectedTraces = [];
|
||||
var emptyCategories = function() {
|
||||
ax._categories = [];
|
||||
ax._categoriesMap = {};
|
||||
};
|
||||
|
||||
emptyCategories();
|
||||
ax._emptyCategories();
|
||||
|
||||
if(ax._initialCategories) {
|
||||
for(var j = 0; j < ax._initialCategories.length; j++) {
|
||||
|
@ -62198,6 +62286,7 @@ module.exports = function handleTickDefaults(containerIn, containerOut, coerce,
|
|||
'use strict';
|
||||
|
||||
var cleanTicks = _dereq_('./clean_ticks');
|
||||
var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray;
|
||||
|
||||
module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType) {
|
||||
function readInput(attr) {
|
||||
|
@ -62210,18 +62299,11 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe
|
|||
var _tick0 = readInput('tick0');
|
||||
var _dtick = readInput('dtick');
|
||||
var _tickvals = readInput('tickvals');
|
||||
var _tickmode = readInput('tickmode');
|
||||
var tickmode;
|
||||
|
||||
if(_tickmode === 'array' &&
|
||||
(axType === 'log' || axType === 'date')) {
|
||||
tickmode = containerOut.tickmode = 'auto';
|
||||
} else {
|
||||
var tickmodeDefault = Array.isArray(_tickvals) ? 'array' :
|
||||
_dtick ? 'linear' :
|
||||
'auto';
|
||||
tickmode = coerce('tickmode', tickmodeDefault);
|
||||
}
|
||||
var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' :
|
||||
_dtick ? 'linear' :
|
||||
'auto';
|
||||
var tickmode = coerce('tickmode', tickmodeDefault);
|
||||
|
||||
if(tickmode === 'auto') coerce('nticks');
|
||||
else if(tickmode === 'linear') {
|
||||
|
@ -62239,7 +62321,7 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe
|
|||
}
|
||||
};
|
||||
|
||||
},{"./clean_ticks":227}],246:[function(_dereq_,module,exports){
|
||||
},{"../../lib":178,"./clean_ticks":227}],246:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -64269,6 +64351,20 @@ plots.supplyDefaults = function(gd, opts) {
|
|||
// clean subplots and other artifacts from previous plot calls
|
||||
plots.cleanPlot(newFullData, newFullLayout, oldFullData, oldFullLayout);
|
||||
|
||||
var hadGL2D = !!(oldFullLayout._has && oldFullLayout._has('gl2d'));
|
||||
var hasGL2D = !!(newFullLayout._has && newFullLayout._has('gl2d'));
|
||||
var hadCartesian = !!(oldFullLayout._has && oldFullLayout._has('cartesian'));
|
||||
var hasCartesian = !!(newFullLayout._has && newFullLayout._has('cartesian'));
|
||||
var hadBgLayer = hadCartesian || hadGL2D;
|
||||
var hasBgLayer = hasCartesian || hasGL2D;
|
||||
if(hadBgLayer && !hasBgLayer) {
|
||||
// remove bgLayer
|
||||
oldFullLayout._bgLayer.remove();
|
||||
} else if(hasBgLayer && !hadBgLayer) {
|
||||
// create bgLayer
|
||||
newFullLayout._shouldCreateBgLayer = true;
|
||||
}
|
||||
|
||||
// clear selection outline until we implement persistent selection,
|
||||
// don't clear them though when drag handlers (e.g. listening to
|
||||
// `plotly_selecting`) update the graph.
|
||||
|
@ -65339,6 +65435,15 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) {
|
|||
)(layoutIn, layoutOut, coerce);
|
||||
};
|
||||
|
||||
function getComputedSize(attr) {
|
||||
return (
|
||||
(typeof attr === 'string') &&
|
||||
(attr.substr(attr.length - 2) === 'px') &&
|
||||
parseFloat(attr)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
plots.plotAutoSize = function plotAutoSize(gd, layout, fullLayout) {
|
||||
var context = gd._context || {};
|
||||
var frameMargins = context.frameMargins;
|
||||
|
@ -65365,8 +65470,8 @@ plots.plotAutoSize = function plotAutoSize(gd, layout, fullLayout) {
|
|||
// but don't enforce any ratio restrictions
|
||||
var computedStyle = isPlotDiv ? window.getComputedStyle(gd) : {};
|
||||
|
||||
newWidth = parseFloat(computedStyle.width) || parseFloat(computedStyle.maxWidth) || fullLayout.width;
|
||||
newHeight = parseFloat(computedStyle.height) || parseFloat(computedStyle.maxHeight) || fullLayout.height;
|
||||
newWidth = getComputedSize(computedStyle.width) || getComputedSize(computedStyle.maxWidth) || fullLayout.width;
|
||||
newHeight = getComputedSize(computedStyle.height) || getComputedSize(computedStyle.maxHeight) || fullLayout.height;
|
||||
|
||||
if(isNumeric(frameMargins) && frameMargins > 0) {
|
||||
var factor = 1 - 2 * frameMargins;
|
||||
|
@ -70032,7 +70137,7 @@ proto.initInteractions = function() {
|
|||
b: mins0.b + (dxScaled + dyScaled) / 2,
|
||||
c: mins0.c - (dxScaled - dyScaled) / 2
|
||||
};
|
||||
var minsorted = [mins.a, mins.b, mins.c].sort();
|
||||
var minsorted = [mins.a, mins.b, mins.c].sort(Lib.sorterAsc);
|
||||
var minindices = {
|
||||
a: minsorted.indexOf(mins.a),
|
||||
b: minsorted.indexOf(mins.b),
|
||||
|
@ -71663,11 +71768,15 @@ module.exports = function calc(gd, trace) {
|
|||
var ya = Axes.getFromId(gd, trace.yaxis || 'y');
|
||||
var size, pos;
|
||||
|
||||
var sizeOpts = {
|
||||
msUTC: !!(trace.base || trace.base === 0)
|
||||
};
|
||||
|
||||
if(trace.orientation === 'h') {
|
||||
size = xa.makeCalcdata(trace, 'x');
|
||||
size = xa.makeCalcdata(trace, 'x', sizeOpts);
|
||||
pos = ya.makeCalcdata(trace, 'y');
|
||||
} else {
|
||||
size = ya.makeCalcdata(trace, 'y');
|
||||
size = ya.makeCalcdata(trace, 'y', sizeOpts);
|
||||
pos = xa.makeCalcdata(trace, 'x');
|
||||
}
|
||||
|
||||
|
@ -76161,8 +76270,11 @@ function plot(gd, plotinfo, cdbox, boxLayer) {
|
|||
}
|
||||
|
||||
function plotBoxAndWhiskers(sel, axes, trace, t) {
|
||||
var posAxis = axes.pos;
|
||||
var isHorizontal = trace.orientation === 'h';
|
||||
var valAxis = axes.val;
|
||||
var posAxis = axes.pos;
|
||||
var posHasRangeBreaks = !!posAxis.rangebreaks;
|
||||
|
||||
var bPos = t.bPos;
|
||||
var wdPos = t.wdPos || 0;
|
||||
var bPosPxOffset = t.bPosPxOffset || 0;
|
||||
|
@ -76196,11 +76308,15 @@ function plotBoxAndWhiskers(sel, axes, trace, t) {
|
|||
if(d.empty) return 'M0,0Z';
|
||||
|
||||
var lcenter = posAxis.c2l(d.pos + bPos, true);
|
||||
var posc = posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var pos0 = posAxis.l2p(lcenter - bdPos0) + bPosPxOffset;
|
||||
var pos1 = posAxis.l2p(lcenter + bdPos1) + bPosPxOffset;
|
||||
var posw0 = posAxis.l2p(lcenter - wdPos) + bPosPxOffset;
|
||||
var posw1 = posAxis.l2p(lcenter + wdPos) + bPosPxOffset;
|
||||
var posc = posHasRangeBreaks ? (pos0 + pos1) / 2 : posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var r = trace.whiskerwidth;
|
||||
var posw0 = posHasRangeBreaks ? pos0 * r + (1 - r) * posc : posAxis.l2p(lcenter - wdPos) + bPosPxOffset;
|
||||
var posw1 = posHasRangeBreaks ? pos1 * r + (1 - r) * posc : posAxis.l2p(lcenter + wdPos) + bPosPxOffset;
|
||||
|
||||
var posm0 = posAxis.l2p(lcenter - bdPos0 * nw) + bPosPxOffset;
|
||||
var posm1 = posAxis.l2p(lcenter + bdPos1 * nw) + bPosPxOffset;
|
||||
var q1 = valAxis.c2p(d.q1, true);
|
||||
|
@ -76224,30 +76340,45 @@ function plotBoxAndWhiskers(sel, axes, trace, t) {
|
|||
var ln = valAxis.c2p(d.ln, true);
|
||||
var un = valAxis.c2p(d.un, true);
|
||||
|
||||
if(trace.orientation === 'h') {
|
||||
if(isHorizontal) {
|
||||
d3.select(this).attr('d',
|
||||
'M' + m + ',' + posm0 + 'V' + posm1 + // median line
|
||||
'M' + q1 + ',' + pos0 + 'V' + pos1 + // left edge
|
||||
(notched ? 'H' + ln + 'L' + m + ',' + posm1 + 'L' + un + ',' + pos1 : '') + // top notched edge
|
||||
(notched ?
|
||||
'H' + ln + 'L' + m + ',' + posm1 + 'L' + un + ',' + pos1 :
|
||||
''
|
||||
) + // top notched edge
|
||||
'H' + q3 + // end of the top edge
|
||||
'V' + pos0 + // right edge
|
||||
(notched ? 'H' + un + 'L' + m + ',' + posm0 + 'L' + ln + ',' + pos0 : '') + // bottom notched edge
|
||||
'Z' + // end of the box
|
||||
'M' + q1 + ',' + posc + 'H' + lf + 'M' + q3 + ',' + posc + 'H' + uf + // whiskers
|
||||
((whiskerWidth === 0) ? '' : // whisker caps
|
||||
'M' + lf + ',' + posw0 + 'V' + posw1 + 'M' + uf + ',' + posw0 + 'V' + posw1));
|
||||
(whiskerWidth === 0 ?
|
||||
'' : // whisker caps
|
||||
'M' + lf + ',' + posw0 + 'V' + posw1 + 'M' + uf + ',' + posw0 + 'V' + posw1
|
||||
)
|
||||
);
|
||||
} else {
|
||||
d3.select(this).attr('d',
|
||||
'M' + posm0 + ',' + m + 'H' + posm1 + // median line
|
||||
'M' + pos0 + ',' + q1 + 'H' + pos1 + // top of the box
|
||||
(notched ? 'V' + ln + 'L' + posm1 + ',' + m + 'L' + pos1 + ',' + un : '') + // notched right edge
|
||||
(notched ?
|
||||
'V' + ln + 'L' + posm1 + ',' + m + 'L' + pos1 + ',' + un :
|
||||
''
|
||||
) + // notched right edge
|
||||
'V' + q3 + // end of the right edge
|
||||
'H' + pos0 + // bottom of the box
|
||||
(notched ? 'V' + un + 'L' + posm0 + ',' + m + 'L' + pos0 + ',' + ln : '') + // notched left edge
|
||||
(notched ?
|
||||
'V' + un + 'L' + posm0 + ',' + m + 'L' + pos0 + ',' + ln :
|
||||
''
|
||||
) + // notched left edge
|
||||
'Z' + // end of the box
|
||||
'M' + posc + ',' + q1 + 'V' + lf + 'M' + posc + ',' + q3 + 'V' + uf + // whiskers
|
||||
((whiskerWidth === 0) ? '' : // whisker caps
|
||||
'M' + posw0 + ',' + lf + 'H' + posw1 + 'M' + posw0 + ',' + uf + 'H' + posw1));
|
||||
(whiskerWidth === 0 ?
|
||||
'' : // whisker caps
|
||||
'M' + posw0 + ',' + lf + 'H' + posw1 + 'M' + posw0 + ',' + uf + 'H' + posw1
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -76363,8 +76494,10 @@ function plotPoints(sel, axes, trace, t) {
|
|||
}
|
||||
|
||||
function plotBoxMean(sel, axes, trace, t) {
|
||||
var posAxis = axes.pos;
|
||||
var valAxis = axes.val;
|
||||
var posAxis = axes.pos;
|
||||
var posHasRangeBreaks = !!posAxis.rangebreaks;
|
||||
|
||||
var bPos = t.bPos;
|
||||
var bPosPxOffset = t.bPosPxOffset || 0;
|
||||
|
||||
|
@ -76398,9 +76531,11 @@ function plotBoxMean(sel, axes, trace, t) {
|
|||
|
||||
paths.each(function(d) {
|
||||
var lcenter = posAxis.c2l(d.pos + bPos, true);
|
||||
var posc = posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var pos0 = posAxis.l2p(lcenter - bdPos0) + bPosPxOffset;
|
||||
var pos1 = posAxis.l2p(lcenter + bdPos1) + bPosPxOffset;
|
||||
var posc = posHasRangeBreaks ? (pos0 + pos1) / 2 : posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var m = valAxis.c2p(d.mean, true);
|
||||
var sl = valAxis.c2p(d.mean - d.sd, true);
|
||||
var sh = valAxis.c2p(d.mean + d.sd, true);
|
||||
|
@ -79071,6 +79206,7 @@ var clean2dArray = _dereq_('./clean_2d_array');
|
|||
var interp2d = _dereq_('./interp2d');
|
||||
var findEmpties = _dereq_('./find_empties');
|
||||
var makeBoundArray = _dereq_('./make_bound_array');
|
||||
var BADNUM = _dereq_('../../constants/numerical').BADNUM;
|
||||
|
||||
module.exports = function calc(gd, trace) {
|
||||
// prepare the raw data
|
||||
|
@ -79122,13 +79258,25 @@ module.exports = function calc(gd, trace) {
|
|||
dy = trace.dy;
|
||||
|
||||
z = clean2dArray(zIn, trace, xa, ya);
|
||||
}
|
||||
|
||||
if(isContour || trace.connectgaps) {
|
||||
trace._emptypoints = findEmpties(z);
|
||||
interp2d(z, trace._emptypoints);
|
||||
if(xa.rangebreaks || ya.rangebreaks) {
|
||||
z = dropZonBreaks(x, y, z);
|
||||
|
||||
if(!isHist) {
|
||||
x = skipBreaks(x);
|
||||
y = skipBreaks(y);
|
||||
|
||||
trace._x = x;
|
||||
trace._y = y;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isHist && (isContour || trace.connectgaps)) {
|
||||
trace._emptypoints = findEmpties(z);
|
||||
interp2d(z, trace._emptypoints);
|
||||
}
|
||||
|
||||
function noZsmooth(msg) {
|
||||
zsmooth = trace._input.zsmooth = trace.zsmooth = false;
|
||||
Lib.warn('cannot use zsmooth: "fast": ' + msg);
|
||||
|
@ -79209,7 +79357,33 @@ module.exports = function calc(gd, trace) {
|
|||
return [cd0];
|
||||
};
|
||||
|
||||
},{"../../components/colorscale/calc":60,"../../lib":178,"../../plots/cartesian/axes":222,"../../registry":269,"../histogram2d/calc":359,"./clean_2d_array":332,"./convert_column_xyz":334,"./find_empties":336,"./interp2d":339,"./make_bound_array":340}],332:[function(_dereq_,module,exports){
|
||||
function skipBreaks(a) {
|
||||
var b = [];
|
||||
var len = a.length;
|
||||
for(var i = 0; i < len; i++) {
|
||||
var v = a[i];
|
||||
if(v !== BADNUM) b.push(v);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
function dropZonBreaks(x, y, z) {
|
||||
var newZ = [];
|
||||
var k = -1;
|
||||
for(var i = 0; i < z.length; i++) {
|
||||
if(y[i] === BADNUM) continue;
|
||||
k++;
|
||||
newZ[k] = [];
|
||||
for(var j = 0; j < z[i].length; j++) {
|
||||
if(x[j] === BADNUM) continue;
|
||||
|
||||
newZ[k].push(z[i][j]);
|
||||
}
|
||||
}
|
||||
return newZ;
|
||||
}
|
||||
|
||||
},{"../../components/colorscale/calc":60,"../../constants/numerical":158,"../../lib":178,"../../plots/cartesian/axes":222,"../../registry":269,"../histogram2d/calc":359,"./clean_2d_array":332,"./convert_column_xyz":334,"./find_empties":336,"./interp2d":339,"./make_bound_array":340}],332:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -79335,18 +79509,21 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name,
|
|||
var text;
|
||||
var hovertext;
|
||||
|
||||
var nI = col2vals.length;
|
||||
var nJ = col1vals.length;
|
||||
|
||||
for(i = 0; i < arrayVarNames.length; i++) {
|
||||
newArrays[i] = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
newArrays[i] = Lib.init2dArray(nI, nJ);
|
||||
}
|
||||
|
||||
if(hasColumnText) {
|
||||
text = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
text = Lib.init2dArray(nI, nJ);
|
||||
}
|
||||
if(hasColumnHoverText) {
|
||||
hovertext = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
hovertext = Lib.init2dArray(nI, nJ);
|
||||
}
|
||||
|
||||
var after2before = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
var after2before = Lib.init2dArray(nI, nJ);
|
||||
|
||||
for(i = 0; i < colLen; i++) {
|
||||
if(col1[i] !== BADNUM && col2[i] !== BADNUM) {
|
||||
|
@ -80410,6 +80587,11 @@ module.exports = function handleXYZDefaults(traceIn, traceOut, coerce, layout, x
|
|||
traceOut._length = null;
|
||||
}
|
||||
|
||||
if(
|
||||
traceIn.type === 'heatmapgl' ||
|
||||
traceIn.type === 'contourgl'
|
||||
) return true; // skip calendars until we handle them in those traces
|
||||
|
||||
var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');
|
||||
handleCalendarDefaults(traceIn, traceOut, [xName, yName], layout);
|
||||
|
||||
|
@ -89838,7 +90020,7 @@ module.exports = function style(gd) {
|
|||
'use strict';
|
||||
|
||||
// package version injected by `npm run preprocess`
|
||||
exports.version = '1.54.1';
|
||||
exports.version = '1.54.6';
|
||||
|
||||
},{}]},{},[11])(11)
|
||||
});
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* plotly.js (cartesian) v1.54.1
|
||||
* plotly.js (cartesian) v1.54.6
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
* Licensed under the MIT license
|
||||
|
@ -26043,6 +26043,8 @@ module.exports = function draw(gd, opts) {
|
|||
.text(title.text);
|
||||
|
||||
textLayout(titleEl, scrollBox, gd, opts); // handle mathjax or multi-line text and compute title height
|
||||
} else {
|
||||
scrollBox.selectAll('.legendtitletext').remove();
|
||||
}
|
||||
|
||||
var scrollBar = Lib.ensureSingle(legend, 'rect', 'scrollbar', function(s) {
|
||||
|
@ -37439,58 +37441,81 @@ exports.valObjectMeta = {
|
|||
* as a convenience, returns the value it finally set
|
||||
*/
|
||||
exports.coerce = function(containerIn, containerOut, attributes, attribute, dflt) {
|
||||
var opts = nestedProperty(attributes, attribute).get();
|
||||
return _coerce(containerIn, containerOut, attributes, attribute, dflt).val;
|
||||
};
|
||||
|
||||
function _coerce(containerIn, containerOut, attributes, attribute, dflt, opts) {
|
||||
var shouldValidate = (opts || {}).shouldValidate;
|
||||
|
||||
var attr = nestedProperty(attributes, attribute).get();
|
||||
if(dflt === undefined) dflt = attr.dflt;
|
||||
var src = false;
|
||||
|
||||
var propIn = nestedProperty(containerIn, attribute);
|
||||
var propOut = nestedProperty(containerOut, attribute);
|
||||
var v = propIn.get();
|
||||
var valIn = propIn.get();
|
||||
|
||||
var template = containerOut._template;
|
||||
if(v === undefined && template) {
|
||||
v = nestedProperty(template, attribute).get();
|
||||
if(valIn === undefined && template) {
|
||||
valIn = nestedProperty(template, attribute).get();
|
||||
src = (valIn !== undefined);
|
||||
|
||||
// already used the template value, so short-circuit the second check
|
||||
template = 0;
|
||||
}
|
||||
|
||||
if(dflt === undefined) dflt = opts.dflt;
|
||||
|
||||
/**
|
||||
* arrayOk: value MAY be an array, then we do no value checking
|
||||
* at this point, because it can be more complicated than the
|
||||
* individual form (eg. some array vals can be numbers, even if the
|
||||
* single values must be color strings)
|
||||
*/
|
||||
if(opts.arrayOk && isArrayOrTypedArray(v)) {
|
||||
propOut.set(v);
|
||||
return v;
|
||||
if(attr.arrayOk && isArrayOrTypedArray(valIn)) {
|
||||
propOut.set(valIn);
|
||||
return {
|
||||
inp: valIn,
|
||||
val: valIn,
|
||||
src: true
|
||||
};
|
||||
}
|
||||
|
||||
var coerceFunction = exports.valObjectMeta[opts.valType].coerceFunction;
|
||||
coerceFunction(v, propOut, dflt, opts);
|
||||
var coerceFunction = exports.valObjectMeta[attr.valType].coerceFunction;
|
||||
coerceFunction(valIn, propOut, dflt, attr);
|
||||
|
||||
var valOut = propOut.get();
|
||||
src = (valOut !== undefined) && shouldValidate && validate(valIn, attr);
|
||||
|
||||
var out = propOut.get();
|
||||
// in case v was provided but invalid, try the template again so it still
|
||||
// overrides the regular default
|
||||
if(template && out === dflt && !validate(v, opts)) {
|
||||
v = nestedProperty(template, attribute).get();
|
||||
coerceFunction(v, propOut, dflt, opts);
|
||||
out = propOut.get();
|
||||
if(template && valOut === dflt && !validate(valIn, attr)) {
|
||||
valIn = nestedProperty(template, attribute).get();
|
||||
coerceFunction(valIn, propOut, dflt, attr);
|
||||
valOut = propOut.get();
|
||||
|
||||
src = (valOut !== undefined) && shouldValidate && validate(valIn, attr);
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
return {
|
||||
inp: valIn,
|
||||
val: valOut,
|
||||
src: src
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Variation on coerce
|
||||
* useful when setting an attribute to a valid value
|
||||
* can change the default for another attribute.
|
||||
*
|
||||
* Uses coerce to get attribute value if user input is valid,
|
||||
* returns attribute default if user input it not valid or
|
||||
* returns false if there is no user input.
|
||||
*/
|
||||
exports.coerce2 = function(containerIn, containerOut, attributes, attribute, dflt) {
|
||||
var propIn = nestedProperty(containerIn, attribute);
|
||||
var propOut = exports.coerce(containerIn, containerOut, attributes, attribute, dflt);
|
||||
var valIn = propIn.get();
|
||||
|
||||
return (valIn !== undefined && valIn !== null) ? propOut : false;
|
||||
var out = _coerce(containerIn, containerOut, attributes, attribute, dflt, {
|
||||
shouldValidate: true
|
||||
});
|
||||
return (out.src && out.inp !== undefined) ? out.val : false;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -39187,10 +39212,10 @@ lib.bBoxIntersect = function(a, b, pad) {
|
|||
* func: the function to apply
|
||||
* x1, x2: optional extra args
|
||||
*/
|
||||
lib.simpleMap = function(array, func, x1, x2) {
|
||||
lib.simpleMap = function(array, func, x1, x2, opts) {
|
||||
var len = array.length;
|
||||
var out = new Array(len);
|
||||
for(var i = 0; i < len; i++) out[i] = func(array[i], x1, x2);
|
||||
for(var i = 0; i < len; i++) out[i] = func(array[i], x1, x2, opts);
|
||||
return out;
|
||||
};
|
||||
|
||||
|
@ -41745,9 +41770,8 @@ module.exports = function relinkPrivateKeys(toContainer, fromContainer) {
|
|||
var fromVal = fromContainer[k];
|
||||
var toVal = toContainer[k];
|
||||
|
||||
if(toVal === fromVal) {
|
||||
continue;
|
||||
}
|
||||
if(toVal === fromVal) continue;
|
||||
|
||||
if(k.charAt(0) === '_' || typeof fromVal === 'function') {
|
||||
// if it already exists at this point, it's something
|
||||
// that we recreate each time around, so ignore it
|
||||
|
@ -41791,6 +41815,7 @@ module.exports = function relinkPrivateKeys(toContainer, fromContainer) {
|
|||
var isNumeric = _dereq_('fast-isnumeric');
|
||||
var loggers = _dereq_('./loggers');
|
||||
var identity = _dereq_('./identity');
|
||||
var BADNUM = _dereq_('../constants/numerical').BADNUM;
|
||||
|
||||
// don't trust floating point equality - fraction of bin size to call
|
||||
// "on the line" and ensure that they go the right way specified by
|
||||
|
@ -41851,22 +41876,35 @@ exports.sorterDes = function(a, b) { return b - a; };
|
|||
*/
|
||||
exports.distinctVals = function(valsIn) {
|
||||
var vals = valsIn.slice(); // otherwise we sort the original array...
|
||||
vals.sort(exports.sorterAsc);
|
||||
vals.sort(exports.sorterAsc); // undefined listed in the end - also works on IE11
|
||||
|
||||
var l = vals.length - 1;
|
||||
var minDiff = (vals[l] - vals[0]) || 1;
|
||||
var errDiff = minDiff / (l || 1) / 10000;
|
||||
var v2 = [vals[0]];
|
||||
var last;
|
||||
for(last = vals.length - 1; last > -1; last--) {
|
||||
if(vals[last] !== BADNUM) break;
|
||||
}
|
||||
|
||||
var minDiff = (vals[last] - vals[0]) || 1;
|
||||
var errDiff = minDiff / (last || 1) / 10000;
|
||||
var newVals = [];
|
||||
var preV;
|
||||
for(var i = 0; i <= last; i++) {
|
||||
var v = vals[i];
|
||||
|
||||
for(var i = 0; i < l; i++) {
|
||||
// make sure values aren't just off by a rounding error
|
||||
if(vals[i + 1] > vals[i] + errDiff) {
|
||||
minDiff = Math.min(minDiff, vals[i + 1] - vals[i]);
|
||||
v2.push(vals[i + 1]);
|
||||
var diff = v - preV;
|
||||
|
||||
if(preV === undefined) {
|
||||
newVals.push(v);
|
||||
preV = v;
|
||||
} else if(diff > errDiff) {
|
||||
minDiff = Math.min(minDiff, diff);
|
||||
|
||||
newVals.push(v);
|
||||
preV = v;
|
||||
}
|
||||
}
|
||||
|
||||
return {vals: v2, minDiff: minDiff};
|
||||
return {vals: newVals, minDiff: minDiff};
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -41963,7 +42001,7 @@ exports.findIndexOfMin = function(arr, fn) {
|
|||
return ind;
|
||||
};
|
||||
|
||||
},{"./identity":177,"./loggers":182,"fast-isnumeric":18}],197:[function(_dereq_,module,exports){
|
||||
},{"../constants/numerical":158,"./identity":177,"./loggers":182,"fast-isnumeric":18}],197:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -44457,7 +44495,13 @@ function plot(gd, data, layout, config) {
|
|||
fullLayout._replotting = true;
|
||||
|
||||
// make or remake the framework if we need to
|
||||
if(graphWasEmpty) makePlotFramework(gd);
|
||||
if(graphWasEmpty || fullLayout._shouldCreateBgLayer) {
|
||||
makePlotFramework(gd);
|
||||
|
||||
if(fullLayout._shouldCreateBgLayer) {
|
||||
delete fullLayout._shouldCreateBgLayer;
|
||||
}
|
||||
}
|
||||
|
||||
// polar need a different framework
|
||||
if(gd.framework !== makePlotFramework) {
|
||||
|
@ -47011,6 +47055,16 @@ function react(gd, data, layout, config) {
|
|||
|
||||
applyUIRevisions(gd.data, gd.layout, oldFullData, oldFullLayout);
|
||||
|
||||
var allNames = Object.getOwnPropertyNames(oldFullLayout);
|
||||
for(var q = 0; q < allNames.length; q++) {
|
||||
var name = allNames[q];
|
||||
var start = name.substring(0, 5);
|
||||
if(start === 'xaxis' || start === 'yaxis') {
|
||||
var emptyCategories = oldFullLayout[name]._emptyCategories;
|
||||
if(emptyCategories) emptyCategories();
|
||||
}
|
||||
}
|
||||
|
||||
// "true" skips updating calcdata and remapping arrays from calcTransforms,
|
||||
// which supplyDefaults usually does at the end, but we may need to NOT do
|
||||
// if the diff (which we haven't determined yet) says we'll recalc
|
||||
|
@ -50977,6 +51031,9 @@ var isArrayOrTypedArray = Lib.isArrayOrTypedArray;
|
|||
* error message (shown in console in logger config argument is enable)
|
||||
*/
|
||||
module.exports = function validate(data, layout) {
|
||||
if(data === undefined) data = [];
|
||||
if(layout === undefined) layout = {};
|
||||
|
||||
var schema = PlotSchema.get();
|
||||
var errorList = [];
|
||||
var gd = {_context: Lib.extendFlat({}, dfltConfig)};
|
||||
|
@ -52311,6 +52368,15 @@ var autorange = _dereq_('./autorange');
|
|||
axes.getAutoRange = autorange.getAutoRange;
|
||||
axes.findExtremes = autorange.findExtremes;
|
||||
|
||||
var epsilon = 0.0001;
|
||||
function expandRange(range) {
|
||||
var delta = (range[1] - range[0]) * epsilon;
|
||||
return [
|
||||
range[0] - delta,
|
||||
range[1] + delta
|
||||
];
|
||||
}
|
||||
|
||||
/*
|
||||
* find the list of possible axes to reference with an xref or yref attribute
|
||||
* and coerce it to that list
|
||||
|
@ -52755,8 +52821,8 @@ function autoShiftMonthBins(binStart, data, dtick, dataMin, calendar) {
|
|||
// ----------------------------------------------------
|
||||
|
||||
// ensure we have tick0, dtick, and tick rounding calculated
|
||||
axes.prepTicks = function(ax) {
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
axes.prepTicks = function(ax, opts) {
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts);
|
||||
|
||||
// calculate max number of (auto) ticks to display based on plot size
|
||||
if(ax.tickmode === 'auto' || !ax.dtick) {
|
||||
|
@ -52809,20 +52875,21 @@ axes.prepTicks = function(ax) {
|
|||
// if ticks are set to automatic, determine the right values (tick0,dtick)
|
||||
// in any case, set tickround to # of digits to round tick labels to,
|
||||
// or codes to this effect for log and date scales
|
||||
axes.calcTicks = function calcTicks(ax) {
|
||||
axes.prepTicks(ax);
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
axes.calcTicks = function calcTicks(ax, opts) {
|
||||
axes.prepTicks(ax, opts);
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l, undefined, undefined, opts);
|
||||
|
||||
// now that we've figured out the auto values for formatting
|
||||
// in case we're missing some ticktext, we can break out for array ticks
|
||||
if(ax.tickmode === 'array') return arrayTicks(ax);
|
||||
|
||||
// find the first tick
|
||||
ax._tmin = axes.tickFirst(ax);
|
||||
ax._tmin = axes.tickFirst(ax, opts);
|
||||
|
||||
// add a tiny bit so we get ticks which may have rounded out
|
||||
var startTick = rng[0] * 1.0001 - rng[1] * 0.0001;
|
||||
var endTick = rng[1] * 1.0001 - rng[0] * 0.0001;
|
||||
var exRng = expandRange(rng);
|
||||
var startTick = exRng[0];
|
||||
var endTick = exRng[1];
|
||||
// check for reversed axis
|
||||
var axrev = (rng[1] < rng[0]);
|
||||
|
||||
|
@ -52867,26 +52934,15 @@ axes.calcTicks = function calcTicks(ax) {
|
|||
|
||||
if(ax.rangebreaks) {
|
||||
// replace ticks inside breaks that would get a tick
|
||||
if(ax.tickmode === 'auto') {
|
||||
for(var t = 0; t < tickVals.length; t++) {
|
||||
var value = tickVals[t].value;
|
||||
if(ax.maskBreaks(value) === BADNUM) {
|
||||
// find which break we are in
|
||||
for(var k = 0; k < ax._rangebreaks.length; k++) {
|
||||
var brk = ax._rangebreaks[k];
|
||||
if(value >= brk.min && value < brk.max) {
|
||||
tickVals[t].value = brk.max; // replace with break end
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// reduce ticks
|
||||
// and reduce ticks
|
||||
var len = tickVals.length;
|
||||
if(len > 2) {
|
||||
var tf2 = 2 * (ax.tickfont ? ax.tickfont.size : 12);
|
||||
if(len) {
|
||||
var tf = 0;
|
||||
if(ax.tickmode === 'auto') {
|
||||
tf =
|
||||
(ax._id.charAt(0) === 'y' ? 2 : 6) *
|
||||
(ax.tickfont ? ax.tickfont.size : 12);
|
||||
}
|
||||
|
||||
var newTickVals = [];
|
||||
var prevPos;
|
||||
|
@ -52894,12 +52950,26 @@ axes.calcTicks = function calcTicks(ax) {
|
|||
var dir = axrev ? 1 : -1;
|
||||
var first = axrev ? 0 : len - 1;
|
||||
var last = axrev ? len - 1 : 0;
|
||||
for(var q = first; dir * q <= dir * last; q += dir) { // apply reverse loop to pick greater values in breaks first
|
||||
var pos = ax.c2p(tickVals[q].value);
|
||||
for(var q = first; dir * q <= dir * last; q += dir) {
|
||||
var tickVal = tickVals[q];
|
||||
if(ax.maskBreaks(tickVal.value) === BADNUM) {
|
||||
tickVal.value = moveOutsideBreak(tickVal.value, ax);
|
||||
|
||||
if(prevPos === undefined || Math.abs(pos - prevPos) > tf2) {
|
||||
if(ax._rl && (
|
||||
ax._rl[0] === tickVal.value ||
|
||||
ax._rl[1] === tickVal.value
|
||||
)) continue;
|
||||
}
|
||||
|
||||
var pos = ax.c2p(tickVal.value);
|
||||
|
||||
if(pos === prevPos) {
|
||||
if(newTickVals[newTickVals.length - 1].value < tickVal.value) {
|
||||
newTickVals[newTickVals.length - 1] = tickVal;
|
||||
}
|
||||
} else if(prevPos === undefined || Math.abs(pos - prevPos) > tf) {
|
||||
prevPos = pos;
|
||||
newTickVals.push(tickVals[q]);
|
||||
newTickVals.push(tickVal);
|
||||
}
|
||||
}
|
||||
tickVals = newTickVals.reverse();
|
||||
|
@ -52946,10 +53016,9 @@ function arrayTicks(ax) {
|
|||
var text = ax.ticktext;
|
||||
var ticksOut = new Array(vals.length);
|
||||
var rng = Lib.simpleMap(ax.range, ax.r2l);
|
||||
var r0expanded = rng[0] * 1.0001 - rng[1] * 0.0001;
|
||||
var r1expanded = rng[1] * 1.0001 - rng[0] * 0.0001;
|
||||
var tickMin = Math.min(r0expanded, r1expanded);
|
||||
var tickMax = Math.max(r0expanded, r1expanded);
|
||||
var exRng = expandRange(rng);
|
||||
var tickMin = Math.min(exRng[0], exRng[1]);
|
||||
var tickMax = Math.max(exRng[0], exRng[1]);
|
||||
var j = 0;
|
||||
|
||||
// without a text array, just format the given values as any other ticks
|
||||
|
@ -53040,8 +53109,7 @@ axes.autoTicks = function(ax, roughDTick) {
|
|||
roughDTick /= ONEAVGMONTH;
|
||||
ax.dtick = 'M' + roundDTick(roughDTick, 1, roundBase24);
|
||||
} else if(roughX2 > ONEDAY) {
|
||||
ax.dtick = roundDTick(roughDTick, ONEDAY, ax._hasDayOfWeekBreaks ? [1, 7, 14] : roundDays);
|
||||
|
||||
ax.dtick = roundDTick(roughDTick, ONEDAY, ax._hasDayOfWeekBreaks ? [1, 2, 7, 14] : roundDays);
|
||||
// get week ticks on sunday
|
||||
// this will also move the base tick off 2000-01-01 if dtick is
|
||||
// 2 or 3 days... but that's a weird enough case that we'll ignore it.
|
||||
|
@ -53189,29 +53257,31 @@ axes.tickIncrement = function(x, dtick, axrev, calendar) {
|
|||
if(tType === 'M') return Lib.incrementMonth(x, dtSigned, calendar);
|
||||
|
||||
// Log scales: Linear, Digits
|
||||
else if(tType === 'L') return Math.log(Math.pow(10, x) + dtSigned) / Math.LN10;
|
||||
if(tType === 'L') return Math.log(Math.pow(10, x) + dtSigned) / Math.LN10;
|
||||
|
||||
// log10 of 2,5,10, or all digits (logs just have to be
|
||||
// close enough to round)
|
||||
else if(tType === 'D') {
|
||||
if(tType === 'D') {
|
||||
var tickset = (dtick === 'D2') ? roundLog2 : roundLog1;
|
||||
var x2 = x + axSign * 0.01;
|
||||
var frac = Lib.roundUp(Lib.mod(x2, 1), tickset, axrev);
|
||||
|
||||
return Math.floor(x2) +
|
||||
Math.log(d3.round(Math.pow(10, frac), 1)) / Math.LN10;
|
||||
} else throw 'unrecognized dtick ' + String(dtick);
|
||||
}
|
||||
|
||||
throw 'unrecognized dtick ' + String(dtick);
|
||||
};
|
||||
|
||||
// calculate the first tick on an axis
|
||||
axes.tickFirst = function(ax) {
|
||||
axes.tickFirst = function(ax, opts) {
|
||||
var r2l = ax.r2l || Number;
|
||||
var rng = Lib.simpleMap(ax.range, r2l);
|
||||
var rng = Lib.simpleMap(ax.range, r2l, undefined, undefined, opts);
|
||||
var axrev = rng[1] < rng[0];
|
||||
var sRound = axrev ? Math.floor : Math.ceil;
|
||||
// add a tiny extra bit to make sure we get ticks
|
||||
// that may have been rounded out
|
||||
var r0 = rng[0] * 1.0001 - rng[1] * 0.0001;
|
||||
var r0 = expandRange(rng)[0];
|
||||
var dtick = ax.dtick;
|
||||
var tick0 = r2l(ax.tick0);
|
||||
|
||||
|
@ -54342,6 +54412,8 @@ function getDividerVals(ax, vals) {
|
|||
var out = [];
|
||||
var i, current;
|
||||
|
||||
var reversed = (vals.length && vals[vals.length - 1].x < vals[0].x);
|
||||
|
||||
// never used for labels;
|
||||
// no need to worry about the other tickTextObj keys
|
||||
var _push = function(d, bndIndex) {
|
||||
|
@ -54355,11 +54427,11 @@ function getDividerVals(ax, vals) {
|
|||
for(i = 0; i < vals.length; i++) {
|
||||
var d = vals[i];
|
||||
if(d.text2 !== current) {
|
||||
_push(d, 0);
|
||||
_push(d, reversed ? 1 : 0);
|
||||
}
|
||||
current = d.text2;
|
||||
}
|
||||
_push(vals[i - 1], 1);
|
||||
_push(vals[i - 1], reversed ? 0 : 1);
|
||||
}
|
||||
|
||||
return out;
|
||||
|
@ -55414,6 +55486,17 @@ function isAngular(ax) {
|
|||
return ax._id === 'angularaxis';
|
||||
}
|
||||
|
||||
function moveOutsideBreak(v, ax) {
|
||||
var len = ax._rangebreaks.length;
|
||||
for(var k = 0; k < len; k++) {
|
||||
var brk = ax._rangebreaks[k];
|
||||
if(v >= brk.min && v < brk.max) {
|
||||
return brk.max;
|
||||
}
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
},{"../../components/color":52,"../../components/drawing":74,"../../components/titles":147,"../../constants/alignment":154,"../../constants/numerical":158,"../../lib":178,"../../lib/svg_text_utils":199,"../../plots/plots":256,"../../registry":269,"./autorange":221,"./axis_autotype":223,"./axis_ids":225,"./clean_ticks":227,"./layout_attributes":236,"./set_convert":242,"d3":16,"fast-isnumeric":18}],223:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
|
@ -55824,7 +55907,7 @@ exports.name2id = function name2id(name) {
|
|||
};
|
||||
|
||||
exports.cleanId = function cleanId(id, axLetter) {
|
||||
if(!id.match(constants.AX_ID_PATTERN)) return;
|
||||
if(typeof id !== 'string' || !id.match(constants.AX_ID_PATTERN)) return;
|
||||
if(axLetter && id.charAt(0) !== axLetter) return;
|
||||
|
||||
var axNum = id.substr(1).replace(/^0+/, '');
|
||||
|
@ -57810,6 +57893,10 @@ function attachWheelEventHandler(element, handler) {
|
|||
if(!supportsPassive) {
|
||||
if(element.onwheel !== undefined) element.onwheel = handler;
|
||||
else if(element.onmousewheel !== undefined) element.onmousewheel = handler;
|
||||
else if(!element.isAddedWheelEvent) {
|
||||
element.isAddedWheelEvent = true;
|
||||
element.addEventListener('wheel', handler, {passive: false});
|
||||
}
|
||||
} else {
|
||||
var wheelEventName = element.onwheel !== undefined ? 'wheel' : 'mousewheel';
|
||||
|
||||
|
@ -61156,7 +61243,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
* - inserts a dummy arg so calendar is the 3rd arg (see notes below).
|
||||
* - defaults to ax.calendar
|
||||
*/
|
||||
function dt2ms(v, _, calendar) {
|
||||
function dt2ms(v, _, calendar, opts) {
|
||||
// NOTE: Changed this behavior: previously we took any numeric value
|
||||
// to be a ms, even if it was a string that could be a bare year.
|
||||
// Now we convert it as a date if at all possible, and only try
|
||||
|
@ -61165,6 +61252,13 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
if(ms === BADNUM) {
|
||||
if(isNumeric(v)) {
|
||||
v = +v;
|
||||
if((opts || {}).msUTC) {
|
||||
// For now it is only used
|
||||
// to fix bar length in milliseconds.
|
||||
// It could be applied in other places in v2
|
||||
return v;
|
||||
}
|
||||
|
||||
// keep track of tenths of ms, that `new Date` will drop
|
||||
// same logic as in Lib.ms2DateTime
|
||||
var msecTenths = Math.floor(Lib.mod(v + 0.05, 1) * 10);
|
||||
|
@ -61752,9 +61846,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
var isNewBreak = true;
|
||||
for(var j = 0; j < rangebreaksOut.length; j++) {
|
||||
var brkj = rangebreaksOut[j];
|
||||
if(min > brkj.max || max < brkj.min) {
|
||||
// potentially a new break
|
||||
} else {
|
||||
if(min < brkj.max && max >= brkj.min) {
|
||||
if(min < brkj.min) {
|
||||
brkj.min = min;
|
||||
}
|
||||
|
@ -61859,7 +61951,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
// the first letter of ax._id?)
|
||||
// in case the expected data isn't there, make a list of
|
||||
// integers based on the opposite data
|
||||
ax.makeCalcdata = function(trace, axLetter) {
|
||||
ax.makeCalcdata = function(trace, axLetter, opts) {
|
||||
var arrayIn, arrayOut, i, len;
|
||||
|
||||
var axType = ax.type;
|
||||
|
@ -61883,7 +61975,7 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
|
||||
arrayOut = new Array(len);
|
||||
for(i = 0; i < len; i++) {
|
||||
arrayOut[i] = ax.d2c(arrayIn[i], 0, cal);
|
||||
arrayOut[i] = ax.d2c(arrayIn[i], 0, cal, opts);
|
||||
}
|
||||
} else {
|
||||
var v0 = ((axLetter + '0') in trace) ? ax.d2c(trace[axLetter + '0'], 0, cal) : 0;
|
||||
|
@ -61931,13 +62023,13 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
}
|
||||
};
|
||||
|
||||
ax._emptyCategories = function() {
|
||||
ax._categories = [];
|
||||
ax._categoriesMap = {};
|
||||
};
|
||||
|
||||
// should skip if not category nor multicategory
|
||||
ax.clearCalc = function() {
|
||||
var emptyCategories = function() {
|
||||
ax._categories = [];
|
||||
ax._categoriesMap = {};
|
||||
};
|
||||
|
||||
var matchGroups = fullLayout._axisMatchGroups;
|
||||
|
||||
if(matchGroups && matchGroups.length) {
|
||||
|
@ -61964,14 +62056,14 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
ax._categories = categories;
|
||||
ax._categoriesMap = categoriesMap;
|
||||
} else {
|
||||
emptyCategories();
|
||||
ax._emptyCategories();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!found) emptyCategories();
|
||||
if(!found) ax._emptyCategories();
|
||||
} else {
|
||||
emptyCategories();
|
||||
ax._emptyCategories();
|
||||
}
|
||||
|
||||
if(ax._initialCategories) {
|
||||
|
@ -61985,12 +62077,8 @@ module.exports = function setConvert(ax, fullLayout) {
|
|||
// returns the indices of the traces affected by the reordering
|
||||
ax.sortByInitialCategories = function() {
|
||||
var affectedTraces = [];
|
||||
var emptyCategories = function() {
|
||||
ax._categories = [];
|
||||
ax._categoriesMap = {};
|
||||
};
|
||||
|
||||
emptyCategories();
|
||||
ax._emptyCategories();
|
||||
|
||||
if(ax._initialCategories) {
|
||||
for(var j = 0; j < ax._initialCategories.length; j++) {
|
||||
|
@ -62198,6 +62286,7 @@ module.exports = function handleTickDefaults(containerIn, containerOut, coerce,
|
|||
'use strict';
|
||||
|
||||
var cleanTicks = _dereq_('./clean_ticks');
|
||||
var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray;
|
||||
|
||||
module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType) {
|
||||
function readInput(attr) {
|
||||
|
@ -62210,18 +62299,11 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe
|
|||
var _tick0 = readInput('tick0');
|
||||
var _dtick = readInput('dtick');
|
||||
var _tickvals = readInput('tickvals');
|
||||
var _tickmode = readInput('tickmode');
|
||||
var tickmode;
|
||||
|
||||
if(_tickmode === 'array' &&
|
||||
(axType === 'log' || axType === 'date')) {
|
||||
tickmode = containerOut.tickmode = 'auto';
|
||||
} else {
|
||||
var tickmodeDefault = Array.isArray(_tickvals) ? 'array' :
|
||||
_dtick ? 'linear' :
|
||||
'auto';
|
||||
tickmode = coerce('tickmode', tickmodeDefault);
|
||||
}
|
||||
var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? 'array' :
|
||||
_dtick ? 'linear' :
|
||||
'auto';
|
||||
var tickmode = coerce('tickmode', tickmodeDefault);
|
||||
|
||||
if(tickmode === 'auto') coerce('nticks');
|
||||
else if(tickmode === 'linear') {
|
||||
|
@ -62239,7 +62321,7 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe
|
|||
}
|
||||
};
|
||||
|
||||
},{"./clean_ticks":227}],246:[function(_dereq_,module,exports){
|
||||
},{"../../lib":178,"./clean_ticks":227}],246:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -64269,6 +64351,20 @@ plots.supplyDefaults = function(gd, opts) {
|
|||
// clean subplots and other artifacts from previous plot calls
|
||||
plots.cleanPlot(newFullData, newFullLayout, oldFullData, oldFullLayout);
|
||||
|
||||
var hadGL2D = !!(oldFullLayout._has && oldFullLayout._has('gl2d'));
|
||||
var hasGL2D = !!(newFullLayout._has && newFullLayout._has('gl2d'));
|
||||
var hadCartesian = !!(oldFullLayout._has && oldFullLayout._has('cartesian'));
|
||||
var hasCartesian = !!(newFullLayout._has && newFullLayout._has('cartesian'));
|
||||
var hadBgLayer = hadCartesian || hadGL2D;
|
||||
var hasBgLayer = hasCartesian || hasGL2D;
|
||||
if(hadBgLayer && !hasBgLayer) {
|
||||
// remove bgLayer
|
||||
oldFullLayout._bgLayer.remove();
|
||||
} else if(hasBgLayer && !hadBgLayer) {
|
||||
// create bgLayer
|
||||
newFullLayout._shouldCreateBgLayer = true;
|
||||
}
|
||||
|
||||
// clear selection outline until we implement persistent selection,
|
||||
// don't clear them though when drag handlers (e.g. listening to
|
||||
// `plotly_selecting`) update the graph.
|
||||
|
@ -65339,6 +65435,15 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) {
|
|||
)(layoutIn, layoutOut, coerce);
|
||||
};
|
||||
|
||||
function getComputedSize(attr) {
|
||||
return (
|
||||
(typeof attr === 'string') &&
|
||||
(attr.substr(attr.length - 2) === 'px') &&
|
||||
parseFloat(attr)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
plots.plotAutoSize = function plotAutoSize(gd, layout, fullLayout) {
|
||||
var context = gd._context || {};
|
||||
var frameMargins = context.frameMargins;
|
||||
|
@ -65365,8 +65470,8 @@ plots.plotAutoSize = function plotAutoSize(gd, layout, fullLayout) {
|
|||
// but don't enforce any ratio restrictions
|
||||
var computedStyle = isPlotDiv ? window.getComputedStyle(gd) : {};
|
||||
|
||||
newWidth = parseFloat(computedStyle.width) || parseFloat(computedStyle.maxWidth) || fullLayout.width;
|
||||
newHeight = parseFloat(computedStyle.height) || parseFloat(computedStyle.maxHeight) || fullLayout.height;
|
||||
newWidth = getComputedSize(computedStyle.width) || getComputedSize(computedStyle.maxWidth) || fullLayout.width;
|
||||
newHeight = getComputedSize(computedStyle.height) || getComputedSize(computedStyle.maxHeight) || fullLayout.height;
|
||||
|
||||
if(isNumeric(frameMargins) && frameMargins > 0) {
|
||||
var factor = 1 - 2 * frameMargins;
|
||||
|
@ -70032,7 +70137,7 @@ proto.initInteractions = function() {
|
|||
b: mins0.b + (dxScaled + dyScaled) / 2,
|
||||
c: mins0.c - (dxScaled - dyScaled) / 2
|
||||
};
|
||||
var minsorted = [mins.a, mins.b, mins.c].sort();
|
||||
var minsorted = [mins.a, mins.b, mins.c].sort(Lib.sorterAsc);
|
||||
var minindices = {
|
||||
a: minsorted.indexOf(mins.a),
|
||||
b: minsorted.indexOf(mins.b),
|
||||
|
@ -71663,11 +71768,15 @@ module.exports = function calc(gd, trace) {
|
|||
var ya = Axes.getFromId(gd, trace.yaxis || 'y');
|
||||
var size, pos;
|
||||
|
||||
var sizeOpts = {
|
||||
msUTC: !!(trace.base || trace.base === 0)
|
||||
};
|
||||
|
||||
if(trace.orientation === 'h') {
|
||||
size = xa.makeCalcdata(trace, 'x');
|
||||
size = xa.makeCalcdata(trace, 'x', sizeOpts);
|
||||
pos = ya.makeCalcdata(trace, 'y');
|
||||
} else {
|
||||
size = ya.makeCalcdata(trace, 'y');
|
||||
size = ya.makeCalcdata(trace, 'y', sizeOpts);
|
||||
pos = xa.makeCalcdata(trace, 'x');
|
||||
}
|
||||
|
||||
|
@ -76161,8 +76270,11 @@ function plot(gd, plotinfo, cdbox, boxLayer) {
|
|||
}
|
||||
|
||||
function plotBoxAndWhiskers(sel, axes, trace, t) {
|
||||
var posAxis = axes.pos;
|
||||
var isHorizontal = trace.orientation === 'h';
|
||||
var valAxis = axes.val;
|
||||
var posAxis = axes.pos;
|
||||
var posHasRangeBreaks = !!posAxis.rangebreaks;
|
||||
|
||||
var bPos = t.bPos;
|
||||
var wdPos = t.wdPos || 0;
|
||||
var bPosPxOffset = t.bPosPxOffset || 0;
|
||||
|
@ -76196,11 +76308,15 @@ function plotBoxAndWhiskers(sel, axes, trace, t) {
|
|||
if(d.empty) return 'M0,0Z';
|
||||
|
||||
var lcenter = posAxis.c2l(d.pos + bPos, true);
|
||||
var posc = posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var pos0 = posAxis.l2p(lcenter - bdPos0) + bPosPxOffset;
|
||||
var pos1 = posAxis.l2p(lcenter + bdPos1) + bPosPxOffset;
|
||||
var posw0 = posAxis.l2p(lcenter - wdPos) + bPosPxOffset;
|
||||
var posw1 = posAxis.l2p(lcenter + wdPos) + bPosPxOffset;
|
||||
var posc = posHasRangeBreaks ? (pos0 + pos1) / 2 : posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var r = trace.whiskerwidth;
|
||||
var posw0 = posHasRangeBreaks ? pos0 * r + (1 - r) * posc : posAxis.l2p(lcenter - wdPos) + bPosPxOffset;
|
||||
var posw1 = posHasRangeBreaks ? pos1 * r + (1 - r) * posc : posAxis.l2p(lcenter + wdPos) + bPosPxOffset;
|
||||
|
||||
var posm0 = posAxis.l2p(lcenter - bdPos0 * nw) + bPosPxOffset;
|
||||
var posm1 = posAxis.l2p(lcenter + bdPos1 * nw) + bPosPxOffset;
|
||||
var q1 = valAxis.c2p(d.q1, true);
|
||||
|
@ -76224,30 +76340,45 @@ function plotBoxAndWhiskers(sel, axes, trace, t) {
|
|||
var ln = valAxis.c2p(d.ln, true);
|
||||
var un = valAxis.c2p(d.un, true);
|
||||
|
||||
if(trace.orientation === 'h') {
|
||||
if(isHorizontal) {
|
||||
d3.select(this).attr('d',
|
||||
'M' + m + ',' + posm0 + 'V' + posm1 + // median line
|
||||
'M' + q1 + ',' + pos0 + 'V' + pos1 + // left edge
|
||||
(notched ? 'H' + ln + 'L' + m + ',' + posm1 + 'L' + un + ',' + pos1 : '') + // top notched edge
|
||||
(notched ?
|
||||
'H' + ln + 'L' + m + ',' + posm1 + 'L' + un + ',' + pos1 :
|
||||
''
|
||||
) + // top notched edge
|
||||
'H' + q3 + // end of the top edge
|
||||
'V' + pos0 + // right edge
|
||||
(notched ? 'H' + un + 'L' + m + ',' + posm0 + 'L' + ln + ',' + pos0 : '') + // bottom notched edge
|
||||
'Z' + // end of the box
|
||||
'M' + q1 + ',' + posc + 'H' + lf + 'M' + q3 + ',' + posc + 'H' + uf + // whiskers
|
||||
((whiskerWidth === 0) ? '' : // whisker caps
|
||||
'M' + lf + ',' + posw0 + 'V' + posw1 + 'M' + uf + ',' + posw0 + 'V' + posw1));
|
||||
(whiskerWidth === 0 ?
|
||||
'' : // whisker caps
|
||||
'M' + lf + ',' + posw0 + 'V' + posw1 + 'M' + uf + ',' + posw0 + 'V' + posw1
|
||||
)
|
||||
);
|
||||
} else {
|
||||
d3.select(this).attr('d',
|
||||
'M' + posm0 + ',' + m + 'H' + posm1 + // median line
|
||||
'M' + pos0 + ',' + q1 + 'H' + pos1 + // top of the box
|
||||
(notched ? 'V' + ln + 'L' + posm1 + ',' + m + 'L' + pos1 + ',' + un : '') + // notched right edge
|
||||
(notched ?
|
||||
'V' + ln + 'L' + posm1 + ',' + m + 'L' + pos1 + ',' + un :
|
||||
''
|
||||
) + // notched right edge
|
||||
'V' + q3 + // end of the right edge
|
||||
'H' + pos0 + // bottom of the box
|
||||
(notched ? 'V' + un + 'L' + posm0 + ',' + m + 'L' + pos0 + ',' + ln : '') + // notched left edge
|
||||
(notched ?
|
||||
'V' + un + 'L' + posm0 + ',' + m + 'L' + pos0 + ',' + ln :
|
||||
''
|
||||
) + // notched left edge
|
||||
'Z' + // end of the box
|
||||
'M' + posc + ',' + q1 + 'V' + lf + 'M' + posc + ',' + q3 + 'V' + uf + // whiskers
|
||||
((whiskerWidth === 0) ? '' : // whisker caps
|
||||
'M' + posw0 + ',' + lf + 'H' + posw1 + 'M' + posw0 + ',' + uf + 'H' + posw1));
|
||||
(whiskerWidth === 0 ?
|
||||
'' : // whisker caps
|
||||
'M' + posw0 + ',' + lf + 'H' + posw1 + 'M' + posw0 + ',' + uf + 'H' + posw1
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -76363,8 +76494,10 @@ function plotPoints(sel, axes, trace, t) {
|
|||
}
|
||||
|
||||
function plotBoxMean(sel, axes, trace, t) {
|
||||
var posAxis = axes.pos;
|
||||
var valAxis = axes.val;
|
||||
var posAxis = axes.pos;
|
||||
var posHasRangeBreaks = !!posAxis.rangebreaks;
|
||||
|
||||
var bPos = t.bPos;
|
||||
var bPosPxOffset = t.bPosPxOffset || 0;
|
||||
|
||||
|
@ -76398,9 +76531,11 @@ function plotBoxMean(sel, axes, trace, t) {
|
|||
|
||||
paths.each(function(d) {
|
||||
var lcenter = posAxis.c2l(d.pos + bPos, true);
|
||||
var posc = posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var pos0 = posAxis.l2p(lcenter - bdPos0) + bPosPxOffset;
|
||||
var pos1 = posAxis.l2p(lcenter + bdPos1) + bPosPxOffset;
|
||||
var posc = posHasRangeBreaks ? (pos0 + pos1) / 2 : posAxis.l2p(lcenter) + bPosPxOffset;
|
||||
|
||||
var m = valAxis.c2p(d.mean, true);
|
||||
var sl = valAxis.c2p(d.mean - d.sd, true);
|
||||
var sh = valAxis.c2p(d.mean + d.sd, true);
|
||||
|
@ -79071,6 +79206,7 @@ var clean2dArray = _dereq_('./clean_2d_array');
|
|||
var interp2d = _dereq_('./interp2d');
|
||||
var findEmpties = _dereq_('./find_empties');
|
||||
var makeBoundArray = _dereq_('./make_bound_array');
|
||||
var BADNUM = _dereq_('../../constants/numerical').BADNUM;
|
||||
|
||||
module.exports = function calc(gd, trace) {
|
||||
// prepare the raw data
|
||||
|
@ -79122,13 +79258,25 @@ module.exports = function calc(gd, trace) {
|
|||
dy = trace.dy;
|
||||
|
||||
z = clean2dArray(zIn, trace, xa, ya);
|
||||
}
|
||||
|
||||
if(isContour || trace.connectgaps) {
|
||||
trace._emptypoints = findEmpties(z);
|
||||
interp2d(z, trace._emptypoints);
|
||||
if(xa.rangebreaks || ya.rangebreaks) {
|
||||
z = dropZonBreaks(x, y, z);
|
||||
|
||||
if(!isHist) {
|
||||
x = skipBreaks(x);
|
||||
y = skipBreaks(y);
|
||||
|
||||
trace._x = x;
|
||||
trace._y = y;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isHist && (isContour || trace.connectgaps)) {
|
||||
trace._emptypoints = findEmpties(z);
|
||||
interp2d(z, trace._emptypoints);
|
||||
}
|
||||
|
||||
function noZsmooth(msg) {
|
||||
zsmooth = trace._input.zsmooth = trace.zsmooth = false;
|
||||
Lib.warn('cannot use zsmooth: "fast": ' + msg);
|
||||
|
@ -79209,7 +79357,33 @@ module.exports = function calc(gd, trace) {
|
|||
return [cd0];
|
||||
};
|
||||
|
||||
},{"../../components/colorscale/calc":60,"../../lib":178,"../../plots/cartesian/axes":222,"../../registry":269,"../histogram2d/calc":359,"./clean_2d_array":332,"./convert_column_xyz":334,"./find_empties":336,"./interp2d":339,"./make_bound_array":340}],332:[function(_dereq_,module,exports){
|
||||
function skipBreaks(a) {
|
||||
var b = [];
|
||||
var len = a.length;
|
||||
for(var i = 0; i < len; i++) {
|
||||
var v = a[i];
|
||||
if(v !== BADNUM) b.push(v);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
function dropZonBreaks(x, y, z) {
|
||||
var newZ = [];
|
||||
var k = -1;
|
||||
for(var i = 0; i < z.length; i++) {
|
||||
if(y[i] === BADNUM) continue;
|
||||
k++;
|
||||
newZ[k] = [];
|
||||
for(var j = 0; j < z[i].length; j++) {
|
||||
if(x[j] === BADNUM) continue;
|
||||
|
||||
newZ[k].push(z[i][j]);
|
||||
}
|
||||
}
|
||||
return newZ;
|
||||
}
|
||||
|
||||
},{"../../components/colorscale/calc":60,"../../constants/numerical":158,"../../lib":178,"../../plots/cartesian/axes":222,"../../registry":269,"../histogram2d/calc":359,"./clean_2d_array":332,"./convert_column_xyz":334,"./find_empties":336,"./interp2d":339,"./make_bound_array":340}],332:[function(_dereq_,module,exports){
|
||||
/**
|
||||
* Copyright 2012-2020, Plotly, Inc.
|
||||
* All rights reserved.
|
||||
|
@ -79335,18 +79509,21 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name,
|
|||
var text;
|
||||
var hovertext;
|
||||
|
||||
var nI = col2vals.length;
|
||||
var nJ = col1vals.length;
|
||||
|
||||
for(i = 0; i < arrayVarNames.length; i++) {
|
||||
newArrays[i] = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
newArrays[i] = Lib.init2dArray(nI, nJ);
|
||||
}
|
||||
|
||||
if(hasColumnText) {
|
||||
text = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
text = Lib.init2dArray(nI, nJ);
|
||||
}
|
||||
if(hasColumnHoverText) {
|
||||
hovertext = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
hovertext = Lib.init2dArray(nI, nJ);
|
||||
}
|
||||
|
||||
var after2before = Lib.init2dArray(col2vals.length, col1vals.length);
|
||||
var after2before = Lib.init2dArray(nI, nJ);
|
||||
|
||||
for(i = 0; i < colLen; i++) {
|
||||
if(col1[i] !== BADNUM && col2[i] !== BADNUM) {
|
||||
|
@ -80410,6 +80587,11 @@ module.exports = function handleXYZDefaults(traceIn, traceOut, coerce, layout, x
|
|||
traceOut._length = null;
|
||||
}
|
||||
|
||||
if(
|
||||
traceIn.type === 'heatmapgl' ||
|
||||
traceIn.type === 'contourgl'
|
||||
) return true; // skip calendars until we handle them in those traces
|
||||
|
||||
var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults');
|
||||
handleCalendarDefaults(traceIn, traceOut, [xName, yName], layout);
|
||||
|
||||
|
@ -89838,7 +90020,7 @@ module.exports = function style(gd) {
|
|||
'use strict';
|
||||
|
||||
// package version injected by `npm run preprocess`
|
||||
exports.version = '1.54.1';
|
||||
exports.version = '1.54.6';
|
||||
|
||||
},{}]},{},[11])(11)
|
||||
});
|
||||
|
|
Binary file not shown.
|
@ -18332,7 +18332,7 @@ return Popper;
|
|||
//# sourceMappingURL=bootstrap.js.map
|
||||
|
||||
//! moment.js
|
||||
//! version : 2.25.3
|
||||
//! version : 2.27.0
|
||||
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
||||
//! license : MIT
|
||||
//! momentjs.com
|
||||
|
@ -21096,8 +21096,6 @@ return Popper;
|
|||
token = tokens[i];
|
||||
parsedInput = (string.match(getParseRegexForToken(token, config)) ||
|
||||
[])[0];
|
||||
// console.log('token', token, 'parsedInput', parsedInput,
|
||||
// 'regex', getParseRegexForToken(token, config));
|
||||
if (parsedInput) {
|
||||
skipped = string.substr(0, string.indexOf(parsedInput));
|
||||
if (skipped.length > 0) {
|
||||
|
@ -23953,7 +23951,7 @@ return Popper;
|
|||
|
||||
//! moment.js
|
||||
|
||||
hooks.version = '2.25.3';
|
||||
hooks.version = '2.27.0';
|
||||
|
||||
setHookCallback(createLocal);
|
||||
|
||||
|
@ -24023,6 +24021,7 @@ return Popper;
|
|||
h: ['eine Stunde', 'einer Stunde'],
|
||||
d: ['ein Tag', 'einem Tag'],
|
||||
dd: [number + ' Tage', number + ' Tagen'],
|
||||
w: ['eine Woche', 'einer Woche'],
|
||||
M: ['ein Monat', 'einem Monat'],
|
||||
MM: [number + ' Monate', number + ' Monaten'],
|
||||
y: ['ein Jahr', 'einem Jahr'],
|
||||
|
@ -24072,6 +24071,8 @@ return Popper;
|
|||
hh: '%d Stunden',
|
||||
d: processRelativeTime,
|
||||
dd: processRelativeTime,
|
||||
w: processRelativeTime,
|
||||
ww: '%d Wochen',
|
||||
M: processRelativeTime,
|
||||
MM: processRelativeTime,
|
||||
y: processRelativeTime,
|
||||
|
@ -24218,6 +24219,24 @@ return Popper;
|
|||
|
||||
//! moment.js locale configuration
|
||||
|
||||
var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
|
||||
monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
|
||||
monthsRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
|
||||
monthsParse = [
|
||||
/^janv/i,
|
||||
/^févr/i,
|
||||
/^mars/i,
|
||||
/^avr/i,
|
||||
/^mai/i,
|
||||
/^juin/i,
|
||||
/^juil/i,
|
||||
/^août/i,
|
||||
/^sept/i,
|
||||
/^oct/i,
|
||||
/^nov/i,
|
||||
/^déc/i,
|
||||
];
|
||||
|
||||
var fr = moment.defineLocale('fr', {
|
||||
months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
|
||||
'_'
|
||||
|
@ -24225,7 +24244,13 @@ return Popper;
|
|||
monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
|
||||
'_'
|
||||
),
|
||||
monthsParseExact: true,
|
||||
monthsRegex: monthsRegex,
|
||||
monthsShortRegex: monthsRegex,
|
||||
monthsStrictRegex: monthsStrictRegex,
|
||||
monthsShortStrictRegex: monthsShortStrictRegex,
|
||||
monthsParse: monthsParse,
|
||||
longMonthsParse: monthsParse,
|
||||
shortMonthsParse: monthsParse,
|
||||
weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
|
||||
weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
|
||||
weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
|
||||
|
@ -24420,6 +24445,17 @@ return Popper;
|
|||
),
|
||||
weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
|
||||
weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
|
||||
meridiem: function (hours, minutes, isLower) {
|
||||
if (hours < 12) {
|
||||
return isLower ? 'öö' : 'ÖÖ';
|
||||
} else {
|
||||
return isLower ? 'ös' : 'ÖS';
|
||||
}
|
||||
},
|
||||
meridiemParse: /öö|ÖÖ|ös|ÖS/,
|
||||
isPM: function (input) {
|
||||
return input === 'ös' || input === 'ÖS';
|
||||
},
|
||||
longDateFormat: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
|
@ -24481,7 +24517,7 @@ return Popper;
|
|||
})));
|
||||
|
||||
//! moment-timezone.js
|
||||
//! version : 0.5.30
|
||||
//! version : 0.5.31
|
||||
//! Copyright (c) JS Foundation and other contributors
|
||||
//! license : MIT
|
||||
//! github.com/moment/moment-timezone
|
||||
|
@ -24511,7 +24547,7 @@ return Popper;
|
|||
// return moment;
|
||||
// }
|
||||
|
||||
var VERSION = "0.5.30",
|
||||
var VERSION = "0.5.31",
|
||||
zones = {},
|
||||
links = {},
|
||||
countries = {},
|
Binary file not shown.
|
@ -18332,7 +18332,7 @@ return Popper;
|
|||
//# sourceMappingURL=bootstrap.js.map
|
||||
|
||||
//! moment.js
|
||||
//! version : 2.25.3
|
||||
//! version : 2.27.0
|
||||
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
||||
//! license : MIT
|
||||
//! momentjs.com
|
||||
|
@ -21096,8 +21096,6 @@ return Popper;
|
|||
token = tokens[i];
|
||||
parsedInput = (string.match(getParseRegexForToken(token, config)) ||
|
||||
[])[0];
|
||||
// console.log('token', token, 'parsedInput', parsedInput,
|
||||
// 'regex', getParseRegexForToken(token, config));
|
||||
if (parsedInput) {
|
||||
skipped = string.substr(0, string.indexOf(parsedInput));
|
||||
if (skipped.length > 0) {
|
||||
|
@ -23953,7 +23951,7 @@ return Popper;
|
|||
|
||||
//! moment.js
|
||||
|
||||
hooks.version = '2.25.3';
|
||||
hooks.version = '2.27.0';
|
||||
|
||||
setHookCallback(createLocal);
|
||||
|
||||
|
@ -24023,6 +24021,7 @@ return Popper;
|
|||
h: ['eine Stunde', 'einer Stunde'],
|
||||
d: ['ein Tag', 'einem Tag'],
|
||||
dd: [number + ' Tage', number + ' Tagen'],
|
||||
w: ['eine Woche', 'einer Woche'],
|
||||
M: ['ein Monat', 'einem Monat'],
|
||||
MM: [number + ' Monate', number + ' Monaten'],
|
||||
y: ['ein Jahr', 'einem Jahr'],
|
||||
|
@ -24072,6 +24071,8 @@ return Popper;
|
|||
hh: '%d Stunden',
|
||||
d: processRelativeTime,
|
||||
dd: processRelativeTime,
|
||||
w: processRelativeTime,
|
||||
ww: '%d Wochen',
|
||||
M: processRelativeTime,
|
||||
MM: processRelativeTime,
|
||||
y: processRelativeTime,
|
||||
|
@ -24218,6 +24219,24 @@ return Popper;
|
|||
|
||||
//! moment.js locale configuration
|
||||
|
||||
var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
|
||||
monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
|
||||
monthsRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
|
||||
monthsParse = [
|
||||
/^janv/i,
|
||||
/^févr/i,
|
||||
/^mars/i,
|
||||
/^avr/i,
|
||||
/^mai/i,
|
||||
/^juin/i,
|
||||
/^juil/i,
|
||||
/^août/i,
|
||||
/^sept/i,
|
||||
/^oct/i,
|
||||
/^nov/i,
|
||||
/^déc/i,
|
||||
];
|
||||
|
||||
var fr = moment.defineLocale('fr', {
|
||||
months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
|
||||
'_'
|
||||
|
@ -24225,7 +24244,13 @@ return Popper;
|
|||
monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
|
||||
'_'
|
||||
),
|
||||
monthsParseExact: true,
|
||||
monthsRegex: monthsRegex,
|
||||
monthsShortRegex: monthsRegex,
|
||||
monthsStrictRegex: monthsStrictRegex,
|
||||
monthsShortStrictRegex: monthsShortStrictRegex,
|
||||
monthsParse: monthsParse,
|
||||
longMonthsParse: monthsParse,
|
||||
shortMonthsParse: monthsParse,
|
||||
weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
|
||||
weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
|
||||
weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
|
||||
|
@ -24420,6 +24445,17 @@ return Popper;
|
|||
),
|
||||
weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
|
||||
weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
|
||||
meridiem: function (hours, minutes, isLower) {
|
||||
if (hours < 12) {
|
||||
return isLower ? 'öö' : 'ÖÖ';
|
||||
} else {
|
||||
return isLower ? 'ös' : 'ÖS';
|
||||
}
|
||||
},
|
||||
meridiemParse: /öö|ÖÖ|ös|ÖS/,
|
||||
isPM: function (input) {
|
||||
return input === 'ös' || input === 'ÖS';
|
||||
},
|
||||
longDateFormat: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
|
@ -24481,7 +24517,7 @@ return Popper;
|
|||
})));
|
||||
|
||||
//! moment-timezone.js
|
||||
//! version : 0.5.30
|
||||
//! version : 0.5.31
|
||||
//! Copyright (c) JS Foundation and other contributors
|
||||
//! license : MIT
|
||||
//! github.com/moment/moment-timezone
|
||||
|
@ -24511,7 +24547,7 @@ return Popper;
|
|||
// return moment;
|
||||
// }
|
||||
|
||||
var VERSION = "0.5.30",
|
||||
var VERSION = "0.5.31",
|
||||
zones = {},
|
||||
links = {},
|
||||
countries = {},
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue