@wordpress/components 32.6.0 → 33.0.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 (208) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/build/autocomplete/get-autocomplete-match.cjs +11 -2
  3. package/build/autocomplete/get-autocomplete-match.cjs.map +2 -2
  4. package/build/autocomplete/index.cjs +42 -11
  5. package/build/autocomplete/index.cjs.map +2 -2
  6. package/build/external-link/index.cjs +1 -1
  7. package/build/external-link/index.cjs.map +2 -2
  8. package/build/form-token-field/index.cjs +22 -6
  9. package/build/form-token-field/index.cjs.map +3 -3
  10. package/build/form-token-field/token-input.cjs +1 -1
  11. package/build/form-token-field/token-input.cjs.map +2 -2
  12. package/build/menu/popover.cjs +7 -3
  13. package/build/menu/popover.cjs.map +2 -2
  14. package/build/menu/styles.cjs +39 -16
  15. package/build/menu/styles.cjs.map +2 -2
  16. package/build/navigable-container/container.cjs +72 -110
  17. package/build/navigable-container/container.cjs.map +2 -2
  18. package/build/utils/breakpoint.cjs.map +1 -1
  19. package/build/utils/font.cjs.map +1 -1
  20. package/build/visually-hidden/component.cjs +1 -0
  21. package/build/visually-hidden/component.cjs.map +2 -2
  22. package/build-module/autocomplete/get-autocomplete-match.mjs +11 -2
  23. package/build-module/autocomplete/get-autocomplete-match.mjs.map +2 -2
  24. package/build-module/autocomplete/index.mjs +42 -11
  25. package/build-module/autocomplete/index.mjs.map +2 -2
  26. package/build-module/external-link/index.mjs +1 -1
  27. package/build-module/external-link/index.mjs.map +2 -2
  28. package/build-module/form-token-field/index.mjs +22 -6
  29. package/build-module/form-token-field/index.mjs.map +2 -2
  30. package/build-module/form-token-field/token-input.mjs +1 -1
  31. package/build-module/form-token-field/token-input.mjs.map +2 -2
  32. package/build-module/menu/popover.mjs +7 -3
  33. package/build-module/menu/popover.mjs.map +2 -2
  34. package/build-module/menu/styles.mjs +37 -16
  35. package/build-module/menu/styles.mjs.map +2 -2
  36. package/build-module/navigable-container/container.mjs +73 -111
  37. package/build-module/navigable-container/container.mjs.map +2 -2
  38. package/build-module/utils/breakpoint.mjs.map +1 -1
  39. package/build-module/utils/font.mjs.map +1 -1
  40. package/build-module/visually-hidden/component.mjs +1 -0
  41. package/build-module/visually-hidden/component.mjs.map +2 -2
  42. package/build-style/style-rtl.css +26 -2
  43. package/build-style/style.css +26 -2
  44. package/build-types/autocomplete/get-autocomplete-match.d.ts +10 -1
  45. package/build-types/autocomplete/get-autocomplete-match.d.ts.map +1 -1
  46. package/build-types/autocomplete/index.d.ts.map +1 -1
  47. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  48. package/build-types/button/stories/index.story.d.ts.map +1 -1
  49. package/build-types/card/stories/index.story.d.ts +0 -6
  50. package/build-types/card/stories/index.story.d.ts.map +1 -1
  51. package/build-types/checkbox-control/stories/index.story.d.ts.map +1 -1
  52. package/build-types/color-indicator/stories/index.story.d.ts.map +1 -1
  53. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  54. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  55. package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
  56. package/build-types/composite/stories/index.story.d.ts.map +1 -1
  57. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  58. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  59. package/build-types/drop-zone/stories/index.story.d.ts.map +1 -1
  60. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  61. package/build-types/external-link/index.d.ts.map +1 -1
  62. package/build-types/external-link/stories/index.story.d.ts.map +1 -1
  63. package/build-types/form-file-upload/stories/index.story.d.ts.map +1 -1
  64. package/build-types/form-toggle/stories/index.story.d.ts.map +1 -1
  65. package/build-types/form-token-field/index.d.ts.map +1 -1
  66. package/build-types/form-token-field/stories/index.story.d.ts.map +1 -1
  67. package/build-types/form-token-field/token-input.d.ts.map +1 -1
  68. package/build-types/form-token-field/types.d.ts +16 -2
  69. package/build-types/form-token-field/types.d.ts.map +1 -1
  70. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  71. package/build-types/icon/stories/index.story.d.ts.map +1 -1
  72. package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
  73. package/build-types/menu/popover.d.ts.map +1 -1
  74. package/build-types/menu/styles.d.ts +16 -1
  75. package/build-types/menu/styles.d.ts.map +1 -1
  76. package/build-types/menu-group/stories/index.story.d.ts.map +1 -1
  77. package/build-types/menu-item/stories/index.story.d.ts.map +1 -1
  78. package/build-types/menu-items-choice/stories/index.story.d.ts.map +1 -1
  79. package/build-types/modal/stories/index.story.d.ts.map +1 -1
  80. package/build-types/navigable-container/container.d.ts +3 -8
  81. package/build-types/navigable-container/container.d.ts.map +1 -1
  82. package/build-types/navigable-container/types.d.ts +1 -5
  83. package/build-types/navigable-container/types.d.ts.map +1 -1
  84. package/build-types/navigation/stories/utils/more-examples.d.ts.map +1 -1
  85. package/build-types/navigator/stories/index.story.d.ts.map +1 -1
  86. package/build-types/notice/stories/index.story.d.ts.map +1 -1
  87. package/build-types/panel/stories/index.story.d.ts.map +1 -1
  88. package/build-types/popover/stories/index.story.d.ts.map +1 -1
  89. package/build-types/progress-bar/stories/index.story.d.ts.map +1 -1
  90. package/build-types/radio-control/stories/index.story.d.ts.map +1 -1
  91. package/build-types/range-control/stories/index.story.d.ts.map +1 -1
  92. package/build-types/resizable-box/stories/index.story.d.ts.map +1 -1
  93. package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
  94. package/build-types/scroll-lock/stories/index.story.d.ts.map +1 -1
  95. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  96. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  97. package/build-types/shortcut/stories/index.story.d.ts.map +1 -1
  98. package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
  99. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  100. package/build-types/spinner/stories/index.story.d.ts.map +1 -1
  101. package/build-types/text-control/stories/index.story.d.ts.map +1 -1
  102. package/build-types/text-highlight/stories/index.story.d.ts.map +1 -1
  103. package/build-types/textarea-control/stories/index.story.d.ts.map +1 -1
  104. package/build-types/toggle-control/stories/index.story.d.ts.map +1 -1
  105. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  106. package/build-types/tree-select/stories/index.story.d.ts.map +1 -1
  107. package/build-types/utils/breakpoint.d.ts +2 -1
  108. package/build-types/utils/breakpoint.d.ts.map +1 -1
  109. package/build-types/utils/font.d.ts +3 -2
  110. package/build-types/utils/font.d.ts.map +1 -1
  111. package/build-types/visually-hidden/component.d.ts.map +1 -1
  112. package/build-types/visually-hidden/stories/index.story.d.ts +0 -6
  113. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
  114. package/package.json +21 -21
  115. package/src/autocomplete/get-autocomplete-match.ts +25 -4
  116. package/src/autocomplete/index.tsx +69 -21
  117. package/src/autocomplete/test/get-autocomplete-match.ts +97 -75
  118. package/src/base-control/stories/index.story.tsx +1 -0
  119. package/src/button/stories/index.story.tsx +1 -0
  120. package/src/button-group/style.scss +1 -2
  121. package/src/card/stories/index.story.tsx +2 -9
  122. package/src/checkbox-control/stories/index.story.tsx +1 -0
  123. package/src/circular-option-picker/style.scss +8 -6
  124. package/src/color-indicator/stories/index.story.tsx +1 -0
  125. package/src/color-palette/stories/index.story.tsx +1 -0
  126. package/src/color-picker/stories/index.story.tsx +1 -0
  127. package/src/combobox-control/stories/index.story.tsx +1 -0
  128. package/src/composite/stories/index.story.tsx +1 -0
  129. package/src/confirm-dialog/stories/index.story.tsx +1 -1
  130. package/src/custom-select-control/stories/index.story.tsx +1 -0
  131. package/src/disabled/stories/index.story.tsx +1 -0
  132. package/src/drop-zone/stories/index.story.tsx +1 -0
  133. package/src/dropdown/stories/index.story.tsx +1 -0
  134. package/src/external-link/index.tsx +1 -6
  135. package/src/external-link/stories/index.story.tsx +2 -1
  136. package/src/external-link/style.scss +30 -2
  137. package/src/form-file-upload/stories/index.story.tsx +1 -0
  138. package/src/form-toggle/stories/index.story.tsx +1 -0
  139. package/src/form-toggle/style.scss +3 -2
  140. package/src/form-token-field/README.md +2 -1
  141. package/src/form-token-field/index.tsx +39 -9
  142. package/src/form-token-field/stories/index.story.tsx +2 -0
  143. package/src/form-token-field/test/index.tsx +70 -10
  144. package/src/form-token-field/token-input.tsx +1 -6
  145. package/src/form-token-field/types.ts +16 -2
  146. package/src/gradient-picker/stories/index.story.tsx +1 -0
  147. package/src/icon/stories/index.story.tsx +1 -0
  148. package/src/input-control/stories/index.story.tsx +1 -1
  149. package/src/item-group/stories/index.story.tsx +1 -1
  150. package/src/keyboard-shortcuts/stories/index.story.tsx +1 -0
  151. package/src/menu/popover.tsx +15 -8
  152. package/src/menu/styles.ts +26 -16
  153. package/src/menu/test/index.tsx +24 -34
  154. package/src/menu-group/stories/index.story.tsx +1 -0
  155. package/src/menu-item/stories/index.story.tsx +1 -0
  156. package/src/menu-items-choice/stories/index.story.tsx +1 -0
  157. package/src/mobile/link-settings/index.native.js +1 -1
  158. package/src/modal/stories/index.story.tsx +1 -0
  159. package/src/navigable-container/container.tsx +120 -141
  160. package/src/navigable-container/test/navigable-menu.tsx +24 -0
  161. package/src/navigable-container/types.ts +1 -5
  162. package/src/navigation/stories/utils/more-examples.tsx +2 -1
  163. package/src/navigator/stories/index.story.tsx +1 -0
  164. package/src/notice/stories/index.story.tsx +1 -0
  165. package/src/notice/test/__snapshots__/index.tsx.snap +1 -0
  166. package/src/number-control/stories/index.story.tsx +1 -1
  167. package/src/panel/stories/index.story.tsx +1 -0
  168. package/src/popover/stories/index.story.tsx +1 -0
  169. package/src/progress-bar/stories/index.story.tsx +1 -0
  170. package/src/radio-control/stories/index.story.tsx +1 -0
  171. package/src/range-control/stories/index.story.tsx +1 -0
  172. package/src/resizable-box/stories/index.story.tsx +1 -0
  173. package/src/resizable-box/style.scss +4 -5
  174. package/src/sandbox/stories/index.story.tsx +1 -0
  175. package/src/scroll-lock/stories/index.story.tsx +1 -0
  176. package/src/search-control/stories/index.story.tsx +1 -0
  177. package/src/select-control/stories/index.story.tsx +1 -0
  178. package/src/shortcut/stories/index.story.tsx +1 -0
  179. package/src/slot-fill/stories/index.story.tsx +1 -0
  180. package/src/snackbar/stories/index.story.tsx +1 -0
  181. package/src/spinner/stories/index.story.tsx +1 -0
  182. package/src/text-control/stories/index.story.tsx +1 -0
  183. package/src/text-highlight/stories/index.story.tsx +1 -0
  184. package/src/textarea-control/stories/index.story.tsx +1 -0
  185. package/src/toggle-control/stories/index.story.tsx +1 -0
  186. package/src/toggle-group-control/stories/index.story.tsx +1 -1
  187. package/src/toolbar/toolbar-group/index.tsx +2 -2
  188. package/src/tooltip/stories/index.story.tsx +1 -0
  189. package/src/tooltip/test/index.tsx +3 -2
  190. package/src/tree-grid/stories/index.story.tsx +1 -1
  191. package/src/tree-select/stories/index.story.tsx +1 -0
  192. package/src/truncate/stories/index.story.tsx +1 -1
  193. package/src/unit-control/stories/index.story.tsx +1 -1
  194. package/src/utils/breakpoint.js +1 -1
  195. package/src/utils/font.js +1 -1
  196. package/src/visually-hidden/component.tsx +1 -0
  197. package/src/visually-hidden/stories/index.story.tsx +2 -8
  198. package/build/card/context.cjs +0 -36
  199. package/build/card/context.cjs.map +0 -7
  200. package/build-module/card/context.mjs +0 -10
  201. package/build-module/card/context.mjs.map +0 -7
  202. package/build-types/card/context.d.ts +0 -3
  203. package/build-types/card/context.d.ts.map +0 -1
  204. package/build-types/visually-hidden/test/index.d.ts +0 -2
  205. package/build-types/visually-hidden/test/index.d.ts.map +0 -1
  206. package/src/card/context.ts +0 -9
  207. package/src/visually-hidden/test/__snapshots__/index.tsx.snap +0 -12
  208. package/src/visually-hidden/test/index.tsx +0 -17
