agent-ecosystem/patches/@radix-ui__react-popper@1.2.8.patch
2026-05-25 23:15:52 +03:00

88 lines
3.6 KiB
Diff

diff --git a/dist/index.js b/dist/index.js
index 5cb1fd007d32021ad950d961dd4a0868576a2c0d..795a24fe0e75aaa042cad0a376a776f3e1436269 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -61,6 +61,29 @@ var ALIGN_OPTIONS = ["start", "center", "end"];
var POPPER_NAME = "Popper";
var [createPopperContext, createPopperScope] = (0, import_react_context.createContextScope)(POPPER_NAME);
var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
+function useGuardedNodeSetter(setNode) {
+ const nodeRef = React.useRef(null);
+ const nodeCleanupGenerationRef = React.useRef(0);
+ return React.useCallback((node) => {
+ const syncNode = (nextNode) => {
+ if (nodeRef.current === nextNode) return;
+ nodeRef.current = nextNode;
+ setNode(nextNode);
+ };
+ nodeCleanupGenerationRef.current += 1;
+ const cleanupGeneration = nodeCleanupGenerationRef.current;
+ if (node) {
+ syncNode(node);
+ return;
+ }
+ queueMicrotask(() => {
+ if (nodeCleanupGenerationRef.current !== cleanupGeneration) {
+ return;
+ }
+ syncNode(null);
+ });
+ }, [setNode]);
+}
var Popper = (props) => {
const { __scopePopper, children } = props;
const [anchor, setAnchor] = React.useState(null);
@@ -108,7 +131,8 @@ var PopperContent = React.forwardRef(
} = props;
const context = usePopperContext(CONTENT_NAME, __scopePopper);
const [content, setContent] = React.useState(null);
- const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, (node) => setContent(node));
+ const setContentRef = useGuardedNodeSetter(setContent);
+ const composedRefs = (0, import_react_compose_refs.useComposedRefs)(forwardedRef, setContentRef);
const [arrow, setArrow] = React.useState(null);
const arrowSize = (0, import_react_use_size.useSize)(arrow);
const arrowWidth = arrowSize?.width ?? 0;
diff --git a/dist/index.mjs b/dist/index.mjs
index 9f84984eab84e32d20d6c052217da0e3b8374b40..0ffdb6313708ab3113c0ce40fe4519b6b605deff 100644
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -26,6 +26,29 @@ var ALIGN_OPTIONS = ["start", "center", "end"];
var POPPER_NAME = "Popper";
var [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);
var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
+function useGuardedNodeSetter(setNode) {
+ const nodeRef = React.useRef(null);
+ const nodeCleanupGenerationRef = React.useRef(0);
+ return React.useCallback((node) => {
+ const syncNode = (nextNode) => {
+ if (nodeRef.current === nextNode) return;
+ nodeRef.current = nextNode;
+ setNode(nextNode);
+ };
+ nodeCleanupGenerationRef.current += 1;
+ const cleanupGeneration = nodeCleanupGenerationRef.current;
+ if (node) {
+ syncNode(node);
+ return;
+ }
+ queueMicrotask(() => {
+ if (nodeCleanupGenerationRef.current !== cleanupGeneration) {
+ return;
+ }
+ syncNode(null);
+ });
+ }, [setNode]);
+}
var Popper = (props) => {
const { __scopePopper, children } = props;
const [anchor, setAnchor] = React.useState(null);
@@ -73,7 +96,8 @@ var PopperContent = React.forwardRef(
} = props;
const context = usePopperContext(CONTENT_NAME, __scopePopper);
const [content, setContent] = React.useState(null);
- const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));
+ const setContentRef = useGuardedNodeSetter(setContent);
+ const composedRefs = useComposedRefs(forwardedRef, setContentRef);
const [arrow, setArrow] = React.useState(null);
const arrowSize = useSize(arrow);
const arrowWidth = arrowSize?.width ?? 0;