@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.
- package/build/cjs/index.js +113 -71
- package/build/cjs/index.js.map +1 -1
- package/build/esm/FocusLock/useFocusLock.js +21 -7
- package/build/esm/FocusLock/useFocusLock.js.map +1 -1
- package/build/esm/Tooltip/stateMachine.d.ts +17 -19
- package/build/esm/Tooltip/stateMachine.js +45 -49
- package/build/esm/Tooltip/stateMachine.js.map +1 -1
- package/build/esm/Tooltip/useTooltip.js +9 -9
- package/build/esm/Tooltip/useTooltip.js.map +1 -1
- package/build/esm/hooks/useGestureHandlers.d.ts +2 -0
- package/build/esm/hooks/useGestureHandlers.js +39 -7
- package/build/esm/hooks/useGestureHandlers.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +383 -88
- package/package.json +6 -6
- package/src/Accordion/Accordion.story.tsx +72 -0
- package/src/Accordion/Accordion.tsx +51 -0
- package/src/Accordion/AccordionBody.tsx +53 -0
- package/src/Accordion/AccordionHeader.tsx +165 -0
- package/src/Accordion/AccordionItem.tsx +43 -0
- package/src/Accordion/context.ts +35 -0
- package/src/Accordion/index.ts +4 -0
- package/src/Accordion/scopeQuery.ts +7 -0
- package/src/Accordion/styles.css +21 -0
- package/src/CheckBox/CheckBox.tsx +41 -0
- package/src/CheckBox/index.ts +1 -0
- package/src/ComboBox/ComboBox.story.tsx +118 -0
- package/src/ComboBox/Combobox.tsx +153 -0
- package/src/ComboBox/ComboboxButton.tsx +60 -0
- package/src/ComboBox/ComboboxInput.tsx +178 -0
- package/src/ComboBox/ComboboxLabel.tsx +32 -0
- package/src/ComboBox/ComboboxList.tsx +47 -0
- package/src/ComboBox/ComboboxOption.tsx +107 -0
- package/src/ComboBox/ComboboxPopover.tsx +58 -0
- package/src/ComboBox/cities.ts +23194 -0
- package/src/ComboBox/context.ts +33 -0
- package/src/ComboBox/hooks.tsx +428 -0
- package/src/ComboBox/index.ts +8 -0
- package/src/ComboBox/makeHash.ts +19 -0
- package/src/ComboBox/scopeQuery.ts +6 -0
- package/src/ComboBox/styles.css +30 -0
- package/src/FocusLock/FocusLock.tsx +59 -0
- package/src/FocusLock/index.ts +1 -0
- package/src/FocusLock/tabUtils.ts +28 -0
- package/src/FocusLock/useFocusLock.ts +61 -0
- package/src/List/List.story.tsx +17 -0
- package/src/List/List.tsx +17 -0
- package/src/List/ListItem.tsx +23 -0
- package/src/List/context.ts +19 -0
- package/src/List/index.ts +2 -0
- package/src/Menu/.gitkeep +0 -0
- package/src/Menu/Menu.story.tsx +158 -0
- package/src/Menu/Menu.tsx +60 -0
- package/src/Menu/MenuButton.tsx +83 -0
- package/src/Menu/MenuItem.tsx +83 -0
- package/src/Menu/MenuList.tsx +201 -0
- package/src/Menu/MenuPopover.tsx +25 -0
- package/src/Menu/context.ts +32 -0
- package/src/Menu/index.ts +5 -0
- package/src/Menu/scope.ts +7 -0
- package/src/Menu/styles.css +42 -0
- package/src/Modal/Modal.story.tsx +242 -0
- package/src/Modal/Modal.tsx +42 -0
- package/src/Modal/ModalBackdrop.tsx +72 -0
- package/src/Modal/NavDrawer.story.tsx +157 -0
- package/src/Modal/index.ts +2 -0
- package/src/Modal/styles.css +46 -0
- package/src/Popover/.gitkeep +0 -0
- package/src/Popper/Popper.story.tsx +267 -0
- package/src/Popper/Popper.tsx +149 -0
- package/src/Popper/PopperArrow.tsx +36 -0
- package/src/Popper/context.ts +9 -0
- package/src/Popper/index.ts +3 -0
- package/src/Popper/styles.css +60 -0
- package/src/Portal/Portal.tsx +20 -0
- package/src/Portal/index.ts +1 -0
- package/src/RadioButton/RadioButton.story.tsx +73 -0
- package/src/RadioButton/RadioButton.tsx +48 -0
- package/src/RadioButton/RadioGroup.tsx +56 -0
- package/src/RadioButton/context.ts +19 -0
- package/src/RadioButton/index.ts +2 -0
- package/src/SkipNav/SkipNav.tsx +16 -0
- package/src/SkipNav/index.tsx +1 -0
- package/src/Spinner/Spinner.story.tsx +30 -0
- package/src/Spinner/Spinner.tsx +112 -0
- package/src/Spinner/SpinnerButton.tsx +48 -0
- package/src/Spinner/context.ts +21 -0
- package/src/Spinner/index.ts +2 -0
- package/src/Spinner/styles.css +23 -0
- package/src/Tabs/Tab.story.tsx +78 -0
- package/src/Tabs/Tab.tsx +131 -0
- package/src/Tabs/TabList.tsx +63 -0
- package/src/Tabs/TabPanel.tsx +52 -0
- package/src/Tabs/TabPanels.tsx +30 -0
- package/src/Tabs/Tabs.tsx +47 -0
- package/src/Tabs/context.ts +30 -0
- package/src/Tabs/index.tsx +5 -0
- package/src/Tabs/scopeQuery.ts +6 -0
- package/src/Tabs/styles.css +0 -0
- package/src/Tooltip/.gitkeep +0 -0
- package/src/Tooltip/Tooltip.story.tsx +59 -0
- package/src/Tooltip/Tooltip.tsx +48 -0
- package/src/Tooltip/index.ts +1 -0
- package/src/Tooltip/stateMachine.ts +196 -0
- package/src/Tooltip/styles.css +17 -0
- package/src/Tooltip/useTooltip.ts +128 -0
- package/src/hooks/index.ts +14 -0
- package/src/hooks/useAutoFocus.ts +13 -0
- package/src/hooks/useChildrenCounter.ts +50 -0
- package/src/hooks/useControlledState.ts +37 -0
- package/src/hooks/useFocusReturn.ts +23 -0
- package/src/hooks/useFocusState.ts +28 -0
- package/src/hooks/useGestureHandlers.ts +253 -0
- package/src/hooks/useId.ts +18 -0
- package/src/hooks/useMeasure.ts +33 -0
- package/src/hooks/useOnClickOutside.ts +32 -0
- package/src/hooks/useOnKeyDown.ts +18 -0
- package/src/hooks/useReducerMachine.ts +59 -0
- package/src/hooks/useRemoveBodyScroll.ts +37 -0
- package/src/hooks/useScope.ts +51 -0
- package/src/hooks/useThrottle.ts +19 -0
- package/src/index.ts +19 -0
- package/src/utils/assignRef.ts +27 -0
- package/src/utils/clamp.ts +3 -0
- package/src/utils/createSubscription.ts +16 -0
- package/src/utils/getCircularIndex.ts +7 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/rubberBandClamp.ts +25 -0
- package/src/utils/wrapEvent.ts +20 -0
package/build/cjs/index.js
CHANGED
|
@@ -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
|
-
|
|
425
|
-
pageY,
|
|
426
|
-
movementY
|
|
447
|
+
pageY
|
|
427
448
|
} = e;
|
|
428
|
-
|
|
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
|
|
472
|
+
xVelocity,
|
|
445
473
|
yDelta,
|
|
446
474
|
yDeltaPercent,
|
|
447
475
|
y: pageY,
|
|
448
476
|
yPrev: state.y,
|
|
449
|
-
yVelocity
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
1691
|
+
rootEl.focus();
|
|
1648
1692
|
} else if (event.target === lockStartRef.current) {
|
|
1649
|
-
const nodes = getTabblableNodes(
|
|
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
|
-
|
|
1699
|
+
rootEl.focus();
|
|
1656
1700
|
}
|
|
1657
|
-
} else if (document !== event.target &&
|
|
1701
|
+
} else if (document !== event.target && rootEl !== event.target && !rootEl.contains(event.target)) {
|
|
1658
1702
|
event.preventDefault();
|
|
1659
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
2812
|
+
// Nothing goin' on
|
|
2813
|
+
const Idle = 'IDLE'; // We're considering showing the tooltip, but we're gonna wait a sec
|
|
2767
2814
|
|
|
2768
|
-
|
|
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
|
-
|
|
2817
|
+
const Visible = 'VISIBLE'; // Focus has left, but we want to keep it visible for a sec
|
|
2777
2818
|
|
|
2778
|
-
|
|
2779
|
-
|
|
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:
|
|
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:
|
|
2846
|
+
initial: Idle,
|
|
2805
2847
|
states: {
|
|
2806
|
-
[
|
|
2848
|
+
[Idle]: {
|
|
2807
2849
|
enter: () => {
|
|
2808
2850
|
clearContextId();
|
|
2809
2851
|
},
|
|
2810
2852
|
on: {
|
|
2811
|
-
[
|
|
2812
|
-
[
|
|
2853
|
+
[MouseEnter]: Focused,
|
|
2854
|
+
[Focus]: Visible
|
|
2813
2855
|
}
|
|
2814
2856
|
},
|
|
2815
|
-
[
|
|
2857
|
+
[Focused]: {
|
|
2816
2858
|
enter: startRestTimer,
|
|
2817
2859
|
leave: clearRestTimer,
|
|
2818
2860
|
on: {
|
|
2819
|
-
[
|
|
2820
|
-
[
|
|
2821
|
-
[
|
|
2822
|
-
[
|
|
2823
|
-
[
|
|
2861
|
+
[MouseMove]: Focused,
|
|
2862
|
+
[MouseLeave]: Idle,
|
|
2863
|
+
[MouseDown]: Dismissed,
|
|
2864
|
+
[Blur]: Idle,
|
|
2865
|
+
[Rest]: Visible
|
|
2824
2866
|
}
|
|
2825
2867
|
},
|
|
2826
|
-
[
|
|
2868
|
+
[Visible]: {
|
|
2827
2869
|
on: {
|
|
2828
|
-
[
|
|
2829
|
-
[
|
|
2830
|
-
[
|
|
2831
|
-
[
|
|
2832
|
-
[
|
|
2833
|
-
[
|
|
2834
|
-
[
|
|
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
|
-
[
|
|
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
|
-
[
|
|
2847
|
-
[
|
|
2848
|
-
[
|
|
2888
|
+
[MouseEnter]: Visible,
|
|
2889
|
+
[Focus]: Visible,
|
|
2890
|
+
[TimeComplete]: Idle
|
|
2849
2891
|
}
|
|
2850
2892
|
},
|
|
2851
|
-
[
|
|
2893
|
+
[Dismissed]: {
|
|
2852
2894
|
leave: () => {
|
|
2853
2895
|
clearContextId();
|
|
2854
2896
|
},
|
|
2855
2897
|
on: {
|
|
2856
|
-
[
|
|
2857
|
-
[
|
|
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 ===
|
|
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(
|
|
2967
|
+
send(MouseEnter, {
|
|
2926
2968
|
id
|
|
2927
2969
|
});
|
|
2928
2970
|
}
|
|
2929
2971
|
|
|
2930
2972
|
function handleMouseMove() {
|
|
2931
|
-
send(
|
|
2973
|
+
send(MouseMove, {
|
|
2932
2974
|
id
|
|
2933
2975
|
});
|
|
2934
2976
|
}
|
|
2935
2977
|
|
|
2936
2978
|
function handleMouseLeave() {
|
|
2937
|
-
send(
|
|
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(
|
|
2985
|
+
send(MouseDown);
|
|
2944
2986
|
}
|
|
2945
2987
|
}
|
|
2946
2988
|
|
|
2947
2989
|
function handleFocus() {
|
|
2948
|
-
send(
|
|
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(
|
|
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(
|
|
3004
|
+
send(SelectWithKeyboard);
|
|
2963
3005
|
}
|
|
2964
3006
|
}
|
|
2965
3007
|
|