@elastic/charts 46.0.1 → 46.3.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 (154) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/chart_types/flame_chart/flame_api.d.ts +52 -0
  3. package/dist/chart_types/flame_chart/flame_api.d.ts.map +1 -0
  4. package/dist/chart_types/flame_chart/flame_api.js +34 -0
  5. package/dist/chart_types/flame_chart/flame_api.js.map +1 -0
  6. package/dist/chart_types/flame_chart/flame_chart.d.ts +2 -0
  7. package/dist/chart_types/flame_chart/flame_chart.d.ts.map +1 -0
  8. package/dist/chart_types/flame_chart/flame_chart.js +681 -0
  9. package/dist/chart_types/flame_chart/flame_chart.js.map +1 -0
  10. package/dist/chart_types/flame_chart/internal_chart_state.d.ts +2 -0
  11. package/dist/chart_types/flame_chart/internal_chart_state.d.ts.map +1 -0
  12. package/dist/chart_types/flame_chart/internal_chart_state.js +33 -0
  13. package/dist/chart_types/flame_chart/internal_chart_state.js.map +1 -0
  14. package/dist/chart_types/flame_chart/render/common.d.ts +2 -0
  15. package/dist/chart_types/flame_chart/render/common.d.ts.map +1 -0
  16. package/dist/chart_types/flame_chart/render/common.js +11 -0
  17. package/dist/chart_types/flame_chart/render/common.js.map +1 -0
  18. package/dist/chart_types/flame_chart/render/draw_a_frame.d.ts +2 -0
  19. package/dist/chart_types/flame_chart/render/draw_a_frame.d.ts.map +1 -0
  20. package/dist/chart_types/flame_chart/render/draw_a_frame.js +63 -0
  21. package/dist/chart_types/flame_chart/render/draw_a_frame.js.map +1 -0
  22. package/dist/chart_types/flame_chart/render/draw_canvas.d.ts +2 -0
  23. package/dist/chart_types/flame_chart/render/draw_canvas.d.ts.map +1 -0
  24. package/dist/chart_types/flame_chart/render/draw_canvas.js +115 -0
  25. package/dist/chart_types/flame_chart/render/draw_canvas.js.map +1 -0
  26. package/dist/chart_types/flame_chart/render/draw_webgl.d.ts +2 -0
  27. package/dist/chart_types/flame_chart/render/draw_webgl.d.ts.map +1 -0
  28. package/dist/chart_types/flame_chart/render/draw_webgl.js +42 -0
  29. package/dist/chart_types/flame_chart/render/draw_webgl.js.map +1 -0
  30. package/dist/chart_types/flame_chart/render/ensure_webgl.d.ts +2 -0
  31. package/dist/chart_types/flame_chart/render/ensure_webgl.d.ts.map +1 -0
  32. package/dist/chart_types/flame_chart/render/ensure_webgl.js +34 -0
  33. package/dist/chart_types/flame_chart/render/ensure_webgl.js.map +1 -0
  34. package/dist/chart_types/flame_chart/shaders.d.ts +2 -0
  35. package/dist/chart_types/flame_chart/shaders.d.ts.map +1 -0
  36. package/dist/chart_types/flame_chart/shaders.js +14 -0
  37. package/dist/chart_types/flame_chart/shaders.js.map +1 -0
  38. package/dist/chart_types/flame_chart/types.d.ts +2 -0
  39. package/dist/chart_types/flame_chart/types.d.ts.map +1 -0
  40. package/dist/chart_types/flame_chart/types.js +18 -0
  41. package/dist/chart_types/flame_chart/types.js.map +1 -0
  42. package/dist/chart_types/index.d.ts +1 -0
  43. package/dist/chart_types/index.d.ts.map +1 -1
  44. package/dist/chart_types/index.js +1 -0
  45. package/dist/chart_types/index.js.map +1 -1
  46. package/dist/chart_types/partition_chart/layout/types/config_types.d.ts +1 -9
  47. package/dist/chart_types/partition_chart/layout/types/config_types.d.ts.map +1 -1
  48. package/dist/chart_types/partition_chart/layout/types/viewmodel_types.d.ts.map +1 -1
  49. package/dist/chart_types/partition_chart/layout/types/viewmodel_types.js.map +1 -1
  50. package/dist/chart_types/partition_chart/layout/viewmodel/picked_shapes.js.map +1 -1
  51. package/dist/chart_types/partition_chart/renderer/dom/highlighter.js +1 -2
  52. package/dist/chart_types/partition_chart/renderer/dom/highlighter.js.map +1 -1
  53. package/dist/chart_types/partition_chart/specs/index.d.ts +4 -3
  54. package/dist/chart_types/partition_chart/specs/index.d.ts.map +1 -1
  55. package/dist/chart_types/partition_chart/specs/index.js.map +1 -1
  56. package/dist/chart_types/partition_chart/state/selectors/geometries.js.map +1 -1
  57. package/dist/chart_types/xy_chart/annotations/rect/dimensions.js +11 -4
  58. package/dist/chart_types/xy_chart/annotations/rect/dimensions.js.map +1 -1
  59. package/dist/chart_types/xy_chart/annotations/rect/tooltip.js +9 -10
  60. package/dist/chart_types/xy_chart/annotations/rect/tooltip.js.map +1 -1
  61. package/dist/chart_types/xy_chart/annotations/types.d.ts.map +1 -1
  62. package/dist/chart_types/xy_chart/renderer/canvas/animations/animation.d.ts +57 -0
  63. package/dist/chart_types/xy_chart/renderer/canvas/animations/animation.d.ts.map +1 -0
  64. package/dist/chart_types/xy_chart/renderer/canvas/animations/animation.js +98 -0
  65. package/dist/chart_types/xy_chart/renderer/canvas/animations/animation.js.map +1 -0
  66. package/dist/chart_types/xy_chart/renderer/canvas/animations/index.d.ts +2 -0
  67. package/dist/chart_types/xy_chart/renderer/canvas/animations/index.d.ts.map +1 -0
  68. package/dist/chart_types/xy_chart/renderer/canvas/animations/index.js +77 -0
  69. package/dist/chart_types/xy_chart/renderer/canvas/animations/index.js.map +1 -0
  70. package/dist/chart_types/xy_chart/renderer/canvas/annotations/index.js +5 -3
  71. package/dist/chart_types/xy_chart/renderer/canvas/annotations/index.js.map +1 -1
  72. package/dist/chart_types/xy_chart/renderer/canvas/annotations/lines.js +16 -8
  73. package/dist/chart_types/xy_chart/renderer/canvas/annotations/lines.js.map +1 -1
  74. package/dist/chart_types/xy_chart/renderer/canvas/annotations/rect.js +41 -9
  75. package/dist/chart_types/xy_chart/renderer/canvas/annotations/rect.js.map +1 -1
  76. package/dist/chart_types/xy_chart/renderer/canvas/renderers.js +74 -64
  77. package/dist/chart_types/xy_chart/renderer/canvas/renderers.js.map +1 -1
  78. package/dist/chart_types/xy_chart/renderer/canvas/xy_chart.js +9 -1
  79. package/dist/chart_types/xy_chart/renderer/canvas/xy_chart.js.map +1 -1
  80. package/dist/chart_types/xy_chart/renderer/common/utils.d.ts +2 -0
  81. package/dist/chart_types/xy_chart/renderer/common/utils.d.ts.map +1 -0
  82. package/dist/chart_types/xy_chart/renderer/common/utils.js +15 -0
  83. package/dist/chart_types/xy_chart/renderer/common/utils.js.map +1 -0
  84. package/dist/chart_types/xy_chart/renderer/dom/annotations/annotations.js +21 -7
  85. package/dist/chart_types/xy_chart/renderer/dom/annotations/annotations.js.map +1 -1
  86. package/dist/chart_types/xy_chart/renderer/dom/annotations/line_marker.js +18 -11
  87. package/dist/chart_types/xy_chart/renderer/dom/annotations/line_marker.js.map +1 -1
  88. package/dist/chart_types/xy_chart/state/selectors/get_annotation_tooltip_state.js +2 -1
  89. package/dist/chart_types/xy_chart/state/selectors/get_annotation_tooltip_state.js.map +1 -1
  90. package/dist/chart_types/xy_chart/state/selectors/get_highlighted_annotation_ids_selector.d.ts +2 -0
  91. package/dist/chart_types/xy_chart/state/selectors/get_highlighted_annotation_ids_selector.d.ts.map +1 -0
  92. package/dist/chart_types/xy_chart/state/selectors/get_highlighted_annotation_ids_selector.js +28 -0
  93. package/dist/chart_types/xy_chart/state/selectors/get_highlighted_annotation_ids_selector.js.map +1 -0
  94. package/dist/chart_types/xy_chart/state/selectors/get_multiple_rectangle_annotations.js +1 -4
  95. package/dist/chart_types/xy_chart/state/selectors/get_multiple_rectangle_annotations.js.map +1 -1
  96. package/dist/chart_types/xy_chart/utils/specs.d.ts +1 -1
  97. package/dist/chart_types/xy_chart/utils/specs.d.ts.map +1 -1
  98. package/dist/common/animation.d.ts +9 -0
  99. package/dist/common/animation.d.ts.map +1 -0
  100. package/dist/common/animation.js +3 -0
  101. package/dist/common/animation.js.map +1 -0
  102. package/dist/common/event_handler_selectors.js +3 -7
  103. package/dist/common/event_handler_selectors.js.map +1 -1
  104. package/dist/common/kingly.d.ts +2 -0
  105. package/dist/common/kingly.d.ts.map +1 -0
  106. package/dist/common/kingly.js +481 -0
  107. package/dist/common/kingly.js.map +1 -0
  108. package/dist/common/webgl_constants.d.ts +2 -0
  109. package/dist/common/webgl_constants.d.ts.map +1 -0
  110. package/dist/common/webgl_constants.js +559 -0
  111. package/dist/common/webgl_constants.js.map +1 -0
  112. package/dist/components/chart_container.js +2 -2
  113. package/dist/components/chart_container.js.map +1 -1
  114. package/dist/components/chart_resizer.js +2 -4
  115. package/dist/components/chart_resizer.js.map +1 -1
  116. package/dist/components/tooltip/tooltip.js +17 -18
  117. package/dist/components/tooltip/tooltip.js.map +1 -1
  118. package/dist/index.d.ts +5 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +6 -1
  121. package/dist/index.js.map +1 -1
  122. package/dist/specs/constants.d.ts +1 -1
  123. package/dist/specs/settings.d.ts +11 -2
  124. package/dist/specs/settings.d.ts.map +1 -1
  125. package/dist/specs/settings.js.map +1 -1
  126. package/dist/state/chart_state.js +2 -0
  127. package/dist/state/chart_state.js.map +1 -1
  128. package/dist/state/reducers/interactions.js +20 -21
  129. package/dist/state/reducers/interactions.js.map +1 -1
  130. package/dist/state/selectors/get_chart_container_dimensions.js +15 -17
  131. package/dist/state/selectors/get_chart_container_dimensions.js.map +1 -1
  132. package/dist/theme.scss +1 -0
  133. package/dist/theme_dark.css +1 -1
  134. package/dist/theme_dark.css.map +1 -1
  135. package/dist/theme_light.css +1 -1
  136. package/dist/theme_light.css.map +1 -1
  137. package/dist/theme_only_dark.css +1 -1
  138. package/dist/theme_only_dark.css.map +1 -1
  139. package/dist/theme_only_light.css +1 -1
  140. package/dist/theme_only_light.css.map +1 -1
  141. package/dist/utils/logger.js +1 -1
  142. package/dist/utils/logger.js.map +1 -1
  143. package/dist/utils/themes/merge_utils.d.ts +3 -2
  144. package/dist/utils/themes/merge_utils.d.ts.map +1 -1
  145. package/dist/utils/themes/merge_utils.js +17 -28
  146. package/dist/utils/themes/merge_utils.js.map +1 -1
  147. package/dist/utils/themes/theme.d.ts +19 -6
  148. package/dist/utils/themes/theme.d.ts.map +1 -1
  149. package/dist/utils/themes/theme.js.map +1 -1
  150. package/dist/utils/time_functions.d.ts +27 -0
  151. package/dist/utils/time_functions.d.ts.map +1 -0
  152. package/dist/utils/time_functions.js +29 -0
  153. package/dist/utils/time_functions.js.map +1 -0
  154. package/package.json +2 -1
