@pie-lib/charting 5.15.7 → 5.17.0-beta.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.
Files changed (132) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/__tests__/axes.test.js +181 -0
  4. package/lib/__tests__/chart-setup.test.js +58 -0
  5. package/lib/__tests__/chart-type.test.js +42 -0
  6. package/lib/__tests__/chart.test.js +108 -0
  7. package/lib/__tests__/grid.test.js +48 -0
  8. package/lib/__tests__/mark-label.test.js +57 -0
  9. package/lib/__tests__/utils.js +56 -0
  10. package/lib/__tests__/utils.test.js +197 -0
  11. package/lib/axes.js +75 -30
  12. package/lib/bars/__tests__/bar.test.js +62 -0
  13. package/lib/bars/__tests__/histogram.test.js +64 -0
  14. package/lib/bars/__tests__/utils.js +56 -0
  15. package/lib/bars/bar.js +1 -1
  16. package/lib/bars/common/__tests__/bars.test.js +100 -0
  17. package/lib/bars/common/__tests__/utils.js +56 -0
  18. package/lib/bars/common/bars.js +36 -2
  19. package/lib/bars/histogram.js +1 -1
  20. package/lib/chart-setup.js +1 -1
  21. package/lib/chart-type.js +5 -5
  22. package/lib/chart-types.js +3 -3
  23. package/lib/chart.js +26 -11
  24. package/lib/common/__tests__/drag-handle.test.js +134 -0
  25. package/lib/common/__tests__/utils.js +56 -0
  26. package/lib/common/drag-handle.js +12 -6
  27. package/lib/common/drag-icon.js +8 -25
  28. package/lib/common/styles.js +1 -1
  29. package/lib/grid.js +1 -1
  30. package/lib/index.js +1 -1
  31. package/lib/line/__tests__/line-cross.test.js +64 -0
  32. package/lib/line/__tests__/line-dot.test.js +64 -0
  33. package/lib/line/__tests__/utils.js +56 -0
  34. package/lib/line/common/__tests__/drag-handle.test.js +134 -0
  35. package/lib/line/common/__tests__/line.test.js +128 -0
  36. package/lib/line/common/__tests__/utils.js +56 -0
  37. package/lib/line/common/drag-handle.js +10 -5
  38. package/lib/line/common/line.js +1 -1
  39. package/lib/line/line-cross.js +17 -6
  40. package/lib/line/line-dot.js +11 -3
  41. package/lib/mark-label.js +21 -12
  42. package/lib/plot/__tests__/dot.test.js +64 -0
  43. package/lib/plot/__tests__/line.test.js +64 -0
  44. package/lib/plot/__tests__/utils.js +56 -0
  45. package/lib/plot/common/__tests__/plot.test.js +103 -0
  46. package/lib/plot/common/__tests__/utils.js +56 -0
  47. package/lib/plot/common/plot.js +4 -2
  48. package/lib/plot/dot.js +2 -2
  49. package/lib/plot/line.js +2 -2
  50. package/lib/tool-menu.js +1 -5
  51. package/lib/utils.js +1 -1
  52. package/package.json +4 -4
  53. package/src/__tests__/__snapshots__/axes.test.jsx.snap +564 -0
  54. package/src/__tests__/__snapshots__/chart-type.test.jsx.snap +14 -0
  55. package/src/__tests__/__snapshots__/chart.test.jsx.snap +610 -0
  56. package/src/__tests__/__snapshots__/grid.test.jsx.snap +28 -0
  57. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +67 -0
  58. package/src/__tests__/axes.test.jsx +146 -0
  59. package/src/__tests__/chart-setup.test.jsx +47 -0
  60. package/src/__tests__/chart-type.test.jsx +29 -0
  61. package/src/__tests__/chart.test.jsx +87 -0
  62. package/src/__tests__/grid.test.jsx +25 -0
  63. package/src/__tests__/mark-label.test.jsx +31 -0
  64. package/src/__tests__/utils.js +30 -0
  65. package/src/__tests__/utils.test.js +100 -0
  66. package/src/axes.jsx +59 -23
  67. package/src/bars/__tests__/__snapshots__/bar.test.jsx.snap +43 -0
  68. package/src/bars/__tests__/__snapshots__/histogram.test.jsx.snap +45 -0
  69. package/src/bars/__tests__/bar.test.jsx +37 -0
  70. package/src/bars/__tests__/histogram.test.jsx +38 -0
  71. package/src/bars/__tests__/utils.js +30 -0
  72. package/src/bars/common/__tests__/__snapshots__/bars.test.jsx.snap +110 -0
  73. package/src/bars/common/__tests__/bars.test.jsx +69 -0
  74. package/src/bars/common/__tests__/utils.js +30 -0
  75. package/src/bars/common/bars.jsx +37 -1
  76. package/src/chart-type.js +7 -3
  77. package/src/chart-types.js +2 -2
  78. package/src/chart.jsx +15 -5
  79. package/src/common/__tests__/__snapshots__/drag-handle.test.jsx.snap +45 -0
  80. package/src/common/__tests__/drag-handle.test.jsx +88 -0
  81. package/src/common/__tests__/utils.js +30 -0
  82. package/src/common/drag-handle.jsx +18 -10
  83. package/src/common/drag-icon.jsx +6 -21
  84. package/src/line/__tests__/__snapshots__/line-cross.test.jsx.snap +45 -0
  85. package/src/line/__tests__/__snapshots__/line-dot.test.jsx.snap +45 -0
  86. package/src/line/__tests__/line-cross.test.jsx +38 -0
  87. package/src/line/__tests__/line-dot.test.jsx +38 -0
  88. package/src/line/__tests__/utils.js +30 -0
  89. package/src/line/common/__tests__/__snapshots__/drag-handle.test.jsx.snap +44 -0
  90. package/src/line/common/__tests__/__snapshots__/line.test.jsx.snap +141 -0
  91. package/src/line/common/__tests__/drag-handle.test.jsx +88 -0
  92. package/src/line/common/__tests__/line.test.jsx +82 -0
  93. package/src/line/common/__tests__/utils.js +30 -0
  94. package/src/line/common/drag-handle.jsx +9 -4
  95. package/src/line/line-cross.js +4 -1
  96. package/src/line/line-dot.js +17 -7
  97. package/src/mark-label.jsx +19 -7
  98. package/src/plot/__tests__/__snapshots__/dot.test.jsx.snap +45 -0
  99. package/src/plot/__tests__/__snapshots__/line.test.jsx.snap +45 -0
  100. package/src/plot/__tests__/dot.test.jsx +38 -0
  101. package/src/plot/__tests__/line.test.jsx +38 -0
  102. package/src/plot/__tests__/utils.js +30 -0
  103. package/src/plot/common/__tests__/__snapshots__/plot.test.jsx.snap +96 -0
  104. package/src/plot/common/__tests__/plot.test.jsx +70 -0
  105. package/src/plot/common/__tests__/utils.js +30 -0
  106. package/src/plot/common/plot.jsx +6 -1
  107. package/src/plot/dot.js +1 -1
  108. package/src/plot/line.js +1 -1
  109. package/src/tool-menu.jsx +0 -4
  110. package/lib/axes.js.map +0 -1
  111. package/lib/bars/bar.js.map +0 -1
  112. package/lib/bars/common/bars.js.map +0 -1
  113. package/lib/bars/histogram.js.map +0 -1
  114. package/lib/chart-setup.js.map +0 -1
  115. package/lib/chart-type.js.map +0 -1
  116. package/lib/chart-types.js.map +0 -1
  117. package/lib/chart.js.map +0 -1
  118. package/lib/common/drag-handle.js.map +0 -1
  119. package/lib/common/drag-icon.js.map +0 -1
  120. package/lib/common/styles.js.map +0 -1
  121. package/lib/grid.js.map +0 -1
  122. package/lib/index.js.map +0 -1
  123. package/lib/line/common/drag-handle.js.map +0 -1
  124. package/lib/line/common/line.js.map +0 -1
  125. package/lib/line/line-cross.js.map +0 -1
  126. package/lib/line/line-dot.js.map +0 -1
  127. package/lib/mark-label.js.map +0 -1
  128. package/lib/plot/common/plot.js.map +0 -1
  129. package/lib/plot/dot.js.map +0 -1
  130. package/lib/plot/line.js.map +0 -1
  131. package/lib/tool-menu.js.map +0 -1
  132. package/lib/utils.js.map +0 -1
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
+ var utils = _interopRequireWildcard(require("../utils"));
6
+
7
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
8
+
9
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
+
11
+ var xy = function xy(x, y) {
12
+ return {
13
+ x: x,
14
+ y: y
15
+ };
16
+ };
17
+
18
+ describe('utils', function () {
19
+ describe('getTickValues', function () {
20
+ var assertGetTickValues = function assertGetTickValues(range, points) {
21
+ it("converts ".concat(range, " -> ").concat(points), function () {
22
+ var result = utils.getTickValues(range);
23
+ expect(result).toEqual(points);
24
+ });
25
+ };
26
+
27
+ assertGetTickValues({
28
+ min: 0,
29
+ max: 5,
30
+ step: 1
31
+ }, [0, 1, 2, 3, 4, 5]);
32
+ assertGetTickValues({
33
+ min: 0,
34
+ max: 5,
35
+ step: 0.5
36
+ }, [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]);
37
+ assertGetTickValues({
38
+ min: 0.4,
39
+ max: 2,
40
+ step: 0.3
41
+ }, [0.4, 0.7, 1, 1.3, 1.6, 1.9]);
42
+ });
43
+ describe('getDomainAndRangeByChartType', function () {
44
+ var assertGetDomainAndRangeByChartType = function assertGetDomainAndRangeByChartType(domain, range, chartType, correctValues) {
45
+ it('returns correct values for domain and range', function () {
46
+ var result = utils.getDomainAndRangeByChartType(domain, range, chartType);
47
+ expect(result).toEqual(correctValues);
48
+ });
49
+ };
50
+
51
+ assertGetDomainAndRangeByChartType({
52
+ min: -1,
53
+ max: 4
54
+ }, {
55
+ min: 1,
56
+ max: 2,
57
+ step: 1
58
+ }, 'line', {
59
+ domain: {
60
+ min: 0,
61
+ max: 1,
62
+ step: 1,
63
+ labelStep: 1
64
+ },
65
+ range: {
66
+ min: 1,
67
+ max: 2,
68
+ step: 1,
69
+ labelStep: 1
70
+ }
71
+ });
72
+ assertGetDomainAndRangeByChartType({
73
+ min: -1,
74
+ max: 4
75
+ }, {
76
+ min: 0.1,
77
+ max: 2,
78
+ labelStep: 0.1
79
+ }, 'line', {
80
+ domain: {
81
+ min: 0,
82
+ max: 1,
83
+ step: 1,
84
+ labelStep: 1
85
+ },
86
+ range: {
87
+ min: 0.1,
88
+ max: 2,
89
+ step: 0.1,
90
+ labelStep: 0.1
91
+ }
92
+ });
93
+ assertGetDomainAndRangeByChartType({
94
+ min: -1,
95
+ max: 4
96
+ }, {
97
+ min: 0.2,
98
+ max: 2.4,
99
+ step: 0.1
100
+ }, 'dotPlot', {
101
+ domain: {
102
+ min: 0,
103
+ max: 1,
104
+ step: 1,
105
+ labelStep: 1
106
+ },
107
+ range: {
108
+ min: 0,
109
+ max: 2,
110
+ step: 1,
111
+ labelStep: 0.1
112
+ }
113
+ });
114
+ });
115
+ describe('getGridLinesAndAxisByChartType', function () {
116
+ var assertGetGridLinesAndAxisByChartType = function assertGetGridLinesAndAxisByChartType(range, chartType, gridLines) {
117
+ it('returns proper grid values', function () {
118
+ var result = utils.getGridLinesAndAxisByChartType(range, chartType);
119
+ expect(result).toEqual(gridLines);
120
+ });
121
+ };
122
+
123
+ assertGetGridLinesAndAxisByChartType({
124
+ min: 0,
125
+ max: 1,
126
+ step: 1
127
+ }, 'lineDot', {
128
+ verticalLines: undefined,
129
+ horizontalLines: [0, 1],
130
+ leftAxis: true
131
+ });
132
+ assertGetGridLinesAndAxisByChartType({
133
+ min: 0,
134
+ max: 1,
135
+ step: 1
136
+ }, 'lineCross', {
137
+ verticalLines: undefined,
138
+ horizontalLines: [0, 1],
139
+ leftAxis: true
140
+ });
141
+ assertGetGridLinesAndAxisByChartType({
142
+ min: 0,
143
+ max: 1,
144
+ step: 1
145
+ }, 'bar', {
146
+ verticalLines: [],
147
+ horizontalLines: [0, 1],
148
+ leftAxis: true
149
+ });
150
+ assertGetGridLinesAndAxisByChartType({
151
+ min: 0,
152
+ max: 1,
153
+ step: 1
154
+ }, 'dotPlot', {
155
+ verticalLines: [],
156
+ horizontalLines: [],
157
+ leftAxis: false
158
+ });
159
+ });
160
+ describe('getTopPadding', function () {
161
+ var assertGetTopPadding = function assertGetTopPadding(barWidth, topPadding) {
162
+ it('returns proper top padding', function () {
163
+ var result = utils.getTopPadding(barWidth);
164
+ expect(result).toEqual(topPadding);
165
+ });
166
+ };
167
+
168
+ assertGetTopPadding(20, 50);
169
+ assertGetTopPadding(35, 30);
170
+ assertGetTopPadding(55, 15);
171
+ assertGetTopPadding(65, 0);
172
+ });
173
+ describe('getRotateAngle', function () {
174
+ var assertGetRotateAngle = function assertGetRotateAngle(_ref, rotateAngle) {
175
+ var fontSize = _ref.fontSize,
176
+ height = _ref.height;
177
+ it('returns proper rotate angle', function () {
178
+ var result = utils.getRotateAngle(fontSize, height);
179
+ expect(result).toEqual(rotateAngle);
180
+ });
181
+ };
182
+
183
+ assertGetRotateAngle({
184
+ fontSize: 14,
185
+ height: 14
186
+ }, 0);
187
+ assertGetRotateAngle({
188
+ fontSize: 14,
189
+ height: 28
190
+ }, 25);
191
+ assertGetRotateAngle({
192
+ fontSize: 14,
193
+ height: 42
194
+ }, 25);
195
+ });
196
+ });
197
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMudGVzdC5qcyJdLCJuYW1lcyI6WyJ4eSIsIngiLCJ5IiwiZGVzY3JpYmUiLCJhc3NlcnRHZXRUaWNrVmFsdWVzIiwicmFuZ2UiLCJwb2ludHMiLCJpdCIsInJlc3VsdCIsInV0aWxzIiwiZ2V0VGlja1ZhbHVlcyIsImV4cGVjdCIsInRvRXF1YWwiLCJtaW4iLCJtYXgiLCJzdGVwIiwiYXNzZXJ0R2V0RG9tYWluQW5kUmFuZ2VCeUNoYXJ0VHlwZSIsImRvbWFpbiIsImNoYXJ0VHlwZSIsImNvcnJlY3RWYWx1ZXMiLCJnZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlIiwibGFiZWxTdGVwIiwiYXNzZXJ0R2V0R3JpZExpbmVzQW5kQXhpc0J5Q2hhcnRUeXBlIiwiZ3JpZExpbmVzIiwiZ2V0R3JpZExpbmVzQW5kQXhpc0J5Q2hhcnRUeXBlIiwidmVydGljYWxMaW5lcyIsInVuZGVmaW5lZCIsImhvcml6b250YWxMaW5lcyIsImxlZnRBeGlzIiwiYXNzZXJ0R2V0VG9wUGFkZGluZyIsImJhcldpZHRoIiwidG9wUGFkZGluZyIsImdldFRvcFBhZGRpbmciLCJhc3NlcnRHZXRSb3RhdGVBbmdsZSIsInJvdGF0ZUFuZ2xlIiwiZm9udFNpemUiLCJoZWlnaHQiLCJnZXRSb3RhdGVBbmdsZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSxFQUFFLEdBQUcsU0FBTEEsRUFBSyxDQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxTQUFXO0FBQUVELElBQUFBLENBQUMsRUFBREEsQ0FBRjtBQUFLQyxJQUFBQSxDQUFDLEVBQURBO0FBQUwsR0FBWDtBQUFBLENBQVg7O0FBRUFDLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTTtBQUN0QkEsRUFBQUEsUUFBUSxDQUFDLGVBQUQsRUFBa0IsWUFBTTtBQUM5QixRQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQUNDLEtBQUQsRUFBUUMsTUFBUixFQUFt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QWNBMUIsRUFBQUEsUUFBUSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDL0IsUUFBTThCLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBdUIsT0FBdUJDLFdBQXZCLEVBQXVDO0FBQUEsVUFBcENDLFFBQW9DLFFBQXBDQSxRQUFvQztBQUFBLFVBQTFCQyxNQUEwQixRQUExQkEsTUFBMEI7QUFDbEU3QixNQUFBQSxFQUFFLENBQUMsNkJBQUQsRUFBZ0MsWUFBTTtBQUN0QyxZQUFNQyxNQUFNLEdBQUdDLEtBQUssQ0FBQzRCLGNBQU4sQ0FBcUJGLFFBQXJCLEVBQStCQyxNQUEvQixDQUFmO0FBQ0F6QixRQUFBQSxNQUFNLENBQUNILE1BQUQsQ0FBTixDQUFlSSxPQUFmLENBQXVCc0IsV0FBdkI7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxEOztBQU9BRCxJQUFBQSxvQkFBb0IsQ0FBQztBQUFFRSxNQUFBQSxRQUFRLEVBQUUsRUFBWjtBQUFnQkMsTUFBQUEsTUFBTSxFQUFFO0FBQXhCLEtBQUQsRUFBK0IsQ0FBL0IsQ0FBcEI7QUFDQUgsSUFBQUEsb0JBQW9CLENBQUM7QUFBRUUsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLE1BQU0sRUFBRTtBQUF4QixLQUFELEVBQStCLEVBQS9CLENBQXBCO0FBQ0FILElBQUFBLG9CQUFvQixDQUFDO0FBQUVFLE1BQUFBLFFBQVEsRUFBRSxFQUFaO0FBQWdCQyxNQUFBQSxNQUFNLEVBQUU7QUFBeEIsS0FBRCxFQUErQixFQUEvQixDQUFwQjtBQUNELEdBWE8sQ0FBUjtBQVlELENBL0ZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbmRlc2NyaWJlKCd1dGlscycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2dldFRpY2tWYWx1ZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0R2V0VGlja1ZhbHVlcyA9IChyYW5nZSwgcG9pbnRzKSA9PiB7XG4gICAgICBpdChgY29udmVydHMgJHtyYW5nZX0gLT4gJHtwb2ludHN9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5nZXRUaWNrVmFsdWVzKHJhbmdlKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChwb2ludHMpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAsIG1heDogNSwgc3RlcDogMSB9LCBbMCwgMSwgMiwgMywgNCwgNV0pO1xuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAsIG1heDogNSwgc3RlcDogMC41IH0sIFswLCAwLjUsIDEsIDEuNSwgMiwgMi41LCAzLCAzLjUsIDQsIDQuNSwgNV0pO1xuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAuNCwgbWF4OiAyLCBzdGVwOiAwLjMgfSwgWzAuNCwgMC43LCAxLCAxLjMsIDEuNiwgMS45XSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEdldERvbWFpbkFuZFJhbmdlQnlDaGFydFR5cGUgPSAoZG9tYWluLCByYW5nZSwgY2hhcnRUeXBlLCBjb3JyZWN0VmFsdWVzKSA9PiB7XG4gICAgICBpdCgncmV0dXJucyBjb3JyZWN0IHZhbHVlcyBmb3IgZG9tYWluIGFuZCByYW5nZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuZ2V0RG9tYWluQW5kUmFuZ2VCeUNoYXJ0VHlwZShkb21haW4sIHJhbmdlLCBjaGFydFR5cGUpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGNvcnJlY3RWYWx1ZXMpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldERvbWFpbkFuZFJhbmdlQnlDaGFydFR5cGUoeyBtaW46IC0xLCBtYXg6IDQgfSwgeyBtaW46IDEsIG1heDogMiwgc3RlcDogMSB9LCAnbGluZScsIHtcbiAgICAgIGRvbWFpbjogeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSwgbGFiZWxTdGVwOiAxIH0sXG4gICAgICByYW5nZTogeyBtaW46IDEsIG1heDogMiwgc3RlcDogMSwgbGFiZWxTdGVwOiAxIH0sXG4gICAgfSk7XG4gICAgYXNzZXJ0R2V0RG9tYWluQW5kUmFuZ2VCeUNoYXJ0VHlwZSh7IG1pbjogLTEsIG1heDogNCB9LCB7IG1pbjogMC4xLCBtYXg6IDIsIGxhYmVsU3RlcDogMC4xIH0sICdsaW5lJywge1xuICAgICAgZG9tYWluOiB7IG1pbjogMCwgbWF4OiAxLCBzdGVwOiAxLCBsYWJlbFN0ZXA6IDEgfSxcbiAgICAgIHJhbmdlOiB7IG1pbjogMC4xLCBtYXg6IDIsIHN0ZXA6IDAuMSwgbGFiZWxTdGVwOiAwLjEgfSxcbiAgICB9KTtcbiAgICBhc3NlcnRHZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlKHsgbWluOiAtMSwgbWF4OiA0IH0sIHsgbWluOiAwLjIsIG1heDogMi40LCBzdGVwOiAwLjEgfSwgJ2RvdFBsb3QnLCB7XG4gICAgICBkb21haW46IHsgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDEsIGxhYmVsU3RlcDogMSB9LFxuICAgICAgcmFuZ2U6IHsgbWluOiAwLCBtYXg6IDIsIHN0ZXA6IDEsIGxhYmVsU3RlcDogMC4xIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0R2V0R3JpZExpbmVzQW5kQXhpc0J5Q2hhcnRUeXBlID0gKHJhbmdlLCBjaGFydFR5cGUsIGdyaWRMaW5lcykgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgcHJvcGVyIGdyaWQgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5nZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUocmFuZ2UsIGNoYXJ0VHlwZSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZ3JpZExpbmVzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3NlcnRHZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUoeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LCAnbGluZURvdCcsIHtcbiAgICAgIHZlcnRpY2FsTGluZXM6IHVuZGVmaW5lZCxcbiAgICAgIGhvcml6b250YWxMaW5lczogWzAsIDFdLFxuICAgICAgbGVmdEF4aXM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBhc3NlcnRHZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUoeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LCAnbGluZUNyb3NzJywge1xuICAgICAgdmVydGljYWxMaW5lczogdW5kZWZpbmVkLFxuICAgICAgaG9yaXpvbnRhbExpbmVzOiBbMCwgMV0sXG4gICAgICBsZWZ0QXhpczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGFzc2VydEdldEdyaWRMaW5lc0FuZEF4aXNCeUNoYXJ0VHlwZSh7IG1pbjogMCwgbWF4OiAxLCBzdGVwOiAxIH0sICdiYXInLCB7XG4gICAgICB2ZXJ0aWNhbExpbmVzOiBbXSxcbiAgICAgIGhvcml6b250YWxMaW5lczogWzAsIDFdLFxuICAgICAgbGVmdEF4aXM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBhc3NlcnRHZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUoeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LCAnZG90UGxvdCcsIHtcbiAgICAgIHZlcnRpY2FsTGluZXM6IFtdLFxuICAgICAgaG9yaXpvbnRhbExpbmVzOiBbXSxcbiAgICAgIGxlZnRBeGlzOiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFRvcFBhZGRpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0R2V0VG9wUGFkZGluZyA9IChiYXJXaWR0aCwgdG9wUGFkZGluZykgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgcHJvcGVyIHRvcCBwYWRkaW5nJywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5nZXRUb3BQYWRkaW5nKGJhcldpZHRoKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh0b3BQYWRkaW5nKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3NlcnRHZXRUb3BQYWRkaW5nKDIwLCA1MCk7XG4gICAgYXNzZXJ0R2V0VG9wUGFkZGluZygzNSwgMzApO1xuICAgIGFzc2VydEdldFRvcFBhZGRpbmcoNTUsIDE1KTtcbiAgICBhc3NlcnRHZXRUb3BQYWRkaW5nKDY1LCAwKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFJvdGF0ZUFuZ2xlJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEdldFJvdGF0ZUFuZ2xlID0gKHsgZm9udFNpemUsIGhlaWdodCB9LCByb3RhdGVBbmdsZSkgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgcHJvcGVyIHJvdGF0ZSBhbmdsZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuZ2V0Um90YXRlQW5nbGUoZm9udFNpemUsIGhlaWdodCk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwocm90YXRlQW5nbGUpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldFJvdGF0ZUFuZ2xlKHsgZm9udFNpemU6IDE0LCBoZWlnaHQ6IDE0IH0sIDApO1xuICAgIGFzc2VydEdldFJvdGF0ZUFuZ2xlKHsgZm9udFNpemU6IDE0LCBoZWlnaHQ6IDI4IH0sIDI1KTtcbiAgICBhc3NlcnRHZXRSb3RhdGVBbmdsZSh7IGZvbnRTaXplOiAxNCwgaGVpZ2h0OiA0MiB9LCAyNSk7XG4gIH0pO1xufSk7XG4iXX0=
package/lib/axes.js CHANGED
@@ -173,6 +173,13 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
173
173
  }