@@ -5,6 +5,7 @@ import { __, _n, sprintf } from "@wordpress/i18n";
5
5
  import { useDebounce, useInstanceId, usePrevious } from "@wordpress/compose";
6
6
  import { speak } from "@wordpress/a11y";
7
7
  import { isShallowEqual } from "@wordpress/is-shallow-equal";
8
+ import deprecated from "@wordpress/deprecated";
8
9
  import Token from "./token.mjs";
9
10
  import TokenInput from "./token-input.mjs";
10
11
  import { TokensAndInputWrapperFlex } from "./styles.mjs";
@@ -46,16 +47,29 @@ function FormTokenField(props) {
46
47
  __experimentalRenderItem,
47
48
  __experimentalExpandOnFocus = false,
48
49
  __experimentalValidateInput = () => true,
49
- __experimentalShowHowTo = true,
50
+ __experimentalShowHowTo,
50
51
  __next40pxDefaultSize = false,
51
52
  __experimentalAutoSelectFirstMatch = false,
52
- tokenizeOnBlur = false
53
+ tokenizeOnBlur = false,
54
+ help
53
55
  } = useDeprecated36pxDefaultSizeProp(props);
54
56
  maybeWarnDeprecated36pxSize({
55
57
  componentName: "FormTokenField",
56
58
  size: void 0,
57
59
  __next40pxDefaultSize
58
60
  });
61
+ const defaultHelp = tokenizeOnSpace ? __("Separate with commas, spaces, or the Enter key.") : __("Separate with commas or the Enter key.");
62
+ let computedHelp = help !== void 0 ? help : defaultHelp;
63
+ if (typeof __experimentalShowHowTo === "boolean") {
64
+ deprecated("`__experimentalShowHowTo` prop in wp.components.FormTokenField", {
65
+ since: "7.1",
66
+ alternative: "`help` prop",
67
+ hint: "The `help` prop now defaults to the previous how-to text. Pass an empty string to hide it."
68
+ });
69
+ if (__experimentalShowHowTo === false && help === void 0) {
70
+ computedHelp = "";
71
+ }
72
+ }
59
73
  const instanceId = useInstanceId(FormTokenField);
60
74
  const [incompleteTokenValue, setIncompleteTokenValue] = useState("");
61
75
  const [inputOffsetFromEnd, setInputOffsetFromEnd] = useState(0);
@@ -448,6 +462,7 @@ function FormTokenField(props) {
448
462
  }, "token-" + _value);
449
463
  }
450
464
  function renderInput() {
465
+ const describedById = computedHelp ? `components-form-token-input-${instanceId}__help` : void 0;
451
466
  const inputProps = {
452
467
  instanceId,
453
468
  autoCapitalize,
@@ -457,7 +472,8 @@ function FormTokenField(props) {
457
472
  value: incompleteTokenValue,
458
473
  onBlur,
459
474
  isExpanded,
460
- selectedSuggestionIndex
475
+ selectedSuggestionIndex,
476
+ "aria-describedby": describedById
461
477
  };
462
478
  return /* @__PURE__ */ _jsx(TokenInput, {
463
479
  ...inputProps,
@@ -512,10 +528,10 @@ function FormTokenField(props) {
512
528
  onSelect: onSuggestionSelected,
513
529
  __experimentalRenderItem
514
530
  })]
515
- }), __experimentalShowHowTo && /* @__PURE__ */ _jsx(StyledHelp, {
516
- id: `components-form-token-suggestions-howto-${instanceId}`,
531
+ }), computedHelp && /* @__PURE__ */ _jsx(StyledHelp, {
532
+ id: `components-form-token-input-${instanceId}__help`,
517
533
  className: "components-form-token-field__help",
518
- children: tokenizeOnSpace ? __("Separate with commas, spaces, or the Enter key.") : __("Separate with commas or the Enter key.")
534
+ children: computedHelp
519
535
  })]
520
536
  });
