@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":["useMemo","useState","useCallback","useReducer","useRef","useEffect","isShallowEqual","contextConnect","useContextSystem","useCx","patternMatch","findParent","View","NavigatorContext","styles","MAX_HISTORY_LENGTH","screensReducer","state","action","type","screen","filter","s","id","UnconnectedNavigatorProvider","props","forwardedRef","initialPath","children","className","otherProps","locationHistory","setLocationHistory","path","currentLocationHistory","screens","dispatch","currentScreens","current","currentMatch","matchedPath","currentPath","length","undefined","resolvePath","newMatch","params","addScreen","removeScreen","goBack","prevLocationHistory","slice","isBack","hasRestoredFocus","goTo","options","focusTargetSelector","skipFocus","replace","restOptions","isNavigatingToPreviousPath","newLocation","newLocationHistory","push","goToParent","parentPath","navigatorContextValue","location","isInitial","match","cx","classes","navigatorProviderWrapper","createElement","ref","Provider","value","NavigatorProvider"],"sources":["@wordpress/components/src/navigator/navigator-provider/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseReducer,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { patternMatch, findParent } from '../utils/router';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport * as styles from '../styles';\nimport type {\n\tNavigatorProviderProps,\n\tNavigatorLocation,\n\tNavigatorContext as NavigatorContextType,\n\tScreen,\n} from '../types';\n\ntype MatchedPath = ReturnType< typeof patternMatch >;\ntype ScreenAction = { type: string; screen: Screen };\n\nconst MAX_HISTORY_LENGTH = 50;\n\nfunction screensReducer(\n\tstate: Screen[] = [],\n\taction: ScreenAction\n): Screen[] {\n\tswitch ( action.type ) {\n\t\tcase 'add':\n\t\t\treturn [ ...state, action.screen ];\n\t\tcase 'remove':\n\t\t\treturn state.filter( ( s: Screen ) => s.id !== action.screen.id );\n\t}\n\n\treturn state;\n}\n\nfunction UnconnectedNavigatorProvider(\n\tprops: WordPressComponentProps< NavigatorProviderProps, 'div' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst { initialPath, children, className, ...otherProps } =\n\t\tuseContextSystem( props, 'NavigatorProvider' );\n\n\tconst [ locationHistory, setLocationHistory ] = useState<\n\t\tNavigatorLocation[]\n\t>( [\n\t\t{\n\t\t\tpath: initialPath,\n\t\t},\n\t] );\n\tconst currentLocationHistory = useRef< NavigatorLocation[] >( [] );\n\tconst [ screens, dispatch ] = useReducer( screensReducer, [] );\n\tconst currentScreens = useRef< Screen[] >( [] );\n\tuseEffect( () => {\n\t\tcurrentScreens.current = screens;\n\t}, [ screens ] );\n\tuseEffect( () => {\n\t\tcurrentLocationHistory.current = locationHistory;\n\t}, [ locationHistory ] );\n\tconst currentMatch = useRef< MatchedPath >();\n\tconst matchedPath = useMemo( () => {\n\t\tlet currentPath: string | undefined;\n\t\tif (\n\t\t\tlocationHistory.length === 0 ||\n\t\t\t( currentPath =\n\t\t\t\tlocationHistory[ locationHistory.length - 1 ].path ) ===\n\t\t\t\tundefined\n\t\t) {\n\t\t\tcurrentMatch.current = undefined;\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst resolvePath = ( path: string ) => {\n\t\t\tconst newMatch = patternMatch( path, screens );\n\n\t\t\t// If the new match is the same as the current match,\n\t\t\t// return the previous one for performance reasons.\n\t\t\tif (\n\t\t\t\tcurrentMatch.current &&\n\t\t\t\tnewMatch &&\n\t\t\t\tisShallowEqual(\n\t\t\t\t\tnewMatch.params,\n\t\t\t\t\tcurrentMatch.current.params\n\t\t\t\t) &&\n\t\t\t\tnewMatch.id === currentMatch.current.id\n\t\t\t) {\n\t\t\t\treturn currentMatch.current;\n\t\t\t}\n\n\t\t\treturn newMatch;\n\t\t};\n\n\t\tconst newMatch = resolvePath( currentPath );\n\t\tcurrentMatch.current = newMatch;\n\t\treturn newMatch;\n\t}, [ screens, locationHistory ] );\n\n\tconst addScreen = useCallback(\n\t\t( screen: Screen ) => dispatch( { type: 'add', screen } ),\n\t\t[]\n\t);\n\n\tconst removeScreen = useCallback(\n\t\t( screen: Screen ) => dispatch( { type: 'remove', screen } ),\n\t\t[]\n\t);\n\n\tconst goBack: NavigatorContextType[ 'goBack' ] = useCallback( () => {\n\t\tsetLocationHistory( ( prevLocationHistory ) => {\n\t\t\tif ( prevLocationHistory.length <= 1 ) {\n\t\t\t\treturn prevLocationHistory;\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t...prevLocationHistory.slice( 0, -2 ),\n\t\t\t\t{\n\t\t\t\t\t...prevLocationHistory[ prevLocationHistory.length - 2 ],\n\t\t\t\t\tisBack: true,\n\t\t\t\t\thasRestoredFocus: false,\n\t\t\t\t},\n\t\t\t];\n\t\t} );\n\t}, [] );\n\n\tconst goTo: NavigatorContextType[ 'goTo' ] = useCallback(\n\t\t( path, options = {} ) => {\n\t\t\tconst {\n\t\t\t\tfocusTargetSelector,\n\t\t\t\tisBack = false,\n\t\t\t\tskipFocus = false,\n\t\t\t\treplace = false,\n\t\t\t\t...restOptions\n\t\t\t} = options;\n\n\t\t\tconst isNavigatingToPreviousPath =\n\t\t\t\tisBack &&\n\t\t\t\tcurrentLocationHistory.current.length > 1 &&\n\t\t\t\tcurrentLocationHistory.current[\n\t\t\t\t\tcurrentLocationHistory.current.length - 2\n\t\t\t\t].path === path;\n\n\t\t\tif ( isNavigatingToPreviousPath ) {\n\t\t\t\tgoBack();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLocationHistory( ( prevLocationHistory ) => {\n\t\t\t\tconst newLocation = {\n\t\t\t\t\t...restOptions,\n\t\t\t\t\tpath,\n\t\t\t\t\tisBack,\n\t\t\t\t\thasRestoredFocus: false,\n\t\t\t\t\tskipFocus,\n\t\t\t\t};\n\n\t\t\t\tif ( prevLocationHistory.length === 0 ) {\n\t\t\t\t\treturn replace ? [] : [ newLocation ];\n\t\t\t\t}\n\n\t\t\t\tconst newLocationHistory = prevLocationHistory.slice(\n\t\t\t\t\tprevLocationHistory.length > MAX_HISTORY_LENGTH - 1 ? 1 : 0,\n\t\t\t\t\t-1\n\t\t\t\t);\n\n\t\t\t\tif ( ! replace ) {\n\t\t\t\t\tnewLocationHistory.push(\n\t\t\t\t\t\t// Assign `focusTargetSelector` to the previous location in history\n\t\t\t\t\t\t// (the one we just navigated from).\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...prevLocationHistory[\n\t\t\t\t\t\t\t\tprevLocationHistory.length - 1\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfocusTargetSelector,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tnewLocationHistory.push( newLocation );\n\n\t\t\t\treturn newLocationHistory;\n\t\t\t} );\n\t\t},\n\t\t[ goBack ]\n\t);\n\n\tconst goToParent: NavigatorContextType[ 'goToParent' ] = useCallback(\n\t\t( options = {} ) => {\n\t\t\tconst currentPath =\n\t\t\t\tcurrentLocationHistory.current[\n\t\t\t\t\tcurrentLocationHistory.current.length - 1\n\t\t\t\t].path;\n\t\t\tif ( currentPath === undefined ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst parentPath = findParent(\n\t\t\t\tcurrentPath,\n\t\t\t\tcurrentScreens.current\n\t\t\t);\n\t\t\tif ( parentPath === undefined ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tgoTo( parentPath, { ...options, isBack: true } );\n\t\t},\n\t\t[ goTo ]\n\t);\n\n\tconst navigatorContextValue: NavigatorContextType = useMemo(\n\t\t() => ( {\n\t\t\tlocation: {\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tisInitial: locationHistory.length === 1,\n\t\t\t},\n\t\t\tparams: matchedPath ? matchedPath.params : {},\n\t\t\tmatch: matchedPath ? matchedPath.id : undefined,\n\t\t\tgoTo,\n\t\t\tgoBack,\n\t\t\tgoToParent,\n\t\t\taddScreen,\n\t\t\tremoveScreen,\n\t\t} ),\n\t\t[\n\t\t\tlocationHistory,\n\t\t\tmatchedPath,\n\t\t\tgoTo,\n\t\t\tgoBack,\n\t\t\tgoToParent,\n\t\t\taddScreen,\n\t\t\tremoveScreen,\n\t\t]\n\t);\n\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() => cx( styles.navigatorProviderWrapper, className ),\n\t\t[ className, cx ]\n\t);\n\n\treturn (\n\t\t<View ref={ forwardedRef } className={ classes } { ...otherProps }>\n\t\t\t<NavigatorContext.Provider value={ navigatorContextValue }>\n\t\t\t\t{ children }\n\t\t\t</NavigatorContext.Provider>\n\t\t</View>\n\t);\n}\n\n/**\n * The `NavigatorProvider` component allows rendering nested views/panels/menus\n * (via the `NavigatorScreen` component and navigate between these different\n * view (via the `NavigatorButton` and `NavigatorBackButton` components or the\n * `useNavigator` hook).\n *\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 NavigatorProvider = contextConnect(\n\tUnconnectedNavigatorProvider,\n\t'NavigatorProvider'\n);\n\nexport default NavigatorProvider;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useReducer","isShallowEqual","contextConnect","useContextSystem","useCx","patternMatch","findParent","View","NavigatorContext","styles","MAX_HISTORY_LENGTH","addScreen","screens","screen","removeScreen","filter","s","id","goBack","locationHistory","length","slice","isBack","hasRestoredFocus","goTo","state","path","options","focusTargetSelector","skipFocus","replace","restOptions","isNavigatingToPreviousPath","newLocation","newLocationHistory","push","goToParent","currentPath","undefined","parentPath","routerReducer","action","matchedPath","type","params","UnconnectedNavigatorProvider","props","forwardedRef","initialPath","children","className","otherProps","routerState","dispatch","methods","navigatorContextValue","_matchedPath$params","location","isInitial","match","cx","classes","navigatorProviderWrapper","createElement","ref","Provider","value","NavigatorProvider"],"sources":["@wordpress/components/src/navigator/navigator-provider/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useReducer } from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { patternMatch, findParent } from '../utils/router';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport * as styles from '../styles';\nimport type {\n\tNavigatorProviderProps,\n\tNavigatorLocation,\n\tNavigatorContext as NavigatorContextType,\n\tNavigateOptions,\n\tScreen,\n\tNavigateToParentOptions,\n} from '../types';\n\ntype MatchedPath = ReturnType< typeof patternMatch >;\n\ntype RouterAction =\n\t| { type: 'add' | 'remove'; screen: Screen }\n\t| { type: 'goback' }\n\t| { type: 'goto'; path: string; options?: NavigateOptions }\n\t| { type: 'gotoparent'; options?: NavigateToParentOptions };\n\ntype RouterState = {\n\tscreens: Screen[];\n\tlocationHistory: NavigatorLocation[];\n\tmatchedPath: MatchedPath;\n};\n\nconst MAX_HISTORY_LENGTH = 50;\n\nfunction addScreen( { screens }: RouterState, screen: Screen ) {\n\treturn [ ...screens, screen ];\n}\n\nfunction removeScreen( { screens }: RouterState, screen: Screen ) {\n\treturn screens.filter( ( s ) => s.id !== screen.id );\n}\n\nfunction goBack( { locationHistory }: RouterState ) {\n\tif ( locationHistory.length <= 1 ) {\n\t\treturn locationHistory;\n\t}\n\treturn [\n\t\t...locationHistory.slice( 0, -2 ),\n\t\t{\n\t\t\t...locationHistory[ locationHistory.length - 2 ],\n\t\t\tisBack: true,\n\t\t\thasRestoredFocus: false,\n\t\t},\n\t];\n}\n\nfunction goTo(\n\tstate: RouterState,\n\tpath: string,\n\toptions: NavigateOptions = {}\n) {\n\tconst { locationHistory } = state;\n\tconst {\n\t\tfocusTargetSelector,\n\t\tisBack = false,\n\t\tskipFocus = false,\n\t\treplace = false,\n\t\t...restOptions\n\t} = options;\n\n\tconst isNavigatingToPreviousPath =\n\t\tisBack &&\n\t\tlocationHistory.length > 1 &&\n\t\tlocationHistory[ locationHistory.length - 2 ].path === path;\n\n\tif ( isNavigatingToPreviousPath ) {\n\t\treturn goBack( state );\n\t}\n\n\tconst newLocation = {\n\t\t...restOptions,\n\t\tpath,\n\t\tisBack,\n\t\thasRestoredFocus: false,\n\t\tskipFocus,\n\t};\n\n\tif ( locationHistory.length === 0 ) {\n\t\treturn replace ? [] : [ newLocation ];\n\t}\n\n\tconst newLocationHistory = locationHistory.slice(\n\t\tlocationHistory.length > MAX_HISTORY_LENGTH - 1 ? 1 : 0,\n\t\t-1\n\t);\n\n\tif ( ! replace ) {\n\t\tnewLocationHistory.push(\n\t\t\t// Assign `focusTargetSelector` to the previous location in history\n\t\t\t// (the one we just navigated from).\n\t\t\t{\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tfocusTargetSelector,\n\t\t\t}\n\t\t);\n\t}\n\n\tnewLocationHistory.push( newLocation );\n\n\treturn newLocationHistory;\n}\n\nfunction goToParent(\n\tstate: RouterState,\n\toptions: NavigateToParentOptions = {}\n) {\n\tconst { locationHistory, screens } = state;\n\tconst currentPath = locationHistory[ locationHistory.length - 1 ].path;\n\tif ( currentPath === undefined ) {\n\t\treturn locationHistory;\n\t}\n\tconst parentPath = findParent( currentPath, screens );\n\tif ( parentPath === undefined ) {\n\t\treturn locationHistory;\n\t}\n\treturn goTo( state, parentPath, {\n\t\t...options,\n\t\tisBack: true,\n\t} );\n}\n\nfunction routerReducer(\n\tstate: RouterState,\n\taction: RouterAction\n): RouterState {\n\tlet { screens, locationHistory, matchedPath } = state;\n\n\tswitch ( action.type ) {\n\t\tcase 'add':\n\t\t\tscreens = addScreen( state, action.screen );\n\t\t\tbreak;\n\t\tcase 'remove':\n\t\t\tscreens = removeScreen( state, action.screen );\n\t\t\tbreak;\n\t\tcase 'goback':\n\t\t\tlocationHistory = goBack( state );\n\t\t\tbreak;\n\t\tcase 'goto':\n\t\t\tlocationHistory = goTo( state, action.path, action.options );\n\t\t\tbreak;\n\t\tcase 'gotoparent':\n\t\t\tlocationHistory = goToParent( state, action.options );\n\t\t\tbreak;\n\t}\n\n\t// Return early in case there is no change\n\tif (\n\t\tscreens === state.screens &&\n\t\tlocationHistory === state.locationHistory\n\t) {\n\t\treturn state;\n\t}\n\n\t// Compute the matchedPath\n\tconst currentPath =\n\t\tlocationHistory.length > 0\n\t\t\t? locationHistory[ locationHistory.length - 1 ].path\n\t\t\t: undefined;\n\tmatchedPath =\n\t\tcurrentPath !== undefined\n\t\t\t? patternMatch( currentPath, screens )\n\t\t\t: undefined;\n\n\t// If the new match is the same as the previous match,\n\t// return the previous one to keep immutability.\n\tif (\n\t\tmatchedPath &&\n\t\tstate.matchedPath &&\n\t\tmatchedPath.id === state.matchedPath.id &&\n\t\tisShallowEqual( matchedPath.params, state.matchedPath.params )\n\t) {\n\t\tmatchedPath = state.matchedPath;\n\t}\n\n\treturn { screens, locationHistory, matchedPath };\n}\n\nfunction UnconnectedNavigatorProvider(\n\tprops: WordPressComponentProps< NavigatorProviderProps, 'div' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst { initialPath, children, className, ...otherProps } =\n\t\tuseContextSystem( props, 'NavigatorProvider' );\n\n\tconst [ routerState, dispatch ] = useReducer(\n\t\trouterReducer,\n\t\tinitialPath,\n\t\t( path ) => ( {\n\t\t\tscreens: [],\n\t\t\tlocationHistory: [ { path } ],\n\t\t\tmatchedPath: undefined,\n\t\t} )\n\t);\n\n\t// The methods are constant forever, create stable references to them.\n\tconst methods = useMemo(\n\t\t() => ( {\n\t\t\tgoBack: () => dispatch( { type: 'goback' } ),\n\t\t\tgoTo: ( path: string, options?: NavigateOptions ) =>\n\t\t\t\tdispatch( { type: 'goto', path, options } ),\n\t\t\tgoToParent: ( options: NavigateToParentOptions | undefined ) =>\n\t\t\t\tdispatch( { type: 'gotoparent', options } ),\n\t\t\taddScreen: ( screen: Screen ) =>\n\t\t\t\tdispatch( { type: 'add', screen } ),\n\t\t\tremoveScreen: ( screen: Screen ) =>\n\t\t\t\tdispatch( { type: 'remove', screen } ),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst { locationHistory, matchedPath } = routerState;\n\n\tconst navigatorContextValue: NavigatorContextType = useMemo(\n\t\t() => ( {\n\t\t\tlocation: {\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tisInitial: locationHistory.length === 1,\n\t\t\t},\n\t\t\tparams: matchedPath?.params ?? {},\n\t\t\tmatch: matchedPath?.id,\n\t\t\t...methods,\n\t\t} ),\n\t\t[ locationHistory, matchedPath, methods ]\n\t);\n\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() => cx( styles.navigatorProviderWrapper, className ),\n\t\t[ className, cx ]\n\t);\n\n\treturn (\n\t\t<View ref={ forwardedRef } className={ classes } { ...otherProps }>\n\t\t\t<NavigatorContext.Provider value={ navigatorContextValue }>\n\t\t\t\t{ children }\n\t\t\t</NavigatorContext.Provider>\n\t\t</View>\n\t);\n}\n\n/**\n * The `NavigatorProvider` component allows rendering nested views/panels/menus\n * (via the `NavigatorScreen` component and navigate between these different\n * view (via the `NavigatorButton` and `NavigatorBackButton` components or the\n * `useNavigator` hook).\n *\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 NavigatorProvider = contextConnect(\n\tUnconnectedNavigatorProvider,\n\t'NavigatorProvider'\n);\n\nexport default NavigatorProvider;\n"],"mappings":"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"}
@@ -84,14 +84,14 @@ function UnconnectedNavigatorScreen(props, forwardedRef) {
84
84
 
85
85
  // When navigating back, if a selector is provided, use it to look for the
86
86
  // target element (assumed to be a node inside the current NavigatorScreen)
87
- if (location.isBack && location?.focusTargetSelector) {
87
+ if (location.isBack && location.focusTargetSelector) {
88
88
  elementToFocus = wrapperRef.current.querySelector(location.focusTargetSelector);
89
89
  }
90
90
 
91
91
  // If the previous query didn't run or find any element to focus, fallback
92
92
  // to the first tabbable element in the screen (or the screen itself).
93
93
  if (!elementToFocus) {
94
- const firstTabbable = focus.tabbable.find(wrapperRef.current)[0];
94
+ const [firstTabbable] = focus.tabbable.find(wrapperRef.current);
95
95
  elementToFocus = firstTabbable !== null && firstTabbable !== void 0 ? firstTabbable : wrapperRef.current;
96
96
  }
97
97
  locationRef.current.hasRestoredFocus = true;
@@ -1 +1 @@
1
- {"version":3,"names":["focus","useContext","useEffect","useMemo","useRef","useId","useMergeRefs","isRTL","isRTLFn","escapeAttribute","contextConnect","useContextSystem","useCx","View","NavigatorContext","styles","UnconnectedNavigatorScreen","props","forwardedRef","screenId","children","className","path","otherProps","location","match","addScreen","removeScreen","isMatch","wrapperRef","screen","id","isInitial","isBack","cx","classes","navigatorScreen","locationRef","current","isInitialLocation","hasRestoredFocus","skipFocus","activeElement","ownerDocument","contains","elementToFocus","focusTargetSelector","querySelector","firstTabbable","tabbable","find","mergedWrapperRef","createElement","ref","NavigatorScreen"],"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":["focus","useContext","useEffect","useMemo","useRef","useId","useMergeRefs","isRTL","isRTLFn","escapeAttribute","contextConnect","useContextSystem","useCx","View","NavigatorContext","styles","UnconnectedNavigatorScreen","props","forwardedRef","screenId","children","className","path","otherProps","location","match","addScreen","removeScreen","isMatch","wrapperRef","screen","id","isInitial","isBack","cx","classes","navigatorScreen","locationRef","current","isInitialLocation","hasRestoredFocus","skipFocus","activeElement","ownerDocument","contains","elementToFocus","focusTargetSelector","querySelector","firstTabbable","tabbable","find","mergedWrapperRef","createElement","ref","NavigatorScreen"],"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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"}
@@ -8,13 +8,13 @@ import { useFloating, flip as flipMiddleware, shift as shiftMiddleware, limitShi
8
8
  // eslint-disable-next-line no-restricted-imports
9
9
 
10
10
  // eslint-disable-next-line no-restricted-imports
11
- import { motion, useReducedMotion } from 'framer-motion';
11
+ import { motion } from 'framer-motion';
12
12
 
13
13
  /**
14
14
  * WordPress dependencies
15
15
  */
16
16
  import { useRef, useLayoutEffect, forwardRef, createContext, useContext, useMemo, useState, useCallback, createPortal } from '@wordpress/element';
17
- import { useViewportMatch, useMergeRefs, __experimentalUseDialog as useDialog } from '@wordpress/compose';
17
+ import { useReducedMotion, useViewportMatch, useMergeRefs, __experimentalUseDialog as useDialog } from '@wordpress/compose';
18
18
  import { close } from '@wordpress/icons';
19
19
  import deprecated from '@wordpress/deprecated';
20
20
  import { Path, SVG } from '@wordpress/primitives';
@@ -26,7 +26,7 @@ import Button from '../button';
26
26
  import ScrollLock from '../scroll-lock';
27
27
  import { Slot, Fill, useSlot } from '../slot-fill';
28
28
  import { computePopoverPosition, positionToPlacement, placementToMotionAnimationProps, getReferenceElement } from './utils';
29
- import { contextConnect, useContextSystem, ContextSystemProvider } from '../context';
29
+ import { contextConnect, useContextSystem } from '../context';
30
30
  import { overlayMiddlewares } from './overlay-middlewares';
31
31
  import { StyleProvider } from '../style-provider';
32
32
 
@@ -65,7 +65,7 @@ const getPopoverFallbackContainer = () => {
65
65
  }
66
66
  return container;
67
67
  };
68
- const UnconnectedPopover = (props, forwardedRef) => {
68
+ const UnforwardedPopover = (props, forwardedRef) => {
69
69
  const {
70
70
  animate = true,
71
71
  headerTitle,
@@ -266,33 +266,8 @@ const UnconnectedPopover = (props, forwardedRef) => {
266
266
  // When Floating UI has finished positioning and Framer Motion has finished animating
267
267
  // the popover, add the `is-positioned` class to signal that all transitions have finished.
268
268
  const isPositioned = (!shouldAnimate || animationFinished) && x !== null && y !== null;
269
-
270
- // In case a `ColorPicker` component is rendered as a child of `Popover`,
271
- // the `Popover` component can be notified of when the user is dragging
272
- // parts of the `ColorPicker` UI (this is possible because the `ColorPicker`
273
- // component exposes the `onPickerDragStart` and `onPickerDragEnd` props
274
- // via internal context).
275
- // While the user is performing a pointer drag, the `Popover` will render
276
- // a transparent backdrop element that will serve as a "pointer events trap",
277
- // making sure that no pointer events reach any potential `iframe` element
278
- // underneath (like, for example, the editor canvas in the WordPress editor).
279
- const [showBackdrop, setShowBackdrop] = useState(false);
280
- const contextValue = useMemo(() => ({
281
- ColorPicker: {
282
- onPickerDragStart() {
283
- setShowBackdrop(true);
284
- },
285
- onPickerDragEnd() {
286
- setShowBackdrop(false);
287
- }
288
- }
289
- }), []);
290
- let content = createElement(Fragment, null, showBackdrop && createElement("div", {
291
- className: "components-popover-pointer-events-trap",
292
- "aria-hidden": "true",
293
- onClick: () => setShowBackdrop(false)
294
- }), createElement(motion.div, {
295
- className: classnames('components-popover', className, {
269
+ let content = createElement(motion.div, {
270
+ className: classnames(className, {
296
271
  'is-expanded': isExpanded,
297
272
  'is-positioned': isPositioned,
298
273
  // Use the 'alternate' classname for 'toolbar' variant for back compat.
@@ -313,16 +288,14 @@ const UnconnectedPopover = (props, forwardedRef) => {
313
288
  onClick: onClose
314
289
  })), createElement("div", {
315
290
  className: "components-popover__content"
316
- }, createElement(ContextSystemProvider, {
317
- value: contextValue
318
- }, children)), hasArrow && createElement("div", {
291
+ }, children), hasArrow && createElement("div", {
319
292
  ref: arrowCallbackRef,
320
293
  className: ['components-popover__arrow', `is-${computedPlacement.split('-')[0]}`].join(' '),
321
294
  style: {
322
295
  left: typeof arrowData?.x !== 'undefined' && Number.isFinite(arrowData.x) ? `${arrowData.x}px` : '',
323
296
  top: typeof arrowData?.y !== 'undefined' && Number.isFinite(arrowData.y) ? `${arrowData.y}px` : ''
324
297
  }
325
- }, createElement(ArrowTriangle, null))));
298
+ }, createElement(ArrowTriangle, null)));
326
299
  const shouldRenderWithinSlot = slot.ref && !inline;
327
300
  const hasAnchor = anchorRef || anchorRect || anchor;
328
301
  if (shouldRenderWithinSlot) {
@@ -365,7 +338,7 @@ const UnconnectedPopover = (props, forwardedRef) => {
365
338
  * ```
366
339
  *
367
340
  */
368
- export const Popover = contextConnect(UnconnectedPopover, 'Popover');
341
+ export const Popover = contextConnect(UnforwardedPopover, 'Popover');
369
342
  function PopoverSlot({
370
343
  name = SLOT_NAME
371
344
  }, ref) {
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useFloating","flip","flipMiddleware","shift","shiftMiddleware","limitShift","autoUpdate","arrow","offset","offsetMiddleware","size","motion","useReducedMotion","useRef","useLayoutEffect","forwardRef","createContext","useContext","useMemo","useState","useCallback","createPortal","useViewportMatch","useMergeRefs","__experimentalUseDialog","useDialog","close","deprecated","Path","SVG","Button","ScrollLock","Slot","Fill","useSlot","computePopoverPosition","positionToPlacement","placementToMotionAnimationProps","getReferenceElement","contextConnect","useContextSystem","ContextSystemProvider","overlayMiddlewares","StyleProvider","SLOT_NAME","ArrowTriangle","createElement","xmlns","viewBox","className","role","d","vectorEffect","slotNameContext","undefined","fallbackContainerClassname","getPopoverFallbackContainer","container","document","body","querySelector","append","UnconnectedPopover","props","forwardedRef","animate","headerTitle","constrainTabbing","onClose","children","noArrow","position","placement","placementProp","offsetProp","focusOnMount","anchor","expandOnMobile","onFocusOutside","__unstableSlotName","resize","inline","variant","__unstableForcePosition","anchorRef","anchorRect","getAnchorRect","isAlternate","contentProps","computedFlipProp","computedResizeProp","since","version","alternative","computedVariant","arrowRef","fallbackReferenceElement","setFallbackReferenceElement","anchorRefFallback","node","isMobileViewport","isExpanded","hasArrow","normalizedPlacementFromProps","middleware","apply","sizeProps","_refs$floating$curren","firstElementChild","refs","floating","current","HTMLElement","Object","assign","style","maxHeight","availableHeight","overflow","crossAxis","limiter","padding","element","slotName","slot","onDialogClose","type","event","dialogRef","dialogProps","__unstableOnClose","x","y","strategy","update","computedPlacement","middlewareData","arrowData","whileElementsMounted","referenceParam","floatingParam","updateParam","layoutShift","animationFrame","arrowCallbackRef","anchorRefTop","top","anchorRefBottom","bottom","anchorRefStartContainer","startContainer","anchorRefCurrent","resultingReferenceElement","setReference","mergedFloatingRef","setFloating","left","shouldReduceMotion","shouldAnimate","animationFinished","setAnimationFinished","motionInlineStyles","otherMotionProps","animationProps","onAnimationComplete","isPositioned","showBackdrop","setShowBackdrop","contextValue","ColorPicker","onPickerDragStart","onPickerDragEnd","content","Fragment","onClick","div","ref","tabIndex","icon","value","split","join","Number","isFinite","shouldRenderWithinSlot","hasAnchor","name","Popover","PopoverSlot","bubblesVirtually","__unstableSlotNameProvider","Provider"],"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","useFloating","flip","flipMiddleware","shift","shiftMiddleware","limitShift","autoUpdate","arrow","offset","offsetMiddleware","size","motion","useRef","useLayoutEffect","forwardRef","createContext","useContext","useMemo","useState","useCallback","createPortal","useReducedMotion","useViewportMatch","useMergeRefs","__experimentalUseDialog","useDialog","close","deprecated","Path","SVG","Button","ScrollLock","Slot","Fill","useSlot","computePopoverPosition","positionToPlacement","placementToMotionAnimationProps","getReferenceElement","contextConnect","useContextSystem","overlayMiddlewares","StyleProvider","SLOT_NAME","ArrowTriangle","createElement","xmlns","viewBox","className","role","d","vectorEffect","slotNameContext","undefined","fallbackContainerClassname","getPopoverFallbackContainer","container","document","body","querySelector","append","UnforwardedPopover","props","forwardedRef","animate","headerTitle","constrainTabbing","onClose","children","noArrow","position","placement","placementProp","offsetProp","focusOnMount","anchor","expandOnMobile","onFocusOutside","__unstableSlotName","resize","inline","variant","__unstableForcePosition","anchorRef","anchorRect","getAnchorRect","isAlternate","contentProps","computedFlipProp","computedResizeProp","since","version","alternative","computedVariant","arrowRef","fallbackReferenceElement","setFallbackReferenceElement","anchorRefFallback","node","isMobileViewport","isExpanded","hasArrow","normalizedPlacementFromProps","middleware","apply","sizeProps","_refs$floating$curren","firstElementChild","refs","floating","current","HTMLElement","Object","assign","style","maxHeight","availableHeight","overflow","crossAxis","limiter","padding","element","slotName","slot","onDialogClose","type","event","dialogRef","dialogProps","__unstableOnClose","x","y","strategy","update","computedPlacement","middlewareData","arrowData","whileElementsMounted","referenceParam","floatingParam","updateParam","layoutShift","animationFrame","arrowCallbackRef","anchorRefTop","top","anchorRefBottom","bottom","anchorRefStartContainer","startContainer","anchorRefCurrent","resultingReferenceElement","setReference","mergedFloatingRef","setFloating","left","shouldReduceMotion","shouldAnimate","animationFinished","setAnimationFinished","motionInlineStyles","otherMotionProps","animationProps","onAnimationComplete","isPositioned","content","div","ref","tabIndex","icon","onClick","split","join","Number","isFinite","shouldRenderWithinSlot","hasAnchor","name","Fragment","Popover","PopoverSlot","bubblesVirtually","__unstableSlotNameProvider","Provider"],"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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"}