174
174
 
175
175
  (0, _createClass2["default"])(TickComponent, [{
176
+ key: "componentDidUpdate",
177
+ value: function componentDidUpdate(prevProps) {
178
+ if (this.props.autoFocus && !prevProps.autoFocus) {
179
+ this.props.onAutoFocusUsed();
180
+ }
181
+ }
182
+ }, {
176
183
  key: "render",
177
184
  value: function render() {
178
185
  var _this2 = this;
@@ -193,7 +200,9 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
193
200
  formattedValue = _this$props5.formattedValue,
194
201
  changeInteractiveEnabled = _this$props5.changeInteractiveEnabled,
195
202
  changeEditableEnabled = _this$props5.changeEditableEnabled,
196
- error = _this$props5.error;
203
+ error = _this$props5.error,
204
+ autoFocus = _this$props5.autoFocus,
205
+ hiddenLabelRef = _this$props5.hiddenLabelRef;
197
206
 
198
207
  if (!formattedValue) {
199
208
  return null;
@@ -213,9 +222,7 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
213
222
  editable = _ref2.editable,
214
223
  interactive = _ref2.interactive,
215
224
  label = _ref2.label,
216
- correctness = _ref2.correctness,
217
- autoFocus = _ref2.autoFocus,
218
- inDefineChart = _ref2.inDefineChart;
225
+ correctness = _ref2.correctness;
219
226
 
220
227
  var barX = xBand((0, _utils.bandKey)({
221
228
  label: label
@@ -225,7 +232,6 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
225
232
  var lengthB = b && b.label ? b.label.length : 0;
226
233
  return lengthA > lengthB ? a : b;
227
234
  });
228
- var longestLabel = longestCategory && longestCategory.label || '';
229
235
  var distinctMessages = error ? (0, _toConsumableArray2["default"])(new Set(Object.values(error))).join(' ') : '';
230
236
  return /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("foreignObject", {
231
237
  x: bandWidth ? barX : x - barWidth / 2,
@@ -236,18 +242,15 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
236
242
  pointerEvents: 'none',
237
243
  overflow: 'visible'
238
244
  }
239
- }, index === 0 && /*#__PURE__*/_react["default"].createElement("div", {
240
- id: "hiddenLabel",
241
- style: {
242
- position: 'absolute',
243
- visibility: 'hidden',
244
- wordBreak: 'break-word',
245
- overflow: 'visible',
246
- maxWidth: barWidth,
247
- display: 'block'
248
- }
249
- }, longestLabel), /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
250
- autoFocus: inDefineChart ? defineChart && autoFocus : autoFocus,
245
+ }, index === 0 && /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
246
+ isHiddenLabel: true,
247
+ inputRef: hiddenLabelRef,
248
+ disabled: true,
249
+ mark: longestCategory,
250
+ graphProps: graphProps,
251
+ barWidth: barWidth
252
+ }), /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
253
+ autoFocus: defineChart && autoFocus,
251
254
  inputRef: function inputRef(r) {
252
255
  return _this2.input = r;
253
256
  },
@@ -334,6 +337,7 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
334
337
  overflow: 'visible'
335
338
  }
336
339
  }, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
340
+ className: classes.customColor,
337
341
  style: {
338
342
  position: 'fixed'
339
343
  },
@@ -351,6 +355,7 @@ var TickComponent = /*#__PURE__*/function (_React$Component) {
351
355
  overflow: 'visible'
352
356
  }
353
357
  }, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
