UNPKG

23.8 kBJavaScriptView Raw
1// 注册黑暗主题
2import { registerTheme } from './core';
3import { antvDark } from './theme/style-sheet/dark';
4import { createThemeByStyleSheet } from './theme/util/create-by-style-sheet';
5registerTheme('dark', createThemeByStyleSheet(antvDark));
6// 注册 G 渲染引擎
7import * as CanvasEngine from '@antv/g-canvas';
8import * as SVGEngine from '@antv/g-svg';
9import { registerEngine } from './core';
10registerEngine('canvas', CanvasEngine);
11registerEngine('svg', SVGEngine);
12// 注册 G2 内置的 geometry
13import { registerGeometry } from './core';
14import Area from './geometry/area';
15import Edge from './geometry/edge';
16import Heatmap from './geometry/heatmap';
17import Interval from './geometry/interval';
18import Line from './geometry/line';
19import Path from './geometry/path';
20import Point from './geometry/point';
21import Polygon from './geometry/polygon';
22import Schema from './geometry/schema';
23import Violin from './geometry/violin';
24registerGeometry('Polygon', Polygon);
25registerGeometry('Interval', Interval);
26registerGeometry('Schema', Schema);
27registerGeometry('Path', Path);
28registerGeometry('Point', Point);
29registerGeometry('Line', Line);
30registerGeometry('Area', Area);
31registerGeometry('Edge', Edge);
32registerGeometry('Heatmap', Heatmap);
33registerGeometry('Violin', Violin);
34// 引入所有内置的 shapes
35import './geometry/shape/area/line';
36import './geometry/shape/area/smooth';
37import './geometry/shape/area/smooth-line';
38import './geometry/shape/edge/arc';
39import './geometry/shape/edge/smooth';
40import './geometry/shape/edge/vhv';
41import './geometry/shape/interval/funnel';
42import './geometry/shape/interval/hollow-rect';
43import './geometry/shape/interval/line';
44import './geometry/shape/interval/pyramid';
45import './geometry/shape/interval/tick';
46import './geometry/shape/line/step';
47import './geometry/shape/point/hollow';
48import './geometry/shape/point/image';
49import './geometry/shape/point/solid';
50import './geometry/shape/schema/box';
51import './geometry/shape/schema/candle';
52import './geometry/shape/polygon/square';
53import './geometry/shape/violin/smooth';
54import './geometry/shape/violin/hollow';
55// 注册 Geometry 内置的 label
56import { registerGeometryLabel } from './core';
57import GeometryLabel from './geometry/label/base';
58import IntervalLabel from './geometry/label/interval';
59import PieLabel from './geometry/label/pie';
60import PolarLabel from './geometry/label/polar';
61registerGeometryLabel('base', GeometryLabel);
62registerGeometryLabel('interval', IntervalLabel);
63registerGeometryLabel('pie', PieLabel);
64registerGeometryLabel('polar', PolarLabel);
65// 注册 Geometry label 内置的布局函数
66import { registerGeometryLabelLayout } from './core';
67import { distribute } from './geometry/label/layout/pie/distribute';
68import { pieOuterLabelLayout } from './geometry/label/layout/pie/outer';
69import { pieSpiderLabelLayout } from './geometry/label/layout/pie/spider';
70import { limitInCanvas } from './geometry/label/layout/limit-in-canvas';
71import { limitInShape } from './geometry/label/layout/limit-in-shape';
72import { fixedOverlap, overlap } from './geometry/label/layout/overlap';
73import { hideOverlap } from './geometry/label/layout/hide-overlap';
74import { adjustColor } from './geometry/label/layout/adjust-color';
75import { intervalAdjustPosition } from './geometry/label/layout/interval/adjust-position';
76import { intervalHideOverlap } from './geometry/label/layout/interval/hide-overlap';
77import { pointAdjustPosition } from './geometry/label/layout/point/adjust-position';
78import { pathAdjustPosition } from './geometry/label/layout/path/adjust-position';
79import { limitInPlot } from './geometry/label/layout/limit-in-plot';
80registerGeometryLabelLayout('overlap', overlap);
81registerGeometryLabelLayout('distribute', distribute);
82registerGeometryLabelLayout('fixed-overlap', fixedOverlap);
83registerGeometryLabelLayout('hide-overlap', hideOverlap);
84registerGeometryLabelLayout('limit-in-shape', limitInShape);
85registerGeometryLabelLayout('limit-in-canvas', limitInCanvas);
86registerGeometryLabelLayout('limit-in-plot', limitInPlot);
87registerGeometryLabelLayout('pie-outer', pieOuterLabelLayout);
88registerGeometryLabelLayout('adjust-color', adjustColor);
89registerGeometryLabelLayout('interval-adjust-position', intervalAdjustPosition);
90registerGeometryLabelLayout('interval-hide-overlap', intervalHideOverlap);
91registerGeometryLabelLayout('point-adjust-position', pointAdjustPosition);
92registerGeometryLabelLayout('pie-spider', pieSpiderLabelLayout);
93registerGeometryLabelLayout('path-adjust-position', pathAdjustPosition);
94// 注册需要的动画执行函数
95import { fadeIn, fadeOut } from './animate/animation/fade';
96import { growInX, growInXY, growInY } from './animate/animation/grow-in';
97import { pathIn } from './animate/animation/path-in';
98import { positionUpdate } from './animate/animation/position-update';
99import { scaleInX, scaleInY } from './animate/animation/scale-in';
100import { sectorPathUpdate } from './animate/animation/sector-path-update';
101import { waveIn } from './animate/animation/wave-in';
102import { zoomIn, zoomOut } from './animate/animation/zoom';
103import { registerAnimation } from './core';
104registerAnimation('fade-in', fadeIn);
105registerAnimation('fade-out', fadeOut);
106registerAnimation('grow-in-x', growInX);
107registerAnimation('grow-in-xy', growInXY);
108registerAnimation('grow-in-y', growInY);
109registerAnimation('scale-in-x', scaleInX);
110registerAnimation('scale-in-y', scaleInY);
111registerAnimation('wave-in', waveIn);
112registerAnimation('zoom-in', zoomIn);
113registerAnimation('zoom-out', zoomOut);
114registerAnimation('position-update', positionUpdate);
115registerAnimation('sector-path-update', sectorPathUpdate);
116registerAnimation('path-in', pathIn);
117// 注册内置的 Facet
118import { registerFacet } from './core';
119import Circle from './facet/circle';
120import List from './facet/list';
121import Matrix from './facet/matrix';
122import Mirror from './facet/mirror';
123import Rect from './facet/rect';
124import Tree from './facet/tree';
125registerFacet('rect', Rect);
126registerFacet('mirror', Mirror);
127registerFacet('list', List);
128registerFacet('matrix', Matrix);
129registerFacet('circle', Circle);
130registerFacet('tree', Tree);
131// 注册内置的 Component
132import { registerComponentController } from './core';
133import Annotation from './chart/controller/annotation';
134import Axis from './chart/controller/axis';
135import Legend from './chart/controller/legend';
136import Slider from './chart/controller/slider';
137import Tooltip from './chart/controller/tooltip';
138import Scrollbar from './chart/controller/scrollbar';
139// register build-in components
140registerComponentController('axis', Axis);
141registerComponentController('legend', Legend);
142registerComponentController('tooltip', Tooltip);
143registerComponentController('annotation', Annotation);
144registerComponentController('slider', Slider);
145registerComponentController('scrollbar', Scrollbar);
146// 注册 Interaction Action
147import { registerAction } from './core';
148import ActiveRegion from './interaction/action/active-region';
149import SiblingTooltip from './interaction/action/component/tooltip/sibling';
150import TooltipAction from './interaction/action/component/tooltip/geometry';
151import EllipsisTextAction from './interaction/action/component/tooltip/ellipsis-text';
152import ElementActive from './interaction/action/element/active';
153import ElementLinkByColor from './interaction/action/element/link-by-color';
154import ElementRangeActive from './interaction/action/element/range-active';
155import ElementSingleActive from './interaction/action/element/single-active';
156import ElementHighlight from './interaction/action/element/highlight';
157import ElementHighlightByColor from './interaction/action/element/highlight-by-color';
158import ElementHighlightByX from './interaction/action/element/highlight-by-x';
159import ElementRangeHighlight, { ELEMENT_RANGE_HIGHLIGHT_EVENTS } from './interaction/action/element/range-highlight';
160import ElementSingleHighlight from './interaction/action/element/single-highlight';
161import ElementRangeSelected from './interaction/action/element/range-selected';
162import ElementSelected from './interaction/action/element/selected';
163import ElementSingleSelected from './interaction/action/element/single-selected';
164import ListActive from './interaction/action/component/list-active';
165import ListHighlight from './interaction/action/component/list-highlight';
166import ListSelected from './interaction/action/component/list-selected';
167import ListUnchecked from './interaction/action/component/list-unchecked';
168import ListChecked from './interaction/action/component/list-checked';
169import CircleMask from './interaction/action/mask/circle';
170import DimMask from './interaction/action/mask/dim-rect';
171import PathMask from './interaction/action/mask/path';
172import RectMask from './interaction/action/mask/rect';
173import SmoothPathMask from './interaction/action/mask/smooth-path';
174import CursorAction from './interaction/action/cursor';
175import DataFilter from './interaction/action/data/filter';
176import DataRangeFilter, { BRUSH_FILTER_EVENTS } from './interaction/action/data/range-filter';
177import SiblingFilter from './interaction/action/data/sibling-filter';
178import ElementFilter from './interaction/action/element/filter';
179import ElementSiblingFilter from './interaction/action/element/sibling-filter';
180import ButtonAction from './interaction/action/view/button';
181import ViewDrag from './interaction/action/view/drag';
182import ViewMove from './interaction/action/view/move';
183import ScaleTranslate from './interaction/action/view/scale-translate';
184import ScaleZoom from './interaction/action/view/scale-zoom';
185registerAction('tooltip', TooltipAction);
186registerAction('sibling-tooltip', SiblingTooltip);
187registerAction('ellipsis-text', EllipsisTextAction);
188registerAction('element-active', ElementActive);
189registerAction('element-single-active', ElementSingleActive);
190registerAction('element-range-active', ElementRangeActive);
191registerAction('element-highlight', ElementHighlight);
192registerAction('element-highlight-by-x', ElementHighlightByX);
193registerAction('element-highlight-by-color', ElementHighlightByColor);
194registerAction('element-single-highlight', ElementSingleHighlight);
195registerAction('element-range-highlight', ElementRangeHighlight);
196registerAction('element-sibling-highlight', ElementRangeHighlight, {
197 effectSiblings: true,
198 effectByRecord: true,
199});
200registerAction('element-selected', ElementSelected);
201registerAction('element-single-selected', ElementSingleSelected);
202registerAction('element-range-selected', ElementRangeSelected);
203registerAction('element-link-by-color', ElementLinkByColor);
204registerAction('active-region', ActiveRegion);
205registerAction('list-active', ListActive);
206registerAction('list-selected', ListSelected);
207registerAction('list-highlight', ListHighlight);
208registerAction('list-unchecked', ListUnchecked);
209registerAction('list-checked', ListChecked);
210registerAction('legend-item-highlight', ListHighlight, {
211 componentNames: ['legend'],
212});
213registerAction('axis-label-highlight', ListHighlight, {
214 componentNames: ['axis'],
215});
216registerAction('rect-mask', RectMask);
217registerAction('x-rect-mask', DimMask, { dim: 'x' });
218registerAction('y-rect-mask', DimMask, { dim: 'y' });
219registerAction('circle-mask', CircleMask);
220registerAction('path-mask', PathMask);
221registerAction('smooth-path-mask', SmoothPathMask);
222registerAction('cursor', CursorAction);
223registerAction('data-filter', DataFilter);
224registerAction('brush', DataRangeFilter);
225registerAction('brush-x', DataRangeFilter, { dims: ['x'] });
226registerAction('brush-y', DataRangeFilter, { dims: ['y'] });
227registerAction('sibling-filter', SiblingFilter);
228registerAction('sibling-x-filter', SiblingFilter);
229registerAction('sibling-y-filter', SiblingFilter);
230registerAction('element-filter', ElementFilter);
231registerAction('element-sibling-filter', ElementSiblingFilter);
232registerAction('element-sibling-filter-record', ElementSiblingFilter, { byRecord: true });
233registerAction('view-drag', ViewDrag);
234registerAction('view-move', ViewMove);
235registerAction('scale-translate', ScaleTranslate);
236registerAction('scale-zoom', ScaleZoom);
237registerAction('reset-button', ButtonAction, {
238 name: 'reset-button',
239 text: 'reset',
240});
241// 注册默认的 Interaction 交互行为
242import { registerInteraction } from './core';
243function isPointInView(context) {
244 return context.isInPlot();
245}
246// 注册 tooltip 的 interaction
247registerInteraction('tooltip', {
248 start: [
249 { trigger: 'plot:mousemove', action: 'tooltip:show', throttle: { wait: 50, leading: true, trailing: false } },
250 { trigger: 'plot:touchmove', action: 'tooltip:show', throttle: { wait: 50, leading: true, trailing: false } },
251 ],
252 end: [
253 { trigger: 'plot:mouseleave', action: 'tooltip:hide' },
254 { trigger: 'plot:leave', action: 'tooltip:hide' },
255 { trigger: 'plot:touchend', action: 'tooltip:hide' },
256 ],
257});
258registerInteraction('ellipsis-text', {
259 start: [
260 {
261 trigger: 'legend-item-name:mousemove',
262 action: 'ellipsis-text:show',
263 throttle: { wait: 50, leading: true, trailing: false },
264 },
265 {
266 trigger: 'legend-item-name:touchstart',
267 action: 'ellipsis-text:show',
268 throttle: { wait: 50, leading: true, trailing: false },
269 },
270 {
271 trigger: 'axis-label:mousemove',
272 action: 'ellipsis-text:show',
273 throttle: { wait: 50, leading: true, trailing: false },
274 },
275 {
276 trigger: 'axis-label:touchstart',
277 action: 'ellipsis-text:show',
278 throttle: { wait: 50, leading: true, trailing: false },
279 },
280 ],
281 end: [
282 { trigger: 'legend-item-name:mouseleave', action: 'ellipsis-text:hide' },
283 { trigger: 'legend-item-name:touchend', action: 'ellipsis-text:hide' },
284 { trigger: 'axis-label:mouseleave', action: 'ellipsis-text:hide' },
285 { trigger: 'axis-label:touchend', action: 'ellipsis-text:hide' },
286 ],
287});
288// 移动到 element 上 active
289registerInteraction('element-active', {
290 start: [{ trigger: 'element:mouseenter', action: 'element-active:active' }],
291 end: [{ trigger: 'element:mouseleave', action: 'element-active:reset' }],
292});
293// 点击选中,允许取消
294registerInteraction('element-selected', {
295 start: [{ trigger: 'element:click', action: 'element-selected:toggle' }],
296});
297// hover highlight,允许取消
298registerInteraction('element-highlight', {
299 start: [{ trigger: 'element:mouseenter', action: 'element-highlight:highlight' }],
300 end: [{ trigger: 'element:mouseleave', action: 'element-highlight:reset' }],
301});
302// hover highlight by x,允许取消
303registerInteraction('element-highlight-by-x', {
304 start: [{ trigger: 'element:mouseenter', action: 'element-highlight-by-x:highlight' }],
305 end: [{ trigger: 'element:mouseleave', action: 'element-highlight-by-x:reset' }],
306});
307// hover highlight by y,允许取消
308registerInteraction('element-highlight-by-color', {
309 start: [{ trigger: 'element:mouseenter', action: 'element-highlight-by-color:highlight' }],
310 end: [{ trigger: 'element:mouseleave', action: 'element-highlight-by-color:reset' }],
311});
312// legend hover,element active
313registerInteraction('legend-active', {
314 start: [{ trigger: 'legend-item:mouseenter', action: ['list-active:active', 'element-active:active'] }],
315 end: [{ trigger: 'legend-item:mouseleave', action: ['list-active:reset', 'element-active:reset'] }],
316});
317// legend hover,element active
318registerInteraction('legend-highlight', {
319 start: [
320 { trigger: 'legend-item:mouseenter', action: ['legend-item-highlight:highlight', 'element-highlight:highlight'] },
321 ],
322 end: [{ trigger: 'legend-item:mouseleave', action: ['legend-item-highlight:reset', 'element-highlight:reset'] }],
323});
324// legend hover,element active
325registerInteraction('axis-label-highlight', {
326 start: [
327 { trigger: 'axis-label:mouseenter', action: ['axis-label-highlight:highlight', 'element-highlight:highlight'] },
328 ],
329 end: [{ trigger: 'axis-label:mouseleave', action: ['axis-label-highlight:reset', 'element-highlight:reset'] }],
330});
331// legend hover,element active
332registerInteraction('element-list-highlight', {
333 start: [{ trigger: 'element:mouseenter', action: ['list-highlight:highlight', 'element-highlight:highlight'] }],
334 end: [{ trigger: 'element:mouseleave', action: ['list-highlight:reset', 'element-highlight:reset'] }],
335});
336// 框选
337registerInteraction('element-range-highlight', {
338 showEnable: [
339 { trigger: 'plot:mouseenter', action: 'cursor:crosshair' },
340 { trigger: 'mask:mouseenter', action: 'cursor:move' },
341 { trigger: 'plot:mouseleave', action: 'cursor:default' },
342 { trigger: 'mask:mouseleave', action: 'cursor:crosshair' },
343 ],
344 start: [
345 {
346 trigger: 'plot:mousedown',
347 isEnable: function (context) {
348 // 不要点击在 mask 上重新开始
349 return !context.isInShape('mask');
350 },
351 action: ['rect-mask:start', 'rect-mask:show'],
352 },
353 {
354 trigger: 'mask:dragstart',
355 action: ['rect-mask:moveStart'],
356 },
357 ],
358 processing: [
359 {
360 trigger: 'plot:mousemove',
361 action: ['rect-mask:resize'],
362 },
363 {
364 trigger: 'mask:drag',
365 action: ['rect-mask:move'],
366 },
367 {
368 trigger: 'mask:change',
369 action: ['element-range-highlight:highlight'],
370 },
371 ],
372 end: [
373 { trigger: 'plot:mouseup', action: ['rect-mask:end'] },
374 { trigger: 'mask:dragend', action: ['rect-mask:moveEnd'] },
375 {
376 trigger: 'document:mouseup',
377 isEnable: function (context) {
378 return !context.isInPlot();
379 },
380 action: ['element-range-highlight:clear', 'rect-mask:end', 'rect-mask:hide'],
381 },
382 ],
383 rollback: [{ trigger: 'dblclick', action: ['element-range-highlight:clear', 'rect-mask:hide'] }],
384});
385registerInteraction('brush', {
386 showEnable: [
387 { trigger: 'plot:mouseenter', action: 'cursor:crosshair' },
388 { trigger: 'plot:mouseleave', action: 'cursor:default' },
389 ],
390 start: [
391 {
392 trigger: 'mousedown',
393 isEnable: isPointInView,
394 action: ['brush:start', 'rect-mask:start', 'rect-mask:show'],
395 },
396 ],
397 processing: [
398 {
399 trigger: 'mousemove',
400 isEnable: isPointInView,
401 action: ['rect-mask:resize'],
402 },
403 ],
404 end: [
405 {
406 trigger: 'mouseup',
407 isEnable: isPointInView,
408 action: ['brush:filter', 'brush:end', 'rect-mask:end', 'rect-mask:hide', 'reset-button:show'],
409 },
410 ],
411 rollback: [{ trigger: 'reset-button:click', action: ['brush:reset', 'reset-button:hide', 'cursor:crosshair'] }],
412});
413registerInteraction('brush-visible', {
414 showEnable: [
415 { trigger: 'plot:mouseenter', action: 'cursor:crosshair' },
416 { trigger: 'plot:mouseleave', action: 'cursor:default' },
417 ],
418 start: [
419 {
420 trigger: 'plot:mousedown',
421 action: ['rect-mask:start', 'rect-mask:show'],
422 },
423 ],
424 processing: [
425 {
426 trigger: 'plot:mousemove',
427 action: ['rect-mask:resize'],
428 },
429 { trigger: 'mask:change', action: ['element-range-highlight:highlight'] },
430 ],
431 end: [
432 {
433 trigger: 'plot:mouseup',
434 action: ['rect-mask:end', 'rect-mask:hide', 'element-filter:filter', 'element-range-highlight:clear'],
435 },
436 ],
437 rollback: [
438 {
439 trigger: 'dblclick',
440 action: ['element-filter:clear'],
441 },
442 ],
443});
444registerInteraction('brush-x', {
445 showEnable: [
446 { trigger: 'plot:mouseenter', action: 'cursor:crosshair' },
447 { trigger: 'plot:mouseleave', action: 'cursor:default' },
448 ],
449 start: [
450 {
451 trigger: 'mousedown',
452 isEnable: isPointInView,
453 action: ['brush-x:start', 'x-rect-mask:start', 'x-rect-mask:show'],
454 },
455 ],
456 processing: [
457 {
458 trigger: 'mousemove',
459 isEnable: isPointInView,
460 action: ['x-rect-mask:resize'],
461 },
462 ],
463 end: [
464 {
465 trigger: 'mouseup',
466 isEnable: isPointInView,
467 action: ['brush-x:filter', 'brush-x:end', 'x-rect-mask:end', 'x-rect-mask:hide'],
468 },
469 ],
470 rollback: [{ trigger: 'dblclick', action: ['brush-x:reset'] }],
471});
472registerInteraction('element-path-highlight', {
473 showEnable: [
474 { trigger: 'plot:mouseenter', action: 'cursor:crosshair' },
475 { trigger: 'plot:mouseleave', action: 'cursor:default' },
476 ],
477 start: [
478 { trigger: 'mousedown', isEnable: isPointInView, action: 'path-mask:start' },
479 { trigger: 'mousedown', isEnable: isPointInView, action: 'path-mask:show' },
480 ],
481 processing: [{ trigger: 'mousemove', action: 'path-mask:addPoint' }],
482 end: [{ trigger: 'mouseup', action: 'path-mask:end' }],
483 rollback: [{ trigger: 'dblclick', action: 'path-mask:hide' }],
484});
485// 点击选中,允许取消
486registerInteraction('element-single-selected', {
487 start: [{ trigger: 'element:click', action: 'element-single-selected:toggle' }],
488});
489// 筛选数据
490registerInteraction('legend-filter', {
491 showEnable: [
492 { trigger: 'legend-item:mouseenter', action: 'cursor:pointer' },
493 { trigger: 'legend-item:mouseleave', action: 'cursor:default' },
494 ],
495 start: [{ trigger: 'legend-item:click', action: ['list-unchecked:toggle', 'data-filter:filter'] }],
496});
497// 筛选数据
498registerInteraction('continuous-filter', {
499 start: [{ trigger: 'legend:valuechanged', action: 'data-filter:filter' }],
500});
501// 筛选数据
502registerInteraction('continuous-visible-filter', {
503 start: [{ trigger: 'legend:valuechanged', action: 'element-filter:filter' }],
504});
505// 筛选图形
506registerInteraction('legend-visible-filter', {
507 showEnable: [
508 { trigger: 'legend-item:mouseenter', action: 'cursor:pointer' },
509 { trigger: 'legend-item:mouseleave', action: 'cursor:default' },
510 ],
511 start: [{ trigger: 'legend-item:click', action: ['list-unchecked:toggle', 'element-filter:filter'] }],
512});
513// 出现背景框
514registerInteraction('active-region', {
515 start: [{ trigger: 'plot:mousemove', action: 'active-region:show' }],
516 end: [{ trigger: 'plot:mouseleave', action: 'active-region:hide' }],
517});
518function isWheelDown(event) {
519 event.gEvent.preventDefault();
520 return event.gEvent.originalEvent.deltaY > 0;
521}
522registerInteraction('view-zoom', {
523 start: [
524 {
525 trigger: 'plot:mousewheel',
526 isEnable: function (context) {
527 return isWheelDown(context.event);
528 },
529 action: 'scale-zoom:zoomOut',
530 throttle: { wait: 100, leading: true, trailing: false },
531 },
532 {
533 trigger: 'plot:mousewheel',
534 isEnable: function (context) {
535 return !isWheelDown(context.event);
536 },
537 action: 'scale-zoom:zoomIn',
538 throttle: { wait: 100, leading: true, trailing: false },
539 },
540 ],
541});
542registerInteraction('sibling-tooltip', {
543 start: [{ trigger: 'plot:mousemove', action: 'sibling-tooltip:show' }],
544 end: [{ trigger: 'plot:mouseleave', action: 'sibling-tooltip:hide' }],
545});
546// 暴露一些常量
547export { VIEW_LIFE_CIRCLE } from './constant';
548/** brush 范围筛选的一些事件常量 */
549export { BRUSH_FILTER_EVENTS, ELEMENT_RANGE_HIGHLIGHT_EVENTS };
550export * from './core';
551//# sourceMappingURL=index.js.map
\No newline at end of file