@fluentui/react-positioning 9.15.2 → 9.15.4

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,31 @@
1
1
  # Change Log - @fluentui/react-positioning
2
2
 
3
- This log was last generated on Thu, 23 May 2024 07:57:57 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 01 Jul 2024 20:25:40 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.15.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-positioning_v9.15.4)
8
+
9
+ Mon, 01 Jul 2024 20:25:40 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-positioning_v9.15.3..@fluentui/react-positioning_v9.15.4)
11
+
12
+ ### Patches
13
+
14
+ - chore: add eslint react-compiler ([PR #31457](https://github.com/microsoft/fluentui/pull/31457) by seanmonahan@microsoft.com)
15
+ - Bump @fluentui/react-utilities to v9.18.11 ([PR #31861](https://github.com/microsoft/fluentui/pull/31861) by beachball)
16
+
17
+ ## [9.15.3](https://github.com/microsoft/fluentui/tree/@fluentui/react-positioning_v9.15.3)
18
+
19
+ Thu, 06 Jun 2024 15:26:38 GMT
20
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-positioning_v9.15.2..@fluentui/react-positioning_v9.15.3)
21
+
22
+ ### Patches
23
+
24
+ - Bump @fluentui/react-utilities to v9.18.10 ([PR #31586](https://github.com/microsoft/fluentui/pull/31586) by beachball)
25
+
7
26
  ## [9.15.2](https://github.com/microsoft/fluentui/tree/@fluentui/react-positioning_v9.15.2)
8
27
 
9
- Thu, 23 May 2024 07:57:57 GMT
28
+ Thu, 23 May 2024 08:02:46 GMT
10
29
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-positioning_v9.15.1..@fluentui/react-positioning_v9.15.2)
11
30
 
12
31
  ### Patches
@@ -11,6 +11,7 @@ import { POSITIONING_END_EVENT } from './constants';
11
11
  /**
12
12
  * @internal
13
13
  */ export function usePositioning(options) {
14
+ 'use no memo';
14
15
  const managerRef = React.useRef(null);
15
16
  const targetRef = React.useRef(null);
16
17
  const overrideTargetRef = React.useRef(null);
@@ -143,6 +144,7 @@ import { POSITIONING_END_EVENT } from './constants';
143
144
  };
144
145
  }
145
146
  function usePositioningOptions(options) {
147
+ 'use no memo';
146
148
  const { align, arrowPadding, autoSize: rawAutoSize, coverTarget, flipBoundary, offset, overflowBoundary, pinned, position, unstable_disableTether: disableTether, // eslint-disable-next-line deprecation/deprecation
147
149
  positionFixed, strategy, overflowBoundaryPadding, fallbackPositions, useTransform, matchTargetSize, disableUpdateOnResize = false } = options;
148
150
  const { dir, targetDocument } = useFluent();
@@ -1 +1 @@
1
- {"version":3,"sources":["usePositioning.ts"],"sourcesContent":["import { hide as hideMiddleware, arrow as arrowMiddleware } from '@floating-ui/dom';\nimport type { Middleware, Strategy } from '@floating-ui/dom';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { canUseDOM, useEventCallback, useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport type {\n PositioningOptions,\n PositioningProps,\n PositionManager,\n TargetElement,\n UsePositioningReturn,\n} from './types';\nimport { useCallbackRef, toFloatingUIPlacement, hasAutofocusFilter, hasScrollParent, normalizeAutoSize } from './utils';\nimport {\n shift as shiftMiddleware,\n flip as flipMiddleware,\n coverTarget as coverTargetMiddleware,\n maxSize as maxSizeMiddleware,\n resetMaxSize as resetMaxSizeMiddleware,\n offset as offsetMiddleware,\n intersecting as intersectingMiddleware,\n matchTargetSize as matchTargetSizeMiddleware,\n} from './middleware';\nimport { createPositionManager } from './createPositionManager';\nimport { devtools } from '@floating-ui/devtools';\nimport { devtoolsCallback } from './utils/devtools';\nimport { POSITIONING_END_EVENT } from './constants';\n\n/**\n * @internal\n */\nexport function usePositioning(options: PositioningProps & PositioningOptions): UsePositioningReturn {\n const managerRef = React.useRef<PositionManager | null>(null);\n const targetRef = React.useRef<TargetElement | null>(null);\n const overrideTargetRef = React.useRef<TargetElement | null>(null);\n const containerRef = React.useRef<HTMLElement | null>(null);\n const arrowRef = React.useRef<HTMLElement | null>(null);\n\n const { enabled = true } = options;\n const resolvePositioningOptions = usePositioningOptions(options);\n const updatePositionManager = React.useCallback(() => {\n if (managerRef.current) {\n managerRef.current.dispose();\n }\n managerRef.current = null;\n\n const target = overrideTargetRef.current ?? targetRef.current;\n\n if (enabled && canUseDOM() && target && containerRef.current) {\n managerRef.current = createPositionManager({\n container: containerRef.current,\n target,\n arrow: arrowRef.current,\n ...resolvePositioningOptions(containerRef.current, arrowRef.current),\n });\n }\n }, [enabled, resolvePositioningOptions]);\n\n const setOverrideTarget = useEventCallback((target: TargetElement | null) => {\n overrideTargetRef.current = target;\n updatePositionManager();\n });\n\n React.useImperativeHandle(\n options.positioningRef,\n () => ({\n updatePosition: () => managerRef.current?.updatePosition(),\n setTarget: (target: TargetElement | null) => {\n if (options.target && process.env.NODE_ENV !== 'production') {\n const err = new Error();\n // eslint-disable-next-line no-console\n console.warn('Imperative setTarget should not be used at the same time as target option');\n // eslint-disable-next-line no-console\n console.warn(err.stack);\n }\n\n setOverrideTarget(target);\n },\n }),\n [options.target, setOverrideTarget],\n );\n\n useIsomorphicLayoutEffect(() => {\n setOverrideTarget(options.target ?? null);\n }, [options.target, setOverrideTarget]);\n\n useIsomorphicLayoutEffect(() => {\n updatePositionManager();\n }, [updatePositionManager]);\n\n if (process.env.NODE_ENV !== 'production') {\n // This checked should run only in development mode\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (containerRef.current) {\n const contentNode = containerRef.current;\n const treeWalker = contentNode.ownerDocument?.createTreeWalker(contentNode, NodeFilter.SHOW_ELEMENT, {\n acceptNode: hasAutofocusFilter,\n });\n\n while (treeWalker.nextNode()) {\n const node = treeWalker.currentNode;\n // eslint-disable-next-line no-console\n console.warn('<Popper>:', node);\n // eslint-disable-next-line no-console\n console.warn(\n [\n '<Popper>: ^ this node contains \"autoFocus\" prop on a React element. This can break the initial',\n 'positioning of an element and cause a window jump effect. This issue occurs because React polyfills',\n '\"autoFocus\" behavior to solve inconsistencies between different browsers:',\n 'https://github.com/facebook/react/issues/11851#issuecomment-351787078',\n '\\n',\n 'However, \".focus()\" in this case occurs before any other React effects will be executed',\n '(React.useEffect(), componentDidMount(), etc.) and we can not prevent this behavior. If you really',\n 'want to use \"autoFocus\" please add \"position: fixed\" to styles of the element that is wrapped by',\n '\"Popper\".',\n `In general, it's not recommended to use \"autoFocus\" as it may break accessibility aspects:`,\n 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md',\n '\\n',\n 'We suggest to use the \"trapFocus\" prop on Fluent components or a catch \"ref\" and then use',\n '\"ref.current.focus\" in React.useEffect():',\n 'https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element',\n ].join(' '),\n );\n }\n }\n // We run this check once, no need to add deps here\n // TODO: Should be rework to handle options.enabled and contentRef updates\n }, []);\n }\n\n const setTarget = useCallbackRef<TargetElement>(null, target => {\n if (targetRef.current !== target) {\n targetRef.current = target;\n updatePositionManager();\n }\n });\n\n const onPositioningEnd = useEventCallback(() => options.onPositioningEnd?.());\n const setContainer = useCallbackRef<HTMLElement | null>(null, container => {\n if (containerRef.current !== container) {\n containerRef.current?.removeEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n container?.addEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n containerRef.current = container;\n updatePositionManager();\n }\n });\n\n const setArrow = useCallbackRef<HTMLElement | null>(null, arrow => {\n if (arrowRef.current !== arrow) {\n arrowRef.current = arrow;\n updatePositionManager();\n }\n });\n\n // Let users use callback refs so they feel like 'normal' DOM refs\n return { targetRef: setTarget, containerRef: setContainer, arrowRef: setArrow };\n}\n\nfunction usePositioningOptions(options: PositioningOptions) {\n const {\n align,\n arrowPadding,\n autoSize: rawAutoSize,\n coverTarget,\n flipBoundary,\n offset,\n overflowBoundary,\n pinned,\n position,\n unstable_disableTether: disableTether,\n // eslint-disable-next-line deprecation/deprecation\n positionFixed,\n strategy,\n overflowBoundaryPadding,\n fallbackPositions,\n useTransform,\n matchTargetSize,\n disableUpdateOnResize = false,\n } = options;\n\n const { dir, targetDocument } = useFluent();\n const isRtl = dir === 'rtl';\n const positionStrategy: Strategy = strategy ?? positionFixed ? 'fixed' : 'absolute';\n const autoSize = normalizeAutoSize(rawAutoSize);\n\n return React.useCallback(\n (container: HTMLElement | null, arrow: HTMLElement | null) => {\n const hasScrollableElement = hasScrollParent(container);\n\n const middleware = [\n autoSize && resetMaxSizeMiddleware(autoSize),\n matchTargetSize && matchTargetSizeMiddleware(),\n offset && offsetMiddleware(offset),\n coverTarget && coverTargetMiddleware(),\n !pinned && flipMiddleware({ container, flipBoundary, hasScrollableElement, isRtl, fallbackPositions }),\n shiftMiddleware({\n container,\n hasScrollableElement,\n overflowBoundary,\n disableTether,\n overflowBoundaryPadding,\n isRtl,\n }),\n autoSize && maxSizeMiddleware(autoSize, { container, overflowBoundary, overflowBoundaryPadding, isRtl }),\n intersectingMiddleware(),\n arrow && arrowMiddleware({ element: arrow, padding: arrowPadding }),\n hideMiddleware({ strategy: 'referenceHidden' }),\n hideMiddleware({ strategy: 'escaped' }),\n process.env.NODE_ENV !== 'production' && targetDocument && devtools(targetDocument, devtoolsCallback(options)),\n ].filter(Boolean) as Middleware[];\n\n const placement = toFloatingUIPlacement(align, position, isRtl);\n\n return {\n placement,\n middleware,\n strategy: positionStrategy,\n useTransform,\n disableUpdateOnResize,\n };\n },\n // Options is missing here, but it's not required\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n align,\n arrowPadding,\n autoSize,\n coverTarget,\n disableTether,\n flipBoundary,\n isRtl,\n offset,\n overflowBoundary,\n pinned,\n position,\n positionStrategy,\n overflowBoundaryPadding,\n fallbackPositions,\n useTransform,\n matchTargetSize,\n targetDocument,\n disableUpdateOnResize,\n ],\n );\n}\n"],"names":["hide","hideMiddleware","arrow","arrowMiddleware","useFluent_unstable","useFluent","canUseDOM","useEventCallback","useIsomorphicLayoutEffect","React","useCallbackRef","toFloatingUIPlacement","hasAutofocusFilter","hasScrollParent","normalizeAutoSize","shift","shiftMiddleware","flip","flipMiddleware","coverTarget","coverTargetMiddleware","maxSize","maxSizeMiddleware","resetMaxSize","resetMaxSizeMiddleware","offset","offsetMiddleware","intersecting","intersectingMiddleware","matchTargetSize","matchTargetSizeMiddleware","createPositionManager","devtools","devtoolsCallback","POSITIONING_END_EVENT","usePositioning","options","managerRef","useRef","targetRef","overrideTargetRef","containerRef","arrowRef","enabled","resolvePositioningOptions","usePositioningOptions","updatePositionManager","useCallback","current","dispose","target","container","setOverrideTarget","useImperativeHandle","positioningRef","updatePosition","setTarget","process","env","NODE_ENV","err","Error","console","warn","stack","useEffect","contentNode","treeWalker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","nextNode","node","currentNode","join","onPositioningEnd","setContainer","removeEventListener","addEventListener","setArrow","align","arrowPadding","autoSize","rawAutoSize","flipBoundary","overflowBoundary","pinned","position","unstable_disableTether","disableTether","positionFixed","strategy","overflowBoundaryPadding","fallbackPositions","useTransform","disableUpdateOnResize","dir","targetDocument","isRtl","positionStrategy","hasScrollableElement","middleware","element","padding","filter","Boolean","placement"],"mappings":"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"}
1
+ {"version":3,"sources":["usePositioning.ts"],"sourcesContent":["import { hide as hideMiddleware, arrow as arrowMiddleware } from '@floating-ui/dom';\nimport type { Middleware, Strategy } from '@floating-ui/dom';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { canUseDOM, useEventCallback, useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport type {\n PositioningOptions,\n PositioningProps,\n PositionManager,\n TargetElement,\n UsePositioningReturn,\n} from './types';\nimport { useCallbackRef, toFloatingUIPlacement, hasAutofocusFilter, hasScrollParent, normalizeAutoSize } from './utils';\nimport {\n shift as shiftMiddleware,\n flip as flipMiddleware,\n coverTarget as coverTargetMiddleware,\n maxSize as maxSizeMiddleware,\n resetMaxSize as resetMaxSizeMiddleware,\n offset as offsetMiddleware,\n intersecting as intersectingMiddleware,\n matchTargetSize as matchTargetSizeMiddleware,\n} from './middleware';\nimport { createPositionManager } from './createPositionManager';\nimport { devtools } from '@floating-ui/devtools';\nimport { devtoolsCallback } from './utils/devtools';\nimport { POSITIONING_END_EVENT } from './constants';\n\n/**\n * @internal\n */\nexport function usePositioning(options: PositioningProps & PositioningOptions): UsePositioningReturn {\n 'use no memo';\n\n const managerRef = React.useRef<PositionManager | null>(null);\n const targetRef = React.useRef<TargetElement | null>(null);\n const overrideTargetRef = React.useRef<TargetElement | null>(null);\n const containerRef = React.useRef<HTMLElement | null>(null);\n const arrowRef = React.useRef<HTMLElement | null>(null);\n\n const { enabled = true } = options;\n const resolvePositioningOptions = usePositioningOptions(options);\n const updatePositionManager = React.useCallback(() => {\n if (managerRef.current) {\n managerRef.current.dispose();\n }\n managerRef.current = null;\n\n const target = overrideTargetRef.current ?? targetRef.current;\n\n if (enabled && canUseDOM() && target && containerRef.current) {\n managerRef.current = createPositionManager({\n container: containerRef.current,\n target,\n arrow: arrowRef.current,\n ...resolvePositioningOptions(containerRef.current, arrowRef.current),\n });\n }\n }, [enabled, resolvePositioningOptions]);\n\n const setOverrideTarget = useEventCallback((target: TargetElement | null) => {\n overrideTargetRef.current = target;\n updatePositionManager();\n });\n\n React.useImperativeHandle(\n options.positioningRef,\n () => ({\n updatePosition: () => managerRef.current?.updatePosition(),\n setTarget: (target: TargetElement | null) => {\n if (options.target && process.env.NODE_ENV !== 'production') {\n const err = new Error();\n // eslint-disable-next-line no-console\n console.warn('Imperative setTarget should not be used at the same time as target option');\n // eslint-disable-next-line no-console\n console.warn(err.stack);\n }\n\n setOverrideTarget(target);\n },\n }),\n [options.target, setOverrideTarget],\n );\n\n useIsomorphicLayoutEffect(() => {\n setOverrideTarget(options.target ?? null);\n }, [options.target, setOverrideTarget]);\n\n useIsomorphicLayoutEffect(() => {\n updatePositionManager();\n }, [updatePositionManager]);\n\n if (process.env.NODE_ENV !== 'production') {\n // This checked should run only in development mode\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (containerRef.current) {\n const contentNode = containerRef.current;\n const treeWalker = contentNode.ownerDocument?.createTreeWalker(contentNode, NodeFilter.SHOW_ELEMENT, {\n acceptNode: hasAutofocusFilter,\n });\n\n while (treeWalker.nextNode()) {\n const node = treeWalker.currentNode;\n // eslint-disable-next-line no-console\n console.warn('<Popper>:', node);\n // eslint-disable-next-line no-console\n console.warn(\n [\n '<Popper>: ^ this node contains \"autoFocus\" prop on a React element. This can break the initial',\n 'positioning of an element and cause a window jump effect. This issue occurs because React polyfills',\n '\"autoFocus\" behavior to solve inconsistencies between different browsers:',\n 'https://github.com/facebook/react/issues/11851#issuecomment-351787078',\n '\\n',\n 'However, \".focus()\" in this case occurs before any other React effects will be executed',\n '(React.useEffect(), componentDidMount(), etc.) and we can not prevent this behavior. If you really',\n 'want to use \"autoFocus\" please add \"position: fixed\" to styles of the element that is wrapped by',\n '\"Popper\".',\n `In general, it's not recommended to use \"autoFocus\" as it may break accessibility aspects:`,\n 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md',\n '\\n',\n 'We suggest to use the \"trapFocus\" prop on Fluent components or a catch \"ref\" and then use',\n '\"ref.current.focus\" in React.useEffect():',\n 'https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element',\n ].join(' '),\n );\n }\n }\n // We run this check once, no need to add deps here\n // TODO: Should be rework to handle options.enabled and contentRef updates\n }, []);\n }\n\n const setTarget = useCallbackRef<TargetElement>(null, target => {\n if (targetRef.current !== target) {\n targetRef.current = target;\n updatePositionManager();\n }\n });\n\n const onPositioningEnd = useEventCallback(() => options.onPositioningEnd?.());\n const setContainer = useCallbackRef<HTMLElement | null>(null, container => {\n if (containerRef.current !== container) {\n containerRef.current?.removeEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n container?.addEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n containerRef.current = container;\n updatePositionManager();\n }\n });\n\n const setArrow = useCallbackRef<HTMLElement | null>(null, arrow => {\n if (arrowRef.current !== arrow) {\n arrowRef.current = arrow;\n updatePositionManager();\n }\n });\n\n // Let users use callback refs so they feel like 'normal' DOM refs\n return { targetRef: setTarget, containerRef: setContainer, arrowRef: setArrow };\n}\n\nfunction usePositioningOptions(options: PositioningOptions) {\n 'use no memo';\n\n const {\n align,\n arrowPadding,\n autoSize: rawAutoSize,\n coverTarget,\n flipBoundary,\n offset,\n overflowBoundary,\n pinned,\n position,\n unstable_disableTether: disableTether,\n // eslint-disable-next-line deprecation/deprecation\n positionFixed,\n strategy,\n overflowBoundaryPadding,\n fallbackPositions,\n useTransform,\n matchTargetSize,\n disableUpdateOnResize = false,\n } = options;\n\n const { dir, targetDocument } = useFluent();\n const isRtl = dir === 'rtl';\n const positionStrategy: Strategy = strategy ?? positionFixed ? 'fixed' : 'absolute';\n const autoSize = normalizeAutoSize(rawAutoSize);\n\n return React.useCallback(\n (container: HTMLElement | null, arrow: HTMLElement | null) => {\n const hasScrollableElement = hasScrollParent(container);\n\n const middleware = [\n autoSize && resetMaxSizeMiddleware(autoSize),\n matchTargetSize && matchTargetSizeMiddleware(),\n offset && offsetMiddleware(offset),\n coverTarget && coverTargetMiddleware(),\n !pinned && flipMiddleware({ container, flipBoundary, hasScrollableElement, isRtl, fallbackPositions }),\n shiftMiddleware({\n container,\n hasScrollableElement,\n overflowBoundary,\n disableTether,\n overflowBoundaryPadding,\n isRtl,\n }),\n autoSize && maxSizeMiddleware(autoSize, { container, overflowBoundary, overflowBoundaryPadding, isRtl }),\n intersectingMiddleware(),\n arrow && arrowMiddleware({ element: arrow, padding: arrowPadding }),\n hideMiddleware({ strategy: 'referenceHidden' }),\n hideMiddleware({ strategy: 'escaped' }),\n process.env.NODE_ENV !== 'production' && targetDocument && devtools(targetDocument, devtoolsCallback(options)),\n ].filter(Boolean) as Middleware[];\n\n const placement = toFloatingUIPlacement(align, position, isRtl);\n\n return {\n placement,\n middleware,\n strategy: positionStrategy,\n useTransform,\n disableUpdateOnResize,\n };\n },\n // Options is missing here, but it's not required\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n align,\n arrowPadding,\n autoSize,\n coverTarget,\n disableTether,\n flipBoundary,\n isRtl,\n offset,\n overflowBoundary,\n pinned,\n position,\n positionStrategy,\n overflowBoundaryPadding,\n fallbackPositions,\n useTransform,\n matchTargetSize,\n targetDocument,\n disableUpdateOnResize,\n ],\n );\n}\n"],"names":["hide","hideMiddleware","arrow","arrowMiddleware","useFluent_unstable","useFluent","canUseDOM","useEventCallback","useIsomorphicLayoutEffect","React","useCallbackRef","toFloatingUIPlacement","hasAutofocusFilter","hasScrollParent","normalizeAutoSize","shift","shiftMiddleware","flip","flipMiddleware","coverTarget","coverTargetMiddleware","maxSize","maxSizeMiddleware","resetMaxSize","resetMaxSizeMiddleware","offset","offsetMiddleware","intersecting","intersectingMiddleware","matchTargetSize","matchTargetSizeMiddleware","createPositionManager","devtools","devtoolsCallback","POSITIONING_END_EVENT","usePositioning","options","managerRef","useRef","targetRef","overrideTargetRef","containerRef","arrowRef","enabled","resolvePositioningOptions","usePositioningOptions","updatePositionManager","useCallback","current","dispose","target","container","setOverrideTarget","useImperativeHandle","positioningRef","updatePosition","setTarget","process","env","NODE_ENV","err","Error","console","warn","stack","useEffect","contentNode","treeWalker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","nextNode","node","currentNode","join","onPositioningEnd","setContainer","removeEventListener","addEventListener","setArrow","align","arrowPadding","autoSize","rawAutoSize","flipBoundary","overflowBoundary","pinned","position","unstable_disableTether","disableTether","positionFixed","strategy","overflowBoundaryPadding","fallbackPositions","useTransform","disableUpdateOnResize","dir","targetDocument","isRtl","positionStrategy","hasScrollableElement","middleware","element","padding","filter","Boolean","placement"],"mappings":"AAAA,SAASA,QAAQC,cAAc,EAAEC,SAASC,eAAe,QAAQ,mBAAmB;AAEpF,SAASC,sBAAsBC,SAAS,QAAQ,kCAAkC;AAClF,SAASC,SAAS,EAAEC,gBAAgB,EAAEC,yBAAyB,QAAQ,4BAA4B;AACnG,YAAYC,WAAW,QAAQ;AAQ/B,SAASC,cAAc,EAAEC,qBAAqB,EAAEC,kBAAkB,EAAEC,eAAe,EAAEC,iBAAiB,QAAQ,UAAU;AACxH,SACEC,SAASC,eAAe,EACxBC,QAAQC,cAAc,EACtBC,eAAeC,qBAAqB,EACpCC,WAAWC,iBAAiB,EAC5BC,gBAAgBC,sBAAsB,EACtCC,UAAUC,gBAAgB,EAC1BC,gBAAgBC,sBAAsB,EACtCC,mBAAmBC,yBAAyB,QACvC,eAAe;AACtB,SAASC,qBAAqB,QAAQ,0BAA0B;AAChE,SAASC,QAAQ,QAAQ,wBAAwB;AACjD,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,qBAAqB,QAAQ,cAAc;AAEpD;;CAEC,GACD,OAAO,SAASC,eAAeC,OAA8C;IAC3E;IAEA,MAAMC,aAAa5B,MAAM6B,MAAM,CAAyB;IACxD,MAAMC,YAAY9B,MAAM6B,MAAM,CAAuB;IACrD,MAAME,oBAAoB/B,MAAM6B,MAAM,CAAuB;IAC7D,MAAMG,eAAehC,MAAM6B,MAAM,CAAqB;IACtD,MAAMI,WAAWjC,MAAM6B,MAAM,CAAqB;IAElD,MAAM,EAAEK,UAAU,IAAI,EAAE,GAAGP;IAC3B,MAAMQ,4BAA4BC,sBAAsBT;IACxD,MAAMU,wBAAwBrC,MAAMsC,WAAW,CAAC;QAC9C,IAAIV,WAAWW,OAAO,EAAE;YACtBX,WAAWW,OAAO,CAACC,OAAO;QAC5B;QACAZ,WAAWW,OAAO,GAAG;YAENR;QAAf,MAAMU,SAASV,CAAAA,6BAAAA,kBAAkBQ,OAAO,cAAzBR,wCAAAA,6BAA6BD,UAAUS,OAAO;QAE7D,IAAIL,WAAWrC,eAAe4C,UAAUT,aAAaO,OAAO,EAAE;YAC5DX,WAAWW,OAAO,GAAGjB,sBAAsB;gBACzCoB,WAAWV,aAAaO,OAAO;gBAC/BE;gBACAhD,OAAOwC,SAASM,OAAO;gBACvB,GAAGJ,0BAA0BH,aAAaO,OAAO,EAAEN,SAASM,OAAO,CAAC;YACtE;QACF;IACF,GAAG;QAACL;QAASC;KAA0B;IAEvC,MAAMQ,oBAAoB7C,iBAAiB,CAAC2C;QAC1CV,kBAAkBQ,OAAO,GAAGE;QAC5BJ;IACF;IAEArC,MAAM4C,mBAAmB,CACvBjB,QAAQkB,cAAc,EACtB,IAAO,CAAA;YACLC,gBAAgB;oBAAMlB;wBAAAA,sBAAAA,WAAWW,OAAO,cAAlBX,0CAAAA,oBAAoBkB,cAAc;;YACxDC,WAAW,CAACN;gBACV,IAAId,QAAQc,MAAM,IAAIO,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;oBAC3D,MAAMC,MAAM,IAAIC;oBAChB,sCAAsC;oBACtCC,QAAQC,IAAI,CAAC;oBACb,sCAAsC;oBACtCD,QAAQC,IAAI,CAACH,IAAII,KAAK;gBACxB;gBAEAZ,kBAAkBF;YACpB;QACF,CAAA,GACA;QAACd,QAAQc,MAAM;QAAEE;KAAkB;IAGrC5C,0BAA0B;YACN4B;QAAlBgB,kBAAkBhB,CAAAA,kBAAAA,QAAQc,MAAM,cAAdd,6BAAAA,kBAAkB;IACtC,GAAG;QAACA,QAAQc,MAAM;QAAEE;KAAkB;IAEtC5C,0BAA0B;QACxBsC;IACF,GAAG;QAACA;KAAsB;IAE1B,IAAIW,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;QACzC,mDAAmD;QACnD,sDAAsD;QACtDlD,MAAMwD,SAAS,CAAC;YACd,IAAIxB,aAAaO,OAAO,EAAE;oBAELkB;gBADnB,MAAMA,cAAczB,aAAaO,OAAO;gBACxC,MAAMmB,cAAaD,6BAAAA,YAAYE,aAAa,cAAzBF,iDAAAA,2BAA2BG,gBAAgB,CAACH,aAAaI,WAAWC,YAAY,EAAE;oBACnGC,YAAY5D;gBACd;gBAEA,MAAOuD,WAAWM,QAAQ,GAAI;oBAC5B,MAAMC,OAAOP,WAAWQ,WAAW;oBACnC,sCAAsC;oBACtCb,QAAQC,IAAI,CAAC,aAAaW;oBAC1B,sCAAsC;oBACtCZ,QAAQC,IAAI,CACV;wBACE;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA,CAAC,0FAA0F,CAAC;wBAC5F;wBACA;wBACA;wBACA;wBACA;qBACD,CAACa,IAAI,CAAC;gBAEX;YACF;QACA,mDAAmD;QACnD,0EAA0E;QAC5E,GAAG,EAAE;IACP;IAEA,MAAMpB,YAAY9C,eAA8B,MAAMwC,CAAAA;QACpD,IAAIX,UAAUS,OAAO,KAAKE,QAAQ;YAChCX,UAAUS,OAAO,GAAGE;YACpBJ;QACF;IACF;IAEA,MAAM+B,mBAAmBtE,iBAAiB;YAAM6B;gBAAAA,4BAAAA,QAAQyC,gBAAgB,cAAxBzC,gDAAAA,+BAAAA;;IAChD,MAAM0C,eAAepE,eAAmC,MAAMyC,CAAAA;QAC5D,IAAIV,aAAaO,OAAO,KAAKG,WAAW;gBACtCV;aAAAA,wBAAAA,aAAaO,OAAO,cAApBP,4CAAAA,sBAAsBsC,mBAAmB,CAAC7C,uBAAuB2C;YACjE1B,sBAAAA,gCAAAA,UAAW6B,gBAAgB,CAAC9C,uBAAuB2C;YACnDpC,aAAaO,OAAO,GAAGG;YACvBL;QACF;IACF;IAEA,MAAMmC,WAAWvE,eAAmC,MAAMR,CAAAA;QACxD,IAAIwC,SAASM,OAAO,KAAK9C,OAAO;YAC9BwC,SAASM,OAAO,GAAG9C;YACnB4C;QACF;IACF;IAEA,kEAAkE;IAClE,OAAO;QAAEP,WAAWiB;QAAWf,cAAcqC;QAAcpC,UAAUuC;IAAS;AAChF;AAEA,SAASpC,sBAAsBT,OAA2B;IACxD;IAEA,MAAM,EACJ8C,KAAK,EACLC,YAAY,EACZC,UAAUC,WAAW,EACrBlE,WAAW,EACXmE,YAAY,EACZ7D,MAAM,EACN8D,gBAAgB,EAChBC,MAAM,EACNC,QAAQ,EACRC,wBAAwBC,aAAa,EACrC,mDAAmD;IACnDC,aAAa,EACbC,QAAQ,EACRC,uBAAuB,EACvBC,iBAAiB,EACjBC,YAAY,EACZnE,eAAe,EACfoE,wBAAwB,KAAK,EAC9B,GAAG7D;IAEJ,MAAM,EAAE8D,GAAG,EAAEC,cAAc,EAAE,GAAG9F;IAChC,MAAM+F,QAAQF,QAAQ;IACtB,MAAMG,mBAA6BR,CAAAA,qBAAAA,sBAAAA,WAAYD,aAAY,IAAI,UAAU;IACzE,MAAMR,WAAWtE,kBAAkBuE;IAEnC,OAAO5E,MAAMsC,WAAW,CACtB,CAACI,WAA+BjD;QAC9B,MAAMoG,uBAAuBzF,gBAAgBsC;QAE7C,MAAMoD,aAAa;YACjBnB,YAAY5D,uBAAuB4D;YACnCvD,mBAAmBC;YACnBL,UAAUC,iBAAiBD;YAC3BN,eAAeC;YACf,CAACoE,UAAUtE,eAAe;gBAAEiC;gBAAWmC;gBAAcgB;gBAAsBF;gBAAOL;YAAkB;YACpG/E,gBAAgB;gBACdmC;gBACAmD;gBACAf;gBACAI;gBACAG;gBACAM;YACF;YACAhB,YAAY9D,kBAAkB8D,UAAU;gBAAEjC;gBAAWoC;gBAAkBO;gBAAyBM;YAAM;YACtGxE;YACA1B,SAASC,gBAAgB;gBAAEqG,SAAStG;gBAAOuG,SAAStB;YAAa;YACjElF,eAAe;gBAAE4F,UAAU;YAAkB;YAC7C5F,eAAe;gBAAE4F,UAAU;YAAU;YACrCpC,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBAAgBwC,kBAAkBnE,SAASmE,gBAAgBlE,iBAAiBG;SACtG,CAACsE,MAAM,CAACC;QAET,MAAMC,YAAYjG,sBAAsBuE,OAAOO,UAAUW;QAEzD,OAAO;YACLQ;YACAL;YACAV,UAAUQ;YACVL;YACAC;QACF;IACF,GACA,iDAAiD;IACjD,uDAAuD;IACvD;QACEf;QACAC;QACAC;QACAjE;QACAwE;QACAL;QACAc;QACA3E;QACA8D;QACAC;QACAC;QACAY;QACAP;QACAC;QACAC;QACAnE;QACAsE;QACAF;KACD;AAEL"}
@@ -20,6 +20,7 @@ const _devtools = require("@floating-ui/devtools");
20
20
  const _devtools1 = require("./utils/devtools");
21
21
  const _constants = require("./constants");
22
22
  function usePositioning(options) {
23
+ 'use no memo';
23
24
  const managerRef = _react.useRef(null);
24
25
  const targetRef = _react.useRef(null);
25
26
  const overrideTargetRef = _react.useRef(null);
@@ -152,6 +153,7 @@ function usePositioning(options) {
152
153
  };
153
154
  }
154
155
  function usePositioningOptions(options) {
156
+ 'use no memo';
155
157
  const { align, arrowPadding, autoSize: rawAutoSize, coverTarget, flipBoundary, offset, overflowBoundary, pinned, position, unstable_disableTether: disableTether, positionFixed, strategy, overflowBoundaryPadding, fallbackPositions, useTransform, matchTargetSize, disableUpdateOnResize = false } = options;
156
158
  const { dir, targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
157
159
  const isRtl = dir === 'rtl';
@@ -1 +1 @@
1
- {"version":3,"sources":["usePositioning.js"],"sourcesContent":["import { hide as hideMiddleware, arrow as arrowMiddleware } from '@floating-ui/dom';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { canUseDOM, useEventCallback, useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useCallbackRef, toFloatingUIPlacement, hasAutofocusFilter, hasScrollParent, normalizeAutoSize } from './utils';\nimport { shift as shiftMiddleware, flip as flipMiddleware, coverTarget as coverTargetMiddleware, maxSize as maxSizeMiddleware, resetMaxSize as resetMaxSizeMiddleware, offset as offsetMiddleware, intersecting as intersectingMiddleware, matchTargetSize as matchTargetSizeMiddleware } from './middleware';\nimport { createPositionManager } from './createPositionManager';\nimport { devtools } from '@floating-ui/devtools';\nimport { devtoolsCallback } from './utils/devtools';\nimport { POSITIONING_END_EVENT } from './constants';\n/**\n * @internal\n */ export function usePositioning(options) {\n const managerRef = React.useRef(null);\n const targetRef = React.useRef(null);\n const overrideTargetRef = React.useRef(null);\n const containerRef = React.useRef(null);\n const arrowRef = React.useRef(null);\n const { enabled = true } = options;\n const resolvePositioningOptions = usePositioningOptions(options);\n const updatePositionManager = React.useCallback(()=>{\n if (managerRef.current) {\n managerRef.current.dispose();\n }\n managerRef.current = null;\n var _overrideTargetRef_current;\n const target = (_overrideTargetRef_current = overrideTargetRef.current) !== null && _overrideTargetRef_current !== void 0 ? _overrideTargetRef_current : targetRef.current;\n if (enabled && canUseDOM() && target && containerRef.current) {\n managerRef.current = createPositionManager({\n container: containerRef.current,\n target,\n arrow: arrowRef.current,\n ...resolvePositioningOptions(containerRef.current, arrowRef.current)\n });\n }\n }, [\n enabled,\n resolvePositioningOptions\n ]);\n const setOverrideTarget = useEventCallback((target)=>{\n overrideTargetRef.current = target;\n updatePositionManager();\n });\n React.useImperativeHandle(options.positioningRef, ()=>({\n updatePosition: ()=>{\n var _managerRef_current;\n return (_managerRef_current = managerRef.current) === null || _managerRef_current === void 0 ? void 0 : _managerRef_current.updatePosition();\n },\n setTarget: (target)=>{\n if (options.target && process.env.NODE_ENV !== 'production') {\n const err = new Error();\n // eslint-disable-next-line no-console\n console.warn('Imperative setTarget should not be used at the same time as target option');\n // eslint-disable-next-line no-console\n console.warn(err.stack);\n }\n setOverrideTarget(target);\n }\n }), [\n options.target,\n setOverrideTarget\n ]);\n useIsomorphicLayoutEffect(()=>{\n var _options_target;\n setOverrideTarget((_options_target = options.target) !== null && _options_target !== void 0 ? _options_target : null);\n }, [\n options.target,\n setOverrideTarget\n ]);\n useIsomorphicLayoutEffect(()=>{\n updatePositionManager();\n }, [\n updatePositionManager\n ]);\n if (process.env.NODE_ENV !== 'production') {\n // This checked should run only in development mode\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(()=>{\n if (containerRef.current) {\n var _contentNode_ownerDocument;\n const contentNode = containerRef.current;\n const treeWalker = (_contentNode_ownerDocument = contentNode.ownerDocument) === null || _contentNode_ownerDocument === void 0 ? void 0 : _contentNode_ownerDocument.createTreeWalker(contentNode, NodeFilter.SHOW_ELEMENT, {\n acceptNode: hasAutofocusFilter\n });\n while(treeWalker.nextNode()){\n const node = treeWalker.currentNode;\n // eslint-disable-next-line no-console\n console.warn('<Popper>:', node);\n // eslint-disable-next-line no-console\n console.warn([\n '<Popper>: ^ this node contains \"autoFocus\" prop on a React element. This can break the initial',\n 'positioning of an element and cause a window jump effect. This issue occurs because React polyfills',\n '\"autoFocus\" behavior to solve inconsistencies between different browsers:',\n 'https://github.com/facebook/react/issues/11851#issuecomment-351787078',\n '\\n',\n 'However, \".focus()\" in this case occurs before any other React effects will be executed',\n '(React.useEffect(), componentDidMount(), etc.) and we can not prevent this behavior. If you really',\n 'want to use \"autoFocus\" please add \"position: fixed\" to styles of the element that is wrapped by',\n '\"Popper\".',\n `In general, it's not recommended to use \"autoFocus\" as it may break accessibility aspects:`,\n 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md',\n '\\n',\n 'We suggest to use the \"trapFocus\" prop on Fluent components or a catch \"ref\" and then use',\n '\"ref.current.focus\" in React.useEffect():',\n 'https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element'\n ].join(' '));\n }\n }\n // We run this check once, no need to add deps here\n // TODO: Should be rework to handle options.enabled and contentRef updates\n }, []);\n }\n const setTarget = useCallbackRef(null, (target)=>{\n if (targetRef.current !== target) {\n targetRef.current = target;\n updatePositionManager();\n }\n });\n const onPositioningEnd = useEventCallback(()=>{\n var _options_onPositioningEnd;\n return (_options_onPositioningEnd = options.onPositioningEnd) === null || _options_onPositioningEnd === void 0 ? void 0 : _options_onPositioningEnd.call(options);\n });\n const setContainer = useCallbackRef(null, (container)=>{\n if (containerRef.current !== container) {\n var _containerRef_current;\n (_containerRef_current = containerRef.current) === null || _containerRef_current === void 0 ? void 0 : _containerRef_current.removeEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n container === null || container === void 0 ? void 0 : container.addEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n containerRef.current = container;\n updatePositionManager();\n }\n });\n const setArrow = useCallbackRef(null, (arrow)=>{\n if (arrowRef.current !== arrow) {\n arrowRef.current = arrow;\n updatePositionManager();\n }\n });\n // Let users use callback refs so they feel like 'normal' DOM refs\n return {\n targetRef: setTarget,\n containerRef: setContainer,\n arrowRef: setArrow\n };\n}\nfunction usePositioningOptions(options) {\n const { align, arrowPadding, autoSize: rawAutoSize, coverTarget, flipBoundary, offset, overflowBoundary, pinned, position, unstable_disableTether: disableTether, // eslint-disable-next-line deprecation/deprecation\n positionFixed, strategy, overflowBoundaryPadding, fallbackPositions, useTransform, matchTargetSize, disableUpdateOnResize = false } = options;\n const { dir, targetDocument } = useFluent();\n const isRtl = dir === 'rtl';\n const positionStrategy = (strategy !== null && strategy !== void 0 ? strategy : positionFixed) ? 'fixed' : 'absolute';\n const autoSize = normalizeAutoSize(rawAutoSize);\n return React.useCallback((container, arrow)=>{\n const hasScrollableElement = hasScrollParent(container);\n const middleware = [\n autoSize && resetMaxSizeMiddleware(autoSize),\n matchTargetSize && matchTargetSizeMiddleware(),\n offset && offsetMiddleware(offset),\n coverTarget && coverTargetMiddleware(),\n !pinned && flipMiddleware({\n container,\n flipBoundary,\n hasScrollableElement,\n isRtl,\n fallbackPositions\n }),\n shiftMiddleware({\n container,\n hasScrollableElement,\n overflowBoundary,\n disableTether,\n overflowBoundaryPadding,\n isRtl\n }),\n autoSize && maxSizeMiddleware(autoSize, {\n container,\n overflowBoundary,\n overflowBoundaryPadding,\n isRtl\n }),\n intersectingMiddleware(),\n arrow && arrowMiddleware({\n element: arrow,\n padding: arrowPadding\n }),\n hideMiddleware({\n strategy: 'referenceHidden'\n }),\n hideMiddleware({\n strategy: 'escaped'\n }),\n process.env.NODE_ENV !== 'production' && targetDocument && devtools(targetDocument, devtoolsCallback(options))\n ].filter(Boolean);\n const placement = toFloatingUIPlacement(align, position, isRtl);\n return {\n placement,\n middleware,\n strategy: positionStrategy,\n useTransform,\n disableUpdateOnResize\n };\n }, // Options is missing here, but it's not required\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n align,\n arrowPadding,\n autoSize,\n coverTarget,\n disableTether,\n flipBoundary,\n isRtl,\n offset,\n overflowBoundary,\n pinned,\n position,\n positionStrategy,\n overflowBoundaryPadding,\n fallbackPositions,\n useTransform,\n matchTargetSize,\n targetDocument,\n disableUpdateOnResize\n ]);\n}\n"],"names":["usePositioning","options","managerRef","React","useRef","targetRef","overrideTargetRef","containerRef","arrowRef","enabled","resolvePositioningOptions","usePositioningOptions","updatePositionManager","useCallback","current","dispose","_overrideTargetRef_current","target","canUseDOM","createPositionManager","container","arrow","setOverrideTarget","useEventCallback","useImperativeHandle","positioningRef","updatePosition","_managerRef_current","setTarget","process","env","NODE_ENV","err","Error","console","warn","stack","useIsomorphicLayoutEffect","_options_target","useEffect","_contentNode_ownerDocument","contentNode","treeWalker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","hasAutofocusFilter","nextNode","node","currentNode","join","useCallbackRef","onPositioningEnd","_options_onPositioningEnd","call","setContainer","_containerRef_current","removeEventListener","POSITIONING_END_EVENT","addEventListener","setArrow","align","arrowPadding","autoSize","rawAutoSize","coverTarget","flipBoundary","offset","overflowBoundary","pinned","position","unstable_disableTether","disableTether","positionFixed","strategy","overflowBoundaryPadding","fallbackPositions","useTransform","matchTargetSize","disableUpdateOnResize","dir","targetDocument","useFluent","isRtl","positionStrategy","normalizeAutoSize","hasScrollableElement","hasScrollParent","middleware","resetMaxSizeMiddleware","matchTargetSizeMiddleware","offsetMiddleware","coverTargetMiddleware","flipMiddleware","shiftMiddleware","maxSizeMiddleware","intersectingMiddleware","arrowMiddleware","element","padding","hideMiddleware","devtools","devtoolsCallback","filter","Boolean","placement","toFloatingUIPlacement"],"mappings":"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"}
1
+ {"version":3,"sources":["usePositioning.js"],"sourcesContent":["import { hide as hideMiddleware, arrow as arrowMiddleware } from '@floating-ui/dom';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { canUseDOM, useEventCallback, useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useCallbackRef, toFloatingUIPlacement, hasAutofocusFilter, hasScrollParent, normalizeAutoSize } from './utils';\nimport { shift as shiftMiddleware, flip as flipMiddleware, coverTarget as coverTargetMiddleware, maxSize as maxSizeMiddleware, resetMaxSize as resetMaxSizeMiddleware, offset as offsetMiddleware, intersecting as intersectingMiddleware, matchTargetSize as matchTargetSizeMiddleware } from './middleware';\nimport { createPositionManager } from './createPositionManager';\nimport { devtools } from '@floating-ui/devtools';\nimport { devtoolsCallback } from './utils/devtools';\nimport { POSITIONING_END_EVENT } from './constants';\n/**\n * @internal\n */ export function usePositioning(options) {\n 'use no memo';\n const managerRef = React.useRef(null);\n const targetRef = React.useRef(null);\n const overrideTargetRef = React.useRef(null);\n const containerRef = React.useRef(null);\n const arrowRef = React.useRef(null);\n const { enabled = true } = options;\n const resolvePositioningOptions = usePositioningOptions(options);\n const updatePositionManager = React.useCallback(()=>{\n if (managerRef.current) {\n managerRef.current.dispose();\n }\n managerRef.current = null;\n var _overrideTargetRef_current;\n const target = (_overrideTargetRef_current = overrideTargetRef.current) !== null && _overrideTargetRef_current !== void 0 ? _overrideTargetRef_current : targetRef.current;\n if (enabled && canUseDOM() && target && containerRef.current) {\n managerRef.current = createPositionManager({\n container: containerRef.current,\n target,\n arrow: arrowRef.current,\n ...resolvePositioningOptions(containerRef.current, arrowRef.current)\n });\n }\n }, [\n enabled,\n resolvePositioningOptions\n ]);\n const setOverrideTarget = useEventCallback((target)=>{\n overrideTargetRef.current = target;\n updatePositionManager();\n });\n React.useImperativeHandle(options.positioningRef, ()=>({\n updatePosition: ()=>{\n var _managerRef_current;\n return (_managerRef_current = managerRef.current) === null || _managerRef_current === void 0 ? void 0 : _managerRef_current.updatePosition();\n },\n setTarget: (target)=>{\n if (options.target && process.env.NODE_ENV !== 'production') {\n const err = new Error();\n // eslint-disable-next-line no-console\n console.warn('Imperative setTarget should not be used at the same time as target option');\n // eslint-disable-next-line no-console\n console.warn(err.stack);\n }\n setOverrideTarget(target);\n }\n }), [\n options.target,\n setOverrideTarget\n ]);\n useIsomorphicLayoutEffect(()=>{\n var _options_target;\n setOverrideTarget((_options_target = options.target) !== null && _options_target !== void 0 ? _options_target : null);\n }, [\n options.target,\n setOverrideTarget\n ]);\n useIsomorphicLayoutEffect(()=>{\n updatePositionManager();\n }, [\n updatePositionManager\n ]);\n if (process.env.NODE_ENV !== 'production') {\n // This checked should run only in development mode\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(()=>{\n if (containerRef.current) {\n var _contentNode_ownerDocument;\n const contentNode = containerRef.current;\n const treeWalker = (_contentNode_ownerDocument = contentNode.ownerDocument) === null || _contentNode_ownerDocument === void 0 ? void 0 : _contentNode_ownerDocument.createTreeWalker(contentNode, NodeFilter.SHOW_ELEMENT, {\n acceptNode: hasAutofocusFilter\n });\n while(treeWalker.nextNode()){\n const node = treeWalker.currentNode;\n // eslint-disable-next-line no-console\n console.warn('<Popper>:', node);\n // eslint-disable-next-line no-console\n console.warn([\n '<Popper>: ^ this node contains \"autoFocus\" prop on a React element. This can break the initial',\n 'positioning of an element and cause a window jump effect. This issue occurs because React polyfills',\n '\"autoFocus\" behavior to solve inconsistencies between different browsers:',\n 'https://github.com/facebook/react/issues/11851#issuecomment-351787078',\n '\\n',\n 'However, \".focus()\" in this case occurs before any other React effects will be executed',\n '(React.useEffect(), componentDidMount(), etc.) and we can not prevent this behavior. If you really',\n 'want to use \"autoFocus\" please add \"position: fixed\" to styles of the element that is wrapped by',\n '\"Popper\".',\n `In general, it's not recommended to use \"autoFocus\" as it may break accessibility aspects:`,\n 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md',\n '\\n',\n 'We suggest to use the \"trapFocus\" prop on Fluent components or a catch \"ref\" and then use',\n '\"ref.current.focus\" in React.useEffect():',\n 'https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element'\n ].join(' '));\n }\n }\n // We run this check once, no need to add deps here\n // TODO: Should be rework to handle options.enabled and contentRef updates\n }, []);\n }\n const setTarget = useCallbackRef(null, (target)=>{\n if (targetRef.current !== target) {\n targetRef.current = target;\n updatePositionManager();\n }\n });\n const onPositioningEnd = useEventCallback(()=>{\n var _options_onPositioningEnd;\n return (_options_onPositioningEnd = options.onPositioningEnd) === null || _options_onPositioningEnd === void 0 ? void 0 : _options_onPositioningEnd.call(options);\n });\n const setContainer = useCallbackRef(null, (container)=>{\n if (containerRef.current !== container) {\n var _containerRef_current;\n (_containerRef_current = containerRef.current) === null || _containerRef_current === void 0 ? void 0 : _containerRef_current.removeEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n container === null || container === void 0 ? void 0 : container.addEventListener(POSITIONING_END_EVENT, onPositioningEnd);\n containerRef.current = container;\n updatePositionManager();\n }\n });\n const setArrow = useCallbackRef(null, (arrow)=>{\n if (arrowRef.current !== arrow) {\n arrowRef.current = arrow;\n updatePositionManager();\n }\n });\n // Let users use callback refs so they feel like 'normal' DOM refs\n return {\n targetRef: setTarget,\n containerRef: setContainer,\n arrowRef: setArrow\n };\n}\nfunction usePositioningOptions(options) {\n 'use no memo';\n const { align, arrowPadding, autoSize: rawAutoSize, coverTarget, flipBoundary, offset, overflowBoundary, pinned, position, unstable_disableTether: disableTether, // eslint-disable-next-line deprecation/deprecation\n positionFixed, strategy, overflowBoundaryPadding, fallbackPositions, useTransform, matchTargetSize, disableUpdateOnResize = false } = options;\n const { dir, targetDocument } = useFluent();\n const isRtl = dir === 'rtl';\n const positionStrategy = (strategy !== null && strategy !== void 0 ? strategy : positionFixed) ? 'fixed' : 'absolute';\n const autoSize = normalizeAutoSize(rawAutoSize);\n return React.useCallback((container, arrow)=>{\n const hasScrollableElement = hasScrollParent(container);\n const middleware = [\n autoSize && resetMaxSizeMiddleware(autoSize),\n matchTargetSize && matchTargetSizeMiddleware(),\n offset && offsetMiddleware(offset),\n coverTarget && coverTargetMiddleware(),\n !pinned && flipMiddleware({\n container,\n flipBoundary,\n hasScrollableElement,\n isRtl,\n fallbackPositions\n }),\n shiftMiddleware({\n container,\n hasScrollableElement,\n overflowBoundary,\n disableTether,\n overflowBoundaryPadding,\n isRtl\n }),\n autoSize && maxSizeMiddleware(autoSize, {\n container,\n overflowBoundary,\n overflowBoundaryPadding,\n isRtl\n }),\n intersectingMiddleware(),\n arrow && arrowMiddleware({\n element: arrow,\n padding: arrowPadding\n }),\n hideMiddleware({\n strategy: 'referenceHidden'\n }),\n hideMiddleware({\n strategy: 'escaped'\n }),\n process.env.NODE_ENV !== 'production' && targetDocument && devtools(targetDocument, devtoolsCallback(options))\n ].filter(Boolean);\n const placement = toFloatingUIPlacement(align, position, isRtl);\n return {\n placement,\n middleware,\n strategy: positionStrategy,\n useTransform,\n disableUpdateOnResize\n };\n }, // Options is missing here, but it's not required\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n align,\n arrowPadding,\n autoSize,\n coverTarget,\n disableTether,\n flipBoundary,\n isRtl,\n offset,\n overflowBoundary,\n pinned,\n position,\n positionStrategy,\n overflowBoundaryPadding,\n fallbackPositions,\n useTransform,\n matchTargetSize,\n targetDocument,\n disableUpdateOnResize\n ]);\n}\n"],"names":["usePositioning","options","managerRef","React","useRef","targetRef","overrideTargetRef","containerRef","arrowRef","enabled","resolvePositioningOptions","usePositioningOptions","updatePositionManager","useCallback","current","dispose","_overrideTargetRef_current","target","canUseDOM","createPositionManager","container","arrow","setOverrideTarget","useEventCallback","useImperativeHandle","positioningRef","updatePosition","_managerRef_current","setTarget","process","env","NODE_ENV","err","Error","console","warn","stack","useIsomorphicLayoutEffect","_options_target","useEffect","_contentNode_ownerDocument","contentNode","treeWalker","ownerDocument","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","hasAutofocusFilter","nextNode","node","currentNode","join","useCallbackRef","onPositioningEnd","_options_onPositioningEnd","call","setContainer","_containerRef_current","removeEventListener","POSITIONING_END_EVENT","addEventListener","setArrow","align","arrowPadding","autoSize","rawAutoSize","coverTarget","flipBoundary","offset","overflowBoundary","pinned","position","unstable_disableTether","disableTether","positionFixed","strategy","overflowBoundaryPadding","fallbackPositions","useTransform","matchTargetSize","disableUpdateOnResize","dir","targetDocument","useFluent","isRtl","positionStrategy","normalizeAutoSize","hasScrollableElement","hasScrollParent","middleware","resetMaxSizeMiddleware","matchTargetSizeMiddleware","offsetMiddleware","coverTargetMiddleware","flipMiddleware","shiftMiddleware","maxSizeMiddleware","intersectingMiddleware","arrowMiddleware","element","padding","hideMiddleware","devtools","devtoolsCallback","filter","Boolean","placement","toFloatingUIPlacement"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-positioning",
3
- "version": "9.15.2",
3
+ "version": "9.15.4",
4
4
  "description": "A react wrapper around Popper.js for Fluent UI",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -19,7 +19,7 @@
19
19
  "just": "just-scripts",
20
20
  "lint": "just-scripts lint",
21
21
  "test": "jest --passWithNoTests",
22
- "type-check": "tsc -b tsconfig.json",
22
+ "type-check": "just-scripts type-check",
23
23
  "generate-api": "just-scripts generate-api",
24
24
  "test-ssr": "test-ssr \"./stories/**/*.stories.tsx\""
25
25
  },
@@ -33,7 +33,7 @@
33
33
  "@floating-ui/devtools": "0.2.1",
34
34
  "@fluentui/react-shared-contexts": "^9.19.0",
35
35
  "@fluentui/react-theme": "^9.1.19",
36
- "@fluentui/react-utilities": "^9.18.9",
36
+ "@fluentui/react-utilities": "^9.18.11",
37
37
  "@griffel/react": "^1.5.22",
38
38
  "@swc/helpers": "^0.5.1"
39
39
  },