@wordpress/components 27.2.0 → 27.3.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.
Files changed (117) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +13 -0
  3. package/build/button/index.js +1 -1
  4. package/build/button/index.js.map +1 -1
  5. package/build/color-picker/component.js +2 -12
  6. package/build/color-picker/component.js.map +1 -1
  7. package/build/color-picker/picker.js +18 -77
  8. package/build/color-picker/picker.js.map +1 -1
  9. package/build/color-picker/types.js.map +1 -1
  10. package/build/custom-select-control-v2/default-component/index.js +4 -2
  11. package/build/custom-select-control-v2/default-component/index.js.map +1 -1
  12. package/build/custom-select-control-v2/index.js +1 -8
  13. package/build/custom-select-control-v2/index.js.map +1 -1
  14. package/build/custom-select-control-v2/{custom-select-item.js → item.js} +2 -1
  15. package/build/custom-select-control-v2/{custom-select-item.js.map → item.js.map} +1 -1
  16. package/build/custom-select-control-v2/legacy-component/index.js +5 -5
  17. package/build/custom-select-control-v2/legacy-component/index.js.map +1 -1
  18. package/build/input-control/input-field.js +2 -1
  19. package/build/input-control/input-field.js.map +1 -1
  20. package/build/mobile/color-settings/palette.screen.native.js +1 -0
  21. package/build/mobile/color-settings/palette.screen.native.js.map +1 -1
  22. package/build/navigable-container/container.js.map +1 -1
  23. package/build/navigator/navigator-provider/component.js +162 -120
  24. package/build/navigator/navigator-provider/component.js.map +1 -1
  25. package/build/navigator/navigator-screen/component.js +2 -2
  26. package/build/navigator/navigator-screen/component.js.map +1 -1
  27. package/build/popover/index.js +7 -34
  28. package/build/popover/index.js.map +1 -1
  29. package/build/range-control/styles/range-control-styles.js +29 -29
  30. package/build/range-control/styles/range-control-styles.js.map +1 -1
  31. package/build/toggle-group-control/toggle-group-control-option-base/component.js +1 -1
  32. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  33. package/build-module/button/index.js +1 -1
  34. package/build-module/button/index.js.map +1 -1
  35. package/build-module/color-picker/component.js +3 -13
  36. package/build-module/color-picker/component.js.map +1 -1
  37. package/build-module/color-picker/picker.js +19 -78
  38. package/build-module/color-picker/picker.js.map +1 -1
  39. package/build-module/color-picker/types.js.map +1 -1
  40. package/build-module/custom-select-control-v2/default-component/index.js +4 -2
  41. package/build-module/custom-select-control-v2/default-component/index.js.map +1 -1
  42. package/build-module/custom-select-control-v2/index.js +1 -2
  43. package/build-module/custom-select-control-v2/index.js.map +1 -1
  44. package/build-module/custom-select-control-v2/{custom-select-item.js → item.js} +2 -1
  45. package/build-module/custom-select-control-v2/{custom-select-item.js.map → item.js.map} +1 -1
  46. package/build-module/custom-select-control-v2/legacy-component/index.js +4 -4
  47. package/build-module/custom-select-control-v2/legacy-component/index.js.map +1 -1
  48. package/build-module/input-control/input-field.js +2 -1
  49. package/build-module/input-control/input-field.js.map +1 -1
  50. package/build-module/mobile/color-settings/palette.screen.native.js +1 -0
  51. package/build-module/mobile/color-settings/palette.screen.native.js.map +1 -1
  52. package/build-module/navigable-container/container.js.map +1 -1
  53. package/build-module/navigator/navigator-provider/component.js +163 -121
  54. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  55. package/build-module/navigator/navigator-screen/component.js +2 -2
  56. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  57. package/build-module/popover/index.js +9 -36
  58. package/build-module/popover/index.js.map +1 -1
  59. package/build-module/range-control/styles/range-control-styles.js +29 -29
  60. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  61. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +2 -2
  62. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  63. package/build-style/style-rtl.css +2 -8
  64. package/build-style/style.css +2 -8
  65. package/build-types/color-picker/component.d.ts.map +1 -1
  66. package/build-types/color-picker/picker.d.ts +1 -1
  67. package/build-types/color-picker/picker.d.ts.map +1 -1
  68. package/build-types/color-picker/types.d.ts +0 -3
  69. package/build-types/color-picker/types.d.ts.map +1 -1
  70. package/build-types/custom-select-control/stories/index.story.d.ts +35 -0
  71. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -0
  72. package/build-types/custom-select-control-v2/default-component/index.d.ts +5 -2
  73. package/build-types/custom-select-control-v2/default-component/index.d.ts.map +1 -1
  74. package/build-types/custom-select-control-v2/index.d.ts +1 -2
  75. package/build-types/custom-select-control-v2/index.d.ts.map +1 -1
  76. package/build-types/custom-select-control-v2/{custom-select-item.d.ts → item.d.ts} +4 -1
  77. package/build-types/custom-select-control-v2/item.d.ts.map +1 -0
  78. package/build-types/custom-select-control-v2/legacy-component/index.d.ts +2 -2
  79. package/build-types/custom-select-control-v2/legacy-component/index.d.ts.map +1 -1
  80. package/build-types/custom-select-control-v2/stories/default.story.d.ts +2 -2
  81. package/build-types/custom-select-control-v2/stories/default.story.d.ts.map +1 -1
  82. package/build-types/custom-select-control-v2/stories/legacy.story.d.ts +4 -2
  83. package/build-types/custom-select-control-v2/stories/legacy.story.d.ts.map +1 -1
  84. package/build-types/input-control/input-field.d.ts.map +1 -1
  85. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  86. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  87. package/build-types/popover/index.d.ts.map +1 -1
  88. package/package.json +21 -21
  89. package/src/button/index.tsx +1 -1
  90. package/src/color-picker/component.tsx +3 -25
  91. package/src/color-picker/picker.tsx +12 -96
  92. package/src/color-picker/types.ts +0 -3
  93. package/src/custom-select-control/stories/{index.story.js → index.story.tsx} +8 -3
  94. package/src/custom-select-control/test/index.js +24 -0
  95. package/src/custom-select-control-v2/README.md +27 -27
  96. package/src/custom-select-control-v2/default-component/index.tsx +5 -2
  97. package/src/custom-select-control-v2/index.tsx +1 -2
  98. package/src/custom-select-control-v2/{custom-select-item.tsx → item.tsx} +2 -0
  99. package/src/custom-select-control-v2/legacy-component/index.tsx +4 -6
  100. package/src/custom-select-control-v2/legacy-component/test/index.tsx +13 -10
  101. package/src/custom-select-control-v2/stories/default.story.tsx +16 -17
  102. package/src/custom-select-control-v2/stories/legacy.story.tsx +20 -35
  103. package/src/custom-select-control-v2/test/index.tsx +26 -16
  104. package/src/dropdown/style.scss +3 -3
  105. package/src/input-control/input-field.tsx +2 -1
  106. package/src/mobile/color-settings/palette.screen.native.js +5 -1
  107. package/src/navigable-container/container.tsx +1 -1
  108. package/src/navigator/navigator-provider/component.tsx +187 -188
  109. package/src/navigator/navigator-screen/component.tsx +2 -4
  110. package/src/popover/index.tsx +59 -99
  111. package/src/popover/style.scss +0 -9
  112. package/src/range-control/styles/range-control-styles.ts +1 -1
  113. package/src/text-control/style.scss +2 -0
  114. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +2 -2
  115. package/src/toolbar/toolbar/style.scss +1 -1
  116. package/tsconfig.tsbuildinfo +1 -1
  117. package/build-types/custom-select-control-v2/custom-select-item.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_dom","require","_element","_compose","_i18n","_escapeHtml","_context","_useCx","_view","_context2","styles","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","UnconnectedNavigatorScreen","props","forwardedRef","screenId","useId","children","className","path","otherProps","useContextSystem","location","match","addScreen","removeScreen","useContext","NavigatorContext","isMatch","wrapperRef","useRef","useEffect","screen","id","escapeAttribute","isRTL","isRTLFn","isInitial","isBack","cx","useCx","classes","useMemo","navigatorScreen","locationRef","current","isInitialLocation","hasRestoredFocus","skipFocus","activeElement","ownerDocument","contains","elementToFocus","focusTargetSelector","querySelector","firstTabbable","focus","tabbable","find","mergedWrapperRef","useMergeRefs","_react","createElement","View","ref","NavigatorScreen","exports","contextConnect","_default"],"sources":["@wordpress/components/src/navigator/navigator-screen/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseId,\n} from '@wordpress/element';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { isRTL as isRTLFn } from '@wordpress/i18n';\nimport { escapeAttribute } from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport * as styles from '../styles';\nimport type { NavigatorScreenProps } from '../types';\n\nfunction UnconnectedNavigatorScreen(\n\tprops: WordPressComponentProps< NavigatorScreenProps, 'div', false >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst screenId = useId();\n\tconst { children, className, path, ...otherProps } = useContextSystem(\n\t\tprops,\n\t\t'NavigatorScreen'\n\t);\n\n\tconst { location, match, addScreen, removeScreen } =\n\t\tuseContext( NavigatorContext );\n\tconst isMatch = match === screenId;\n\tconst wrapperRef = useRef< HTMLDivElement >( null );\n\n\tuseEffect( () => {\n\t\tconst screen = {\n\t\t\tid: screenId,\n\t\t\tpath: escapeAttribute( path ),\n\t\t};\n\t\taddScreen( screen );\n\t\treturn () => removeScreen( screen );\n\t}, [ screenId, path, addScreen, removeScreen ] );\n\n\tconst isRTL = isRTLFn();\n\tconst { isInitial, isBack } = location;\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() =>\n\t\t\tcx(\n\t\t\t\tstyles.navigatorScreen( {\n\t\t\t\t\tisInitial,\n\t\t\t\t\tisBack,\n\t\t\t\t\tisRTL,\n\t\t\t\t} ),\n\t\t\t\tclassName\n\t\t\t),\n\t\t[ className, cx, isInitial, isBack, isRTL ]\n\t);\n\n\tconst locationRef = useRef( location );\n\n\tuseEffect( () => {\n\t\tlocationRef.current = location;\n\t}, [ location ] );\n\n\t// Focus restoration\n\tconst isInitialLocation = location.isInitial && ! location.isBack;\n\tuseEffect( () => {\n\t\t// Only attempt to restore focus:\n\t\t// - if the current location is not the initial one (to avoid moving focus on page load)\n\t\t// - when the screen becomes visible\n\t\t// - if the wrapper ref has been assigned\n\t\t// - if focus hasn't already been restored for the current location\n\t\t// - if the `skipFocus` option is not set to `true`. This is useful when we trigger the navigation outside of NavigatorScreen.\n\t\tif (\n\t\t\tisInitialLocation ||\n\t\t\t! isMatch ||\n\t\t\t! wrapperRef.current ||\n\t\t\tlocationRef.current.hasRestoredFocus ||\n\t\t\tlocation.skipFocus\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeElement = wrapperRef.current.ownerDocument.activeElement;\n\n\t\t// If an element is already focused within the wrapper do not focus the\n\t\t// element. This prevents inputs or buttons from losing focus unnecessarily.\n\t\tif ( wrapperRef.current.contains( activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet elementToFocus: HTMLElement | null = null;\n\n\t\t// When navigating back, if a selector is provided, use it to look for the\n\t\t// target element (assumed to be a node inside the current NavigatorScreen)\n\t\tif ( location.isBack && location?.focusTargetSelector ) {\n\t\t\telementToFocus = wrapperRef.current.querySelector(\n\t\t\t\tlocation.focusTargetSelector\n\t\t\t);\n\t\t}\n\n\t\t// If the previous query didn't run or find any element to focus, fallback\n\t\t// to the first tabbable element in the screen (or the screen itself).\n\t\tif ( ! elementToFocus ) {\n\t\t\tconst firstTabbable = (\n\t\t\t\tfocus.tabbable.find( wrapperRef.current ) as HTMLElement[]\n\t\t\t )[ 0 ];\n\t\t\telementToFocus = firstTabbable ?? wrapperRef.current;\n\t\t}\n\n\t\tlocationRef.current.hasRestoredFocus = true;\n\t\telementToFocus.focus();\n\t}, [\n\t\tisInitialLocation,\n\t\tisMatch,\n\t\tlocation.isBack,\n\t\tlocation.focusTargetSelector,\n\t\tlocation.skipFocus,\n\t] );\n\n\tconst mergedWrapperRef = useMergeRefs( [ forwardedRef, wrapperRef ] );\n\n\treturn isMatch ? (\n\t\t<View ref={ mergedWrapperRef } className={ classes } { ...otherProps }>\n\t\t\t{ children }\n\t\t</View>\n\t) : null;\n}\n\n/**\n * The `NavigatorScreen` component represents a single view/screen/panel and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorButton` and the `NavigatorBackButton` components (or the `useNavigator`\n * hook).\n *\n * @example\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorBackButton as NavigatorBackButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorBackButton>\n * Go back\n * </NavigatorBackButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorScreen = contextConnect(\n\tUnconnectedNavigatorScreen,\n\t'NavigatorScreen'\n);\n\nexport default NavigatorScreen;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dom","require","_element","_compose","_i18n","_escapeHtml","_context","_useCx","_view","_context2","styles","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","UnconnectedNavigatorScreen","props","forwardedRef","screenId","useId","children","className","path","otherProps","useContextSystem","location","match","addScreen","removeScreen","useContext","NavigatorContext","isMatch","wrapperRef","useRef","useEffect","screen","id","escapeAttribute","isRTL","isRTLFn","isInitial","isBack","cx","useCx","classes","useMemo","navigatorScreen","locationRef","current","isInitialLocation","hasRestoredFocus","skipFocus","activeElement","ownerDocument","contains","elementToFocus","focusTargetSelector","querySelector","firstTabbable","focus","tabbable","find","mergedWrapperRef","useMergeRefs","_react","createElement","View","ref","NavigatorScreen","exports","contextConnect","_default"],"sources":["@wordpress/components/src/navigator/navigator-screen/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseId,\n} from '@wordpress/element';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { isRTL as isRTLFn } from '@wordpress/i18n';\nimport { escapeAttribute } from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport * as styles from '../styles';\nimport type { NavigatorScreenProps } from '../types';\n\nfunction UnconnectedNavigatorScreen(\n\tprops: WordPressComponentProps< NavigatorScreenProps, 'div', false >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst screenId = useId();\n\tconst { children, className, path, ...otherProps } = useContextSystem(\n\t\tprops,\n\t\t'NavigatorScreen'\n\t);\n\n\tconst { location, match, addScreen, removeScreen } =\n\t\tuseContext( NavigatorContext );\n\tconst isMatch = match === screenId;\n\tconst wrapperRef = useRef< HTMLDivElement >( null );\n\n\tuseEffect( () => {\n\t\tconst screen = {\n\t\t\tid: screenId,\n\t\t\tpath: escapeAttribute( path ),\n\t\t};\n\t\taddScreen( screen );\n\t\treturn () => removeScreen( screen );\n\t}, [ screenId, path, addScreen, removeScreen ] );\n\n\tconst isRTL = isRTLFn();\n\tconst { isInitial, isBack } = location;\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() =>\n\t\t\tcx(\n\t\t\t\tstyles.navigatorScreen( {\n\t\t\t\t\tisInitial,\n\t\t\t\t\tisBack,\n\t\t\t\t\tisRTL,\n\t\t\t\t} ),\n\t\t\t\tclassName\n\t\t\t),\n\t\t[ className, cx, isInitial, isBack, isRTL ]\n\t);\n\n\tconst locationRef = useRef( location );\n\n\tuseEffect( () => {\n\t\tlocationRef.current = location;\n\t}, [ location ] );\n\n\t// Focus restoration\n\tconst isInitialLocation = location.isInitial && ! location.isBack;\n\tuseEffect( () => {\n\t\t// Only attempt to restore focus:\n\t\t// - if the current location is not the initial one (to avoid moving focus on page load)\n\t\t// - when the screen becomes visible\n\t\t// - if the wrapper ref has been assigned\n\t\t// - if focus hasn't already been restored for the current location\n\t\t// - if the `skipFocus` option is not set to `true`. This is useful when we trigger the navigation outside of NavigatorScreen.\n\t\tif (\n\t\t\tisInitialLocation ||\n\t\t\t! isMatch ||\n\t\t\t! wrapperRef.current ||\n\t\t\tlocationRef.current.hasRestoredFocus ||\n\t\t\tlocation.skipFocus\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeElement = wrapperRef.current.ownerDocument.activeElement;\n\n\t\t// If an element is already focused within the wrapper do not focus the\n\t\t// element. This prevents inputs or buttons from losing focus unnecessarily.\n\t\tif ( wrapperRef.current.contains( activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet elementToFocus: HTMLElement | null = null;\n\n\t\t// When navigating back, if a selector is provided, use it to look for the\n\t\t// target element (assumed to be a node inside the current NavigatorScreen)\n\t\tif ( location.isBack && location.focusTargetSelector ) {\n\t\t\telementToFocus = wrapperRef.current.querySelector(\n\t\t\t\tlocation.focusTargetSelector\n\t\t\t);\n\t\t}\n\n\t\t// If the previous query didn't run or find any element to focus, fallback\n\t\t// to the first tabbable element in the screen (or the screen itself).\n\t\tif ( ! elementToFocus ) {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( wrapperRef.current );\n\t\t\telementToFocus = firstTabbable ?? wrapperRef.current;\n\t\t}\n\n\t\tlocationRef.current.hasRestoredFocus = true;\n\t\telementToFocus.focus();\n\t}, [\n\t\tisInitialLocation,\n\t\tisMatch,\n\t\tlocation.isBack,\n\t\tlocation.focusTargetSelector,\n\t\tlocation.skipFocus,\n\t] );\n\n\tconst mergedWrapperRef = useMergeRefs( [ forwardedRef, wrapperRef ] );\n\n\treturn isMatch ? (\n\t\t<View ref={ mergedWrapperRef } className={ classes } { ...otherProps }>\n\t\t\t{ children }\n\t\t</View>\n\t) : null;\n}\n\n/**\n * The `NavigatorScreen` component represents a single view/screen/panel and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorButton` and the `NavigatorBackButton` components (or the `useNavigator`\n * hook).\n *\n * @example\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorBackButton as NavigatorBackButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorBackButton>\n * Go back\n * </NavigatorBackButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorScreen = contextConnect(\n\tUnconnectedNavigatorScreen,\n\t'NavigatorScreen'\n);\n\nexport default NavigatorScreen;\n"],"mappings":"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"}