@@ -0,0 +1,681 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
31
+ }) : (function(o, m, k, k2) {
32
+ if (k2 === undefined) k2 = k;
33
+ o[k2] = m[k];
34
+ }));
35
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
36
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
37
+ }) : function(o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar = (this && this.__importStar) || function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.FlameWithTooltip = void 0;
49
+ var react_1 = __importStar(require("react"));
50
+ var react_redux_1 = require("react-redux");
51
+ var redux_1 = require("redux");
52
+ var __1 = require("..");
53
+ var constants_1 = require("../../common/constants");
54
+ var kingly_1 = require("../../common/kingly");
55
+ var tooltip_1 = require("../../components/tooltip/tooltip");
56
+ var specs_1 = require("../../specs");
57
+ var chart_1 = require("../../state/actions/chart");
58
+ var mouse_1 = require("../../state/actions/mouse");
59
+ var get_accessibility_config_1 = require("../../state/selectors/get_accessibility_config");
60
+ var get_settings_specs_1 = require("../../state/selectors/get_settings_specs");
61
+ var utils_1 = require("../../state/utils");
62
+ var common_1 = require("../../utils/common");
63
+ var common_2 = require("./render/common");
64
+ var draw_a_frame_1 = require("./render/draw_a_frame");
65
+ var ensure_webgl_1 = require("./render/ensure_webgl");
66
+ var shaders_1 = require("./shaders");
67
+ var types_1 = require("./types");
68
+ var PINCH_ZOOM_CHECK_INTERVAL_MS = 100;
69
+ var SIDE_OVERSHOOT_RATIO = 0.05;
70
+ var RECURRENCE_ALPHA_PER_MS_X = 0.01;
71
+ var RECURRENCE_ALPHA_PER_MS_Y = 0.0062;
72
+ var SINGLE_CLICK_EMPTY_FOCUS = true;
73
+ var IS_META_REQUIRED_FOR_ZOOM = false;
74
+ var ZOOM_SPEED = 0.0015;
75
+ var DEEPEST_ZOOM_RATIO = 1e-7;
76
+ var ZOOM_FROM_EDGE_BAND = 16;
77
+ var ZOOM_FROM_EDGE_BAND_LEFT = ZOOM_FROM_EDGE_BAND + draw_a_frame_1.PADDING_LEFT;
78
+ var ZOOM_FROM_EDGE_BAND_RIGHT = ZOOM_FROM_EDGE_BAND + draw_a_frame_1.PADDING_RIGHT;
79
+ var ZOOM_FROM_EDGE_BAND_TOP = ZOOM_FROM_EDGE_BAND + draw_a_frame_1.PADDING_TOP;
80
+ var ZOOM_FROM_EDGE_BAND_BOTTOM = ZOOM_FROM_EDGE_BAND + draw_a_frame_1.PADDING_BOTTOM;
81
+ var LEFT_MOUSE_BUTTON = 1;
82
+ var unitRowPitch = function (position) { return (position.length >= 4 ? position[1] - position[3] : 1); };
83
+ var initialPixelRowPitch = function () { return 16; };
84
+ var specValueFormatter = function (d) { return d; };
85
+ var browserRootWindow = function () {
86
+ var rootWindow = window;
87
+ while (window.parent && window.parent.window !== rootWindow)
88
+ rootWindow = rootWindow.parent.window;
89
+ return rootWindow;
90
+ };
91
+ var columnToRowPositions = function (_a, i) {
92
+ var position1 = _a.position1, size1 = _a.size1;
93
+ return ({
94
+ x0: position1[i * 2],
95
+ x1: position1[i * 2] + size1[i],
96
+ y0: position1[i * 2 + 1],
97
+ y1: position1[i * 2 + 1] + unitRowPitch(position1),
98
+ });
99
+ };
100
+ var focusForArea = function (chartHeight, _a) {
101
+ var x0 = _a.x0, x1 = _a.x1, y0 = _a.y0, y1 = _a.y1;
102
+ var sideOvershoot = SIDE_OVERSHOOT_RATIO * (x1 - x0);
103
+ var unitHeight = (chartHeight / initialPixelRowPitch()) * (y1 - y0);
104
+ var intendedY0 = y1 - unitHeight;
105
+ var bottomOvershoot = Math.max(0, -intendedY0);
106
+ var top = Math.min(1, y1 + bottomOvershoot);
107
+ return {
108
+ x0: Math.max(0, x0 - sideOvershoot),
109
+ x1: Math.min(1, x1 + sideOvershoot),
110
+ y0: Math.max(0, intendedY0),
111
+ y1: Math.min(1, top),
112
+ };
113
+ };
114
+ var focusRect = function (columnarViewModel, chartHeight, drilldownDatumIndex, drilldownTimestamp) { return (__assign({ timestamp: drilldownTimestamp }, focusForArea(chartHeight, columnToRowPositions(columnarViewModel, drilldownDatumIndex || 0)))); };
115
+ var getColor = function (c, i) {
116
+ var r = Math.round(255 * c[4 * i]);
117
+ var g = Math.round(255 * c[4 * i + 1]);
118
+ var b = Math.round(255 * c[4 * i + 2]);
119
+ var a = c[4 * i + 3];
120
+ return "rgba(" + r + ", " + g + ", " + b + ", " + a + ")";
121
+ };
122
+ var colorToDatumIndex = function (pixel) {
123
+ var isEmptyArea = pixel[0] + pixel[1] + pixel[2] + pixel[3] < shaders_1.GEOM_INDEX_OFFSET;
124
+ return isEmptyArea ? NaN : pixel[3] + 256 * (pixel[2] + 256 * (pixel[1] + 256 * pixel[0])) - shaders_1.GEOM_INDEX_OFFSET;
125
+ };
126
+ var getRegExp = function (searchString) {
127
+ var regex;
128
+ try {
129
+ regex = new RegExp(searchString);
130
+ }
131
+ catch (_a) {
132
+ return new RegExp('iIUiUYIuiGjhG678987gjhgfytr678576');
133
+ }
134
+ return regex;
135
+ };
136
+ var FlameComponent = (function (_super) {
137
+ __extends(FlameComponent, _super);
138
+ function FlameComponent(props) {
139
+ var _this = _super.call(this, props) || this;
140
+ _this.startOfDragX = NaN;
141
+ _this.startOfDragX0 = NaN;
142
+ _this.startOfDragY = NaN;
143
+ _this.startOfDragY0 = NaN;
144
+ _this.currentSearchString = '';
145
+ _this.currentSearchHitCount = 0;
146
+ _this.caseSensitive = false;
147
+ _this.useRegex = false;
148
+ _this.focusedMatchIndex = NaN;
149
+ _this.setupDevicePixelRatioChangeListener = function () {
150
+ window.matchMedia("(resolution: " + window.devicePixelRatio + "dppx)").addEventListener('change', function () {
151
+ _this.setState({});
152
+ _this.setupDevicePixelRatioChangeListener();
153
+ }, { once: true });
154
+ };
155
+ _this.setupViewportScaleChangeListener = function () {
156
+ window.clearInterval(_this.pinchZoomSetInterval);
157
+ _this.pinchZoomSetInterval = window.setInterval(function () {
158
+ var pinchZoomScale = browserRootWindow().visualViewport.scale;
159
+ if (pinchZoomScale !== _this.pinchZoomScale) {
160
+ _this.pinchZoomScale = pinchZoomScale;
161
+ _this.setState({});
162
+ }
163
+ }, PINCH_ZOOM_CHECK_INTERVAL_MS);
164
+ };
165
+ _this.componentDidMount = function () {
166
+ var _a;
167
+ _this.tryCanvasContext();
168
+ _this.drawCanvas();
169
+ _this.props.onChartRendered();
170
+ _this.setupDevicePixelRatioChangeListener();
171
+ (_a = _this.props.containerRef().current) === null || _a === void 0 ? void 0 : _a.addEventListener('wheel', _this.preventScroll, { passive: false });
172
+ };
173
+ _this.componentDidUpdate = function () {
174
+ if (!_this.ctx)
175
+ _this.tryCanvasContext();
176
+ _this.ensurePickTexture();
177
+ _this.drawCanvas();
178
+ };
179
+ _this.datumAtXY = function (x, y) {
180
+ return _this.glContext ? colorToDatumIndex((0, kingly_1.readPixel)(_this.glContext, x, y)) : NaN;
181
+ };
182
+ _this.getHoveredDatumIndex = function (e) {
183
+ var pr = window.devicePixelRatio * _this.pinchZoomScale;
184
+ return {
185
+ datumIndex: _this.datumAtXY(pr * _this.pointerX, pr * (_this.props.chartDimensions.height - _this.pointerY)),
186
+ timestamp: e.timeStamp,
187
+ };
188
+ };
189
+ _this.getDragDistanceX = function () { return _this.pointerX - _this.startOfDragX; };
190
+ _this.getDragDistanceY = function () { return -(_this.pointerY - _this.startOfDragY); };
191
+ _this.isDragging = function (_a) {
192
+ var buttons = _a.buttons;
193
+ return buttons & LEFT_MOUSE_BUTTON;
194
+ };
195
+ _this.handleMouseHoverMove = function (e) {
196
+ if (!_this.isDragging(e)) {
197
+ e.stopPropagation();
198
+ _this.updatePointerLocation(e);
199
+ var hovered = _this.getHoveredDatumIndex(e);
200
+ var prevHoverIndex = _this.hoverIndex >= 0 ? _this.hoverIndex : NaN;
201
+ if (hovered) {
202
+ _this.hoverIndex = hovered.datumIndex;
203
+ if (!Object.is(_this.hoverIndex, prevHoverIndex)) {
204
+ if (Number.isFinite(hovered.datumIndex)) {
205
+ _this.props.onElementOver([{ vmIndex: hovered.datumIndex }]);
206
+ }
207
+ else {
208
+ _this.hoverIndex = NaN;
209
+ _this.props.onElementOut();
210
+ }
211
+ }
212
+ _this.setState({});
213
+ }
214
+ }
215
+ };
216
+ _this.handleMouseDragMove = function (e) {
217
+ e.stopPropagation();
218
+ _this.updatePointerLocation(e);
219
+ if (_this.isDragging(e)) {
220
+ var _a = _this.currentFocus, x0 = _a.x0, x1 = _a.x1, y0 = _a.y0, y1 = _a.y1;
221
+ var focusWidth = x1 - x0;
222
+ var focusHeight = y1 - y0;
223
+ if (Number.isNaN(_this.startOfDragX0))
224
+ _this.startOfDragX0 = x0;
225
+ if (Number.isNaN(_this.startOfDragY0))
226
+ _this.startOfDragY0 = y0;
227
+ var dragDistanceX = _this.getDragDistanceX();
228
+ var dragDistanceY = _this.getDragDistanceY();
229
+ var _b = _this.props.chartDimensions, chartWidth = _b.width, chartHeight = _b.height;
230
+ var deltaIntentX = (-dragDistanceX / chartWidth) * focusWidth;
231
+ var deltaIntentY = (-dragDistanceY / chartHeight) * focusHeight;
232
+ var deltaCorrectionX = deltaIntentX > 0
233
+ ? Math.min(0, 1 - (_this.startOfDragX0 + focusWidth + deltaIntentX))
234
+ : -Math.min(0, _this.startOfDragX0 + deltaIntentX);
235
+ var deltaCorrectionY = deltaIntentY > 0
236
+ ? Math.min(0, 1 - (_this.startOfDragY0 + focusHeight + deltaIntentY))
237
+ : -Math.min(0, _this.startOfDragY0 + deltaIntentY);
238
+ var deltaX = deltaIntentX + deltaCorrectionX;
239
+ var deltaY = deltaIntentY + deltaCorrectionY;
240
+ var newX0 = (0, common_1.clamp)(_this.startOfDragX0 + deltaX, 0, 1);
241
+ var newX1 = (0, common_1.clamp)(_this.startOfDragX0 + focusWidth + deltaX, 0, 1);
242
+ var newY0 = (0, common_1.clamp)(_this.startOfDragY0 + deltaY, 0, 1);
243
+ var newY1 = (0, common_1.clamp)(_this.startOfDragY0 + focusHeight + deltaY, 0, 1);
244
+ var newFocus = { x0: newX0, x1: newX1, y0: newY0, y1: newY1, timestamp: e.timeStamp };
245
+ _this.currentFocus = newFocus;
246
+ _this.targetFocus = newFocus;
247
+ _this.smartDraw();
248
+ }
249
+ };
250
+ _this.clearDrag = function () {
251
+ _this.startOfDragX = NaN;
252
+ _this.startOfDragX0 = NaN;
253
+ _this.startOfDragY = NaN;
254
+ _this.startOfDragY0 = NaN;
255
+ };
256
+ _this.resetDrag = function () {
257
+ _this.startOfDragX = _this.pointerX;
258
+ _this.startOfDragY = _this.pointerY;
259
+ };
260
+ _this.handleMouseDown = function (e) {
261
+ e.stopPropagation();
262
+ _this.resetDrag();
263
+ window.addEventListener('mousemove', _this.handleMouseDragMove, { passive: true });
264
+ window.addEventListener('mouseup', _this.handleMouseUp, { passive: true });
265
+ };
266
+ _this.handleMouseUp = function (e) {
267
+ e.stopPropagation();
268
+ window.removeEventListener('mousemove', _this.handleMouseDragMove);
269
+ window.removeEventListener('mouseup', _this.handleMouseUp);
270
+ _this.updatePointerLocation(e);
271
+ var dragDistanceX = _this.getDragDistanceX();
272
+ var dragDistanceY = _this.getDragDistanceY();
273
+ if (!dragDistanceX && !dragDistanceY) {
274
+ var hovered = _this.getHoveredDatumIndex(e);
275
+ var isDoubleClick = e.detail > 1;
276
+ var hasClickedOnRectangle = Number.isFinite(hovered === null || hovered === void 0 ? void 0 : hovered.datumIndex);
277
+ var mustFocus = SINGLE_CLICK_EMPTY_FOCUS || isDoubleClick !== hasClickedOnRectangle;
278
+ if (mustFocus) {
279
+ _this.targetFocus = focusRect(_this.props.columnarViewModel, _this.props.chartDimensions.height, hovered.datumIndex, hovered.timestamp);
280
+ _this.prevT = NaN;
281
+ _this.hoverIndex = NaN;
282
+ _this.setState({});
283
+ _this.props.onElementClick([{ vmIndex: hovered.datumIndex }]);
284
+ }
285
+ }
286
+ _this.clearDrag();
287
+ _this.setState({});
288
+ };
289
+ _this.handleMouseLeave = function (e) {
290
+ e.stopPropagation();
291
+ _this.smartDraw();
292
+ };
293
+ _this.preventScroll = function (e) { return e.metaKey === IS_META_REQUIRED_FOR_ZOOM && e.preventDefault(); };
294
+ _this.handleWheel = function (e) {
295
+ if (e.metaKey !== IS_META_REQUIRED_FOR_ZOOM)
296
+ return;
297
+ _this.updatePointerLocation(e);
298
+ var _a = _this.currentFocus, x0 = _a.x0, x1 = _a.x1, y0 = _a.y0, y1 = _a.y1;
299
+ var wheelDelta = -e.deltaY;
300
+ var delta = wheelDelta * ZOOM_SPEED;
301
+ var unitX = _this.pointerX / _this.props.chartDimensions.width;
302
+ var unitY = (_this.props.chartDimensions.height - _this.pointerY) / _this.props.chartDimensions.height;
303
+ var zoomOut = delta <= 0;
304
+ var midX = Math.abs(x0) < draw_a_frame_1.EPSILON && (zoomOut || _this.pointerX < ZOOM_FROM_EDGE_BAND_LEFT)
305
+ ? 0
306
+ : Math.abs(x1 - 1) < draw_a_frame_1.EPSILON &&
307
+ (zoomOut || _this.pointerX > _this.props.chartDimensions.width - ZOOM_FROM_EDGE_BAND_RIGHT)
308
+ ? 1
309
+ : (0, common_1.clamp)(x0 + unitX * Math.abs(x1 - x0), 0, 1);
310
+ var midY = Math.abs(y0) < draw_a_frame_1.EPSILON &&
311
+ (zoomOut || _this.pointerY > _this.props.chartDimensions.height - ZOOM_FROM_EDGE_BAND_BOTTOM)
312
+ ? 0
313
+ : Math.abs(y1 - 1) < draw_a_frame_1.EPSILON && (zoomOut || _this.pointerY < ZOOM_FROM_EDGE_BAND_TOP)
314
+ ? 1
315
+ : (0, common_1.clamp)(y0 + unitY * Math.abs(y1 - y0), 0, 1);
316
+ var targetX0 = (0, common_1.clamp)(x0 - delta * (x0 - midX), 0, 1);
317
+ var targetX1 = (0, common_1.clamp)(x1 + delta * (midX - x1), 0, 1);
318
+ var targetY0 = (0, common_1.clamp)(y0 - delta * (y0 - midY), 0, 1);
319
+ var targetY1 = (0, common_1.clamp)(y1 + delta * (midY - y1), 0, 1);
320
+ var newX0 = Math.min(targetX0, midX);
321
+ var newX1 = Math.max(targetX1, midX);
322
+ var newY0 = Math.min(targetY0, midY);
323
+ var newY1 = Math.max(targetY1, midY);
324
+ var xZoom = (e.ctrlKey || !e.altKey) && newX1 - newX0 >= DEEPEST_ZOOM_RATIO;
325
+ var yZoom = (e.ctrlKey || e.altKey) && newY1 - newY0 >= unitRowPitch(_this.props.columnarViewModel.position1);
326
+ if (xZoom || yZoom) {
327
+ var newFocus = {
328
+ x0: xZoom ? newX0 : x0,
329
+ x1: xZoom ? newX1 : x1,
330
+ y0: yZoom ? newY0 : y0,
331
+ y1: yZoom ? newY1 : y1,
332
+ timestamp: e.timeStamp,
333
+ };
334
+ _this.currentFocus = newFocus;
335
+ _this.targetFocus = newFocus;
336
+ }
337
+ _this.smartDraw();
338
+ };
339
+ _this.focusOnAllMatches = function () {
340
+ _this.currentSearchHitCount = 0;
341
+ var searchString = _this.currentSearchString;
342
+ var customizedSearchString = _this.caseSensitive ? searchString : searchString.toLowerCase();
343
+ var regex = _this.useRegex && getRegExp(searchString);
344
+ var columns = _this.props.columnarViewModel;
345
+ _this.currentColor = new Float32Array(columns.color);
346
+ var labels = columns.label;
347
+ var size = columns.size1;
348
+ var position = columns.position1;
349
+ var rowHeight = unitRowPitch(position);
350
+ var datumCount = labels.length;
351
+ var x0 = Infinity;
352
+ var x1 = -Infinity;
353
+ var y0 = Infinity;
354
+ var y1 = -Infinity;
355
+ for (var i = 0; i < datumCount; i++) {
356
+ var label = _this.caseSensitive ? labels[i] : labels[i].toLowerCase();
357
+ if (regex ? label.match(regex) : label.includes(customizedSearchString)) {
358
+ _this.currentSearchHitCount++;
359
+ x0 = Math.min(x0, position[2 * i]);
360
+ x1 = Math.max(x1, position[2 * i] + size[i]);
361
+ y0 = Math.min(y0, position[2 * i + 1]);
362
+ y1 = Math.max(y1, position[2 * i + 1] + rowHeight);
363
+ }
364
+ else {
365
+ _this.currentColor[4 * i + 3] *= 0.25;
366
+ }
367
+ }
368
+ if (Number.isFinite(x0)) {
369
+ Object.assign(_this.targetFocus, focusForArea(_this.props.chartDimensions.height, { x0: x0, x1: x1, y0: y0, y1: y1 }));
370
+ }
371
+ };
372
+ _this.searchForText = function (force) {
373
+ var input = _this.searchInputRef.current;
374
+ var searchString = input === null || input === void 0 ? void 0 : input.value;
375
+ if (!input || typeof searchString !== 'string' || (searchString === _this.currentSearchString && !force))
376
+ return;
377
+ _this.currentSearchString = searchString;
378
+ _this.focusOnAllMatches();
379
+ var colorSetter = _this.glResources.attributes.get('color');
380
+ if (_this.glContext && colorSetter) {
381
+ (0, ensure_webgl_1.uploadToWebgl)(_this.glContext, new Map([['color', colorSetter]]), { color: _this.currentColor });
382
+ }
383
+ _this.focusedMatchIndex = NaN;
384
+ _this.setState({});
385
+ };
386
+ _this.handleKeyPress = function (e) {
387
+ e.stopPropagation();
388
+ _this.searchForText(false);
389
+ };
390
+ _this.focusOnHit = function (timestamp) {
391
+ if (Number.isNaN(_this.focusedMatchIndex)) {
392
+ _this.focusOnAllMatches();
393
+ }
394
+ else {
395
+ var datumIndex = NaN;
396
+ var hitEnumerator = -1;
397
+ var searchString = _this.currentSearchString;
398
+ var customizedSearchString = _this.caseSensitive ? searchString : searchString.toLowerCase();
399
+ var regex = _this.useRegex && getRegExp(searchString);
400
+ var labels = _this.props.columnarViewModel.label;
401
+ for (var i = 0; i < labels.length; i++) {
402
+ var label = _this.caseSensitive ? labels[i] : labels[i].toLowerCase();
403
+ if (regex ? label.match(regex) : label.includes(customizedSearchString)) {
404
+ datumIndex = i;
405
+ hitEnumerator++;
406
+ if (hitEnumerator === _this.focusedMatchIndex)
407
+ break;
408
+ }
409
+ }
410
+ if (hitEnumerator >= 0) {
411
+ _this.targetFocus = focusRect(_this.props.columnarViewModel, _this.props.chartDimensions.height, datumIndex, timestamp);
412
+ _this.prevT = NaN;
413
+ _this.hoverIndex = NaN;
414
+ }
415
+ }
416
+ };
417
+ _this.render = function () {
418
+ var _a = _this.props, forwardStageRef = _a.forwardStageRef, _b = _a.chartDimensions, requestedWidth = _b.width, requestedHeight = _b.height, a11ySettings = _a.a11ySettings;
419
+ var width = (0, common_2.roundUpSize)(requestedWidth);
420
+ var height = (0, common_2.roundUpSize)(requestedHeight);
421
+ var style = {
422
+ width: width,
423
+ height: height,
424
+ top: 0,
425
+ left: 0,
426
+ padding: 0,
427
+ margin: 0,
428
+ border: 0,
429
+ position: 'absolute',
430
+ cursor: _this.startOfDragX ? 'grab' : _this.hoverIndex >= 0 ? 'pointer' : constants_1.DEFAULT_CSS_CURSOR,
431
+ };
432
+ var dpr = window.devicePixelRatio * _this.pinchZoomScale;
433
+ var canvasWidth = width * dpr;
434
+ var canvasHeight = height * dpr;
435
+ var columns = _this.props.columnarViewModel;
436
+ var hitCount = _this.currentSearchHitCount;
437
+ return (react_1.default.createElement(react_1.default.Fragment, null,
438
+ react_1.default.createElement("figure", { "aria-labelledby": a11ySettings.labelId, "aria-describedby": a11ySettings.descriptionId },
439
+ react_1.default.createElement("canvas", { ref: _this.glCanvasRef, className: "echCanvasRenderer", width: canvasWidth, height: canvasHeight, style: style, role: "presentation" }),
440
+ react_1.default.createElement("canvas", { ref: forwardStageRef, tabIndex: 0, className: "echCanvasRenderer", width: canvasWidth, height: canvasHeight, onMouseMove: _this.handleMouseHoverMove, onMouseDown: _this.handleMouseDown, onMouseLeave: _this.handleMouseLeave, onWheel: _this.handleWheel, style: style, role: "presentation" })),
441
+ react_1.default.createElement("div", { style: {
442
+ position: 'absolute',
443
+ transform: "translateY(" + (_this.props.chartDimensions.height - draw_a_frame_1.PADDING_BOTTOM + 4) + "px)",
444
+ } },
445
+ react_1.default.createElement("input", { ref: _this.searchInputRef, title: "Search string or regex pattern", type: "text", tabIndex: 0, placeholder: "Enter search string", onKeyPress: _this.handleKeyPress, onKeyUp: _this.handleKeyPress, style: {
446
+ border: '0px solid lightgray',
447
+ padding: 3,
448
+ outline: 'none',
449
+ background: 'rgba(255,0,255,0)',
450
+ } }),
451
+ react_1.default.createElement("label", { title: "Case sensitivity (highlighted: case sensitive)", style: {
452
+ color: _this.caseSensitive && !_this.useRegex ? 'black' : 'darkgrey',
453
+ backgroundColor: 'rgb(228, 228, 228)',
454
+ fontWeight: 'bolder',
455
+ paddingInline: 4,
456
+ marginInline: 4,
457
+ borderRadius: 4,
458
+ opacity: _this.currentSearchString ? 1 : 0,
459
+ transition: 'opacity 250ms ease-in-out',
460
+ } },
461
+ "Cc",
462
+ react_1.default.createElement("input", { type: "checkbox", tabIndex: 0, onClick: function () {
463
+ if (!_this.currentSearchString)
464
+ return;
465
+ _this.caseSensitive = !_this.caseSensitive;
466
+ _this.searchForText(true);
467
+ }, style: { display: 'none' } })),
468
+ react_1.default.createElement("label", { title: "Regex matching (highlighted: use regex)", style: {
469
+ color: _this.useRegex ? 'black' : 'darkgrey',
470
+ backgroundColor: 'rgb(228, 228, 228)',
471
+ fontWeight: 'bolder',
472
+ paddingInline: 4,
473
+ marginInline: 4,
474
+ borderRadius: 4,
475
+ opacity: _this.currentSearchString ? 1 : 0,
476
+ transition: 'opacity 250ms ease-in-out',
477
+ } },
478
+ ". *",
479
+ react_1.default.createElement("input", { type: "checkbox", tabIndex: 0, onClick: function () {
480
+ if (!_this.currentSearchString)
481
+ return;
482
+ _this.useRegex = !_this.useRegex;
483
+ _this.searchForText(true);
484
+ }, style: { display: 'none' } })),
485
+ react_1.default.createElement("label", { title: "Previous hit", style: {
486
+ color: hitCount ? 'black' : 'darkgrey',
487
+ fontWeight: 'bolder',
488
+ paddingLeft: 16,
489
+ paddingRight: 4,
490
+ opacity: _this.currentSearchString ? 1 : 0,
491
+ transition: 'opacity 250ms ease-in-out',
492
+ } },
493
+ "\u25C0",
494
+ react_1.default.createElement("input", { type: "checkbox", tabIndex: 0, onClick: function (e) {
495
+ if (!_this.currentSearchString)
496
+ return;
497
+ _this.focusedMatchIndex = Number.isNaN(_this.focusedMatchIndex)
498
+ ? hitCount - 1
499
+ : _this.focusedMatchIndex === 0
500
+ ? NaN
501
+ : _this.focusedMatchIndex - 1;
502
+ _this.focusOnHit(e.timeStamp);
503
+ _this.setState({});
504
+ }, style: { display: 'none' } })),
505
+ react_1.default.createElement("label", { title: "Next hit", style: {
506
+ color: hitCount ? 'black' : 'darkgrey',
507
+ fontWeight: 'bolder',
508
+ paddingInline: 4,
509
+ opacity: _this.currentSearchString ? 1 : 0,
510
+ transition: 'opacity 250ms ease-in-out',
511
+ } },
512
+ "\u25B6",
513
+ react_1.default.createElement("input", { type: "checkbox", tabIndex: 0, onClick: function (e) {
514
+ if (!_this.currentSearchString)
515
+ return;
516
+ _this.focusedMatchIndex = _this.focusedMatchIndex = Number.isNaN(_this.focusedMatchIndex)
517
+ ? 0
518
+ : _this.focusedMatchIndex === hitCount - 1
519
+ ? NaN
520
+ : _this.focusedMatchIndex + 1;
521
+ _this.focusOnHit(e.timeStamp);
522
+ _this.setState({});
523
+ }, style: { display: 'none' } })),
524
+ react_1.default.createElement("p", { style: {
525
+ float: 'right',
526
+ padding: 3,
527
+ opacity: _this.currentSearchString ? 1 : 0,
528
+ transition: 'opacity 250ms ease-in-out',
529
+ } }, "Match" + (Number.isNaN(_this.focusedMatchIndex) ? 'es:' : ": " + (_this.focusedMatchIndex + 1) + " /") + " " + hitCount)),
530
+ react_1.default.createElement(tooltip_1.BasicTooltip, { onPointerMove: function () { return ({ type: mouse_1.ON_POINTER_MOVE, position: { x: NaN, y: NaN }, time: NaN }); }, position: { x: _this.pointerX, y: _this.pointerY, width: 0, height: 0 }, visible: _this.props.tooltipRequired && _this.hoverIndex >= 0, info: {
531
+ header: null,
532
+ values: _this.hoverIndex >= 0
533
+ ? [
534
+ {
535
+ label: columns.label[_this.hoverIndex],
536
+ color: getColor(columns.color, _this.hoverIndex),
537
+ isHighlighted: false,
538
+ isVisible: true,
539
+ seriesIdentifier: { specId: '', key: '' },
540
+ value: columns.value[_this.hoverIndex],
541
+ formattedValue: "" + specValueFormatter(columns.value[_this.hoverIndex]),
542
+ valueAccessor: _this.hoverIndex,
543
+ },
544
+ ]
545
+ : [],
546
+ }, getChartContainerRef: _this.props.containerRef })));
547
+ };
548
+ _this.drawCanvas = function () {
549
+ if (!_this.ctx || !_this.glContext || !_this.pickTexture)
550
+ return;
551
+ var renderFrame = (0, draw_a_frame_1.drawFrame)(_this.ctx, _this.glContext, _this.props.chartDimensions.width, _this.props.chartDimensions.height, window.devicePixelRatio * _this.pinchZoomScale, _this.props.columnarViewModel, _this.pickTexture, _this.glResources.pickTextureRenderer, _this.glResources.roundedRectRenderer, _this.hoverIndex, unitRowPitch(_this.props.columnarViewModel.position1), _this.currentColor);
552
+ var anim = function (t) {
553
+ var msDeltaT = Number.isNaN(_this.prevT) ? 0 : t - _this.prevT;
554
+ _this.prevT = t;
555
+ var dx0 = _this.targetFocus.x0 - _this.currentFocus.x0;
556
+ var dx1 = _this.targetFocus.x1 - _this.currentFocus.x1;
557
+ var dy0 = _this.targetFocus.y0 - _this.currentFocus.y0;
558
+ var dy1 = _this.targetFocus.y1 - _this.currentFocus.y1;
559
+ var currentExtentX = _this.currentFocus.x1 - _this.currentFocus.x0;
560
+ var currentExtentY = _this.currentFocus.y1 - _this.currentFocus.y0;
561
+ var relativeExpansionX = Math.max(1, (currentExtentX + dx1 - dx0) / currentExtentX);
562
+ var relativeExpansionY = Math.max(1, (currentExtentX + dy1 - dy0) / currentExtentY);
563
+ var jointRelativeExpansion = (relativeExpansionX + relativeExpansionY) / 2;
564
+ var convergenceRateX = Math.min(1, msDeltaT * RECURRENCE_ALPHA_PER_MS_X) / jointRelativeExpansion;
565
+ var convergenceRateY = Math.min(1, msDeltaT * RECURRENCE_ALPHA_PER_MS_Y) / jointRelativeExpansion;
566
+ _this.currentFocus.x0 += convergenceRateX * dx0;
567
+ _this.currentFocus.x1 += convergenceRateX * dx1;
568
+ _this.currentFocus.y0 += convergenceRateY * dy0;
569
+ _this.currentFocus.y1 += convergenceRateY * dy1;
570
+ renderFrame([_this.currentFocus.x0, _this.currentFocus.x1, _this.currentFocus.y0, _this.currentFocus.y1]);
571
+ var maxDiff = Math.max(Math.abs(dx0), Math.abs(dx1), Math.abs(dy0), Math.abs(dy1));
572
+ if (maxDiff > 1e-12) {
573
+ _this.animationRafId = window.requestAnimationFrame(anim);
574
+ }
575
+ else {
576
+ _this.prevT = NaN;
577
+ }
578
+ };
579
+ window.cancelAnimationFrame(_this.animationRafId);
580
+ _this.animationRafId = window.requestAnimationFrame(anim);
581
+ _this.props.onRenderChange(true);
582
+ };
583
+ _this.ensurePickTexture = function () {
584
+ var _a;
585
+ var _b = _this.props.chartDimensions, width = _b.width, height = _b.height;
586
+ var pr = window.devicePixelRatio * _this.pinchZoomScale;
587
+ var textureWidth = pr * width;
588
+ var textureHeight = pr * height;
589
+ var current = _this.pickTexture;
590
+ if (_this.glContext &&
591
+ (current === kingly_1.NullTexture || current.width !== textureWidth || current.height !== textureHeight)) {
592
+ current.delete();
593
+ _this.pickTexture =
594
+ (_a = (0, kingly_1.createTexture)(_this.glContext, {
595
+ textureIndex: 0,
596
+ width: textureWidth,
597
+ height: textureHeight,
598
+ internalFormat: _this.glContext.RGBA8,
599
+ data: null,
600
+ })) !== null && _a !== void 0 ? _a : kingly_1.NullTexture;
601
+ (0, kingly_1.bindFramebuffer)(_this.glContext, kingly_1.GL_READ_FRAMEBUFFER, _this.pickTexture.target());
602
+ }
603
+ };
604
+ _this.tryCanvasContext = function () {
605
+ var canvas = _this.props.forwardStageRef.current;
606
+ var glCanvas = _this.glCanvasRef.current;
607
+ _this.ctx = canvas && canvas.getContext('2d');
608
+ _this.glContext = glCanvas && glCanvas.getContext('webgl2');
609
+ _this.ensurePickTexture();
610
+ if (_this.glContext && _this.glResources === types_1.NULL_GL_RESOURCES) {
611
+ _this.glResources = (0, ensure_webgl_1.ensureWebgl)(_this.glContext, Object.keys(_this.props.columnarViewModel));
612
+ (0, ensure_webgl_1.uploadToWebgl)(_this.glContext, _this.glResources.attributes, _this.props.columnarViewModel);
613
+ }
614
+ };
615
+ _this.ctx = null;
616
+ _this.glContext = null;
617
+ _this.pickTexture = kingly_1.NullTexture;
618
+ _this.glResources = types_1.NULL_GL_RESOURCES;
619
+ _this.glCanvasRef = (0, react_1.createRef)();
620
+ _this.searchInputRef = (0, react_1.createRef)();
621
+ _this.animationRafId = NaN;
622
+ _this.prevT = NaN;
623
+ _this.currentFocus = focusRect(_this.props.columnarViewModel, props.chartDimensions.height, 0, -Infinity);
624
+ _this.targetFocus = __assign({}, _this.currentFocus);
625
+ _this.hoverIndex = NaN;
626
+ _this.pointerX = -10000;
627
+ _this.pointerY = -10000;
628
+ _this.pinchZoomSetInterval = NaN;
629
+ _this.pinchZoomScale = browserRootWindow().visualViewport.scale;
630
+ _this.setupViewportScaleChangeListener();
631
+ _this.currentColor = _this.props.columnarViewModel.color;
632
+ return _this;
633
+ }
634
+ FlameComponent.prototype.componentWillUnmount = function () {
635
+ var _a;
636
+ (_a = this.props.containerRef().current) === null || _a === void 0 ? void 0 : _a.removeEventListener('wheel', this.preventScroll);
637
+ };
638
+ FlameComponent.prototype.updatePointerLocation = function (e) {
639
+ if (!this.props.forwardStageRef.current || !this.ctx)
640
+ return;
641
+ var box = this.props.forwardStageRef.current.getBoundingClientRect();
642
+ this.pointerX = e.clientX - box.left;
643
+ this.pointerY = e.clientY - box.top;
644
+ };
645
+ FlameComponent.prototype.smartDraw = function () {
646
+ if (Number.isFinite(this.hoverIndex)) {
647
+ this.hoverIndex = NaN;
648
+ this.setState({});
649
+ }
650
+ else {
651
+ this.drawCanvas();
652
+ }
653
+ };
654
+ FlameComponent.displayName = 'Flame';
655
+ return FlameComponent;
656
+ }(react_1.default.Component));
657
+ var mapStateToProps = function (state) {
658
+ var _a, _b, _c, _d, _e, _f;
659
+ var flameSpec = (0, utils_1.getSpecsFromStore)(state.specs, __1.ChartType.Flame, specs_1.SpecType.Series)[0];
660
+ var settingsSpec = (0, get_settings_specs_1.getSettingsSpecSelector)(state);
661
+ return {
662
+ columnarViewModel: (_a = flameSpec === null || flameSpec === void 0 ? void 0 : flameSpec.columnarData) !== null && _a !== void 0 ? _a : types_1.nullColumnarViewModel,
663
+ animationDuration: (_b = flameSpec === null || flameSpec === void 0 ? void 0 : flameSpec.animation.duration) !== null && _b !== void 0 ? _b : 0,
664
+ chartDimensions: state.parentDimensions,
665
+ a11ySettings: (0, get_accessibility_config_1.getA11ySettingsSelector)(state),
666
+ tooltipRequired: (0, specs_1.getTooltipType)(settingsSpec) !== specs_1.TooltipType.None,
667
+ onElementOver: (_c = settingsSpec.onElementOver) !== null && _c !== void 0 ? _c : (function () { }),
668
+ onElementClick: (_d = settingsSpec.onElementClick) !== null && _d !== void 0 ? _d : (function () { }),
669
+ onElementOut: (_e = settingsSpec.onElementOut) !== null && _e !== void 0 ? _e : (function () { }),
670
+ onRenderChange: (_f = settingsSpec.onRenderChange) !== null && _f !== void 0 ? _f : (function () { }),
671
+ };
672
+ };
673
+ var mapDispatchToProps = function (dispatch) {
674
+ return (0, redux_1.bindActionCreators)({
675
+ onChartRendered: chart_1.onChartRendered,
676
+ }, dispatch);
677
+ };
678
+ var FlameChartLayers = (0, react_redux_1.connect)(mapStateToProps, mapDispatchToProps)(FlameComponent);
679
+ var FlameWithTooltip = function (containerRef, forwardStageRef) { return (react_1.default.createElement(FlameChartLayers, { forwardStageRef: forwardStageRef, containerRef: containerRef })); };
680
+ exports.FlameWithTooltip = FlameWithTooltip;
681
+ //# sourceMappingURL=flame_chart.js.map