@8x8/oxygen-utils 0.0.0-stage → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +2 -0
- package/README.md +141 -2
- package/dist/src/components/OutsideEventBehavior/OutsideEventBehavior.d.ts +20 -0
- package/dist/src/components/OutsideEventBehavior/OutsideEventBehavior.d.ts.map +1 -0
- package/dist/src/components/OutsideEventBehavior/OutsideEventBehavior.js +34 -0
- package/dist/src/components/OutsideEventBehavior/index.d.ts +3 -0
- package/dist/src/components/OutsideEventBehavior/index.d.ts.map +1 -0
- package/dist/src/components/OutsideEventBehavior/index.js +2 -0
- package/dist/src/functions/isReactDevMode.d.ts +2 -0
- package/dist/src/functions/isReactDevMode.d.ts.map +1 -0
- package/dist/src/functions/isReactDevMode.js +3 -0
- package/dist/src/functions/keyboardEvents.d.ts +9 -0
- package/dist/src/functions/keyboardEvents.d.ts.map +1 -0
- package/dist/src/functions/keyboardEvents.js +7 -0
- package/dist/src/functions/media.d.ts +52 -0
- package/dist/src/functions/media.d.ts.map +1 -0
- package/dist/src/functions/media.js +67 -0
- package/dist/src/functions/pausableTimeout.d.ts +13 -0
- package/dist/src/functions/pausableTimeout.d.ts.map +1 -0
- package/dist/src/functions/pausableTimeout.js +23 -0
- package/dist/src/hooks/eventKeyHandlers/EventKey.d.ts +16 -0
- package/dist/src/hooks/eventKeyHandlers/EventKey.d.ts.map +1 -0
- package/dist/src/hooks/eventKeyHandlers/EventKey.js +17 -0
- package/dist/src/hooks/eventKeyHandlers/focusNextElementHandler.d.ts +4 -0
- package/dist/src/hooks/eventKeyHandlers/focusNextElementHandler.d.ts.map +1 -0
- package/dist/src/hooks/eventKeyHandlers/focusNextElementHandler.js +5 -0
- package/dist/src/hooks/eventKeyHandlers/getNextIndexElement.d.ts +9 -0
- package/dist/src/hooks/eventKeyHandlers/getNextIndexElement.d.ts.map +1 -0
- package/dist/src/hooks/eventKeyHandlers/getNextIndexElement.js +25 -0
- package/dist/src/hooks/eventKeyHandlers/test-utils/dispatchKeyboardEvents.d.ts +4 -0
- package/dist/src/hooks/eventKeyHandlers/test-utils/dispatchKeyboardEvents.d.ts.map +1 -0
- package/dist/src/hooks/eventKeyHandlers/test-utils/dispatchKeyboardEvents.js +4 -0
- package/dist/src/hooks/eventKeyHandlers/useArrowKeyListIndex.d.ts +18 -0
- package/dist/src/hooks/eventKeyHandlers/useArrowKeyListIndex.d.ts.map +1 -0
- package/dist/src/hooks/eventKeyHandlers/useArrowKeyListIndex.js +42 -0
- package/dist/src/hooks/eventKeyHandlers/useGlobalActionKeyHandler.d.ts +16 -0
- package/dist/src/hooks/eventKeyHandlers/useGlobalActionKeyHandler.d.ts.map +1 -0
- package/dist/src/hooks/eventKeyHandlers/useGlobalActionKeyHandler.js +24 -0
- package/dist/src/hooks/useAriaLive.d.ts +47 -0
- package/dist/src/hooks/useAriaLive.d.ts.map +1 -0
- package/dist/src/hooks/useAriaLive.js +113 -0
- package/dist/src/hooks/useClickOutside.d.ts +4 -0
- package/dist/src/hooks/useClickOutside.d.ts.map +1 -0
- package/dist/src/hooks/useClickOutside.js +17 -0
- package/dist/src/hooks/useFontSize.d.ts +3 -0
- package/dist/src/hooks/useFontSize.d.ts.map +1 -0
- package/dist/src/hooks/useFontSize.js +4 -0
- package/dist/src/hooks/useHasOverflow.d.ts +4 -0
- package/dist/src/hooks/useHasOverflow.d.ts.map +1 -0
- package/dist/src/hooks/useHasOverflow.js +27 -0
- package/dist/src/hooks/useId.d.ts +3 -0
- package/dist/src/hooks/useId.d.ts.map +1 -0
- package/dist/src/hooks/useId.js +14 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +17 -0
- package/dist/src/styles/ellipsis.d.ts +14 -0
- package/dist/src/styles/ellipsis.d.ts.map +1 -0
- package/dist/src/styles/ellipsis.js +13 -0
- package/dist/src/styles/withAlpha.d.ts +8 -0
- package/dist/src/styles/withAlpha.d.ts.map +1 -0
- package/dist/src/styles/withAlpha.js +18 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +24 -4
package/LICENSE.md
ADDED
package/README.md
CHANGED
|
@@ -1,3 +1,142 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 8x8 Oxygen - Utilities
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Map
|
|
4
|
+
|
|
5
|
+
- Components
|
|
6
|
+
- [OutsideEventBehavior](#outsideEventBehavior)
|
|
7
|
+
- Functions
|
|
8
|
+
- [Media](#media)
|
|
9
|
+
|
|
10
|
+
## Components
|
|
11
|
+
|
|
12
|
+
### OutsideEventBehavior
|
|
13
|
+
|
|
14
|
+
Component wich will attach an `onClick` event listener to the `window` object. The function will be triggered everytime a click event target doesn't contain the children of `OutsideEventBehavior`.
|
|
15
|
+
|
|
16
|
+
```javascript
|
|
17
|
+
import { OutsideEventBehavior } from '@8x8/oxygen-utils';
|
|
18
|
+
|
|
19
|
+
<OutsideEventBehavior onClick={this.handleClickOutside}>
|
|
20
|
+
<div>Some random children</div>
|
|
21
|
+
</OutsideEventBehavior>;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
In the example above, the function `this.handleClickOutside` will be triggered every time one executes a click outside `<div>Some random children</div>`.
|
|
25
|
+
|
|
26
|
+
## Functions
|
|
27
|
+
|
|
28
|
+
### Media
|
|
29
|
+
|
|
30
|
+
An object with media breakpoints helpers for `styled-components`. You can use `media` for `max-width` breakpoints or `mediaMin` for `min-width` rules.
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
// max-width breakpoint rule
|
|
34
|
+
|
|
35
|
+
import { media } from '@8x8/oxygen-utils';
|
|
36
|
+
|
|
37
|
+
const StyledDiv = styled.div`
|
|
38
|
+
color: red;
|
|
39
|
+
|
|
40
|
+
${media.desktop`color: yellow;`}
|
|
41
|
+
${media.tablet`color: green;`}
|
|
42
|
+
${media.phone`color: blue;`}
|
|
43
|
+
`;
|
|
44
|
+
|
|
45
|
+
export default StyledDiv;
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
// min-width breakpoint rule
|
|
50
|
+
|
|
51
|
+
import { mediaMin } from '@8x8/oxygen-utils';
|
|
52
|
+
|
|
53
|
+
const StyledDiv = styled.div`
|
|
54
|
+
color: red;
|
|
55
|
+
|
|
56
|
+
${mediaMin.desktop`color: yellow;`}
|
|
57
|
+
${mediaMin.tablet`color: green;`}
|
|
58
|
+
${mediaMin.phone`color: blue;`}
|
|
59
|
+
`;
|
|
60
|
+
|
|
61
|
+
export default StyledDiv;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Hooks
|
|
65
|
+
|
|
66
|
+
### `useFontSize`
|
|
67
|
+
|
|
68
|
+
Transforms a `rem` into a `px` value based on the root html font-size property. This allows access to the _actual_ value in JS.
|
|
69
|
+
|
|
70
|
+
If you need a dimension in `px` that relates to font-size values, use this hook which takes the user's font-size preferences into account.
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
import { useFontSize } from '@8x8/oxygen-utils';
|
|
74
|
+
|
|
75
|
+
const Component = () => {
|
|
76
|
+
const height = useFontSize(1.5); // 1.5rem => 24px with default font-size
|
|
77
|
+
return (
|
|
78
|
+
<div style={{ ${height}px }}>I have 1.5rem as height set from JS</div>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `useHasOverflow`
|
|
84
|
+
|
|
85
|
+
Detects whether the given element has overflowed its content. Useful for detentcting whether a container has truncated its text with an ellipsis.
|
|
86
|
+
|
|
87
|
+
### `useId`
|
|
88
|
+
|
|
89
|
+
Generates a stable `id` via `uuid`. Once React 18 is used, this can be replaced with the official react `useId` hook https://react.dev/reference/react/useId
|
|
90
|
+
|
|
91
|
+
Useful to generate unique id's for form & accesibility purposes (to link elements together).
|
|
92
|
+
|
|
93
|
+
```javascript
|
|
94
|
+
import { useId } from '@8x8/oxygen-utils';
|
|
95
|
+
|
|
96
|
+
const Component = () => {
|
|
97
|
+
const id = useId();
|
|
98
|
+
return (
|
|
99
|
+
<label htmlFor={id}>Label</label>
|
|
100
|
+
<input id={id} />
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `useAriaLive`
|
|
106
|
+
|
|
107
|
+
Manages screen reader announcements with automatic DOM injection. Messages are announced to screen readers without requiring any JSX components to be rendered.
|
|
108
|
+
|
|
109
|
+
Creates aria-live containers on-demand when messages are announced, ensuring screen readers can properly register them. Messages are announced via direct DOM manipulation for reliable screen reader detection.
|
|
110
|
+
|
|
111
|
+
```javascript
|
|
112
|
+
import { useAriaLive } from '@8x8/oxygen-utils';
|
|
113
|
+
|
|
114
|
+
const Component = () => {
|
|
115
|
+
const { announce } = useAriaLive();
|
|
116
|
+
|
|
117
|
+
const handleSave = () => {
|
|
118
|
+
// ... save logic
|
|
119
|
+
announce('Item saved successfully');
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const handleError = () => {
|
|
123
|
+
// ... error handling
|
|
124
|
+
announce('Connection failed!', { assertive: true });
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
return (
|
|
128
|
+
<div>
|
|
129
|
+
<button onClick={handleSave}>Save</button>
|
|
130
|
+
<button onClick={handleError}>Trigger Error</button>
|
|
131
|
+
</div>
|
|
132
|
+
);
|
|
133
|
+
};
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
#### API
|
|
137
|
+
|
|
138
|
+
`useAriaLive(): { announce: (message: string, options?: { assertive?: boolean }) => void }`
|
|
139
|
+
|
|
140
|
+
- **`announce(message, options?)`**: Announces a message to screen readers
|
|
141
|
+
- `message` (string): The message to announce
|
|
142
|
+
- `options.assertive` (boolean, optional): Use assertive priority for urgent announcements that interrupt current speech. Defaults to `false` (polite)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
onClick?: (event: MouseEvent) => void;
|
|
5
|
+
};
|
|
6
|
+
declare class OutsideEventBehavior extends React.Component<Props> {
|
|
7
|
+
static defaultProps: Props;
|
|
8
|
+
private wrapperRef;
|
|
9
|
+
componentDidMount(): void;
|
|
10
|
+
componentWillUnmount(): void;
|
|
11
|
+
handleClickEvent: (event: MouseEvent) => void;
|
|
12
|
+
render(): React.DetailedReactHTMLElement<{
|
|
13
|
+
ref: React.RefObject<HTMLSpanElement>;
|
|
14
|
+
style: {
|
|
15
|
+
display: "contents";
|
|
16
|
+
};
|
|
17
|
+
}, HTMLSpanElement>;
|
|
18
|
+
}
|
|
19
|
+
export default OutsideEventBehavior;
|
|
20
|
+
//# sourceMappingURL=OutsideEventBehavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutsideEventBehavior.d.ts","sourceRoot":"","sources":["../../../../src/components/OutsideEventBehavior/OutsideEventBehavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,cAAM,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACvD,MAAM,CAAC,YAAY,EAAE,KAAK,CAGxB;IAEF,OAAO,CAAC,UAAU,CAAsC;IAExD,iBAAiB;IAMjB,oBAAoB;IAMpB,gBAAgB,GAAI,OAAO,UAAU,UAYnC;IAEF,MAAM;;;;;;CAOP;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
class OutsideEventBehavior extends React.Component {
|
|
3
|
+
constructor() {
|
|
4
|
+
super(...arguments);
|
|
5
|
+
this.wrapperRef = React.createRef();
|
|
6
|
+
this.handleClickEvent = (event) => {
|
|
7
|
+
const el = this.wrapperRef.current;
|
|
8
|
+
if (!this.props.onClick ||
|
|
9
|
+
!el ||
|
|
10
|
+
(event.target instanceof Node && el.contains(event.target))) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
this.props.onClick(event);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
componentDidMount() {
|
|
17
|
+
document.addEventListener('click', this.handleClickEvent, {
|
|
18
|
+
capture: true,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
componentWillUnmount() {
|
|
22
|
+
document.removeEventListener('click', this.handleClickEvent, {
|
|
23
|
+
capture: true,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
render() {
|
|
27
|
+
return React.createElement('span', { ref: this.wrapperRef, style: { display: 'contents' } }, this.props.children);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
OutsideEventBehavior.defaultProps = {
|
|
31
|
+
children: undefined,
|
|
32
|
+
onClick: undefined,
|
|
33
|
+
};
|
|
34
|
+
export default OutsideEventBehavior;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/OutsideEventBehavior/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAE1D,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isReactDevMode.d.ts","sourceRoot":"","sources":["../../../src/functions/isReactDevMode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,YAErC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type KeyboardEventType = KeyboardEvent | React.KeyboardEvent;
|
|
3
|
+
declare const isArrowUpEvent: (ev: KeyboardEventType) => boolean;
|
|
4
|
+
declare const isArrowDownEvent: (ev: KeyboardEventType) => boolean;
|
|
5
|
+
declare const isEnterEvent: (ev: KeyboardEventType) => boolean;
|
|
6
|
+
declare const isSpaceEvent: (ev: KeyboardEventType) => boolean;
|
|
7
|
+
declare const isEscapeEvent: (ev: KeyboardEventType) => boolean;
|
|
8
|
+
export { isEnterEvent, isSpaceEvent, isEscapeEvent, isArrowDownEvent, isArrowUpEvent, KeyboardEventType, };
|
|
9
|
+
//# sourceMappingURL=keyboardEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboardEvents.d.ts","sourceRoot":"","sources":["../../../src/functions/keyboardEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,KAAK,iBAAiB,GAAG,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AAE7D,QAAA,MAAM,cAAc,GAAI,IAAI,iBAAiB,KAAG,OACnB,CAAC;AAE9B,QAAA,MAAM,gBAAgB,GAAI,IAAI,iBAAiB,KAAG,OACnB,CAAC;AAEhC,QAAA,MAAM,YAAY,GAAI,IAAI,iBAAiB,YAA8B,CAAC;AAE1E,QAAA,MAAM,YAAY,GAAI,IAAI,iBAAiB,YACc,CAAC;AAE1D,QAAA,MAAM,aAAa,GAAI,IAAI,iBAAiB,YAA+B,CAAC;AAE5E,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import EventKey from '../hooks/eventKeyHandlers/EventKey';
|
|
2
|
+
const isArrowUpEvent = (ev) => ev.key === EventKey.ArrowUp;
|
|
3
|
+
const isArrowDownEvent = (ev) => ev.key === EventKey.ArrowDown;
|
|
4
|
+
const isEnterEvent = (ev) => ev.key === EventKey.Enter;
|
|
5
|
+
const isSpaceEvent = (ev) => ev.code === EventKey.Space || ev.key === EventKey.Space;
|
|
6
|
+
const isEscapeEvent = (ev) => ev.key === EventKey.Escape;
|
|
7
|
+
export { isEnterEvent, isSpaceEvent, isEscapeEvent, isArrowDownEvent, isArrowUpEvent, };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { FlattenSimpleInterpolation } from 'styled-components';
|
|
2
|
+
export type MediaSizesKeys = 'desktop' | 'tablet' | 'phone';
|
|
3
|
+
type MediaSizesType = Record<MediaSizesKeys, number>;
|
|
4
|
+
type MediaSizesFnType = Record<MediaSizesKeys, (...args: string[]) => string | FlattenSimpleInterpolation>;
|
|
5
|
+
declare const mediaSizes: MediaSizesType;
|
|
6
|
+
/**
|
|
7
|
+
* @description Convert pixels to em units
|
|
8
|
+
* @param {(number|string)} value Breakpoint value
|
|
9
|
+
* @returns {number} A number which was converted to em units
|
|
10
|
+
*/
|
|
11
|
+
declare const calcMediaVal: (value: number | string) => number;
|
|
12
|
+
/**
|
|
13
|
+
* @description Append `em` to a number
|
|
14
|
+
* @param {number} value Breakpoint value
|
|
15
|
+
* @returns {string} A number which was converted to em units with `em` appended
|
|
16
|
+
*/
|
|
17
|
+
declare const getMediaVal: (value: number) => string;
|
|
18
|
+
/**
|
|
19
|
+
* @param {string} [mediaRule=max] Prefix for the media rule: [min|max]
|
|
20
|
+
* @returns {(value: (number|string)) => (...args: string) => string}
|
|
21
|
+
*/
|
|
22
|
+
declare const getCssMedia: (mediaRule?: "min" | "max") => (value: number) => (...args: any) => FlattenSimpleInterpolation;
|
|
23
|
+
/**
|
|
24
|
+
* description Function to create an object containing media query functions for `styled-components`
|
|
25
|
+
* param {{ desktop: number, tablet: number, phone: number }} [sizeEntries]
|
|
26
|
+
* returns { (string) => { desktop: Function, tablet: Function, phone: Function }} - Utility media-query functions
|
|
27
|
+
* for `styled-components`
|
|
28
|
+
*/
|
|
29
|
+
declare const mediaFn: (sizeEntries?: MediaSizesType) => (mediaRule?: "min" | "max") => MediaSizesFnType;
|
|
30
|
+
/**
|
|
31
|
+
* @description Creates a min-width rule with custom value
|
|
32
|
+
* @param {(number|string)} value Breakpoint value
|
|
33
|
+
* @returns {(css: string) => string}
|
|
34
|
+
*/
|
|
35
|
+
declare const mediaMinC: (value: number) => (...args: any) => FlattenSimpleInterpolation;
|
|
36
|
+
/**
|
|
37
|
+
* @description Creates a max-width rule with custom value
|
|
38
|
+
* @param {(number|string)} value Breakpoint value
|
|
39
|
+
* @returns {(css: string) => string}
|
|
40
|
+
*/
|
|
41
|
+
declare const mediaMaxC: (value: number) => (...args: any) => FlattenSimpleInterpolation;
|
|
42
|
+
/**
|
|
43
|
+
* @description Object containing `min-width` breakpoint functions for `styled-components`
|
|
44
|
+
*/
|
|
45
|
+
declare const mediaMin: MediaSizesFnType;
|
|
46
|
+
/**
|
|
47
|
+
* @description Object containing `max-width` breakpoint functions for `styled-components`
|
|
48
|
+
*/
|
|
49
|
+
declare const mediaMax: MediaSizesFnType;
|
|
50
|
+
export { getCssMedia, mediaMinC, mediaMaxC, calcMediaVal, getMediaVal, mediaMin, mediaFn, mediaSizes, };
|
|
51
|
+
export default mediaMax;
|
|
52
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/functions/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC5D,KAAK,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACrD,KAAK,gBAAgB,GAAG,MAAM,CAC5B,cAAc,EACd,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,GAAG,0BAA0B,CAC3D,CAAC;AAEF,QAAA,MAAM,UAAU,EAAE,cAIjB,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,MAAM,WAAmC,CAAC;AAEhF;;;;GAIG;AACH,QAAA,MAAM,WAAW,GAAI,OAAO,MAAM,WAA+B,CAAC;AAElE;;;GAGG;AACH,QAAA,MAAM,WAAW,GACd,YAAW,KAAK,GAAG,KAAa,MAChC,OAAO,MAAM,MAEb,GAAG,MAAM,GAAG,+BAKV,CAAC;AAEN;;;;;GAKG;AACH,QAAA,MAAM,OAAO,GACV,cAAa,cAA2B,MAIxC,YAAW,KAAK,GAAG,KAAa,KAAG,gBAIlC,CAAC;AAEL;;;;GAIG;AACH,QAAA,MAAM,SAAS,UA/BL,MAAM,MAEb,GAAG,MAAM,GAAG,+BA6BqB,CAAC;AAErC;;;;GAIG;AACH,QAAA,MAAM,SAAS,UAtCL,MAAM,MAEb,GAAG,MAAM,GAAG,+BAoCgB,CAAC;AAEhC;;GAEG;AACH,QAAA,MAAM,QAAQ,kBAAmB,CAAC;AAElC;;GAEG;AACH,QAAA,MAAM,QAAQ,kBAAc,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,UAAU,GACX,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { css } from 'styled-components';
|
|
2
|
+
// Breakpoints in px (these predate the grid's own set, which is tracked separately)
|
|
3
|
+
const mediaSizes = {
|
|
4
|
+
desktop: 992,
|
|
5
|
+
tablet: 768,
|
|
6
|
+
phone: 576,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* @description Convert pixels to em units
|
|
10
|
+
* @param {(number|string)} value Breakpoint value
|
|
11
|
+
* @returns {number} A number which was converted to em units
|
|
12
|
+
*/
|
|
13
|
+
const calcMediaVal = (value) => parseFloat(value) / 16;
|
|
14
|
+
/**
|
|
15
|
+
* @description Append `em` to a number
|
|
16
|
+
* @param {number} value Breakpoint value
|
|
17
|
+
* @returns {string} A number which was converted to em units with `em` appended
|
|
18
|
+
*/
|
|
19
|
+
const getMediaVal = (value) => `${calcMediaVal(value)}em`;
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} [mediaRule=max] Prefix for the media rule: [min|max]
|
|
22
|
+
* @returns {(value: (number|string)) => (...args: string) => string}
|
|
23
|
+
*/
|
|
24
|
+
const getCssMedia = (mediaRule = 'max') => (value) =>
|
|
25
|
+
// disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
(...args) => css `
|
|
27
|
+
@media (${mediaRule}-width: ${getMediaVal(value)}) {
|
|
28
|
+
${css(args)}
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
/**
|
|
32
|
+
* description Function to create an object containing media query functions for `styled-components`
|
|
33
|
+
* param {{ desktop: number, tablet: number, phone: number }} [sizeEntries]
|
|
34
|
+
* returns { (string) => { desktop: Function, tablet: Function, phone: Function }} - Utility media-query functions
|
|
35
|
+
* for `styled-components`
|
|
36
|
+
*/
|
|
37
|
+
const mediaFn = (sizeEntries = mediaSizes) =>
|
|
38
|
+
/**
|
|
39
|
+
* @param {'min' | 'max'} [mediaRule='max'] Media query [max|min] width rule
|
|
40
|
+
*/
|
|
41
|
+
(mediaRule = 'max') => ({
|
|
42
|
+
desktop: getCssMedia(mediaRule)(sizeEntries.desktop),
|
|
43
|
+
tablet: getCssMedia(mediaRule)(sizeEntries.tablet),
|
|
44
|
+
phone: getCssMedia(mediaRule)(sizeEntries.phone),
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* @description Creates a min-width rule with custom value
|
|
48
|
+
* @param {(number|string)} value Breakpoint value
|
|
49
|
+
* @returns {(css: string) => string}
|
|
50
|
+
*/
|
|
51
|
+
const mediaMinC = getCssMedia('min');
|
|
52
|
+
/**
|
|
53
|
+
* @description Creates a max-width rule with custom value
|
|
54
|
+
* @param {(number|string)} value Breakpoint value
|
|
55
|
+
* @returns {(css: string) => string}
|
|
56
|
+
*/
|
|
57
|
+
const mediaMaxC = getCssMedia();
|
|
58
|
+
/**
|
|
59
|
+
* @description Object containing `min-width` breakpoint functions for `styled-components`
|
|
60
|
+
*/
|
|
61
|
+
const mediaMin = mediaFn()('min');
|
|
62
|
+
/**
|
|
63
|
+
* @description Object containing `max-width` breakpoint functions for `styled-components`
|
|
64
|
+
*/
|
|
65
|
+
const mediaMax = mediaFn()();
|
|
66
|
+
export { getCssMedia, mediaMinC, mediaMaxC, calcMediaVal, getMediaVal, mediaMin, mediaFn, mediaSizes, };
|
|
67
|
+
export default mediaMax;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type CB = () => void;
|
|
2
|
+
export default class PausableTimeout {
|
|
3
|
+
timeoutId: ReturnType<typeof setTimeout>;
|
|
4
|
+
start: number;
|
|
5
|
+
remaining: number;
|
|
6
|
+
callback: CB;
|
|
7
|
+
constructor(callback: CB, delay: number);
|
|
8
|
+
resume(): void;
|
|
9
|
+
pause(): void;
|
|
10
|
+
clear(): void;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=pausableTimeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pausableTimeout.d.ts","sourceRoot":"","sources":["../../../src/functions/pausableTimeout.ts"],"names":[],"mappings":"AAAA,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC;AAErB,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,SAAS,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAa;IACrD,KAAK,EAAE,MAAM,CAAa;IAC1B,SAAS,EAAE,MAAM,CAAa;IAC9B,QAAQ,EAAE,EAAE,CAAa;gBAEb,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM;IAOvC,MAAM;IAQN,KAAK;IAML,KAAK;CAGN"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export default class PausableTimeout {
|
|
2
|
+
constructor(callback, delay) {
|
|
3
|
+
this.timeoutId = undefined;
|
|
4
|
+
this.start = undefined;
|
|
5
|
+
this.remaining = undefined;
|
|
6
|
+
this.callback = undefined;
|
|
7
|
+
this.remaining = delay;
|
|
8
|
+
this.callback = callback;
|
|
9
|
+
this.resume();
|
|
10
|
+
}
|
|
11
|
+
resume() {
|
|
12
|
+
this.start = new Date().getTime();
|
|
13
|
+
clearTimeout(this.timeoutId);
|
|
14
|
+
this.timeoutId = setTimeout(this.callback, this.remaining);
|
|
15
|
+
}
|
|
16
|
+
pause() {
|
|
17
|
+
clearTimeout(this.timeoutId);
|
|
18
|
+
this.remaining -= new Date().getTime() - this.start;
|
|
19
|
+
}
|
|
20
|
+
clear() {
|
|
21
|
+
clearTimeout(this.timeoutId);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare enum EventKey {
|
|
2
|
+
/** The Enter or ↵ key (sometimes labeled Return). */
|
|
3
|
+
Enter = "Enter",
|
|
4
|
+
Escape = "Escape",
|
|
5
|
+
Shift = "shiftKey",
|
|
6
|
+
Space = "Space",
|
|
7
|
+
Tab = "Tab",
|
|
8
|
+
X = "x",
|
|
9
|
+
Backspace = "Backspace",
|
|
10
|
+
ArrowUp = "ArrowUp",
|
|
11
|
+
ArrowDown = "ArrowDown",
|
|
12
|
+
ArrowLeft = "ArrowLeft",
|
|
13
|
+
ArrowRight = "ArrowRight"
|
|
14
|
+
}
|
|
15
|
+
export default EventKey;
|
|
16
|
+
//# sourceMappingURL=EventKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventKey.d.ts","sourceRoot":"","sources":["../../../../src/hooks/eventKeyHandlers/EventKey.ts"],"names":[],"mappings":"AACA,aAAK,QAAQ;IACX,qDAAqD;IACrD,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,aAAa;IAClB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,CAAC,MAAM;IACP,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,UAAU,eAAe;CAC1B;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// https://github.com/nfriend/ts-key-enum
|
|
2
|
+
var EventKey;
|
|
3
|
+
(function (EventKey) {
|
|
4
|
+
/** The Enter or ↵ key (sometimes labeled Return). */
|
|
5
|
+
EventKey["Enter"] = "Enter";
|
|
6
|
+
EventKey["Escape"] = "Escape";
|
|
7
|
+
EventKey["Shift"] = "shiftKey";
|
|
8
|
+
EventKey["Space"] = "Space";
|
|
9
|
+
EventKey["Tab"] = "Tab";
|
|
10
|
+
EventKey["X"] = "x";
|
|
11
|
+
EventKey["Backspace"] = "Backspace";
|
|
12
|
+
EventKey["ArrowUp"] = "ArrowUp";
|
|
13
|
+
EventKey["ArrowDown"] = "ArrowDown";
|
|
14
|
+
EventKey["ArrowLeft"] = "ArrowLeft";
|
|
15
|
+
EventKey["ArrowRight"] = "ArrowRight";
|
|
16
|
+
})(EventKey || (EventKey = {}));
|
|
17
|
+
export default EventKey;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
2
|
+
declare const focusNextElementHandler: (direction: boolean, elementCount: number, setFocusIdHandler: Dispatch<SetStateAction<number>>) => void;
|
|
3
|
+
export default focusNextElementHandler;
|
|
4
|
+
//# sourceMappingURL=focusNextElementHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusNextElementHandler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/eventKeyHandlers/focusNextElementHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGjD,QAAA,MAAM,uBAAuB,GAC3B,WAAW,OAAO,EAClB,cAAc,MAAM,EACpB,mBAAmB,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,KAClD,IAIF,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import getNextIndexElement from './getNextIndexElement';
|
|
2
|
+
const focusNextElementHandler = (direction, elementCount, setFocusIdHandler) => {
|
|
3
|
+
setFocusIdHandler((prevState) => getNextIndexElement(direction, elementCount, prevState));
|
|
4
|
+
};
|
|
5
|
+
export default focusNextElementHandler;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {boolean} direction - true for down arrow, false for up arrow
|
|
3
|
+
* @param {number} elementCount - list size
|
|
4
|
+
* @param {number} currentIndex - current element index
|
|
5
|
+
* @returns {number} represents the index of the next focusable element
|
|
6
|
+
*/
|
|
7
|
+
declare const getNextIndexElement: (direction: boolean, elementCount: number, currentIndex: number) => number;
|
|
8
|
+
export default getNextIndexElement;
|
|
9
|
+
//# sourceMappingURL=getNextIndexElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNextIndexElement.d.ts","sourceRoot":"","sources":["../../../../src/hooks/eventKeyHandlers/getNextIndexElement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,QAAA,MAAM,mBAAmB,GACvB,WAAW,OAAO,EAClB,cAAc,MAAM,EACpB,cAAc,MAAM,KACnB,MAsBF,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {boolean} direction - true for down arrow, false for up arrow
|
|
3
|
+
* @param {number} elementCount - list size
|
|
4
|
+
* @param {number} currentIndex - current element index
|
|
5
|
+
* @returns {number} represents the index of the next focusable element
|
|
6
|
+
*/
|
|
7
|
+
const getNextIndexElement = (direction, elementCount, currentIndex) => {
|
|
8
|
+
let prevIndex = currentIndex;
|
|
9
|
+
if (prevIndex >= elementCount) {
|
|
10
|
+
prevIndex = elementCount - 1;
|
|
11
|
+
}
|
|
12
|
+
if (prevIndex <= 0 && !direction) {
|
|
13
|
+
// Focus last element of the list if we reached the first element and direction is upwards
|
|
14
|
+
return elementCount - 1;
|
|
15
|
+
}
|
|
16
|
+
if (prevIndex === elementCount - 1 && direction) {
|
|
17
|
+
// Focus first element if we reached the end of the list and direction is downwards
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
if (direction) {
|
|
21
|
+
return prevIndex + 1;
|
|
22
|
+
}
|
|
23
|
+
return prevIndex - 1;
|
|
24
|
+
};
|
|
25
|
+
export default getNextIndexElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatchKeyboardEvents.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/eventKeyHandlers/test-utils/dispatchKeyboardEvents.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,QAAA,MAAM,oBAAoB,GAAI,KAAK,QAAQ,KAAG,IAE7C,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface HookProps {
|
|
2
|
+
elementCount: number;
|
|
3
|
+
initialHighlightedElementIndex?: number;
|
|
4
|
+
windowContext?: Window;
|
|
5
|
+
}
|
|
6
|
+
export interface HookReturnType {
|
|
7
|
+
focusedElementIndex: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A hook that uses arrow key logic to compute the index of a highlighted element within a list
|
|
11
|
+
* @param { number } elementCount The total number of elements from the list
|
|
12
|
+
* @param { number } initialHighlightedElementIndex index of the initial highlighted element.
|
|
13
|
+
* initialHighlightedElementIndex = -1 means there is no initial highlighted element.
|
|
14
|
+
* @returns { number } The index of the element that should be highlighted
|
|
15
|
+
*/
|
|
16
|
+
declare const useArrowKeyListIndex: ({ elementCount, windowContext, initialHighlightedElementIndex, }: HookProps) => HookReturnType;
|
|
17
|
+
export default useArrowKeyListIndex;
|
|
18
|
+
//# sourceMappingURL=useArrowKeyListIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useArrowKeyListIndex.d.ts","sourceRoot":"","sources":["../../../../src/hooks/eventKeyHandlers/useArrowKeyListIndex.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,QAAA,MAAM,oBAAoB,GAAI,kEAI3B,SAAS,KAAG,cA4Cd,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import focusNextElementHandler from './focusNextElementHandler';
|
|
3
|
+
import { isArrowDownEvent, isArrowUpEvent, } from '../../functions/keyboardEvents';
|
|
4
|
+
/**
|
|
5
|
+
* A hook that uses arrow key logic to compute the index of a highlighted element within a list
|
|
6
|
+
* @param { number } elementCount The total number of elements from the list
|
|
7
|
+
* @param { number } initialHighlightedElementIndex index of the initial highlighted element.
|
|
8
|
+
* initialHighlightedElementIndex = -1 means there is no initial highlighted element.
|
|
9
|
+
* @returns { number } The index of the element that should be highlighted
|
|
10
|
+
*/
|
|
11
|
+
const useArrowKeyListIndex = ({ elementCount, windowContext, initialHighlightedElementIndex = 0, }) => {
|
|
12
|
+
const [focusedId, setFocusedId] = useState(initialHighlightedElementIndex);
|
|
13
|
+
const handleElementCountChanged = () => {
|
|
14
|
+
// Case when elemnet count is smaller than the current focused index -> update focus index to the last element
|
|
15
|
+
if (focusedId >= elementCount) {
|
|
16
|
+
setFocusedId(elementCount - 1);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const handleArrow = useCallback((event) => {
|
|
20
|
+
if (isArrowDownEvent(event)) {
|
|
21
|
+
focusNextElementHandler(true, elementCount, setFocusedId);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (isArrowUpEvent(event)) {
|
|
25
|
+
focusNextElementHandler(false, elementCount, setFocusedId);
|
|
26
|
+
}
|
|
27
|
+
}, [elementCount]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
(windowContext || window).document.addEventListener('keydown', handleArrow);
|
|
30
|
+
return () => {
|
|
31
|
+
(windowContext || window).document.removeEventListener('keydown', handleArrow);
|
|
32
|
+
};
|
|
33
|
+
}, [elementCount]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
// Update focused index when element count is changed
|
|
36
|
+
handleElementCountChanged();
|
|
37
|
+
}, [elementCount]);
|
|
38
|
+
return {
|
|
39
|
+
focusedElementIndex: focusedId,
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export default useArrowKeyListIndex;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import EventKey from './EventKey';
|
|
2
|
+
export interface HookProps {
|
|
3
|
+
actionKeyHandler: () => void;
|
|
4
|
+
windowContext?: Window;
|
|
5
|
+
fireEvents?: EventKey[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A hook that binds to global action key events (example: Enter or Space) and calls the provided handler once any of the specified keys have been pressed
|
|
9
|
+
* @param { Function } actionKeyHandler The handler to be called when Enter or Space has been pressed
|
|
10
|
+
* @param fireEvents specify the events
|
|
11
|
+
* @param windowContext
|
|
12
|
+
* @returns { void }
|
|
13
|
+
*/
|
|
14
|
+
declare const useGlobalActionKeyHandler: ({ actionKeyHandler, windowContext, fireEvents, }: HookProps) => void;
|
|
15
|
+
export default useGlobalActionKeyHandler;
|
|
16
|
+
//# sourceMappingURL=useGlobalActionKeyHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGlobalActionKeyHandler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/eventKeyHandlers/useGlobalActionKeyHandler.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAED;;;;;;GAMG;AACH,QAAA,MAAM,yBAAyB,GAAI,kDAIhC,SAAS,KAAG,IAqBd,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import EventKey from './EventKey';
|
|
3
|
+
/**
|
|
4
|
+
* A hook that binds to global action key events (example: Enter or Space) and calls the provided handler once any of the specified keys have been pressed
|
|
5
|
+
* @param { Function } actionKeyHandler The handler to be called when Enter or Space has been pressed
|
|
6
|
+
* @param fireEvents specify the events
|
|
7
|
+
* @param windowContext
|
|
8
|
+
* @returns { void }
|
|
9
|
+
*/
|
|
10
|
+
const useGlobalActionKeyHandler = ({ actionKeyHandler, windowContext, fireEvents = [EventKey.Enter, EventKey.Space], }) => {
|
|
11
|
+
const handleKeyPress = (event) => {
|
|
12
|
+
if (fireEvents.includes(event.key)) {
|
|
13
|
+
// eslint-disable-next-line no-unused-expressions
|
|
14
|
+
actionKeyHandler && actionKeyHandler();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
(windowContext || window).document.addEventListener('keydown', handleKeyPress);
|
|
19
|
+
return () => {
|
|
20
|
+
(windowContext || window).document.removeEventListener('keydown', handleKeyPress);
|
|
21
|
+
};
|
|
22
|
+
}, [handleKeyPress]);
|
|
23
|
+
};
|
|
24
|
+
export default useGlobalActionKeyHandler;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export interface UseAriaLiveReturn {
|
|
2
|
+
/**
|
|
3
|
+
* Announce a message to screen readers
|
|
4
|
+
*/
|
|
5
|
+
announce: (message: string, options?: {
|
|
6
|
+
assertive?: boolean;
|
|
7
|
+
}) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const CONTAINER_IDS: {
|
|
10
|
+
readonly polite: "__oxygen-aria-live-polite__";
|
|
11
|
+
readonly assertive: "__oxygen-aria-live-assertive__";
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Clean up containers and timeouts (for testing)
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare function cleanup(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Hook for managing aria-live status messages with automatic DOM injection.
|
|
20
|
+
* Messages are announced to screen readers via direct DOM manipulation.
|
|
21
|
+
* Containers are created on-demand when messages are announced.
|
|
22
|
+
*
|
|
23
|
+
* @returns Object with message control functions
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* const { announce } = useAriaLive();
|
|
28
|
+
*
|
|
29
|
+
* const handleSave = () => {
|
|
30
|
+
* // ... save logic
|
|
31
|
+
* announce('Item saved successfully');
|
|
32
|
+
* };
|
|
33
|
+
*
|
|
34
|
+
* const handleError = () => {
|
|
35
|
+
* // ... error handling
|
|
36
|
+
* announce('Connection failed!', { assertive: true });
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* return (
|
|
40
|
+
* <div>
|
|
41
|
+
* <button onClick={handleSave}>Save</button>
|
|
42
|
+
* </div>
|
|
43
|
+
* );
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export default function useAriaLive(): UseAriaLiveReturn;
|
|
47
|
+
//# sourceMappingURL=useAriaLive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAriaLive.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAriaLive.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACxE;AAKD,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AA2DX;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAsB9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,IAAI,iBAAiB,CAavD"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
const MESSAGE_CLEAR_DELAY = 1000; // ms to clear message
|
|
3
|
+
// Container IDs for aria-live regions
|
|
4
|
+
export const CONTAINER_IDS = {
|
|
5
|
+
polite: '__oxygen-aria-live-polite__',
|
|
6
|
+
assertive: '__oxygen-aria-live-assertive__',
|
|
7
|
+
};
|
|
8
|
+
// Timeout references for automatic message clearing
|
|
9
|
+
const messageTimeouts = {
|
|
10
|
+
polite: null,
|
|
11
|
+
assertive: null,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Get or create the DOM container for the specified type
|
|
15
|
+
*/
|
|
16
|
+
function getOrCreateContainer(type) {
|
|
17
|
+
const containerId = CONTAINER_IDS[type];
|
|
18
|
+
// Check if container already exists
|
|
19
|
+
const existing = document.getElementById(containerId);
|
|
20
|
+
if (existing) {
|
|
21
|
+
return existing;
|
|
22
|
+
}
|
|
23
|
+
// Create new container
|
|
24
|
+
const container = document.createElement('div');
|
|
25
|
+
container.id = containerId;
|
|
26
|
+
container.setAttribute('aria-live', type);
|
|
27
|
+
container.setAttribute('aria-atomic', 'true');
|
|
28
|
+
// Apply offscreen styling
|
|
29
|
+
container.style.position = 'absolute';
|
|
30
|
+
container.style.width = '1px';
|
|
31
|
+
container.style.height = '1px';
|
|
32
|
+
container.style.overflow = 'hidden';
|
|
33
|
+
document.body.appendChild(container);
|
|
34
|
+
return container;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Announce a message using direct DOM manipulation
|
|
38
|
+
*/
|
|
39
|
+
function announceMessage(message, type) {
|
|
40
|
+
// Clear any existing timeout for this type
|
|
41
|
+
if (messageTimeouts[type]) {
|
|
42
|
+
clearTimeout(messageTimeouts[type]);
|
|
43
|
+
messageTimeouts[type] = null;
|
|
44
|
+
}
|
|
45
|
+
// Get or create the container on-demand
|
|
46
|
+
const container = getOrCreateContainer(type);
|
|
47
|
+
container.textContent = message;
|
|
48
|
+
// Set timeout to clear the message
|
|
49
|
+
messageTimeouts[type] = setTimeout(() => {
|
|
50
|
+
container.textContent = '';
|
|
51
|
+
messageTimeouts[type] = null;
|
|
52
|
+
}, MESSAGE_CLEAR_DELAY);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Clean up containers and timeouts (for testing)
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
export function cleanup() {
|
|
59
|
+
// Clear timeouts
|
|
60
|
+
Object.keys(messageTimeouts).forEach(type => {
|
|
61
|
+
const key = type;
|
|
62
|
+
if (messageTimeouts[key]) {
|
|
63
|
+
clearTimeout(messageTimeouts[key]);
|
|
64
|
+
messageTimeouts[key] = null;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// Remove DOM containers
|
|
68
|
+
const politeContainer = document.getElementById(CONTAINER_IDS.polite);
|
|
69
|
+
const assertiveContainer = document.getElementById(CONTAINER_IDS.assertive);
|
|
70
|
+
if (politeContainer) {
|
|
71
|
+
politeContainer.remove();
|
|
72
|
+
}
|
|
73
|
+
if (assertiveContainer) {
|
|
74
|
+
assertiveContainer.remove();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Hook for managing aria-live status messages with automatic DOM injection.
|
|
79
|
+
* Messages are announced to screen readers via direct DOM manipulation.
|
|
80
|
+
* Containers are created on-demand when messages are announced.
|
|
81
|
+
*
|
|
82
|
+
* @returns Object with message control functions
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```tsx
|
|
86
|
+
* const { announce } = useAriaLive();
|
|
87
|
+
*
|
|
88
|
+
* const handleSave = () => {
|
|
89
|
+
* // ... save logic
|
|
90
|
+
* announce('Item saved successfully');
|
|
91
|
+
* };
|
|
92
|
+
*
|
|
93
|
+
* const handleError = () => {
|
|
94
|
+
* // ... error handling
|
|
95
|
+
* announce('Connection failed!', { assertive: true });
|
|
96
|
+
* };
|
|
97
|
+
*
|
|
98
|
+
* return (
|
|
99
|
+
* <div>
|
|
100
|
+
* <button onClick={handleSave}>Save</button>
|
|
101
|
+
* </div>
|
|
102
|
+
* );
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export default function useAriaLive() {
|
|
106
|
+
const announce = useCallback((message, messageOptions = {}) => {
|
|
107
|
+
const type = messageOptions.assertive ? 'assertive' : 'polite';
|
|
108
|
+
announceMessage(message, type);
|
|
109
|
+
}, []);
|
|
110
|
+
return {
|
|
111
|
+
announce,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClickOutside.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClickOutside.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAU,MAAM,OAAO,CAAC;AAErD,QAAA,MAAM,eAAe,GAAI,OAAO,EAC9B,gBAAgB,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAC1C,SAAS,CAAC,OAAO,CAsBnB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
const useClickOutside = (onClickOutside) => {
|
|
3
|
+
const containerRef = useRef(null);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const handleMouseUp = (event) => {
|
|
6
|
+
if (containerRef &&
|
|
7
|
+
!(containerRef.current instanceof Element &&
|
|
8
|
+
containerRef.current.contains(event?.target))) {
|
|
9
|
+
onClickOutside(event);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
window.document.addEventListener('mouseup', handleMouseUp);
|
|
13
|
+
return () => window.document.removeEventListener('mouseup', handleMouseUp);
|
|
14
|
+
}, [containerRef, onClickOutside]);
|
|
15
|
+
return containerRef;
|
|
16
|
+
};
|
|
17
|
+
export default useClickOutside;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFontSize.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFontSize.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,WAAW,GAAI,KAAK,MAAM,WAI/B,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHasOverflow.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHasOverflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,QAAA,MAAM,cAAc,GAClB,KAAK,KAAK,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,EAC/C,WAAW,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,QAiCzC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useLayoutEffect, useState } from 'react';
|
|
2
|
+
const useHasOverflow = (ref, callback) => {
|
|
3
|
+
const [isOverflow, setIsOverflow] = useState(undefined);
|
|
4
|
+
useLayoutEffect(() => {
|
|
5
|
+
const { current } = ref;
|
|
6
|
+
const trigger = () => {
|
|
7
|
+
const hasOverflow = current.offsetWidth < current.scrollWidth;
|
|
8
|
+
setIsOverflow(hasOverflow);
|
|
9
|
+
if (callback) {
|
|
10
|
+
callback(hasOverflow);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
let observer;
|
|
14
|
+
if (current) {
|
|
15
|
+
if ('ResizeObserver' in window) {
|
|
16
|
+
observer = new ResizeObserver(trigger);
|
|
17
|
+
observer.observe(current);
|
|
18
|
+
}
|
|
19
|
+
trigger();
|
|
20
|
+
}
|
|
21
|
+
return () => {
|
|
22
|
+
observer?.disconnect();
|
|
23
|
+
};
|
|
24
|
+
}, [callback, ref]);
|
|
25
|
+
return isOverflow;
|
|
26
|
+
};
|
|
27
|
+
export default useHasOverflow;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useId.d.ts","sourceRoot":"","sources":["../../../src/hooks/useId.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,KAAK,QAAO,MAYjB,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
// @todo delegate to react useId hook when React 18 is minimally supported
|
|
4
|
+
const useId = () => {
|
|
5
|
+
const ref = useRef(null);
|
|
6
|
+
const getUniqueId = () => {
|
|
7
|
+
if (ref.current === null) {
|
|
8
|
+
ref.current = uuidv4();
|
|
9
|
+
}
|
|
10
|
+
return ref.current;
|
|
11
|
+
};
|
|
12
|
+
return getUniqueId();
|
|
13
|
+
};
|
|
14
|
+
export default useId;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { default as OutsideEventBehavior } from './components/OutsideEventBehavior';
|
|
2
|
+
export { getCssMedia, mediaMinC, mediaMaxC, calcMediaVal, getMediaVal, mediaMin, mediaFn, mediaSizes, default as media, } from './functions/media';
|
|
3
|
+
export { default as PausableTimeout } from './functions/pausableTimeout';
|
|
4
|
+
export { default as withAlpha } from './styles/withAlpha';
|
|
5
|
+
export { default as ellipsis } from './styles/ellipsis';
|
|
6
|
+
export { default as isReactDevMode } from './functions/isReactDevMode';
|
|
7
|
+
export { isEnterEvent, isSpaceEvent, isEscapeEvent, isArrowDownEvent, isArrowUpEvent, KeyboardEventType, } from './functions/keyboardEvents';
|
|
8
|
+
export { default as useFontSize } from './hooks/useFontSize';
|
|
9
|
+
export { default as useId } from './hooks/useId';
|
|
10
|
+
export { default as useHasOverflow } from './hooks/useHasOverflow';
|
|
11
|
+
export { default as useArrowKeyListIndex } from './hooks/eventKeyHandlers/useArrowKeyListIndex';
|
|
12
|
+
export { default as useGlobalActionKeyHandler } from './hooks/eventKeyHandlers/useGlobalActionKeyHandler';
|
|
13
|
+
export { default as focusNextElementHandler } from './hooks/eventKeyHandlers/focusNextElementHandler';
|
|
14
|
+
export { default as getNextIndexElement } from './hooks/eventKeyHandlers/getNextIndexElement';
|
|
15
|
+
export { default as EventKey } from './hooks/eventKeyHandlers/EventKey';
|
|
16
|
+
export { default as useClickOutside } from './hooks/useClickOutside';
|
|
17
|
+
export { default as useAriaLive, cleanup as cleanupAriaLive, CONTAINER_IDS as ariaLiveContainerIds, } from './hooks/useAriaLive';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEpF,OAAO,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAO,IAAI,KAAK,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAC1G,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AACtG,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,OAAO,IAAI,eAAe,EAC1B,aAAa,IAAI,oBAAoB,GACtC,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { default as OutsideEventBehavior } from './components/OutsideEventBehavior';
|
|
2
|
+
export { getCssMedia, mediaMinC, mediaMaxC, calcMediaVal, getMediaVal, mediaMin, mediaFn, mediaSizes, default as media, } from './functions/media';
|
|
3
|
+
export { default as PausableTimeout } from './functions/pausableTimeout';
|
|
4
|
+
export { default as withAlpha } from './styles/withAlpha';
|
|
5
|
+
export { default as ellipsis } from './styles/ellipsis';
|
|
6
|
+
export { default as isReactDevMode } from './functions/isReactDevMode';
|
|
7
|
+
export { isEnterEvent, isSpaceEvent, isEscapeEvent, isArrowDownEvent, isArrowUpEvent, } from './functions/keyboardEvents';
|
|
8
|
+
export { default as useFontSize } from './hooks/useFontSize';
|
|
9
|
+
export { default as useId } from './hooks/useId';
|
|
10
|
+
export { default as useHasOverflow } from './hooks/useHasOverflow';
|
|
11
|
+
export { default as useArrowKeyListIndex } from './hooks/eventKeyHandlers/useArrowKeyListIndex';
|
|
12
|
+
export { default as useGlobalActionKeyHandler } from './hooks/eventKeyHandlers/useGlobalActionKeyHandler';
|
|
13
|
+
export { default as focusNextElementHandler } from './hooks/eventKeyHandlers/focusNextElementHandler';
|
|
14
|
+
export { default as getNextIndexElement } from './hooks/eventKeyHandlers/getNextIndexElement';
|
|
15
|
+
export { default as EventKey } from './hooks/eventKeyHandlers/EventKey';
|
|
16
|
+
export { default as useClickOutside } from './hooks/useClickOutside';
|
|
17
|
+
export { default as useAriaLive, cleanup as cleanupAriaLive, CONTAINER_IDS as ariaLiveContainerIds, } from './hooks/useAriaLive';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Truncates single-line text with an ellipsis.
|
|
3
|
+
* A style object, so it works both in styled-components templates and in style objects (e.g. react-select).
|
|
4
|
+
*/
|
|
5
|
+
declare const ellipsis: {
|
|
6
|
+
readonly display: "inline-block";
|
|
7
|
+
readonly maxWidth: "100%";
|
|
8
|
+
readonly overflow: "hidden";
|
|
9
|
+
readonly textOverflow: "ellipsis";
|
|
10
|
+
readonly whiteSpace: "nowrap";
|
|
11
|
+
readonly wordWrap: "normal";
|
|
12
|
+
};
|
|
13
|
+
export default ellipsis;
|
|
14
|
+
//# sourceMappingURL=ellipsis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ellipsis.d.ts","sourceRoot":"","sources":["../../../src/styles/ellipsis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,QAAA,MAAM,QAAQ;;;;;;;CAOJ,CAAC;AAEX,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Truncates single-line text with an ellipsis.
|
|
3
|
+
* A style object, so it works both in styled-components templates and in style objects (e.g. react-select).
|
|
4
|
+
*/
|
|
5
|
+
const ellipsis = {
|
|
6
|
+
display: 'inline-block',
|
|
7
|
+
maxWidth: '100%',
|
|
8
|
+
overflow: 'hidden',
|
|
9
|
+
textOverflow: 'ellipsis',
|
|
10
|
+
whiteSpace: 'nowrap',
|
|
11
|
+
wordWrap: 'normal',
|
|
12
|
+
};
|
|
13
|
+
export default ellipsis;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns `color` with the given alpha (0 to 1).
|
|
3
|
+
*
|
|
4
|
+
* A 3- or 6-digit hex colour (every Oxygen token) gives `rgba(r,g,b,alpha)`.
|
|
5
|
+
* Any other CSS colour, e.g. from a custom `OxygenProvider` theme, gives the equivalent `color-mix()`.
|
|
6
|
+
*/
|
|
7
|
+
export default function withAlpha(color: string, alpha: number): string;
|
|
8
|
+
//# sourceMappingURL=withAlpha.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withAlpha.d.ts","sourceRoot":"","sources":["../../../src/styles/withAlpha.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const HEX_COLOR = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
2
|
+
/**
|
|
3
|
+
* Returns `color` with the given alpha (0 to 1).
|
|
4
|
+
*
|
|
5
|
+
* A 3- or 6-digit hex colour (every Oxygen token) gives `rgba(r,g,b,alpha)`.
|
|
6
|
+
* Any other CSS colour, e.g. from a custom `OxygenProvider` theme, gives the equivalent `color-mix()`.
|
|
7
|
+
*/
|
|
8
|
+
export default function withAlpha(color, alpha) {
|
|
9
|
+
const match = HEX_COLOR.exec(color);
|
|
10
|
+
if (!match) {
|
|
11
|
+
return `color-mix(in srgb, ${color} ${Math.round(alpha * 10000) / 100}%, transparent)`;
|
|
12
|
+
}
|
|
13
|
+
const hex = match[1].length === 3
|
|
14
|
+
? match[1].replace(/./g, digit => digit + digit)
|
|
15
|
+
: match[1];
|
|
16
|
+
const [red, green, blue] = [0, 2, 4].map(start => parseInt(hex.slice(start, start + 2), 16));
|
|
17
|
+
return `rgba(${red},${green},${blue},${alpha})`;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2021.full.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react/jsx-runtime.d.ts","../src/components/OutsideEventBehavior/OutsideEventBehavior.ts","../src/components/OutsideEventBehavior/index.ts","../../../node_modules/@types/hoist-non-react-statics/index.d.ts","../../../node_modules/@types/styled-components/index.d.ts","../src/functions/media.ts","../src/functions/pausableTimeout.ts","../src/styles/withAlpha.ts","../src/styles/ellipsis.ts","../src/functions/isReactDevMode.ts","../src/hooks/eventKeyHandlers/EventKey.ts","../src/functions/keyboardEvents.ts","../src/hooks/useFontSize.ts","../../../node_modules/@types/uuid/index.d.ts","../src/hooks/useId.ts","../src/hooks/useHasOverflow.ts","../src/hooks/eventKeyHandlers/getNextIndexElement.ts","../src/hooks/eventKeyHandlers/focusNextElementHandler.ts","../src/hooks/eventKeyHandlers/useArrowKeyListIndex.ts","../src/hooks/eventKeyHandlers/useGlobalActionKeyHandler.ts","../src/hooks/useClickOutside.ts","../src/hooks/useAriaLive.ts","../src/index.ts","../src/hooks/eventKeyHandlers/test-utils/dispatchKeyboardEvents.ts","../../../types/globals.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[62],[88],[124],[125,130,159],[126,137,138,145,156,167],[126,127,137,145],[128,168],[129,130,138,146],[130,156,164],[131,133,137,145],[124,132],[133,134],[137],[135,137],[124,137],[137,138,139,156,167],[137,138,139,152,156,159],[122,125,172],[133,137,140,145,156,167],[137,138,140,141,145,156,164,167],[140,142,156,164,167],[88,89,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174],[137,143],[144,167,172],[133,137,145,156],[146],[147],[124,148],[149,166,172],[150],[151],[137,152,153],[152,154,168,170],[125,137,156,157,158,159],[125,156,158],[156,157],[159],[160],[124,156],[137,162,163],[162,163],[130,145,156,164],[165],[145,166],[125,140,151,167],[130,168],[156,169],[144,170],[171],[125,130,137,139,148,156,167,170,172],[156,173],[60,61],[61,62,66],[99,103,167],[99,156,167],[94],[96,99,164,167],[145,164],[175],[94,175],[96,99,145,167],[91,92,95,98,125,137,156,167],[91,97],[95,99,125,159,167,175],[125,175],[115,125,175],[93,94,175],[99],[93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121],[99,106,107],[97,99,107,108],[98],[91,94,99],[99,103,107,108],[103],[97,99,102,167],[91,96,97,99,103,106],[125,156],[94,99,115,125,172,175],[62,63],[63,64],[63],[62,63,73],[63,67],[62,63,79],[63,73],[62,63,74,80],[62,63,73,74],[62,63,76],[63,65,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"e4a70ead7fea07d9abe520cc9e30c04ac035ebceaab28f9e67211610006c65de","impliedFormat":1},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"bea6c0f5b819cf8cba6608bf3530089119294f949640714011d46ec8013b61c2","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"44e0cba37371c10e6b7fa160bf78e1f70afbaf9d7743f9f385a12e5aa6fa3306","signature":"8ba573debe72c8348b072bc54d9a96454a2b30bfde89760e244d3cc7df46c7b9"},{"version":"be8764f2cb353c259c1b8d706b364e1d975293e7f81ec5ccb50734a00c4f3c74","signature":"e4baa368ade15a8eefd123d68f1047acef34d647416cc14d96c02bb766ffc2e2"},{"version":"a7ca2a9e61286d74bc37fe64e5dcd7da04607f7f5432f7c651b47b573fc76cef","impliedFormat":1},{"version":"cfb95dbcdee02402fb9373c62ec4ba735b5479e5d879f39e7c23fe1d58186e31","affectsGlobalScope":true,"impliedFormat":1},{"version":"d8e38b2bd9c6896d6dbd0a9391ef5b411bccd0b4eafe608fddac0df8ec955801","signature":"b5dc9a2975fbe4d42195a1631f81b583aa05328bcaf372f3f287adddd3236657"},{"version":"82cb2497962ef3950323bb519b6a9e764b1dafb5c55d15a0bde0df785d459f2d","signature":"37c4fc454c50944c762d722e996bf442e6a54b083721763b4eda89b81beb9c85"},{"version":"63aab1dcd0fd0d001c0a5d8b157d70a9d05ea13c5f13919eb2d994d1c31c8e51","signature":"12898fae5f76af0b5182280e316f685a2fcc415d5c6b74bbe57f1b5d98f74ca5"},{"version":"8ddf6051e57e63ceccea92ab4326ec873be3c4e542a928825ca7af70ce929fc8","signature":"560297fcf871fcc76979726f5583372d11609219dee946aaa7b2df2da6b77df4"},{"version":"a93f12b9edc46009fca7714034baeb5eac9d412cb62d9767532eebcf2a9ab25a","signature":"1349872848ac8cf0871aa25eeef00c309b747dda677c4407255ecae1f0645663"},{"version":"7e71fdcff8d0c2a5be34e85ad9d4b226742d73c0e1fedaef9d54f1577ad7cce1","signature":"d4d1debbdbfaa9f09904f1546e1e32df5b827bb6a53b7e551aef3cd7fa829022"},{"version":"ec342fef257813b8ef11345f34bd62aa31a68c33768de7b4f551751da4efca7a","signature":"dfa7f6e8f07789a4aeb10261e4214288e20d385d109950a1c725f6f7def34bf1"},{"version":"ab8ab8e4e568bbbea813932bd9909e53cb79f826156fd8db40bfcc5f04090271","signature":"5234122e6dbb9c25a14536c70c667c408c40f125537310d402b3d4d1d0076a15"},{"version":"7d2b7fe4adb76d8253f20e4dbdce044f1cdfab4902ec33c3604585f553883f7d","impliedFormat":1},{"version":"aafbe1fa28073eb44bb2ddbe4e1b3ca2ba8c14a7af813e8cd4fbd090cf7e7b41","signature":"1dc68bca84846b5a5c70a633d384e311c754cc89a89ebe5c0d7a302251b19556"},{"version":"21907c519fc3e4b132bd96f9f8205e64815afa8d73cb01d796aace59c4c3c560","signature":"c008490357e1a1d6c7aa70a571e2d91d16dbb3fa1ca24be6bc32e92834bf5a22"},{"version":"5e089a7b2d338884c426c9fad1bdc560b2b75db8f48a19ea21d31521edd09e66","signature":"1c45c15325d51b60ac046cc940322ed96b5f997ce8c1023b44beff460e4dc4b8"},{"version":"f62cc707453e80f838d5c2bb4ee4d3333f0b446c9c6a5c577cafb104cf65b969","signature":"36ff6f358a349b32c7a008a09c17cd1ef76ac4dc737fee608974141f4ac5c336"},{"version":"35c30012cbec03b052a1f4f4855ed83329020185d8ed55c924ff3e65b5fe73bc","signature":"70cc6f81f001f78e076b9f8b60bb1e5e90203e05df1116113a2ff32d28a37a1e"},{"version":"df28675afc99dc63796e8b5fe7327e3536bd0c01e27c76dc6fa39bbbc4a09aa6","signature":"97d1087bd140bbc0fa99bdec56cb319d337d89a3d2c62bc05a7059149d79a5f7"},{"version":"14a7288a0f41a21e78f6b255aeb0203936d173c2e27a5aeced07c67cfc879f71","signature":"3f728e647fd98d49571807fb3d2a13430d838c787f54d406a439f9d6701acaa7"},{"version":"54be44cd45d3115c2dce914653c7717c4547a0092575e712a002a6d66efb97b2","signature":"9bbde432e17de6421a6f11d108e30c5c1480b78196ef1dddc5e0114b493467bd"},{"version":"91227bd2955548f84e45a62550474b566b866ef75e5c3e390c8e969b64c3c281","signature":"d3df43d5dd03ecae99af932549e1e5c4248435c6e6008eacb12c9ee8d69721e0"},{"version":"72b10654b5a5d50dcd869d02613e7e96bb6427012325be291488070a74175213","signature":"225672bc9d5ce3fca4f536e4f21dd7eebafff723dc50e715dbfd81391ddb57a1"},{"version":"db511cba39e1c4e09db420649acea9579dc574fcd306daa5884f445ef2366f33","affectsGlobalScope":true},{"version":"efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","impliedFormat":1},{"version":"3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","impliedFormat":1},{"version":"e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","impliedFormat":1},{"version":"471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","impliedFormat":1},{"version":"c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","impliedFormat":1},{"version":"40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","impliedFormat":1},{"version":"339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","impliedFormat":1},{"version":"9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","impliedFormat":1},{"version":"8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","impliedFormat":1},{"version":"4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1","impliedFormat":1},{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true,"impliedFormat":1},{"version":"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c","impliedFormat":1},{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df3389f71a71a38bc931aaf1ef97a65fada98f0a27f19dd12f8b8de2b0f4e461","impliedFormat":1},{"version":"d69a3298a197fe5d59edba0ec23b4abf2c8e7b8c6718eac97833633cd664e4c9","impliedFormat":1},{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8b809082dfeffc8cc4f3b9c59f55c0ff52ba12f5ae0766cb5c35deee83b8552e","affectsGlobalScope":true,"impliedFormat":1},{"version":"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","impliedFormat":1},{"version":"4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","impliedFormat":1},{"version":"d4f9d3ae2fe1ae199e1c832cca2c44f45e0b305dfa2808afdd51249b6f4a5163","impliedFormat":1},{"version":"7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","impliedFormat":1},{"version":"b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"9c611eff81287837680c1f4496daf9e737d6f3a1ff17752207814b8f8e1265af","affectsGlobalScope":true,"impliedFormat":1},{"version":"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","impliedFormat":1},{"version":"b5d4e3e524f2eead4519c8e819eaf7fa44a27c22418eff1b7b2d0ebc5fdc510d","impliedFormat":1},{"version":"afb1701fd4be413a8a5a88df6befdd4510c30a31372c07a4138facf61594c66d","impliedFormat":1},{"version":"9bd8e5984676cf28ebffcc65620b4ab5cb38ab2ec0aac0825df8568856895653","impliedFormat":1},{"version":"396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","impliedFormat":1},{"version":"5e8dc64e7e68b2b3ea52ed685cf85239e0d5fb9df31aabc94370c6bc7e19077b","impliedFormat":1},{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true,"impliedFormat":1},{"version":"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","impliedFormat":1},{"version":"45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","impliedFormat":1},{"version":"0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7","impliedFormat":1},{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true,"impliedFormat":1},{"version":"46755a4afc53df75f0bfce72259fb971daac826b0cdd8c4eaccad2755a817403","affectsGlobalScope":true,"impliedFormat":1},{"version":"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","impliedFormat":1},{"version":"54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","impliedFormat":1},{"version":"d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","impliedFormat":1},{"version":"8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","impliedFormat":1},{"version":"01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"7fa32887f8a97909fca35ebba3740f8caf8df146618d8fff957a3f89f67a2f6a","impliedFormat":1},{"version":"9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024","impliedFormat":1},{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true,"impliedFormat":1},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","impliedFormat":1},{"version":"4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","impliedFormat":1},{"version":"7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","impliedFormat":1},{"version":"7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df","impliedFormat":1},{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","impliedFormat":1},{"version":"79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","impliedFormat":1},{"version":"21c56c6e8eeacef15f63f373a29fab6a2b36e4705be7a528aae8c51469e2737b","impliedFormat":1},{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","impliedFormat":1}],"root":[64,65,[68,75],[77,87]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"jsx":4,"module":99,"noErrorTruncation":false,"noImplicitAny":true,"outDir":"./","skipLibCheck":true,"strict":false,"target":8},"referencedMap":[[66,1],[88,2],[89,2],[124,3],[125,4],[126,5],[127,6],[128,7],[129,8],[130,9],[131,10],[132,11],[133,12],[134,12],[136,13],[135,14],[137,15],[138,16],[139,17],[123,18],[140,19],[141,20],[142,21],[175,22],[143,23],[144,24],[145,25],[146,26],[147,27],[148,28],[149,29],[150,30],[151,31],[152,32],[153,32],[154,33],[156,34],[158,35],[157,36],[159,37],[160,38],[161,39],[162,40],[163,41],[164,42],[165,43],[166,44],[167,45],[168,46],[169,47],[170,48],[171,49],[172,50],[173,51],[62,52],[63,1],[67,53],[106,54],[113,55],[105,54],[120,56],[97,57],[96,58],[119,59],[114,60],[117,61],[99,62],[98,63],[94,64],[93,65],[116,66],[95,67],[100,68],[104,68],[122,69],[121,68],[108,70],[109,71],[111,72],[107,73],[110,74],[115,59],[102,75],[103,76],[112,77],[92,78],[118,79],[64,80],[65,81],[72,82],[74,83],[68,84],[69,82],[73,82],[80,85],[79,82],[86,86],[81,87],[82,88],[84,80],[83,80],[75,82],[78,80],[77,89],[85,90],[71,82],[70,82]],"latestChangedDtsFile":"./src/hooks/eventKeyHandlers/test-utils/dispatchKeyboardEvents.d.ts","version":"6.0.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@8x8/oxygen-utils",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Oxygen - Utils",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"types": "dist/src/index.d.ts",
|
|
7
|
+
"author": "8x8",
|
|
8
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"repository": {
|
|
14
|
+
"directory": "packages/utils",
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git@github.com:8x8/oxygen.git"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"uuid": "9.0.0"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"react": "^16.8.2 || ^17 || ^18 || ^19",
|
|
23
|
+
"react-dom": "^16.8.2 || ^17 || ^18 || ^19",
|
|
24
|
+
"styled-components": "^4.1.2 || >=4.1.2"
|
|
25
|
+
}
|
|
26
|
+
}
|