521
537
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/form-token-field/index.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport { FlexItem } from '../flex';\nimport { StyledHelp, StyledLabel } from '../base-control/styles/base-control-styles';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst identity = value => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](https://react.dev/reference/react-dom/components#form-components) in the React Documentation for more information.\n */\nexport function FormTokenField(props) {\n const {\n autoCapitalize,\n autoComplete,\n maxLength,\n placeholder,\n label = __('Add item'),\n className,\n suggestions = [],\n maxSuggestions = 100,\n value = [],\n displayTransform = identity,\n saveTransform = token => token.trim(),\n onChange = () => {},\n onInputChange = () => {},\n onFocus = undefined,\n isBorderless = false,\n disabled = false,\n tokenizeOnSpace = false,\n messages = {\n added: __('Item added.'),\n removed: __('Item removed.'),\n remove: __('Remove item'),\n __experimentalInvalid: __('Invalid item')\n },\n __experimentalRenderItem,\n __experimentalExpandOnFocus = false,\n __experimentalValidateInput = () => true,\n __experimentalShowHowTo = true,\n __next40pxDefaultSize = false,\n __experimentalAutoSelectFirstMatch = false,\n tokenizeOnBlur = false\n } = useDeprecated36pxDefaultSizeProp(props);\n maybeWarnDeprecated36pxSize({\n componentName: 'FormTokenField',\n size: undefined,\n __next40pxDefaultSize\n });\n const instanceId = useInstanceId(FormTokenField);\n\n // We reset to these initial values again in the onBlur\n const [incompleteTokenValue, setIncompleteTokenValue] = useState('');\n const [inputOffsetFromEnd, setInputOffsetFromEnd] = useState(0);\n const [isActive, setIsActive] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(-1);\n const [selectedSuggestionScroll, setSelectedSuggestionScroll] = useState(false);\n const prevSuggestions = usePrevious(suggestions);\n const prevValue = usePrevious(value);\n const input = useRef(null);\n const tokensAndInput = useRef(null);\n const debouncedSpeak = useDebounce(speak, 500);\n useEffect(() => {\n // Make sure to focus the input when the isActive state is true.\n if (isActive && !hasFocus()) {\n focus();\n }\n }, [isActive]);\n useEffect(() => {\n const suggestionsDidUpdate = !isShallowEqual(suggestions, prevSuggestions || []);\n if (suggestionsDidUpdate || value !== prevValue) {\n updateSuggestions(suggestionsDidUpdate);\n }\n\n // TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n }, [suggestions, prevSuggestions, value, prevValue]);\n useEffect(() => {\n updateSuggestions();\n }, [incompleteTokenValue]);\n useEffect(() => {\n updateSuggestions();\n }, [__experimentalAutoSelectFirstMatch]);\n if (disabled && isActive) {\n setIsActive(false);\n setIncompleteTokenValue('');\n }\n function focus() {\n input.current?.focus();\n }\n function hasFocus() {\n return input.current === input.current?.ownerDocument.activeElement;\n }\n function onFocusHandler(event) {\n // If focus is on the input or on the container, set the isActive state to true.\n if (hasFocus() || event.target === tokensAndInput.current) {\n setIsActive(true);\n setIsExpanded(__experimentalExpandOnFocus || isExpanded);\n } else {\n /*\n * Otherwise, focus is on one of the token \"remove\" buttons and we\n * set the isActive state to false to prevent the input to be\n * re-focused, see componentDidUpdate().\n */\n setIsActive(false);\n }\n if ('function' === typeof onFocus) {\n onFocus(event);\n }\n }\n function onBlur(event) {\n if (inputHasValidValue() && __experimentalValidateInput(incompleteTokenValue)) {\n setIsActive(false);\n if (tokenizeOnBlur && inputHasValidValue()) {\n addNewToken(incompleteTokenValue);\n }\n } else {\n // Reset to initial state\n setIncompleteTokenValue('');\n setInputOffsetFromEnd(0);\n setIsActive(false);\n if (__experimentalExpandOnFocus) {\n // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n // the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n const hasFocusWithin = event.relatedTarget === tokensAndInput.current;\n setIsExpanded(hasFocusWithin);\n } else {\n // Else collapse the suggestion list. This will result in the suggestion list closing\n // after a suggestion has been submitted since that causes a blur.\n setIsExpanded(false);\n }\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n }\n }\n function onKeyDown(event) {\n let preventDefault = false;\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case 'Backspace':\n preventDefault = handleDeleteKey(deleteTokenBeforeInput);\n break;\n case 'Enter':\n preventDefault = addCurrentToken();\n break;\n case 'ArrowLeft':\n preventDefault = handleLeftArrowKey();\n break;\n case 'ArrowUp':\n preventDefault = handleUpArrowKey();\n break;\n case 'ArrowRight':\n preventDefault = handleRightArrowKey();\n break;\n case 'ArrowDown':\n preventDefault = handleDownArrowKey();\n break;\n case 'Delete':\n preventDefault = handleDeleteKey(deleteTokenAfterInput);\n break;\n case 'Space':\n if (tokenizeOnSpace) {\n preventDefault = addCurrentToken();\n }\n break;\n case 'Escape':\n preventDefault = handleEscapeKey(event);\n break;\n case 'Tab':\n preventDefault = handleTabKey(event);\n break;\n default:\n break;\n }\n if (preventDefault) {\n event.preventDefault();\n }\n }\n function onKeyPress(event) {\n let preventDefault = false;\n switch (event.key) {\n case ',':\n preventDefault = handleCommaKey();\n break;\n default:\n break;\n }\n if (preventDefault) {\n event.preventDefault();\n }\n }\n function onContainerTouched(event) {\n // Prevent clicking/touching the tokensAndInput container from blurring\n // the input and adding the current token.\n if (event.target === tokensAndInput.current && isActive) {\n event.preventDefault();\n }\n }\n function onTokenClickRemove(event) {\n deleteToken(event.value);\n focus();\n }\n function onSuggestionHovered(suggestion) {\n const index = getMatchingSuggestions().indexOf(suggestion);\n if (index >= 0) {\n setSelectedSuggestionIndex(index);\n setSelectedSuggestionScroll(false);\n }\n }\n function onSuggestionSelected(suggestion) {\n addNewToken(suggestion);\n }\n function onInputChangeHandler(event) {\n const text = event.value;\n const separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n const items = text.split(separator);\n const tokenValue = items[items.length - 1] || '';\n if (items.length > 1) {\n addNewTokens(items.slice(0, -1));\n }\n setIncompleteTokenValue(tokenValue);\n onInputChange(tokenValue);\n }\n function handleDeleteKey(_deleteToken) {\n let preventDefault = false;\n if (hasFocus() && isInputEmpty()) {\n _deleteToken();\n preventDefault = true;\n }\n return preventDefault;\n }\n function handleLeftArrowKey() {\n let preventDefault = false;\n if (isInputEmpty()) {\n moveInputBeforePreviousToken();\n preventDefault = true;\n }\n return preventDefault;\n }\n function handleRightArrowKey() {\n let preventDefault = false;\n if (isInputEmpty()) {\n moveInputAfterNextToken();\n preventDefault = true;\n }\n return preventDefault;\n }\n function handleUpArrowKey() {\n setSelectedSuggestionIndex(index => {\n return (index === 0 ? getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length : index) - 1;\n });\n setSelectedSuggestionScroll(true);\n return true; // PreventDefault.\n }\n function handleDownArrowKey() {\n setSelectedSuggestionIndex(index => {\n return (index + 1) % getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length;\n });\n setSelectedSuggestionScroll(true);\n return true; // PreventDefault.\n }\n function collapseSuggestionsList(event) {\n if (event.target instanceof HTMLInputElement) {\n setIncompleteTokenValue(event.target.value);\n setIsExpanded(false);\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n }\n }\n function handleEscapeKey(event) {\n collapseSuggestionsList(event);\n return true; // PreventDefault.\n }\n function handleTabKey(event) {\n collapseSuggestionsList(event);\n return false; // Do not prevent the default behavior.\n }\n function handleCommaKey() {\n if (inputHasValidValue()) {\n addNewToken(incompleteTokenValue);\n }\n return true; // PreventDefault.\n }\n function moveInputToIndex(index) {\n setInputOffsetFromEnd(value.length - Math.max(index, -1) - 1);\n }\n function moveInputBeforePreviousToken() {\n setInputOffsetFromEnd(prevInputOffsetFromEnd => {\n return Math.min(prevInputOffsetFromEnd + 1, value.length);\n });\n }\n function moveInputAfterNextToken() {\n setInputOffsetFromEnd(prevInputOffsetFromEnd => {\n return Math.max(prevInputOffsetFromEnd - 1, 0);\n });\n }\n function deleteTokenBeforeInput() {\n const index = getIndexOfInput() - 1;\n if (index > -1) {\n deleteToken(value[index]);\n }\n }\n function deleteTokenAfterInput() {\n const index = getIndexOfInput();\n if (index < value.length) {\n deleteToken(value[index]);\n // Update input offset since it's the offset from the last token.\n moveInputToIndex(index);\n }\n }\n function addCurrentToken() {\n let preventDefault = false;\n const selectedSuggestion = getSelectedSuggestion();\n if (selectedSuggestion) {\n addNewToken(selectedSuggestion);\n preventDefault = true;\n } else if (inputHasValidValue()) {\n addNewToken(incompleteTokenValue);\n preventDefault = true;\n }\n return preventDefault;\n }\n function addNewTokens(tokens) {\n const tokensToAdd = [...new Set(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)))];\n if (tokensToAdd.length > 0) {\n const newValue = [...value];\n newValue.splice(getIndexOfInput(), 0, ...tokensToAdd);\n onChange(newValue);\n }\n }\n function addNewToken(token) {\n if (!__experimentalValidateInput(token)) {\n speak(messages.__experimentalInvalid, 'assertive');\n return;\n }\n addNewTokens([token]);\n speak(messages.added, 'assertive');\n setIncompleteTokenValue('');\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n setIsExpanded(!__experimentalExpandOnFocus);\n if (isActive && !tokenizeOnBlur) {\n focus();\n }\n }\n function deleteToken(token) {\n const newTokens = value.filter(item => {\n return getTokenValue(item) !== getTokenValue(token);\n });\n onChange(newTokens);\n speak(messages.removed, 'assertive');\n }\n function getTokenValue(token) {\n if ('object' === typeof token) {\n return token.value;\n }\n return token;\n }\n function getMatchingSuggestions(searchValue = incompleteTokenValue, _suggestions = suggestions, _value = value, _maxSuggestions = maxSuggestions, _saveTransform = saveTransform) {\n let match = _saveTransform(searchValue);\n const startsWithMatch = [];\n const containsMatch = [];\n const normalizedValue = _value.map(item => {\n if (typeof item === 'string') {\n return item;\n }\n return item.value;\n });\n if (match.length === 0) {\n _suggestions = _suggestions.filter(suggestion => !normalizedValue.includes(suggestion));\n } else {\n match = match.normalize('NFKC').toLocaleLowerCase();\n _suggestions.forEach(suggestion => {\n const index = suggestion.normalize('NFKC').toLocaleLowerCase().indexOf(match);\n if (normalizedValue.indexOf(suggestion) === -1) {\n if (index === 0) {\n startsWithMatch.push(suggestion);\n } else if (index > 0) {\n containsMatch.push(suggestion);\n }\n }\n });\n _suggestions = startsWithMatch.concat(containsMatch);\n }\n return _suggestions.slice(0, _maxSuggestions);\n }\n function getSelectedSuggestion() {\n if (selectedSuggestionIndex !== -1) {\n return getMatchingSuggestions()[selectedSuggestionIndex];\n }\n return undefined;\n }\n function valueContainsToken(token) {\n return value.some(item => {\n return getTokenValue(token) === getTokenValue(item);\n });\n }\n function getIndexOfInput() {\n return value.length - inputOffsetFromEnd;\n }\n function isInputEmpty() {\n return incompleteTokenValue.length === 0;\n }\n function inputHasValidValue() {\n return saveTransform(incompleteTokenValue).length > 0;\n }\n function updateSuggestions(resetSelectedSuggestion = true) {\n const inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n const matchingSuggestions = getMatchingSuggestions(incompleteTokenValue);\n const hasMatchingSuggestions = matchingSuggestions.length > 0;\n const shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n setIsExpanded(shouldExpandIfFocuses || inputHasMinimumChars && hasMatchingSuggestions);\n if (resetSelectedSuggestion) {\n if (__experimentalAutoSelectFirstMatch && inputHasMinimumChars && hasMatchingSuggestions) {\n setSelectedSuggestionIndex(0);\n setSelectedSuggestionScroll(true);\n } else {\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n }\n }\n if (inputHasMinimumChars) {\n const message = hasMatchingSuggestions ? sprintf(/* translators: %d: number of results. */\n _n('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', matchingSuggestions.length), matchingSuggestions.length) : __('No results.');\n debouncedSpeak(message, 'assertive');\n }\n }\n function renderTokensAndInput() {\n const components = value.map(renderToken);\n components.splice(getIndexOfInput(), 0, renderInput());\n return components;\n }\n function renderToken(token, index, tokens) {\n const _value = getTokenValue(token);\n const status = typeof token !== 'string' ? token.status : undefined;\n const termPosition = index + 1;\n const termsCount = tokens.length;\n return /*#__PURE__*/_jsx(FlexItem, {\n children: /*#__PURE__*/_jsx(Token, {\n value: _value,\n status: status,\n title: typeof token !== 'string' ? token.title : undefined,\n displayTransform: displayTransform,\n onClickRemove: onTokenClickRemove,\n isBorderless: typeof token !== 'string' && token.isBorderless || isBorderless,\n onMouseEnter: typeof token !== 'string' ? token.onMouseEnter : undefined,\n onMouseLeave: typeof token !== 'string' ? token.onMouseLeave : undefined,\n disabled: 'error' !== status && disabled,\n messages: messages,\n termsCount: termsCount,\n termPosition: termPosition\n })\n }, 'token-' + _value);\n }\n function renderInput() {\n const inputProps = {\n instanceId,\n autoCapitalize,\n autoComplete,\n placeholder: value.length === 0 ? placeholder : '',\n disabled,\n value: incompleteTokenValue,\n onBlur,\n isExpanded,\n selectedSuggestionIndex\n };\n return /*#__PURE__*/_jsx(TokenInput, {\n ...inputProps,\n onChange: !(maxLength && value.length >= maxLength) ? onInputChangeHandler : undefined,\n ref: input\n }, \"input\");\n }\n const classes = clsx(className, 'components-form-token-field__input-container', {\n 'is-active': isActive,\n 'is-disabled': disabled\n });\n let tokenFieldProps = {\n className: 'components-form-token-field',\n tabIndex: -1\n };\n const matchingSuggestions = getMatchingSuggestions();\n if (!disabled) {\n tokenFieldProps = Object.assign({}, tokenFieldProps, {\n onKeyDown: withIgnoreIMEEvents(onKeyDown),\n onKeyPress,\n onFocus: onFocusHandler\n });\n }\n\n // Disable reason: There is no appropriate role which describes the\n // input container intended accessible usability.\n // TODO: Refactor click detection to use blur to stop propagation.\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n return /*#__PURE__*/_jsxs(\"div\", {\n ...tokenFieldProps,\n children: [label && /*#__PURE__*/_jsx(StyledLabel, {\n htmlFor: `components-form-token-input-${instanceId}`,\n className: \"components-form-token-field__label\",\n children: label\n }), /*#__PURE__*/_jsxs(\"div\", {\n ref: tokensAndInput,\n className: classes,\n tabIndex: -1,\n onMouseDown: onContainerTouched,\n onTouchStart: onContainerTouched,\n children: [/*#__PURE__*/_jsx(TokensAndInputWrapperFlex, {\n justify: \"flex-start\",\n align: \"center\",\n gap: 1,\n wrap: true,\n __next40pxDefaultSize: __next40pxDefaultSize,\n hasTokens: !!value.length,\n children: renderTokensAndInput()\n }), isExpanded && /*#__PURE__*/_jsx(SuggestionsList, {\n instanceId: instanceId,\n match: saveTransform(incompleteTokenValue),\n displayTransform: displayTransform,\n suggestions: matchingSuggestions,\n selectedIndex: selectedSuggestionIndex,\n scrollIntoView: selectedSuggestionScroll,\n onHover: onSuggestionHovered,\n onSelect: onSuggestionSelected,\n __experimentalRenderItem: __experimentalRenderItem\n })]\n }), __experimentalShowHowTo && /*#__PURE__*/_jsx(StyledHelp, {\n id: `components-form-token-suggestions-howto-${instanceId}`,\n className: \"components-form-token-field__help\",\n children: tokenizeOnSpace ? __('Separate with commas, spaces, or the Enter key.') : __('Separate with commas or the Enter key.')\n })]\n });\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n}\nexport default FormTokenField;"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport { FlexItem } from '../flex';\nimport { StyledHelp, StyledLabel } from '../base-control/styles/base-control-styles';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst identity = value => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](https://react.dev/reference/react-dom/components#form-components) in the React Documentation for more information.\n */\nexport function FormTokenField(props) {\n const {\n autoCapitalize,\n autoComplete,\n maxLength,\n placeholder,\n label = __('Add item'),\n className,\n suggestions = [],\n maxSuggestions = 100,\n value = [],\n displayTransform = identity,\n saveTransform = token => token.trim(),\n onChange = () => {},\n onInputChange = () => {},\n onFocus = undefined,\n isBorderless = false,\n disabled = false,\n tokenizeOnSpace = false,\n messages = {\n added: __('Item added.'),\n removed: __('Item removed.'),\n remove: __('Remove item'),\n __experimentalInvalid: __('Invalid item')\n },\n __experimentalRenderItem,\n __experimentalExpandOnFocus = false,\n __experimentalValidateInput = () => true,\n __experimentalShowHowTo,\n __next40pxDefaultSize = false,\n __experimentalAutoSelectFirstMatch = false,\n tokenizeOnBlur = false,\n help\n } = useDeprecated36pxDefaultSizeProp(props);\n maybeWarnDeprecated36pxSize({\n componentName: 'FormTokenField',\n size: undefined,\n __next40pxDefaultSize\n });\n const defaultHelp = tokenizeOnSpace ? __('Separate with commas, spaces, or the Enter key.') : __('Separate with commas or the Enter key.');\n let computedHelp = help !== undefined ? help : defaultHelp;\n if (typeof __experimentalShowHowTo === 'boolean') {\n deprecated('`__experimentalShowHowTo` prop in wp.components.FormTokenField', {\n since: '7.1',\n alternative: '`help` prop',\n hint: 'The `help` prop now defaults to the previous how-to text. Pass an empty string to hide it.'\n });\n if (__experimentalShowHowTo === false && help === undefined) {\n computedHelp = '';\n }\n }\n const instanceId = useInstanceId(FormTokenField);\n\n // We reset to these initial values again in the onBlur\n const [incompleteTokenValue, setIncompleteTokenValue] = useState('');\n const [inputOffsetFromEnd, setInputOffsetFromEnd] = useState(0);\n const [isActive, setIsActive] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(-1);\n const [selectedSuggestionScroll, setSelectedSuggestionScroll] = useState(false);\n const prevSuggestions = usePrevious(suggestions);\n const prevValue = usePrevious(value);\n const input = useRef(null);\n const tokensAndInput = useRef(null);\n const debouncedSpeak = useDebounce(speak, 500);\n useEffect(() => {\n // Make sure to focus the input when the isActive state is true.\n if (isActive && !hasFocus()) {\n focus();\n }\n }, [isActive]);\n useEffect(() => {\n const suggestionsDidUpdate = !isShallowEqual(suggestions, prevSuggestions || []);\n if (suggestionsDidUpdate || value !== prevValue) {\n updateSuggestions(suggestionsDidUpdate);\n }\n\n // TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n }, [suggestions, prevSuggestions, value, prevValue]);\n useEffect(() => {\n updateSuggestions();\n }, [incompleteTokenValue]);\n useEffect(() => {\n updateSuggestions();\n }, [__experimentalAutoSelectFirstMatch]);\n if (disabled && isActive) {\n setIsActive(false);\n setIncompleteTokenValue('');\n }\n function focus() {\n input.current?.focus();\n }\n function hasFocus() {\n return input.current === input.current?.ownerDocument.activeElement;\n }\n function onFocusHandler(event) {\n // If focus is on the input or on the container, set the isActive state to true.\n if (hasFocus() || event.target === tokensAndInput.current) {\n setIsActive(true);\n setIsExpanded(__experimentalExpandOnFocus || isExpanded);\n } else {\n /*\n * Otherwise, focus is on one of the token \"remove\" buttons and we\n * set the isActive state to false to prevent the input to be\n * re-focused, see componentDidUpdate().\n */\n setIsActive(false);\n }\n if ('function' === typeof onFocus) {\n onFocus(event);\n }\n }\n function onBlur(event) {\n if (inputHasValidValue() && __experimentalValidateInput(incompleteTokenValue)) {\n setIsActive(false);\n if (tokenizeOnBlur && inputHasValidValue()) {\n addNewToken(incompleteTokenValue);\n }\n } else {\n // Reset to initial state\n setIncompleteTokenValue('');\n setInputOffsetFromEnd(0);\n setIsActive(false);\n if (__experimentalExpandOnFocus) {\n // If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n // the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n const hasFocusWithin = event.relatedTarget === tokensAndInput.current;\n setIsExpanded(hasFocusWithin);\n } else {\n // Else collapse the suggestion list. This will result in the suggestion list closing\n // after a suggestion has been submitted since that causes a blur.\n setIsExpanded(false);\n }\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n }\n }\n function onKeyDown(event) {\n let preventDefault = false;\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case 'Backspace':\n preventDefault = handleDeleteKey(deleteTokenBeforeInput);\n break;\n case 'Enter':\n preventDefault = addCurrentToken();\n break;\n case 'ArrowLeft':\n preventDefault = handleLeftArrowKey();\n break;\n case 'ArrowUp':\n preventDefault = handleUpArrowKey();\n break;\n case 'ArrowRight':\n preventDefault = handleRightArrowKey();\n break;\n case 'ArrowDown':\n preventDefault = handleDownArrowKey();\n break;\n case 'Delete':\n preventDefault = handleDeleteKey(deleteTokenAfterInput);\n break;\n case 'Space':\n if (tokenizeOnSpace) {\n preventDefault = addCurrentToken();\n }\n break;\n case 'Escape':\n preventDefault = handleEscapeKey(event);\n break;\n case 'Tab':\n preventDefault = handleTabKey(event);\n break;\n default:\n break;\n }\n if (preventDefault) {\n event.preventDefault();\n }\n }\n function onKeyPress(event) {\n let preventDefault = false;\n switch (event.key) {\n case ',':\n preventDefault = handleCommaKey();\n break;\n default:\n break;\n }\n if (preventDefault) {\n event.preventDefault();\n }\n }\n function onContainerTouched(event) {\n // Prevent clicking/touching the tokensAndInput container from blurring\n // the input and adding the current token.\n if (event.target === tokensAndInput.current && isActive) {\n event.preventDefault();\n }\n }\n function onTokenClickRemove(event) {\n deleteToken(event.value);\n focus();\n }\n function onSuggestionHovered(suggestion) {\n const index = getMatchingSuggestions().indexOf(suggestion);\n if (index >= 0) {\n setSelectedSuggestionIndex(index);\n setSelectedSuggestionScroll(false);\n }\n }\n function onSuggestionSelected(suggestion) {\n addNewToken(suggestion);\n }\n function onInputChangeHandler(event) {\n const text = event.value;\n const separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n const items = text.split(separator);\n const tokenValue = items[items.length - 1] || '';\n if (items.length > 1) {\n addNewTokens(items.slice(0, -1));\n }\n setIncompleteTokenValue(tokenValue);\n onInputChange(tokenValue);\n }\n function handleDeleteKey(_deleteToken) {\n let preventDefault = false;\n if (hasFocus() && isInputEmpty()) {\n _deleteToken();\n preventDefault = true;\n }\n return preventDefault;\n }\n function handleLeftArrowKey() {\n let preventDefault = false;\n if (isInputEmpty()) {\n moveInputBeforePreviousToken();\n preventDefault = true;\n }\n return preventDefault;\n }\n function handleRightArrowKey() {\n let preventDefault = false;\n if (isInputEmpty()) {\n moveInputAfterNextToken();\n preventDefault = true;\n }\n return preventDefault;\n }\n function handleUpArrowKey() {\n setSelectedSuggestionIndex(index => {\n return (index === 0 ? getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length : index) - 1;\n });\n setSelectedSuggestionScroll(true);\n return true; // PreventDefault.\n }\n function handleDownArrowKey() {\n setSelectedSuggestionIndex(index => {\n return (index + 1) % getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length;\n });\n setSelectedSuggestionScroll(true);\n return true; // PreventDefault.\n }\n function collapseSuggestionsList(event) {\n if (event.target instanceof HTMLInputElement) {\n setIncompleteTokenValue(event.target.value);\n setIsExpanded(false);\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n }\n }\n function handleEscapeKey(event) {\n collapseSuggestionsList(event);\n return true; // PreventDefault.\n }\n function handleTabKey(event) {\n collapseSuggestionsList(event);\n return false; // Do not prevent the default behavior.\n }\n function handleCommaKey() {\n if (inputHasValidValue()) {\n addNewToken(incompleteTokenValue);\n }\n return true; // PreventDefault.\n }\n function moveInputToIndex(index) {\n setInputOffsetFromEnd(value.length - Math.max(index, -1) - 1);\n }\n function moveInputBeforePreviousToken() {\n setInputOffsetFromEnd(prevInputOffsetFromEnd => {\n return Math.min(prevInputOffsetFromEnd + 1, value.length);\n });\n }\n function moveInputAfterNextToken() {\n setInputOffsetFromEnd(prevInputOffsetFromEnd => {\n return Math.max(prevInputOffsetFromEnd - 1, 0);\n });\n }\n function deleteTokenBeforeInput() {\n const index = getIndexOfInput() - 1;\n if (index > -1) {\n deleteToken(value[index]);\n }\n }\n function deleteTokenAfterInput() {\n const index = getIndexOfInput();\n if (index < value.length) {\n deleteToken(value[index]);\n // Update input offset since it's the offset from the last token.\n moveInputToIndex(index);\n }\n }\n function addCurrentToken() {\n let preventDefault = false;\n const selectedSuggestion = getSelectedSuggestion();\n if (selectedSuggestion) {\n addNewToken(selectedSuggestion);\n preventDefault = true;\n } else if (inputHasValidValue()) {\n addNewToken(incompleteTokenValue);\n preventDefault = true;\n }\n return preventDefault;\n }\n function addNewTokens(tokens) {\n const tokensToAdd = [...new Set(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)))];\n if (tokensToAdd.length > 0) {\n const newValue = [...value];\n newValue.splice(getIndexOfInput(), 0, ...tokensToAdd);\n onChange(newValue);\n }\n }\n function addNewToken(token) {\n if (!__experimentalValidateInput(token)) {\n speak(messages.__experimentalInvalid, 'assertive');\n return;\n }\n addNewTokens([token]);\n speak(messages.added, 'assertive');\n setIncompleteTokenValue('');\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n setIsExpanded(!__experimentalExpandOnFocus);\n if (isActive && !tokenizeOnBlur) {\n focus();\n }\n }\n function deleteToken(token) {\n const newTokens = value.filter(item => {\n return getTokenValue(item) !== getTokenValue(token);\n });\n onChange(newTokens);\n speak(messages.removed, 'assertive');\n }\n function getTokenValue(token) {\n if ('object' === typeof token) {\n return token.value;\n }\n return token;\n }\n function getMatchingSuggestions(searchValue = incompleteTokenValue, _suggestions = suggestions, _value = value, _maxSuggestions = maxSuggestions, _saveTransform = saveTransform) {\n let match = _saveTransform(searchValue);\n const startsWithMatch = [];\n const containsMatch = [];\n const normalizedValue = _value.map(item => {\n if (typeof item === 'string') {\n return item;\n }\n return item.value;\n });\n if (match.length === 0) {\n _suggestions = _suggestions.filter(suggestion => !normalizedValue.includes(suggestion));\n } else {\n match = match.normalize('NFKC').toLocaleLowerCase();\n _suggestions.forEach(suggestion => {\n const index = suggestion.normalize('NFKC').toLocaleLowerCase().indexOf(match);\n if (normalizedValue.indexOf(suggestion) === -1) {\n if (index === 0) {\n startsWithMatch.push(suggestion);\n } else if (index > 0) {\n containsMatch.push(suggestion);\n }\n }\n });\n _suggestions = startsWithMatch.concat(containsMatch);\n }\n return _suggestions.slice(0, _maxSuggestions);\n }\n function getSelectedSuggestion() {\n if (selectedSuggestionIndex !== -1) {\n return getMatchingSuggestions()[selectedSuggestionIndex];\n }\n return undefined;\n }\n function valueContainsToken(token) {\n return value.some(item => {\n return getTokenValue(token) === getTokenValue(item);\n });\n }\n function getIndexOfInput() {\n return value.length - inputOffsetFromEnd;\n }\n function isInputEmpty() {\n return incompleteTokenValue.length === 0;\n }\n function inputHasValidValue() {\n return saveTransform(incompleteTokenValue).length > 0;\n }\n function updateSuggestions(resetSelectedSuggestion = true) {\n const inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n const matchingSuggestions = getMatchingSuggestions(incompleteTokenValue);\n const hasMatchingSuggestions = matchingSuggestions.length > 0;\n const shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n setIsExpanded(shouldExpandIfFocuses || inputHasMinimumChars && hasMatchingSuggestions);\n if (resetSelectedSuggestion) {\n if (__experimentalAutoSelectFirstMatch && inputHasMinimumChars && hasMatchingSuggestions) {\n setSelectedSuggestionIndex(0);\n setSelectedSuggestionScroll(true);\n } else {\n setSelectedSuggestionIndex(-1);\n setSelectedSuggestionScroll(false);\n }\n }\n if (inputHasMinimumChars) {\n const message = hasMatchingSuggestions ? sprintf(/* translators: %d: number of results. */\n _n('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', matchingSuggestions.length), matchingSuggestions.length) : __('No results.');\n debouncedSpeak(message, 'assertive');\n }\n }\n function renderTokensAndInput() {\n const components = value.map(renderToken);\n components.splice(getIndexOfInput(), 0, renderInput());\n return components;\n }\n function renderToken(token, index, tokens) {\n const _value = getTokenValue(token);\n const status = typeof token !== 'string' ? token.status : undefined;\n const termPosition = index + 1;\n const termsCount = tokens.length;\n return /*#__PURE__*/_jsx(FlexItem, {\n children: /*#__PURE__*/_jsx(Token, {\n value: _value,\n status: status,\n title: typeof token !== 'string' ? token.title : undefined,\n displayTransform: displayTransform,\n onClickRemove: onTokenClickRemove,\n isBorderless: typeof token !== 'string' && token.isBorderless || isBorderless,\n onMouseEnter: typeof token !== 'string' ? token.onMouseEnter : undefined,\n onMouseLeave: typeof token !== 'string' ? token.onMouseLeave : undefined,\n disabled: 'error' !== status && disabled,\n messages: messages,\n termsCount: termsCount,\n termPosition: termPosition\n })\n }, 'token-' + _value);\n }\n function renderInput() {\n const describedById = computedHelp ? `components-form-token-input-${instanceId}__help` : undefined;\n const inputProps = {\n instanceId,\n autoCapitalize,\n autoComplete,\n placeholder: value.length === 0 ? placeholder : '',\n disabled,\n value: incompleteTokenValue,\n onBlur,\n isExpanded,\n selectedSuggestionIndex,\n 'aria-describedby': describedById\n };\n return /*#__PURE__*/_jsx(TokenInput, {\n ...inputProps,\n onChange: !(maxLength && value.length >= maxLength) ? onInputChangeHandler : undefined,\n ref: input\n }, \"input\");\n }\n const classes = clsx(className, 'components-form-token-field__input-container', {\n 'is-active': isActive,\n 'is-disabled': disabled\n });\n let tokenFieldProps = {\n className: 'components-form-token-field',\n tabIndex: -1\n };\n const matchingSuggestions = getMatchingSuggestions();\n if (!disabled) {\n tokenFieldProps = Object.assign({}, tokenFieldProps, {\n onKeyDown: withIgnoreIMEEvents(onKeyDown),\n onKeyPress,\n onFocus: onFocusHandler\n });\n }\n\n // Disable reason: There is no appropriate role which describes the\n // input container intended accessible usability.\n // TODO: Refactor click detection to use blur to stop propagation.\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n return /*#__PURE__*/_jsxs(\"div\", {\n ...tokenFieldProps,\n children: [label && /*#__PURE__*/_jsx(StyledLabel, {\n htmlFor: `components-form-token-input-${instanceId}`,\n className: \"components-form-token-field__label\",\n children: label\n }), /*#__PURE__*/_jsxs(\"div\", {\n ref: tokensAndInput,\n className: classes,\n tabIndex: -1,\n onMouseDown: onContainerTouched,\n onTouchStart: onContainerTouched,\n children: [/*#__PURE__*/_jsx(TokensAndInputWrapperFlex, {\n justify: \"flex-start\",\n align: \"center\",\n gap: 1,\n wrap: true,\n __next40pxDefaultSize: __next40pxDefaultSize,\n hasTokens: !!value.length,\n children: renderTokensAndInput()\n }), isExpanded && /*#__PURE__*/_jsx(SuggestionsList, {\n instanceId: instanceId,\n match: saveTransform(incompleteTokenValue),\n displayTransform: displayTransform,\n suggestions: matchingSuggestions,\n selectedIndex: selectedSuggestionIndex,\n scrollIntoView: selectedSuggestionScroll,\n onHover: onSuggestionHovered,\n onSelect: onSuggestionSelected,\n __experimentalRenderItem: __experimentalRenderItem\n })]\n }), computedHelp && /*#__PURE__*/_jsx(StyledHelp, {\n id: `components-form-token-input-${instanceId}__help`,\n className: \"components-form-token-field__help\",\n children: computedHelp\n })]\n });\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n}\nexport default FormTokenField;"],
5
+ "mappings": "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",
6
6
  "names": ["matchingSuggestions"]
7
7
  }
