@basic-ui/core 0.0.31 → 0.0.34

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 (128) hide show
  1. package/build/cjs/index.js +113 -71
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/FocusLock/useFocusLock.js +21 -7
  4. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  5. package/build/esm/Tooltip/stateMachine.d.ts +17 -19
  6. package/build/esm/Tooltip/stateMachine.js +45 -49
  7. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  8. package/build/esm/Tooltip/useTooltip.js +9 -9
  9. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  10. package/build/esm/hooks/useGestureHandlers.d.ts +2 -0
  11. package/build/esm/hooks/useGestureHandlers.js +39 -7
  12. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  13. package/build/tsconfig.tsbuildinfo +383 -88
  14. package/package.json +6 -6
  15. package/src/Accordion/Accordion.story.tsx +72 -0
  16. package/src/Accordion/Accordion.tsx +51 -0
  17. package/src/Accordion/AccordionBody.tsx +53 -0
  18. package/src/Accordion/AccordionHeader.tsx +165 -0
  19. package/src/Accordion/AccordionItem.tsx +43 -0
  20. package/src/Accordion/context.ts +35 -0
  21. package/src/Accordion/index.ts +4 -0
  22. package/src/Accordion/scopeQuery.ts +7 -0
  23. package/src/Accordion/styles.css +21 -0
  24. package/src/CheckBox/CheckBox.tsx +41 -0
  25. package/src/CheckBox/index.ts +1 -0
  26. package/src/ComboBox/ComboBox.story.tsx +118 -0
  27. package/src/ComboBox/Combobox.tsx +153 -0
  28. package/src/ComboBox/ComboboxButton.tsx +60 -0
  29. package/src/ComboBox/ComboboxInput.tsx +178 -0
  30. package/src/ComboBox/ComboboxLabel.tsx +32 -0
  31. package/src/ComboBox/ComboboxList.tsx +47 -0
  32. package/src/ComboBox/ComboboxOption.tsx +107 -0
  33. package/src/ComboBox/ComboboxPopover.tsx +58 -0
  34. package/src/ComboBox/cities.ts +23194 -0
  35. package/src/ComboBox/context.ts +33 -0
  36. package/src/ComboBox/hooks.tsx +428 -0
  37. package/src/ComboBox/index.ts +8 -0
  38. package/src/ComboBox/makeHash.ts +19 -0
  39. package/src/ComboBox/scopeQuery.ts +6 -0
  40. package/src/ComboBox/styles.css +30 -0
  41. package/src/FocusLock/FocusLock.tsx +59 -0
  42. package/src/FocusLock/index.ts +1 -0
  43. package/src/FocusLock/tabUtils.ts +28 -0
  44. package/src/FocusLock/useFocusLock.ts +61 -0
  45. package/src/List/List.story.tsx +17 -0
  46. package/src/List/List.tsx +17 -0
  47. package/src/List/ListItem.tsx +23 -0
  48. package/src/List/context.ts +19 -0
  49. package/src/List/index.ts +2 -0
  50. package/src/Menu/.gitkeep +0 -0
  51. package/src/Menu/Menu.story.tsx +158 -0
  52. package/src/Menu/Menu.tsx +60 -0
  53. package/src/Menu/MenuButton.tsx +83 -0
  54. package/src/Menu/MenuItem.tsx +83 -0
  55. package/src/Menu/MenuList.tsx +201 -0
  56. package/src/Menu/MenuPopover.tsx +25 -0
  57. package/src/Menu/context.ts +32 -0
  58. package/src/Menu/index.ts +5 -0
  59. package/src/Menu/scope.ts +7 -0
  60. package/src/Menu/styles.css +42 -0
  61. package/src/Modal/Modal.story.tsx +242 -0
  62. package/src/Modal/Modal.tsx +42 -0
  63. package/src/Modal/ModalBackdrop.tsx +72 -0
  64. package/src/Modal/NavDrawer.story.tsx +157 -0
  65. package/src/Modal/index.ts +2 -0
  66. package/src/Modal/styles.css +46 -0
  67. package/src/Popover/.gitkeep +0 -0
  68. package/src/Popper/Popper.story.tsx +267 -0
  69. package/src/Popper/Popper.tsx +149 -0
  70. package/src/Popper/PopperArrow.tsx +36 -0
  71. package/src/Popper/context.ts +9 -0
  72. package/src/Popper/index.ts +3 -0
  73. package/src/Popper/styles.css +60 -0
  74. package/src/Portal/Portal.tsx +20 -0
  75. package/src/Portal/index.ts +1 -0
  76. package/src/RadioButton/RadioButton.story.tsx +73 -0
  77. package/src/RadioButton/RadioButton.tsx +48 -0
  78. package/src/RadioButton/RadioGroup.tsx +56 -0
  79. package/src/RadioButton/context.ts +19 -0
  80. package/src/RadioButton/index.ts +2 -0
  81. package/src/SkipNav/SkipNav.tsx +16 -0
  82. package/src/SkipNav/index.tsx +1 -0
  83. package/src/Spinner/Spinner.story.tsx +30 -0
  84. package/src/Spinner/Spinner.tsx +112 -0
  85. package/src/Spinner/SpinnerButton.tsx +48 -0
  86. package/src/Spinner/context.ts +21 -0
  87. package/src/Spinner/index.ts +2 -0
  88. package/src/Spinner/styles.css +23 -0
  89. package/src/Tabs/Tab.story.tsx +78 -0
  90. package/src/Tabs/Tab.tsx +131 -0
  91. package/src/Tabs/TabList.tsx +63 -0
  92. package/src/Tabs/TabPanel.tsx +52 -0
  93. package/src/Tabs/TabPanels.tsx +30 -0
  94. package/src/Tabs/Tabs.tsx +47 -0
  95. package/src/Tabs/context.ts +30 -0
  96. package/src/Tabs/index.tsx +5 -0
  97. package/src/Tabs/scopeQuery.ts +6 -0
  98. package/src/Tabs/styles.css +0 -0
  99. package/src/Tooltip/.gitkeep +0 -0
  100. package/src/Tooltip/Tooltip.story.tsx +59 -0
  101. package/src/Tooltip/Tooltip.tsx +48 -0
  102. package/src/Tooltip/index.ts +1 -0
  103. package/src/Tooltip/stateMachine.ts +196 -0
  104. package/src/Tooltip/styles.css +17 -0
  105. package/src/Tooltip/useTooltip.ts +128 -0
  106. package/src/hooks/index.ts +14 -0
  107. package/src/hooks/useAutoFocus.ts +13 -0
  108. package/src/hooks/useChildrenCounter.ts +50 -0
  109. package/src/hooks/useControlledState.ts +37 -0
  110. package/src/hooks/useFocusReturn.ts +23 -0
  111. package/src/hooks/useFocusState.ts +28 -0
  112. package/src/hooks/useGestureHandlers.ts +253 -0
  113. package/src/hooks/useId.ts +18 -0
  114. package/src/hooks/useMeasure.ts +33 -0
  115. package/src/hooks/useOnClickOutside.ts +32 -0
  116. package/src/hooks/useOnKeyDown.ts +18 -0
  117. package/src/hooks/useReducerMachine.ts +59 -0
  118. package/src/hooks/useRemoveBodyScroll.ts +37 -0
  119. package/src/hooks/useScope.ts +51 -0
  120. package/src/hooks/useThrottle.ts +19 -0
  121. package/src/index.ts +19 -0
  122. package/src/utils/assignRef.ts +27 -0
  123. package/src/utils/clamp.ts +3 -0
  124. package/src/utils/createSubscription.ts +16 -0
  125. package/src/utils/getCircularIndex.ts +7 -0
  126. package/src/utils/index.ts +4 -0
  127. package/src/utils/rubberBandClamp.ts +25 -0
  128. package/src/utils/wrapEvent.ts +20 -0
