@pie-lib/charting 5.17.0-beta.0 → 5.17.0
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.
- package/CHANGELOG.json +1 -581
- package/CHANGELOG.md +149 -43
- package/package.json +5 -5
- package/src/__tests__/__snapshots__/axes.test.jsx.snap +1 -0
- package/src/__tests__/__snapshots__/chart.test.jsx.snap +0 -18
- package/src/__tests__/__snapshots__/grid.test.jsx.snap +61 -17
- package/src/__tests__/axes.test.jsx +0 -5
- package/src/__tests__/chart.test.jsx +8 -0
- package/src/actions-button.jsx +109 -0
- package/src/axes.jsx +5 -31
- package/src/bars/common/bars.jsx +8 -10
- package/src/chart-setup.jsx +1 -1
- package/src/chart.jsx +31 -26
- package/src/common/drag-handle.jsx +3 -3
- package/src/common/styles.js +1 -1
- package/src/grid.jsx +38 -13
- package/src/index.js +2 -1
- package/src/key-legend.jsx +75 -0
- package/src/line/common/drag-handle.jsx +3 -9
- package/src/line/common/line.jsx +2 -6
- package/src/line/line-cross.js +29 -2
- package/src/line/line-dot.js +36 -19
- package/src/mark-label.jsx +7 -2
- package/src/plot/common/plot.jsx +8 -5
- package/src/tool-menu.jsx +1 -1
- package/lib/__tests__/axes.test.js +0 -181
- package/lib/__tests__/chart-setup.test.js +0 -58
- package/lib/__tests__/chart-type.test.js +0 -42
- package/lib/__tests__/chart.test.js +0 -108
- package/lib/__tests__/grid.test.js +0 -48
- package/lib/__tests__/mark-label.test.js +0 -57
- package/lib/__tests__/utils.js +0 -56
- package/lib/__tests__/utils.test.js +0 -197
- package/lib/axes.js +0 -643
- package/lib/bars/__tests__/bar.test.js +0 -62
- package/lib/bars/__tests__/histogram.test.js +0 -64
- package/lib/bars/__tests__/utils.js +0 -56
- package/lib/bars/bar.js +0 -86
- package/lib/bars/common/__tests__/bars.test.js +0 -100
- package/lib/bars/common/__tests__/utils.js +0 -56
- package/lib/bars/common/bars.js +0 -301
- package/lib/bars/histogram.js +0 -87
- package/lib/chart-setup.js +0 -458
- package/lib/chart-type.js +0 -71
- package/lib/chart-types.js +0 -31
- package/lib/chart.js +0 -438
- package/lib/common/__tests__/drag-handle.test.js +0 -134
- package/lib/common/__tests__/utils.js +0 -56
- package/lib/common/drag-handle.js +0 -175
- package/lib/common/drag-icon.js +0 -52
- package/lib/common/styles.js +0 -40
- package/lib/grid.js +0 -104
- package/lib/index.js +0 -40
- package/lib/line/__tests__/line-cross.test.js +0 -64
- package/lib/line/__tests__/line-dot.test.js +0 -64
- package/lib/line/__tests__/utils.js +0 -56
- package/lib/line/common/__tests__/drag-handle.test.js +0 -134
- package/lib/line/common/__tests__/line.test.js +0 -128
- package/lib/line/common/__tests__/utils.js +0 -56
- package/lib/line/common/drag-handle.js +0 -157
- package/lib/line/common/line.js +0 -261
- package/lib/line/line-cross.js +0 -168
- package/lib/line/line-dot.js +0 -131
- package/lib/mark-label.js +0 -255
- package/lib/plot/__tests__/dot.test.js +0 -64
- package/lib/plot/__tests__/line.test.js +0 -64
- package/lib/plot/__tests__/utils.js +0 -56
- package/lib/plot/common/__tests__/plot.test.js +0 -103
- package/lib/plot/common/__tests__/utils.js +0 -56
- package/lib/plot/common/plot.js +0 -280
- package/lib/plot/dot.js +0 -123
- package/lib/plot/line.js +0 -152
- package/lib/tool-menu.js +0 -142
- package/lib/utils.js +0 -244
package/lib/chart.js
DELETED
|
@@ -1,438 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = exports.Chart = void 0;
|
|
9
|
-
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
|
-
var _react = _interopRequireDefault(require("react"));
|
|
29
|
-
|
|
30
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
|
-
|
|
32
|
-
var _styles = require("@material-ui/core/styles");
|
|
33
|
-
|
|
34
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
35
|
-
|
|
36
|
-
var _plot = require("@pie-lib/plot");
|
|
37
|
-
|
|
38
|
-
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
39
|
-
|
|
40
|
-
var _grid = _interopRequireDefault(require("./grid"));
|
|
41
|
-
|
|
42
|
-
var _axes = _interopRequireDefault(require("./axes"));
|
|
43
|
-
|
|
44
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
45
|
-
|
|
46
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
47
|
-
|
|
48
|
-
var _utils = require("./utils");
|
|
49
|
-
|
|
50
|
-
var _toolMenu = _interopRequireDefault(require("./tool-menu"));
|
|
51
|
-
|
|
52
|
-
var _chartTypes = _interopRequireDefault(require("./chart-types"));
|
|
53
|
-
|
|
54
|
-
var _configUi = require("@pie-lib/config-ui");
|
|
55
|
-
|
|
56
|
-
var _translator = _interopRequireDefault(require("@pie-lib/translator"));
|
|
57
|
-
|
|
58
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
59
|
-
|
|
60
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
61
|
-
|
|
62
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
63
|
-
|
|
64
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
65
|
-
|
|
66
|
-
var translator = _translator["default"].translator;
|
|
67
|
-
var log = (0, _debug["default"])('pie-lib:charts:chart');
|
|
68
|
-
|
|
69
|
-
var Chart = /*#__PURE__*/function (_React$Component) {
|
|
70
|
-
(0, _inherits2["default"])(Chart, _React$Component);
|
|
71
|
-
|
|
72
|
-
var _super = _createSuper(Chart);
|
|
73
|
-
|
|
74
|
-
function Chart(props) {
|
|
75
|
-
var _this;
|
|
76
|
-
|
|
77
|
-
(0, _classCallCheck2["default"])(this, Chart);
|
|
78
|
-
_this = _super.call(this, props);
|
|
79
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
80
|
-
charts: [_chartTypes["default"].Bar(), _chartTypes["default"].Histogram(), _chartTypes["default"].LineDot(), _chartTypes["default"].LineCross(), _chartTypes["default"].DotPlot(), _chartTypes["default"].LinePlot()],
|
|
81
|
-
autoFocus: false
|
|
82
|
-
});
|
|
83
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleAlertDialog", function (open, callback) {
|
|
84
|
-
return _this.setState({
|
|
85
|
-
dialog: {
|
|
86
|
-
open: open
|
|
87
|
-
}
|
|
88
|
-
}, callback);
|
|
89
|
-
});
|
|
90
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getChart", function () {
|
|
91
|
-
var charts = _this.props.charts || _this.state.charts;
|
|
92
|
-
var chartType = _this.props.chartType;
|
|
93
|
-
var ChartComponent = null;
|
|
94
|
-
var chart = null;
|
|
95
|
-
|
|
96
|
-
if (chartType) {
|
|
97
|
-
chart = charts && charts.find(function (chart) {
|
|
98
|
-
return chart.type === chartType;
|
|
99
|
-
});
|
|
100
|
-
ChartComponent = chart && chart.Component;
|
|
101
|
-
} else {
|
|
102
|
-
chart = charts && charts[0];
|
|
103
|
-
ChartComponent = chart && chart.Component;
|
|
104
|
-
chartType = chart && chart.type;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return {
|
|
108
|
-
type: chartType,
|
|
109
|
-
ChartComponent: ChartComponent
|
|
110
|
-
};
|
|
111
|
-
});
|
|
112
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeData", function (data) {
|
|
113
|
-
var onDataChange = _this.props.onDataChange;
|
|
114
|
-
onDataChange(data);
|
|
115
|
-
});
|
|
116
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeCategory", function (index, newCategory) {
|
|
117
|
-
var integerIndex = parseInt(index, 10);
|
|
118
|
-
|
|
119
|
-
if (integerIndex >= 0) {
|
|
120
|
-
var _this$props = _this.props,
|
|
121
|
-
data = _this$props.data,
|
|
122
|
-
onDataChange = _this$props.onDataChange;
|
|
123
|
-
data[integerIndex] = _objectSpread(_objectSpread({}, data[integerIndex]), newCategory);
|
|
124
|
-
onDataChange(data);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addCategory", function () {
|
|
128
|
-
var _this$props2 = _this.props,
|
|
129
|
-
onDataChange = _this$props2.onDataChange,
|
|
130
|
-
data = _this$props2.data,
|
|
131
|
-
categoryDefaultLabel = _this$props2.categoryDefaultLabel,
|
|
132
|
-
defineChart = _this$props2.defineChart,
|
|
133
|
-
categoryDefaults = _this$props2.categoryDefaults,
|
|
134
|
-
language = _this$props2.language;
|
|
135
|
-
|
|
136
|
-
if ((data || []).length > 19) {
|
|
137
|
-
_this.setState({
|
|
138
|
-
dialog: {
|
|
139
|
-
open: true,
|
|
140
|
-
title: translator.t('common:warning', {
|
|
141
|
-
lng: language
|
|
142
|
-
}),
|
|
143
|
-
text: translator.t('charting.reachedLimit_other', {
|
|
144
|
-
count: 20,
|
|
145
|
-
lng: language
|
|
146
|
-
}),
|
|
147
|
-
onConfirm: function onConfirm() {
|
|
148
|
-
return _this.handleAlertDialog(false);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
} else {
|
|
153
|
-
_this.setState({
|
|
154
|
-
autoFocus: true
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
onDataChange([].concat((0, _toConsumableArray2["default"])(data), [{
|
|
158
|
-
inDefineChart: defineChart,
|
|
159
|
-
label: categoryDefaultLabel || translator.t('charting.newLabel', {
|
|
160
|
-
lng: language
|
|
161
|
-
}),
|
|
162
|
-
value: 0,
|
|
163
|
-
deletable: true,
|
|
164
|
-
editable: categoryDefaults ? categoryDefaults === null || categoryDefaults === void 0 ? void 0 : categoryDefaults.editable : true,
|
|
165
|
-
interactive: categoryDefaults ? categoryDefaults === null || categoryDefaults === void 0 ? void 0 : categoryDefaults.interactive : true
|
|
166
|
-
}]));
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getFilteredCategories", function () {
|
|
170
|
-
var _this$props3 = _this.props,
|
|
171
|
-
data = _this$props3.data,
|
|
172
|
-
defineChart = _this$props3.defineChart;
|
|
173
|
-
return data ? data.map(function (d) {
|
|
174
|
-
return _objectSpread(_objectSpread({}, d), {}, {
|
|
175
|
-
deletable: defineChart || d.deletable
|
|
176
|
-
});
|
|
177
|
-
}) : [];
|
|
178
|
-
});
|
|
179
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "resetAutoFocus", function () {
|
|
180
|
-
_this.setState({
|
|
181
|
-
autoFocus: false
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
_this.state = {
|
|
185
|
-
dialog: {
|
|
186
|
-
open: false
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
_this.maskUid = _this.generateMaskId();
|
|
190
|
-
return _this;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
(0, _createClass2["default"])(Chart, [{
|
|
194
|
-
key: "generateMaskId",
|
|
195
|
-
value: function generateMaskId() {
|
|
196
|
-
return 'chart-' + (Math.random() * 10000).toFixed();
|
|
197
|
-
}
|
|
198
|
-
}, {
|
|
199
|
-
key: "render",
|
|
200
|
-
value: function render() {
|
|
201
|
-
var _this2 = this;
|
|
202
|
-
|
|
203
|
-
var _this$props4 = this.props,
|
|
204
|
-
classes = _this$props4.classes,
|
|
205
|
-
className = _this$props4.className,
|
|
206
|
-
_this$props4$domain = _this$props4.domain,
|
|
207
|
-
domain = _this$props4$domain === void 0 ? {} : _this$props4$domain,
|
|
208
|
-
_this$props4$range = _this$props4.range,
|
|
209
|
-
range = _this$props4$range === void 0 ? {} : _this$props4$range,
|
|
210
|
-
chartingOptions = _this$props4.chartingOptions,
|
|
211
|
-
size = _this$props4.size,
|
|
212
|
-
title = _this$props4.title,
|
|
213
|
-
onChangeTitle = _this$props4.onChangeTitle,
|
|
214
|
-
onChangeLabels = _this$props4.onChangeLabels,
|
|
215
|
-
labelsPlaceholders = _this$props4.labelsPlaceholders,
|
|
216
|
-
titlePlaceholder = _this$props4.titlePlaceholder,
|
|
217
|
-
addCategoryEnabled = _this$props4.addCategoryEnabled,
|
|
218
|
-
changeInteractiveEnabled = _this$props4.changeInteractiveEnabled,
|
|
219
|
-
changeEditableEnabled = _this$props4.changeEditableEnabled,
|
|
220
|
-
showPixelGuides = _this$props4.showPixelGuides,
|
|
221
|
-
error = _this$props4.error,
|
|
222
|
-
_this$props4$mathMlOp = _this$props4.mathMlOptions,
|
|
223
|
-
mathMlOptions = _this$props4$mathMlOp === void 0 ? {} : _this$props4$mathMlOp,
|
|
224
|
-
language = _this$props4.language,
|
|
225
|
-
labelsCharactersLimit = _this$props4.labelsCharactersLimit;
|
|
226
|
-
var chartType = this.props.chartType;
|
|
227
|
-
var dialog = this.state.dialog;
|
|
228
|
-
var defineChart = this.props.defineChart || false;
|
|
229
|
-
|
|
230
|
-
var _ref = size || {},
|
|
231
|
-
width = _ref.width,
|
|
232
|
-
height = _ref.height;
|
|
233
|
-
|
|
234
|
-
var labels = {
|
|
235
|
-
left: (range === null || range === void 0 ? void 0 : range.label) || '',
|
|
236
|
-
bottom: (domain === null || domain === void 0 ? void 0 : domain.label) || ''
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
var _this$getChart = this.getChart(),
|
|
240
|
-
ChartComponent = _this$getChart.ChartComponent;
|
|
241
|
-
|
|
242
|
-
var categories = this.getFilteredCategories();
|
|
243
|
-
var correctValues = (0, _utils.getDomainAndRangeByChartType)(domain, range, chartType);
|
|
244
|
-
|
|
245
|
-
var _getGridLinesAndAxisB = (0, _utils.getGridLinesAndAxisByChartType)(correctValues.range, chartType),
|
|
246
|
-
verticalLines = _getGridLinesAndAxisB.verticalLines,
|
|
247
|
-
horizontalLines = _getGridLinesAndAxisB.horizontalLines,
|
|
248
|
-
leftAxis = _getGridLinesAndAxisB.leftAxis;
|
|
249
|
-
|
|
250
|
-
var common = {
|
|
251
|
-
graphProps: (0, _plot.createGraphProps)(correctValues.domain, correctValues.range, size, function () {
|
|
252
|
-
return _this2.rootNode;
|
|
253
|
-
})
|
|
254
|
-
};
|
|
255
|
-
log('[render] common:', common);
|
|
256
|
-
var maskSize = {
|
|
257
|
-
x: -10,
|
|
258
|
-
y: -75,
|
|
259
|
-
width: width + 20,
|
|
260
|
-
height: height + 80
|
|
261
|
-
};
|
|
262
|
-
var scale = common.graphProps.scale;
|
|
263
|
-
var xBand = (0, _utils.dataToXBand)(scale.x, categories, width, chartType);
|
|
264
|
-
|
|
265
|
-
if (!ChartComponent) {
|
|
266
|
-
return null;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
var bandWidth = xBand.bandwidth(); // for chartType "line", bandWidth will be 0, so we have to calculate it
|
|
270
|
-
|
|
271
|
-
var barWidth = bandWidth || scale.x(correctValues.domain.max) / categories.length;
|
|
272
|
-
var increaseHeight = defineChart ? 160 : 60; // if there are many categories, we have to rotate their names in order to fit
|
|
273
|
-
// and we have to add extra value on top of some items
|
|
274
|
-
|
|
275
|
-
var top = (0, _utils.getTopPadding)(barWidth);
|
|
276
|
-
var rootCommon = (0, _cloneDeep["default"])(common);
|
|
277
|
-
rootCommon.graphProps.size.height += top + increaseHeight;
|
|
278
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
279
|
-
className: (0, _classnames["default"])(classes.chart, classes.chartBox, className)
|
|
280
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
281
|
-
className: classes.controls
|
|
282
|
-
}, /*#__PURE__*/_react["default"].createElement(_toolMenu["default"], {
|
|
283
|
-
className: classes.toolMenu,
|
|
284
|
-
disabled: !addCategoryEnabled,
|
|
285
|
-
addCategory: function addCategory() {
|
|
286
|
-
return _this2.addCategory();
|
|
287
|
-
},
|
|
288
|
-
language: language
|
|
289
|
-
})), /*#__PURE__*/_react["default"].createElement(_plot.Root, (0, _extends2["default"])({
|
|
290
|
-
title: title,
|
|
291
|
-
onChangeTitle: onChangeTitle,
|
|
292
|
-
disabledTitle: !defineChart,
|
|
293
|
-
showTitle: true,
|
|
294
|
-
showLabels: true,
|
|
295
|
-
labels: labels,
|
|
296
|
-
onChangeLabels: onChangeLabels,
|
|
297
|
-
labelsPlaceholders: labelsPlaceholders,
|
|
298
|
-
titlePlaceholder: titlePlaceholder,
|
|
299
|
-
defineChart: defineChart,
|
|
300
|
-
disabledLabels: !defineChart,
|
|
301
|
-
isChart: true,
|
|
302
|
-
showPixelGuides: showPixelGuides,
|
|
303
|
-
rootRef: function rootRef(r) {
|
|
304
|
-
return _this2.rootNode = r;
|
|
305
|
-
},
|
|
306
|
-
mathMlOptions: mathMlOptions,
|
|
307
|
-
labelsCharactersLimit: labelsCharactersLimit
|
|
308
|
-
}, rootCommon), /*#__PURE__*/_react["default"].createElement(_grid["default"], (0, _extends2["default"])({}, common, {
|
|
309
|
-
xBand: xBand,
|
|
310
|
-
rowTickValues: horizontalLines,
|
|
311
|
-
columnTickValues: verticalLines
|
|
312
|
-
})), /*#__PURE__*/_react["default"].createElement(_axes["default"], (0, _extends2["default"])({
|
|
313
|
-
autoFocus: this.state.autoFocus,
|
|
314
|
-
onAutoFocusUsed: this.resetAutoFocus
|
|
315
|
-
}, common, {
|
|
316
|
-
defineChart: defineChart,
|
|
317
|
-
categories: categories,
|
|
318
|
-
xBand: xBand,
|
|
319
|
-
leftAxis: leftAxis,
|
|
320
|
-
onChange: this.changeData,
|
|
321
|
-
onChangeCategory: this.changeCategory,
|
|
322
|
-
chartingOptions: chartingOptions,
|
|
323
|
-
changeInteractiveEnabled: changeInteractiveEnabled,
|
|
324
|
-
changeEditableEnabled: changeEditableEnabled,
|
|
325
|
-
top: top,
|
|
326
|
-
error: error
|
|
327
|
-
})), /*#__PURE__*/_react["default"].createElement("mask", {
|
|
328
|
-
id: "".concat(this.maskUid)
|
|
329
|
-
}, /*#__PURE__*/_react["default"].createElement("rect", (0, _extends2["default"])({}, maskSize, {
|
|
330
|
-
fill: "white"
|
|
331
|
-
}))), /*#__PURE__*/_react["default"].createElement("g", {
|
|
332
|
-
id: "marks",
|
|
333
|
-
mask: "url('#".concat(this.maskUid, "')")
|
|
334
|
-
}, /*#__PURE__*/_react["default"].createElement(ChartComponent, (0, _extends2["default"])({}, common, {
|
|
335
|
-
data: categories,
|
|
336
|
-
height: rootCommon.graphProps.size.height,
|
|
337
|
-
defineChart: defineChart,
|
|
338
|
-
onChange: this.changeData,
|
|
339
|
-
onChangeCategory: this.changeCategory
|
|
340
|
-
})))), /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
|
|
341
|
-
open: dialog.open,
|
|
342
|
-
title: dialog.title,
|
|
343
|
-
text: dialog.text,
|
|
344
|
-
onClose: dialog.onClose,
|
|
345
|
-
onConfirm: dialog.onConfirm
|
|
346
|
-
}));
|
|
347
|
-
}
|
|
348
|
-
}]);
|
|
349
|
-
return Chart;
|
|
350
|
-
}(_react["default"].Component);
|
|
351
|
-
|
|
352
|
-
exports.Chart = Chart;
|
|
353
|
-
(0, _defineProperty2["default"])(Chart, "propTypes", {
|
|
354
|
-
classes: _propTypes["default"].object.isRequired,
|
|
355
|
-
className: _propTypes["default"].string,
|
|
356
|
-
chartType: _propTypes["default"].string.isRequired,
|
|
357
|
-
size: _propTypes["default"].shape({
|
|
358
|
-
width: _propTypes["default"].number,
|
|
359
|
-
height: _propTypes["default"].number
|
|
360
|
-
}),
|
|
361
|
-
domain: _propTypes["default"].shape({
|
|
362
|
-
label: _propTypes["default"].string,
|
|
363
|
-
min: _propTypes["default"].number,
|
|
364
|
-
max: _propTypes["default"].number,
|
|
365
|
-
axisLabel: _propTypes["default"].string
|
|
366
|
-
}),
|
|
367
|
-
data: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
368
|
-
label: _propTypes["default"].string,
|
|
369
|
-
value: _propTypes["default"].number
|
|
370
|
-
})),
|
|
371
|
-
range: _propTypes["default"].shape({
|
|
372
|
-
label: _propTypes["default"].string,
|
|
373
|
-
min: _propTypes["default"].number,
|
|
374
|
-
max: _propTypes["default"].number,
|
|
375
|
-
step: _propTypes["default"].number,
|
|
376
|
-
labelStep: _propTypes["default"].number,
|
|
377
|
-
axisLabel: _propTypes["default"].string
|
|
378
|
-
}),
|
|
379
|
-
charts: _propTypes["default"].array,
|
|
380
|
-
labelsPlaceholders: _propTypes["default"].object,
|
|
381
|
-
title: _propTypes["default"].string,
|
|
382
|
-
titlePlaceholder: _propTypes["default"].string,
|
|
383
|
-
onDataChange: _propTypes["default"].func,
|
|
384
|
-
onChangeLabels: _propTypes["default"].func,
|
|
385
|
-
onChangeTitle: _propTypes["default"].func,
|
|
386
|
-
error: _propTypes["default"].any,
|
|
387
|
-
addCategoryEnabled: _propTypes["default"].bool,
|
|
388
|
-
showPixelGuides: _propTypes["default"].bool,
|
|
389
|
-
categoryDefaultLabel: _propTypes["default"].string,
|
|
390
|
-
categoryDefaults: _propTypes["default"].object,
|
|
391
|
-
defineChart: _propTypes["default"].bool,
|
|
392
|
-
theme: _propTypes["default"].object,
|
|
393
|
-
chartingOptions: _propTypes["default"].object,
|
|
394
|
-
changeInteractiveEnabled: _propTypes["default"].bool,
|
|
395
|
-
changeEditableEnabled: _propTypes["default"].bool,
|
|
396
|
-
language: _propTypes["default"].string,
|
|
397
|
-
mathMlOptions: _propTypes["default"].object,
|
|
398
|
-
labelsCharactersLimit: _propTypes["default"].number
|
|
399
|
-
});
|
|
400
|
-
(0, _defineProperty2["default"])(Chart, "defaultProps", {
|
|
401
|
-
size: {
|
|
402
|
-
width: 480,
|
|
403
|
-
height: 480
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
var styles = function styles(theme) {
|
|
408
|
-
return {
|
|
409
|
-
graphBox: {
|
|
410
|
-
transform: 'translate(60px, 35px)'
|
|
411
|
-
},
|
|
412
|
-
controls: {
|
|
413
|
-
display: 'flex',
|
|
414
|
-
justifyContent: 'space-between',
|
|
415
|
-
padding: theme.spacing.unit,
|
|
416
|
-
backgroundColor: _renderUi.color.primaryLight(),
|
|
417
|
-
'& button': {
|
|
418
|
-
fontSize: theme.typography.fontSize
|
|
419
|
-
}
|
|
420
|
-
},
|
|
421
|
-
svg: {
|
|
422
|
-
overflow: 'visible'
|
|
423
|
-
},
|
|
424
|
-
toolMenu: {
|
|
425
|
-
minHeight: '36px'
|
|
426
|
-
},
|
|
427
|
-
chartBox: {
|
|
428
|
-
width: 'min-content'
|
|
429
|
-
}
|
|
430
|
-
};
|
|
431
|
-
};
|
|
432
|
-
|
|
433
|
-
var _default = (0, _styles.withStyles)(styles, {
|
|
434
|
-
withTheme: true
|
|
435
|
-
})(Chart);
|
|
436
|
-
|
|
437
|
-
exports["default"] = _default;
|
|
438
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGFydC5qc3giXSwibmFtZXMiOlsidHJhbnNsYXRvciIsIlRyYW5zbGF0b3IiLCJsb2ciLCJDaGFydCIsInByb3BzIiwiY2hhcnRzIiwiY2hhcnRUeXBlcyIsIkJhciIsIkhpc3RvZ3JhbSIsIkxpbmVEb3QiLCJMaW5lQ3Jvc3MiLCJEb3RQbG90IiwiTGluZVBsb3QiLCJhdXRvRm9jdXMiLCJvcGVuIiwiY2FsbGJhY2siLCJzZXRTdGF0ZSIsImRpYWxvZyIsInN0YXRlIiwiY2hhcnRUeXBlIiwiQ2hhcnRDb21wb25lbnQiLCJjaGFydCIsImZpbmQiLCJ0eXBlIiwiQ29tcG9uZW50IiwiZGF0YSIsIm9uRGF0YUNoYW5nZSIsImluZGV4IiwibmV3Q2F0ZWdvcnkiLCJpbnRlZ2VySW5kZXgiLCJwYXJzZUludCIsImNhdGVnb3J5RGVmYXVsdExhYmVsIiwiZGVmaW5lQ2hhcnQiLCJjYXRlZ29yeURlZmF1bHRzIiwibGFuZ3VhZ2UiLCJsZW5ndGgiLCJ0aXRsZSIsInQiLCJsbmciLCJ0ZXh0IiwiY291bnQiLCJvbkNvbmZpcm0iLCJoYW5kbGVBbGVydERpYWxvZyIsImluRGVmaW5lQ2hhcnQiLCJsYWJlbCIsInZhbHVlIiwiZGVsZXRhYmxlIiwiZWRpdGFibGUiLCJpbnRlcmFjdGl2ZSIsIm1hcCIsImQiLCJtYXNrVWlkIiwiZ2VuZXJhdGVNYXNrSWQiLCJNYXRoIiwicmFuZG9tIiwidG9GaXhlZCIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJkb21haW4iLCJyYW5nZSIsImNoYXJ0aW5nT3B0aW9ucyIsInNpemUiLCJvbkNoYW5nZVRpdGxlIiwib25DaGFuZ2VMYWJlbHMiLCJsYWJlbHNQbGFjZWhvbGRlcnMiLCJ0aXRsZVBsYWNlaG9sZGVyIiwiYWRkQ2F0ZWdvcnlFbmFibGVkIiwiY2hhbmdlSW50ZXJhY3RpdmVFbmFibGVkIiwiY2hhbmdlRWRpdGFibGVFbmFibGVkIiwic2hvd1BpeGVsR3VpZGVzIiwiZXJyb3IiLCJtYXRoTWxPcHRpb25zIiwibGFiZWxzQ2hhcmFjdGVyc0xpbWl0Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbHMiLCJsZWZ0IiwiYm90dG9tIiwiZ2V0Q2hhcnQiLCJjYXRlZ29yaWVzIiwiZ2V0RmlsdGVyZWRDYXRlZ29yaWVzIiwiY29ycmVjdFZhbHVlcyIsInZlcnRpY2FsTGluZXMiLCJob3Jpem9udGFsTGluZXMiLCJsZWZ0QXhpcyIsImNvbW1vbiIsImdyYXBoUHJvcHMiLCJyb290Tm9kZSIsIm1hc2tTaXplIiwieCIsInkiLCJzY2FsZSIsInhCYW5kIiwiYmFuZFdpZHRoIiwiYmFuZHdpZHRoIiwiYmFyV2lkdGgiLCJtYXgiLCJpbmNyZWFzZUhlaWdodCIsInRvcCIsInJvb3RDb21tb24iLCJjaGFydEJveCIsImNvbnRyb2xzIiwidG9vbE1lbnUiLCJhZGRDYXRlZ29yeSIsInIiLCJyZXNldEF1dG9Gb2N1cyIsImNoYW5nZURhdGEiLCJjaGFuZ2VDYXRlZ29yeSIsIm9uQ2xvc2UiLCJSZWFjdCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJzaGFwZSIsIm51bWJlciIsIm1pbiIsImF4aXNMYWJlbCIsImFycmF5T2YiLCJzdGVwIiwibGFiZWxTdGVwIiwiYXJyYXkiLCJmdW5jIiwiYW55IiwiYm9vbCIsInRoZW1lIiwic3R5bGVzIiwiZ3JhcGhCb3giLCJ0cmFuc2Zvcm0iLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJwYWRkaW5nIiwic3BhY2luZyIsInVuaXQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsInByaW1hcnlMaWdodCIsImZvbnRTaXplIiwidHlwb2dyYXBoeSIsInN2ZyIsIm92ZXJmbG93IiwibWluSGVpZ2h0Iiwid2l0aFRoZW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7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QUFDTyxPQUFOLENBQWNDLElBSGY7QUFJUkMsTUFBQUEsZUFBZSxFQUFFQyxnQkFBTUMsWUFBTixFQUpUO0FBS1Isa0JBQVk7QUFDVkMsUUFBQUEsUUFBUSxFQUFFWixLQUFLLENBQUNhLFVBQU4sQ0FBaUJEO0FBRGpCO0FBTEosS0FKZTtBQWF6QkUsSUFBQUEsR0FBRyxFQUFFO0FBQ0hDLE1BQUFBLFFBQVEsRUFBRTtBQURQLEtBYm9CO0FBZ0J6QnRDLElBQUFBLFFBQVEsRUFBRTtBQUNSdUMsTUFBQUEsU0FBUyxFQUFFO0FBREgsS0FoQmU7QUFtQnpCekMsSUFBQUEsUUFBUSxFQUFFO0FBQ1IzQixNQUFBQSxLQUFLLEVBQUU7QUFEQztBQW5CZSxHQUFaO0FBQUEsQ0FBZjs7ZUF3QmUsd0JBQVdxRCxNQUFYLEVBQW1CO0FBQUVnQixFQUFBQSxTQUFTLEVBQUU7QUFBYixDQUFuQixFQUF3QzNJLEtBQXhDLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBSb290LCBjcmVhdGVHcmFwaFByb3BzIH0gZnJvbSAnQHBpZS1saWIvcGxvdCc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IENoYXJ0R3JpZCBmcm9tICcuL2dyaWQnO1xuaW1wb3J0IENoYXJ0QXhlcyBmcm9tICcuL2F4ZXMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IGNvbG9yIH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCB7IGRhdGFUb1hCYW5kLCBnZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlLCBnZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUsIGdldFRvcFBhZGRpbmcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBUb29sTWVudSBmcm9tICcuL3Rvb2wtbWVudSc7XG5pbXBvcnQgY2hhcnRUeXBlcyBmcm9tICcuL2NoYXJ0LXR5cGVzJztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nIH0gZnJvbSAnQHBpZS1saWIvY29uZmlnLXVpJztcbmltcG9ydCBUcmFuc2xhdG9yIGZyb20gJ0BwaWUtbGliL3RyYW5zbGF0b3InO1xuXG5jb25zdCB7IHRyYW5zbGF0b3IgfSA9IFRyYW5zbGF0b3I7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtbGliOmNoYXJ0czpjaGFydCcpO1xuXG5leHBvcnQgY2xhc3MgQ2hhcnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZGlhbG9nOiB7XG4gICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMubWFza1VpZCA9IHRoaXMuZ2VuZXJhdGVNYXNrSWQoKTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjaGFydFR5cGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBzaXplOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgfSksXG4gICAgZG9tYWluOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBtaW46IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBtYXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBheGlzTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfSksXG4gICAgZGF0YTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKHsgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyIH0pKSxcbiAgICByYW5nZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgbWluOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbWF4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgc3RlcDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGxhYmVsU3RlcDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGF4aXNMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB9KSxcbiAgICBjaGFydHM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBsYWJlbHNQbGFjZWhvbGRlcnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGl0bGVQbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkRhdGFDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2hhbmdlTGFiZWxzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNoYW5nZVRpdGxlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBlcnJvcjogUHJvcFR5cGVzLmFueSxcbiAgICBhZGRDYXRlZ29yeUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dQaXhlbEd1aWRlczogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2F0ZWdvcnlEZWZhdWx0TGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2F0ZWdvcnlEZWZhdWx0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZWZpbmVDaGFydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdGhlbWU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2hhcnRpbmdPcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNoYW5nZUludGVyYWN0aXZlRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2hhbmdlRWRpdGFibGVFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBsYW5ndWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBtYXRoTWxPcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxhYmVsc0NoYXJhY3RlcnNMaW1pdDogUHJvcFR5cGVzLm51bWJlcixcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHNpemU6IHtcbiAgICAgIHdpZHRoOiA0ODAsXG4gICAgICBoZWlnaHQ6IDQ4MCxcbiAgICB9LFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGNoYXJ0czogW1xuICAgICAgY2hhcnRUeXBlcy5CYXIoKSxcbiAgICAgIGNoYXJ0VHlwZXMuSGlzdG9ncmFtKCksXG4gICAgICBjaGFydFR5cGVzLkxpbmVEb3QoKSxcbiAgICAgIGNoYXJ0VHlwZXMuTGluZUNyb3NzKCksXG4gICAgICBjaGFydFR5cGVzLkRvdFBsb3QoKSxcbiAgICAgIGNoYXJ0VHlwZXMuTGluZVBsb3QoKSxcbiAgICBdLFxuICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gIH07XG5cbiAgZ2VuZXJhdGVNYXNrSWQoKSB7XG4gICAgcmV0dXJuICdjaGFydC0nICsgKE1hdGgucmFuZG9tKCkgKiAxMDAwMCkudG9GaXhlZCgpO1xuICB9XG5cbiAgaGFuZGxlQWxlcnREaWFsb2cgPSAob3BlbiwgY2FsbGJhY2spID0+XG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgZGlhbG9nOiB7IG9wZW4gfSxcbiAgICAgIH0sXG4gICAgICBjYWxsYmFjayxcbiAgICApO1xuXG4gIGdldENoYXJ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGNoYXJ0cyA9IHRoaXMucHJvcHMuY2hhcnRzIHx8IHRoaXMuc3RhdGUuY2hhcnRzO1xuICAgIGxldCB7IGNoYXJ0VHlwZSB9ID0gdGhpcy5wcm9wcztcbiAgICBsZXQgQ2hhcnRDb21wb25lbnQgPSBudWxsO1xuICAgIGxldCBjaGFydCA9IG51bGw7XG5cbiAgICBpZiAoY2hhcnRUeXBlKSB7XG4gICAgICBjaGFydCA9IGNoYXJ0cyAmJiBjaGFydHMuZmluZCgoY2hhcnQpID0+IGNoYXJ0LnR5cGUgPT09IGNoYXJ0VHlwZSk7XG4gICAgICBDaGFydENvbXBvbmVudCA9IGNoYXJ0ICYmIGNoYXJ0LkNvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hhcnQgPSBjaGFydHMgJiYgY2hhcnRzWzBdO1xuICAgICAgQ2hhcnRDb21wb25lbnQgPSBjaGFydCAmJiBjaGFydC5Db21wb25lbnQ7XG4gICAgICBjaGFydFR5cGUgPSBjaGFydCAmJiBjaGFydC50eXBlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBjaGFydFR5cGUsXG4gICAgICBDaGFydENvbXBvbmVudCxcbiAgICB9O1xuICB9O1xuXG4gIGNoYW5nZURhdGEgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHsgb25EYXRhQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgb25EYXRhQ2hhbmdlKGRhdGEpO1xuICB9O1xuXG4gIGNoYW5nZUNhdGVnb3J5ID0gKGluZGV4LCBuZXdDYXRlZ29yeSkgPT4ge1xuICAgIGNvbnN0IGludGVnZXJJbmRleCA9IHBhcnNlSW50KGluZGV4LCAxMCk7XG5cbiAgICBpZiAoaW50ZWdlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgb25EYXRhQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgZGF0YVtpbnRlZ2VySW5kZXhdID0ge1xuICAgICAgICAuLi5kYXRhW2ludGVnZXJJbmRleF0sXG4gICAgICAgIC4uLm5ld0NhdGVnb3J5LFxuICAgICAgfTtcblxuICAgICAgb25EYXRhQ2hhbmdlKGRhdGEpO1xuICAgIH1cbiAgfTtcblxuICBhZGRDYXRlZ29yeSA9ICgpID0+IHtcbiAgICBjb25zdCB7IG9uRGF0YUNoYW5nZSwgZGF0YSwgY2F0ZWdvcnlEZWZhdWx0TGFiZWwsIGRlZmluZUNoYXJ0LCBjYXRlZ29yeURlZmF1bHRzLCBsYW5ndWFnZSB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICgoZGF0YSB8fCBbXSkubGVuZ3RoID4gMTkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdG9yLnQoJ2NvbW1vbjp3YXJuaW5nJywgeyBsbmc6IGxhbmd1YWdlIH0pLFxuICAgICAgICAgIHRleHQ6IHRyYW5zbGF0b3IudCgnY2hhcnRpbmcucmVhY2hlZExpbWl0X290aGVyJywgeyBjb3VudDogMjAsIGxuZzogbGFuZ3VhZ2UgfSksXG4gICAgICAgICAgb25Db25maXJtOiAoKSA9PiB0aGlzLmhhbmRsZUFsZXJ0RGlhbG9nKGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgYXV0b0ZvY3VzOiB0cnVlIH0pO1xuICAgICAgb25EYXRhQ2hhbmdlKFtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGluRGVmaW5lQ2hhcnQ6IGRlZmluZUNoYXJ0LFxuICAgICAgICAgIGxhYmVsOiBjYXRlZ29yeURlZmF1bHRMYWJlbCB8fCB0cmFuc2xhdG9yLnQoJ2NoYXJ0aW5nLm5ld0xhYmVsJywgeyBsbmc6IGxhbmd1YWdlIH0pLFxuICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgIGRlbGV0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBlZGl0YWJsZTogY2F0ZWdvcnlEZWZhdWx0cyA/IGNhdGVnb3J5RGVmYXVsdHM/LmVkaXRhYmxlIDogdHJ1ZSxcbiAgICAgICAgICBpbnRlcmFjdGl2ZTogY2F0ZWdvcnlEZWZhdWx0cyA/IGNhdGVnb3J5RGVmYXVsdHM/LmludGVyYWN0aXZlIDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgIH1cbiAgfTtcblxuICBnZXRGaWx0ZXJlZENhdGVnb3JpZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBkYXRhLCBkZWZpbmVDaGFydCB9ID0gdGhpcy5wcm9wcztcblxuICAgIHJldHVybiBkYXRhXG4gICAgICA/IGRhdGEubWFwKChkKSA9PiAoe1xuICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgZGVsZXRhYmxlOiBkZWZpbmVDaGFydCB8fCBkLmRlbGV0YWJsZSxcbiAgICAgICAgfSkpXG4gICAgICA6IFtdO1xuICB9O1xuXG4gIHJlc2V0QXV0b0ZvY3VzID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBhdXRvRm9jdXM6IGZhbHNlIH0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGFzc2VzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZG9tYWluID0ge30sXG4gICAgICByYW5nZSA9IHt9LFxuICAgICAgY2hhcnRpbmdPcHRpb25zLFxuICAgICAgc2l6ZSxcbiAgICAgIHRpdGxlLFxuICAgICAgb25DaGFuZ2VUaXRsZSxcbiAgICAgIG9uQ2hhbmdlTGFiZWxzLFxuICAgICAgbGFiZWxzUGxhY2Vob2xkZXJzLFxuICAgICAgdGl0bGVQbGFjZWhvbGRlcixcbiAgICAgIGFkZENhdGVnb3J5RW5hYmxlZCxcbiAgICAgIGNoYW5nZUludGVyYWN0aXZlRW5hYmxlZCxcbiAgICAgIGNoYW5nZUVkaXRhYmxlRW5hYmxlZCxcbiAgICAgIHNob3dQaXhlbEd1aWRlcyxcbiAgICAgIGVycm9yLFxuICAgICAgbWF0aE1sT3B0aW9ucyA9IHt9LFxuICAgICAgbGFuZ3VhZ2UsXG4gICAgICBsYWJlbHNDaGFyYWN0ZXJzTGltaXQsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHsgY2hhcnRUeXBlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBkaWFsb2cgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZGVmaW5lQ2hhcnQgPSB0aGlzLnByb3BzLmRlZmluZUNoYXJ0IHx8IGZhbHNlO1xuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzaXplIHx8IHt9O1xuICAgIGNvbnN0IGxhYmVscyA9IHsgbGVmdDogcmFuZ2U/LmxhYmVsIHx8ICcnLCBib3R0b206IGRvbWFpbj8ubGFiZWwgfHwgJycgfTtcblxuICAgIGNvbnN0IHsgQ2hhcnRDb21wb25lbnQgfSA9IHRoaXMuZ2V0Q2hhcnQoKTtcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5nZXRGaWx0ZXJlZENhdGVnb3JpZXMoKTtcblxuICAgIGNvbnN0IGNvcnJlY3RWYWx1ZXMgPSBnZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlKGRvbWFpbiwgcmFuZ2UsIGNoYXJ0VHlwZSk7XG5cbiAgICBjb25zdCB7IHZlcnRpY2FsTGluZXMsIGhvcml6b250YWxMaW5lcywgbGVmdEF4aXMgfSA9IGdldEdyaWRMaW5lc0FuZEF4aXNCeUNoYXJ0VHlwZShjb3JyZWN0VmFsdWVzLnJhbmdlLCBjaGFydFR5cGUpO1xuICAgIGNvbnN0IGNvbW1vbiA9IHtcbiAgICAgIGdyYXBoUHJvcHM6IGNyZWF0ZUdyYXBoUHJvcHMoY29ycmVjdFZhbHVlcy5kb21haW4sIGNvcnJlY3RWYWx1ZXMucmFuZ2UsIHNpemUsICgpID0+IHRoaXMucm9vdE5vZGUpLFxuICAgIH07XG5cbiAgICBsb2coJ1tyZW5kZXJdIGNvbW1vbjonLCBjb21tb24pO1xuXG4gICAgY29uc3QgbWFza1NpemUgPSB7IHg6IC0xMCwgeTogLTc1LCB3aWR0aDogd2lkdGggKyAyMCwgaGVpZ2h0OiBoZWlnaHQgKyA4MCB9O1xuICAgIGNvbnN0IHsgc2NhbGUgfSA9IGNvbW1vbi5ncmFwaFByb3BzO1xuICAgIGNvbnN0IHhCYW5kID0gZGF0YVRvWEJhbmQoc2NhbGUueCwgY2F0ZWdvcmllcywgd2lkdGgsIGNoYXJ0VHlwZSk7XG5cbiAgICBpZiAoIUNoYXJ0Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBiYW5kV2lkdGggPSB4QmFuZC5iYW5kd2lkdGgoKTtcbiAgICAvLyBmb3IgY2hhcnRUeXBlIFwibGluZVwiLCBiYW5kV2lkdGggd2lsbCBiZSAwLCBzbyB3ZSBoYXZlIHRvIGNhbGN1bGF0ZSBpdFxuICAgIGNvbnN0IGJhcldpZHRoID0gYmFuZFdpZHRoIHx8IHNjYWxlLngoY29ycmVjdFZhbHVlcy5kb21haW4ubWF4KSAvIGNhdGVnb3JpZXMubGVuZ3RoO1xuICAgIGNvbnN0IGluY3JlYXNlSGVpZ2h0ID0gZGVmaW5lQ2hhcnQgPyAxNjAgOiA2MDtcblxuICAgIC8vIGlmIHRoZXJlIGFyZSBtYW55IGNhdGVnb3JpZXMsIHdlIGhhdmUgdG8gcm90YXRlIHRoZWlyIG5hbWVzIGluIG9yZGVyIHRvIGZpdFxuICAgIC8vIGFuZCB3ZSBoYXZlIHRvIGFkZCBleHRyYSB2YWx1ZSBvbiB0b3Agb2Ygc29tZSBpdGVtc1xuICAgIGNvbnN0IHRvcCA9IGdldFRvcFBhZGRpbmcoYmFyV2lkdGgpO1xuICAgIGNvbnN0IHJvb3RDb21tb24gPSBjbG9uZURlZXAoY29tbW9uKTtcbiAgICByb290Q29tbW9uLmdyYXBoUHJvcHMuc2l6ZS5oZWlnaHQgKz0gdG9wICsgaW5jcmVhc2VIZWlnaHQ7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5jaGFydCwgY2xhc3Nlcy5jaGFydEJveCwgY2xhc3NOYW1lKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRyb2xzfT5cbiAgICAgICAgICA8VG9vbE1lbnVcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy50b29sTWVudX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshYWRkQ2F0ZWdvcnlFbmFibGVkfVxuICAgICAgICAgICAgYWRkQ2F0ZWdvcnk9eygpID0+IHRoaXMuYWRkQ2F0ZWdvcnkoKX1cbiAgICAgICAgICAgIGxhbmd1YWdlPXtsYW5ndWFnZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Um9vdFxuICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICBvbkNoYW5nZVRpdGxlPXtvbkNoYW5nZVRpdGxlfVxuICAgICAgICAgIGRpc2FibGVkVGl0bGU9eyFkZWZpbmVDaGFydH1cbiAgICAgICAgICBzaG93VGl0bGU9e3RydWV9XG4gICAgICAgICAgc2hvd0xhYmVscz17dHJ1ZX1cbiAgICAgICAgICBsYWJlbHM9e2xhYmVsc31cbiAgICAgICAgICBvbkNoYW5nZUxhYmVscz17b25DaGFuZ2VMYWJlbHN9XG4gICAgICAgICAgbGFiZWxzUGxhY2Vob2xkZXJzPXtsYWJlbHNQbGFjZWhvbGRlcnN9XG4gICAgICAgICAgdGl0bGVQbGFjZWhvbGRlcj17dGl0bGVQbGFjZWhvbGRlcn1cbiAgICAgICAgICBkZWZpbmVDaGFydD17ZGVmaW5lQ2hhcnR9XG4gICAgICAgICAgZGlzYWJsZWRMYWJlbHM9eyFkZWZpbmVDaGFydH1cbiAgICAgICAgICBpc0NoYXJ0PXt0cnVlfVxuICAgICAgICAgIHNob3dQaXhlbEd1aWRlcz17c2hvd1BpeGVsR3VpZGVzfVxuICAgICAgICAgIHJvb3RSZWY9eyhyKSA9PiAodGhpcy5yb290Tm9kZSA9IHIpfVxuICAgICAgICAgIG1hdGhNbE9wdGlvbnM9e21hdGhNbE9wdGlvbnN9XG4gICAgICAgICAgbGFiZWxzQ2hhcmFjdGVyc0xpbWl0PXtsYWJlbHNDaGFyYWN0ZXJzTGltaXR9XG4gICAgICAgICAgey4uLnJvb3RDb21tb259XG4gICAgICAgID5cbiAgICAgICAgICA8Q2hhcnRHcmlkIHsuLi5jb21tb259IHhCYW5kPXt4QmFuZH0gcm93VGlja1ZhbHVlcz17aG9yaXpvbnRhbExpbmVzfSBjb2x1bW5UaWNrVmFsdWVzPXt2ZXJ0aWNhbExpbmVzfSAvPlxuICAgICAgICAgIDxDaGFydEF4ZXNcbiAgICAgICAgICAgIGF1dG9Gb2N1cz17dGhpcy5zdGF0ZS5hdXRvRm9jdXN9XG4gICAgICAgICAgICBvbkF1dG9Gb2N1c1VzZWQ9e3RoaXMucmVzZXRBdXRvRm9jdXN9XG4gICAgICAgICAgICB7Li4uY29tbW9ufVxuICAgICAgICAgICAgZGVmaW5lQ2hhcnQ9e2RlZmluZUNoYXJ0fVxuICAgICAgICAgICAgY2F0ZWdvcmllcz17Y2F0ZWdvcmllc31cbiAgICAgICAgICAgIHhCYW5kPXt4QmFuZH1cbiAgICAgICAgICAgIGxlZnRBeGlzPXtsZWZ0QXhpc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmNoYW5nZURhdGF9XG4gICAgICAgICAgICBvbkNoYW5nZUNhdGVnb3J5PXt0aGlzLmNoYW5nZUNhdGVnb3J5fVxuICAgICAgICAgICAgY2hhcnRpbmdPcHRpb25zPXtjaGFydGluZ09wdGlvbnN9XG4gICAgICAgICAgICBjaGFuZ2VJbnRlcmFjdGl2ZUVuYWJsZWQ9e2NoYW5nZUludGVyYWN0aXZlRW5hYmxlZH1cbiAgICAgICAgICAgIGNoYW5nZUVkaXRhYmxlRW5hYmxlZD17Y2hhbmdlRWRpdGFibGVFbmFibGVkfVxuICAgICAgICAgICAgdG9wPXt0b3B9XG4gICAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8bWFzayBpZD17YCR7dGhpcy5tYXNrVWlkfWB9PlxuICAgICAgICAgICAgPHJlY3Qgey4uLm1hc2tTaXplfSBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgIDwvbWFzaz5cbiAgICAgICAgICA8ZyBpZD1cIm1hcmtzXCIgbWFzaz17YHVybCgnIyR7dGhpcy5tYXNrVWlkfScpYH0+XG4gICAgICAgICAgICA8Q2hhcnRDb21wb25lbnRcbiAgICAgICAgICAgICAgey4uLmNvbW1vbn1cbiAgICAgICAgICAgICAgZGF0YT17Y2F0ZWdvcmllc31cbiAgICAgICAgICAgICAgaGVpZ2h0PXtyb290Q29tbW9uLmdyYXBoUHJvcHMuc2l6ZS5oZWlnaHR9XG4gICAgICAgICAgICAgIGRlZmluZUNoYXJ0PXtkZWZpbmVDaGFydH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuY2hhbmdlRGF0YX1cbiAgICAgICAgICAgICAgb25DaGFuZ2VDYXRlZ29yeT17dGhpcy5jaGFuZ2VDYXRlZ29yeX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L1Jvb3Q+XG4gICAgICAgIDxBbGVydERpYWxvZ1xuICAgICAgICAgIG9wZW49e2RpYWxvZy5vcGVufVxuICAgICAgICAgIHRpdGxlPXtkaWFsb2cudGl0bGV9XG4gICAgICAgICAgdGV4dD17ZGlhbG9nLnRleHR9XG4gICAgICAgICAgb25DbG9zZT17ZGlhbG9nLm9uQ2xvc2V9XG4gICAgICAgICAgb25Db25maXJtPXtkaWFsb2cub25Db25maXJtfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIGdyYXBoQm94OiB7XG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDYwcHgsIDM1cHgpJyxcbiAgfSxcbiAgY29udHJvbHM6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBwYWRkaW5nOiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5wcmltYXJ5TGlnaHQoKSxcbiAgICAnJiBidXR0b24nOiB7XG4gICAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbiAgICB9LFxuICB9LFxuICBzdmc6IHtcbiAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICB9LFxuICB0b29sTWVudToge1xuICAgIG1pbkhlaWdodDogJzM2cHgnLFxuICB9LFxuICBjaGFydEJveDoge1xuICAgIHdpZHRoOiAnbWluLWNvbnRlbnQnLFxuICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSB9KShDaGFydCk7XG4iXX0=
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
|
|
7
|
-
var _build = require("enzyme/build");
|
|
8
|
-
|
|
9
|
-
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
|
|
11
|
-
var _dragHandle = _interopRequireDefault(require("../drag-handle"));
|
|
12
|
-
|
|
13
|
-
var _plot = require("@pie-lib/plot");
|
|
14
|
-
|
|
15
|
-
var _utils = require("./utils");
|
|
16
|
-
|
|
17
|
-
var _utils2 = require("../../utils");
|
|
18
|
-
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
|
-
|
|
21
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
|
-
|
|
23
|
-
jest.mock('../../utils', function () {
|
|
24
|
-
var _jest$requireActual = jest.requireActual('../../utils'),
|
|
25
|
-
point = _jest$requireActual.point;
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
bounds: jest.fn(),
|
|
29
|
-
point: point
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
jest.mock('@pie-lib/plot', function () {
|
|
33
|
-
var _jest$requireActual2 = jest.requireActual('@pie-lib/plot'),
|
|
34
|
-
types = _jest$requireActual2.types,
|
|
35
|
-
utils = _jest$requireActual2.utils;
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
gridDraggable: jest.fn(function (opts) {
|
|
39
|
-
return function (Comp) {
|
|
40
|
-
return Comp;
|
|
41
|
-
};
|
|
42
|
-
}),
|
|
43
|
-
types: types,
|
|
44
|
-
utils: utils
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
describe('BasePoint', function () {
|
|
48
|
-
var w;
|
|
49
|
-
var onChange = jest.fn();
|
|
50
|
-
|
|
51
|
-
var wrapper = function wrapper(extras) {
|
|
52
|
-
var defaults = {
|
|
53
|
-
classes: {},
|
|
54
|
-
className: 'className',
|
|
55
|
-
onChange: onChange,
|
|
56
|
-
graphProps: (0, _utils.graphProps)(),
|
|
57
|
-
x: 0,
|
|
58
|
-
y: 0,
|
|
59
|
-
width: 100
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
63
|
-
|
|
64
|
-
return (0, _build.shallow)( /*#__PURE__*/_react["default"].createElement(_dragHandle["default"], props));
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
describe('snapshot', function () {
|
|
68
|
-
it('renders', function () {
|
|
69
|
-
w = wrapper();
|
|
70
|
-
expect(w).toMatchSnapshot();
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
describe('gridDraggable options', function () {
|
|
74
|
-
var opts;
|
|
75
|
-
var domain;
|
|
76
|
-
var range;
|
|
77
|
-
beforeEach(function () {
|
|
78
|
-
domain = {
|
|
79
|
-
min: 0,
|
|
80
|
-
max: 1,
|
|
81
|
-
step: 1
|
|
82
|
-
};
|
|
83
|
-
range = {
|
|
84
|
-
min: 0,
|
|
85
|
-
max: 1,
|
|
86
|
-
step: 1
|
|
87
|
-
};
|
|
88
|
-
var w = wrapper();
|
|
89
|
-
opts = _plot.gridDraggable.mock.calls[0][0];
|
|
90
|
-
});
|
|
91
|
-
describe('bounds', function () {
|
|
92
|
-
it('calls utils.bounds with area', function () {
|
|
93
|
-
var result = opts.bounds({
|
|
94
|
-
x: 0,
|
|
95
|
-
y: 0
|
|
96
|
-
}, {
|
|
97
|
-
domain: domain,
|
|
98
|
-
range: range
|
|
99
|
-
});
|
|
100
|
-
expect(result).toEqual({
|
|
101
|
-
left: 0,
|
|
102
|
-
top: 1,
|
|
103
|
-
bottom: 0,
|
|
104
|
-
right: 1
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe('anchorPoint', function () {
|
|
109
|
-
it('returns x/y', function () {
|
|
110
|
-
var result = opts.anchorPoint({
|
|
111
|
-
x: 0,
|
|
112
|
-
y: 0
|
|
113
|
-
});
|
|
114
|
-
expect(result).toEqual({
|
|
115
|
-
x: 0,
|
|
116
|
-
y: 0
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
describe('fromDelta', function () {
|
|
121
|
-
it('returns y coordinate of a new point from the x/y + delta', function () {
|
|
122
|
-
var result = opts.fromDelta({
|
|
123
|
-
x: -1,
|
|
124
|
-
y: 0
|
|
125
|
-
}, {
|
|
126
|
-
x: 1,
|
|
127
|
-
y: 3
|
|
128
|
-
});
|
|
129
|
-
expect(result).toEqual(3);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vX190ZXN0c19fL2RyYWctaGFuZGxlLnRlc3QuanN4Il0sIm5hbWVzIjpbImplc3QiLCJtb2NrIiwicmVxdWlyZUFjdHVhbCIsInBvaW50IiwiYm91bmRzIiwiZm4iLCJ0eXBlcyIsInV0aWxzIiwiZ3JpZERyYWdnYWJsZSIsIm9wdHMiLCJDb21wIiwiZGVzY3JpYmUiLCJ3Iiwib25DaGFuZ2UiLCJ3cmFwcGVyIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwiZ3JhcGhQcm9wcyIsIngiLCJ5Iiwid2lkdGgiLCJwcm9wcyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwiZG9tYWluIiwicmFuZ2UiLCJiZWZvcmVFYWNoIiwibWluIiwibWF4Iiwic3RlcCIsImNhbGxzIiwicmVzdWx0IiwidG9FcXVhbCIsImxlZnQiLCJ0b3AiLCJib3R0b20iLCJyaWdodCIsImFuY2hvclBvaW50IiwiZnJvbURlbHRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVLGFBQVYsRUFBeUIsWUFBTTtBQUM3Qiw0QkFBa0JELElBQUksQ0FBQ0UsYUFBTCxDQUFtQixhQUFuQixDQUFsQjtBQUFBLE1BQVFDLEtBQVIsdUJBQVFBLEtBQVI7O0FBQ0EsU0FBTztBQUNMQyxJQUFBQSxNQUFNLEVBQUVKLElBQUksQ0FBQ0ssRUFBTCxFQURIO0FBRUxGLElBQUFBLEtBQUssRUFBTEE7QUFGSyxHQUFQO0FBSUQsQ0FORDtBQVFBSCxJQUFJLENBQUNDLElBQUwsQ0FBVSxlQUFWLEVBQTJCLFlBQU07QUFDL0IsNkJBQXlCRCxJQUFJLENBQUNFLGFBQUwsQ0FBbUIsZUFBbkIsQ0FBekI7QUFBQSxNQUFRSSxLQUFSLHdCQUFRQSxLQUFSO0FBQUEsTUFBZUMsS0FBZix3QkFBZUEsS0FBZjs7QUFDQSxTQUFPO0FB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QUFBLEVBQUUsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDdEIsWUFBTVUsTUFBTSxHQUFHekIsSUFBSSxDQUFDK0IsV0FBTCxDQUFpQjtBQUFFcEIsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBakIsQ0FBZjtBQUNBSSxRQUFBQSxNQUFNLENBQUNTLE1BQUQsQ0FBTixDQUFlQyxPQUFmLENBQXVCO0FBQUVmLFVBQUFBLENBQUMsRUFBRSxDQUFMO0FBQVFDLFVBQUFBLENBQUMsRUFBRTtBQUFYLFNBQXZCO0FBQ0QsT0FIQyxDQUFGO0FBSUQsS0FMTyxDQUFSO0FBT0FWLElBQUFBLFFBQVEsQ0FBQyxXQUFELEVBQWMsWUFBTTtBQUMxQmEsTUFBQUEsRUFBRSxDQUFDLDBEQUFELEVBQTZELFlBQU07QUFDbkUsWUFBTVUsTUFBTSxHQUFHekIsSUFBSSxDQUFDZ0MsU0FBTCxDQUFlO0FBQUVyQixVQUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFOO0FBQVNDLFVBQUFBLENBQUMsRUFBRTtBQUFaLFNBQWYsRUFBZ0M7QUFBRUQsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBaEMsQ0FBZjtBQUNBSSxRQUFBQSxNQUFNLENBQUNTLE1BQUQsQ0FBTixDQUFlQyxPQUFmLENBQXVCLENBQXZCO0FBQ0QsT0FIQyxDQUFGO0FBSUQsS0FMTyxDQUFSO0FBTUQsR0F2Q08sQ0FBUjtBQXdDRCxDQS9ETyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZS9idWlsZCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IERyYWdIYW5kbGUgZnJvbSAnLi4vZHJhZy1oYW5kbGUnO1xuaW1wb3J0IHsgZ3JpZERyYWdnYWJsZSB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgYm91bmRzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5qZXN0Lm1vY2soJy4uLy4uL3V0aWxzJywgKCkgPT4ge1xuICBjb25zdCB7IHBvaW50IH0gPSBqZXN0LnJlcXVpcmVBY3R1YWwoJy4uLy4uL3V0aWxzJyk7XG4gIHJldHVybiB7XG4gICAgYm91bmRzOiBqZXN0LmZuKCksXG4gICAgcG9pbnQsXG4gIH07XG59KTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9wbG90JywgKCkgPT4ge1xuICBjb25zdCB7IHR5cGVzLCB1dGlscyB9ID0gamVzdC5yZXF1aXJlQWN0dWFsKCdAcGllLWxpYi9wbG90Jyk7XG4gIHJldHVybiB7XG4gICAgZ3JpZERyYWdnYWJsZTogamVzdC5mbigob3B0cykgPT4gKENvbXApID0+IENvbXApLFxuICAgIHR5cGVzLFxuICAgIHV0aWxzLFxuICB9O1xufSk7XG5cbmRlc2NyaWJlKCdCYXNlUG9pbnQnLCAoKSA9PiB7XG4gIGxldCB3O1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDEwMCxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgcmV0dXJuIHNoYWxsb3coPERyYWdIYW5kbGUgey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdncmlkRHJhZ2dhYmxlIG9wdGlvbnMnLCAoKSA9PiB7XG4gICAgbGV0IG9wdHM7XG4gICAgbGV0IGRvbWFpbjtcbiAgICBsZXQgcmFuZ2U7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBkb21haW4gPSB7XG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxLFxuICAgICAgICBzdGVwOiAxLFxuICAgICAgfTtcbiAgICAgIHJhbmdlID0ge1xuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMSxcbiAgICAgICAgc3RlcDogMSxcbiAgICAgIH07XG4gICAgICBjb25zdCB3ID0gd3JhcHBlcigpO1xuICAgICAgb3B0cyA9IGdyaWREcmFnZ2FibGUubW9jay5jYWxsc1swXVswXTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdib3VuZHMnLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgdXRpbHMuYm91bmRzIHdpdGggYXJlYScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0cy5ib3VuZHMoeyB4OiAwLCB5OiAwIH0sIHsgZG9tYWluLCByYW5nZSB9KTtcblxuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgbGVmdDogMCwgdG9wOiAxLCBib3R0b206IDAsIHJpZ2h0OiAxIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ2FuY2hvclBvaW50JywgKCkgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgeC95JywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBvcHRzLmFuY2hvclBvaW50KHsgeDogMCwgeTogMCB9KTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHg6IDAsIHk6IDAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdmcm9tRGVsdGEnLCAoKSA9PiB7XG4gICAgICBpdCgncmV0dXJucyB5IGNvb3JkaW5hdGUgb2YgYSBuZXcgcG9pbnQgZnJvbSB0aGUgeC95ICsgZGVsdGEnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdHMuZnJvbURlbHRhKHsgeDogLTEsIHk6IDAgfSwgeyB4OiAxLCB5OiAzIH0pO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKDMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|