358
+ className: classes.customColor,
354
359
  style: {
355
360
  position: 'fixed'
356
361
  },
@@ -402,7 +407,9 @@ TickComponent.propTypes = {
402
407
  defineChart: _propTypes["default"].bool,
403
408
  chartingOptions: _propTypes["default"].object,
404
409
  changeInteractiveEnabled: _propTypes["default"].bool,
405
- changeEditableEnabled: _propTypes["default"].bool
410
+ changeEditableEnabled: _propTypes["default"].bool,
411
+ autoFocus: _propTypes["default"].bool,
412
+ onAutoFocusUsed: _propTypes["default"].func
406
413
  };
407
414
 
408
415
  var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
@@ -421,7 +428,8 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
421
428
 
422
429
  _this3 = _super2.call.apply(_super2, [this].concat(args));
423
430
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "state", {
424
- height: 0
431
+ height: 0,
432
+ width: 0
425
433
  });
426
434
  return _this3;
427
435
  }
@@ -429,14 +437,32 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
429
437
  (0, _createClass2["default"])(RawChartAxes, [{
430
438
  key: "componentDidMount",
431
439
  value: function componentDidMount() {
432
- var height = document.getElementById('hiddenLabel') ? document.getElementById('hiddenLabel').offsetHeight : 0;
433
- this.setState({
434
- height: height
435
- });
440
+ if (this.hiddenLabelRef) {
441
+ var boundingClientRect = this.hiddenLabelRef.getBoundingClientRect();
442
+ this.setState({
443
+ height: Math.floor(boundingClientRect.height),
444
+ width: Math.floor(boundingClientRect.width)
445
+ });
446
+ }
447
+ }
448
+ }, {
449
+ key: "componentDidUpdate",
450
+ value: function componentDidUpdate(prevProps, prevState, snapshot) {
451
+ if (this.hiddenLabelRef) {
452
+ var width = Math.floor(this.hiddenLabelRef.getBoundingClientRect().width);
453
+
454
+ if (width !== this.state.width) {
455
+ this.setState({
456
+ width: width
457
+ });
458
+ }
459
+ }
436
460
  }
437
461
  }, {
438
462
  key: "render",
439
463
  value: function render() {
464
+ var _this4 = this;
465
+
440
466
  var _this$props6 = this.props,
441
467
  classes = _this$props6.classes,
442
468
  graphProps = _this$props6.graphProps,
@@ -452,6 +478,8 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
452
478
  changeInteractiveEnabled = _this$props6.changeInteractiveEnabled,
453
479
  changeEditableEnabled = _this$props6.changeEditableEnabled,
454
480
  theme = _this$props6.theme,
481
+ autoFocus = _this$props6.autoFocus,
482
+ onAutoFocusUsed = _this$props6.onAutoFocusUsed,
455
483
  error = _this$props6.error;
456
484
  var axis = classes.axis,
457
485
  axisLine = classes.axisLine,
@@ -467,7 +495,9 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
467
495
  _ref3$size = _ref3.size,
468
496
  size = _ref3$size === void 0 ? {} : _ref3$size;
469
497
 
470
- var height = this.state.height;
498
+ var _this$state = this.state,
499
+ height = _this$state.height,
500
+ width = _this$state.width;
471
501
  var bottomScale = xBand && typeof xBand.rangeRound === 'function' && xBand.rangeRound([0, size.width]);
472
502
  var bandWidth = xBand && typeof xBand.bandwidth === 'function' && xBand.bandwidth(); // for chartType "line", bandWidth will be 0, so we have to calculate it
473
503
 
@@ -475,8 +505,11 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
475
505
  var rowTickValues = (0, _utils.getTickValues)(_objectSpread(_objectSpread({}, range), {}, {
476
506
  step: range.labelStep
477
507
  }));
478
- var fontSize = theme && theme.typography ? theme.typography.fontSize : 14;
479
- var rotate = (0, _utils.getRotateAngle)(fontSize, height);
508
+ var fontSize = theme && theme.typography ? theme.typography.fontSize : 14; // this mostly applies for labels that are not editable
509
+
510
+ var rotateBecauseOfHeight = (0, _utils.getRotateAngle)(fontSize, height); // this applies for labels that are editable
511
+
512
+ var rotateBecauseOfWidth = width > barWidth ? 25 : 0;
480
513
 
481
514
  var getTickLabelProps = function getTickLabelProps(value) {
482
515
  return {
@@ -487,15 +520,20 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
487
520
 
488
521
  var getTickComponent = function getTickComponent(props) {
489
522
  var properties = {
523
+ hiddenLabelRef: function hiddenLabelRef(ref) {
524
+ _this4.hiddenLabelRef = ref;
525
+ },
490
526
  classes: classes,
491
527
  categories: categories,
492
528
  xBand: xBand,
493
529
  bandWidth: bandWidth,
494
530
  barWidth: barWidth,
495
- rotate: rotate,
531
+ rotate: rotateBecauseOfHeight || rotateBecauseOfWidth,
496
532
  top: top,
497
533
  defineChart: defineChart,
498
534
  chartingOptions: chartingOptions,
535
+ autoFocus: autoFocus,
536
+ onAutoFocusUsed: onAutoFocusUsed,
499
537
  error: error,
500
538
  onChangeCategory: onChangeCategory,
501
539
  changeInteractiveEnabled: changeInteractiveEnabled,
@@ -536,7 +574,9 @@ var RawChartAxes = /*#__PURE__*/function (_React$Component2) {
536
574
  tickFormat: function tickFormat(count) {
537
575
  return count;
538
576
  },
539
- tickComponent: getTickComponent
577
+ tickComponent: getTickComponent,
578
+ autoFocus: autoFocus,
579
+ onAutoFocusUsed: onAutoFocusUsed
540
580
  }));
541
581
  }
542
582
  }]);
@@ -559,7 +599,9 @@ exports.RawChartAxes = RawChartAxes;
559
599
  theme: _propTypes["default"].object,
560
600
  chartingOptions: _propTypes["default"].object,
561
601
  changeInteractiveEnabled: _propTypes["default"].bool,
562
- changeEditableEnabled: _propTypes["default"].bool
602
+ changeEditableEnabled: _propTypes["default"].bool,
603
+ autoFocus: _propTypes["default"].bool,
604
+ onAutoFocusUsed: _propTypes["default"].func
563
605
  });