@@ -372,8 +372,12 @@ const initialGestureHandlersState = {
372
372
  yInitial: 0,
373
373
  yPrev: 0,
374
374
  yVelocity: 0,
375
+ startTime: 0,
375
376
  down: false
376
377
  };
378
+ const FRAMERATE_CONST = 1000 / 60; // 60 fps
379
+
380
+ const VELOCITY_DEPR_FACTOR = FRAMERATE_CONST * 2;
377
381
  function gestureHandlers(set, containerRef, options = {}) {
378
382
  const {
379
383
  ensureTargetIsContainer = false
@@ -381,7 +385,15 @@ function gestureHandlers(set, containerRef, options = {}) {
381
385
 
382
386
  const handleUp = () => {
383
387
  set(state => {
388
+ const deltaTime = Date.now() - state.startTime;
389
+ const xDelta = state.x - state.xInitial;
390
+ const yDelta = state.y - state.yInitial;
391
+ const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);
392
+ const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);
393
+
384
394
  const newState = _extends__default['default']({}, state, {
395
+ xVelocity,
396
+ yVelocity,
385
397
  target: null,
386
398
  down: false
387
399
  });
@@ -411,6 +423,7 @@ function gestureHandlers(set, containerRef, options = {}) {
411
423
  yVelocity: 0,
412
424
  yInitial: pageY,
413
425
  yPrev: pageY,
426
+ startTime: Date.now(),
414
427
  down: true
415
428
  });
416
429
 
@@ -418,35 +431,50 @@ function gestureHandlers(set, containerRef, options = {}) {
418
431
  });
419
432
  };
420
433
 
434
+ function calcVelocity(deltaSpace, deltaTime, prevVelocity) {
435
+ if (deltaTime < 1) {
436
+ deltaTime = 1;
437
+ }
438
+
439
+ const speed = deltaSpace / deltaTime;
440
+ const depr = 0.5 + Math.min(deltaTime / VELOCITY_DEPR_FACTOR, 0.5);
441
+ return speed * depr + prevVelocity * (1 - depr);
442
+ }
443
+
421
444
  function handleMove(e) {
422
445
  const {
423
446
  pageX,
424
- movementX,
425
- pageY,
426
- movementY
447
+ pageY
427
448
  } = e;
428
- e.preventDefault && e.preventDefault(); // prevent drag & drop behaviour from browser
449
+
450
+ if (e.cancelable) {
451
+ // prevent drag & drop behaviour from browser
452
+ e.preventDefault && e.preventDefault();
453
+ }
429
454
 
430
455
  set(state => {
431
456
  const target = containerRef && containerRef.current || e.target;
457
+ const deltaTime = Date.now() - state.startTime;
432
458
  const width = target ? target.offsetWidth : NaN;
433
459
  const xDelta = pageX - state.xInitial;
434
460
  const xDeltaPercent = xDelta * 100 / width;
461
+ const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);
435
462
  const height = target ? target.offsetHeight : NaN;
436
463
  const yDelta = pageY - state.yInitial;
437
464
  const yDeltaPercent = yDelta * 100 / height;
465
+ const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);
438
466
 
439
467
  const newState = _extends__default['default']({}, state, {
440
468
  xDelta,
441
469
  xDeltaPercent,
442
470
  x: pageX,
443
471
  xPrev: state.x,
444
- xVelocity: movementX,
472
+ xVelocity,
445
473
  yDelta,
446
474
  yDeltaPercent,
447
475
  y: pageY,
448
476
  yPrev: state.y,
449
- yVelocity: movementY
477
+ yVelocity
450
478
  });
451
479
 
452
480
  return newState;
@@ -457,7 +485,11 @@ function gestureHandlers(set, containerRef, options = {}) {
457
485
 
458
486
 
459
487
  function handleTouchMove(e) {
460
- e.preventDefault();
488
+ if (e.cancelable) {
489
+ // prevent drag & drop behaviour from browser
490
+ e.preventDefault();
491
+ }
492
+
461
493
  handleMove(e.touches.item(0));
462
494
  }
463
495
 
@@ -1634,6 +1666,7 @@ const getTabblableNodes = parentNode => {
1634
1666
  return Array.from(parentNode.querySelectorAll(tabblable));
1635
1667
  };
1636
1668
 
1669
+ const focusLockStack = [];
1637
1670
  function useFocusLock(ref, opts) {
1638
1671
  const {
1639
1672
  enabled = true,
@@ -1641,28 +1674,41 @@ function useFocusLock(ref, opts) {
1641
1674
  lockEndRef
1642
1675
  } = opts;
1643
1676
  react.useEffect(() => {
1644
- if (enabled) {
1677
+ const rootEl = ref.current;
1678
+
1679
+ if (enabled && rootEl) {
1680
+ focusLockStack.push(rootEl);
1681
+
1645
1682
  const listener = event => {
1683
+ const isActiveFocusLock = focusLockStack[focusLockStack.length - 1] === rootEl;
1684
+
1685
+ if (!isActiveFocusLock) {
1686
+ // Not the currently focused lock. Forget about it.
1687
+ return;
1688
+ }
1689
+
1646
1690
  if (event.target === lockEndRef.current) {
1647
- ref.current && ref.current.focus();
1691
+ rootEl.focus();
1648
1692
  } else if (event.target === lockStartRef.current) {
1649
- const nodes = getTabblableNodes(ref.current);
1693
+ const nodes = getTabblableNodes(rootEl);
1650
1694
 
1651
1695
  if (nodes.length > 0) {
1652
1696
  const nodeToFocus = nodes.length - 1;
1653
1697
  nodes[nodeToFocus].focus();
1654
1698
  } else {
1655
- ref.current && ref.current.focus();
1699
+ rootEl.focus();
1656
1700
  }
1657
- } else if (document !== event.target && ref.current && ref.current !== event.target && !ref.current.contains(event.target)) {
1701
+ } else if (document !== event.target && rootEl !== event.target && !rootEl.contains(event.target)) {
1658
1702
  event.preventDefault();
1659
- ref.current.focus();
1703
+ rootEl.focus();
1660
1704
  }
1661
1705
  };
1662
1706
 
1663
1707
  document.addEventListener('focusin', listener);
1664
1708
  return () => {
1665
- document.removeEventListener('focusin', listener);
1709
+ document.removeEventListener('focusin', listener); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1710
+
1711
+ focusLockStack.pop();
1666
1712
  };
1667
1713
  } // eslint-disable-next-line react-hooks/exhaustive-deps
1668
1714
 
@@ -2741,7 +2787,7 @@ let restTimeout;
2741
2787
  function startRestTimer() {
2742
2788
  window.clearTimeout(restTimeout);
2743
2789
  restTimeout = window.setTimeout(() => {
2744
- send(TooltipEventTypes.Rest, undefined);
2790
+ send(Rest, undefined);
2745
2791
  }, 200);
2746
2792
  }
2747
2793
 
@@ -2754,7 +2800,7 @@ let leavingVisibleTimer;
2754
2800
 
2755
2801
  function startLeavingVisibleTimer() {
2756
2802
  window.clearTimeout(leavingVisibleTimer);
2757
- leavingVisibleTimer = window.setTimeout(() => send(TooltipEventTypes.TimeComplete, undefined), 100);
2803
+ leavingVisibleTimer = window.setTimeout(() => send(TimeComplete, undefined), 100);
2758
2804
  }
2759
2805
 
2760
2806
  function clearLeavingVisibleTimer() {
@@ -2763,35 +2809,31 @@ function clearLeavingVisibleTimer() {
2763
2809
  // State machine
2764
2810
 
2765
2811
 
2766
- let TooltipStates;
2812
+ // Nothing goin' on
2813
+ const Idle = 'IDLE'; // We're considering showing the tooltip, but we're gonna wait a sec
2767
2814
 
2768
- (function (TooltipStates) {
2769
- TooltipStates["Idle"] = "IDLE";
2770
- TooltipStates["Focused"] = "FOCUSED";
2771
- TooltipStates["Visible"] = "VISIBLE";
2772
- TooltipStates["LeavingVisible"] = "LEAVING_VISIBLE";
2773
- TooltipStates["Dismissed"] = "DISMISSED";
2774
- })(TooltipStates || (TooltipStates = {}));
2815
+ const Focused = 'FOCUSED'; // It's on!
2775
2816
 
2776
- let TooltipEventTypes;
2817
+ const Visible = 'VISIBLE'; // Focus has left, but we want to keep it visible for a sec
2777
2818
 
2778
- (function (TooltipEventTypes) {
2779
- TooltipEventTypes["Blur"] = "BLUR";
2780
- TooltipEventTypes["Focus"] = "FOCUS";
2781
- TooltipEventTypes["GlobalMouseMove"] = "GLOBAL_MOUSE_MOVE";
2782
- TooltipEventTypes["MouseDown"] = "MOUSE_DOWN";
2783
- TooltipEventTypes["MouseEnter"] = "MOUSE_ENTER";
2784
- TooltipEventTypes["MouseLeave"] = "MOUSE_LEAVE";
2785
- TooltipEventTypes["MouseMove"] = "MOUSE_MOVE";
2786
- TooltipEventTypes["Rest"] = "REST";
2787
- TooltipEventTypes["SelectWithKeyboard"] = "SELECT_WITH_KEYBOARD";
2788
- TooltipEventTypes["TimeComplete"] = "TIME_COMPLETE";
2789
- })(TooltipEventTypes || (TooltipEventTypes = {}));
2819
+ const LeavingVisible = 'LEAVING_VISIBLE'; // The user clicked the tool, so we want to hide the thing, we can't just use
2820
+ // IDLE because we need to ignore mousemove, etc.
2790
2821
 
2822
+ const Dismissed = 'DISMISSED';
2823
+ const Blur = 'BLUR';
2824
+ const Focus = 'FOCUS';
2825
+ const GlobalMouseMove = 'GLOBAL_MOUSE_MOVE';
2826
+ const MouseDown = 'MOUSE_DOWN';
2827
+ const MouseEnter = 'MOUSE_ENTER';
2828
+ const MouseLeave = 'MOUSE_LEAVE';
2829
+ const MouseMove = 'MOUSE_MOVE';
2830
+ const Rest = 'REST';
2831
+ const SelectWithKeyboard = 'SELECT_WITH_KEYBOARD';
2832
+ const TimeComplete = 'TIME_COMPLETE';
2791
2833
  const subscription = createSubscription();
2792
2834
  const state = {
2793
2835
  current: {
2794
- state: TooltipStates.Idle,
2836
+ state: Idle,
2795
2837
  id: ''
2796
2838
  }
2797
2839
  };
@@ -2801,40 +2843,40 @@ function clearContextId() {
2801
2843
  }
2802
2844
 
2803
2845
  const chart = {
2804
- initial: TooltipStates.Idle,
2846
+ initial: Idle,
2805
2847
  states: {
2806
- [TooltipStates.Idle]: {
2848
+ [Idle]: {
2807
2849
  enter: () => {
2808
2850
  clearContextId();
2809
2851
  },
2810
2852
  on: {
2811
- [TooltipEventTypes.MouseEnter]: TooltipStates.Focused,
2812
- [TooltipEventTypes.Focus]: TooltipStates.Visible
2853
+ [MouseEnter]: Focused,
2854
+ [Focus]: Visible
2813
2855
  }
2814
2856
  },
2815
- [TooltipStates.Focused]: {
2857
+ [Focused]: {
2816
2858
  enter: startRestTimer,
2817
2859
  leave: clearRestTimer,
2818
2860
  on: {
2819
- [TooltipEventTypes.MouseMove]: TooltipStates.Focused,
2820
- [TooltipEventTypes.MouseLeave]: TooltipStates.Idle,
2821
- [TooltipEventTypes.MouseDown]: TooltipStates.Dismissed,
2822
- [TooltipEventTypes.Blur]: TooltipStates.Idle,
2823
- [TooltipEventTypes.Rest]: TooltipStates.Visible
2861
+ [MouseMove]: Focused,
2862
+ [MouseLeave]: Idle,
2863
+ [MouseDown]: Dismissed,
2864
+ [Blur]: Idle,
2865
+ [Rest]: Visible
2824
2866
  }
2825
2867
  },
2826
- [TooltipStates.Visible]: {
2868
+ [Visible]: {
2827
2869
  on: {
2828
- [TooltipEventTypes.Focus]: TooltipStates.Focused,
2829
- [TooltipEventTypes.MouseEnter]: TooltipStates.Focused,
2830
- [TooltipEventTypes.MouseLeave]: TooltipStates.LeavingVisible,
2831
- [TooltipEventTypes.Blur]: TooltipStates.LeavingVisible,
2832
- [TooltipEventTypes.MouseDown]: TooltipStates.Dismissed,
2833
- [TooltipEventTypes.SelectWithKeyboard]: TooltipStates.Dismissed,
2834
- [TooltipEventTypes.GlobalMouseMove]: TooltipStates.LeavingVisible
2870
+ [Focus]: Focused,
2871
+ [MouseEnter]: Focused,
2872
+ [MouseLeave]: LeavingVisible,
2873
+ [Blur]: LeavingVisible,
2874
+ [MouseDown]: Dismissed,
2875
+ [SelectWithKeyboard]: Dismissed,
2876
+ [GlobalMouseMove]: LeavingVisible
2835
2877
  }
2836
2878
  },
2837
- [TooltipStates.LeavingVisible]: {
2879
+ [LeavingVisible]: {
2838
2880
  enter: () => {
2839
2881
  startLeavingVisibleTimer();
2840
2882
  },
@@ -2843,18 +2885,18 @@ const chart = {
2843
2885
  clearContextId();
2844
2886
  },
2845
2887
  on: {
2846
- [TooltipEventTypes.MouseEnter]: TooltipStates.Visible,
2847
- [TooltipEventTypes.Focus]: TooltipStates.Visible,
2848
- [TooltipEventTypes.TimeComplete]: TooltipStates.Idle
2888
+ [MouseEnter]: Visible,
2889
+ [Focus]: Visible,
2890
+ [TimeComplete]: Idle
2849
2891
  }
2850
2892
  },
2851
- [TooltipStates.Dismissed]: {
2893
+ [Dismissed]: {
2852
2894
  leave: () => {
2853
2895
  clearContextId();
2854
2896
  },
2855
2897
  on: {
2856
- [TooltipEventTypes.MouseLeave]: TooltipStates.Idle,
2857
- [TooltipEventTypes.Blur]: TooltipStates.Idle
2898
+ [MouseLeave]: Idle,
2899
+ [Blur]: Idle
2858
2900
  }
2859
2901
  }
2860
2902
  }
@@ -2917,35 +2959,35 @@ function useTooltip(childProps, childRef, tooltipProps) {
2917
2959
  const id = useId('');
2918
2960
  react.useEffect(() => {
2919
2961
  subscription.subscribe(() => {
2920
- setVisible((state.current.state === TooltipStates.Visible || state.current.state === TooltipStates.LeavingVisible) && state.current.id === id);
2962
+ setVisible((state.current.state === Visible || state.current.state === LeavingVisible) && state.current.id === id);
2921
2963
  });
2922
2964
  }, [id]);
2923
2965
 
2924
2966
  function handleMouseEnter() {
2925
- send(TooltipEventTypes.MouseEnter, {
2967
+ send(MouseEnter, {
2926
2968
  id
2927
2969
  });
2928
2970
  }
2929
2971
 
2930
2972
  function handleMouseMove() {
2931
- send(TooltipEventTypes.MouseMove, {
2973
+ send(MouseMove, {
2932
2974
  id
2933
2975
  });
2934
2976
  }
2935
2977
 
2936
2978
  function handleMouseLeave() {
2937
- send(TooltipEventTypes.MouseLeave);
2979
+ send(MouseLeave);
2938
2980
  }
2939
2981
 
2940
2982
  function handleMouseDown() {
2941
2983
  // Allow quick click from one tool to another
2942
2984
  if (state.current.id === id) {
2943
- send(TooltipEventTypes.MouseDown);
2985
+ send(MouseDown);
2944
2986
  }
2945
2987
  }
2946
2988
 
2947
2989
  function handleFocus() {
2948
- send(TooltipEventTypes.Focus, {
2990
+ send(Focus, {
2949
2991
  id
2950
2992
  });
2951
2993
  }
@@ -2953,13 +2995,13 @@ function useTooltip(childProps, childRef, tooltipProps) {
2953
2995
  function handleBlur() {
2954
2996
  // Allow quick click from one tool to another
2955
2997
  if (state.current.id === id) {
2956
- send(TooltipEventTypes.Blur, undefined);
2998
+ send(Blur, undefined);
2957
2999
  }
2958
3000
  }
2959
3001
 
2960
3002
  function handleKeyDown(event) {
2961
3003
  if (event.key === 'Enter' || event.key === ' ') {
2962
- send(TooltipEventTypes.SelectWithKeyboard);
3004
+ send(SelectWithKeyboard);
2963
3005
  }
2964
3006
  }
2965
3007