@@ -55,7 +55,7 @@ function UnForwardedTokenInput(props, ref) {
55
55
  // - the list of suggestions are rendered in the DOM (`isExpanded`)
56
56
  hasFocus && selectedSuggestionIndex !== -1 && isExpanded ? `components-form-token-suggestions-${instanceId}-${selectedSuggestionIndex}` : void 0
57
57
  ),
58
- "aria-describedby": [`components-form-token-suggestions-howto-${instanceId}`, ariaDescribedBy].filter(Boolean).join(" ")
58
+ "aria-describedby": ariaDescribedBy
59
59
  });
60
60
  }
61
61
  var TokenInput = forwardRef(UnForwardedTokenInput);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/form-token-field/token-input.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function UnForwardedTokenInput(props, ref) {\n const {\n value,\n isExpanded,\n instanceId,\n selectedSuggestionIndex,\n className,\n onChange,\n onFocus,\n onBlur,\n 'aria-describedby': ariaDescribedBy,\n ...restProps\n } = props;\n const [hasFocus, setHasFocus] = useState(false);\n const size = value ? value.length + 1 : 0;\n const onChangeHandler = event => {\n if (onChange) {\n onChange({\n value: event.target.value\n });\n }\n };\n const onFocusHandler = e => {\n setHasFocus(true);\n onFocus?.(e);\n };\n const onBlurHandler = e => {\n setHasFocus(false);\n onBlur?.(e);\n };\n return /*#__PURE__*/_jsx(\"input\", {\n ref: ref,\n id: `components-form-token-input-${instanceId}`,\n type: \"text\",\n ...restProps,\n value: value || '',\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n size: size,\n className: clsx(className, 'components-form-token-field__input'),\n autoComplete: \"off\",\n role: \"combobox\",\n \"aria-expanded\": isExpanded,\n \"aria-autocomplete\": \"list\",\n \"aria-owns\": isExpanded ? `components-form-token-suggestions-${instanceId}` : undefined,\n \"aria-activedescendant\":\n // Only add the `aria-activedescendant` attribute when:\n // - the user is actively interacting with the input (`hasFocus`)\n // - there is a selected suggestion (`selectedSuggestionIndex !== -1`)\n // - the list of suggestions are rendered in the DOM (`isExpanded`)\n hasFocus && selectedSuggestionIndex !== -1 && isExpanded ? `components-form-token-suggestions-${instanceId}-${selectedSuggestionIndex}` : undefined,\n \"aria-describedby\": [`components-form-token-suggestions-howto-${instanceId}`, ariaDescribedBy].filter(Boolean).join(' ')\n });\n}\nexport const TokenInput = forwardRef(UnForwardedTokenInput);\nTokenInput.displayName = 'TokenInput';\nexport default TokenInput;"],
5
- "mappings": ";AAGA,OAAO,UAAU;AAIjB,SAAS,YAAY,gBAAgB;AAKrC,SAAS,OAAO,YAAY;AACrB,SAAS,sBAAsB,OAAO,KAAK;AAChD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,OAAO,QAAQ,MAAM,SAAS,IAAI;AACxC,QAAM,kBAAkB,WAAS;AAC/B,QAAI,UAAU;AACZ,eAAS;AAAA,QACP,OAAO,MAAM,OAAO;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,iBAAiB,OAAK;AAC1B,gBAAY,IAAI;AAChB,cAAU,CAAC;AAAA,EACb;AACA,QAAM,gBAAgB,OAAK;AACzB,gBAAY,KAAK;AACjB,aAAS,CAAC;AAAA,EACZ;AACA,SAAoB,qBAAK,SAAS;AAAA,IAChC;AAAA,IACA,IAAI,+BAA+B,UAAU;AAAA,IAC7C,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,SAAS;AAAA,IAChB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA,WAAW,KAAK,WAAW,oCAAoC;AAAA,IAC/D,cAAc;AAAA,IACd,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,aAAa,aAAa,qCAAqC,UAAU,KAAK;AAAA,IAC9E;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,4BAA4B,MAAM,aAAa,qCAAqC,UAAU,IAAI,uBAAuB,KAAK;AAAA;AAAA,IAC1I,oBAAoB,CAAC,2CAA2C,UAAU,IAAI,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACzH,CAAC;AACH;AACO,IAAM,aAAa,WAAW,qBAAqB;AAC1D,WAAW,cAAc;AACzB,IAAO,sBAAQ;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function UnForwardedTokenInput(props, ref) {\n const {\n value,\n isExpanded,\n instanceId,\n selectedSuggestionIndex,\n className,\n onChange,\n onFocus,\n onBlur,\n 'aria-describedby': ariaDescribedBy,\n ...restProps\n } = props;\n const [hasFocus, setHasFocus] = useState(false);\n const size = value ? value.length + 1 : 0;\n const onChangeHandler = event => {\n if (onChange) {\n onChange({\n value: event.target.value\n });\n }\n };\n const onFocusHandler = e => {\n setHasFocus(true);\n onFocus?.(e);\n };\n const onBlurHandler = e => {\n setHasFocus(false);\n onBlur?.(e);\n };\n return /*#__PURE__*/_jsx(\"input\", {\n ref: ref,\n id: `components-form-token-input-${instanceId}`,\n type: \"text\",\n ...restProps,\n value: value || '',\n onChange: onChangeHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n size: size,\n className: clsx(className, 'components-form-token-field__input'),\n autoComplete: \"off\",\n role: \"combobox\",\n \"aria-expanded\": isExpanded,\n \"aria-autocomplete\": \"list\",\n \"aria-owns\": isExpanded ? `components-form-token-suggestions-${instanceId}` : undefined,\n \"aria-activedescendant\":\n // Only add the `aria-activedescendant` attribute when:\n // - the user is actively interacting with the input (`hasFocus`)\n // - there is a selected suggestion (`selectedSuggestionIndex !== -1`)\n // - the list of suggestions are rendered in the DOM (`isExpanded`)\n hasFocus && selectedSuggestionIndex !== -1 && isExpanded ? `components-form-token-suggestions-${instanceId}-${selectedSuggestionIndex}` : undefined,\n \"aria-describedby\": ariaDescribedBy\n });\n}\nexport const TokenInput = forwardRef(UnForwardedTokenInput);\nTokenInput.displayName = 'TokenInput';\nexport default TokenInput;"],
5
+ "mappings": ";AAGA,OAAO,UAAU;AAIjB,SAAS,YAAY,gBAAgB;AAKrC,SAAS,OAAO,YAAY;AACrB,SAAS,sBAAsB,OAAO,KAAK;AAChD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,OAAO,QAAQ,MAAM,SAAS,IAAI;AACxC,QAAM,kBAAkB,WAAS;AAC/B,QAAI,UAAU;AACZ,eAAS;AAAA,QACP,OAAO,MAAM,OAAO;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,iBAAiB,OAAK;AAC1B,gBAAY,IAAI;AAChB,cAAU,CAAC;AAAA,EACb;AACA,QAAM,gBAAgB,OAAK;AACzB,gBAAY,KAAK;AACjB,aAAS,CAAC;AAAA,EACZ;AACA,SAAoB,qBAAK,SAAS;AAAA,IAChC;AAAA,IACA,IAAI,+BAA+B,UAAU;AAAA,IAC7C,MAAM;AAAA,IACN,GAAG;AAAA,IACH,OAAO,SAAS;AAAA,IAChB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,IACA,WAAW,KAAK,WAAW,oCAAoC;AAAA,IAC/D,cAAc;AAAA,IACd,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,aAAa,aAAa,qCAAqC,UAAU,KAAK;AAAA,IAC9E;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,4BAA4B,MAAM,aAAa,qCAAqC,UAAU,IAAI,uBAAuB,KAAK;AAAA;AAAA,IAC1I,oBAAoB;AAAA,EACtB,CAAC;AACH;AACO,IAAM,aAAa,WAAW,qBAAqB;AAC1D,WAAW,cAAc;AACzB,IAAO,sBAAQ;",
6
6
  "names": []
