victory-core 17.2.6 → 17.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -68,27 +68,36 @@ export default {
68
68
  * @returns {Array} the domain for the given axis
69
69
  */
70
70
  getDomainWithZero: function (props, axis) {
71
- var _this = this;
72
-
73
71
  var propsDomain = this.getDomainFromProps(props, axis);
74
72
  if (propsDomain) {
75
73
  return this.cleanDomain(this.padDomain(propsDomain, props, axis), props, axis);
76
74
  }
77
75
  var horizontal = props.horizontal;
78
76
 
79
- var ensureZero = function (domain) {
80
- var isDependent = axis === "y" && !horizontal || axis === "x" && horizontal;
81
- var min = Collection.getMinValue(domain, 0);
82
- var max = Collection.getMaxValue(domain, 0);
83
- var zeroDomain = isDependent ? [min, max] : domain;
84
- return _this.padDomain(zeroDomain, props, axis);
77
+ var ensureZero = function (domain, dataset) {
78
+ var currentAxis = Helpers.getCurrentAxis(axis, horizontal);
79
+ if (currentAxis === "x") {
80
+ return domain;
81
+ } else if (!dataset) {
82
+ return [Collection.getMinValue(domain, 0), Collection.getMaxValue(domain, 0)];
83
+ }
84
+ var flatData = _flatten(dataset);
85
+ var minData = flatData.map(function (datum) {
86
+ return datum["_" + currentAxis + "0"] || 0;
87
+ });
88
+ var maxData = flatData.map(function (datum) {
89
+ return datum["_" + currentAxis + "1"] || datum["_" + currentAxis] || 0;
90
+ });
91
+ var min = Collection.getMinValue([].concat(_toConsumableArray(domain), _toConsumableArray(minData)));
92
+ var max = Collection.getMaxValue([].concat(_toConsumableArray(domain), _toConsumableArray(maxData)));
93
+ return [min, max];
85
94
  };
86
95
  var categoryDomain = this.getDomainFromCategories(props, axis);
87
96
  if (categoryDomain) {
88
97
  return this.cleanDomain(this.padDomain(ensureZero(categoryDomain), props, axis), props, axis);
89
98
  }
90
99
  var dataset = Data.getData(props);
91
- var domain = ensureZero(this.getDomainFromData(props, axis, dataset));
100
+ var domain = ensureZero(this.getDomainFromData(props, axis, dataset), dataset);
92
101
  return this.cleanDomain(this.padDomain(domain, props, axis), props, axis);
93
102
  },
94
103
 
@@ -118,18 +127,21 @@ export default {
118
127
  */
119
128
  getDomainFromData: function (props, axis, dataset) {
120
129
  var currentAxis = Helpers.getCurrentAxis(axis, props.horizontal);
121
- var allData = _flatten(dataset).map(function (datum) {
122
- return datum["_" + currentAxis];
130
+ var flatData = _flatten(dataset);
131
+ var allData = flatData.map(function (datum) {
132
+ return typeof datum["_" + currentAxis + "1"] === "undefined" ? datum["_" + currentAxis] : datum["_" + currentAxis + "1"];
133
+ });
134
+ var allMinData = flatData.map(function (datum) {
135
+ return typeof datum["_" + currentAxis + "0"] === "undefined" ? datum["_" + currentAxis] : datum["_" + currentAxis + "0"];
123
136
  });
124
-
125
137
  if (allData.length < 1) {
126
138
  return Scale.getBaseScale(props, axis).domain();
127
139
  }
128
140
 
129
- var min = Collection.getMinValue(allData);
141
+ var min = Collection.getMinValue(allMinData);
130
142
  var max = Collection.getMaxValue(allData);
131
143
  var domain = void 0;
132
- if (min === max) {
144
+ if (+min === +max) {
133
145
  domain = this.getSinglePointDomain(max);
134
146
  } else {
135
147
  domain = [min, max];
@@ -140,10 +152,11 @@ export default {
140
152
  getSinglePointDomain: function (val) {
141
153
  // d3-scale does not properly resolve very small differences.
142
154
  // eslint-disable-next-line no-magic-numbers
143
- var verySmallNumber = Math.pow(10, -15);
144
- var adjustedMin = val instanceof Date ? new Date(val - 1) : val - verySmallNumber;
145
- var adjustedMax = val instanceof Date ? new Date(val + 1) : val + verySmallNumber;
146
- return [adjustedMin, adjustedMax];
155
+ var verySmallNumber = Math.pow(10, -10);
156
+ var verySmallDate = 1;
157
+ var min = val instanceof Date ? new Date(+val - verySmallDate) : val - verySmallNumber;
158
+ var max = val instanceof Date ? new Date(+val + verySmallDate) : val + verySmallNumber;
159
+ return [min, max];
147
160
  },
148
161
  getSymmetricDomain: function (domain, data) {
149
162
  var processedData = _sortedUniq(data.sort(function (a, b) {
@@ -234,8 +247,8 @@ export default {
234
247
  // use greatest min / max
235
248
  var domainMin = cumulativeMin < 0 ? cumulativeMin : Collection.getMinValue(globalDomain);
236
249
  var domainMax = Collection.getMaxValue.apply(Collection, [globalDomain].concat(_toConsumableArray(cumulativeMaxArray)));
237
- if (domainMin === domainMax) {
238
- return this.getSinglePointDomain(domainMax);
250
+ if (+domainMin === +domainMax) {
251
+ return this.getSinglePointDomain(domainMin);
239
252
  }
240
253
  return [domainMin, domainMax];
241
254
  },
@@ -96,27 +96,36 @@ exports.default = {
96
96
  * @returns {Array} the domain for the given axis
97
97
  */
98
98
  getDomainWithZero: function (props, axis) {
99
- var _this = this;
100
-
101
99
  var propsDomain = this.getDomainFromProps(props, axis);
102
100
  if (propsDomain) {
103
101
  return this.cleanDomain(this.padDomain(propsDomain, props, axis), props, axis);
104
102
  }
105
103
  var horizontal = props.horizontal;
106
104
 
107
- var ensureZero = function (domain) {
108
- var isDependent = axis === "y" && !horizontal || axis === "x" && horizontal;
109
- var min = _collection2.default.getMinValue(domain, 0);
110
- var max = _collection2.default.getMaxValue(domain, 0);
111
- var zeroDomain = isDependent ? [min, max] : domain;
112
- return _this.padDomain(zeroDomain, props, axis);
105
+ var ensureZero = function (domain, dataset) {
106
+ var currentAxis = _helpers2.default.getCurrentAxis(axis, horizontal);
107
+ if (currentAxis === "x") {
108
+ return domain;
109
+ } else if (!dataset) {
110
+ return [_collection2.default.getMinValue(domain, 0), _collection2.default.getMaxValue(domain, 0)];
111
+ }
112
+ var flatData = (0, _flatten3.default)(dataset);
113
+ var minData = flatData.map(function (datum) {
114
+ return datum["_" + currentAxis + "0"] || 0;
115
+ });
116
+ var maxData = flatData.map(function (datum) {
117
+ return datum["_" + currentAxis + "1"] || datum["_" + currentAxis] || 0;
118
+ });
119
+ var min = _collection2.default.getMinValue([].concat(_toConsumableArray(domain), _toConsumableArray(minData)));
120
+ var max = _collection2.default.getMaxValue([].concat(_toConsumableArray(domain), _toConsumableArray(maxData)));
121
+ return [min, max];
113
122
  };
114
123
  var categoryDomain = this.getDomainFromCategories(props, axis);
115
124
  if (categoryDomain) {
116
125
  return this.cleanDomain(this.padDomain(ensureZero(categoryDomain), props, axis), props, axis);
117
126
  }
118
127
  var dataset = _data2.default.getData(props);
119
- var domain = ensureZero(this.getDomainFromData(props, axis, dataset));
128
+ var domain = ensureZero(this.getDomainFromData(props, axis, dataset), dataset);
120
129
  return this.cleanDomain(this.padDomain(domain, props, axis), props, axis);
121
130
  },
122
131
 
@@ -146,18 +155,21 @@ exports.default = {
146
155
  */
147
156
  getDomainFromData: function (props, axis, dataset) {
148
157
  var currentAxis = _helpers2.default.getCurrentAxis(axis, props.horizontal);
149
- var allData = (0, _flatten3.default)(dataset).map(function (datum) {
150
- return datum["_" + currentAxis];
158
+ var flatData = (0, _flatten3.default)(dataset);
159
+ var allData = flatData.map(function (datum) {
160
+ return typeof datum["_" + currentAxis + "1"] === "undefined" ? datum["_" + currentAxis] : datum["_" + currentAxis + "1"];
161
+ });
162
+ var allMinData = flatData.map(function (datum) {
163
+ return typeof datum["_" + currentAxis + "0"] === "undefined" ? datum["_" + currentAxis] : datum["_" + currentAxis + "0"];
151
164
  });
152
-
153
165
  if (allData.length < 1) {
154
166
  return _scale2.default.getBaseScale(props, axis).domain();
155
167
  }
156
168
 
157
- var min = _collection2.default.getMinValue(allData);
169
+ var min = _collection2.default.getMinValue(allMinData);
158
170
  var max = _collection2.default.getMaxValue(allData);
159
171
  var domain = void 0;
160
- if (min === max) {
172
+ if (+min === +max) {
161
173
  domain = this.getSinglePointDomain(max);
162
174
  } else {
163
175
  domain = [min, max];
@@ -168,10 +180,11 @@ exports.default = {
168
180
  getSinglePointDomain: function (val) {
169
181
  // d3-scale does not properly resolve very small differences.
170
182
  // eslint-disable-next-line no-magic-numbers
171
- var verySmallNumber = Math.pow(10, -15);
172
- var adjustedMin = val instanceof Date ? new Date(val - 1) : val - verySmallNumber;
173
- var adjustedMax = val instanceof Date ? new Date(val + 1) : val + verySmallNumber;
174
- return [adjustedMin, adjustedMax];
183
+ var verySmallNumber = Math.pow(10, -10);
184
+ var verySmallDate = 1;
185
+ var min = val instanceof Date ? new Date(+val - verySmallDate) : val - verySmallNumber;
186
+ var max = val instanceof Date ? new Date(+val + verySmallDate) : val + verySmallNumber;
187
+ return [min, max];
175
188
  },
176
189
  getSymmetricDomain: function (domain, data) {
177
190
  var processedData = (0, _sortedUniq3.default)(data.sort(function (a, b) {
@@ -262,8 +275,8 @@ exports.default = {
262
275
  // use greatest min / max
263
276
  var domainMin = cumulativeMin < 0 ? cumulativeMin : _collection2.default.getMinValue(globalDomain);
264
277
  var domainMax = _collection2.default.getMaxValue.apply(_collection2.default, [globalDomain].concat(_toConsumableArray(cumulativeMaxArray)));
265
- if (domainMin === domainMax) {
266
- return this.getSinglePointDomain(domainMax);
278
+ if (+domainMin === +domainMax) {
279
+ return this.getSinglePointDomain(domainMin);
267
280
  }
268
281
  return [domainMin, domainMax];
269
282
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "victory-core",
3
- "version": "17.2.6",
3
+ "version": "17.2.7",
4
4
  "description": "Victory Core",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -66,19 +66,28 @@ export default {
66
66
  return this.cleanDomain(this.padDomain(propsDomain, props, axis), props, axis);
67
67
  }
68
68
  const { horizontal } = props;
69
- const ensureZero = (domain) => {
70
- const isDependent = (axis === "y" && !horizontal) || (axis === "x" && horizontal);
71
- const min = Collection.getMinValue(domain, 0);
72
- const max = Collection.getMaxValue(domain, 0);
73
- const zeroDomain = isDependent ? [min, max] : domain;
74
- return this.padDomain(zeroDomain, props, axis);
69
+ const ensureZero = (domain, dataset) => {
70
+ const currentAxis = Helpers.getCurrentAxis(axis, horizontal);
71
+ if (currentAxis === "x") {
72
+ return domain;
73
+ } else if (!dataset) {
74
+ return [Collection.getMinValue(domain, 0), Collection.getMaxValue(domain, 0)];
75
+ }
76
+ const flatData = flatten(dataset);
77
+ const minData = flatData.map((datum) => datum[`_${currentAxis}0`] || 0);
78
+ const maxData = flatData.map((datum) => {
79
+ return datum[`_${currentAxis}1`] || datum[`_${currentAxis}`] || 0;
80
+ });
81
+ const min = Collection.getMinValue([...domain, ...minData]);
82
+ const max = Collection.getMaxValue([...domain, ...maxData]);
83
+ return [min, max];
75
84
  };
76
85
  const categoryDomain = this.getDomainFromCategories(props, axis);
77
86
  if (categoryDomain) {
78
87
  return this.cleanDomain(this.padDomain(ensureZero(categoryDomain), props, axis), props, axis);
79
88
  }
80
89
  const dataset = Data.getData(props);
81
- const domain = ensureZero(this.getDomainFromData(props, axis, dataset));
90
+ const domain = ensureZero(this.getDomainFromData(props, axis, dataset), dataset);
82
91
  return this.cleanDomain(this.padDomain(domain, props, axis), props, axis);
83
92
  },
84
93
 
@@ -106,16 +115,23 @@ export default {
106
115
  */
107
116
  getDomainFromData(props, axis, dataset) {
108
117
  const currentAxis = Helpers.getCurrentAxis(axis, props.horizontal);
109
- const allData = flatten(dataset).map((datum) => datum[`_${currentAxis}`]);
110
-
118
+ const flatData = flatten(dataset);
119
+ const allData = flatData.map((datum) => {
120
+ return typeof datum[`_${currentAxis}1`] === "undefined" ?
121
+ datum[`_${currentAxis}`] : datum[`_${currentAxis}1`];
122
+ });
123
+ const allMinData = flatData.map((datum) => {
124
+ return typeof datum[`_${currentAxis}0`] === "undefined" ?
125
+ datum[`_${currentAxis}`] : datum[`_${currentAxis}0`];
126
+ });
111
127
  if (allData.length < 1) {
112
128
  return Scale.getBaseScale(props, axis).domain();
113
129
  }
114
130
 
115
- const min = Collection.getMinValue(allData);
131
+ const min = Collection.getMinValue(allMinData);
116
132
  const max = Collection.getMaxValue(allData);
117
133
  let domain;
118
- if (min === max) {
134
+ if (+min === +max) {
119
135
  domain = this.getSinglePointDomain(max);
120
136
  } else {
121
137
  domain = [min, max];
@@ -128,10 +144,11 @@ export default {
128
144
  getSinglePointDomain(val) {
129
145
  // d3-scale does not properly resolve very small differences.
130
146
  // eslint-disable-next-line no-magic-numbers
131
- const verySmallNumber = Math.pow(10, -15);
132
- const adjustedMin = val instanceof Date ? new Date(val - 1) : val - verySmallNumber;
133
- const adjustedMax = val instanceof Date ? new Date(val + 1) : val + verySmallNumber;
134
- return [adjustedMin, adjustedMax];
147
+ const verySmallNumber = Math.pow(10, -10);
148
+ const verySmallDate = 1;
149
+ const min = val instanceof Date ? new Date(+val - verySmallDate) : val - verySmallNumber;
150
+ const max = val instanceof Date ? new Date(+val + verySmallDate) : val + verySmallNumber;
151
+ return [min, max];
135
152
  },
136
153
 
137
154
  getSymmetricDomain(domain, data) {
@@ -220,8 +237,8 @@ export default {
220
237
  // use greatest min / max
221
238
  const domainMin = cumulativeMin < 0 ? cumulativeMin : Collection.getMinValue(globalDomain);
222
239
  const domainMax = Collection.getMaxValue(globalDomain, ...cumulativeMaxArray);
223
- if (domainMin === domainMax) {
224
- return this.getSinglePointDomain(domainMax);
240
+ if (+domainMin === +domainMax) {
241
+ return this.getSinglePointDomain(domainMin);
225
242
  }
226
243
  return [domainMin, domainMax];
227
244
  },