@cloudscape-design/components 3.0.360 → 3.0.361
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/app-layout/index.d.ts.map +1 -1
- package/app-layout/index.js +4 -5
- package/app-layout/index.js.map +1 -1
- package/app-layout/utils/use-content-width.js +1 -1
- package/app-layout/utils/use-content-width.js.map +1 -1
- package/app-layout/utils/use-observed-element.js +1 -1
- package/app-layout/utils/use-observed-element.js.map +1 -1
- package/area-chart/model/use-chart-model.d.ts.map +1 -1
- package/area-chart/model/use-chart-model.js +2 -2
- package/area-chart/model/use-chart-model.js.map +1 -1
- package/code-editor/listeners.js +2 -2
- package/code-editor/listeners.js.map +1 -1
- package/code-editor/resizable-box/index.js +2 -2
- package/code-editor/resizable-box/index.js.map +1 -1
- package/internal/components/dark-ribbon/index.js +2 -2
- package/internal/components/dark-ribbon/index.js.map +1 -1
- package/internal/components/options-list/index.d.ts.map +1 -1
- package/internal/components/options-list/index.js +2 -2
- package/internal/components/options-list/index.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/hooks/container-queries/index.d.ts +0 -1
- package/internal/hooks/container-queries/index.d.ts.map +1 -1
- package/internal/hooks/container-queries/index.js +0 -1
- package/internal/hooks/container-queries/index.js.map +1 -1
- package/internal/hooks/container-queries/use-height-measure.js +1 -1
- package/internal/hooks/container-queries/use-height-measure.js.map +1 -1
- package/internal/hooks/use-dynamic-overlap/index.js +1 -1
- package/internal/hooks/use-dynamic-overlap/index.js.map +1 -1
- package/internal/hooks/use-mobile/index.js +1 -1
- package/internal/hooks/use-mobile/index.js.map +1 -1
- package/internal/hooks/use-mouse-down-target.js +1 -1
- package/internal/hooks/use-mouse-down-target.js.map +1 -1
- package/internal/hooks/use-mutation-observer/index.d.ts.map +1 -1
- package/internal/hooks/use-mutation-observer/index.js +2 -3
- package/internal/hooks/use-mutation-observer/index.js.map +1 -1
- package/internal/manifest.json +1 -1
- package/package.json +1 -1
- package/pie-chart/labels.js +1 -1
- package/pie-chart/labels.js.map +1 -1
- package/popover/container.d.ts.map +1 -1
- package/popover/container.js +1 -1
- package/popover/container.js.map +1 -1
- package/s3-resource-selector/s3-in-context/use-versions-fetch.d.ts.map +1 -1
- package/s3-resource-selector/s3-in-context/use-versions-fetch.js +2 -2
- package/s3-resource-selector/s3-in-context/use-versions-fetch.js.map +1 -1
- package/s3-resource-selector/s3-modal/basic-table.d.ts.map +1 -1
- package/s3-resource-selector/s3-modal/basic-table.js +2 -2
- package/s3-resource-selector/s3-modal/basic-table.js.map +1 -1
- package/split-panel/bottom.js +1 -1
- package/split-panel/bottom.js.map +1 -1
- package/table/body-cell/click-away.js +2 -2
- package/table/body-cell/click-away.js.map +1 -1
- package/table/resizer/index.js +3 -3
- package/table/resizer/index.js.map +1 -1
- package/table/sticky-columns/use-sticky-columns.d.ts.map +1 -1
- package/table/sticky-columns/use-sticky-columns.js +2 -3
- package/table/sticky-columns/use-sticky-columns.js.map +1 -1
- package/table/use-sticky-header.js +1 -1
- package/table/use-sticky-header.js.map +1 -1
- package/tag-editor/index.d.ts.map +1 -1
- package/tag-editor/index.js +6 -6
- package/tag-editor/index.js.map +1 -1
- package/internal/hooks/container-queries/use-resize-observer.d.ts +0 -21
- package/internal/hooks/container-queries/use-resize-observer.d.ts.map +0 -1
- package/internal/hooks/container-queries/use-resize-observer.js +0 -54
- package/internal/hooks/container-queries/use-resize-observer.js.map +0 -1
- package/internal/hooks/container-queries/utils.d.ts +0 -4
- package/internal/hooks/container-queries/utils.d.ts.map +0 -1
- package/internal/hooks/container-queries/utils.js +0 -10
- package/internal/hooks/container-queries/utils.js.map +0 -1
- package/internal/hooks/use-singleton-handler/index.d.ts +0 -11
- package/internal/hooks/use-singleton-handler/index.d.ts.map +0 -1
- package/internal/hooks/use-singleton-handler/index.js +0 -45
- package/internal/hooks/use-singleton-handler/index.js.map +0 -1
- package/internal/hooks/use-stable-event-handler/index.d.ts +0 -10
- package/internal/hooks/use-stable-event-handler/index.d.ts.map +0 -1
- package/internal/hooks/use-stable-event-handler/index.js +0 -19
- package/internal/hooks/use-stable-event-handler/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-resize-observer.d.ts","sourceRoot":"lib/default/","sources":["internal/hooks/container-queries/use-resize-observer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,KAAK,gBAAgB,GAAG,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,QAmC9G"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { ResizeObserver, ResizeObserverEntry } from '@juggle/resize-observer';
|
|
4
|
-
import { useEffect, useLayoutEffect } from 'react';
|
|
5
|
-
import { useStableEventHandler } from '../use-stable-event-handler';
|
|
6
|
-
import { convertResizeObserverEntry } from './utils';
|
|
7
|
-
/**
|
|
8
|
-
* Attaches resize-observer to the referenced element.
|
|
9
|
-
*
|
|
10
|
-
* Examples:
|
|
11
|
-
* // With React reference
|
|
12
|
-
* const ref = useRef(null)
|
|
13
|
-
* useResizeObserver(ref, (entry) => setState(getWidth(entry)))
|
|
14
|
-
*
|
|
15
|
-
* // With ID reference
|
|
16
|
-
* const getElement = useCallback(() => document.getElementById(id), [id])
|
|
17
|
-
* useResizeObserver(getElement, (entry) => setState(getWidth(entry)))
|
|
18
|
-
*
|
|
19
|
-
* @param elementRef React reference or memoized getter for the target element
|
|
20
|
-
* @param onObserve Function to fire when observation occurs
|
|
21
|
-
*/
|
|
22
|
-
export function useResizeObserver(elementRef, onObserve) {
|
|
23
|
-
const stableOnObserve = useStableEventHandler(onObserve);
|
|
24
|
-
// This effect provides a synchronous update required to prevent flakiness when initial state and first observed state are different.
|
|
25
|
-
// Can potentially conflict with React concurrent mode: https://17.reactjs.org/docs/concurrent-mode-intro.html.
|
|
26
|
-
// A possible solution would be to make consumers not render any content until the first (asynchronous) observation is available.
|
|
27
|
-
useLayoutEffect(() => {
|
|
28
|
-
const element = typeof elementRef === 'function' ? elementRef() : elementRef === null || elementRef === void 0 ? void 0 : elementRef.current;
|
|
29
|
-
if (element) {
|
|
30
|
-
onObserve(convertResizeObserverEntry(new ResizeObserverEntry(element)));
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
// This effect is only needed for the first render to provide a synchronous update.
|
|
34
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35
|
-
[]);
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
const element = typeof elementRef === 'function' ? elementRef() : elementRef === null || elementRef === void 0 ? void 0 : elementRef.current;
|
|
38
|
-
if (element) {
|
|
39
|
-
let connected = true;
|
|
40
|
-
const observer = new ResizeObserver(entries => {
|
|
41
|
-
// Prevent observe notifications on already unmounted component.
|
|
42
|
-
if (connected) {
|
|
43
|
-
stableOnObserve(convertResizeObserverEntry(entries[0]));
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
observer.observe(element);
|
|
47
|
-
return () => {
|
|
48
|
-
connected = false;
|
|
49
|
-
observer.disconnect();
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
}, [elementRef, stableOnObserve]);
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=use-resize-observer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-resize-observer.js","sourceRoot":"lib/default/","sources":["internal/hooks/container-queries/use-resize-observer.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAIrD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA4B,EAAE,SAA+C;IAC7G,MAAM,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAEzD,qIAAqI;IACrI,+GAA+G;IAC/G,iIAAiI;IACjI,eAAe,CACb,GAAG,EAAE;QACH,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC;QACtF,IAAI,OAAO,EAAE;YACX,SAAS,CAAC,0BAA0B,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACzE;IACH,CAAC;IACD,mFAAmF;IACnF,uDAAuD;IACvD,EAAE,CACH,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC;QACtF,IAAI,OAAO,EAAE;YACX,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;gBAC5C,gEAAgE;gBAChE,IAAI,SAAS,EAAE;oBACb,eAAe,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzD;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1B,OAAO,GAAG,EAAE;gBACV,SAAS,GAAG,KAAK,CAAC;gBAClB,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;AACpC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ResizeObserver, ResizeObserverEntry } from '@juggle/resize-observer';\nimport React, { useEffect, useLayoutEffect } from 'react';\nimport { useStableEventHandler } from '../use-stable-event-handler';\nimport { ContainerQueryEntry } from '@cloudscape-design/component-toolkit';\nimport { convertResizeObserverEntry } from './utils';\n\ntype ElementReference = (() => Element | null) | React.RefObject<Element>;\n\n/**\n * Attaches resize-observer to the referenced element.\n *\n * Examples:\n * // With React reference\n * const ref = useRef(null)\n * useResizeObserver(ref, (entry) => setState(getWidth(entry)))\n *\n * // With ID reference\n * const getElement = useCallback(() => document.getElementById(id), [id])\n * useResizeObserver(getElement, (entry) => setState(getWidth(entry)))\n *\n * @param elementRef React reference or memoized getter for the target element\n * @param onObserve Function to fire when observation occurs\n */\nexport function useResizeObserver(elementRef: ElementReference, onObserve: (entry: ContainerQueryEntry) => void) {\n const stableOnObserve = useStableEventHandler(onObserve);\n\n // This effect provides a synchronous update required to prevent flakiness when initial state and first observed state are different.\n // Can potentially conflict with React concurrent mode: https://17.reactjs.org/docs/concurrent-mode-intro.html.\n // A possible solution would be to make consumers not render any content until the first (asynchronous) observation is available.\n useLayoutEffect(\n () => {\n const element = typeof elementRef === 'function' ? elementRef() : elementRef?.current;\n if (element) {\n onObserve(convertResizeObserverEntry(new ResizeObserverEntry(element)));\n }\n },\n // This effect is only needed for the first render to provide a synchronous update.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n useEffect(() => {\n const element = typeof elementRef === 'function' ? elementRef() : elementRef?.current;\n if (element) {\n let connected = true;\n const observer = new ResizeObserver(entries => {\n // Prevent observe notifications on already unmounted component.\n if (connected) {\n stableOnObserve(convertResizeObserverEntry(entries[0]));\n }\n });\n observer.observe(element);\n return () => {\n connected = false;\n observer.disconnect();\n };\n }\n }, [elementRef, stableOnObserve]);\n}\n"]}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ResizeObserverEntry } from '@juggle/resize-observer';
|
|
2
|
-
import { ContainerQueryEntry } from '@cloudscape-design/component-toolkit';
|
|
3
|
-
export declare function convertResizeObserverEntry(entry: ResizeObserverEntry): ContainerQueryEntry;
|
|
4
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"lib/default/","sources":["internal/hooks/container-queries/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAQ1F"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function convertResizeObserverEntry(entry) {
|
|
2
|
-
return {
|
|
3
|
-
target: entry.target,
|
|
4
|
-
contentBoxWidth: entry.contentBoxSize[0].inlineSize,
|
|
5
|
-
contentBoxHeight: entry.contentBoxSize[0].blockSize,
|
|
6
|
-
borderBoxWidth: entry.borderBoxSize[0].inlineSize,
|
|
7
|
-
borderBoxHeight: entry.borderBoxSize[0].blockSize,
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"lib/default/","sources":["internal/hooks/container-queries/utils.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,0BAA0B,CAAC,KAA0B;IACnE,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,eAAe,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU;QACnD,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;QACnD,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU;QACjD,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;KAClD,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ResizeObserverEntry } from '@juggle/resize-observer';\nimport { ContainerQueryEntry } from '@cloudscape-design/component-toolkit';\n\nexport function convertResizeObserverEntry(entry: ResizeObserverEntry): ContainerQueryEntry {\n return {\n target: entry.target,\n contentBoxWidth: entry.contentBoxSize[0].inlineSize,\n contentBoxHeight: entry.contentBoxSize[0].blockSize,\n borderBoxWidth: entry.borderBoxSize[0].inlineSize,\n borderBoxHeight: entry.borderBoxSize[0].blockSize,\n };\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type ValueCallback<T> = (value: T) => void;
|
|
2
|
-
type CleanupCallback = () => void;
|
|
3
|
-
export type UseSingleton<T> = (listener: ValueCallback<T>) => void;
|
|
4
|
-
export declare function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback): UseSingleton<T>;
|
|
5
|
-
interface SingletonStateOptions<T> {
|
|
6
|
-
factory: (handler: ValueCallback<T>) => CleanupCallback;
|
|
7
|
-
initialState: T | (() => T);
|
|
8
|
-
}
|
|
9
|
-
export declare function createSingletonState<T>({ factory, initialState }: SingletonStateOptions<T>): () => T;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["internal/hooks/use-singleton-handler/index.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3C,KAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAClC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEnE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CA6BlH;AAED,UAAU,qBAAqB,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;IACxD,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,WAW1F"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { useEffect, useState } from 'react';
|
|
4
|
-
import { unstable_batchedUpdates } from 'react-dom';
|
|
5
|
-
export function createSingletonHandler(factory) {
|
|
6
|
-
const listeners = [];
|
|
7
|
-
const callback = value => {
|
|
8
|
-
unstable_batchedUpdates(() => {
|
|
9
|
-
for (const listener of listeners) {
|
|
10
|
-
listener(value);
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
let cleanup;
|
|
15
|
-
return function useSingleton(listener) {
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
if (listeners.length === 0) {
|
|
18
|
-
cleanup = factory(callback);
|
|
19
|
-
}
|
|
20
|
-
listeners.push(listener);
|
|
21
|
-
return () => {
|
|
22
|
-
listeners.splice(listeners.indexOf(listener), 1);
|
|
23
|
-
if (listeners.length === 0) {
|
|
24
|
-
cleanup();
|
|
25
|
-
cleanup = undefined;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
// register handlers only on mount
|
|
29
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
-
}, []);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
export function createSingletonState({ factory, initialState }) {
|
|
34
|
-
const useSingleton = createSingletonHandler(factory);
|
|
35
|
-
let value = initialState;
|
|
36
|
-
return function useSingletonState() {
|
|
37
|
-
const [state, setState] = useState(value);
|
|
38
|
-
useSingleton(newValue => {
|
|
39
|
-
value = newValue;
|
|
40
|
-
setState(newValue);
|
|
41
|
-
});
|
|
42
|
-
return state;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"lib/default/","sources":["internal/hooks/use-singleton-handler/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAMpD,MAAM,UAAU,sBAAsB,CAAI,OAAuD;IAC/F,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAqB,KAAK,CAAC,EAAE;QACzC,uBAAuB,CAAC,GAAG,EAAE;YAC3B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAI,OAAiC,CAAC;IAEtC,OAAO,SAAS,YAAY,CAAC,QAA0B;QACrD,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;aAC7B;YACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,OAAQ,EAAE,CAAC;oBACX,OAAO,GAAG,SAAS,CAAC;iBACrB;YACH,CAAC,CAAC;YACF,kCAAkC;YAClC,uDAAuD;QACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAI,EAAE,OAAO,EAAE,YAAY,EAA4B;IACzF,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,OAAO,SAAS,iBAAiB;QAC/B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,KAAK,CAAC,CAAC;QAC7C,YAAY,CAAC,QAAQ,CAAC,EAAE;YACtB,KAAK,GAAG,QAAQ,CAAC;YACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useState } from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\n\ntype ValueCallback<T> = (value: T) => void;\ntype CleanupCallback = () => void;\nexport type UseSingleton<T> = (listener: ValueCallback<T>) => void;\n\nexport function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback): UseSingleton<T> {\n const listeners: Array<ValueCallback<T>> = [];\n const callback: ValueCallback<T> = value => {\n unstable_batchedUpdates(() => {\n for (const listener of listeners) {\n listener(value);\n }\n });\n };\n let cleanup: (() => void) | undefined;\n\n return function useSingleton(listener: ValueCallback<T>) {\n useEffect(() => {\n if (listeners.length === 0) {\n cleanup = factory(callback);\n }\n listeners.push(listener);\n\n return () => {\n listeners.splice(listeners.indexOf(listener), 1);\n if (listeners.length === 0) {\n cleanup!();\n cleanup = undefined;\n }\n };\n // register handlers only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n };\n}\n\ninterface SingletonStateOptions<T> {\n factory: (handler: ValueCallback<T>) => CleanupCallback;\n initialState: T | (() => T); // useState signature\n}\n\nexport function createSingletonState<T>({ factory, initialState }: SingletonStateOptions<T>) {\n const useSingleton = createSingletonHandler(factory);\n let value = initialState;\n return function useSingletonState() {\n const [state, setState] = useState<T>(value);\n useSingleton(newValue => {\n value = newValue;\n setState(newValue);\n });\n return state;\n };\n}\n"]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A callback that stays stable between renders even as the dependencies change.
|
|
3
|
-
* Not a recommended React pattern, so it should be used sparingly and only if
|
|
4
|
-
* the callback is an event handler (i.e. not used during rendering) and causing
|
|
5
|
-
* clear performance issues.
|
|
6
|
-
*
|
|
7
|
-
* @see https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback
|
|
8
|
-
*/
|
|
9
|
-
export declare function useStableEventHandler<T extends (...args: any[]) => any>(fn: T): T;
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["internal/hooks/use-stable-event-handler/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAQjF"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { useCallback, useEffect, useRef } from 'react';
|
|
4
|
-
/**
|
|
5
|
-
* A callback that stays stable between renders even as the dependencies change.
|
|
6
|
-
* Not a recommended React pattern, so it should be used sparingly and only if
|
|
7
|
-
* the callback is an event handler (i.e. not used during rendering) and causing
|
|
8
|
-
* clear performance issues.
|
|
9
|
-
*
|
|
10
|
-
* @see https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback
|
|
11
|
-
*/
|
|
12
|
-
export function useStableEventHandler(fn) {
|
|
13
|
-
const ref = useRef();
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
ref.current = fn;
|
|
16
|
-
});
|
|
17
|
-
return useCallback((...args) => { var _a; return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.apply(undefined, args); }, []);
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"lib/default/","sources":["internal/hooks/use-stable-event-handler/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAoC,EAAK;IAC5E,MAAM,GAAG,GAAG,MAAM,EAAK,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA,EAAA,EAAE,EAAE,CAAM,CAAC;AACvF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback, useEffect, useRef } from 'react';\n\n/**\n * A callback that stays stable between renders even as the dependencies change.\n * Not a recommended React pattern, so it should be used sparingly and only if\n * the callback is an event handler (i.e. not used during rendering) and causing\n * clear performance issues.\n *\n * @see https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n */\nexport function useStableEventHandler<T extends (...args: any[]) => any>(fn: T): T {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = fn;\n });\n\n return useCallback((...args: any[]) => ref.current?.apply(undefined, args), []) as T;\n}\n"]}
|