564
606
  var ChartAxes = (0, _styles.withStyles)(function (theme) {
565
607
  return {
@@ -588,6 +630,9 @@ var ChartAxes = (0, _styles.withStyles)(function (theme) {
588
630
  error: {
589
631
  fontSize: theme.typography.fontSize - 2,
590
632
  fill: theme.palette.error.main
633
+ },
634
+ customColor: {
635
+ color: "".concat(_renderUi.color.tertiary(), " !important")
591
636
  }
592
637
  };
593
638
  }, {
@@ -595,4 +640,4 @@ var ChartAxes = (0, _styles.withStyles)(function (theme) {
595
640
  })(RawChartAxes);
596
641
  var _default = ChartAxes;
597
642
  exports["default"] = _default;
598
- //# sourceMappingURL=axes.js.map
643
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9heGVzLmpzeCJdLCJuYW1lcyI6WyJUaWNrQ29tcG9uZW50IiwicHJvcHMiLCJvcGVuIiwiY2FsbGJhY2siLCJzZXRTdGF0ZSIsImRpYWxvZyIsImluZGV4IiwibmV3TGFiZWwiLCJjYXRlZ29yaWVzIiwib25DaGFuZ2VDYXRlZ29yeSIsImNhdGVnb3J5IiwibGFiZWwiLCJvbkNoYW5nZSIsInNsaWNlIiwidmFsdWUiLCJ0aXRsZSIsInRleHQiLCJvbkNvbmZpcm0iLCJoYW5kbGVBbGVydERpYWxvZyIsImludGVyYWN0aXZlIiwib25DbG9zZSIsImVkaXRhYmxlIiwibWF4Q2hhciIsImNodW5rcyIsImxlbmd0aCIsImluZGV4VG9TcGxpdCIsImxhc3RJbmRleE9mIiwicHVzaCIsInN1YnN0cmluZyIsInRyaW0iLCJzdGF0ZSIsInByZXZQcm9wcyIsImF1dG9Gb2N1cyIsIm9uQXV0b0ZvY3VzVXNlZCIsImNsYXNzZXMiLCJ4QmFuZCIsImJhbmRXaWR0aCIsImJhcldpZHRoIiwicm90YXRlIiwidG9wIiwiZ3JhcGhQcm9wcyIsImRlZmluZUNoYXJ0IiwiY2hhcnRpbmdPcHRpb25zIiwieCIsInkiLCJmb3JtYXR0ZWRWYWx1ZSIsImNoYW5nZUludGVyYWN0aXZlRW5hYmxlZCIsImNoYW5nZUVkaXRhYmxlRW5hYmxlZCIsImVycm9yIiwiaGlkZGVuTGFiZWxSZWYiLCJjaGFuZ2VFZGl0YWJsZSIsImNoYW5nZUludGVyYWN0aXZlIiwicGFyc2VJbnQiLCJzcGxpdCIsImRlbGV0YWJsZSIsImNvcnJlY3RuZXNzIiwiYmFyWCIsImxvbmdlc3RDYXRlZ29yeSIsInJlZHVjZSIsImEiLCJiIiwibGVuZ3RoQSIsImxlbmd0aEIiLCJkaXN0aW5jdE1lc3NhZ2VzIiwiU2V0IiwiT2JqZWN0IiwidmFsdWVzIiwiam9pbiIsInBvaW50ZXJFdmVudHMiLCJvdmVyZmxvdyIsInIiLCJpbnB1dCIsImNoYW5nZUNhdGVnb3J5IiwiZG90dGVkTGluZSIsImRlbGV0ZUNhdGVnb3J5IiwicG9zaXRpb24iLCJ3b3JkQnJlYWsiLCJtYXhXaWR0aCIsImRpc3BsYXkiLCJzcGxpdFRleHQiLCJhdXRob3JpbmdMYWJlbCIsIm1hcCIsIndvcmQiLCJjdXN0b21Db2xvciIsImUiLCJ0YXJnZXQiLCJjaGVja2VkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJib29sIiwiYW55IiwicHJvcFR5cGVzIiwiYXJyYXkiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwiUmF3Q2hhcnRBeGVzIiwiaGVpZ2h0Iiwid2lkdGgiLCJib3VuZGluZ0NsaWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJNYXRoIiwiZmxvb3IiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsImxlZnRBeGlzIiwidGhlbWUiLCJheGlzIiwiYXhpc0xpbmUiLCJ0aWNrIiwic2NhbGUiLCJyYW5nZSIsImRvbWFpbiIsInNpemUiLCJib3R0b21TY2FsZSIsInJhbmdlUm91bmQiLCJiYW5kd2lkdGgiLCJtYXgiLCJyb3dUaWNrVmFsdWVzIiwic3RlcCIsImxhYmVsU3RlcCIsImZvbnRTaXplIiwidHlwb2dyYXBoeSIsInJvdGF0ZUJlY2F1c2VPZkhlaWdodCIsInJvdGF0ZUJlY2F1c2VPZldpZHRoIiwiZ2V0VGlja0xhYmVsUHJvcHMiLCJkeSIsImR4IiwidG9Mb2NhbGVTdHJpbmciLCJnZXRUaWNrQ29tcG9uZW50IiwicHJvcGVydGllcyIsInJlZiIsIm1pbiIsInRleHRBbmNob3IiLCJjb3VudCIsImlzUmVxdWlyZWQiLCJ0eXBlcyIsIkdyYXBoUHJvcHNUeXBlIiwiQ2hhcnRBeGVzIiwic3Ryb2tlIiwiY29sb3IiLCJwcmltYXJ5RGFyayIsInN0cm9rZVdpZHRoIiwiZmlsbCIsImZvbnRGYW1pbHkiLCJib2R5MSIsInByaW1hcnlMaWdodCIsIm9wYWNpdHkiLCJwYWxldHRlIiwibWFpbiIsInRlcnRpYXJ5Iiwid2l0aFRoZW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7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b20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7IHR5cGVzIH0gZnJvbSAnQHBpZS1saWIvcGxvdCc7XG5pbXBvcnQgeyBjb2xvciB9IGZyb20gJ0BwaWUtbGliL3JlbmRlci11aSc7XG5pbXBvcnQgeyBBbGVydERpYWxvZyB9IGZyb20gJ0BwaWUtbGliL2NvbmZpZy11aSc7XG5pbXBvcnQgeyBBeGlzTGVmdCwgQXhpc0JvdHRvbSB9IGZyb20gJ0B2eC9heGlzJztcbmltcG9ydCB7IGJhbmRLZXksIGdldFRpY2tWYWx1ZXMsIGdldFJvdGF0ZUFuZ2xlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgTWFya0xhYmVsIGZyb20gJy4vbWFyay1sYWJlbCc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQ2hlY2tib3gnO1xuXG5leHBvcnQgY2xhc3MgVGlja0NvbXBvbmVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgZGVmaW5lQ2hhcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGVycm9yOiBQcm9wVHlwZXMuYW55LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBkaWFsb2c6IHtcbiAgICAgICAgb3BlbjogZmFsc2UsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzICYmICFwcmV2UHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQXV0b0ZvY3VzVXNlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFsZXJ0RGlhbG9nID0gKG9wZW4sIGNhbGxiYWNrKSA9PlxuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIGRpYWxvZzogeyBvcGVuIH0sXG4gICAgICB9LFxuICAgICAgY2FsbGJhY2ssXG4gICAgKTtcblxuICBjaGFuZ2VDYXRlZ29yeSA9IChpbmRleCwgbmV3TGFiZWwpID0+IHtcbiAgICBjb25zdCB7IGNhdGVnb3JpZXMsIG9uQ2hhbmdlQ2F0ZWdvcnkgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2luZGV4XTtcblxuICAgIG9uQ2hhbmdlQ2F0ZWdvcnkoaW5kZXgsIHsgLi4uY2F0ZWdvcnksIGxhYmVsOiBuZXdMYWJlbCB9KTtcbiAgfTtcblxuICBkZWxldGVDYXRlZ29yeSA9IChpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgY2F0ZWdvcmllcywgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoaW5kZXggPj0gMCAmJiBjYXRlZ29yaWVzW2luZGV4XSkge1xuICAgICAgb25DaGFuZ2UoWy4uLmNhdGVnb3JpZXMuc2xpY2UoMCwgaW5kZXgpLCAuLi5jYXRlZ29yaWVzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgICB9XG4gIH07XG5cbiAgY2hhbmdlSW50ZXJhY3RpdmUgPSAoaW5kZXgsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgeyBjYXRlZ29yaWVzLCBvbkNoYW5nZUNhdGVnb3J5IH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tpbmRleF07XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogJ1dhcm5pbmcnLFxuICAgICAgICAgIHRleHQ6ICdUaGlzIHdpbGwgcmVtb3ZlIHRoZSBjb3JyZWN0IGFuc3dlciB2YWx1ZSB0aGF0IGhhcyBiZWVuIGRlZmluZWQgZm9yIHRoaXMgY2F0ZWdvcnkuJyxcbiAgICAgICAgICBvbkNvbmZpcm06ICgpID0+XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUFsZXJ0RGlhbG9nKGZhbHNlLCBvbkNoYW5nZUNhdGVnb3J5KGluZGV4LCB7IC4uLmNhdGVnb3J5LCBpbnRlcmFjdGl2ZTogIWNhdGVnb3J5LmludGVyYWN0aXZlIH0pKSxcbiAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB0aGlzLmhhbmRsZUFsZXJ0RGlhbG9nKGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkNoYW5nZUNhdGVnb3J5KGluZGV4LCB7IC4uLmNhdGVnb3J5LCBpbnRlcmFjdGl2ZTogIWNhdGVnb3J5LmludGVyYWN0aXZlIH0pO1xuICAgIH1cbiAgfTtcblxuICBjaGFuZ2VFZGl0YWJsZSA9IChpbmRleCwgdmFsdWUpID0+IHtcbiAgICBjb25zdCB7IGNhdGVnb3JpZXMsIG9uQ2hhbmdlQ2F0ZWdvcnkgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2luZGV4XTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiAnV2FybmluZycsXG4gICAgICAgICAgdGV4dDogJ1RoaXMgd2lsbCByZW1vdmUgdGhlIGNvcnJlY3QgYW5zd2VyIGNhdGVnb3J5IG5hbWUgdGhhdCBoYXMgYmVlbiBkZWZpbmVkIGZvciB0aGlzIGNhdGVnb3J5LicsXG4gICAgICAgICAgb25Db25maXJtOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5oYW5kbGVBbGVydERpYWxvZyhcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIG9uQ2hhbmdlQ2F0ZWdvcnkoaW5kZXgsIHsgLi4uY2F0ZWdvcnksIGVkaXRhYmxlOiAhY2F0ZWdvcnkuZWRpdGFibGUgfHwgZmFsc2UgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHRoaXMuaGFuZGxlQWxlcnREaWFsb2coZmFsc2UpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uQ2hhbmdlQ2F0ZWdvcnkoaW5kZXgsIHsgLi4uY2F0ZWdvcnksIGVkaXRhYmxlOiAhY2F0ZWdvcnkuZWRpdGFibGUgfHwgZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuXG4gIHNwbGl0VGV4dCA9ICh0ZXh0LCBtYXhDaGFyKSA9PiB7XG4gICAgbGV0IGNodW5rcyA9IFtdO1xuICAgIHdoaWxlICgodGV4dCB8fCAnJykubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGluZGV4VG9TcGxpdDtcbiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IG1heENoYXIpIHtcbiAgICAgICAgaW5kZXhUb1NwbGl0ID0gdGV4dC5sYXN0SW5kZXhPZignICcsIG1heENoYXIpO1xuICAgICAgICBpZiAoaW5kZXhUb1NwbGl0ID09PSAtMSkge1xuICAgICAgICAgIGluZGV4VG9TcGxpdCA9IG1heENoYXI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4VG9TcGxpdCA9IHRleHQubGVuZ3RoO1xuICAgICAgfVxuICAgICAgY2h1bmtzLnB1c2godGV4dC5zdWJzdHJpbmcoMCwgaW5kZXhUb1NwbGl0KSk7XG4gICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoaW5kZXhUb1NwbGl0KS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBjaHVua3M7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzZXMsXG4gICAgICBjYXRlZ29yaWVzLFxuICAgICAgeEJhbmQsXG4gICAgICBiYW5kV2lkdGgsXG4gICAgICBiYXJXaWR0aCxcbiAgICAgIHJvdGF0ZSxcbiAgICAgIHRvcCxcbiAgICAgIGdyYXBoUHJvcHMsXG4gICAgICBkZWZpbmVDaGFydCxcbiAgICAgIGNoYXJ0aW5nT3B0aW9ucyxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICBjaGFuZ2VJbnRlcmFjdGl2ZUVuYWJsZWQsXG4gICAgICBjaGFuZ2VFZGl0YWJsZUVuYWJsZWQsXG4gICAgICBlcnJvcixcbiAgICAgIGF1dG9Gb2N1cyxcbiAgICAgIGhpZGRlbkxhYmVsUmVmLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKCFmb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkaWFsb2cgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyBjaGFuZ2VFZGl0YWJsZSwgY2hhbmdlSW50ZXJhY3RpdmUgfSA9IGNoYXJ0aW5nT3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCBpbmRleCA9IHBhcnNlSW50KGZvcm1hdHRlZFZhbHVlLnNwbGl0KCctJylbMF0sIDEwKTtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbaW5kZXhdO1xuICAgIGNvbnN0IHsgZGVsZXRhYmxlLCBlZGl0YWJsZSwgaW50ZXJhY3RpdmUsIGxhYmVsLCBjb3JyZWN0bmVzcyB9ID0gY2F0ZWdvcnkgfHwge307XG4gICAgY29uc3QgYmFyWCA9IHhCYW5kKGJhbmRLZXkoeyBsYWJlbCB9LCBpbmRleCkpO1xuICAgIGNvbnN0IGxvbmdlc3RDYXRlZ29yeSA9IChjYXRlZ29yaWVzIHx8IFtdKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGxlbmd0aEEgPSBhICYmIGEubGFiZWwgPyBhLmxhYmVsLmxlbmd0aCA6IDA7XG4gICAgICBjb25zdCBsZW5ndGhCID0gYiAmJiBiLmxhYmVsID8gYi5sYWJlbC5sZW5ndGggOiAwO1xuXG4gICAgICByZXR1cm4gbGVuZ3RoQSA+IGxlbmd0aEIgPyBhIDogYjtcbiAgICB9KTtcbiAgICBjb25zdCBkaXN0aW5jdE1lc3NhZ2VzID0gZXJyb3IgPyBbLi4ubmV3IFNldChPYmplY3QudmFsdWVzKGVycm9yKSldLmpvaW4oJyAnKSA6ICcnO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxnPlxuICAgICAgICA8Zm9yZWlnbk9iamVjdFxuICAgICAgICAgIHg9e2JhbmRXaWR0aCA/IGJhclggOiB4IC0gYmFyV2lkdGggLyAyfVxuICAgICAgICAgIHk9ezZ9XG4gICAgICAgICAgd2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgIGhlaWdodD17NH1cbiAgICAgICAgICBzdHlsZT17eyBwb2ludGVyRXZlbnRzOiAnbm9uZScsIG92ZXJmbG93OiAndmlzaWJsZScgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpbmRleCA9PT0gMCAmJiAoXG4gICAgICAgICAgICA8TWFya0xhYmVsXG4gICAgICAgICAgICAgIGlzSGlkZGVuTGFiZWw9e3RydWV9XG4gICAgICAgICAgICAgIGlucHV0UmVmPXtoaWRkZW5MYWJlbFJlZn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RydWV9XG4gICAgICAgICAgICAgIG1hcms9e2xvbmdlc3RDYXRlZ29yeX1cbiAgICAgICAgICAgICAgZ3JhcGhQcm9wcz17Z3JhcGhQcm9wc31cbiAgICAgICAgICAgICAgYmFyV2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPE1hcmtMYWJlbFxuICAgICAgICAgICAgYXV0b0ZvY3VzPXtkZWZpbmVDaGFydCAmJiBhdXRvRm9jdXN9XG4gICAgICAgICAgICBpbnB1dFJlZj17KHIpID0+ICh0aGlzLmlucHV0ID0gcil9XG4gICAgICAgICAgICBkaXNhYmxlZD17IWRlZmluZUNoYXJ0ICYmICFlZGl0YWJsZX1cbiAgICAgICAgICAgIG1hcms9e2NhdGVnb3J5fVxuICAgICAgICAgICAgZ3JhcGhQcm9wcz17Z3JhcGhQcm9wc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsobmV3TGFiZWwpID0+IHRoaXMuY2hhbmdlQ2F0ZWdvcnkoaW5kZXgsIG5ld0xhYmVsKX1cbiAgICAgICAgICAgIGJhcldpZHRoPXtiYXJXaWR0aH1cbiAgICAgICAgICAgIHJvdGF0ZT17cm90YXRlfVxuICAgICAgICAgICAgY29ycmVjdG5lc3M9e2NvcnJlY3RuZXNzfVxuICAgICAgICAgICAgZXJyb3I9e2Vycm9yICYmIGVycm9yW2luZGV4XX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XG5cbiAgICAgICAge2Vycm9yICYmIGluZGV4ID09PSAwICYmIChcbiAgICAgICAgICA8dGV4dCBjbGFzc05hbWU9e2NsYXNzZXMuZXJyb3J9IHk9e3kgKyAyM30gaGVpZ2h0PXs2fSB0ZXh0QW5jaG9yPVwic3RhcnRcIj5cbiAgICAgICAgICAgIHtkaXN0aW5jdE1lc3NhZ2VzfVxuICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgKX1cblxuICAgICAgICB7ZGVsZXRhYmxlICYmICFjb3JyZWN0bmVzcyAmJiAoXG4gICAgICAgICAgPGxpbmUgeDE9e3h9IHkxPXswfSB4Mj17eH0geTI9e3kgKyA0ICsgdG9wfSBjbGFzc05hbWU9e2NsYXNzZXMuZG90dGVkTGluZX0gc3Ryb2tlRGFzaGFycmF5PVwiNCAyXCIgLz5cbiAgICAgICAgKX1cblxuICAgICAgICB7ZGVsZXRhYmxlICYmICFjb3JyZWN0bmVzcyAmJiAoXG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB4PXt4IC0gOH1cbiAgICAgICAgICAgIHk9e3kgKyA2MCArIHRvcH1cbiAgICAgICAgICAgIHdpZHRoPXsxNn1cbiAgICAgICAgICAgIGhlaWdodD17MTZ9XG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUxMiA1MTJcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5kZWxldGVDYXRlZ29yeShpbmRleCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMjggNDA1LjQyOUMxMjggNDI4Ljg0NiAxNDcuMTk4IDQ0OCAxNzAuNjY3IDQ0OGgxNzAuNjY3QzM2NC44MDIgNDQ4IDM4NCA0MjguODQ2IDM4NCA0MDUuNDI5VjE2MEgxMjh2MjQ1LjQyOXpNNDE2IDk2aC04MGwtMjYuNzg1LTMySDIwMi43ODZMMTc2IDk2SDk2djMyaDMyMFY5NnpcIiAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICApfVxuXG4gICAgICAgIHtkZWZpbmVDaGFydCAmJiBpbmRleCA9PT0gMCAmJiAoXG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgeD17LTU1fVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoYW5nZUludGVyYWN0aXZlRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICAgICAgeT17eSArIDkwICsgdG9wfVxuICAgICAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aH1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9ezR9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgICAgICAgICAgICBtYXhXaWR0aDogYmFyV2lkdGgsXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoaXMuc3BsaXRUZXh0KGNoYW5nZUludGVyYWN0aXZlPy5hdXRob3JpbmdMYWJlbCwgMjApLm1hcCgod29yZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDx0c3BhbiBrZXk9e2luZGV4fSB4PVwiMFwiIGR5PXtgJHtpbmRleCA+IDAgPyAnMS4yZW0nIDogJy42ZW0nfWB9PlxuICAgICAgICAgICAgICAgICAgICB7d29yZH1cbiAgICAgICAgICAgICAgICAgIDwvdHNwYW4+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtjaGFuZ2VFZGl0YWJsZUVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgICAgIHk9e3kgKyAxNDUgKyB0b3B9XG4gICAgICAgICAgICAgICAgd2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgICAgICAgIGhlaWdodD17NH1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBiYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5zcGxpdFRleHQoY2hhbmdlRWRpdGFibGU/LmF1dGhvcmluZ0xhYmVsLCAyMCkubWFwKCh3b3JkLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPHRzcGFuIGtleT17aW5kZXh9IHg9XCIwXCIgZHk9e2Ake2luZGV4ID4gMCA/ICcxLjJlbScgOiAnLjZlbSd9YH0+XG4gICAgICAgICAgICAgICAgICAgIHt3b3JkfVxuICAgICAgICAgICAgICAgICAgPC90c3Bhbj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgKX1cblxuICAgICAgICB7ZGVmaW5lQ2hhcnQgJiYgY2hhbmdlSW50ZXJhY3RpdmVFbmFibGVkICYmIChcbiAgICAgICAgICA8Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICAgeD17eCAtIDI0fVxuICAgICAgICAgICAgeT17eSArIDgwICsgdG9wfVxuICAgICAgICAgICAgd2lkdGg9e2JhcldpZHRofVxuICAgICAgICAgICAgaGVpZ2h0PXs0fVxuICAgICAgICAgICAgc3R5bGU9e3sgcG9pbnRlckV2ZW50czogJ3Zpc2libGUnLCBvdmVyZmxvdzogJ3Zpc2libGUnIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5jdXN0b21Db2xvcn1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgcG9zaXRpb246ICdmaXhlZCcgfX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17aW50ZXJhY3RpdmV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gdGhpcy5jaGFuZ2VJbnRlcmFjdGl2ZShpbmRleCwgZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZm9yZWlnbk9iamVjdD5cbiAgICAgICAgKX1cblxuICAgICAgICB7ZGVmaW5lQ2hhcnQgJiYgY2hhbmdlRWRpdGFibGVFbmFibGVkICYmIChcbiAgICAgICAgICA8Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICAgeD17eCAtIDI0fVxuICAgICAgICAgICAgeT17eSArIDEzMCArIHRvcH1cbiAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aH1cbiAgICAgICAgICAgIGhlaWdodD17NH1cbiAgICAgICAgICAgIHN0eWxlPXt7IHBvaW50ZXJFdmVudHM6ICd2aXNpYmxlJywgb3ZlcmZsb3c6ICd2aXNpYmxlJyB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY3VzdG9tQ29sb3J9XG4gICAgICAgICAgICAgIHN0eWxlPXt7IHBvc2l0aW9uOiAnZml4ZWQnIH19XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2VkaXRhYmxlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHRoaXMuY2hhbmdlRWRpdGFibGUoaW5kZXgsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+XG4gICAgICAgICl9XG5cbiAgICAgICAgPGZvcmVpZ25PYmplY3RcbiAgICAgICAgICB4PXt4IC0gMjR9XG4gICAgICAgICAgeT17eSArIDEwMCArIHRvcH1cbiAgICAgICAgICB3aWR0aD17YmFyV2lkdGh9XG4gICAgICAgICAgaGVpZ2h0PXs0fVxuICAgICAgICAgIHN0eWxlPXt7IHBvaW50ZXJFdmVudHM6ICd2aXNpYmxlJywgb3ZlcmZsb3c6ICd2aXNpYmxlJyB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEFsZXJ0RGlhbG9nXG4gICAgICAgICAgICBvcGVuPXtkaWFsb2cub3Blbn1cbiAgICAgICAgICAgIHRpdGxlPXtkaWFsb2cudGl0bGV9XG4gICAgICAgICAgICB0ZXh0PXtkaWFsb2cudGV4dH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2RpYWxvZy5vbkNsb3NlfVxuICAgICAgICAgICAgb25Db25maXJtPXtkaWFsb2cub25Db25maXJtfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZm9yZWlnbk9iamVjdD5cbiAgICAgIDwvZz5cbiAgICApO1xuICB9XG59XG5cblRpY2tDb21wb25lbnQucHJvcFR5cGVzID0ge1xuICBjYXRlZ29yaWVzOiBQcm9wVHlwZXMuYXJyYXksXG4gIHhCYW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgYmFuZFdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICBiYXJXaWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgcm90YXRlOiBQcm9wVHlwZXMubnVtYmVyLFxuICB0b3A6IFByb3BUeXBlcy5udW1iZXIsXG4gIHg6IFByb3BUeXBlcy5udW1iZXIsXG4gIHk6IFByb3BUeXBlcy5udW1iZXIsXG4gIGdyYXBoUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGZvcm1hdHRlZFZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNoYW5nZUNhdGVnb3J5OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICBlcnJvcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgZGVmaW5lQ2hhcnQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGFydGluZ09wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNoYW5nZUludGVyYWN0aXZlRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoYW5nZUVkaXRhYmxlRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQXV0b0ZvY3VzVXNlZDogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgY2xhc3MgUmF3Q2hhcnRBeGVzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBib3R0b21TY2FsZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGNhdGVnb3JpZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBkZWZpbmVDaGFydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5hbnksXG4gICAgZ3JhcGhQcm9wczogdHlwZXMuR3JhcGhQcm9wc1R5cGUuaXNSZXF1aXJlZCxcbiAgICB4QmFuZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGVmdEF4aXM6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNoYW5nZUNhdGVnb3J5OiBQcm9wVHlwZXMuZnVuYyxcbiAgICB0b3A6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGhlbWU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2hhcnRpbmdPcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNoYW5nZUludGVyYWN0aXZlRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2hhbmdlRWRpdGFibGVFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uQXV0b0ZvY3VzVXNlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIH07XG5cbiAgc3RhdGUgPSB7IGhlaWdodDogMCwgd2lkdGg6IDAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBpZiAodGhpcy5oaWRkZW5MYWJlbFJlZikge1xuICAgICAgY29uc3QgYm91bmRpbmdDbGllbnRSZWN0ID0gdGhpcy5oaWRkZW5MYWJlbFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBoZWlnaHQ6IE1hdGguZmxvb3IoYm91bmRpbmdDbGllbnRSZWN0LmhlaWdodCksXG4gICAgICAgIHdpZHRoOiBNYXRoLmZsb29yKGJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUsIHNuYXBzaG90KSB7XG4gICAgaWYgKHRoaXMuaGlkZGVuTGFiZWxSZWYpIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gTWF0aC5mbG9vcih0aGlzLmhpZGRlbkxhYmVsUmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcblxuICAgICAgaWYgKHdpZHRoICE9PSB0aGlzLnN0YXRlLndpZHRoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB3aWR0aCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xhc3NlcyxcbiAgICAgIGdyYXBoUHJvcHMsXG4gICAgICB4QmFuZCxcbiAgICAgIGxlZnRBeGlzLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbkNoYW5nZUNhdGVnb3J5LFxuICAgICAgY2F0ZWdvcmllcyA9IFtdLFxuICAgICAgdG9wLFxuICAgICAgZGVmaW5lQ2hhcnQsXG4gICAgICBjaGFydGluZ09wdGlvbnMsXG4gICAgICBjaGFuZ2VJbnRlcmFjdGl2ZUVuYWJsZWQsXG4gICAgICBjaGFuZ2VFZGl0YWJsZUVuYWJsZWQsXG4gICAgICB0aGVtZSxcbiAgICAgIGF1dG9Gb2N1cyxcbiAgICAgIG9uQXV0b0ZvY3VzVXNlZCxcbiAgICAgIGVycm9yLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBheGlzLCBheGlzTGluZSwgdGljayB9ID0gY2xhc3NlcztcbiAgICBjb25zdCB7IHNjYWxlID0ge30sIHJhbmdlID0ge30sIGRvbWFpbiA9IHt9LCBzaXplID0ge30gfSA9IGdyYXBoUHJvcHMgfHwge307XG4gICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgYm90dG9tU2NhbGUgPSB4QmFuZCAmJiB0eXBlb2YgeEJhbmQucmFuZ2VSb3VuZCA9PT0gJ2Z1bmN0aW9uJyAmJiB4QmFuZC5yYW5nZVJvdW5kKFswLCBzaXplLndpZHRoXSk7XG5cbiAgICBjb25zdCBiYW5kV2lkdGggPSB4QmFuZCAmJiB0eXBlb2YgeEJhbmQuYmFuZHdpZHRoID09PSAnZnVuY3Rpb24nICYmIHhCYW5kLmJhbmR3aWR0aCgpO1xuICAgIC8vIGZvciBjaGFydFR5cGUgXCJsaW5lXCIsIGJhbmRXaWR0aCB3aWxsIGJlIDAsIHNvIHdlIGhhdmUgdG8gY2FsY3VsYXRlIGl0XG4gICAgY29uc3QgYmFyV2lkdGggPSBiYW5kV2lkdGggfHwgKHNjYWxlLnggJiYgc2NhbGUueChkb21haW4ubWF4KSAvIGNhdGVnb3JpZXMubGVuZ3RoKTtcblxuICAgIGNvbnN0IHJvd1RpY2tWYWx1ZXMgPSBnZXRUaWNrVmFsdWVzKHsgLi4ucmFuZ2UsIHN0ZXA6IHJhbmdlLmxhYmVsU3RlcCB9KTtcbiAgICBjb25zdCBmb250U2l6ZSA9IHRoZW1lICYmIHRoZW1lLnR5cG9ncmFwaHkgPyB0aGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplIDogMTQ7XG4gICAgLy8gdGhpcyBtb3N0bHkgYXBwbGllcyBmb3IgbGFiZWxzIHRoYXQgYXJlIG5vdCBlZGl0YWJsZVxuICAgIGNvbnN0IHJvdGF0ZUJlY2F1c2VPZkhlaWdodCA9IGdldFJvdGF0ZUFuZ2xlKGZvbnRTaXplLCBoZWlnaHQpO1xuICAgIC8vIHRoaXMgYXBwbGllcyBmb3IgbGFiZWxzIHRoYXQgYXJlIGVkaXRhYmxlXG4gICAgY29uc3Qgcm90YXRlQmVjYXVzZU9mV2lkdGggPSB3aWR0aCA+IGJhcldpZHRoID8gMjUgOiAwO1xuXG4gICAgY29uc3QgZ2V0VGlja0xhYmVsUHJvcHMgPSAodmFsdWUpID0+ICh7XG4gICAgICBkeTogNCxcbiAgICAgIGR4OiAtMTAgLSAodmFsdWUudG9Mb2NhbGVTdHJpbmcoKS5sZW5ndGggfHwgMSkgKiA1LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZ2V0VGlja0NvbXBvbmVudCA9IChwcm9wcykgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHtcbiAgICAgICAgaGlkZGVuTGFiZWxSZWY6IChyZWYpID0+IHtcbiAgICAgICAgICB0aGlzLmhpZGRlbkxhYmVsUmVmID0gcmVmO1xuICAgICAgICB9LFxuICAgICAgICBjbGFzc2VzLFxuICAgICAgICBjYXRlZ29yaWVzLFxuICAgICAgICB4QmFuZCxcbiAgICAgICAgYmFuZFdpZHRoLFxuICAgICAgICBiYXJXaWR0aCxcbiAgICAgICAgcm90YXRlOiByb3RhdGVCZWNhdXNlT2ZIZWlnaHQgfHwgcm90YXRlQmVjYXVzZU9mV2lkdGgsXG4gICAgICAgIHRvcCxcbiAgICAgICAgZGVmaW5lQ2hhcnQsXG4gICAgICAgIGNoYXJ0aW5nT3B0aW9ucyxcbiAgICAgICAgYXV0b0ZvY3VzLFxuICAgICAgICBvbkF1dG9Gb2N1c1VzZWQsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBvbkNoYW5nZUNhdGVnb3J5LFxuICAgICAgICBjaGFuZ2VJbnRlcmFjdGl2ZUVuYWJsZWQsXG4gICAgICAgIGNoYW5nZUVkaXRhYmxlRW5hYmxlZCxcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIGdyYXBoUHJvcHMsXG4gICAgICAgIHg6IHByb3BzLngsXG4gICAgICAgIHk6IHByb3BzLnksXG4gICAgICAgIGZvcm1hdHRlZFZhbHVlOiBwcm9wcy5mb3JtYXR0ZWRWYWx1ZSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiA8VGlja0NvbXBvbmVudCB7Li4ucHJvcGVydGllc30gLz47XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgIHtsZWZ0QXhpcyAmJiAoXG4gICAgICAgICAgPEF4aXNMZWZ0XG4gICAgICAgICAgICBzY2FsZT17c2NhbGUueX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YXhpc31cbiAgICAgICAgICAgIGF4aXNMaW5lQ2xhc3NOYW1lPXtheGlzTGluZX1cbiAgICAgICAgICAgIHRpY2tMZW5ndGg9ezEwfVxuICAgICAgICAgICAgdGlja0NsYXNzTmFtZT17dGlja31cbiAgICAgICAgICAgIHRpY2tGb3JtYXQ9eyh2YWx1ZSkgPT4gdmFsdWV9XG4gICAgICAgICAgICB0aWNrVmFsdWVzPXtyb3dUaWNrVmFsdWVzfVxuICAgICAgICAgICAgdGlja0xhYmVsUHJvcHM9e2dldFRpY2tMYWJlbFByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIDxBeGlzQm90dG9tXG4gICAgICAgICAgYXhpc0xpbmVDbGFzc05hbWU9e2F4aXNMaW5lfVxuICAgICAgICAgIHRpY2tDbGFzc05hbWU9e3RpY2t9XG4gICAgICAgICAgc2NhbGU9e2JvdHRvbVNjYWxlfVxuICAgICAgICAgIGxhYmVsUHJvcHM9e3sgeTogNjAgKyB0b3AgfX1cbiAgICAgICAgICB0b3A9e3NjYWxlLnkgJiYgc2NhbGUueShyYW5nZS5taW4pfVxuICAgICAgICAgIHRleHRMYWJlbFByb3BzPXsoKSA9PiAoeyB0ZXh0QW5jaG9yOiAnbWlkZGxlJyB9KX1cbiAgICAgICAgICB0aWNrRm9ybWF0PXsoY291bnQpID0+IGNvdW50fVxuICAgICAgICAgIHRpY2tDb21wb25lbnQ9e2dldFRpY2tDb21wb25lbnR9XG4gICAgICAgICAgYXV0b0ZvY3VzPXthdXRvRm9jdXN9XG4gICAgICAgICAgb25BdXRvRm9jdXNVc2VkPXtvbkF1dG9Gb2N1c1VzZWR9XG4gICAgICAgIC8+XG4gICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgQ2hhcnRBeGVzID0gd2l0aFN0eWxlcyhcbiAgKHRoZW1lKSA9PiAoe1xuICAgIGF4aXM6IHtcbiAgICAgIHN0cm9rZTogY29sb3IucHJpbWFyeURhcmsoKSxcbiAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgIH0sXG4gICAgYXhpc0xpbmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3IucHJpbWFyeURhcmsoKSxcbiAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgIH0sXG4gICAgdGljazoge1xuICAgICAgJyYgPiBsaW5lJzoge1xuICAgICAgICBzdHJva2U6IGNvbG9yLnByaW1hcnlEYXJrKCksXG4gICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgfSxcbiAgICAgIGZpbGw6IGNvbG9yLnByaW1hcnlEYXJrKCksXG4gICAgICBmb250RmFtaWx5OiB0aGVtZS50eXBvZ3JhcGh5LmJvZHkxLmZvbnRGYW1pbHksXG4gICAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgIH0sXG4gICAgZG90dGVkTGluZToge1xuICAgICAgc3Ryb2tlOiBjb2xvci5wcmltYXJ5TGlnaHQoKSxcbiAgICAgIG9wYWNpdHk6IDAuMixcbiAgICB9LFxuICAgIGVycm9yOiB7XG4gICAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSAtIDIsXG4gICAgICBmaWxsOiB0aGVtZS5wYWxldHRlLmVycm9yLm1haW4sXG4gICAgfSxcbiAgICBjdXN0b21Db2xvcjoge1xuICAgICAgY29sb3I6IGAke2NvbG9yLnRlcnRpYXJ5KCl9ICFpbXBvcnRhbnRgXG4gICAgfSxcbiAgfSksXG4gIHsgd2l0aFRoZW1lOiB0cnVlIH0sXG4pKFJhd0NoYXJ0QXhlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IENoYXJ0QXhlcztcbiJdfQ==
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _bar = _interopRequireWildcard(require("../bar"));
14
+
15
+ var _utils = require("./utils");
16
+
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+
21
+ 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; }
22
+
23
+ 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; }
24
+
25
+ describe('BarChart', function () {
26
+ var wrapper = function wrapper(extras) {
27
+ var defaults = {
28
+ classes: {},
29
+ className: 'className',
30
+ graphProps: (0, _utils.graphProps)(),
31
+ xBand: function xBand() {
32
+ return {
33
+ bandwidth: function bandwidth() {}
34
+ };
35
+ }
36
+ };
37
+
38
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
39
+
40
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_bar.Bar, props));
41
+ };
42
+
43
+ describe('snapshot', function () {
44
+ it('renders', function () {
45
+ return expect(wrapper()).toMatchSnapshot();
46
+ });
47
+ it('renders without graphProps', function () {
48
+ return expect(wrapper({
49
+ graphProps: undefined
50
+ })).toMatchSnapshot();
51
+ });
52
+ });
53
+ describe('component', function () {
54
+ var chart = (0, _bar["default"])();
55
+ expect(chart).toEqual({
56
+ type: 'bar',
57
+ Component: _bar.Bar,
58
+ name: 'Bar'
59
+ });
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJzL19fdGVzdHNfXy9iYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJ3cmFwcGVyIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwiZ3JhcGhQcm9wcyIsInhCYW5kIiwiYmFuZHdpZHRoIiwicHJvcHMiLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsInVuZGVmaW5lZCIsImNoYXJ0IiwidG9FcXVhbCIsInR5cGUiLCJDb21wb25lbnQiLCJCYXJDaGFydCIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCLE1BQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLE1BQUQsRUFBWTtBQUMxQixRQUFNQyxRQUFRLEdBQUc7QUFDZkMsTUFBQUEsT0FBTyxFQUFFLEVBRE07QUFFZkMsTUFBQUEsU0FBUyxFQUFFLFdBRkk7QUFHZkMsTUFBQUEsVUFBVSxFQUFFLHdCQUhHO0FBSWZDLE1BQUFBLEtBQUssRUFBRSxpQkFBTTtBQUNYLGVBQU87QUFDTEMsVUFBQUEsU0FBUyxFQUFFLHFCQUFNLENBQUU7QUFEZCxTQUFQO0FBR0Q7QUFSYyxLQUFqQjs7QUFVQSxRQUFNQyxLQUFLLG1DQUFRTixRQUFSLEdBQXFCRCxNQUFyQixDQUFYOztBQUNBLFdBQU8sbUNBQVEsZ0NBQUMsUUFBRCxFQUFjTyxLQUFkLENBQVIsQ0FBUDtBQUNELEdBYkQ7O0FBZUFULEVBQUFBLFFBQVEsQ0FBQyxVQUFELEVBQWEsWUFBTTtBQUN6QlUsSUFBQUEsRUFBRSxDQUFDLFNBQUQsRUFBWTtBQUFBLGFBQU1DLE1BQU0sQ0FBQ1YsT0FBTyxFQUFSLENBQU4sQ0FBa0JXLGVBQWxCLEVBQU47QUFBQSxLQUFaLENBQUY7QUFFQUYsSUFBQUEsRUFBRSxDQUFDLDRCQUFELEVBQStCO0FBQUEsYUFBTUMsTUFBTSxDQUFDVixPQUFPLENBQUM7QUFBRUssUUFBQUEsVUFBVSxFQUFFTztBQUFkLE9BQUQsQ0FBUixDQUFOLENBQTJDRCxlQUEzQyxFQUFOO0FBQUEsS0FBL0IsQ0FBRjtBQUNELEdBSk8sQ0FBUjtBQU1BWixFQUFBQSxRQUFRLENBQUMsV0FBRCxFQUFjLFlBQU07QUFDMUIsUUFBTWMsS0FBSyxHQUFHLHNCQUFkO0FBRUFILElBQUFBLE1BQU0sQ0FBQ0csS0FBRCxDQUFOLENBQWNDLE9BQWQsQ0FBc0I7QUFDcEJDLE1BQUFBLElBQUksRUFBRSxLQURjO0FBRXBCQyxNQUFBQSxTQUFTLEVBQUVDLFFBRlM7QUFHcEJDLE1BQUFBLElBQUksRUFBRTtBQUhjLEtBQXRCO0FBS0QsR0FSTyxDQUFSO0FBU0QsQ0EvQk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCYXIsIHsgQmFyIGFzIEJhckNoYXJ0IH0gZnJvbSAnLi4vYmFyJztcbmltcG9ydCB7IGdyYXBoUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcblxuZGVzY3JpYmUoJ0JhckNoYXJ0JywgKCkgPT4ge1xuICBjb25zdCB3cmFwcGVyID0gKGV4dHJhcykgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBjbGFzc05hbWU6ICdjbGFzc05hbWUnLFxuICAgICAgZ3JhcGhQcm9wczogZ3JhcGhQcm9wcygpLFxuICAgICAgeEJhbmQ6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBiYW5kd2lkdGg6ICgpID0+IHt9LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgcmV0dXJuIHNoYWxsb3coPEJhckNoYXJ0IHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICBpdCgncmVuZGVycycsICgpID0+IGV4cGVjdCh3cmFwcGVyKCkpLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgZ3JhcGhQcm9wcycsICgpID0+IGV4cGVjdCh3cmFwcGVyKHsgZ3JhcGhQcm9wczogdW5kZWZpbmVkIH0pKS50b01hdGNoU25hcHNob3QoKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb21wb25lbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgY2hhcnQgPSBCYXIoKTtcblxuICAgIGV4cGVjdChjaGFydCkudG9FcXVhbCh7XG4gICAgICB0eXBlOiAnYmFyJyxcbiAgICAgIENvbXBvbmVudDogQmFyQ2hhcnQsXG4gICAgICBuYW1lOiAnQmFyJyxcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==