7
7
  }
@@ -6,7 +6,6 @@ import { Context } from "./context.mjs";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  var Popover = forwardRef(function Popover2({
8
8
  gutter,
9
- children,
10
9
  shift,
11
10
  modal = true,
12
11
  ...otherProps
@@ -27,6 +26,12 @@ var Popover = forwardRef(function Popover2({
27
26
  if (!menuContext?.store) {
28
27
  throw new Error("Menu.Popover can only be rendered inside a Menu component");
29
28
  }
29
+ const renderMenu = useCallback((htmlProps) => /* @__PURE__ */ _jsx(Styled.MenuMotionRoot, {
30
+ children: /* @__PURE__ */ _jsx(Styled.MenuSurface, {
31
+ ...htmlProps,
32
+ variant: menuContext.variant
33
+ })
34
+ }), [menuContext.variant]);
30
35
  return /* @__PURE__ */ _jsx(Styled.Menu, {
31
36
  ...otherProps,
32
37
  ref,
@@ -40,8 +45,7 @@ var Popover = forwardRef(function Popover2({
40
45
  wrapperProps,
41
46
  hideOnEscape,
42
47
  unmountOnHide: true,
43
- variant: menuContext.variant,
44
- children
48
+ render: renderMenu
45
49
  });
46
50
  });
47
51
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/menu/popover.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo, forwardRef, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\n\nimport * as Styled from './styles';\nimport { Context } from './context';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Popover = forwardRef(function Popover({\n gutter,\n children,\n shift,\n modal = true,\n ...otherProps\n}, ref) {\n const menuContext = useContext(Context);\n\n // Extract the side from the applied placement \u2014 useful for animations.\n // Using `currentPlacement` instead of `placement` to make sure that we\n // use the final computed placement (including \"flips\" etc).\n const appliedPlacementSide = Ariakit.useStoreState(menuContext?.store, 'currentPlacement')?.split('-')[0];\n const hideOnEscape = useCallback(event => {\n // Pressing Escape can cause unexpected consequences (ie. exiting\n // full screen mode on MacOs, close parent modals...).\n event.preventDefault();\n // Returning `true` causes the menu to hide.\n return true;\n }, []);\n const computedDirection = Ariakit.useStoreState(menuContext?.store, 'rtl') ? 'rtl' : 'ltr';\n const wrapperProps = useMemo(() => ({\n dir: computedDirection,\n style: {\n direction: computedDirection\n }\n }), [computedDirection]);\n if (!menuContext?.store) {\n throw new Error('Menu.Popover can only be rendered inside a Menu component');\n }\n return /*#__PURE__*/_jsx(Styled.Menu, {\n ...otherProps,\n ref: ref,\n modal: modal,\n store: menuContext.store\n // Root menu has an 8px distance from its trigger,\n // otherwise 0 (which causes the submenu to slightly overlap)\n ,\n gutter: gutter ?? (menuContext.store.parent ? 0 : 8)\n // Align nested menu by the same (but opposite) amount\n // as the menu container's padding.\n ,\n shift: shift ?? (menuContext.store.parent ? -4 : 0),\n hideOnHoverOutside: false,\n \"data-side\": appliedPlacementSide,\n \"data-submenu\": !!menuContext.store.parent || undefined,\n wrapperProps: wrapperProps,\n hideOnEscape: hideOnEscape,\n unmountOnHide: true,\n variant: menuContext.variant,\n children: children\n });\n});"],
5
- "mappings": ";AAGA,YAAY,aAAa;AAKzB,SAAS,YAAY,SAAS,YAAY,mBAAmB;AAM7D,YAAY,YAAY;AACxB,SAAS,eAAe;AACxB,SAAS,OAAO,YAAY;AACrB,IAAM,UAAU,WAAW,SAASA,SAAQ;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL,GAAG,KAAK;AACN,QAAM,cAAc,WAAW,OAAO;AAKtC,QAAM,uBAA+B,sBAAc,aAAa,OAAO,kBAAkB,GAAG,MAAM,GAAG,EAAE,CAAC;AACxG,QAAM,eAAe,YAAY,WAAS;AAGxC,UAAM,eAAe;AAErB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,oBAA4B,sBAAc,aAAa,OAAO,KAAK,IAAI,QAAQ;AACrF,QAAM,eAAe,QAAQ,OAAO;AAAA,IAClC,KAAK;AAAA,IACL,OAAO;AAAA,MACL,WAAW;AAAA,IACb;AAAA,EACF,IAAI,CAAC,iBAAiB,CAAC;AACvB,MAAI,CAAC,aAAa,OAAO;AACvB,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AACA,SAAoB,qBAAY,aAAM;AAAA,IACpC,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA,OAAO,YAAY;AAAA,IAInB,QAAQ,WAAW,YAAY,MAAM,SAAS,IAAI;AAAA,IAIlD,OAAO,UAAU,YAAY,MAAM,SAAS,KAAK;AAAA,IACjD,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,gBAAgB,CAAC,CAAC,YAAY,MAAM,UAAU;AAAA,IAC9C;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,SAAS,YAAY;AAAA,IACrB;AAAA,EACF,CAAC;AACH,CAAC;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo, forwardRef, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\n\nimport * as Styled from './styles';\nimport { Context } from './context';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Popover = forwardRef(function Popover({\n gutter,\n shift,\n modal = true,\n ...otherProps\n}, ref) {\n const menuContext = useContext(Context);\n\n // Extract the side from the applied placement \u2014 useful for animations.\n // Using `currentPlacement` instead of `placement` to make sure that we\n // use the final computed placement (including \"flips\" etc).\n const appliedPlacementSide = Ariakit.useStoreState(menuContext?.store, 'currentPlacement')?.split('-')[0];\n const hideOnEscape = useCallback(event => {\n // Pressing Escape can cause unexpected consequences (ie. exiting\n // full screen mode on MacOs, close parent modals...).\n event.preventDefault();\n // Returning `true` causes the menu to hide.\n return true;\n }, []);\n const computedDirection = Ariakit.useStoreState(menuContext?.store, 'rtl') ? 'rtl' : 'ltr';\n const wrapperProps = useMemo(() => ({\n dir: computedDirection,\n style: {\n direction: computedDirection\n }\n }), [computedDirection]);\n if (!menuContext?.store) {\n throw new Error('Menu.Popover can only be rendered inside a Menu component');\n }\n const renderMenu = useCallback(htmlProps => /*#__PURE__*/_jsx(Styled.MenuMotionRoot, {\n children: /*#__PURE__*/_jsx(Styled.MenuSurface, {\n ...htmlProps,\n variant: menuContext.variant\n })\n }), [menuContext.variant]);\n return /*#__PURE__*/_jsx(Styled.Menu, {\n ...otherProps,\n ref: ref,\n modal: modal,\n store: menuContext.store\n // Root menu has an 8px distance from its trigger,\n // otherwise 0 (which causes the submenu to slightly overlap)\n ,\n gutter: gutter ?? (menuContext.store.parent ? 0 : 8)\n // Align nested menu by the same (but opposite) amount\n // as the menu container's padding.\n ,\n shift: shift ?? (menuContext.store.parent ? -4 : 0),\n hideOnHoverOutside: false,\n \"data-side\": appliedPlacementSide,\n \"data-submenu\": !!menuContext.store.parent || undefined,\n wrapperProps: wrapperProps,\n hideOnEscape: hideOnEscape,\n unmountOnHide: true,\n render: renderMenu\n });\n});"],
5
+ "mappings": ";AAGA,YAAY,aAAa;AAKzB,SAAS,YAAY,SAAS,YAAY,mBAAmB;AAM7D,YAAY,YAAY;AACxB,SAAS,eAAe;AACxB,SAAS,OAAO,YAAY;AACrB,IAAM,UAAU,WAAW,SAASA,SAAQ;AAAA,EACjD;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL,GAAG,KAAK;AACN,QAAM,cAAc,WAAW,OAAO;AAKtC,QAAM,uBAA+B,sBAAc,aAAa,OAAO,kBAAkB,GAAG,MAAM,GAAG,EAAE,CAAC;AACxG,QAAM,eAAe,YAAY,WAAS;AAGxC,UAAM,eAAe;AAErB,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACL,QAAM,oBAA4B,sBAAc,aAAa,OAAO,KAAK,IAAI,QAAQ;AACrF,QAAM,eAAe,QAAQ,OAAO;AAAA,IAClC,KAAK;AAAA,IACL,OAAO;AAAA,MACL,WAAW;AAAA,IACb;AAAA,EACF,IAAI,CAAC,iBAAiB,CAAC;AACvB,MAAI,CAAC,aAAa,OAAO;AACvB,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AACA,QAAM,aAAa,YAAY,eAA0B,qBAAY,uBAAgB;AAAA,IACnF,UAAuB,qBAAY,oBAAa;AAAA,MAC9C,GAAG;AAAA,MACH,SAAS,YAAY;AAAA,IACvB,CAAC;AAAA,EACH,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC;AACzB,SAAoB,qBAAY,aAAM;AAAA,IACpC,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA,OAAO,YAAY;AAAA,IAInB,QAAQ,WAAW,YAAY,MAAM,SAAS,IAAI;AAAA,IAIlD,OAAO,UAAU,YAAY,MAAM,SAAS,KAAK;AAAA,IACjD,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,gBAAgB,CAAC,CAAC,YAAY,MAAM,UAAU;AAAA,IAC9C;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,EACV,CAAC;AACH,CAAC;",
6
6
  "names": ["Popover"]
7
7
  }