@pie-lib/graphing 3.2.0-next.0 → 3.2.0-next.2
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/lib/__tests__/bg.test.js +282 -0
- package/lib/__tests__/coordinates-label.test.js +276 -0
- package/lib/__tests__/graph-with-controls.test.js +275 -0
- package/lib/__tests__/graph.test.js +927 -0
- package/lib/__tests__/grid-setup.test.js +729 -0
- package/lib/__tests__/grid.test.js +29 -0
- package/lib/__tests__/key-legend.test.js +321 -0
- package/lib/__tests__/label-svg-icon.test.js +373 -0
- package/lib/__tests__/labels.test.js +61 -0
- package/lib/__tests__/mark-label.test.js +133 -0
- package/lib/__tests__/toggle-bar.test.js +197 -0
- package/lib/__tests__/tool-menu.test.js +151 -0
- package/lib/__tests__/undo-redo.test.js +31 -0
- package/lib/__tests__/use-debounce.test.js +24 -0
- package/lib/__tests__/utils.js +70 -0
- package/lib/__tests__/utils.test.js +123 -0
- package/lib/axis/__tests__/arrow.test.js +60 -0
- package/lib/axis/__tests__/axes.test.js +195 -0
- package/lib/axis/arrow.js +1 -1
- package/lib/axis/axes.js +1 -1
- package/lib/axis/index.js +1 -1
- package/lib/bg.js +1 -1
- package/lib/container/__tests__/actions.test.js +108 -0
- package/lib/container/__tests__/index.test.js +503 -0
- package/lib/container/__tests__/marks.test.js +259 -0
- package/lib/container/__tests__/middleware.test.js +244 -0
- package/lib/container/__tests__/reducer.test.js +450 -0
- package/lib/container/actions.js +1 -1
- package/lib/container/index.js +1 -1
- package/lib/container/marks.js +1 -1
- package/lib/container/middleware.js +1 -1
- package/lib/container/reducer.js +1 -1
- package/lib/coordinates-label.js +1 -1
- package/lib/graph-with-controls.js +1 -1
- package/lib/graph.js +1 -1
- package/lib/grid-setup.js +1 -1
- package/lib/grid.js +1 -1
- package/lib/index.js +1 -1
- package/lib/key-legend.js +1 -1
- package/lib/label-svg-icon.js +1 -1
- package/lib/labels.js +1 -1
- package/lib/mark-label.js +1 -1
- package/lib/toggle-bar.js +1 -1
- package/lib/tool-menu.js +1 -1
- package/lib/tools/absolute/__tests__/component.test.js +65 -0
- package/lib/tools/absolute/component.js +1 -1
- package/lib/tools/absolute/index.js +1 -1
- package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
- package/lib/tools/circle/__tests__/component.test.js +615 -0
- package/lib/tools/circle/__tests__/index.test.js +576 -0
- package/lib/tools/circle/bg-circle.js +1 -1
- package/lib/tools/circle/component.js +1 -1
- package/lib/tools/circle/index.js +1 -1
- package/lib/tools/exponential/__tests__/component.test.js +64 -0
- package/lib/tools/exponential/__tests__/index.test.js +828 -0
- package/lib/tools/exponential/component.js +1 -1
- package/lib/tools/exponential/index.js +1 -1
- package/lib/tools/index.js +1 -1
- package/lib/tools/line/__tests__/component.test.js +45 -0
- package/lib/tools/line/component.js +1 -1
- package/lib/tools/line/index.js +1 -1
- package/lib/tools/parabola/__tests__/component.test.js +64 -0
- package/lib/tools/parabola/__tests__/index.test.js +564 -0
- package/lib/tools/parabola/component.js +1 -1
- package/lib/tools/parabola/index.js +1 -1
- package/lib/tools/point/__tests__/component.test.js +434 -0
- package/lib/tools/point/__tests__/index.test.js +262 -0
- package/lib/tools/point/component.js +1 -1
- package/lib/tools/point/index.js +1 -1
- package/lib/tools/polygon/__tests__/component.test.js +485 -0
- package/lib/tools/polygon/__tests__/index.test.js +303 -0
- package/lib/tools/polygon/__tests__/line.test.js +50 -0
- package/lib/tools/polygon/__tests__/polygon.test.js +85 -0
- package/lib/tools/polygon/component.js +1 -1
- package/lib/tools/polygon/index.js +1 -1
- package/lib/tools/polygon/line.js +1 -1
- package/lib/tools/polygon/polygon.js +1 -1
- package/lib/tools/ray/__tests__/component.test.js +35 -0
- package/lib/tools/ray/component.js +1 -1
- package/lib/tools/ray/index.js +1 -1
- package/lib/tools/segment/__tests__/component.test.js +35 -0
- package/lib/tools/segment/component.js +1 -1
- package/lib/tools/segment/index.js +1 -1
- package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
- package/lib/tools/shared/arrow-head.js +1 -1
- package/lib/tools/shared/icons/CorrectSVG.js +1 -1
- package/lib/tools/shared/icons/IncorrectSVG.js +1 -1
- package/lib/tools/shared/icons/MissingSVG.js +1 -1
- package/lib/tools/shared/line/__tests__/index.test.js +124 -0
- package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js +90 -0
- package/lib/tools/shared/line/index.js +1 -1
- package/lib/tools/shared/line/line-path.js +1 -1
- package/lib/tools/shared/line/with-root-edge.js +1 -1
- package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
- package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
- package/lib/tools/shared/point/arrow-point.js +1 -1
- package/lib/tools/shared/point/arrow.js +1 -1
- package/lib/tools/shared/point/base-point.js +1 -1
- package/lib/tools/shared/point/index.js +1 -1
- package/lib/tools/shared/styles.js +1 -1
- package/lib/tools/shared/types.js +1 -1
- package/lib/tools/sine/__tests__/component.test.js +72 -0
- package/lib/tools/sine/component.js +1 -1
- package/lib/tools/sine/index.js +1 -1
- package/lib/tools/vector/__tests__/component.test.js +32 -0
- package/lib/tools/vector/component.js +1 -1
- package/lib/tools/vector/index.js +1 -1
- package/lib/undo-redo.js +1 -1
- package/lib/use-debounce.js +1 -1
- package/lib/utils.js +1 -1
- package/package.json +9 -12
- package/LICENSE.md +0 -5
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
6
|
+
var _labelSvgIcon = _interopRequireDefault(require("../label-svg-icon"));
|
|
7
|
+
describe('SvgIcon', function () {
|
|
8
|
+
describe('rendering', function () {
|
|
9
|
+
it('renders without crashing with correct type', function () {
|
|
10
|
+
var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
11
|
+
type: "correct"
|
|
12
|
+
})),
|
|
13
|
+
container = _render.container;
|
|
14
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
15
|
+
});
|
|
16
|
+
it('renders correct icon type', function () {
|
|
17
|
+
var _render2 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
18
|
+
type: "correct"
|
|
19
|
+
})),
|
|
20
|
+
container = _render2.container;
|
|
21
|
+
var svg = container.querySelector('svg');
|
|
22
|
+
expect(svg).toBeInTheDocument();
|
|
23
|
+
expect(svg).toHaveAttribute('width', '8');
|
|
24
|
+
expect(svg).toHaveAttribute('height', '6');
|
|
25
|
+
});
|
|
26
|
+
it('renders incorrect icon type', function () {
|
|
27
|
+
var _render3 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
28
|
+
type: "incorrect"
|
|
29
|
+
})),
|
|
30
|
+
container = _render3.container;
|
|
31
|
+
var svg = container.querySelector('svg');
|
|
32
|
+
expect(svg).toBeInTheDocument();
|
|
33
|
+
expect(svg).toHaveAttribute('width', '7');
|
|
34
|
+
expect(svg).toHaveAttribute('height', '7');
|
|
35
|
+
});
|
|
36
|
+
it('renders empty icon type', function () {
|
|
37
|
+
var _render4 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
38
|
+
type: "empty"
|
|
39
|
+
})),
|
|
40
|
+
container = _render4.container;
|
|
41
|
+
var svg = container.querySelector('svg');
|
|
42
|
+
expect(svg).toBeInTheDocument();
|
|
43
|
+
expect(svg).toHaveAttribute('width', '11');
|
|
44
|
+
expect(svg).toHaveAttribute('height', '12');
|
|
45
|
+
});
|
|
46
|
+
it('renders null for unknown icon type', function () {
|
|
47
|
+
var _render5 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
48
|
+
type: "unknown"
|
|
49
|
+
})),
|
|
50
|
+
container = _render5.container;
|
|
51
|
+
expect(container.firstChild).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
it('renders null for invalid icon type', function () {
|
|
54
|
+
var _render6 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
55
|
+
type: "invalid"
|
|
56
|
+
})),
|
|
57
|
+
container = _render6.container;
|
|
58
|
+
expect(container.firstChild).toBeNull();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('correct icon', function () {
|
|
62
|
+
it('has correct viewBox attribute', function () {
|
|
63
|
+
var _render7 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
64
|
+
type: "correct"
|
|
65
|
+
})),
|
|
66
|
+
container = _render7.container;
|
|
67
|
+
var svg = container.querySelector('svg');
|
|
68
|
+
expect(svg).toHaveAttribute('viewBox', '0 0 8 6');
|
|
69
|
+
});
|
|
70
|
+
it('has correct fill color for path', function () {
|
|
71
|
+
var _render8 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
72
|
+
type: "correct"
|
|
73
|
+
})),
|
|
74
|
+
container = _render8.container;
|
|
75
|
+
var path = container.querySelector('path');
|
|
76
|
+
expect(path).toHaveAttribute('fill', '#0B7D38');
|
|
77
|
+
});
|
|
78
|
+
it('has correct path d attribute for checkmark', function () {
|
|
79
|
+
var _render9 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
80
|
+
type: "correct"
|
|
81
|
+
})),
|
|
82
|
+
container = _render9.container;
|
|
83
|
+
var path = container.querySelector('path');
|
|
84
|
+
expect(path).toHaveAttribute('d');
|
|
85
|
+
var dAttribute = path.getAttribute('d');
|
|
86
|
+
expect(dAttribute).toContain('M6.79688');
|
|
87
|
+
});
|
|
88
|
+
it('has xmlns attribute', function () {
|
|
89
|
+
var _render0 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
90
|
+
type: "correct"
|
|
91
|
+
})),
|
|
92
|
+
container = _render0.container;
|
|
93
|
+
var svg = container.querySelector('svg');
|
|
94
|
+
expect(svg).toHaveAttribute('xmlns', 'http://www.w3.org/2000/svg');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('incorrect icon', function () {
|
|
98
|
+
it('has correct viewBox attribute', function () {
|
|
99
|
+
var _render1 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
100
|
+
type: "incorrect"
|
|
101
|
+
})),
|
|
102
|
+
container = _render1.container;
|
|
103
|
+
var svg = container.querySelector('svg');
|
|
104
|
+
expect(svg).toHaveAttribute('viewBox', '0 0 7 7');
|
|
105
|
+
});
|
|
106
|
+
it('has correct fill color for path', function () {
|
|
107
|
+
var _render10 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
108
|
+
type: "incorrect"
|
|
109
|
+
})),
|
|
110
|
+
container = _render10.container;
|
|
111
|
+
var path = container.querySelector('path');
|
|
112
|
+
expect(path).toHaveAttribute('fill', '#BF0D00');
|
|
113
|
+
});
|
|
114
|
+
it('has correct path d attribute for X mark', function () {
|
|
115
|
+
var _render11 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
116
|
+
type: "incorrect"
|
|
117
|
+
})),
|
|
118
|
+
container = _render11.container;
|
|
119
|
+
var path = container.querySelector('path');
|
|
120
|
+
expect(path).toHaveAttribute('d');
|
|
121
|
+
var dAttribute = path.getAttribute('d');
|
|
122
|
+
expect(dAttribute).toContain('M4.23438');
|
|
123
|
+
});
|
|
124
|
+
it('has xmlns attribute', function () {
|
|
125
|
+
var _render12 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
126
|
+
type: "incorrect"
|
|
127
|
+
})),
|
|
128
|
+
container = _render12.container;
|
|
129
|
+
var svg = container.querySelector('svg');
|
|
130
|
+
expect(svg).toHaveAttribute('xmlns', 'http://www.w3.org/2000/svg');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('empty icon', function () {
|
|
134
|
+
it('has correct viewBox attribute', function () {
|
|
135
|
+
var _render13 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
136
|
+
type: "empty"
|
|
137
|
+
})),
|
|
138
|
+
container = _render13.container;
|
|
139
|
+
var svg = container.querySelector('svg');
|
|
140
|
+
expect(svg).toHaveAttribute('viewBox', '0 0 11 12');
|
|
141
|
+
});
|
|
142
|
+
it('has correct fill color for path', function () {
|
|
143
|
+
var _render14 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
144
|
+
type: "empty"
|
|
145
|
+
})),
|
|
146
|
+
container = _render14.container;
|
|
147
|
+
var path = container.querySelector('path');
|
|
148
|
+
expect(path).toHaveAttribute('fill', '#BF0D00');
|
|
149
|
+
});
|
|
150
|
+
it('has correct path d attribute for empty frame', function () {
|
|
151
|
+
var _render15 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
152
|
+
type: "empty"
|
|
153
|
+
})),
|
|
154
|
+
container = _render15.container;
|
|
155
|
+
var path = container.querySelector('path');
|
|
156
|
+
expect(path).toHaveAttribute('d');
|
|
157
|
+
var dAttribute = path.getAttribute('d');
|
|
158
|
+
expect(dAttribute).toContain('M0.25');
|
|
159
|
+
});
|
|
160
|
+
it('has xmlns attribute', function () {
|
|
161
|
+
var _render16 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
162
|
+
type: "empty"
|
|
163
|
+
})),
|
|
164
|
+
container = _render16.container;
|
|
165
|
+
var svg = container.querySelector('svg');
|
|
166
|
+
expect(svg).toHaveAttribute('xmlns', 'http://www.w3.org/2000/svg');
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('icon structure', function () {
|
|
170
|
+
it('correct icon has one path element', function () {
|
|
171
|
+
var _render17 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
172
|
+
type: "correct"
|
|
173
|
+
})),
|
|
174
|
+
container = _render17.container;
|
|
175
|
+
var paths = container.querySelectorAll('path');
|
|
176
|
+
expect(paths.length).toBe(1);
|
|
177
|
+
});
|
|
178
|
+
it('incorrect icon has one path element', function () {
|
|
179
|
+
var _render18 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
180
|
+
type: "incorrect"
|
|
181
|
+
})),
|
|
182
|
+
container = _render18.container;
|
|
183
|
+
var paths = container.querySelectorAll('path');
|
|
184
|
+
expect(paths.length).toBe(1);
|
|
185
|
+
});
|
|
186
|
+
it('empty icon has one path element', function () {
|
|
187
|
+
var _render19 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
188
|
+
type: "empty"
|
|
189
|
+
})),
|
|
190
|
+
container = _render19.container;
|
|
191
|
+
var paths = container.querySelectorAll('path');
|
|
192
|
+
expect(paths.length).toBe(1);
|
|
193
|
+
});
|
|
194
|
+
it('each icon renders only one svg element', function () {
|
|
195
|
+
var _render20 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
196
|
+
type: "correct"
|
|
197
|
+
})),
|
|
198
|
+
correctContainer = _render20.container;
|
|
199
|
+
var _render21 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
200
|
+
type: "incorrect"
|
|
201
|
+
})),
|
|
202
|
+
incorrectContainer = _render21.container;
|
|
203
|
+
var _render22 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
204
|
+
type: "empty"
|
|
205
|
+
})),
|
|
206
|
+
emptyContainer = _render22.container;
|
|
207
|
+
expect(correctContainer.querySelectorAll('svg').length).toBe(1);
|
|
208
|
+
expect(incorrectContainer.querySelectorAll('svg').length).toBe(1);
|
|
209
|
+
expect(emptyContainer.querySelectorAll('svg').length).toBe(1);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
describe('edge cases', function () {
|
|
213
|
+
it('handles empty string type gracefully', function () {
|
|
214
|
+
var _render23 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
215
|
+
type: ""
|
|
216
|
+
})),
|
|
217
|
+
container = _render23.container;
|
|
218
|
+
expect(container.firstChild).toBeNull();
|
|
219
|
+
});
|
|
220
|
+
it('handles null type gracefully', function () {
|
|
221
|
+
var _render24 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
222
|
+
type: null
|
|
223
|
+
})),
|
|
224
|
+
container = _render24.container;
|
|
225
|
+
expect(container.firstChild).toBeNull();
|
|
226
|
+
});
|
|
227
|
+
it('handles undefined type gracefully', function () {
|
|
228
|
+
var _render25 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
229
|
+
type: undefined
|
|
230
|
+
})),
|
|
231
|
+
container = _render25.container;
|
|
232
|
+
expect(container.firstChild).toBeNull();
|
|
233
|
+
});
|
|
234
|
+
it('handles numeric type gracefully', function () {
|
|
235
|
+
var _render26 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
236
|
+
type: 123
|
|
237
|
+
})),
|
|
238
|
+
container = _render26.container;
|
|
239
|
+
expect(container.firstChild).toBeNull();
|
|
240
|
+
});
|
|
241
|
+
it('handles object type gracefully', function () {
|
|
242
|
+
var _render27 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
243
|
+
type: {}
|
|
244
|
+
})),
|
|
245
|
+
container = _render27.container;
|
|
246
|
+
expect(container.firstChild).toBeNull();
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
describe('icon differentiation', function () {
|
|
250
|
+
it('correct and incorrect icons have different dimensions', function () {
|
|
251
|
+
var _render28 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
252
|
+
type: "correct"
|
|
253
|
+
})),
|
|
254
|
+
correctContainer = _render28.container;
|
|
255
|
+
var _render29 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
256
|
+
type: "incorrect"
|
|
257
|
+
})),
|
|
258
|
+
incorrectContainer = _render29.container;
|
|
259
|
+
var correctSvg = correctContainer.querySelector('svg');
|
|
260
|
+
var incorrectSvg = incorrectContainer.querySelector('svg');
|
|
261
|
+
expect(correctSvg.getAttribute('width')).not.toBe(incorrectSvg.getAttribute('width'));
|
|
262
|
+
});
|
|
263
|
+
it('correct and empty icons have different fill colors', function () {
|
|
264
|
+
var _render30 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
265
|
+
type: "correct"
|
|
266
|
+
})),
|
|
267
|
+
correctContainer = _render30.container;
|
|
268
|
+
var _render31 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
269
|
+
type: "empty"
|
|
270
|
+
})),
|
|
271
|
+
emptyContainer = _render31.container;
|
|
272
|
+
var correctPath = correctContainer.querySelector('path');
|
|
273
|
+
var emptyPath = emptyContainer.querySelector('path');
|
|
274
|
+
expect(correctPath.getAttribute('fill')).not.toBe(emptyPath.getAttribute('fill'));
|
|
275
|
+
});
|
|
276
|
+
it('incorrect and empty icons have same fill color', function () {
|
|
277
|
+
var _render32 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
278
|
+
type: "incorrect"
|
|
279
|
+
})),
|
|
280
|
+
incorrectContainer = _render32.container;
|
|
281
|
+
var _render33 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
282
|
+
type: "empty"
|
|
283
|
+
})),
|
|
284
|
+
emptyContainer = _render33.container;
|
|
285
|
+
var incorrectPath = incorrectContainer.querySelector('path');
|
|
286
|
+
var emptyPath = emptyContainer.querySelector('path');
|
|
287
|
+
expect(incorrectPath.getAttribute('fill')).toBe(emptyPath.getAttribute('fill'));
|
|
288
|
+
});
|
|
289
|
+
it('each icon type has unique path data', function () {
|
|
290
|
+
var _render34 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
291
|
+
type: "correct"
|
|
292
|
+
})),
|
|
293
|
+
correctContainer = _render34.container;
|
|
294
|
+
var _render35 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
295
|
+
type: "incorrect"
|
|
296
|
+
})),
|
|
297
|
+
incorrectContainer = _render35.container;
|
|
298
|
+
var _render36 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
299
|
+
type: "empty"
|
|
300
|
+
})),
|
|
301
|
+
emptyContainer = _render36.container;
|
|
302
|
+
var correctPath = correctContainer.querySelector('path').getAttribute('d');
|
|
303
|
+
var incorrectPath = incorrectContainer.querySelector('path').getAttribute('d');
|
|
304
|
+
var emptyPath = emptyContainer.querySelector('path').getAttribute('d');
|
|
305
|
+
expect(correctPath).not.toBe(incorrectPath);
|
|
306
|
+
expect(correctPath).not.toBe(emptyPath);
|
|
307
|
+
expect(incorrectPath).not.toBe(emptyPath);
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
describe('SVG attributes', function () {
|
|
311
|
+
it('all icons have fill="none" on svg element', function () {
|
|
312
|
+
var _render37 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
313
|
+
type: "correct"
|
|
314
|
+
})),
|
|
315
|
+
correctContainer = _render37.container;
|
|
316
|
+
var _render38 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
317
|
+
type: "incorrect"
|
|
318
|
+
})),
|
|
319
|
+
incorrectContainer = _render38.container;
|
|
320
|
+
var _render39 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
321
|
+
type: "empty"
|
|
322
|
+
})),
|
|
323
|
+
emptyContainer = _render39.container;
|
|
324
|
+
expect(correctContainer.querySelector('svg')).toHaveAttribute('fill', 'none');
|
|
325
|
+
expect(incorrectContainer.querySelector('svg')).toHaveAttribute('fill', 'none');
|
|
326
|
+
expect(emptyContainer.querySelector('svg')).toHaveAttribute('fill', 'none');
|
|
327
|
+
});
|
|
328
|
+
it('all icons have proper xmlns namespace', function () {
|
|
329
|
+
var _render40 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
330
|
+
type: "correct"
|
|
331
|
+
})),
|
|
332
|
+
correctContainer = _render40.container;
|
|
333
|
+
var _render41 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
334
|
+
type: "incorrect"
|
|
335
|
+
})),
|
|
336
|
+
incorrectContainer = _render41.container;
|
|
337
|
+
var _render42 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
338
|
+
type: "empty"
|
|
339
|
+
})),
|
|
340
|
+
emptyContainer = _render42.container;
|
|
341
|
+
var xmlns = 'http://www.w3.org/2000/svg';
|
|
342
|
+
expect(correctContainer.querySelector('svg')).toHaveAttribute('xmlns', xmlns);
|
|
343
|
+
expect(incorrectContainer.querySelector('svg')).toHaveAttribute('xmlns', xmlns);
|
|
344
|
+
expect(emptyContainer.querySelector('svg')).toHaveAttribute('xmlns', xmlns);
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
describe('accessibility', function () {
|
|
348
|
+
it('svg elements are properly structured for screen readers', function () {
|
|
349
|
+
var _render43 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
350
|
+
type: "correct"
|
|
351
|
+
})),
|
|
352
|
+
container = _render43.container;
|
|
353
|
+
var svg = container.querySelector('svg');
|
|
354
|
+
|
|
355
|
+
// SVG should be in DOM
|
|
356
|
+
expect(svg).toBeInTheDocument();
|
|
357
|
+
|
|
358
|
+
// Should have valid viewBox for proper scaling
|
|
359
|
+
expect(svg.getAttribute('viewBox')).toBeTruthy();
|
|
360
|
+
});
|
|
361
|
+
it('icons render as inline elements', function () {
|
|
362
|
+
var _render44 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labelSvgIcon["default"], {
|
|
363
|
+
type: "correct"
|
|
364
|
+
})),
|
|
365
|
+
container = _render44.container;
|
|
366
|
+
var svg = container.querySelector('svg');
|
|
367
|
+
|
|
368
|
+
// SVG should be direct child (inline)
|
|
369
|
+
expect(container.firstChild).toBe(svg);
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0VXRpbHMiLCJfbGFiZWxTdmdJY29uIiwiZGVzY3JpYmUiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9yZW5kZXIyIiwic3ZnIiwicXVlcnlTZWxlY3RvciIsInRvSGF2ZUF0dHJpYnV0ZSIsIl9yZW5kZXIzIiwiX3JlbmRlcjQiLCJfcmVuZGVyNSIsInRvQmVOdWxsIiwiX3JlbmRlcjYiLCJfcmVuZGVyNyIsIl9yZW5kZXI4IiwicGF0aCIsIl9yZW5kZXI5IiwiZEF0dHJpYnV0ZSIsImdldEF0dHJpYnV0ZSIsInRvQ29udGFpbiIsIl9yZW5kZXIwIiwiX3JlbmRlcjEiLCJfcmVuZGVyMTAiLCJfcmVuZGVyMTEiLCJfcmVuZGVyMTIiLCJfcmVuZGVyMTMiLCJfcmVuZGVyMTQiLCJfcmVuZGVyMTUiLCJfcmVuZGVyMTYiLCJfcmVuZGVyMTciLCJwYXRocyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJ0b0JlIiwiX3JlbmRlcjE4IiwiX3JlbmRlcjE5IiwiX3JlbmRlcjIwIiwiY29ycmVjdENvbnRhaW5lciIsIl9yZW5kZXIyMSIsImluY29ycmVjdENvbnRhaW5lciIsIl9yZW5kZXIyMiIsImVtcHR5Q29udGFpbmVyIiwiX3JlbmRlcjIzIiwiX3JlbmRlcjI0IiwiX3JlbmRlcjI1IiwidW5kZWZpbmVkIiwiX3JlbmRlcjI2IiwiX3JlbmRlcjI3IiwiX3JlbmRlcjI4IiwiX3JlbmRlcjI5IiwiY29ycmVjdFN2ZyIsImluY29ycmVjdFN2ZyIsIm5vdCIsIl9yZW5kZXIzMCIsIl9yZW5kZXIzMSIsImNvcnJlY3RQYXRoIiwiZW1wdHlQYXRoIiwiX3JlbmRlcjMyIiwiX3JlbmRlcjMzIiwiaW5jb3JyZWN0UGF0aCIsIl9yZW5kZXIzNCIsIl9yZW5kZXIzNSIsIl9yZW5kZXIzNiIsIl9yZW5kZXIzNyIsIl9yZW5kZXIzOCIsIl9yZW5kZXIzOSIsIl9yZW5kZXI0MCIsIl9yZW5kZXI0MSIsIl9yZW5kZXI0MiIsInhtbG5zIiwiX3JlbmRlcjQzIiwidG9CZVRydXRoeSIsIl9yZW5kZXI0NCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbGFiZWwtc3ZnLWljb24udGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuXG5pbXBvcnQgU3ZnSWNvbiBmcm9tICcuLi9sYWJlbC1zdmctaWNvbic7XG5cbmRlc2NyaWJlKCdTdmdJY29uJywgKCkgPT4ge1xuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcgd2l0aCBjb3JyZWN0IHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxTdmdJY29uIHR5cGU9XCJjb3JyZWN0XCIgLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdCBpY29uIHR5cGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxTdmdJY29uIHR5cGU9XCJjb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgICAgZXhwZWN0KHN2ZykudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnd2lkdGgnLCAnOCcpO1xuICAgICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCdoZWlnaHQnLCAnNicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgaW5jb3JyZWN0IGljb24gdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImluY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ3dpZHRoJywgJzcnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnaGVpZ2h0JywgJzcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGVtcHR5IGljb24gdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuICAgICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgICAgZXhwZWN0KHN2ZykudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnd2lkdGgnLCAnMTEnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgnaGVpZ2h0JywgJzEyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBudWxsIGZvciB1bmtub3duIGljb24gdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cInVua25vd25cIiAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBudWxsIGZvciBpbnZhbGlkIGljb24gdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImludmFsaWRcIiAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb3JyZWN0IGljb24nLCAoKSA9PiB7XG4gICAgaXQoJ2hhcyBjb3JyZWN0IHZpZXdCb3ggYXR0cmlidXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgndmlld0JveCcsICcwIDAgOCA2Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvcnJlY3QgZmlsbCBjb2xvciBmb3IgcGF0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCBwYXRoID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3BhdGgnKTtcbiAgICAgIGV4cGVjdChwYXRoKS50b0hhdmVBdHRyaWJ1dGUoJ2ZpbGwnLCAnIzBCN0QzOCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBjb3JyZWN0IHBhdGggZCBhdHRyaWJ1dGUgZm9yIGNoZWNrbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCBwYXRoID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3BhdGgnKTtcbiAgICAgIGV4cGVjdChwYXRoKS50b0hhdmVBdHRyaWJ1dGUoJ2QnKTtcbiAgICAgIGNvbnN0IGRBdHRyaWJ1dGUgPSBwYXRoLmdldEF0dHJpYnV0ZSgnZCcpO1xuICAgICAgZXhwZWN0KGRBdHRyaWJ1dGUpLnRvQ29udGFpbignTTYuNzk2ODgnKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgeG1sbnMgYXR0cmlidXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgneG1sbnMnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2luY29ycmVjdCBpY29uJywgKCkgPT4ge1xuICAgIGl0KCdoYXMgY29ycmVjdCB2aWV3Qm94IGF0dHJpYnV0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImluY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgndmlld0JveCcsICcwIDAgNyA3Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvcnJlY3QgZmlsbCBjb2xvciBmb3IgcGF0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImluY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHBhdGggPSBjb250YWluZXIucXVlcnlTZWxlY3RvcigncGF0aCcpO1xuICAgICAgZXhwZWN0KHBhdGgpLnRvSGF2ZUF0dHJpYnV0ZSgnZmlsbCcsICcjQkYwRDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvcnJlY3QgcGF0aCBkIGF0dHJpYnV0ZSBmb3IgWCBtYXJrJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiaW5jb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3QgcGF0aCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG4gICAgICBleHBlY3QocGF0aCkudG9IYXZlQXR0cmlidXRlKCdkJyk7XG4gICAgICBjb25zdCBkQXR0cmlidXRlID0gcGF0aC5nZXRBdHRyaWJ1dGUoJ2QnKTtcbiAgICAgIGV4cGVjdChkQXR0cmlidXRlKS50b0NvbnRhaW4oJ000LjIzNDM4Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIHhtbG5zIGF0dHJpYnV0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImluY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgIGV4cGVjdChzdmcpLnRvSGF2ZUF0dHJpYnV0ZSgneG1sbnMnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2VtcHR5IGljb24nLCAoKSA9PiB7XG4gICAgaXQoJ2hhcyBjb3JyZWN0IHZpZXdCb3ggYXR0cmlidXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiZW1wdHlcIiAvPik7XG4gICAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgICBleHBlY3Qoc3ZnKS50b0hhdmVBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDExIDEyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvcnJlY3QgZmlsbCBjb2xvciBmb3IgcGF0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuICAgICAgY29uc3QgcGF0aCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG4gICAgICBleHBlY3QocGF0aCkudG9IYXZlQXR0cmlidXRlKCdmaWxsJywgJyNCRjBEMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgY29ycmVjdCBwYXRoIGQgYXR0cmlidXRlIGZvciBlbXB0eSBmcmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuICAgICAgY29uc3QgcGF0aCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG4gICAgICBleHBlY3QocGF0aCkudG9IYXZlQXR0cmlidXRlKCdkJyk7XG4gICAgICBjb25zdCBkQXR0cmlidXRlID0gcGF0aC5nZXRBdHRyaWJ1dGUoJ2QnKTtcbiAgICAgIGV4cGVjdChkQXR0cmlidXRlKS50b0NvbnRhaW4oJ00wLjI1Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIHhtbG5zIGF0dHJpYnV0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuICAgICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgICAgZXhwZWN0KHN2ZykudG9IYXZlQXR0cmlidXRlKCd4bWxucycsICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaWNvbiBzdHJ1Y3R1cmUnLCAoKSA9PiB7XG4gICAgaXQoJ2NvcnJlY3QgaWNvbiBoYXMgb25lIHBhdGggZWxlbWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCBwYXRocyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdwYXRoJyk7XG4gICAgICBleHBlY3QocGF0aHMubGVuZ3RoKS50b0JlKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2luY29ycmVjdCBpY29uIGhhcyBvbmUgcGF0aCBlbGVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiaW5jb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3QgcGF0aHMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgncGF0aCcpO1xuICAgICAgZXhwZWN0KHBhdGhzLmxlbmd0aCkudG9CZSgxKTtcbiAgICB9KTtcblxuICAgIGl0KCdlbXB0eSBpY29uIGhhcyBvbmUgcGF0aCBlbGVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiZW1wdHlcIiAvPik7XG4gICAgICBjb25zdCBwYXRocyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdwYXRoJyk7XG4gICAgICBleHBlY3QocGF0aHMubGVuZ3RoKS50b0JlKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VhY2ggaWNvbiByZW5kZXJzIG9ubHkgb25lIHN2ZyBlbGVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBpbmNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiaW5jb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGVtcHR5Q29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuXG4gICAgICBleHBlY3QoY29ycmVjdENvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdzdmcnKS5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICBleHBlY3QoaW5jb3JyZWN0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3N2ZycpLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChlbXB0eUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdzdmcnKS5sZW5ndGgpLnRvQmUoMSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlZGdlIGNhc2VzJywgKCkgPT4ge1xuICAgIGl0KCdoYW5kbGVzIGVtcHR5IHN0cmluZyB0eXBlIGdyYWNlZnVsbHknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxTdmdJY29uIHR5cGU9XCJcIiAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBudWxsIHR5cGUgZ3JhY2VmdWxseScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT17bnVsbH0gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgdW5kZWZpbmVkIHR5cGUgZ3JhY2VmdWxseScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT17dW5kZWZpbmVkfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBudW1lcmljIHR5cGUgZ3JhY2VmdWxseScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT17MTIzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBvYmplY3QgdHlwZSBncmFjZWZ1bGx5JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPXt7fX0gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaWNvbiBkaWZmZXJlbnRpYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2NvcnJlY3QgYW5kIGluY29ycmVjdCBpY29ucyBoYXZlIGRpZmZlcmVudCBkaW1lbnNpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBpbmNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiaW5jb3JyZWN0XCIgLz4pO1xuXG4gICAgICBjb25zdCBjb3JyZWN0U3ZnID0gY29ycmVjdENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICAgIGNvbnN0IGluY29ycmVjdFN2ZyA9IGluY29ycmVjdENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblxuICAgICAgZXhwZWN0KGNvcnJlY3RTdmcuZ2V0QXR0cmlidXRlKCd3aWR0aCcpKS5ub3QudG9CZShpbmNvcnJlY3RTdmcuZ2V0QXR0cmlidXRlKCd3aWR0aCcpKTtcbiAgICB9KTtcblxuICAgIGl0KCdjb3JyZWN0IGFuZCBlbXB0eSBpY29ucyBoYXZlIGRpZmZlcmVudCBmaWxsIGNvbG9ycycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBjb3JyZWN0Q29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lcjogZW1wdHlDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiZW1wdHlcIiAvPik7XG5cbiAgICAgIGNvbnN0IGNvcnJlY3RQYXRoID0gY29ycmVjdENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG4gICAgICBjb25zdCBlbXB0eVBhdGggPSBlbXB0eUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJyk7XG5cbiAgICAgIGV4cGVjdChjb3JyZWN0UGF0aC5nZXRBdHRyaWJ1dGUoJ2ZpbGwnKSkubm90LnRvQmUoZW1wdHlQYXRoLmdldEF0dHJpYnV0ZSgnZmlsbCcpKTtcbiAgICB9KTtcblxuICAgIGl0KCdpbmNvcnJlY3QgYW5kIGVtcHR5IGljb25zIGhhdmUgc2FtZSBmaWxsIGNvbG9yJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGluY29ycmVjdENvbnRhaW5lciB9ID0gcmVuZGVyKDxTdmdJY29uIHR5cGU9XCJpbmNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lcjogZW1wdHlDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiZW1wdHlcIiAvPik7XG5cbiAgICAgIGNvbnN0IGluY29ycmVjdFBhdGggPSBpbmNvcnJlY3RDb250YWluZXIucXVlcnlTZWxlY3RvcigncGF0aCcpO1xuICAgICAgY29uc3QgZW1wdHlQYXRoID0gZW1wdHlDb250YWluZXIucXVlcnlTZWxlY3RvcigncGF0aCcpO1xuXG4gICAgICBleHBlY3QoaW5jb3JyZWN0UGF0aC5nZXRBdHRyaWJ1dGUoJ2ZpbGwnKSkudG9CZShlbXB0eVBhdGguZ2V0QXR0cmlidXRlKCdmaWxsJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VhY2ggaWNvbiB0eXBlIGhhcyB1bmlxdWUgcGF0aCBkYXRhJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBpbmNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiaW5jb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGVtcHR5Q29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuXG4gICAgICBjb25zdCBjb3JyZWN0UGF0aCA9IGNvcnJlY3RDb250YWluZXIucXVlcnlTZWxlY3RvcigncGF0aCcpLmdldEF0dHJpYnV0ZSgnZCcpO1xuICAgICAgY29uc3QgaW5jb3JyZWN0UGF0aCA9IGluY29ycmVjdENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJykuZ2V0QXR0cmlidXRlKCdkJyk7XG4gICAgICBjb25zdCBlbXB0eVBhdGggPSBlbXB0eUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwYXRoJykuZ2V0QXR0cmlidXRlKCdkJyk7XG5cbiAgICAgIGV4cGVjdChjb3JyZWN0UGF0aCkubm90LnRvQmUoaW5jb3JyZWN0UGF0aCk7XG4gICAgICBleHBlY3QoY29ycmVjdFBhdGgpLm5vdC50b0JlKGVtcHR5UGF0aCk7XG4gICAgICBleHBlY3QoaW5jb3JyZWN0UGF0aCkubm90LnRvQmUoZW1wdHlQYXRoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1NWRyBhdHRyaWJ1dGVzJywgKCkgPT4ge1xuICAgIGl0KCdhbGwgaWNvbnMgaGF2ZSBmaWxsPVwibm9uZVwiIG9uIHN2ZyBlbGVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBpbmNvcnJlY3RDb250YWluZXIgfSA9IHJlbmRlcig8U3ZnSWNvbiB0eXBlPVwiaW5jb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3QgeyBjb250YWluZXI6IGVtcHR5Q29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImVtcHR5XCIgLz4pO1xuXG4gICAgICBleHBlY3QoY29ycmVjdENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKSkudG9IYXZlQXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICAgIGV4cGVjdChpbmNvcnJlY3RDb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvSGF2ZUF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG4gICAgICBleHBlY3QoZW1wdHlDb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvSGF2ZUF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWxsIGljb25zIGhhdmUgcHJvcGVyIHhtbG5zIG5hbWVzcGFjZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBjb3JyZWN0Q29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lcjogaW5jb3JyZWN0Q29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImluY29ycmVjdFwiIC8+KTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBlbXB0eUNvbnRhaW5lciB9ID0gcmVuZGVyKDxTdmdJY29uIHR5cGU9XCJlbXB0eVwiIC8+KTtcblxuICAgICAgY29uc3QgeG1sbnMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuICAgICAgZXhwZWN0KGNvcnJlY3RDb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJykpLnRvSGF2ZUF0dHJpYnV0ZSgneG1sbnMnLCB4bWxucyk7XG4gICAgICBleHBlY3QoaW5jb3JyZWN0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpKS50b0hhdmVBdHRyaWJ1dGUoJ3htbG5zJywgeG1sbnMpO1xuICAgICAgZXhwZWN0KGVtcHR5Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpKS50b0hhdmVBdHRyaWJ1dGUoJ3htbG5zJywgeG1sbnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWNjZXNzaWJpbGl0eScsICgpID0+IHtcbiAgICBpdCgnc3ZnIGVsZW1lbnRzIGFyZSBwcm9wZXJseSBzdHJ1Y3R1cmVkIGZvciBzY3JlZW4gcmVhZGVycycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFN2Z0ljb24gdHlwZT1cImNvcnJlY3RcIiAvPik7XG4gICAgICBjb25zdCBzdmcgPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cbiAgICAgIC8vIFNWRyBzaG91bGQgYmUgaW4gRE9NXG4gICAgICBleHBlY3Qoc3ZnKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSB2YWxpZCB2aWV3Qm94IGZvciBwcm9wZXIgc2NhbGluZ1xuICAgICAgZXhwZWN0KHN2Zy5nZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnKSkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ljb25zIHJlbmRlciBhcyBpbmxpbmUgZWxlbWVudHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxTdmdJY29uIHR5cGU9XCJjb3JyZWN0XCIgLz4pO1xuICAgICAgY29uc3Qgc3ZnID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuXG4gICAgICAvLyBTVkcgc2hvdWxkIGJlIGRpcmVjdCBjaGlsZCAoaW5saW5lKVxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlKHN2Zyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBRyxRQUFRLENBQUMsU0FB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
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _labels = _interopRequireWildcard(require("../labels"));
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
10
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
+
describe('Labels', function () {
|
|
13
|
+
var onChange = jest.fn();
|
|
14
|
+
var renderComponent = function renderComponent(extras) {
|
|
15
|
+
var defaults = {
|
|
16
|
+
classes: {},
|
|
17
|
+
className: 'className',
|
|
18
|
+
onChange: onChange,
|
|
19
|
+
graphProps: {
|
|
20
|
+
size: {
|
|
21
|
+
width: 400,
|
|
22
|
+
height: 400
|
|
23
|
+
},
|
|
24
|
+
domain: {
|
|
25
|
+
min: 0,
|
|
26
|
+
max: 10,
|
|
27
|
+
step: 1,
|
|
28
|
+
padding: 0
|
|
29
|
+
},
|
|
30
|
+
range: {
|
|
31
|
+
min: 0,
|
|
32
|
+
max: 10,
|
|
33
|
+
step: 1,
|
|
34
|
+
padding: 0
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
39
|
+
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_labels["default"], props));
|
|
40
|
+
};
|
|
41
|
+
describe('rendering', function () {
|
|
42
|
+
it('renders without crashing', function () {
|
|
43
|
+
var _renderComponent = renderComponent(),
|
|
44
|
+
container = _renderComponent.container;
|
|
45
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('getTransform', function () {
|
|
50
|
+
var assertTransform = function assertTransform(side, expected) {
|
|
51
|
+
it("returns ".concat(expected, " for ").concat(side), function () {
|
|
52
|
+
var r = (0, _labels.getTransform)('left', 100, 100);
|
|
53
|
+
expect(r).toEqual('translate(-20, 50), rotate(-90)');
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
assertTransform('left', 'translate(-20, 50), rotate(-90)');
|
|
57
|
+
assertTransform('right', 'translate(130, 50), rotate(90)');
|
|
58
|
+
assertTransform('top', 'translate(50, -20), rotate(0)');
|
|
59
|
+
assertTransform('bottom', 'translate(50, 130), rotate(0)');
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbGFiZWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVzY3JpYmUiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsInJlbmRlckNvbXBvbmVudCIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImdyYXBoUHJvcHMiLCJzaXplIiwid2lkdGgiLCJoZWlnaHQiLCJkb21haW4iLCJtaW4iLCJtYXgiLCJzdGVwIiwicGFkZGluZyIsInJhbmdlIiwicHJvcHMiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiaXQiLCJfcmVuZGVyQ29tcG9uZW50IiwiY29udGFpbmVyIiwiZXhwZWN0IiwiZmlyc3RDaGlsZCIsInRvQmVJblRoZURvY3VtZW50IiwiYXNzZXJ0VHJhbnNmb3JtIiwic2lkZSIsImV4cGVjdGVkIiwiY29uY2F0IiwiZ2V0VHJhbnNmb3JtIiwidG9FcXVhbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbGFiZWxzLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IExhYmVscywgeyBnZXRUcmFuc2Zvcm0gfSBmcm9tICcuLi9sYWJlbHMnO1xuXG5kZXNjcmliZSgnTGFiZWxzJywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgZ3JhcGhQcm9wczoge1xuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgd2lkdGg6IDQwMCxcbiAgICAgICAgICBoZWlnaHQ6IDQwMCxcbiAgICAgICAgfSxcbiAgICAgICAgZG9tYWluOiB7XG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogMTAsXG4gICAgICAgICAgc3RlcDogMSxcbiAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICB9LFxuICAgICAgICByYW5nZToge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IDEwLFxuICAgICAgICAgIHN0ZXA6IDEsXG4gICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoPExhYmVscyB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCgpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZ2V0VHJhbnNmb3JtJywgKCkgPT4ge1xuICBjb25zdCBhc3NlcnRUcmFuc2Zvcm0gPSAoc2lkZSwgZXhwZWN0ZWQpID0+IHtcbiAgICBpdChgcmV0dXJucyAke2V4cGVjdGVkfSBmb3IgJHtzaWRlfWAsICgpID0+IHtcbiAgICAgIGNvbnN0IHIgPSBnZXRUcmFuc2Zvcm0oJ2xlZnQnLCAxMDAsIDEwMCk7XG4gICAgICBleHBlY3QocikudG9FcXVhbCgndHJhbnNsYXRlKC0yMCwgNTApLCByb3RhdGUoLTkwKScpO1xuICAgIH0pO1xuICB9O1xuXG4gIGFzc2VydFRyYW5zZm9ybSgnbGVmdCcsICd0cmFuc2xhdGUoLTIwLCA1MCksIHJvdGF0ZSgtOTApJyk7XG4gIGFzc2VydFRyYW5zZm9ybSgncmlnaHQnLCAndHJhbnNsYXRlKDEzMCwgNTApLCByb3RhdGUoOTApJyk7XG4gIGFzc2VydFRyYW5zZm9ybSgndG9wJywgJ3RyYW5zbGF0ZSg1MCwgLTIwKSwgcm90YXRlKDApJyk7XG4gIGFzc2VydFRyYW5zZm9ybSgnYm90dG9tJywgJ3RyYW5zbGF0ZSg1MCwgMTMwKSwgcm90YXRlKDApJyk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxPQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBaUQsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFILHVCQUFBLFlBQUFBLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFN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QUNOQyxHQUFHLEVBQUUsRUFBRTtVQUNQQyxJQUFJLEVBQUUsQ0FBQztVQUNQQyxPQUFPLEVBQUU7UUFDWCxDQUFDO1FBQ0RDLEtBQUssRUFBRTtVQUNMSixHQUFHLEVBQUUsQ0FBQztVQUNOQyxHQUFHLEVBQUUsRUFBRTtVQUNQQyxJQUFJLEVBQUUsQ0FBQztVQUNQQyxPQUFPLEVBQUU7UUFDWDtNQUNGO0lBQ0YsQ0FBQztJQUNELElBQU1FLEtBQUssR0FBQTFCLGFBQUEsQ0FBQUEsYUFBQSxLQUFRYSxRQUFRLEdBQUtELE1BQU0sQ0FBRTtJQUN4QyxPQUFPLElBQUFlLGlCQUFNLGVBQUMxRCxNQUFBLFlBQUEyRCxhQUFBLENBQUN6RCxPQUFBLFdBQU0sRUFBS3VELEtBQVEsQ0FBQyxDQUFDO0VBQ3RDLENBQUM7RUFDRG5CLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBTTtJQUMxQnNCLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO01BQ25DLElBQUFDLGdCQUFBLEdBQXNCbkIsZUFBZSxDQUFDLENBQUM7UUFBL0JvQixTQUFTLEdBQUFELGdCQUFBLENBQVRDLFNBQVM7TUFDakJDLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjNCLFFBQVEsQ0FBQyxjQUFjLEVBQUUsWUFBTTtFQUM3QixJQUFNNEIsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJQyxJQUFJLEVBQUVDLFFBQVEsRUFBSztJQUMxQ1IsRUFBRSxZQUFBUyxNQUFBLENBQVlELFFBQVEsV0FBQUMsTUFBQSxDQUFRRixJQUFJLEdBQUksWUFBTTtNQUMxQyxJQUFNNUQsQ0FBQyxHQUFHLElBQUErRCxvQkFBWSxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO01BQ3hDUCxNQUFNLENBQUN4RCxDQUFDLENBQUMsQ0FBQ2dFLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQztJQUN0RCxDQUFDLENBQUM7RUFDSixDQUFDO0VBRURMLGVBQWUsQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLENBQUM7RUFDMURBLGVBQWUsQ0FBQyxPQUFPLEVBQUUsZ0NBQWdDLENBQUM7RUFDMURBLGVBQWUsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLENBQUM7RUFDdkRBLGVBQWUsQ0FBQyxRQUFRLEVBQUUsK0JBQStCLENBQUM7QUFDNUQsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|