@pega/cosmos-react-core 4.0.0-dev.24.0 → 4.0.0-dev.25.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/lib/components/Backdrop/Backdrop.d.ts +4 -0
- package/lib/components/Backdrop/Backdrop.d.ts.map +1 -1
- package/lib/components/Backdrop/Backdrop.js +12 -8
- package/lib/components/Backdrop/Backdrop.js.map +1 -1
- package/lib/components/ListToolbar/ListToolbar.js +2 -3
- package/lib/components/ListToolbar/ListToolbar.js.map +1 -1
- package/lib/components/ListToolbar/ListToolbar.styles.d.ts +1 -0
- package/lib/components/ListToolbar/ListToolbar.styles.d.ts.map +1 -1
- package/lib/components/ListToolbar/ListToolbar.styles.js +7 -7
- package/lib/components/ListToolbar/ListToolbar.styles.js.map +1 -1
- package/lib/components/Menu/Menu.d.ts +1 -1
- package/lib/components/Menu/Menu.d.ts.map +1 -1
- package/lib/components/Menu/Menu.js +4 -2
- package/lib/components/Menu/Menu.js.map +1 -1
- package/lib/components/Menu/Menu.test-ids.d.ts +1 -1
- package/lib/components/Menu/Menu.test-ids.d.ts.map +1 -1
- package/lib/components/Menu/Menu.test-ids.js +1 -1
- package/lib/components/Menu/Menu.test-ids.js.map +1 -1
- package/lib/components/Menu/Menu.types.d.ts +2 -0
- package/lib/components/Menu/Menu.types.d.ts.map +1 -1
- package/lib/components/Menu/Menu.types.js.map +1 -1
- package/lib/components/Popover/Popover.d.ts +1 -1
- package/lib/components/Popover/Popover.d.ts.map +1 -1
- package/lib/components/Popover/Popover.js +25 -4
- package/lib/components/Popover/Popover.js.map +1 -1
- package/lib/components/Popover/Popover.styles.d.ts +1 -0
- package/lib/components/Popover/Popover.styles.d.ts.map +1 -1
- package/lib/components/Popover/Popover.styles.js +2 -2
- package/lib/components/Popover/Popover.styles.js.map +1 -1
- package/lib/components/RadioCheck/RadioCheck.d.ts.map +1 -1
- package/lib/components/RadioCheck/RadioCheck.js +8 -3
- package/lib/components/RadioCheck/RadioCheck.js.map +1 -1
- package/lib/components/SkipLinks/SkipLinks.d.ts.map +1 -1
- package/lib/components/SkipLinks/SkipLinks.js +1 -1
- package/lib/components/SkipLinks/SkipLinks.js.map +1 -1
- package/lib/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/lib/components/Tooltip/Tooltip.js +2 -3
- package/lib/components/Tooltip/Tooltip.js.map +1 -1
- package/lib/hooks/useEvent.js +5 -5
- package/lib/hooks/useEvent.js.map +1 -1
- package/lib/hooks/useFocusWithin.d.ts +1 -1
- package/lib/hooks/useFocusWithin.d.ts.map +1 -1
- package/lib/hooks/useFocusWithin.js +5 -3
- package/lib/hooks/useFocusWithin.js.map +1 -1
- package/lib/hooks/useOuterEvent.d.ts.map +1 -1
- package/lib/hooks/useOuterEvent.js +10 -4
- package/lib/hooks/useOuterEvent.js.map +1 -1
- package/lib/utils/getAllPopovers.d.ts +4 -0
- package/lib/utils/getAllPopovers.d.ts.map +1 -0
- package/lib/utils/getAllPopovers.js +19 -0
- package/lib/utils/getAllPopovers.js.map +1 -0
- package/lib/utils/index.d.ts +2 -1
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +2 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/normalizeTargets.d.ts +9 -0
- package/lib/utils/normalizeTargets.d.ts.map +1 -0
- package/lib/utils/normalizeTargets.js +17 -0
- package/lib/utils/normalizeTargets.js.map +1 -0
- package/package.json +1 -1
- package/lib/utils/normalizeElements.d.ts +0 -9
- package/lib/utils/normalizeElements.d.ts.map +0 -1
- package/lib/utils/normalizeElements.js +0 -14
- package/lib/utils/normalizeElements.js.map +0 -1
package/lib/hooks/useEvent.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { normalizeTargets } from '../utils';
|
|
3
3
|
function useEvent(eventName, cb, { target = document, eventOptions, dependencies = [] } = {}) {
|
|
4
4
|
useEffect(() => {
|
|
5
|
-
const [
|
|
6
|
-
if (!
|
|
5
|
+
const [t] = normalizeTargets([target]);
|
|
6
|
+
if (!t)
|
|
7
7
|
return;
|
|
8
|
-
|
|
8
|
+
t.addEventListener(eventName, cb, eventOptions);
|
|
9
9
|
return () => {
|
|
10
|
-
|
|
10
|
+
t.removeEventListener(eventName, cb, eventOptions);
|
|
11
11
|
};
|
|
12
12
|
}, [eventName, target, cb, eventOptions, ...dependencies]);
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEvent.js","sourceRoot":"","sources":["../../src/hooks/useEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useEvent.js","sourceRoot":"","sources":["../../src/hooks/useEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAsD5C,SAAS,QAAQ,CACf,SAAoB,EACpB,EAAqD,EACrD,EACE,MAAM,GAAG,QAA6B,EACtC,YAAY,EACZ,YAAY,GAAG,EAAE,KAKf,EAAE;IAEN,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC;YAAE,OAAO;QAEf,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAmB,EAAE,YAAY,CAAC,CAAC;QAEjE,OAAO,GAAG,EAAE;YACV,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAmB,EAAE,YAAY,CAAC,CAAC;QACtE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,eAAe,QAAQ,CAAC","sourcesContent":["import { DependencyList, RefObject, useEffect } from 'react';\n\nimport { normalizeTargets } from '../utils';\n\n// Based on https://github.com/microsoft/TypeScript/issues/33047#issuecomment-704005614\ntype EventMapForTarget<Target extends EventTarget> = Target extends HTMLElement\n ? HTMLElementEventMap\n : Target extends SVGElement\n ? SVGElementEventMap\n : Target extends Document\n ? DocumentEventMap\n : Target extends Window\n ? WindowEventMap\n : {\n [eventType: string]: Event;\n };\ntype EventNamesForTarget<T extends EventTarget> = keyof EventMapForTarget<T> & string;\n\n/**\n * @example useEvent('keydown', (event) => { do something });\n * @param cb The function that should be executed on keydown keyevent.\n * @param options\n */\nfunction useEvent<Target extends Document, EventName extends EventNamesForTarget<Target>>(\n eventName: EventName,\n cb: (e: EventMapForTarget<Target>[EventName]) => void,\n opts?: {\n target?: undefined;\n eventOptions?: AddEventListenerOptions | boolean;\n dependencies: DependencyList;\n }\n): void;\n\nfunction useEvent<Target extends EventTarget, EventName extends EventNamesForTarget<Target>>(\n eventName: EventName,\n cb: (e: EventMapForTarget<Target>[EventName]) => void,\n opts: {\n target: Target | RefObject<Target> | null;\n eventOptions?: AddEventListenerOptions | boolean;\n dependencies?: DependencyList;\n }\n): void;\n\nfunction useEvent<\n Target extends EventTarget,\n EventName extends EventNamesForTarget<Target | Document>\n>(\n eventName: EventName,\n cb: (e: EventMapForTarget<Target | Document>[EventName]) => void,\n opts: {\n target?: Target | RefObject<Target> | null | undefined;\n eventOptions?: AddEventListenerOptions | boolean;\n dependencies?: DependencyList;\n }\n): void;\n\nfunction useEvent<Target extends EventTarget, EventName extends EventNamesForTarget<Target>>(\n eventName: EventName,\n cb: (e: EventMapForTarget<Target>[EventName]) => void,\n {\n target = document as unknown as Target,\n eventOptions,\n dependencies = []\n }: {\n target?: Target | RefObject<Target> | null;\n eventOptions?: AddEventListenerOptions | boolean;\n dependencies?: DependencyList;\n } = {}\n) {\n useEffect(() => {\n const [t] = normalizeTargets([target]);\n if (!t) return;\n\n t.addEventListener(eventName, cb as EventListener, eventOptions);\n\n return () => {\n t.removeEventListener(eventName, cb as EventListener, eventOptions);\n };\n }, [eventName, target, cb, eventOptions, ...dependencies]);\n}\n\nexport default useEvent;\n"]}
|
|
@@ -4,6 +4,6 @@ import { RefObject } from 'react';
|
|
|
4
4
|
* @param onFocusChange Callback function that is invoked with the current focus state and the current element when any child elements takes focus or all of them lose focus.
|
|
5
5
|
* @returns * hasFocus:: A boolean indicating if the ref element has focus or not.
|
|
6
6
|
*/
|
|
7
|
-
declare const useFocusWithin: <T extends HTMLElement = HTMLElement>(els: (T | RefObject<T | null> | null)[], onFocusChange?: ((isFocused: boolean, element: T | null) => void) | undefined) => boolean;
|
|
7
|
+
declare const useFocusWithin: <T extends HTMLElement = HTMLElement>(els: (T | RefObject<T | null> | null)[], onFocusChange?: ((isFocused: boolean, element: Element | T | null) => void) | undefined) => boolean;
|
|
8
8
|
export default useFocusWithin;
|
|
9
9
|
//# sourceMappingURL=useFocusWithin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFocusWithin.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusWithin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAuB,MAAM,OAAO,CAAC;AAI5E;;;;GAIG;AACH,QAAA,MAAM,cAAc,8GAEU,OAAO,
|
|
1
|
+
{"version":3,"file":"useFocusWithin.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusWithin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAuB,MAAM,OAAO,CAAC;AAI5E;;;;GAIG;AACH,QAAA,MAAM,cAAc,8GAEU,OAAO,kCAAkC,IAAI,kBACxE,OA8FF,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { getAllPopovers, normalizeTargets } from '../utils';
|
|
3
3
|
/** Hook for properly handling focus state of children components.
|
|
4
4
|
* @example const hasFocus = useFocusWithin([containerRef, ...], (isFocused, element) => { doSomething; });
|
|
5
5
|
* @param onFocusChange Callback function that is invoked with the current focus state and the current element when any child elements takes focus or all of them lose focus.
|
|
@@ -17,7 +17,7 @@ const useFocusWithin = (els, onFocusChange) => {
|
|
|
17
17
|
const onBlur = useCallback(({ relatedTarget }) => {
|
|
18
18
|
if (!hasFocus)
|
|
19
19
|
return;
|
|
20
|
-
const elements =
|
|
20
|
+
const elements = normalizeTargets(els).flatMap(el => [el, ...getAllPopovers(el)]);
|
|
21
21
|
if (relatedTarget instanceof Node) {
|
|
22
22
|
// changing focus to another relevant child doesn't count
|
|
23
23
|
const focusedEl = elements.find(el => el?.contains(relatedTarget));
|
|
@@ -65,7 +65,9 @@ const useFocusWithin = (els, onFocusChange) => {
|
|
|
65
65
|
}
|
|
66
66
|
}, [hasFocus, onFocusChange]);
|
|
67
67
|
useEffect(() => {
|
|
68
|
-
const elements =
|
|
68
|
+
const elements = normalizeTargets(els)
|
|
69
|
+
.flatMap(el => [el, ...getAllPopovers(el)])
|
|
70
|
+
.filter((el) => el instanceof HTMLElement);
|
|
69
71
|
elements.forEach(el => {
|
|
70
72
|
el?.addEventListener('focusin', onFocus);
|
|
71
73
|
el?.addEventListener('focusout', onBlur);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFocusWithin.js","sourceRoot":"","sources":["../../src/hooks/useFocusWithin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAa,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useFocusWithin.js","sourceRoot":"","sources":["../../src/hooks/useFocusWithin.ts"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, RefObject, useCallback, useRef } from 'react';\n\nimport { getAllPopovers, normalizeTargets } from '../utils';\n\n/** Hook for properly handling focus state of children components.\n * @example const hasFocus = useFocusWithin([containerRef, ...], (isFocused, element) => { doSomething; });\n * @param onFocusChange Callback function that is invoked with the current focus state and the current element when any child elements takes focus or all of them lose focus.\n * @returns * hasFocus:: A boolean indicating if the ref element has focus or not.\n */\nconst useFocusWithin = <T extends HTMLElement = HTMLElement>(\n els: (T | null | RefObject<T | null>)[],\n onFocusChange?: (isFocused: boolean, element: T | Element | null) => void\n): boolean => {\n const [hasFocus, setFocus] = useState(false);\n const focusedElRef = useRef<T | Element | null>(null);\n\n const handlerAbortControllerRef = useRef<AbortController>();\n useEffect(() => {\n return () => {\n handlerAbortControllerRef.current?.abort();\n };\n }, []);\n\n const onBlur = useCallback(\n ({ relatedTarget }: FocusEvent) => {\n if (!hasFocus) return;\n\n const elements = normalizeTargets(els).flatMap(el => [el, ...getAllPopovers(el)]);\n\n if (relatedTarget instanceof Node) {\n // changing focus to another relevant child doesn't count\n const focusedEl = elements.find(el => el?.contains(relatedTarget));\n if (focusedEl) {\n // ... just update the currently focused item\n focusedElRef.current = focusedEl;\n return;\n }\n }\n\n // Code below is similar to the useOuterEvent hook, but single-shot only and need to be attached\n // after blur event only. Due to various order of events between browsers and OSes, we need to\n // postpone calling 'onBlur' callback until next element gets focus or on outer click to check\n // if the relevant element contains the target element, which means the focus is retained.\n const handlerAbortController = new AbortController();\n const handler = (e: FocusEvent | MouseEvent) => {\n if (\n !elements.some(el => {\n return el?.contains(e.target as Node);\n })\n ) {\n setFocus(false);\n onFocusChange?.(false, focusedElRef.current);\n focusedElRef.current = null;\n }\n handlerAbortController.abort();\n };\n\n // For keyboard and SR navigation - wait for 'focusin'.\n document.addEventListener('focusin', handler, {\n once: true,\n signal: handlerAbortController.signal\n });\n\n // For mouse and touch navigation - wait for 'mouseup'.\n // The chosen event need to occur before 'click' to allow the given callback code finish before\n // 'click' handlers.\n document.addEventListener('mouseup', handler, {\n once: true,\n signal: handlerAbortController.signal\n });\n\n handlerAbortControllerRef.current = handlerAbortController;\n },\n [hasFocus, onFocusChange, els]\n );\n\n const onFocus = useCallback(\n ({ currentTarget }: FocusEvent) => {\n if (!hasFocus) {\n setFocus(true);\n const targetEl = currentTarget as T;\n onFocusChange?.(true, targetEl);\n focusedElRef.current = targetEl;\n }\n },\n [hasFocus, onFocusChange]\n );\n\n useEffect(() => {\n const elements = normalizeTargets(els)\n .flatMap(el => [el, ...getAllPopovers(el)])\n .filter((el): el is HTMLElement => el instanceof HTMLElement);\n\n elements.forEach(el => {\n el?.addEventListener('focusin', onFocus);\n el?.addEventListener('focusout', onBlur);\n });\n return () => {\n elements.forEach(el => {\n el?.removeEventListener('focusin', onFocus);\n el?.removeEventListener('focusout', onBlur);\n });\n };\n }, [els, onFocus, onBlur]);\n\n return hasFocus;\n};\n\nexport default useFocusWithin;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOuterEvent.d.ts","sourceRoot":"","sources":["../../src/hooks/useOuterEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useOuterEvent.d.ts","sourceRoot":"","sources":["../../src/hooks/useOuterEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,SAAS,EAAE,MAAM,OAAO,CAAC;AAG1D;;;;;GAKG;AACH,QAAA,MAAM,aAAa,wFAEV,CAAC,IAAI,GAAG,IAAI,GAAG,UAAU,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,mDACE,IAAI,KACpD,IA0DF,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useEffect, useCallback } from 'react';
|
|
2
|
+
import { getAllPopovers, normalizeTargets } from '../utils';
|
|
2
3
|
/**
|
|
3
4
|
* @example useOuterEvent(eventName, [nodes], handler = () => { doSomething; });
|
|
4
5
|
* @param eventName The type of event to trigger the handler function on. Reference [DocumentEventMap](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.documenteventmap.html) for a list of valid events.
|
|
@@ -30,10 +31,15 @@ const useOuterEvent = (eventName, nodes, handler) => {
|
|
|
30
31
|
}
|
|
31
32
|
parentIdx += 1;
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
const normalizedNodes = normalizeTargets(nodes).flatMap(node => {
|
|
35
|
+
if (!(node instanceof Element) &&
|
|
36
|
+
!(node instanceof Document) &&
|
|
37
|
+
!(node instanceof DocumentFragment)) {
|
|
38
|
+
return [node];
|
|
39
|
+
}
|
|
40
|
+
return [node, ...getAllPopovers(node)];
|
|
41
|
+
});
|
|
42
|
+
if (normalizedNodes.every(node => {
|
|
37
43
|
return node !== target && !node.contains(target);
|
|
38
44
|
})) {
|
|
39
45
|
handler(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOuterEvent.js","sourceRoot":"","sources":["../../src/hooks/useOuterEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAa,MAAM,OAAO,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CACpB,SAAkC,EAClC,KAA+C,EAC/C,OAAqD,EAC/C,EAAE;IACR,MAAM,OAAO,GAAmB,WAAW,CACzC,KAAK,CAAC,EAAE;QACN,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC;YAAE,OAAO;QAEtC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;gBAAE,OAAO;YAE9B,IAAI,MAAM,YAAY,gBAAgB,IAAI,MAAM,YAAY,QAAQ,EAAE;gBACpE,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAEhE,QAAQ,GAAG,SAAS,CAAC;aACtB;iBAAM,IAAI,KAAK,YAAY,gBAAgB,EAAE;gBAC5C,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK;oBAAE,OAAO;gBAExE,QAAQ,GAAG,SAAS,CAAC;aACtB;YAED,SAAS,IAAI,CAAC,CAAC;SAChB;QAED,
|
|
1
|
+
{"version":3,"file":"useOuterEvent.js","sourceRoot":"","sources":["../../src/hooks/useOuterEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAa,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5D;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CACpB,SAAkC,EAClC,KAA+C,EAC/C,OAAqD,EAC/C,EAAE;IACR,MAAM,OAAO,GAAmB,WAAW,CACzC,KAAK,CAAC,EAAE;QACN,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,CAAC,MAAM,YAAY,IAAI,CAAC;YAAE,OAAO;QAEtC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;gBAAE,OAAO;YAE9B,IAAI,MAAM,YAAY,gBAAgB,IAAI,MAAM,YAAY,QAAQ,EAAE;gBACpE,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAEhE,QAAQ,GAAG,SAAS,CAAC;aACtB;iBAAM,IAAI,KAAK,YAAY,gBAAgB,EAAE;gBAC5C,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK;oBAAE,OAAO;gBAExE,QAAQ,GAAG,SAAS,CAAC;aACtB;YAED,SAAS,IAAI,CAAC,CAAC;SAChB;QAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7D,IACE,CAAC,CAAC,IAAI,YAAY,OAAO,CAAC;gBAC1B,CAAC,CAAC,IAAI,YAAY,QAAQ,CAAC;gBAC3B,CAAC,CAAC,IAAI,YAAY,gBAAgB,CAAC,EACnC;gBACA,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;YAED,OAAO,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IACE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,EACF;YACA,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB;IACH,CAAC,EACD,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CACpB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEtE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { useEffect, useCallback, RefObject } from 'react';\n\nimport { getAllPopovers, normalizeTargets } from '../utils';\n/**\n * @example useOuterEvent(eventName, [nodes], handler = () => { doSomething; });\n * @param eventName The type of event to trigger the handler function on. Reference [DocumentEventMap](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.documenteventmap.html) for a list of valid events.\n * @param nodes An array of Nodes or Refs to Nodes to attach the eventName to.\n * @param handler The function that is called when the given event occurs.\n */\nconst useOuterEvent = <EventName extends keyof DocumentEventMap>(\n eventName: EventName | EventName[],\n nodes: (Node | null | RefObject<Node | null>)[],\n handler: (event: DocumentEventMap[EventName]) => void\n): void => {\n const onEvent: typeof handler = useCallback(\n event => {\n const path = event.composedPath();\n const target = path[0];\n\n if (!(target instanceof Node)) return;\n\n let childIdx = 0;\n let parentIdx = 1;\n while (path[childIdx] !== document) {\n const child = path[childIdx];\n const parent = path[parentIdx];\n\n if (!child || !parent) return;\n\n if (parent instanceof DocumentFragment || parent instanceof Document) {\n if (!(child instanceof Node) || !parent.contains(child)) return;\n\n childIdx = parentIdx;\n } else if (child instanceof DocumentFragment) {\n if (!(parent instanceof Element) || parent.shadowRoot !== child) return;\n\n childIdx = parentIdx;\n }\n\n parentIdx += 1;\n }\n\n const normalizedNodes = normalizeTargets(nodes).flatMap(node => {\n if (\n !(node instanceof Element) &&\n !(node instanceof Document) &&\n !(node instanceof DocumentFragment)\n ) {\n return [node];\n }\n\n return [node, ...getAllPopovers(node)];\n });\n\n if (\n normalizedNodes.every(node => {\n return node !== target && !node.contains(target);\n })\n ) {\n handler(event);\n }\n },\n [...nodes, handler]\n );\n\n useEffect(() => {\n const eventNames = Array.isArray(eventName) ? eventName : [eventName];\n\n eventNames.forEach(event => document.addEventListener(event, onEvent));\n return () => eventNames.forEach(event => document.removeEventListener(event, onEvent));\n }, [eventName, onEvent]);\n};\n\nexport default useOuterEvent;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllPopovers.d.ts","sourceRoot":"","sources":["../../src/utils/getAllPopovers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,+BAAsC,CAAC;AAE9D,QAAA,MAAM,cAAc,WAAY,UAAU,KAAG,OAAO,EAsBnD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const popoverMap = new WeakMap();
|
|
2
|
+
const getAllPopovers = (parent) => {
|
|
3
|
+
const rootNode = parent.getRootNode();
|
|
4
|
+
if (!(rootNode instanceof Document) && !(rootNode instanceof DocumentFragment))
|
|
5
|
+
return [];
|
|
6
|
+
const popoverTargets = [...parent.querySelectorAll('[data-popover-target]')];
|
|
7
|
+
return popoverTargets.flatMap(el => {
|
|
8
|
+
// False positive because popoverMap is exported.
|
|
9
|
+
// eslint-disable-next-line sonarjs/no-empty-collection
|
|
10
|
+
if (!popoverMap.has(el))
|
|
11
|
+
return [];
|
|
12
|
+
// eslint-disable-next-line sonarjs/no-empty-collection
|
|
13
|
+
const pointerIds = popoverMap.get(el);
|
|
14
|
+
const popovers = [...pointerIds].map(id => rootNode.querySelector(`[data-popover-id="${id.replace(/"/g, '\\"')}"]`));
|
|
15
|
+
return popovers.flatMap(popover => (popover ? [popover, ...getAllPopovers(popover)] : []));
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
export default getAllPopovers;
|
|
19
|
+
//# sourceMappingURL=getAllPopovers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllPopovers.js","sourceRoot":"","sources":["../../src/utils/getAllPopovers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,EAAwB,CAAC;AAE9D,MAAM,cAAc,GAAG,CAAC,MAAkB,EAAa,EAAE;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEtC,IAAI,CAAC,CAAC,QAAQ,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,YAAY,gBAAgB,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1F,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE7E,OAAO,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACjC,iDAAiD;QAEjD,uDAAuD;QACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,uDAAuD;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QAEvC,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACxC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CACzE,CAAC;QAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["export const popoverMap = new WeakMap<Element, Set<string>>();\n\nconst getAllPopovers = (parent: ParentNode): Element[] => {\n const rootNode = parent.getRootNode();\n\n if (!(rootNode instanceof Document) && !(rootNode instanceof DocumentFragment)) return [];\n\n const popoverTargets = [...parent.querySelectorAll('[data-popover-target]')];\n\n return popoverTargets.flatMap(el => {\n // False positive because popoverMap is exported.\n\n // eslint-disable-next-line sonarjs/no-empty-collection\n if (!popoverMap.has(el)) return [];\n\n // eslint-disable-next-line sonarjs/no-empty-collection\n const pointerIds = popoverMap.get(el)!;\n\n const popovers = [...pointerIds].map(id =>\n rootNode.querySelector(`[data-popover-id=\"${id.replace(/\"/g, '\\\\\"')}\"]`)\n );\n\n return popovers.flatMap(popover => (popover ? [popover, ...getAllPopovers(popover)] : []));\n });\n};\n\nexport default getAllPopovers;\n"]}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export { default as escapeRegExp } from './escapeRegExp';
|
|
|
12
12
|
export { default as focusHeadingOrContainer } from './focusHeadingOrContainer';
|
|
13
13
|
export { default as formatListToLocaleString } from './formatListToLocaleString';
|
|
14
14
|
export { default as getActiveElement } from './getActiveElement';
|
|
15
|
+
export { default as getAllPopovers, popoverMap } from './getAllPopovers';
|
|
15
16
|
export { default as getEdge } from './getEdge';
|
|
16
17
|
export { default as getFocusables } from './getFocusables';
|
|
17
18
|
export { default as getRelativeOffset } from './getRelativeOffset';
|
|
@@ -20,7 +21,7 @@ export { default as hasProp } from './hasProp';
|
|
|
20
21
|
export { default as kebabToCamel } from './kebabToCamel';
|
|
21
22
|
export { default as loadScript } from './loadScript';
|
|
22
23
|
export { default as navigatorIsAvailable } from './navigatorIsAvailable';
|
|
23
|
-
export { default as
|
|
24
|
+
export { default as normalizeTargets } from './normalizeTargets';
|
|
24
25
|
export { default as range } from './range';
|
|
25
26
|
export { default as reflow } from './reflow';
|
|
26
27
|
export { default as replaceMatchWithElement } from './replaceMatchWithElement';
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { default as escapeRegExp } from './escapeRegExp';
|
|
|
12
12
|
export { default as focusHeadingOrContainer } from './focusHeadingOrContainer';
|
|
13
13
|
export { default as formatListToLocaleString } from './formatListToLocaleString';
|
|
14
14
|
export { default as getActiveElement } from './getActiveElement';
|
|
15
|
+
export { default as getAllPopovers, popoverMap } from './getAllPopovers';
|
|
15
16
|
export { default as getEdge } from './getEdge';
|
|
16
17
|
export { default as getFocusables } from './getFocusables';
|
|
17
18
|
export { default as getRelativeOffset } from './getRelativeOffset';
|
|
@@ -20,7 +21,7 @@ export { default as hasProp } from './hasProp';
|
|
|
20
21
|
export { default as kebabToCamel } from './kebabToCamel';
|
|
21
22
|
export { default as loadScript } from './loadScript';
|
|
22
23
|
export { default as navigatorIsAvailable } from './navigatorIsAvailable';
|
|
23
|
-
export { default as
|
|
24
|
+
export { default as normalizeTargets } from './normalizeTargets';
|
|
24
25
|
export { default as range } from './range';
|
|
25
26
|
export { default as reflow } from './reflow';
|
|
26
27
|
export { default as replaceMatchWithElement } from './replaceMatchWithElement';
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC","sourcesContent":["export { default as bindAll } from './bindAll';\nexport { default as cap } from './cap';\nexport { default as createStringMatcher } from './createStringMatcher';\nexport { default as createTestIds } from './createTestIds';\nexport { default as createUID } from './createUID';\nexport { default as debounce } from './debounce';\nexport { default as deepGet } from './deepGet';\nexport { default as deepObjectComparison } from './deepObjectComparison';\nexport { default as defineSmartGetter } from './defineSmartGetter';\nexport { default as documentIsAvailable } from './documentIsAvailable';\nexport { default as escapeRegExp } from './escapeRegExp';\nexport { default as focusHeadingOrContainer } from './focusHeadingOrContainer';\nexport { default as formatListToLocaleString } from './formatListToLocaleString';\nexport { default as getActiveElement } from './getActiveElement';\nexport { default as getAllPopovers, popoverMap } from './getAllPopovers';\nexport { default as getEdge } from './getEdge';\nexport { default as getFocusables } from './getFocusables';\nexport { default as getRelativeOffset } from './getRelativeOffset';\nexport { default as getScrollbarWidth } from './getScrollbarWidth';\nexport { default as hasProp } from './hasProp';\nexport { default as kebabToCamel } from './kebabToCamel';\nexport { default as loadScript } from './loadScript';\nexport { default as navigatorIsAvailable } from './navigatorIsAvailable';\nexport { default as normalizeTargets } from './normalizeTargets';\nexport { default as range } from './range';\nexport { default as reflow } from './reflow';\nexport { default as replaceMatchWithElement } from './replaceMatchWithElement';\nexport { default as sameOrigin } from './sameOrigin';\nexport { default as testElForOverflow } from './testElForOverflow';\nexport { default as throttle } from './throttle';\nexport { default as triple } from './triple';\nexport { default as tryCatch } from './tryCatch';\nexport { default as windowIsAvailable } from './windowIsAvailable';\nexport { default as withTestIds } from './withTestIds';\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Returns normalized list of targets, ie. it de-reference the element from the RefObject if needed.
|
|
4
|
+
* @param targets a list of targets or refs to normalize.
|
|
5
|
+
* @returns a new list of the same length with the de-referenced targets.
|
|
6
|
+
*/
|
|
7
|
+
declare const normalizeTargets: <T extends EventTarget = EventTarget>(targets: (T | RefObject<T | null> | null)[]) => T[];
|
|
8
|
+
export default normalizeTargets;
|
|
9
|
+
//# sourceMappingURL=normalizeTargets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeTargets.d.ts","sourceRoot":"","sources":["../../src/utils/normalizeTargets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,QAAA,MAAM,gBAAgB,2FAWrB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns normalized list of targets, ie. it de-reference the element from the RefObject if needed.
|
|
3
|
+
* @param targets a list of targets or refs to normalize.
|
|
4
|
+
* @returns a new list of the same length with the de-referenced targets.
|
|
5
|
+
*/
|
|
6
|
+
const normalizeTargets = (targets) => {
|
|
7
|
+
return targets.flatMap((t) => {
|
|
8
|
+
if (!t)
|
|
9
|
+
return [];
|
|
10
|
+
const target = t instanceof EventTarget ? t : t.current;
|
|
11
|
+
if (!target)
|
|
12
|
+
return [];
|
|
13
|
+
return [target];
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
export default normalizeTargets;
|
|
17
|
+
//# sourceMappingURL=normalizeTargets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeTargets.js","sourceRoot":"","sources":["../../src/utils/normalizeTargets.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CACvB,OAA2C,EACtC,EAAE;IACP,OAAO,OAAO,CAAC,OAAO,CAAI,CAAC,CAAiC,EAAE,EAAE;QAC9D,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAElB,MAAM,MAAM,GAAG,CAAC,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC","sourcesContent":["import type { RefObject } from 'react';\n\n/**\n * Returns normalized list of targets, ie. it de-reference the element from the RefObject if needed.\n * @param targets a list of targets or refs to normalize.\n * @returns a new list of the same length with the de-referenced targets.\n */\nconst normalizeTargets = <T extends EventTarget = EventTarget>(\n targets: (T | null | RefObject<T | null>)[]\n): T[] => {\n return targets.flatMap<T>((t: T | null | RefObject<T | null>) => {\n if (!t) return [];\n\n const target = t instanceof EventTarget ? t : t.current;\n if (!target) return [];\n\n return [target];\n });\n};\n\nexport default normalizeTargets;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/cosmos-react-core",
|
|
3
|
-
"version": "4.0.0-dev.
|
|
3
|
+
"version": "4.0.0-dev.25.0",
|
|
4
4
|
"description": "Cosmos is a visual design system and UI component collection. Its goal is to empower application developers in their pursuit to create engaging and rewarding user experiences.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { RefObject } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* Returns normalized list of elements, ie. it de-reference the element from the RefObject if needed.
|
|
4
|
-
* @param els a list of elements or refs to normalize.
|
|
5
|
-
* @returns a new list of the same length with the de-referenced elements.
|
|
6
|
-
*/
|
|
7
|
-
declare const normalizeElements: <T extends EventTarget = EventTarget>(els: (T | RefObject<T | null> | null)[]) => (T | null)[];
|
|
8
|
-
export default normalizeElements;
|
|
9
|
-
//# sourceMappingURL=normalizeElements.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeElements.d.ts","sourceRoot":"","sources":["../../src/utils/normalizeElements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,gGAOtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns normalized list of elements, ie. it de-reference the element from the RefObject if needed.
|
|
3
|
-
* @param els a list of elements or refs to normalize.
|
|
4
|
-
* @returns a new list of the same length with the de-referenced elements.
|
|
5
|
-
*/
|
|
6
|
-
const normalizeElements = (els) => {
|
|
7
|
-
return els.map((el) => {
|
|
8
|
-
if (!el)
|
|
9
|
-
return null;
|
|
10
|
-
return el instanceof EventTarget ? el : el.current;
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
export default normalizeElements;
|
|
14
|
-
//# sourceMappingURL=normalizeElements.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeElements.js","sourceRoot":"","sources":["../../src/utils/normalizeElements.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,CACxB,GAAuC,EACzB,EAAE;IAChB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAkC,EAAE,EAAE;QACpD,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACrB,OAAO,EAAE,YAAY,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["import type { RefObject } from 'react';\n\n/**\n * Returns normalized list of elements, ie. it de-reference the element from the RefObject if needed.\n * @param els a list of elements or refs to normalize.\n * @returns a new list of the same length with the de-referenced elements.\n */\nconst normalizeElements = <T extends EventTarget = EventTarget>(\n els: (T | null | RefObject<T | null>)[]\n): (T | null)[] => {\n return els.map((el: T | null | RefObject<T | null>) => {\n if (!el) return null;\n return el instanceof EventTarget ? el : el.current;\n });\n};\n\nexport default normalizeElements;\n"]}
|