@nextui-org/react 1.0.1-alpha.48 → 1.0.1-alpha.51
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/cjs/backdrop/index.d.ts +23 -0
- package/cjs/backdrop/index.js +102 -0
- package/cjs/css-baseline/css-baseline.js +3 -3
- package/cjs/index.d.ts +4 -0
- package/cjs/index.js +22 -2
- package/cjs/input/input-icon-clear.d.ts +1 -0
- package/cjs/input/input-icon-clear.js +7 -5
- package/cjs/input/input-password.d.ts +4 -1
- package/cjs/input/input-props.d.ts +2 -0
- package/cjs/input/input-props.js +1 -0
- package/cjs/input/input.js +10 -3
- package/cjs/modal/index.d.ts +2 -0
- package/cjs/modal/index.js +21 -0
- package/cjs/modal/modal-body.d.ts +19 -0
- package/cjs/modal/modal-body.js +65 -0
- package/cjs/modal/modal-close-button.d.ts +7 -0
- package/cjs/modal/modal-close-button.js +52 -0
- package/cjs/modal/modal-context.d.ts +8 -0
- package/cjs/modal/modal-context.js +18 -0
- package/cjs/modal/modal-footer.d.ts +20 -0
- package/cjs/modal/modal-footer.js +65 -0
- package/cjs/modal/modal-header.d.ts +20 -0
- package/cjs/modal/modal-header.js +65 -0
- package/cjs/modal/modal-wrapper.d.ts +22 -0
- package/cjs/modal/modal-wrapper.js +128 -0
- package/cjs/modal/modal.d.ts +38 -0
- package/cjs/modal/modal.js +152 -0
- package/cjs/modal/use-modal.d.ts +11 -0
- package/cjs/modal/use-modal.js +25 -0
- package/cjs/radio/radio-group.js +6 -4
- package/cjs/radio/radio.js +11 -8
- package/cjs/{input → shared}/clear-icon.d.ts +3 -1
- package/cjs/{input → shared}/clear-icon.js +20 -1
- package/cjs/snippet/snippet.d.ts +6 -5
- package/cjs/snippet/snippet.js +4 -2
- package/cjs/text/child.d.ts +1 -0
- package/cjs/text/child.js +10 -4
- package/cjs/text/text.d.ts +1 -0
- package/cjs/text/text.js +2 -0
- package/cjs/theme/dark.js +3 -3
- package/cjs/theme/default.js +1 -1
- package/cjs/theme/types.d.ts +1 -0
- package/cjs/tooltip/tooltip-content.js +5 -5
- package/cjs/use-keyboard/codes.d.ts +92 -0
- package/cjs/use-keyboard/codes.js +104 -0
- package/cjs/use-keyboard/helper.d.ts +3 -0
- package/cjs/use-keyboard/helper.js +35 -0
- package/cjs/use-keyboard/index.d.ts +5 -0
- package/cjs/use-keyboard/index.js +15 -0
- package/cjs/use-keyboard/use-keyboard.d.ts +22 -0
- package/cjs/use-keyboard/use-keyboard.js +76 -0
- package/cjs/utils/collections.d.ts +3 -0
- package/cjs/utils/collections.js +30 -2
- package/cjs/utils/icons.js +57 -1
- package/esm/backdrop/index.d.ts +23 -0
- package/esm/backdrop/index.js +79 -0
- package/esm/css-baseline/css-baseline.js +3 -3
- package/esm/index.d.ts +4 -0
- package/esm/index.js +5 -1
- package/esm/input/input-icon-clear.d.ts +1 -0
- package/esm/input/input-icon-clear.js +7 -5
- package/esm/input/input-password.d.ts +4 -1
- package/esm/input/input-props.d.ts +2 -0
- package/esm/input/input-props.js +1 -0
- package/esm/input/input.js +9 -2
- package/esm/modal/index.d.ts +2 -0
- package/esm/modal/index.js +8 -0
- package/esm/modal/modal-body.d.ts +19 -0
- package/esm/modal/modal-body.js +45 -0
- package/esm/modal/modal-close-button.d.ts +7 -0
- package/esm/modal/modal-close-button.js +39 -0
- package/esm/modal/modal-context.d.ts +8 -0
- package/esm/modal/modal-context.js +4 -0
- package/esm/modal/modal-footer.d.ts +20 -0
- package/esm/modal/modal-footer.js +44 -0
- package/esm/modal/modal-header.d.ts +20 -0
- package/esm/modal/modal-header.js +44 -0
- package/esm/modal/modal-wrapper.d.ts +22 -0
- package/esm/modal/modal-wrapper.js +106 -0
- package/esm/modal/modal.d.ts +38 -0
- package/esm/modal/modal.js +128 -0
- package/esm/modal/use-modal.d.ts +11 -0
- package/esm/modal/use-modal.js +16 -0
- package/esm/radio/radio-group.js +6 -4
- package/esm/radio/radio.js +11 -8
- package/esm/{input → shared}/clear-icon.d.ts +3 -1
- package/esm/{input → shared}/clear-icon.js +20 -1
- package/esm/snippet/snippet.d.ts +6 -5
- package/esm/snippet/snippet.js +4 -2
- package/esm/text/child.d.ts +1 -0
- package/esm/text/child.js +10 -4
- package/esm/text/text.d.ts +1 -0
- package/esm/text/text.js +2 -0
- package/esm/theme/dark.js +3 -3
- package/esm/theme/default.js +1 -1
- package/esm/theme/types.d.ts +1 -0
- package/esm/tooltip/tooltip-content.js +5 -5
- package/esm/use-keyboard/codes.d.ts +92 -0
- package/esm/use-keyboard/codes.js +97 -0
- package/esm/use-keyboard/helper.d.ts +3 -0
- package/esm/use-keyboard/helper.js +24 -0
- package/esm/use-keyboard/index.d.ts +5 -0
- package/esm/use-keyboard/index.js +4 -0
- package/esm/use-keyboard/use-keyboard.d.ts +22 -0
- package/esm/use-keyboard/use-keyboard.js +67 -0
- package/esm/utils/collections.d.ts +3 -0
- package/esm/utils/collections.js +19 -0
- package/esm/utils/icons.js +50 -0
- package/modal/package.json +6 -0
- package/package.json +1 -1
- package/shared/package.json +6 -0
- package/umd/nextui.js +958 -91
- package/umd/nextui.min.js +1 -1
- package/use-keyboard/package.json +6 -0
|
@@ -17,16 +17,35 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
17
17
|
|
|
18
18
|
const defaultProps = {
|
|
19
19
|
width: 24,
|
|
20
|
-
height: 24
|
|
20
|
+
height: 24,
|
|
21
|
+
plain: false
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
const Close = ({
|
|
24
25
|
size,
|
|
25
26
|
fill,
|
|
27
|
+
plain,
|
|
26
28
|
width,
|
|
27
29
|
height,
|
|
28
30
|
...props
|
|
29
31
|
}) => {
|
|
32
|
+
if (plain) {
|
|
33
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
|
|
34
|
+
width: size || width,
|
|
35
|
+
height: size || height,
|
|
36
|
+
viewBox: "0 0 24 24",
|
|
37
|
+
fill: "none",
|
|
38
|
+
stroke: fill,
|
|
39
|
+
strokeWidth: 2,
|
|
40
|
+
strokeLinecap: "round",
|
|
41
|
+
strokeLinejoin: "round",
|
|
42
|
+
...props,
|
|
43
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
|
|
44
|
+
d: "M18 6L6 18M6 6l12 12"
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
30
49
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
|
|
31
50
|
width: size || width,
|
|
32
51
|
height: size || height,
|
package/cjs/snippet/snippet.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { SnippetTypes, CopyTypes } from '../utils/prop-types';
|
|
2
|
+
import { SnippetTypes, CopyTypes, TooltipColors } from '../utils/prop-types';
|
|
3
3
|
interface Props {
|
|
4
4
|
text?: string | string[];
|
|
5
5
|
symbol?: string;
|
|
6
|
-
toastText?: string;
|
|
7
6
|
filled?: boolean;
|
|
8
7
|
width?: string;
|
|
9
8
|
bordered?: boolean;
|
|
10
9
|
showTooltip?: boolean;
|
|
10
|
+
tooltipText?: string;
|
|
11
11
|
tooltipCopyText?: string;
|
|
12
12
|
tooltipCopiedText?: string;
|
|
13
13
|
copy?: CopyTypes;
|
|
14
14
|
type?: SnippetTypes;
|
|
15
|
+
tooltipColor?: TooltipColors | string;
|
|
15
16
|
className?: string;
|
|
16
17
|
}
|
|
17
18
|
declare const defaultProps: {
|
|
@@ -19,10 +20,10 @@ declare const defaultProps: {
|
|
|
19
20
|
bordered: boolean;
|
|
20
21
|
showTooltip: boolean;
|
|
21
22
|
symbol: string;
|
|
22
|
-
toastText: string;
|
|
23
23
|
width: string;
|
|
24
24
|
copy: "default" | "slient" | "prevent";
|
|
25
25
|
type: "default" | "primary" | "secondary" | "success" | "warning" | "error" | "gradient" | "invert";
|
|
26
|
+
tooltipColor: string;
|
|
26
27
|
tooltipCopyText: string;
|
|
27
28
|
tooltipCopiedText: string;
|
|
28
29
|
className: string;
|
|
@@ -34,12 +35,12 @@ declare const _default: React.ComponentType<Partial<{
|
|
|
34
35
|
bordered: boolean;
|
|
35
36
|
showTooltip: boolean;
|
|
36
37
|
symbol: string;
|
|
37
|
-
toastText: string;
|
|
38
38
|
width: string;
|
|
39
39
|
copy: "default" | "slient" | "prevent";
|
|
40
40
|
type: "default" | "primary" | "secondary" | "success" | "warning" | "error" | "gradient" | "invert";
|
|
41
|
+
tooltipColor: string;
|
|
41
42
|
tooltipCopyText: string;
|
|
42
43
|
tooltipCopiedText: string;
|
|
43
44
|
className: string;
|
|
44
|
-
}> & Omit<SnippetProps, "symbol" | "type" | "width" | "copy" | "className" | "bordered" | "filled" | "
|
|
45
|
+
}> & Omit<SnippetProps, "symbol" | "type" | "width" | "copy" | "className" | "bordered" | "filled" | "showTooltip" | "tooltipCopyText" | "tooltipCopiedText" | "tooltipColor">>;
|
|
45
46
|
export default _default;
|
package/cjs/snippet/snippet.js
CHANGED
|
@@ -32,10 +32,10 @@ const defaultProps = {
|
|
|
32
32
|
bordered: false,
|
|
33
33
|
showTooltip: true,
|
|
34
34
|
symbol: '$',
|
|
35
|
-
toastText: 'Copied to clipboard!',
|
|
36
35
|
width: 'initial',
|
|
37
36
|
copy: 'default',
|
|
38
37
|
type: 'default',
|
|
38
|
+
tooltipColor: 'default',
|
|
39
39
|
tooltipCopyText: 'Copy',
|
|
40
40
|
tooltipCopiedText: 'Copied',
|
|
41
41
|
className: ''
|
|
@@ -54,12 +54,12 @@ const Snippet = ({
|
|
|
54
54
|
bordered,
|
|
55
55
|
children,
|
|
56
56
|
symbol,
|
|
57
|
-
toastText,
|
|
58
57
|
showTooltip,
|
|
59
58
|
text,
|
|
60
59
|
width,
|
|
61
60
|
tooltipCopyText,
|
|
62
61
|
tooltipCopiedText,
|
|
62
|
+
tooltipColor,
|
|
63
63
|
copy: copyType,
|
|
64
64
|
className,
|
|
65
65
|
...props
|
|
@@ -111,6 +111,8 @@ const Snippet = ({
|
|
|
111
111
|
children: children || text
|
|
112
112
|
}), showCopyIcon && copyType !== 'slient' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_tooltip.default, {
|
|
113
113
|
hideArrow: true,
|
|
114
|
+
rounded: true,
|
|
115
|
+
color: tooltipColor,
|
|
114
116
|
text: copied ? tooltipCopiedText : tooltipCopyText,
|
|
115
117
|
onVisibleChange: handleTooltipVisibleChange,
|
|
116
118
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
package/cjs/text/child.d.ts
CHANGED
package/cjs/text/child.js
CHANGED
|
@@ -33,6 +33,7 @@ const TextChild = ({
|
|
|
33
33
|
className,
|
|
34
34
|
color: userColor,
|
|
35
35
|
capitalize,
|
|
36
|
+
margin: marginProp,
|
|
36
37
|
size,
|
|
37
38
|
...props
|
|
38
39
|
}) => {
|
|
@@ -44,14 +45,19 @@ const TextChild = ({
|
|
|
44
45
|
if (typeof size === 'number') return `${size}px`;
|
|
45
46
|
return size;
|
|
46
47
|
}, [size]);
|
|
48
|
+
const margin = (0, _react.useMemo)(() => {
|
|
49
|
+
if (!marginProp) return 'inherit';
|
|
50
|
+
if (typeof marginProp === 'number') return `${size}px`;
|
|
51
|
+
return marginProp;
|
|
52
|
+
}, [marginProp]);
|
|
47
53
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
|
|
48
54
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Component, { ...props,
|
|
49
|
-
className: _style.default.dynamic([["
|
|
55
|
+
className: _style.default.dynamic([["3362076940", [tag, color, margin, fontSize]]]) + " " + (props && props.className != null && props.className || `${size ? 'custom-size' : ''} ${capitalize ? 'capitalize' : ''} ${className}`),
|
|
50
56
|
children: children
|
|
51
57
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_style.default, {
|
|
52
|
-
id: "
|
|
53
|
-
dynamic: [tag, color, fontSize],
|
|
54
|
-
children: `${tag}.__jsx-style-dynamic-selector{color:${color};}.custom-size.__jsx-style-dynamic-selector{font-size:${fontSize};}.capitalize.__jsx-style-dynamic-selector{text-transform:capitalize;}`
|
|
58
|
+
id: "3362076940",
|
|
59
|
+
dynamic: [tag, color, margin, fontSize],
|
|
60
|
+
children: `${tag}.__jsx-style-dynamic-selector{color:${color};margin:${margin};}.custom-size.__jsx-style-dynamic-selector{font-size:${fontSize};}.capitalize.__jsx-style-dynamic-selector{text-transform:capitalize;}`
|
|
55
61
|
})]
|
|
56
62
|
});
|
|
57
63
|
};
|
package/cjs/text/text.d.ts
CHANGED
package/cjs/text/text.js
CHANGED
|
@@ -65,6 +65,7 @@ const Text = ({
|
|
|
65
65
|
blockquote,
|
|
66
66
|
capitalize,
|
|
67
67
|
size,
|
|
68
|
+
margin,
|
|
68
69
|
children,
|
|
69
70
|
className,
|
|
70
71
|
...props
|
|
@@ -113,6 +114,7 @@ const Text = ({
|
|
|
113
114
|
className: className,
|
|
114
115
|
capitalize: capitalize,
|
|
115
116
|
tag: tag,
|
|
117
|
+
margin: margin,
|
|
116
118
|
size: size,
|
|
117
119
|
...props,
|
|
118
120
|
children: modifers
|
package/cjs/theme/dark.js
CHANGED
|
@@ -31,9 +31,9 @@ const expressiveness = {
|
|
|
31
31
|
dropdownBoxShadow: '0 0 0 1px #333',
|
|
32
32
|
scrollerStart: 'rgba(255, 255, 255, 1)',
|
|
33
33
|
scrollerEnd: 'rgba(255, 255, 255, 0)',
|
|
34
|
-
shadowSmall: '0 10px 20px -10px rgba(
|
|
35
|
-
shadowMedium: '0 15px 22px -10px rgba(
|
|
36
|
-
shadowLarge: '0 20px 24px -10px rgba(
|
|
34
|
+
shadowSmall: '0 10px 20px -10px rgba(0, 0, 0, 0.1)',
|
|
35
|
+
shadowMedium: '0 15px 22px -10px rgba(0, 0, 0, 0.1)',
|
|
36
|
+
shadowLarge: '0 20px 24px -10px rgba(0, 0, 0, 0.1)',
|
|
37
37
|
portalOpacity: 0.75
|
|
38
38
|
};
|
|
39
39
|
exports.expressiveness = expressiveness;
|
package/cjs/theme/default.js
CHANGED
package/cjs/theme/types.d.ts
CHANGED
|
@@ -108,15 +108,15 @@ const TooltipContent = ({
|
|
|
108
108
|
ref: selfRef,
|
|
109
109
|
onClick: preventHandler,
|
|
110
110
|
...props,
|
|
111
|
-
className: _style.default.dynamic([["
|
|
111
|
+
className: _style.default.dynamic([["472873192", [rect.top, rect.left, rect.transform, colors.bgColor, colors.color, borderRadius, shadow ? theme.expressiveness.shadowMedium : 'none', theme.layout.gapQuarter, theme.layout.gapHalf, colors.bgColor, left, top, right, bottom, transform, rect.top]]]) + " " + (props && props.className != null && props.className || `tooltip-content ${className}`),
|
|
112
112
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
113
113
|
role: "tooltip",
|
|
114
|
-
className: _style.default.dynamic([["
|
|
114
|
+
className: _style.default.dynamic([["472873192", [rect.top, rect.left, rect.transform, colors.bgColor, colors.color, borderRadius, shadow ? theme.expressiveness.shadowMedium : 'none', theme.layout.gapQuarter, theme.layout.gapHalf, colors.bgColor, left, top, right, bottom, transform, rect.top]]]) + " " + `inner ${!hideArrow ? 'arrow' : ''}`,
|
|
115
115
|
children: children
|
|
116
116
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_style.default, {
|
|
117
|
-
id: "
|
|
118
|
-
dynamic: [rect.top, rect.left, rect.transform, colors.bgColor, colors.color, borderRadius, shadow ? theme.expressiveness.
|
|
119
|
-
children: `.tooltip-content.__jsx-style-dynamic-selector{position:absolute;width:auto;top:calc(${rect.top} + 6px);left:${rect.left};-webkit-transform:${rect.transform};-ms-transform:${rect.transform};transform:${rect.transform};background:${colors.bgColor};color:${colors.color};border-radius:${borderRadius};padding:0;opacity:0;z-index:1000;box-shadow:${shadow ? theme.expressiveness.
|
|
117
|
+
id: "472873192",
|
|
118
|
+
dynamic: [rect.top, rect.left, rect.transform, colors.bgColor, colors.color, borderRadius, shadow ? theme.expressiveness.shadowMedium : 'none', theme.layout.gapQuarter, theme.layout.gapHalf, colors.bgColor, left, top, right, bottom, transform, rect.top],
|
|
119
|
+
children: `.tooltip-content.__jsx-style-dynamic-selector{position:absolute;width:auto;top:calc(${rect.top} + 6px);left:${rect.left};-webkit-transform:${rect.transform};-ms-transform:${rect.transform};transform:${rect.transform};background:${colors.bgColor};color:${colors.color};border-radius:${borderRadius};padding:0;opacity:0;z-index:1000;box-shadow:${shadow ? theme.expressiveness.shadowMedium : 'none'};-webkit-transition:opacity 0.25s ease 0s,top 0.25s ease 0s;transition:opacity 0.25s ease 0s,top 0.25s ease 0s;}.inner.__jsx-style-dynamic-selector{font-size:0.875rem;padding:${theme.layout.gapQuarter} ${theme.layout.gapHalf};position:relative;}.inner.arrow.__jsx-style-dynamic-selector:after{content:'';width:10px;height:10px;z-index:-2;background:${colors.bgColor};border-radius:0px 0px 2px 0px;position:absolute;left:${left};top:${top};right:${right};bottom:${bottom};-webkit-transform:${transform};-ms-transform:${transform};transform:${transform};}.wrapper-enter-active.__jsx-style-dynamic-selector{opacity:1;top:${rect.top};}`
|
|
120
120
|
})]
|
|
121
121
|
})
|
|
122
122
|
}), el);
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KeyBinding Codes
|
|
3
|
+
* The content of this file is based on the design of the open source project "microsoft/vscode",
|
|
4
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
+
*
|
|
6
|
+
* We inherit the KeyMod values from "microsoft/vscode",
|
|
7
|
+
* but use the Browser's KeyboardEvent event implementation, and all values are used only as identification.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum KeyCode {
|
|
10
|
+
Unknown = 0,
|
|
11
|
+
Backspace = 8,
|
|
12
|
+
Tab = 9,
|
|
13
|
+
Enter = 13,
|
|
14
|
+
Shift = 16,
|
|
15
|
+
Ctrl = 17,
|
|
16
|
+
Alt = 18,
|
|
17
|
+
PauseBreak = 19,
|
|
18
|
+
CapsLock = 20,
|
|
19
|
+
Escape = 27,
|
|
20
|
+
Space = 32,
|
|
21
|
+
PageUp = 33,
|
|
22
|
+
PageDown = 34,
|
|
23
|
+
End = 35,
|
|
24
|
+
Home = 36,
|
|
25
|
+
LeftArrow = 37,
|
|
26
|
+
UpArrow = 38,
|
|
27
|
+
RightArrow = 39,
|
|
28
|
+
DownArrow = 40,
|
|
29
|
+
Insert = 45,
|
|
30
|
+
Delete = 46,
|
|
31
|
+
KEY_0 = 48,
|
|
32
|
+
KEY_1 = 49,
|
|
33
|
+
KEY_2 = 50,
|
|
34
|
+
KEY_3 = 51,
|
|
35
|
+
KEY_4 = 52,
|
|
36
|
+
KEY_5 = 53,
|
|
37
|
+
KEY_6 = 54,
|
|
38
|
+
KEY_7 = 55,
|
|
39
|
+
KEY_8 = 56,
|
|
40
|
+
KEY_9 = 57,
|
|
41
|
+
KEY_A = 65,
|
|
42
|
+
KEY_B = 66,
|
|
43
|
+
KEY_C = 67,
|
|
44
|
+
KEY_D = 68,
|
|
45
|
+
KEY_E = 69,
|
|
46
|
+
KEY_F = 70,
|
|
47
|
+
KEY_G = 71,
|
|
48
|
+
KEY_H = 72,
|
|
49
|
+
KEY_I = 73,
|
|
50
|
+
KEY_J = 74,
|
|
51
|
+
KEY_K = 75,
|
|
52
|
+
KEY_L = 76,
|
|
53
|
+
KEY_M = 77,
|
|
54
|
+
KEY_N = 78,
|
|
55
|
+
KEY_O = 79,
|
|
56
|
+
KEY_P = 80,
|
|
57
|
+
KEY_Q = 81,
|
|
58
|
+
KEY_R = 82,
|
|
59
|
+
KEY_S = 83,
|
|
60
|
+
KEY_T = 84,
|
|
61
|
+
KEY_U = 85,
|
|
62
|
+
KEY_V = 86,
|
|
63
|
+
KEY_W = 87,
|
|
64
|
+
KEY_X = 88,
|
|
65
|
+
KEY_Y = 89,
|
|
66
|
+
KEY_Z = 90,
|
|
67
|
+
Meta = 91,
|
|
68
|
+
F1 = 112,
|
|
69
|
+
F2 = 113,
|
|
70
|
+
F3 = 114,
|
|
71
|
+
F4 = 115,
|
|
72
|
+
F5 = 116,
|
|
73
|
+
F6 = 117,
|
|
74
|
+
F7 = 118,
|
|
75
|
+
F8 = 119,
|
|
76
|
+
F9 = 120,
|
|
77
|
+
F10 = 121,
|
|
78
|
+
F11 = 122,
|
|
79
|
+
F12 = 123,
|
|
80
|
+
NumLock = 144,
|
|
81
|
+
ScrollLock = 145,
|
|
82
|
+
Equal = 187,
|
|
83
|
+
Minus = 189,
|
|
84
|
+
Backquote = 192,
|
|
85
|
+
Backslash = 220
|
|
86
|
+
}
|
|
87
|
+
export declare enum KeyMod {
|
|
88
|
+
CtrlCmd = 2048,
|
|
89
|
+
Shift = 1024,
|
|
90
|
+
Alt = 512,
|
|
91
|
+
WinCtrl = 256
|
|
92
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.KeyMod = exports.KeyCode = void 0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* KeyBinding Codes
|
|
8
|
+
* The content of this file is based on the design of the open source project "microsoft/vscode",
|
|
9
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
+
*
|
|
11
|
+
* We inherit the KeyMod values from "microsoft/vscode",
|
|
12
|
+
* but use the Browser's KeyboardEvent event implementation, and all values are used only as identification.
|
|
13
|
+
*/
|
|
14
|
+
let KeyCode;
|
|
15
|
+
exports.KeyCode = KeyCode;
|
|
16
|
+
|
|
17
|
+
(function (KeyCode) {
|
|
18
|
+
KeyCode[KeyCode["Unknown"] = 0] = "Unknown";
|
|
19
|
+
KeyCode[KeyCode["Backspace"] = 8] = "Backspace";
|
|
20
|
+
KeyCode[KeyCode["Tab"] = 9] = "Tab";
|
|
21
|
+
KeyCode[KeyCode["Enter"] = 13] = "Enter";
|
|
22
|
+
KeyCode[KeyCode["Shift"] = 16] = "Shift";
|
|
23
|
+
KeyCode[KeyCode["Ctrl"] = 17] = "Ctrl";
|
|
24
|
+
KeyCode[KeyCode["Alt"] = 18] = "Alt";
|
|
25
|
+
KeyCode[KeyCode["PauseBreak"] = 19] = "PauseBreak";
|
|
26
|
+
KeyCode[KeyCode["CapsLock"] = 20] = "CapsLock";
|
|
27
|
+
KeyCode[KeyCode["Escape"] = 27] = "Escape";
|
|
28
|
+
KeyCode[KeyCode["Space"] = 32] = "Space";
|
|
29
|
+
KeyCode[KeyCode["PageUp"] = 33] = "PageUp";
|
|
30
|
+
KeyCode[KeyCode["PageDown"] = 34] = "PageDown";
|
|
31
|
+
KeyCode[KeyCode["End"] = 35] = "End";
|
|
32
|
+
KeyCode[KeyCode["Home"] = 36] = "Home";
|
|
33
|
+
KeyCode[KeyCode["LeftArrow"] = 37] = "LeftArrow";
|
|
34
|
+
KeyCode[KeyCode["UpArrow"] = 38] = "UpArrow";
|
|
35
|
+
KeyCode[KeyCode["RightArrow"] = 39] = "RightArrow";
|
|
36
|
+
KeyCode[KeyCode["DownArrow"] = 40] = "DownArrow";
|
|
37
|
+
KeyCode[KeyCode["Insert"] = 45] = "Insert";
|
|
38
|
+
KeyCode[KeyCode["Delete"] = 46] = "Delete";
|
|
39
|
+
KeyCode[KeyCode["KEY_0"] = 48] = "KEY_0";
|
|
40
|
+
KeyCode[KeyCode["KEY_1"] = 49] = "KEY_1";
|
|
41
|
+
KeyCode[KeyCode["KEY_2"] = 50] = "KEY_2";
|
|
42
|
+
KeyCode[KeyCode["KEY_3"] = 51] = "KEY_3";
|
|
43
|
+
KeyCode[KeyCode["KEY_4"] = 52] = "KEY_4";
|
|
44
|
+
KeyCode[KeyCode["KEY_5"] = 53] = "KEY_5";
|
|
45
|
+
KeyCode[KeyCode["KEY_6"] = 54] = "KEY_6";
|
|
46
|
+
KeyCode[KeyCode["KEY_7"] = 55] = "KEY_7";
|
|
47
|
+
KeyCode[KeyCode["KEY_8"] = 56] = "KEY_8";
|
|
48
|
+
KeyCode[KeyCode["KEY_9"] = 57] = "KEY_9";
|
|
49
|
+
KeyCode[KeyCode["KEY_A"] = 65] = "KEY_A";
|
|
50
|
+
KeyCode[KeyCode["KEY_B"] = 66] = "KEY_B";
|
|
51
|
+
KeyCode[KeyCode["KEY_C"] = 67] = "KEY_C";
|
|
52
|
+
KeyCode[KeyCode["KEY_D"] = 68] = "KEY_D";
|
|
53
|
+
KeyCode[KeyCode["KEY_E"] = 69] = "KEY_E";
|
|
54
|
+
KeyCode[KeyCode["KEY_F"] = 70] = "KEY_F";
|
|
55
|
+
KeyCode[KeyCode["KEY_G"] = 71] = "KEY_G";
|
|
56
|
+
KeyCode[KeyCode["KEY_H"] = 72] = "KEY_H";
|
|
57
|
+
KeyCode[KeyCode["KEY_I"] = 73] = "KEY_I";
|
|
58
|
+
KeyCode[KeyCode["KEY_J"] = 74] = "KEY_J";
|
|
59
|
+
KeyCode[KeyCode["KEY_K"] = 75] = "KEY_K";
|
|
60
|
+
KeyCode[KeyCode["KEY_L"] = 76] = "KEY_L";
|
|
61
|
+
KeyCode[KeyCode["KEY_M"] = 77] = "KEY_M";
|
|
62
|
+
KeyCode[KeyCode["KEY_N"] = 78] = "KEY_N";
|
|
63
|
+
KeyCode[KeyCode["KEY_O"] = 79] = "KEY_O";
|
|
64
|
+
KeyCode[KeyCode["KEY_P"] = 80] = "KEY_P";
|
|
65
|
+
KeyCode[KeyCode["KEY_Q"] = 81] = "KEY_Q";
|
|
66
|
+
KeyCode[KeyCode["KEY_R"] = 82] = "KEY_R";
|
|
67
|
+
KeyCode[KeyCode["KEY_S"] = 83] = "KEY_S";
|
|
68
|
+
KeyCode[KeyCode["KEY_T"] = 84] = "KEY_T";
|
|
69
|
+
KeyCode[KeyCode["KEY_U"] = 85] = "KEY_U";
|
|
70
|
+
KeyCode[KeyCode["KEY_V"] = 86] = "KEY_V";
|
|
71
|
+
KeyCode[KeyCode["KEY_W"] = 87] = "KEY_W";
|
|
72
|
+
KeyCode[KeyCode["KEY_X"] = 88] = "KEY_X";
|
|
73
|
+
KeyCode[KeyCode["KEY_Y"] = 89] = "KEY_Y";
|
|
74
|
+
KeyCode[KeyCode["KEY_Z"] = 90] = "KEY_Z";
|
|
75
|
+
KeyCode[KeyCode["Meta"] = 91] = "Meta";
|
|
76
|
+
KeyCode[KeyCode["F1"] = 112] = "F1";
|
|
77
|
+
KeyCode[KeyCode["F2"] = 113] = "F2";
|
|
78
|
+
KeyCode[KeyCode["F3"] = 114] = "F3";
|
|
79
|
+
KeyCode[KeyCode["F4"] = 115] = "F4";
|
|
80
|
+
KeyCode[KeyCode["F5"] = 116] = "F5";
|
|
81
|
+
KeyCode[KeyCode["F6"] = 117] = "F6";
|
|
82
|
+
KeyCode[KeyCode["F7"] = 118] = "F7";
|
|
83
|
+
KeyCode[KeyCode["F8"] = 119] = "F8";
|
|
84
|
+
KeyCode[KeyCode["F9"] = 120] = "F9";
|
|
85
|
+
KeyCode[KeyCode["F10"] = 121] = "F10";
|
|
86
|
+
KeyCode[KeyCode["F11"] = 122] = "F11";
|
|
87
|
+
KeyCode[KeyCode["F12"] = 123] = "F12";
|
|
88
|
+
KeyCode[KeyCode["NumLock"] = 144] = "NumLock";
|
|
89
|
+
KeyCode[KeyCode["ScrollLock"] = 145] = "ScrollLock";
|
|
90
|
+
KeyCode[KeyCode["Equal"] = 187] = "Equal";
|
|
91
|
+
KeyCode[KeyCode["Minus"] = 189] = "Minus";
|
|
92
|
+
KeyCode[KeyCode["Backquote"] = 192] = "Backquote";
|
|
93
|
+
KeyCode[KeyCode["Backslash"] = 220] = "Backslash";
|
|
94
|
+
})(KeyCode || (exports.KeyCode = KeyCode = {}));
|
|
95
|
+
|
|
96
|
+
let KeyMod;
|
|
97
|
+
exports.KeyMod = KeyMod;
|
|
98
|
+
|
|
99
|
+
(function (KeyMod) {
|
|
100
|
+
KeyMod[KeyMod["CtrlCmd"] = 2048] = "CtrlCmd";
|
|
101
|
+
KeyMod[KeyMod["Shift"] = 1024] = "Shift";
|
|
102
|
+
KeyMod[KeyMod["Alt"] = 512] = "Alt";
|
|
103
|
+
KeyMod[KeyMod["WinCtrl"] = 256] = "WinCtrl";
|
|
104
|
+
})(KeyMod || (exports.KeyMod = KeyMod = {}));
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.getActiveModMap = exports.getCtrlKeysByPlatform = void 0;
|
|
5
|
+
|
|
6
|
+
var _collections = require("../utils/collections");
|
|
7
|
+
|
|
8
|
+
var _codes = require("./codes");
|
|
9
|
+
|
|
10
|
+
/* istanbul ignore next */
|
|
11
|
+
const getCtrlKeysByPlatform = () => {
|
|
12
|
+
return {
|
|
13
|
+
CtrlCmd: (0, _collections.isMac)() ? 'metaKey' : 'ctrlKey',
|
|
14
|
+
WinCtrl: (0, _collections.isMac)() ? 'ctrlKey' : 'metaKey'
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.getCtrlKeysByPlatform = getCtrlKeysByPlatform;
|
|
19
|
+
|
|
20
|
+
const getActiveModMap = bindings => {
|
|
21
|
+
const modBindings = bindings.filter(item => !!_codes.KeyMod[item]);
|
|
22
|
+
const activeModMap = {
|
|
23
|
+
CtrlCmd: false,
|
|
24
|
+
Shift: false,
|
|
25
|
+
Alt: false,
|
|
26
|
+
WinCtrl: false
|
|
27
|
+
};
|
|
28
|
+
modBindings.forEach(code => {
|
|
29
|
+
const modKey = _codes.KeyMod[code];
|
|
30
|
+
activeModMap[modKey] = true;
|
|
31
|
+
});
|
|
32
|
+
return activeModMap;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.getActiveModMap = getActiveModMap;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _useKeyboard = _interopRequireDefault(require("./use-keyboard"));
|
|
9
|
+
|
|
10
|
+
var _codes = require("./codes");
|
|
11
|
+
|
|
12
|
+
exports.KeyMod = _codes.KeyMod;
|
|
13
|
+
exports.KeyCode = _codes.KeyCode;
|
|
14
|
+
var _default = _useKeyboard.default;
|
|
15
|
+
exports.default = _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare type KeyboardOptions = {
|
|
3
|
+
disableGlobalEvent?: boolean;
|
|
4
|
+
stopPropagation?: boolean;
|
|
5
|
+
preventDefault?: boolean;
|
|
6
|
+
capture?: boolean;
|
|
7
|
+
event?: 'keydown' | 'keypress' | 'keyup';
|
|
8
|
+
};
|
|
9
|
+
export declare type KeyboardResult = {
|
|
10
|
+
bindings: {
|
|
11
|
+
onKeyDown: React.KeyboardEventHandler;
|
|
12
|
+
onKeyDownCapture: React.KeyboardEventHandler;
|
|
13
|
+
onKeyPress: React.KeyboardEventHandler;
|
|
14
|
+
onKeyPressCapture: React.KeyboardEventHandler;
|
|
15
|
+
onKeyUp: React.KeyboardEventHandler;
|
|
16
|
+
onKeyUpCapture: React.KeyboardEventHandler;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare type UseKeyboardHandler = (event: React.KeyboardEvent | KeyboardEvent) => void;
|
|
20
|
+
export declare type UseKeyboard = (handler: UseKeyboardHandler, keyBindings: Array<number> | number, options?: KeyboardOptions) => KeyboardResult;
|
|
21
|
+
declare const useKeyboard: UseKeyboard;
|
|
22
|
+
export default useKeyboard;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var _codes = require("./codes");
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _helper = require("./helper");
|
|
11
|
+
|
|
12
|
+
const useKeyboard = (handler, keyBindings, options = {}) => {
|
|
13
|
+
const bindings = Array.isArray(keyBindings) ? keyBindings : [keyBindings];
|
|
14
|
+
const {
|
|
15
|
+
disableGlobalEvent = false,
|
|
16
|
+
capture = false,
|
|
17
|
+
stopPropagation = false,
|
|
18
|
+
preventDefault = true,
|
|
19
|
+
event = 'keydown'
|
|
20
|
+
} = options;
|
|
21
|
+
const activeModMap = (0, _helper.getActiveModMap)(bindings);
|
|
22
|
+
const keyCode = bindings.filter(item => !_codes.KeyMod[item])[0];
|
|
23
|
+
const {
|
|
24
|
+
CtrlCmd,
|
|
25
|
+
WinCtrl
|
|
26
|
+
} = (0, _helper.getCtrlKeysByPlatform)();
|
|
27
|
+
|
|
28
|
+
const eventHandler = event => {
|
|
29
|
+
if (activeModMap.Shift && !event.shiftKey) return;
|
|
30
|
+
if (activeModMap.Alt && !event.altKey) return;
|
|
31
|
+
if (activeModMap.CtrlCmd && !event[CtrlCmd]) return;
|
|
32
|
+
if (activeModMap.WinCtrl && !event[WinCtrl]) return;
|
|
33
|
+
if (keyCode && event.keyCode !== keyCode) return;
|
|
34
|
+
|
|
35
|
+
if (stopPropagation) {
|
|
36
|
+
event.stopPropagation();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (preventDefault) {
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
handler && handler(event);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
(0, _react.useEffect)(() => {
|
|
47
|
+
if (!disableGlobalEvent) {
|
|
48
|
+
document.addEventListener(event, eventHandler);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return () => {
|
|
52
|
+
document.removeEventListener(event, eventHandler);
|
|
53
|
+
};
|
|
54
|
+
}, [disableGlobalEvent]);
|
|
55
|
+
|
|
56
|
+
const elementBindingHandler = (elementEventType, isCapture = false) => {
|
|
57
|
+
if (elementEventType !== event) return () => {};
|
|
58
|
+
if (isCapture !== capture) return () => {};
|
|
59
|
+
return e => eventHandler(e);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
bindings: {
|
|
64
|
+
onKeyDown: elementBindingHandler('keydown'),
|
|
65
|
+
onKeyDownCapture: elementBindingHandler('keydown', true),
|
|
66
|
+
onKeyPress: elementBindingHandler('keypress'),
|
|
67
|
+
onKeyPressCapture: elementBindingHandler('keypress', true),
|
|
68
|
+
onKeyUp: elementBindingHandler('keyup'),
|
|
69
|
+
onKeyUpCapture: elementBindingHandler('keyup', true)
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
var _default = useKeyboard;
|
|
75
|
+
exports.default = _default;
|
|
76
|
+
module.exports = exports.default;
|
|
@@ -5,3 +5,6 @@ export declare const pick: <Obj extends {
|
|
|
5
5
|
[key: string]: any;
|
|
6
6
|
}, Key extends keyof Obj>(props: Key[], obj: Obj) => Pick<Obj, Key>;
|
|
7
7
|
export declare const pickChild: (children: ReactNode | undefined, targetChild: React.ElementType) => [ReactNode | undefined, ReactNode | undefined];
|
|
8
|
+
export declare const isChildElement: (parent: Element | null | undefined, child: Element | null | undefined) => boolean;
|
|
9
|
+
export declare const isBrowser: () => boolean;
|
|
10
|
+
export declare const isMac: () => boolean;
|
package/cjs/utils/collections.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.pickChild = exports.pick = exports.hasChild = exports.getId = void 0;
|
|
6
|
+
exports.isMac = exports.isBrowser = exports.isChildElement = exports.pickChild = exports.pick = exports.hasChild = exports.getId = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -49,4 +49,32 @@ const pickChild = (children, targetChild) => {
|
|
|
49
49
|
return [withoutTargetChildren, targetChildren];
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
exports.pickChild = pickChild;
|
|
52
|
+
exports.pickChild = pickChild;
|
|
53
|
+
|
|
54
|
+
const isChildElement = (parent, child) => {
|
|
55
|
+
if (!parent || !child) return false; // eslint-disable-next-line no-undef
|
|
56
|
+
|
|
57
|
+
let node = child;
|
|
58
|
+
|
|
59
|
+
while (node) {
|
|
60
|
+
if (node === parent) return true;
|
|
61
|
+
node = node.parentNode;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return false;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
exports.isChildElement = isChildElement;
|
|
68
|
+
|
|
69
|
+
const isBrowser = () => {
|
|
70
|
+
return Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
exports.isBrowser = isBrowser;
|
|
74
|
+
|
|
75
|
+
const isMac = () => {
|
|
76
|
+
if (!isBrowser()) return false;
|
|
77
|
+
return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.isMac = isMac;
|