@@ -70,7 +70,7 @@ const getPopoverFallbackContainer = () => {
70
70
  }
71
71
  return container;
72
72
  };
73
- const UnconnectedPopover = (props, forwardedRef) => {
73
+ const UnforwardedPopover = (props, forwardedRef) => {
74
74
  const {
75
75
  animate = true,
76
76
  headerTitle,
@@ -249,7 +249,7 @@ const UnconnectedPopover = (props, forwardedRef) => {
249
249
  x: (0, _utils.computePopoverPosition)(x),
250
250
  y: (0, _utils.computePopoverPosition)(y)
251
251
  };
252
- const shouldReduceMotion = (0, _framerMotion.useReducedMotion)();
252
+ const shouldReduceMotion = (0, _compose.useReducedMotion)();
253
253
  const shouldAnimate = animate && !isExpanded && !shouldReduceMotion;
254
254
  const [animationFinished, setAnimationFinished] = (0, _element.useState)(false);
255
255
  const {
@@ -271,33 +271,8 @@ const UnconnectedPopover = (props, forwardedRef) => {
271
271
  // When Floating UI has finished positioning and Framer Motion has finished animating
272
272
  // the popover, add the `is-positioned` class to signal that all transitions have finished.
273
273
  const isPositioned = (!shouldAnimate || animationFinished) && x !== null && y !== null;
274
-
275
- // In case a `ColorPicker` component is rendered as a child of `Popover`,
276
- // the `Popover` component can be notified of when the user is dragging
277
- // parts of the `ColorPicker` UI (this is possible because the `ColorPicker`
278
- // component exposes the `onPickerDragStart` and `onPickerDragEnd` props
279
- // via internal context).
280
- // While the user is performing a pointer drag, the `Popover` will render
281
- // a transparent backdrop element that will serve as a "pointer events trap",
282
- // making sure that no pointer events reach any potential `iframe` element
283
- // underneath (like, for example, the editor canvas in the WordPress editor).
284
- const [showBackdrop, setShowBackdrop] = (0, _element.useState)(false);
285
- const contextValue = (0, _element.useMemo)(() => ({
286
- ColorPicker: {
287
- onPickerDragStart() {
288
- setShowBackdrop(true);
289
- },
290
- onPickerDragEnd() {
291
- setShowBackdrop(false);
292
- }
293
- }
294
- }), []);
295
- let content = (0, _react.createElement)(_react.Fragment, null, showBackdrop && (0, _react.createElement)("div", {
296
- className: "components-popover-pointer-events-trap",
297
- "aria-hidden": "true",
298
- onClick: () => setShowBackdrop(false)
299
- }), (0, _react.createElement)(_framerMotion.motion.div, {
300
- className: (0, _classnames.default)('components-popover', className, {
274
+ let content = (0, _react.createElement)(_framerMotion.motion.div, {
275
+ className: (0, _classnames.default)(className, {
301
276
  'is-expanded': isExpanded,
302
277
  'is-positioned': isPositioned,
303
278
  // Use the 'alternate' classname for 'toolbar' variant for back compat.
@@ -318,16 +293,14 @@ const UnconnectedPopover = (props, forwardedRef) => {
318
293
  onClick: onClose
319
294
  })), (0, _react.createElement)("div", {
320
295
  className: "components-popover__content"
321
- }, (0, _react.createElement)(_context.ContextSystemProvider, {
322
- value: contextValue
323
- }, children)), hasArrow && (0, _react.createElement)("div", {
296
+ }, children), hasArrow && (0, _react.createElement)("div", {
324
297
  ref: arrowCallbackRef,
325
298
  className: ['components-popover__arrow', `is-${computedPlacement.split('-')[0]}`].join(' '),
326
299
  style: {
327
300
  left: typeof arrowData?.x !== 'undefined' && Number.isFinite(arrowData.x) ? `${arrowData.x}px` : '',
328
301
  top: typeof arrowData?.y !== 'undefined' && Number.isFinite(arrowData.y) ? `${arrowData.y}px` : ''
329
302
  }
330
- }, (0, _react.createElement)(ArrowTriangle, null))));
303
+ }, (0, _react.createElement)(ArrowTriangle, null)));
331
304
  const shouldRenderWithinSlot = slot.ref && !inline;
332
305
  const hasAnchor = anchorRef || anchorRect || anchor;
333
306
  if (shouldRenderWithinSlot) {
@@ -370,7 +343,7 @@ const UnconnectedPopover = (props, forwardedRef) => {
370
343
  * ```
371
344
  *
372
345
  */
373
- const Popover = exports.Popover = (0, _context.contextConnect)(UnconnectedPopover, 'Popover');
346
+ const Popover = exports.Popover = (0, _context.contextConnect)(UnforwardedPopover, 'Popover');
374
347
  function PopoverSlot({
375
348
  name = SLOT_NAME
376
349
  }, ref) {
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_reactDom","_framerMotion","_element","_compose","_icons","_deprecated","_primitives","_button","_scrollLock","_slotFill","_utils","_context","_overlayMiddlewares","_styleProvider","SLOT_NAME","exports","ArrowTriangle","_react","createElement","SVG","xmlns","viewBox","className","role","Path","d","vectorEffect","slotNameContext","createContext","undefined","fallbackContainerClassname","getPopoverFallbackContainer","container","document","body","querySelector","append","UnconnectedPopover","props","forwardedRef","animate","headerTitle","constrainTabbing","onClose","children","noArrow","position","placement","placementProp","offset","offsetProp","focusOnMount","anchor","expandOnMobile","onFocusOutside","__unstableSlotName","flip","resize","shift","inline","variant","__unstableForcePosition","anchorRef","anchorRect","getAnchorRect","isAlternate","contentProps","useContextSystem","computedFlipProp","computedResizeProp","deprecated","since","version","alternative","computedVariant","arrowRef","useRef","fallbackReferenceElement","setFallbackReferenceElement","useState","anchorRefFallback","useCallback","node","isMobileViewport","useViewportMatch","isExpanded","hasArrow","normalizedPlacementFromProps","positionToPlacement","middleware","overlayMiddlewares","offsetMiddleware","flipMiddleware","size","apply","sizeProps","_refs$floating$curren","firstElementChild","refs","floating","current","HTMLElement","Object","assign","style","maxHeight","availableHeight","overflow","shiftMiddleware","crossAxis","limiter","limitShift","padding","arrow","element","slotName","useContext","slot","useSlot","onDialogClose","type","event","dialogRef","dialogProps","useDialog","__unstableOnClose","x","y","strategy","update","computedPlacement","middlewareData","arrowData","useFloating","whileElementsMounted","referenceParam","floatingParam","updateParam","autoUpdate","layoutShift","animationFrame","arrowCallbackRef","anchorRefTop","top","anchorRefBottom","bottom","anchorRefStartContainer","startContainer","anchorRefCurrent","useLayoutEffect","resultingReferenceElement","getReferenceElement","setReference","mergedFloatingRef","useMergeRefs","setFloating","left","computePopoverPosition","shouldReduceMotion","useReducedMotion","shouldAnimate","animationFinished","setAnimationFinished","motionInlineStyles","otherMotionProps","useMemo","placementToMotionAnimationProps","animationProps","onAnimationComplete","isPositioned","showBackdrop","setShowBackdrop","contextValue","ColorPicker","onPickerDragStart","onPickerDragEnd","content","Fragment","onClick","motion","div","classnames","ref","tabIndex","default","icon","close","ContextSystemProvider","value","split","join","Number","isFinite","shouldRenderWithinSlot","hasAnchor","Fill","name","createPortal","StyleProvider","Popover","contextConnect","PopoverSlot","Slot","bubblesVirtually","forwardRef","__unstableSlotNameProvider","Provider","_default"],"sources":["@wordpress/components/src/popover/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef, SyntheticEvent, RefCallback } from 'react';\nimport classnames from 'classnames';\nimport {\n\tuseFloating,\n\tflip as flipMiddleware,\n\tshift as shiftMiddleware,\n\tlimitShift,\n\tautoUpdate,\n\tarrow,\n\toffset as offsetMiddleware,\n\tsize,\n} from '@floating-ui/react-dom';\n// eslint-disable-next-line no-restricted-imports\nimport type { HTMLMotionProps, MotionProps } from 'framer-motion';\n// eslint-disable-next-line no-restricted-imports\nimport { motion, useReducedMotion } from 'framer-motion';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseLayoutEffect,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tcreatePortal,\n} from '@wordpress/element';\nimport {\n\tuseViewportMatch,\n\tuseMergeRefs,\n\t__experimentalUseDialog as useDialog,\n} from '@wordpress/compose';\nimport { close } from '@wordpress/icons';\nimport deprecated from '@wordpress/deprecated';\nimport { Path, SVG } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport ScrollLock from '../scroll-lock';\nimport { Slot, Fill, useSlot } from '../slot-fill';\nimport {\n\tcomputePopoverPosition,\n\tpositionToPlacement,\n\tplacementToMotionAnimationProps,\n\tgetReferenceElement,\n} from './utils';\nimport {\n\tcontextConnect,\n\tuseContextSystem,\n\tContextSystemProvider,\n} from '../context';\nimport type { WordPressComponentProps } from '../context';\nimport type {\n\tPopoverProps,\n\tPopoverAnchorRefReference,\n\tPopoverAnchorRefTopBottom,\n} from './types';\nimport { overlayMiddlewares } from './overlay-middlewares';\nimport { StyleProvider } from '../style-provider';\n\n/**\n * Name of slot in which popover should fill.\n *\n * @type {string}\n */\nexport const SLOT_NAME = 'Popover';\n\n// An SVG displaying a triangle facing down, filled with a solid\n// color and bordered in such a way to create an arrow-like effect.\n// Keeping the SVG's viewbox squared simplify the arrow positioning\n// calculations.\nconst ArrowTriangle = () => (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox={ `0 0 100 100` }\n\t\tclassName=\"components-popover__triangle\"\n\t\trole=\"presentation\"\n\t>\n\t\t<Path\n\t\t\tclassName=\"components-popover__triangle-bg\"\n\t\t\td=\"M 0 0 L 50 50 L 100 0\"\n\t\t/>\n\t\t<Path\n\t\t\tclassName=\"components-popover__triangle-border\"\n\t\t\td=\"M 0 0 L 50 50 L 100 0\"\n\t\t\tvectorEffect=\"non-scaling-stroke\"\n\t\t/>\n\t</SVG>\n);\n\nconst slotNameContext = createContext< string | undefined >( undefined );\n\nconst fallbackContainerClassname = 'components-popover__fallback-container';\nconst getPopoverFallbackContainer = () => {\n\tlet container = document.body.querySelector(\n\t\t'.' + fallbackContainerClassname\n\t);\n\tif ( ! container ) {\n\t\tcontainer = document.createElement( 'div' );\n\t\tcontainer.className = fallbackContainerClassname;\n\t\tdocument.body.append( container );\n\t}\n\n\treturn container;\n};\n\nconst UnconnectedPopover = (\n\tprops: Omit<\n\t\tWordPressComponentProps< PopoverProps, 'div', false >,\n\t\t// To avoid overlaps between the standard HTML attributes and the props\n\t\t// expected by `framer-motion`, omit all framer motion props from popover\n\t\t// props (except for `animate` and `children`, which are re-defined in `PopoverProps`).\n\t\tkeyof Omit< MotionProps, 'animate' | 'children' >\n\t>,\n\tforwardedRef: ForwardedRef< any >\n) => {\n\tconst {\n\t\tanimate = true,\n\t\theaderTitle,\n\t\tconstrainTabbing,\n\t\tonClose,\n\t\tchildren,\n\t\tclassName,\n\t\tnoArrow = true,\n\t\tposition,\n\t\tplacement: placementProp = 'bottom-start',\n\t\toffset: offsetProp = 0,\n\t\tfocusOnMount = 'firstElement',\n\t\tanchor,\n\t\texpandOnMobile,\n\t\tonFocusOutside,\n\t\t__unstableSlotName = SLOT_NAME,\n\t\tflip = true,\n\t\tresize = true,\n\t\tshift = false,\n\t\tinline = false,\n\t\tvariant,\n\n\t\t// Deprecated props\n\t\t__unstableForcePosition,\n\t\tanchorRef,\n\t\tanchorRect,\n\t\tgetAnchorRect,\n\t\tisAlternate,\n\n\t\t// Rest\n\t\t...contentProps\n\t} = useContextSystem( props, 'Popover' );\n\n\tlet computedFlipProp = flip;\n\tlet computedResizeProp = resize;\n\tif ( __unstableForcePosition !== undefined ) {\n\t\tdeprecated( '`__unstableForcePosition` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: '`flip={ false }` and `resize={ false }`',\n\t\t} );\n\n\t\t// Back-compat, set the `flip` and `resize` props\n\t\t// to `false` to replicate `__unstableForcePosition`.\n\t\tcomputedFlipProp = ! __unstableForcePosition;\n\t\tcomputedResizeProp = ! __unstableForcePosition;\n\t}\n\n\tif ( anchorRef !== undefined ) {\n\t\tdeprecated( '`anchorRef` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\talternative: '`anchor` prop',\n\t\t} );\n\t}\n\n\tif ( anchorRect !== undefined ) {\n\t\tdeprecated( '`anchorRect` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\talternative: '`anchor` prop',\n\t\t} );\n\t}\n\n\tif ( getAnchorRect !== undefined ) {\n\t\tdeprecated( '`getAnchorRect` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\talternative: '`anchor` prop',\n\t\t} );\n\t}\n\n\tconst computedVariant = isAlternate ? 'toolbar' : variant;\n\tif ( isAlternate !== undefined ) {\n\t\tdeprecated( '`isAlternate` prop in wp.components.Popover', {\n\t\t\tsince: '6.2',\n\t\t\talternative: \"`variant` prop with the `'toolbar'` value\",\n\t\t} );\n\t}\n\n\tconst arrowRef = useRef< HTMLElement | null >( null );\n\n\tconst [ fallbackReferenceElement, setFallbackReferenceElement ] =\n\t\tuseState< HTMLSpanElement | null >( null );\n\n\tconst anchorRefFallback: RefCallback< HTMLSpanElement > = useCallback(\n\t\t( node ) => {\n\t\t\tsetFallbackReferenceElement( node );\n\t\t},\n\t\t[]\n\t);\n\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst isExpanded = expandOnMobile && isMobileViewport;\n\tconst hasArrow = ! isExpanded && ! noArrow;\n\tconst normalizedPlacementFromProps = position\n\t\t? positionToPlacement( position )\n\t\t: placementProp;\n\n\tconst middleware = [\n\t\t...( placementProp === 'overlay' ? overlayMiddlewares() : [] ),\n\t\toffsetMiddleware( offsetProp ),\n\t\tcomputedFlipProp && flipMiddleware(),\n\t\tcomputedResizeProp &&\n\t\t\tsize( {\n\t\t\t\tapply( sizeProps ) {\n\t\t\t\t\tconst { firstElementChild } = refs.floating.current ?? {};\n\n\t\t\t\t\t// Only HTMLElement instances have the `style` property.\n\t\t\t\t\tif ( ! ( firstElementChild instanceof HTMLElement ) )\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Reduce the height of the popover to the available space.\n\t\t\t\t\tObject.assign( firstElementChild.style, {\n\t\t\t\t\t\tmaxHeight: `${ sizeProps.availableHeight }px`,\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\t\tshift &&\n\t\t\tshiftMiddleware( {\n\t\t\t\tcrossAxis: true,\n\t\t\t\tlimiter: limitShift(),\n\t\t\t\tpadding: 1, // Necessary to avoid flickering at the edge of the viewport.\n\t\t\t} ),\n\t\tarrow( { element: arrowRef } ),\n\t];\n\tconst slotName = useContext( slotNameContext ) || __unstableSlotName;\n\tconst slot = useSlot( slotName );\n\n\tlet onDialogClose;\n\n\tif ( onClose || onFocusOutside ) {\n\t\tonDialogClose = ( type: string | undefined, event: SyntheticEvent ) => {\n\t\t\t// Ideally the popover should have just a single onClose prop and\n\t\t\t// not three props that potentially do the same thing.\n\t\t\tif ( type === 'focus-outside' && onFocusOutside ) {\n\t\t\t\tonFocusOutside( event );\n\t\t\t} else if ( onClose ) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t};\n\t}\n\n\tconst [ dialogRef, dialogProps ] = useDialog( {\n\t\tconstrainTabbing,\n\t\tfocusOnMount,\n\t\t__unstableOnClose: onDialogClose,\n\t\t// @ts-expect-error The __unstableOnClose property needs to be deprecated first (see https://github.com/WordPress/gutenberg/pull/27675)\n\t\tonClose: onDialogClose,\n\t} );\n\n\tconst {\n\t\t// Positioning coordinates\n\t\tx,\n\t\ty,\n\t\t// Object with \"regular\" refs to both \"reference\" and \"floating\"\n\t\trefs,\n\t\t// Type of CSS position property to use (absolute or fixed)\n\t\tstrategy,\n\t\tupdate,\n\t\tplacement: computedPlacement,\n\t\tmiddlewareData: { arrow: arrowData },\n\t} = useFloating( {\n\t\tplacement:\n\t\t\tnormalizedPlacementFromProps === 'overlay'\n\t\t\t\t? undefined\n\t\t\t\t: normalizedPlacementFromProps,\n\t\tmiddleware,\n\t\twhileElementsMounted: ( referenceParam, floatingParam, updateParam ) =>\n\t\t\tautoUpdate( referenceParam, floatingParam, updateParam, {\n\t\t\t\tlayoutShift: false,\n\t\t\t\tanimationFrame: true,\n\t\t\t} ),\n\t} );\n\n\tconst arrowCallbackRef = useCallback(\n\t\t( node: HTMLElement | null ) => {\n\t\t\tarrowRef.current = node;\n\t\t\tupdate();\n\t\t},\n\t\t[ update ]\n\t);\n\n\t// When any of the possible anchor \"sources\" change,\n\t// recompute the reference element (real or virtual) and its owner document.\n\n\tconst anchorRefTop = ( anchorRef as PopoverAnchorRefTopBottom | undefined )\n\t\t?.top;\n\tconst anchorRefBottom = (\n\t\tanchorRef as PopoverAnchorRefTopBottom | undefined\n\t )?.bottom;\n\tconst anchorRefStartContainer = ( anchorRef as Range | undefined )\n\t\t?.startContainer;\n\tconst anchorRefCurrent = ( anchorRef as PopoverAnchorRefReference )\n\t\t?.current;\n\n\tuseLayoutEffect( () => {\n\t\tconst resultingReferenceElement = getReferenceElement( {\n\t\t\tanchor,\n\t\t\tanchorRef,\n\t\t\tanchorRect,\n\t\t\tgetAnchorRect,\n\t\t\tfallbackReferenceElement,\n\t\t} );\n\n\t\trefs.setReference( resultingReferenceElement );\n\t}, [\n\t\tanchor,\n\t\tanchorRef,\n\t\tanchorRefTop,\n\t\tanchorRefBottom,\n\t\tanchorRefStartContainer,\n\t\tanchorRefCurrent,\n\t\tanchorRect,\n\t\tgetAnchorRect,\n\t\tfallbackReferenceElement,\n\t\trefs,\n\t] );\n\n\tconst mergedFloatingRef = useMergeRefs( [\n\t\trefs.setFloating,\n\t\tdialogRef,\n\t\tforwardedRef,\n\t] );\n\n\tconst style = isExpanded\n\t\t? undefined\n\t\t: {\n\t\t\t\tposition: strategy,\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\t// `x` and `y` are framer-motion specific props and are shorthands\n\t\t\t\t// for `translateX` and `translateY`. Currently it is not possible\n\t\t\t\t// to use `translateX` and `translateY` because those values would\n\t\t\t\t// be overridden by the return value of the\n\t\t\t\t// `placementToMotionAnimationProps` function.\n\t\t\t\tx: computePopoverPosition( x ),\n\t\t\t\ty: computePopoverPosition( y ),\n\t\t };\n\n\tconst shouldReduceMotion = useReducedMotion();\n\tconst shouldAnimate = animate && ! isExpanded && ! shouldReduceMotion;\n\n\tconst [ animationFinished, setAnimationFinished ] = useState( false );\n\n\tconst { style: motionInlineStyles, ...otherMotionProps } = useMemo(\n\t\t() => placementToMotionAnimationProps( computedPlacement ),\n\t\t[ computedPlacement ]\n\t);\n\n\tconst animationProps: HTMLMotionProps< 'div' > = shouldAnimate\n\t\t? {\n\t\t\t\tstyle: {\n\t\t\t\t\t...motionInlineStyles,\n\t\t\t\t\t...style,\n\t\t\t\t},\n\t\t\t\tonAnimationComplete: () => setAnimationFinished( true ),\n\t\t\t\t...otherMotionProps,\n\t\t }\n\t\t: {\n\t\t\t\tanimate: false,\n\t\t\t\tstyle,\n\t\t };\n\n\t// When Floating UI has finished positioning and Framer Motion has finished animating\n\t// the popover, add the `is-positioned` class to signal that all transitions have finished.\n\tconst isPositioned =\n\t\t( ! shouldAnimate || animationFinished ) && x !== null && y !== null;\n\n\t// In case a `ColorPicker` component is rendered as a child of `Popover`,\n\t// the `Popover` component can be notified of when the user is dragging\n\t// parts of the `ColorPicker` UI (this is possible because the `ColorPicker`\n\t// component exposes the `onPickerDragStart` and `onPickerDragEnd` props\n\t// via internal context).\n\t// While the user is performing a pointer drag, the `Popover` will render\n\t// a transparent backdrop element that will serve as a \"pointer events trap\",\n\t// making sure that no pointer events reach any potential `iframe` element\n\t// underneath (like, for example, the editor canvas in the WordPress editor).\n\tconst [ showBackdrop, setShowBackdrop ] = useState( false );\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tColorPicker: {\n\t\t\t\tonPickerDragStart() {\n\t\t\t\t\tsetShowBackdrop( true );\n\t\t\t\t},\n\t\t\t\tonPickerDragEnd() {\n\t\t\t\t\tsetShowBackdrop( false );\n\t\t\t\t},\n\t\t\t},\n\t\t} ),\n\t\t[]\n\t);\n\n\tlet content = (\n\t\t<>\n\t\t\t{ showBackdrop && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"components-popover-pointer-events-trap\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tonClick={ () => setShowBackdrop( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<motion.div\n\t\t\t\tclassName={ classnames( 'components-popover', className, {\n\t\t\t\t\t'is-expanded': isExpanded,\n\t\t\t\t\t'is-positioned': isPositioned,\n\t\t\t\t\t// Use the 'alternate' classname for 'toolbar' variant for back compat.\n\t\t\t\t\t[ `is-${\n\t\t\t\t\t\tcomputedVariant === 'toolbar'\n\t\t\t\t\t\t\t? 'alternate'\n\t\t\t\t\t\t\t: computedVariant\n\t\t\t\t\t}` ]: computedVariant,\n\t\t\t\t} ) }\n\t\t\t\t{ ...animationProps }\n\t\t\t\t{ ...contentProps }\n\t\t\t\tref={ mergedFloatingRef }\n\t\t\t\t{ ...dialogProps }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t>\n\t\t\t\t{ /* Prevents scroll on the document */ }\n\t\t\t\t{ isExpanded && <ScrollLock /> }\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<div className=\"components-popover__header\">\n\t\t\t\t\t\t<span className=\"components-popover__header-title\">\n\t\t\t\t\t\t\t{ headerTitle }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"components-popover__close\"\n\t\t\t\t\t\t\ticon={ close }\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<div className=\"components-popover__content\">\n\t\t\t\t\t<ContextSystemProvider value={ contextValue }>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</ContextSystemProvider>\n\t\t\t\t</div>\n\t\t\t\t{ hasArrow && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={ arrowCallbackRef }\n\t\t\t\t\t\tclassName={ [\n\t\t\t\t\t\t\t'components-popover__arrow',\n\t\t\t\t\t\t\t`is-${ computedPlacement.split( '-' )[ 0 ] }`,\n\t\t\t\t\t\t].join( ' ' ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tleft:\n\t\t\t\t\t\t\t\ttypeof arrowData?.x !== 'undefined' &&\n\t\t\t\t\t\t\t\tNumber.isFinite( arrowData.x )\n\t\t\t\t\t\t\t\t\t? `${ arrowData.x }px`\n\t\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t\t\ttop:\n\t\t\t\t\t\t\t\ttypeof arrowData?.y !== 'undefined' &&\n\t\t\t\t\t\t\t\tNumber.isFinite( arrowData.y )\n\t\t\t\t\t\t\t\t\t? `${ arrowData.y }px`\n\t\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ArrowTriangle />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</motion.div>\n\t\t</>\n\t);\n\n\tconst shouldRenderWithinSlot = slot.ref && ! inline;\n\tconst hasAnchor = anchorRef || anchorRect || anchor;\n\n\tif ( shouldRenderWithinSlot ) {\n\t\tcontent = <Fill name={ slotName }>{ content }</Fill>;\n\t} else if ( ! inline ) {\n\t\tcontent = createPortal(\n\t\t\t<StyleProvider document={ document }>{ content }</StyleProvider>,\n\t\t\tgetPopoverFallbackContainer()\n\t\t);\n\t}\n\n\tif ( hasAnchor ) {\n\t\treturn content;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<span ref={ anchorRefFallback } />\n\t\t\t{ content }\n\t\t</>\n\t);\n};\n\n/**\n * `Popover` renders its content in a floating modal. If no explicit anchor is passed via props, it anchors to its parent element by default.\n *\n * ```jsx\n * import { Button, Popover } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyPopover = () => {\n * \tconst [ isVisible, setIsVisible ] = useState( false );\n * \tconst toggleVisible = () => {\n * \t\tsetIsVisible( ( state ) => ! state );\n * \t};\n *\n * \treturn (\n * \t\t<Button variant=\"secondary\" onClick={ toggleVisible }>\n * \t\t\tToggle Popover!\n * \t\t\t{ isVisible && <Popover>Popover is toggled!</Popover> }\n * \t\t</Button>\n * \t);\n * };\n * ```\n *\n */\nexport const Popover = contextConnect( UnconnectedPopover, 'Popover' );\n\nfunction PopoverSlot(\n\t{ name = SLOT_NAME }: { name?: string },\n\tref: ForwardedRef< any >\n) {\n\treturn (\n\t\t<Slot\n\t\t\tbubblesVirtually\n\t\t\tname={ name }\n\t\t\tclassName=\"popover-slot\"\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\n// @ts-expect-error For Legacy Reasons\nPopover.Slot = forwardRef( PopoverSlot );\n// @ts-expect-error For Legacy Reasons\nPopover.__unstableSlotNameProvider = slotNameContext.Provider;\n\nexport default Popover;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_reactDom","_framerMotion","_element","_compose","_icons","_deprecated","_primitives","_button","_scrollLock","_slotFill","_utils","_context","_overlayMiddlewares","_styleProvider","SLOT_NAME","exports","ArrowTriangle","_react","createElement","SVG","xmlns","viewBox","className","role","Path","d","vectorEffect","slotNameContext","createContext","undefined","fallbackContainerClassname","getPopoverFallbackContainer","container","document","body","querySelector","append","UnforwardedPopover","props","forwardedRef","animate","headerTitle","constrainTabbing","onClose","children","noArrow","position","placement","placementProp","offset","offsetProp","focusOnMount","anchor","expandOnMobile","onFocusOutside","__unstableSlotName","flip","resize","shift","inline","variant","__unstableForcePosition","anchorRef","anchorRect","getAnchorRect","isAlternate","contentProps","useContextSystem","computedFlipProp","computedResizeProp","deprecated","since","version","alternative","computedVariant","arrowRef","useRef","fallbackReferenceElement","setFallbackReferenceElement","useState","anchorRefFallback","useCallback","node","isMobileViewport","useViewportMatch","isExpanded","hasArrow","normalizedPlacementFromProps","positionToPlacement","middleware","overlayMiddlewares","offsetMiddleware","flipMiddleware","size","apply","sizeProps","_refs$floating$curren","firstElementChild","refs","floating","current","HTMLElement","Object","assign","style","maxHeight","availableHeight","overflow","shiftMiddleware","crossAxis","limiter","limitShift","padding","arrow","element","slotName","useContext","slot","useSlot","onDialogClose","type","event","dialogRef","dialogProps","useDialog","__unstableOnClose","x","y","strategy","update","computedPlacement","middlewareData","arrowData","useFloating","whileElementsMounted","referenceParam","floatingParam","updateParam","autoUpdate","layoutShift","animationFrame","arrowCallbackRef","anchorRefTop","top","anchorRefBottom","bottom","anchorRefStartContainer","startContainer","anchorRefCurrent","useLayoutEffect","resultingReferenceElement","getReferenceElement","setReference","mergedFloatingRef","useMergeRefs","setFloating","left","computePopoverPosition","shouldReduceMotion","useReducedMotion","shouldAnimate","animationFinished","setAnimationFinished","motionInlineStyles","otherMotionProps","useMemo","placementToMotionAnimationProps","animationProps","onAnimationComplete","isPositioned","content","motion","div","classnames","ref","tabIndex","default","icon","close","onClick","split","join","Number","isFinite","shouldRenderWithinSlot","hasAnchor","Fill","name","createPortal","StyleProvider","Fragment","Popover","contextConnect","PopoverSlot","Slot","bubblesVirtually","forwardRef","__unstableSlotNameProvider","Provider","_default"],"sources":["@wordpress/components/src/popover/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef, SyntheticEvent, RefCallback } from 'react';\nimport classnames from 'classnames';\nimport {\n\tuseFloating,\n\tflip as flipMiddleware,\n\tshift as shiftMiddleware,\n\tlimitShift,\n\tautoUpdate,\n\tarrow,\n\toffset as offsetMiddleware,\n\tsize,\n} from '@floating-ui/react-dom';\n// eslint-disable-next-line no-restricted-imports\nimport type { HTMLMotionProps, MotionProps } from 'framer-motion';\n// eslint-disable-next-line no-restricted-imports\nimport { motion } from 'framer-motion';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseLayoutEffect,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tcreatePortal,\n} from '@wordpress/element';\nimport {\n\tuseReducedMotion,\n\tuseViewportMatch,\n\tuseMergeRefs,\n\t__experimentalUseDialog as useDialog,\n} from '@wordpress/compose';\nimport { close } from '@wordpress/icons';\nimport deprecated from '@wordpress/deprecated';\nimport { Path, SVG } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport ScrollLock from '../scroll-lock';\nimport { Slot, Fill, useSlot } from '../slot-fill';\nimport {\n\tcomputePopoverPosition,\n\tpositionToPlacement,\n\tplacementToMotionAnimationProps,\n\tgetReferenceElement,\n} from './utils';\nimport { contextConnect, useContextSystem } from '../context';\nimport type { WordPressComponentProps } from '../context';\nimport type {\n\tPopoverProps,\n\tPopoverAnchorRefReference,\n\tPopoverAnchorRefTopBottom,\n} from './types';\nimport { overlayMiddlewares } from './overlay-middlewares';\nimport { StyleProvider } from '../style-provider';\n\n/**\n * Name of slot in which popover should fill.\n *\n * @type {string}\n */\nexport const SLOT_NAME = 'Popover';\n\n// An SVG displaying a triangle facing down, filled with a solid\n// color and bordered in such a way to create an arrow-like effect.\n// Keeping the SVG's viewbox squared simplify the arrow positioning\n// calculations.\nconst ArrowTriangle = () => (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox={ `0 0 100 100` }\n\t\tclassName=\"components-popover__triangle\"\n\t\trole=\"presentation\"\n\t>\n\t\t<Path\n\t\t\tclassName=\"components-popover__triangle-bg\"\n\t\t\td=\"M 0 0 L 50 50 L 100 0\"\n\t\t/>\n\t\t<Path\n\t\t\tclassName=\"components-popover__triangle-border\"\n\t\t\td=\"M 0 0 L 50 50 L 100 0\"\n\t\t\tvectorEffect=\"non-scaling-stroke\"\n\t\t/>\n\t</SVG>\n);\n\nconst slotNameContext = createContext< string | undefined >( undefined );\n\nconst fallbackContainerClassname = 'components-popover__fallback-container';\nconst getPopoverFallbackContainer = () => {\n\tlet container = document.body.querySelector(\n\t\t'.' + fallbackContainerClassname\n\t);\n\tif ( ! container ) {\n\t\tcontainer = document.createElement( 'div' );\n\t\tcontainer.className = fallbackContainerClassname;\n\t\tdocument.body.append( container );\n\t}\n\n\treturn container;\n};\n\nconst UnforwardedPopover = (\n\tprops: Omit<\n\t\tWordPressComponentProps< PopoverProps, 'div', false >,\n\t\t// To avoid overlaps between the standard HTML attributes and the props\n\t\t// expected by `framer-motion`, omit all framer motion props from popover\n\t\t// props (except for `animate` and `children`, which are re-defined in `PopoverProps`).\n\t\tkeyof Omit< MotionProps, 'animate' | 'children' >\n\t>,\n\tforwardedRef: ForwardedRef< any >\n) => {\n\tconst {\n\t\tanimate = true,\n\t\theaderTitle,\n\t\tconstrainTabbing,\n\t\tonClose,\n\t\tchildren,\n\t\tclassName,\n\t\tnoArrow = true,\n\t\tposition,\n\t\tplacement: placementProp = 'bottom-start',\n\t\toffset: offsetProp = 0,\n\t\tfocusOnMount = 'firstElement',\n\t\tanchor,\n\t\texpandOnMobile,\n\t\tonFocusOutside,\n\t\t__unstableSlotName = SLOT_NAME,\n\t\tflip = true,\n\t\tresize = true,\n\t\tshift = false,\n\t\tinline = false,\n\t\tvariant,\n\n\t\t// Deprecated props\n\t\t__unstableForcePosition,\n\t\tanchorRef,\n\t\tanchorRect,\n\t\tgetAnchorRect,\n\t\tisAlternate,\n\n\t\t// Rest\n\t\t...contentProps\n\t} = useContextSystem( props, 'Popover' );\n\n\tlet computedFlipProp = flip;\n\tlet computedResizeProp = resize;\n\tif ( __unstableForcePosition !== undefined ) {\n\t\tdeprecated( '`__unstableForcePosition` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: '`flip={ false }` and `resize={ false }`',\n\t\t} );\n\n\t\t// Back-compat, set the `flip` and `resize` props\n\t\t// to `false` to replicate `__unstableForcePosition`.\n\t\tcomputedFlipProp = ! __unstableForcePosition;\n\t\tcomputedResizeProp = ! __unstableForcePosition;\n\t}\n\n\tif ( anchorRef !== undefined ) {\n\t\tdeprecated( '`anchorRef` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\talternative: '`anchor` prop',\n\t\t} );\n\t}\n\n\tif ( anchorRect !== undefined ) {\n\t\tdeprecated( '`anchorRect` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\talternative: '`anchor` prop',\n\t\t} );\n\t}\n\n\tif ( getAnchorRect !== undefined ) {\n\t\tdeprecated( '`getAnchorRect` prop in wp.components.Popover', {\n\t\t\tsince: '6.1',\n\t\t\talternative: '`anchor` prop',\n\t\t} );\n\t}\n\n\tconst computedVariant = isAlternate ? 'toolbar' : variant;\n\tif ( isAlternate !== undefined ) {\n\t\tdeprecated( '`isAlternate` prop in wp.components.Popover', {\n\t\t\tsince: '6.2',\n\t\t\talternative: \"`variant` prop with the `'toolbar'` value\",\n\t\t} );\n\t}\n\n\tconst arrowRef = useRef< HTMLElement | null >( null );\n\n\tconst [ fallbackReferenceElement, setFallbackReferenceElement ] =\n\t\tuseState< HTMLSpanElement | null >( null );\n\n\tconst anchorRefFallback: RefCallback< HTMLSpanElement > = useCallback(\n\t\t( node ) => {\n\t\t\tsetFallbackReferenceElement( node );\n\t\t},\n\t\t[]\n\t);\n\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst isExpanded = expandOnMobile && isMobileViewport;\n\tconst hasArrow = ! isExpanded && ! noArrow;\n\tconst normalizedPlacementFromProps = position\n\t\t? positionToPlacement( position )\n\t\t: placementProp;\n\n\tconst middleware = [\n\t\t...( placementProp === 'overlay' ? overlayMiddlewares() : [] ),\n\t\toffsetMiddleware( offsetProp ),\n\t\tcomputedFlipProp && flipMiddleware(),\n\t\tcomputedResizeProp &&\n\t\t\tsize( {\n\t\t\t\tapply( sizeProps ) {\n\t\t\t\t\tconst { firstElementChild } = refs.floating.current ?? {};\n\n\t\t\t\t\t// Only HTMLElement instances have the `style` property.\n\t\t\t\t\tif ( ! ( firstElementChild instanceof HTMLElement ) )\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Reduce the height of the popover to the available space.\n\t\t\t\t\tObject.assign( firstElementChild.style, {\n\t\t\t\t\t\tmaxHeight: `${ sizeProps.availableHeight }px`,\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\t\tshift &&\n\t\t\tshiftMiddleware( {\n\t\t\t\tcrossAxis: true,\n\t\t\t\tlimiter: limitShift(),\n\t\t\t\tpadding: 1, // Necessary to avoid flickering at the edge of the viewport.\n\t\t\t} ),\n\t\tarrow( { element: arrowRef } ),\n\t];\n\tconst slotName = useContext( slotNameContext ) || __unstableSlotName;\n\tconst slot = useSlot( slotName );\n\n\tlet onDialogClose;\n\n\tif ( onClose || onFocusOutside ) {\n\t\tonDialogClose = ( type: string | undefined, event: SyntheticEvent ) => {\n\t\t\t// Ideally the popover should have just a single onClose prop and\n\t\t\t// not three props that potentially do the same thing.\n\t\t\tif ( type === 'focus-outside' && onFocusOutside ) {\n\t\t\t\tonFocusOutside( event );\n\t\t\t} else if ( onClose ) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t};\n\t}\n\n\tconst [ dialogRef, dialogProps ] = useDialog( {\n\t\tconstrainTabbing,\n\t\tfocusOnMount,\n\t\t__unstableOnClose: onDialogClose,\n\t\t// @ts-expect-error The __unstableOnClose property needs to be deprecated first (see https://github.com/WordPress/gutenberg/pull/27675)\n\t\tonClose: onDialogClose,\n\t} );\n\n\tconst {\n\t\t// Positioning coordinates\n\t\tx,\n\t\ty,\n\t\t// Object with \"regular\" refs to both \"reference\" and \"floating\"\n\t\trefs,\n\t\t// Type of CSS position property to use (absolute or fixed)\n\t\tstrategy,\n\t\tupdate,\n\t\tplacement: computedPlacement,\n\t\tmiddlewareData: { arrow: arrowData },\n\t} = useFloating( {\n\t\tplacement:\n\t\t\tnormalizedPlacementFromProps === 'overlay'\n\t\t\t\t? undefined\n\t\t\t\t: normalizedPlacementFromProps,\n\t\tmiddleware,\n\t\twhileElementsMounted: ( referenceParam, floatingParam, updateParam ) =>\n\t\t\tautoUpdate( referenceParam, floatingParam, updateParam, {\n\t\t\t\tlayoutShift: false,\n\t\t\t\tanimationFrame: true,\n\t\t\t} ),\n\t} );\n\n\tconst arrowCallbackRef = useCallback(\n\t\t( node: HTMLElement | null ) => {\n\t\t\tarrowRef.current = node;\n\t\t\tupdate();\n\t\t},\n\t\t[ update ]\n\t);\n\n\t// When any of the possible anchor \"sources\" change,\n\t// recompute the reference element (real or virtual) and its owner document.\n\n\tconst anchorRefTop = ( anchorRef as PopoverAnchorRefTopBottom | undefined )\n\t\t?.top;\n\tconst anchorRefBottom = (\n\t\tanchorRef as PopoverAnchorRefTopBottom | undefined\n\t )?.bottom;\n\tconst anchorRefStartContainer = ( anchorRef as Range | undefined )\n\t\t?.startContainer;\n\tconst anchorRefCurrent = ( anchorRef as PopoverAnchorRefReference )\n\t\t?.current;\n\n\tuseLayoutEffect( () => {\n\t\tconst resultingReferenceElement = getReferenceElement( {\n\t\t\tanchor,\n\t\t\tanchorRef,\n\t\t\tanchorRect,\n\t\t\tgetAnchorRect,\n\t\t\tfallbackReferenceElement,\n\t\t} );\n\n\t\trefs.setReference( resultingReferenceElement );\n\t}, [\n\t\tanchor,\n\t\tanchorRef,\n\t\tanchorRefTop,\n\t\tanchorRefBottom,\n\t\tanchorRefStartContainer,\n\t\tanchorRefCurrent,\n\t\tanchorRect,\n\t\tgetAnchorRect,\n\t\tfallbackReferenceElement,\n\t\trefs,\n\t] );\n\n\tconst mergedFloatingRef = useMergeRefs( [\n\t\trefs.setFloating,\n\t\tdialogRef,\n\t\tforwardedRef,\n\t] );\n\n\tconst style = isExpanded\n\t\t? undefined\n\t\t: {\n\t\t\t\tposition: strategy,\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\t// `x` and `y` are framer-motion specific props and are shorthands\n\t\t\t\t// for `translateX` and `translateY`. Currently it is not possible\n\t\t\t\t// to use `translateX` and `translateY` because those values would\n\t\t\t\t// be overridden by the return value of the\n\t\t\t\t// `placementToMotionAnimationProps` function.\n\t\t\t\tx: computePopoverPosition( x ),\n\t\t\t\ty: computePopoverPosition( y ),\n\t\t };\n\n\tconst shouldReduceMotion = useReducedMotion();\n\tconst shouldAnimate = animate && ! isExpanded && ! shouldReduceMotion;\n\n\tconst [ animationFinished, setAnimationFinished ] = useState( false );\n\n\tconst { style: motionInlineStyles, ...otherMotionProps } = useMemo(\n\t\t() => placementToMotionAnimationProps( computedPlacement ),\n\t\t[ computedPlacement ]\n\t);\n\n\tconst animationProps: HTMLMotionProps< 'div' > = shouldAnimate\n\t\t? {\n\t\t\t\tstyle: {\n\t\t\t\t\t...motionInlineStyles,\n\t\t\t\t\t...style,\n\t\t\t\t},\n\t\t\t\tonAnimationComplete: () => setAnimationFinished( true ),\n\t\t\t\t...otherMotionProps,\n\t\t }\n\t\t: {\n\t\t\t\tanimate: false,\n\t\t\t\tstyle,\n\t\t };\n\n\t// When Floating UI has finished positioning and Framer Motion has finished animating\n\t// the popover, add the `is-positioned` class to signal that all transitions have finished.\n\tconst isPositioned =\n\t\t( ! shouldAnimate || animationFinished ) && x !== null && y !== null;\n\n\tlet content = (\n\t\t<motion.div\n\t\t\tclassName={ classnames( className, {\n\t\t\t\t'is-expanded': isExpanded,\n\t\t\t\t'is-positioned': isPositioned,\n\t\t\t\t// Use the 'alternate' classname for 'toolbar' variant for back compat.\n\t\t\t\t[ `is-${\n\t\t\t\t\tcomputedVariant === 'toolbar'\n\t\t\t\t\t\t? 'alternate'\n\t\t\t\t\t\t: computedVariant\n\t\t\t\t}` ]: computedVariant,\n\t\t\t} ) }\n\t\t\t{ ...animationProps }\n\t\t\t{ ...contentProps }\n\t\t\tref={ mergedFloatingRef }\n\t\t\t{ ...dialogProps }\n\t\t\ttabIndex={ -1 }\n\t\t>\n\t\t\t{ /* Prevents scroll on the document */ }\n\t\t\t{ isExpanded && <ScrollLock /> }\n\t\t\t{ isExpanded && (\n\t\t\t\t<div className=\"components-popover__header\">\n\t\t\t\t\t<span className=\"components-popover__header-title\">\n\t\t\t\t\t\t{ headerTitle }\n\t\t\t\t\t</span>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"components-popover__close\"\n\t\t\t\t\t\ticon={ close }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<div className=\"components-popover__content\">{ children }</div>\n\t\t\t{ hasArrow && (\n\t\t\t\t<div\n\t\t\t\t\tref={ arrowCallbackRef }\n\t\t\t\t\tclassName={ [\n\t\t\t\t\t\t'components-popover__arrow',\n\t\t\t\t\t\t`is-${ computedPlacement.split( '-' )[ 0 ] }`,\n\t\t\t\t\t].join( ' ' ) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tleft:\n\t\t\t\t\t\t\ttypeof arrowData?.x !== 'undefined' &&\n\t\t\t\t\t\t\tNumber.isFinite( arrowData.x )\n\t\t\t\t\t\t\t\t? `${ arrowData.x }px`\n\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t\ttop:\n\t\t\t\t\t\t\ttypeof arrowData?.y !== 'undefined' &&\n\t\t\t\t\t\t\tNumber.isFinite( arrowData.y )\n\t\t\t\t\t\t\t\t? `${ arrowData.y }px`\n\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ArrowTriangle />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</motion.div>\n\t);\n\n\tconst shouldRenderWithinSlot = slot.ref && ! inline;\n\tconst hasAnchor = anchorRef || anchorRect || anchor;\n\n\tif ( shouldRenderWithinSlot ) {\n\t\tcontent = <Fill name={ slotName }>{ content }</Fill>;\n\t} else if ( ! inline ) {\n\t\tcontent = createPortal(\n\t\t\t<StyleProvider document={ document }>{ content }</StyleProvider>,\n\t\t\tgetPopoverFallbackContainer()\n\t\t);\n\t}\n\n\tif ( hasAnchor ) {\n\t\treturn content;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<span ref={ anchorRefFallback } />\n\t\t\t{ content }\n\t\t</>\n\t);\n};\n\n/**\n * `Popover` renders its content in a floating modal. If no explicit anchor is passed via props, it anchors to its parent element by default.\n *\n * ```jsx\n * import { Button, Popover } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyPopover = () => {\n * \tconst [ isVisible, setIsVisible ] = useState( false );\n * \tconst toggleVisible = () => {\n * \t\tsetIsVisible( ( state ) => ! state );\n * \t};\n *\n * \treturn (\n * \t\t<Button variant=\"secondary\" onClick={ toggleVisible }>\n * \t\t\tToggle Popover!\n * \t\t\t{ isVisible && <Popover>Popover is toggled!</Popover> }\n * \t\t</Button>\n * \t);\n * };\n * ```\n *\n */\nexport const Popover = contextConnect( UnforwardedPopover, 'Popover' );\n\nfunction PopoverSlot(\n\t{ name = SLOT_NAME }: { name?: string },\n\tref: ForwardedRef< any >\n) {\n\treturn (\n\t\t<Slot\n\t\t\tbubblesVirtually\n\t\t\tname={ name }\n\t\t\tclassName=\"popover-slot\"\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\n// @ts-expect-error For Legacy Reasons\nPopover.Slot = forwardRef( PopoverSlot );\n// @ts-expect-error For Legacy Reasons\nPopover.__unstableSlotNameProvider = slotNameContext.Provider;\n\nexport default Popover;\n"],"mappings":"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"}