@wordpress/components 29.11.0 → 29.13.1-next.719a03cbe.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 (169) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/build/box-control/input-control.js +2 -2
  3. package/build/box-control/input-control.js.map +1 -1
  4. package/build/calendar/date-calendar/index.js +60 -0
  5. package/build/calendar/date-calendar/index.js.map +1 -0
  6. package/build/calendar/date-range-calendar/index.js +168 -0
  7. package/build/calendar/date-range-calendar/index.js.map +1 -0
  8. package/build/calendar/index.js +27 -0
  9. package/build/calendar/index.js.map +1 -0
  10. package/build/calendar/types.js +6 -0
  11. package/build/calendar/types.js.map +1 -0
  12. package/build/calendar/utils/constants.js +68 -0
  13. package/build/calendar/utils/constants.js.map +1 -0
  14. package/build/calendar/utils/day-cell.js +137 -0
  15. package/build/calendar/utils/day-cell.js.map +1 -0
  16. package/build/calendar/utils/misc.js +10 -0
  17. package/build/calendar/utils/misc.js.map +1 -0
  18. package/build/calendar/utils/use-controlled-value.js +58 -0
  19. package/build/calendar/utils/use-controlled-value.js.map +1 -0
  20. package/build/calendar/utils/use-localization-props.js +162 -0
  21. package/build/calendar/utils/use-localization-props.js.map +1 -0
  22. package/build/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  23. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  24. package/build/custom-select-control-v2/custom-select.js +3 -3
  25. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  26. package/build/date-time/date/index.js +1 -1
  27. package/build/date-time/date/index.js.map +1 -1
  28. package/build/form-file-upload/index.js +4 -6
  29. package/build/form-file-upload/index.js.map +1 -1
  30. package/build/form-token-field/index.js +11 -1
  31. package/build/form-token-field/index.js.map +1 -1
  32. package/build/form-token-field/token.js +1 -1
  33. package/build/form-token-field/token.js.map +1 -1
  34. package/build/index.js +19 -0
  35. package/build/index.js.map +1 -1
  36. package/build/mobile/bottom-sheet/cell.native.js +2 -2
  37. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  38. package/build/mobile/image/index.native.js +1 -1
  39. package/build/mobile/image/index.native.js.map +1 -1
  40. package/build/mobile/link-picker/index.native.js +1 -1
  41. package/build/mobile/link-picker/index.native.js.map +1 -1
  42. package/build/navigation/menu/menu-title-search.js +1 -1
  43. package/build/navigation/menu/menu-title-search.js.map +1 -1
  44. package/build/palette-edit/index.js +4 -4
  45. package/build/palette-edit/index.js.map +1 -1
  46. package/build-module/box-control/input-control.js +2 -2
  47. package/build-module/box-control/input-control.js.map +1 -1
  48. package/build-module/calendar/date-calendar/index.js +51 -0
  49. package/build-module/calendar/date-calendar/index.js.map +1 -0
  50. package/build-module/calendar/date-range-calendar/index.js +157 -0
  51. package/build-module/calendar/date-range-calendar/index.js.map +1 -0
  52. package/build-module/calendar/index.js +4 -0
  53. package/build-module/calendar/index.js.map +1 -0
  54. package/build-module/calendar/types.js +2 -0
  55. package/build-module/calendar/types.js.map +1 -0
  56. package/build-module/calendar/utils/constants.js +61 -0
  57. package/build-module/calendar/utils/constants.js.map +1 -0
  58. package/build-module/calendar/utils/day-cell.js +131 -0
  59. package/build-module/calendar/utils/day-cell.js.map +1 -0
  60. package/build-module/calendar/utils/misc.js +4 -0
  61. package/build-module/calendar/utils/misc.js.map +1 -0
  62. package/build-module/calendar/utils/use-controlled-value.js +51 -0
  63. package/build-module/calendar/utils/use-controlled-value.js.map +1 -0
  64. package/build-module/calendar/utils/use-localization-props.js +154 -0
  65. package/build-module/calendar/utils/use-localization-props.js.map +1 -0
  66. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +1 -1
  67. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  68. package/build-module/custom-select-control-v2/custom-select.js +4 -4
  69. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  70. package/build-module/date-time/date/index.js +1 -1
  71. package/build-module/date-time/date/index.js.map +1 -1
  72. package/build-module/form-file-upload/index.js +4 -6
  73. package/build-module/form-file-upload/index.js.map +1 -1
  74. package/build-module/form-token-field/index.js +11 -1
  75. package/build-module/form-token-field/index.js.map +1 -1
  76. package/build-module/form-token-field/token.js +1 -1
  77. package/build-module/form-token-field/token.js.map +1 -1
  78. package/build-module/index.js +1 -0
  79. package/build-module/index.js.map +1 -1
  80. package/build-module/mobile/bottom-sheet/cell.native.js +2 -2
  81. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  82. package/build-module/mobile/image/index.native.js +1 -1
  83. package/build-module/mobile/image/index.native.js.map +1 -1
  84. package/build-module/mobile/link-picker/index.native.js +1 -1
  85. package/build-module/mobile/link-picker/index.native.js.map +1 -1
  86. package/build-module/navigation/menu/menu-title-search.js +1 -1
  87. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  88. package/build-module/palette-edit/index.js +4 -4
  89. package/build-module/palette-edit/index.js.map +1 -1
  90. package/build-style/style-rtl.css +358 -5
  91. package/build-style/style.css +358 -5
  92. package/build-types/box-control/input-control.d.ts.map +1 -1
  93. package/build-types/box-control/utils.d.ts +7 -7
  94. package/build-types/calendar/date-calendar/index.d.ts +11 -0
  95. package/build-types/calendar/date-calendar/index.d.ts.map +1 -0
  96. package/build-types/calendar/date-range-calendar/index.d.ts +14 -0
  97. package/build-types/calendar/date-range-calendar/index.d.ts.map +1 -0
  98. package/build-types/calendar/index.d.ts +4 -0
  99. package/build-types/calendar/index.d.ts.map +1 -0
  100. package/build-types/calendar/stories/date-calendar.story.d.ts +16 -0
  101. package/build-types/calendar/stories/date-calendar.story.d.ts.map +1 -0
  102. package/build-types/calendar/stories/date-range-calendar.story.d.ts +16 -0
  103. package/build-types/calendar/stories/date-range-calendar.story.d.ts.map +1 -0
  104. package/build-types/calendar/test/__utils__/index.d.ts +10 -0
  105. package/build-types/calendar/test/__utils__/index.d.ts.map +1 -0
  106. package/build-types/calendar/test/date-calendar.d.ts +2 -0
  107. package/build-types/calendar/test/date-calendar.d.ts.map +1 -0
  108. package/build-types/calendar/test/date-range-calendar.d.ts +2 -0
  109. package/build-types/calendar/test/date-range-calendar.d.ts.map +1 -0
  110. package/build-types/calendar/types.d.ts +317 -0
  111. package/build-types/calendar/types.d.ts.map +1 -0
  112. package/build-types/calendar/utils/constants.d.ts +52 -0
  113. package/build-types/calendar/utils/constants.d.ts.map +1 -0
  114. package/build-types/calendar/utils/day-cell.d.ts +21 -0
  115. package/build-types/calendar/utils/day-cell.d.ts.map +1 -0
  116. package/build-types/calendar/utils/misc.d.ts +2 -0
  117. package/build-types/calendar/utils/misc.d.ts.map +1 -0
  118. package/build-types/calendar/utils/use-controlled-value.d.ts +27 -0
  119. package/build-types/calendar/utils/use-controlled-value.d.ts.map +1 -0
  120. package/build-types/calendar/utils/use-localization-props.d.ts +64 -0
  121. package/build-types/calendar/utils/use-localization-props.d.ts.map +1 -0
  122. package/build-types/custom-gradient-picker/constants.d.ts +6 -3
  123. package/build-types/custom-gradient-picker/constants.d.ts.map +1 -1
  124. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  125. package/build-types/dimension-control/sizes.d.ts +15 -3
  126. package/build-types/dimension-control/sizes.d.ts.map +1 -1
  127. package/build-types/font-size-picker/constants.d.ts +2 -2
  128. package/build-types/font-size-picker/constants.d.ts.map +1 -1
  129. package/build-types/form-file-upload/index.d.ts.map +1 -1
  130. package/build-types/form-token-field/index.d.ts.map +1 -1
  131. package/build-types/index.d.ts +1 -0
  132. package/build-types/index.d.ts.map +1 -1
  133. package/build-types/popover/overlay-middlewares.d.ts +6 -1
  134. package/build-types/popover/overlay-middlewares.d.ts.map +1 -1
  135. package/package.json +21 -20
  136. package/src/box-control/input-control.tsx +14 -5
  137. package/src/calendar/date-calendar/README.md +250 -0
  138. package/src/calendar/date-calendar/index.tsx +55 -0
  139. package/src/calendar/date-range-calendar/README.md +287 -0
  140. package/src/calendar/date-range-calendar/index.tsx +203 -0
  141. package/src/calendar/index.tsx +3 -0
  142. package/src/calendar/stories/date-calendar.story.tsx +221 -0
  143. package/src/calendar/stories/date-range-calendar.story.tsx +230 -0
  144. package/src/calendar/style.scss +431 -0
  145. package/src/calendar/test/__utils__/index.ts +56 -0
  146. package/src/calendar/test/date-calendar.tsx +975 -0
  147. package/src/calendar/test/date-range-calendar.tsx +1701 -0
  148. package/src/calendar/types.ts +342 -0
  149. package/src/calendar/utils/constants.ts +62 -0
  150. package/src/calendar/utils/day-cell.tsx +133 -0
  151. package/src/calendar/utils/misc.ts +3 -0
  152. package/src/calendar/utils/use-controlled-value.ts +61 -0
  153. package/src/calendar/utils/use-localization-props.ts +169 -0
  154. package/src/circular-option-picker/stories/index.story.tsx +2 -2
  155. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
  156. package/src/custom-select-control-v2/custom-select.tsx +6 -3
  157. package/src/date-time/date/index.tsx +1 -1
  158. package/src/form-file-upload/index.tsx +6 -12
  159. package/src/form-token-field/index.tsx +12 -1
  160. package/src/form-token-field/token.tsx +1 -1
  161. package/src/index.ts +1 -0
  162. package/src/mobile/bottom-sheet/cell.native.js +2 -2
  163. package/src/mobile/image/index.native.js +1 -1
  164. package/src/mobile/link-picker/index.native.js +1 -1
  165. package/src/navigation/menu/menu-title-search.tsx +1 -1
  166. package/src/palette-edit/index.tsx +4 -4
  167. package/src/select-control/style.scss +0 -6
  168. package/src/style.scss +1 -0
  169. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Ariakit","createContext","useCallback","useMemo","__","sprintf","VisuallyHidden","Styled","InputBase","SelectControlChevronDown","BaseControl","jsx","_jsx","jsxs","_jsxs","CustomSelectContext","undefined","defaultRenderSelectedValue","value","isValueEmpty","Array","isArray","length","CustomSelectButton","renderSelectedValue","size","store","restProps","currentValue","useStoreState","computedRenderSelectedValue","Select","hasCustomRenderProp","children","_CustomSelect","props","hideLabelFromVision","label","className","isLegacy","onSelectPopoverKeyDown","e","stopPropagation","contextValue","SelectLabel","render","VisualLabel","as","__next40pxDefaultSize","suffix","showOnKeyDown","SelectPopover","gutter","sameWidth","slide","onKeyDown","flip","Provider"],"sources":["@wordpress/components/src/custom-select-control-v2/custom-select.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { createContext, useCallback, useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { VisuallyHidden } from '..';\nimport * as Styled from './styles';\nimport type {\n\tCustomSelectContext as CustomSelectContextType,\n\tCustomSelectStore,\n\tCustomSelectButtonProps,\n\tCustomSelectButtonSize,\n\t_CustomSelectInternalProps,\n\t_CustomSelectProps,\n} from './types';\nimport InputBase from '../input-control/input-base';\nimport SelectControlChevronDown from '../select-control/chevron-down';\nimport BaseControl from '../base-control';\n\nexport const CustomSelectContext =\n\tcreateContext< CustomSelectContextType >( undefined );\n\nfunction defaultRenderSelectedValue(\n\tvalue: CustomSelectButtonProps[ 'value' ]\n) {\n\tconst isValueEmpty = Array.isArray( value )\n\t\t? value.length === 0\n\t\t: value === undefined || value === null;\n\n\tif ( isValueEmpty ) {\n\t\treturn __( 'Select an item' );\n\t}\n\n\tif ( Array.isArray( value ) ) {\n\t\treturn value.length === 1\n\t\t\t? value[ 0 ]\n\t\t\t: // translators: %s: number of items selected (it will always be 2 or more items)\n\t\t\t sprintf( __( '%s items selected' ), value.length );\n\t}\n\n\treturn value;\n}\n\nconst CustomSelectButton = ( {\n\trenderSelectedValue,\n\tsize = 'default',\n\tstore,\n\t...restProps\n}: Omit<\n\tReact.ComponentProps< typeof Ariakit.Select > &\n\t\tCustomSelectButtonProps &\n\t\tCustomSelectButtonSize &\n\t\tCustomSelectStore,\n\t'onChange'\n> ) => {\n\tconst { value: currentValue } = Ariakit.useStoreState( store );\n\n\tconst computedRenderSelectedValue = useMemo(\n\t\t() => renderSelectedValue ?? defaultRenderSelectedValue,\n\t\t[ renderSelectedValue ]\n\t);\n\n\treturn (\n\t\t<Styled.Select\n\t\t\t{ ...restProps }\n\t\t\tsize={ size }\n\t\t\thasCustomRenderProp={ !! renderSelectedValue }\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ computedRenderSelectedValue( currentValue ) }\n\t\t</Styled.Select>\n\t);\n};\n\nfunction _CustomSelect(\n\tprops: _CustomSelectInternalProps &\n\t\t_CustomSelectProps &\n\t\tCustomSelectStore &\n\t\tCustomSelectButtonSize\n) {\n\tconst {\n\t\tchildren,\n\t\thideLabelFromVision = false,\n\t\tlabel,\n\t\tsize,\n\t\tstore,\n\t\tclassName,\n\t\tisLegacy = false,\n\t\t...restProps\n\t} = props;\n\n\tconst onSelectPopoverKeyDown: React.KeyboardEventHandler< HTMLDivElement > =\n\t\tuseCallback(\n\t\t\t( e ) => {\n\t\t\t\tif ( isLegacy ) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ isLegacy ]\n\t\t);\n\n\tconst contextValue = useMemo( () => ( { store, size } ), [ store, size ] );\n\n\treturn (\n\t\t// Where should `restProps` be forwarded to?\n\t\t<div className={ className }>\n\t\t\t<Ariakit.SelectLabel\n\t\t\t\tstore={ store }\n\t\t\t\trender={\n\t\t\t\t\thideLabelFromVision ? (\n\t\t\t\t\t\t// @ts-expect-error `children` are passed via the render prop\n\t\t\t\t\t\t<VisuallyHidden />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t// @ts-expect-error `children` are passed via the render prop\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"div\" />\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</Ariakit.SelectLabel>\n\t\t\t<InputBase\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tsize={ size }\n\t\t\t\tsuffix={ <SelectControlChevronDown /> }\n\t\t\t>\n\t\t\t\t<CustomSelectButton\n\t\t\t\t\t{ ...restProps }\n\t\t\t\t\tsize={ size }\n\t\t\t\t\tstore={ store }\n\t\t\t\t\t// Match legacy behavior (move selection rather than open the popover)\n\t\t\t\t\tshowOnKeyDown={ ! isLegacy }\n\t\t\t\t/>\n\t\t\t\t<Styled.SelectPopover\n\t\t\t\t\tgutter={ 12 }\n\t\t\t\t\tstore={ store }\n\t\t\t\t\tsameWidth\n\t\t\t\t\tslide={ false }\n\t\t\t\t\tonKeyDown={ onSelectPopoverKeyDown }\n\t\t\t\t\t// Match legacy behavior\n\t\t\t\t\tflip={ ! isLegacy }\n\t\t\t\t>\n\t\t\t\t\t<CustomSelectContext.Provider value={ contextValue }>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CustomSelectContext.Provider>\n\t\t\t\t</Styled.SelectPopover>\n\t\t\t</InputBase>\n\t\t</div>\n\t);\n}\n\nexport default _CustomSelect;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Ariakit","createContext","useCallback","useMemo","__","_n","sprintf","VisuallyHidden","Styled","InputBase","SelectControlChevronDown","BaseControl","jsx","_jsx","jsxs","_jsxs","CustomSelectContext","undefined","defaultRenderSelectedValue","value","isValueEmpty","Array","isArray","length","CustomSelectButton","renderSelectedValue","size","store","restProps","currentValue","useStoreState","computedRenderSelectedValue","Select","hasCustomRenderProp","children","_CustomSelect","props","hideLabelFromVision","label","className","isLegacy","onSelectPopoverKeyDown","e","stopPropagation","contextValue","SelectLabel","render","VisualLabel","as","__next40pxDefaultSize","suffix","showOnKeyDown","SelectPopover","gutter","sameWidth","slide","onKeyDown","flip","Provider"],"sources":["@wordpress/components/src/custom-select-control-v2/custom-select.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { createContext, useCallback, useMemo } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { VisuallyHidden } from '..';\nimport * as Styled from './styles';\nimport type {\n\tCustomSelectContext as CustomSelectContextType,\n\tCustomSelectStore,\n\tCustomSelectButtonProps,\n\tCustomSelectButtonSize,\n\t_CustomSelectInternalProps,\n\t_CustomSelectProps,\n} from './types';\nimport InputBase from '../input-control/input-base';\nimport SelectControlChevronDown from '../select-control/chevron-down';\nimport BaseControl from '../base-control';\n\nexport const CustomSelectContext =\n\tcreateContext< CustomSelectContextType >( undefined );\n\nfunction defaultRenderSelectedValue(\n\tvalue: CustomSelectButtonProps[ 'value' ]\n) {\n\tconst isValueEmpty = Array.isArray( value )\n\t\t? value.length === 0\n\t\t: value === undefined || value === null;\n\n\tif ( isValueEmpty ) {\n\t\treturn __( 'Select an item' );\n\t}\n\n\tif ( Array.isArray( value ) ) {\n\t\treturn value.length === 1\n\t\t\t? value[ 0 ]\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %d: number of items selected (it will always be 2 or more items)\n\t\t\t\t\t_n( '%d item selected', '%d items selected', value.length ),\n\t\t\t\t\tvalue.length\n\t\t\t );\n\t}\n\n\treturn value;\n}\n\nconst CustomSelectButton = ( {\n\trenderSelectedValue,\n\tsize = 'default',\n\tstore,\n\t...restProps\n}: Omit<\n\tReact.ComponentProps< typeof Ariakit.Select > &\n\t\tCustomSelectButtonProps &\n\t\tCustomSelectButtonSize &\n\t\tCustomSelectStore,\n\t'onChange'\n> ) => {\n\tconst { value: currentValue } = Ariakit.useStoreState( store );\n\n\tconst computedRenderSelectedValue = useMemo(\n\t\t() => renderSelectedValue ?? defaultRenderSelectedValue,\n\t\t[ renderSelectedValue ]\n\t);\n\n\treturn (\n\t\t<Styled.Select\n\t\t\t{ ...restProps }\n\t\t\tsize={ size }\n\t\t\thasCustomRenderProp={ !! renderSelectedValue }\n\t\t\tstore={ store }\n\t\t>\n\t\t\t{ computedRenderSelectedValue( currentValue ) }\n\t\t</Styled.Select>\n\t);\n};\n\nfunction _CustomSelect(\n\tprops: _CustomSelectInternalProps &\n\t\t_CustomSelectProps &\n\t\tCustomSelectStore &\n\t\tCustomSelectButtonSize\n) {\n\tconst {\n\t\tchildren,\n\t\thideLabelFromVision = false,\n\t\tlabel,\n\t\tsize,\n\t\tstore,\n\t\tclassName,\n\t\tisLegacy = false,\n\t\t...restProps\n\t} = props;\n\n\tconst onSelectPopoverKeyDown: React.KeyboardEventHandler< HTMLDivElement > =\n\t\tuseCallback(\n\t\t\t( e ) => {\n\t\t\t\tif ( isLegacy ) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ isLegacy ]\n\t\t);\n\n\tconst contextValue = useMemo( () => ( { store, size } ), [ store, size ] );\n\n\treturn (\n\t\t// Where should `restProps` be forwarded to?\n\t\t<div className={ className }>\n\t\t\t<Ariakit.SelectLabel\n\t\t\t\tstore={ store }\n\t\t\t\trender={\n\t\t\t\t\thideLabelFromVision ? (\n\t\t\t\t\t\t// @ts-expect-error `children` are passed via the render prop\n\t\t\t\t\t\t<VisuallyHidden />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t// @ts-expect-error `children` are passed via the render prop\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"div\" />\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</Ariakit.SelectLabel>\n\t\t\t<InputBase\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tsize={ size }\n\t\t\t\tsuffix={ <SelectControlChevronDown /> }\n\t\t\t>\n\t\t\t\t<CustomSelectButton\n\t\t\t\t\t{ ...restProps }\n\t\t\t\t\tsize={ size }\n\t\t\t\t\tstore={ store }\n\t\t\t\t\t// Match legacy behavior (move selection rather than open the popover)\n\t\t\t\t\tshowOnKeyDown={ ! isLegacy }\n\t\t\t\t/>\n\t\t\t\t<Styled.SelectPopover\n\t\t\t\t\tgutter={ 12 }\n\t\t\t\t\tstore={ store }\n\t\t\t\t\tsameWidth\n\t\t\t\t\tslide={ false }\n\t\t\t\t\tonKeyDown={ onSelectPopoverKeyDown }\n\t\t\t\t\t// Match legacy behavior\n\t\t\t\t\tflip={ ! isLegacy }\n\t\t\t\t>\n\t\t\t\t\t<CustomSelectContext.Provider value={ contextValue }>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CustomSelectContext.Provider>\n\t\t\t\t</Styled.SelectPopover>\n\t\t\t</InputBase>\n\t\t</div>\n\t);\n}\n\nexport default _CustomSelect;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;;AAEzC;AACA;AACA;AACA,SAASC,aAAa,EAAEC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACxE,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;;AAEjD;AACA;AACA;AACA,SAASC,cAAc,QAAQ,IAAI;AACnC,OAAO,KAAKC,MAAM,MAAM,UAAU;AASlC,OAAOC,SAAS,MAAM,6BAA6B;AACnD,OAAOC,wBAAwB,MAAM,gCAAgC;AACrE,OAAOC,WAAW,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE1C,OAAO,MAAMC,mBAAmB,GAC/Bf,aAAa,CAA6BgB,SAAU,CAAC;AAEtD,SAASC,0BAA0BA,CAClCC,KAAyC,EACxC;EACD,MAAMC,YAAY,GAAGC,KAAK,CAACC,OAAO,CAAEH,KAAM,CAAC,GACxCA,KAAK,CAACI,MAAM,KAAK,CAAC,GAClBJ,KAAK,KAAKF,SAAS,IAAIE,KAAK,KAAK,IAAI;EAExC,IAAKC,YAAY,EAAG;IACnB,OAAOhB,EAAE,CAAE,gBAAiB,CAAC;EAC9B;EAEA,IAAKiB,KAAK,CAACC,OAAO,CAAEH,KAAM,CAAC,EAAG;IAC7B,OAAOA,KAAK,CAACI,MAAM,KAAK,CAAC,GACtBJ,KAAK,CAAE,CAAC,CAAE,GACVb,OAAO;IACP;IACAD,EAAE,CAAE,kBAAkB,EAAE,mBAAmB,EAAEc,KAAK,CAACI,MAAO,CAAC,EAC3DJ,KAAK,CAACI,MACN,CAAC;EACL;EAEA,OAAOJ,KAAK;AACb;AAEA,MAAMK,kBAAkB,GAAGA,CAAE;EAC5BC,mBAAmB;EACnBC,IAAI,GAAG,SAAS;EAChBC,KAAK;EACL,GAAGC;AAOJ,CAAC,KAAM;EACN,MAAM;IAAET,KAAK,EAAEU;EAAa,CAAC,GAAG7B,OAAO,CAAC8B,aAAa,CAAEH,KAAM,CAAC;EAE9D,MAAMI,2BAA2B,GAAG5B,OAAO,CAC1C,MAAMsB,mBAAmB,aAAnBA,mBAAmB,cAAnBA,mBAAmB,GAAIP,0BAA0B,EACvD,CAAEO,mBAAmB,CACtB,CAAC;EAED,oBACCZ,IAAA,CAACL,MAAM,CAACwB,MAAM;IAAA,GACRJ,SAAS;IACdF,IAAI,EAAGA,IAAM;IACbO,mBAAmB,EAAG,CAAC,CAAER,mBAAqB;IAC9CE,KAAK,EAAGA,KAAO;IAAAO,QAAA,EAEbH,2BAA2B,CAAEF,YAAa;EAAC,CAC/B,CAAC;AAElB,CAAC;AAED,SAASM,aAAaA,CACrBC,KAGuB,EACtB;EACD,MAAM;IACLF,QAAQ;IACRG,mBAAmB,GAAG,KAAK;IAC3BC,KAAK;IACLZ,IAAI;IACJC,KAAK;IACLY,SAAS;IACTC,QAAQ,GAAG,KAAK;IAChB,GAAGZ;EACJ,CAAC,GAAGQ,KAAK;EAET,MAAMK,sBAAoE,GACzEvC,WAAW,CACRwC,CAAC,IAAM;IACR,IAAKF,QAAQ,EAAG;MACfE,CAAC,CAACC,eAAe,CAAC,CAAC;IACpB;EACD,CAAC,EACD,CAAEH,QAAQ,CACX,CAAC;EAEF,MAAMI,YAAY,GAAGzC,OAAO,CAAE,OAAQ;IAAEwB,KAAK;IAAED;EAAK,CAAC,CAAE,EAAE,CAAEC,KAAK,EAAED,IAAI,CAAG,CAAC;EAE1E;IAAA;IACC;IACAX,KAAA;MAAKwB,SAAS,EAAGA,SAAW;MAAAL,QAAA,gBAC3BrB,IAAA,CAACb,OAAO,CAAC6C,WAAW;QACnBlB,KAAK,EAAGA,KAAO;QACfmB,MAAM,EACLT,mBAAmB;QAAA;QAClB;QACAxB,IAAA,CAACN,cAAc,IAAE,CAAC;QAAA;QAElB;QACAM,IAAA,CAACF,WAAW,CAACoC,WAAW;UAACC,EAAE,EAAC;QAAK,CAAE,CAEpC;QAAAd,QAAA,EAECI;MAAK,CACa,CAAC,eACtBvB,KAAA,CAACN,SAAS;QACTwC,qBAAqB;QACrBvB,IAAI,EAAGA,IAAM;QACbwB,MAAM,eAAGrC,IAAA,CAACH,wBAAwB,IAAE,CAAG;QAAAwB,QAAA,gBAEvCrB,IAAA,CAACW,kBAAkB;UAAA,GACbI,SAAS;UACdF,IAAI,EAAGA,IAAM;UACbC,KAAK,EAAGA;UACR;UAAA;UACAwB,aAAa,EAAG,CAAEX;QAAU,CAC5B,CAAC,eACF3B,IAAA,CAACL,MAAM,CAAC4C,aAAa;UACpBC,MAAM,EAAG,EAAI;UACb1B,KAAK,EAAGA,KAAO;UACf2B,SAAS;UACTC,KAAK,EAAG,KAAO;UACfC,SAAS,EAAGf;UACZ;UAAA;UACAgB,IAAI,EAAG,CAAEjB,QAAU;UAAAN,QAAA,eAEnBrB,IAAA,CAACG,mBAAmB,CAAC0C,QAAQ;YAACvC,KAAK,EAAGyB,YAAc;YAAAV,QAAA,EACjDA;UAAQ,CACmB;QAAC,CACV,CAAC;MAAA,CACb,CAAC;IAAA,CACR;EAAC;AAER;AAEA,eAAeC,aAAa","ignoreList":[]}
@@ -227,7 +227,7 @@ function getDayLabel(date, isSelected, numEvents) {
227
227
  _n('%1$s. Selected. There is %2$d event', '%1$s. Selected. There are %2$d events', numEvents), localizedDate, numEvents);
228
228
  } else if (isSelected) {
229
229
  return sprintf(
230
- // translators: %s: The calendar date.
230
+ // translators: 1: The calendar date.
231
231
  __('%1$s. Selected'), localizedDate);
232
232
  } else if (numEvents > 0) {
233
233
  return sprintf(
@@ -1 +1 @@
1
- {"version":3,"names":["format","isSameDay","subMonths","addMonths","startOfDay","isEqual","addDays","subWeeks","addWeeks","isSameMonth","startOfWeek","endOfWeek","__","_n","sprintf","isRTL","arrowLeft","arrowRight","dateI18n","getSettings","useState","useRef","useEffect","useLilius","Wrapper","Navigator","NavigatorHeading","Calendar","DayOfWeek","DayButton","inputToDate","Button","TIMEZONELESS_FORMAT","jsx","_jsx","jsxs","_jsxs","DatePicker","currentDate","onChange","events","isInvalidDate","onMonthPreviewed","weekStartsOn","date","Date","calendar","viewing","setSelected","setViewing","isSelected","viewPreviousMonth","viewNextMonth","selected","focusable","setFocusable","isFocusWithinCalendar","setIsFocusWithinCalendar","prevCurrentDate","setPrevCurrentDate","className","role","children","icon","variant","onClick","size","level","getTimezoneOffset","onFocus","onBlur","map","day","toString","week","index","Day","column","isFocusable","isFocusAllowed","isToday","isInvalid","numEvents","filter","event","length","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","onKeyDown","nextFocusable","key","preventDefault","ref","current","focus","__next40pxDefaultSize","disabled","tabIndex","getDayLabel","hasEvents","formats","localizedDate"],"sources":["@wordpress/components/src/date-time/date/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tformat,\n\tisSameDay,\n\tsubMonths,\n\taddMonths,\n\tstartOfDay,\n\tisEqual,\n\taddDays,\n\tsubWeeks,\n\taddWeeks,\n\tisSameMonth,\n\tstartOfWeek,\n\tendOfWeek,\n} from 'date-fns';\nimport type { KeyboardEventHandler } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, isRTL } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight } from '@wordpress/icons';\nimport { dateI18n, getSettings } from '@wordpress/date';\nimport { useState, useRef, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useLilius } from './use-lilius';\nimport type { DatePickerProps } from '../types';\nimport {\n\tWrapper,\n\tNavigator,\n\tNavigatorHeading,\n\tCalendar,\n\tDayOfWeek,\n\tDayButton,\n} from './styles';\nimport { inputToDate } from '../utils';\nimport Button from '../../button';\nimport { TIMEZONELESS_FORMAT } from '../constants';\n\n/**\n * DatePicker is a React component that renders a calendar for date selection.\n *\n * ```jsx\n * import { DatePicker } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyDatePicker = () => {\n * const [ date, setDate ] = useState( new Date() );\n *\n * return (\n * <DatePicker\n * currentDate={ date }\n * onChange={ ( newDate ) => setDate( newDate ) }\n * />\n * );\n * };\n * ```\n */\nexport function DatePicker( {\n\tcurrentDate,\n\tonChange,\n\tevents = [],\n\tisInvalidDate,\n\tonMonthPreviewed,\n\tstartOfWeek: weekStartsOn = 0,\n}: DatePickerProps ) {\n\tconst date = currentDate ? inputToDate( currentDate ) : new Date();\n\n\tconst {\n\t\tcalendar,\n\t\tviewing,\n\t\tsetSelected,\n\t\tsetViewing,\n\t\tisSelected,\n\t\tviewPreviousMonth,\n\t\tviewNextMonth,\n\t} = useLilius( {\n\t\tselected: [ startOfDay( date ) ],\n\t\tviewing: startOfDay( date ),\n\t\tweekStartsOn,\n\t} );\n\n\t// Used to implement a roving tab index. Tracks the day that receives focus\n\t// when the user tabs into the calendar.\n\tconst [ focusable, setFocusable ] = useState( startOfDay( date ) );\n\n\t// Allows us to only programmatically focus() a day when focus was already\n\t// within the calendar. This stops us stealing focus from e.g. a TimePicker\n\t// input.\n\tconst [ isFocusWithinCalendar, setIsFocusWithinCalendar ] =\n\t\tuseState( false );\n\n\t// Update internal state when currentDate prop changes.\n\tconst [ prevCurrentDate, setPrevCurrentDate ] = useState( currentDate );\n\tif ( currentDate !== prevCurrentDate ) {\n\t\tsetPrevCurrentDate( currentDate );\n\t\tsetSelected( [ startOfDay( date ) ] );\n\t\tsetViewing( startOfDay( date ) );\n\t\tsetFocusable( startOfDay( date ) );\n\t}\n\n\treturn (\n\t\t<Wrapper\n\t\t\tclassName=\"components-datetime__date\"\n\t\t\trole=\"application\"\n\t\t\taria-label={ __( 'Calendar' ) }\n\t\t>\n\t\t\t<Navigator>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isRTL() ? arrowRight : arrowLeft }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\taria-label={ __( 'View previous month' ) }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tviewPreviousMonth();\n\t\t\t\t\t\tsetFocusable( subMonths( focusable, 1 ) );\n\t\t\t\t\t\tonMonthPreviewed?.(\n\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\tsubMonths( viewing, 1 ),\n\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\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\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t\t<NavigatorHeading level={ 3 }>\n\t\t\t\t\t<strong>\n\t\t\t\t\t\t{ dateI18n(\n\t\t\t\t\t\t\t'F',\n\t\t\t\t\t\t\tviewing,\n\t\t\t\t\t\t\t-viewing.getTimezoneOffset()\n\t\t\t\t\t\t) }\n\t\t\t\t\t</strong>{ ' ' }\n\t\t\t\t\t{ dateI18n( 'Y', viewing, -viewing.getTimezoneOffset() ) }\n\t\t\t\t</NavigatorHeading>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isRTL() ? arrowLeft : arrowRight }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\taria-label={ __( 'View next month' ) }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tviewNextMonth();\n\t\t\t\t\t\tsetFocusable( addMonths( focusable, 1 ) );\n\t\t\t\t\t\tonMonthPreviewed?.(\n\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\taddMonths( viewing, 1 ),\n\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\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\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t</Navigator>\n\t\t\t<Calendar\n\t\t\t\tonFocus={ () => setIsFocusWithinCalendar( true ) }\n\t\t\t\tonBlur={ () => setIsFocusWithinCalendar( false ) }\n\t\t\t>\n\t\t\t\t{ calendar[ 0 ][ 0 ].map( ( day ) => (\n\t\t\t\t\t<DayOfWeek key={ day.toString() }>\n\t\t\t\t\t\t{ dateI18n( 'D', day, -day.getTimezoneOffset() ) }\n\t\t\t\t\t</DayOfWeek>\n\t\t\t\t) ) }\n\t\t\t\t{ calendar[ 0 ].map( ( week ) =>\n\t\t\t\t\tweek.map( ( day, index ) => {\n\t\t\t\t\t\tif ( ! isSameMonth( day, viewing ) ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Day\n\t\t\t\t\t\t\t\tkey={ day.toString() }\n\t\t\t\t\t\t\t\tday={ day }\n\t\t\t\t\t\t\t\tcolumn={ index + 1 }\n\t\t\t\t\t\t\t\tisSelected={ isSelected( day ) }\n\t\t\t\t\t\t\t\tisFocusable={ isEqual( day, focusable ) }\n\t\t\t\t\t\t\t\tisFocusAllowed={ isFocusWithinCalendar }\n\t\t\t\t\t\t\t\tisToday={ isSameDay( day, new Date() ) }\n\t\t\t\t\t\t\t\tisInvalid={\n\t\t\t\t\t\t\t\t\tisInvalidDate ? isInvalidDate( day ) : false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnumEvents={\n\t\t\t\t\t\t\t\t\tevents.filter( ( event ) =>\n\t\t\t\t\t\t\t\t\t\tisSameDay( event.date, day )\n\t\t\t\t\t\t\t\t\t).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetSelected( [ day ] );\n\t\t\t\t\t\t\t\t\tsetFocusable( day );\n\t\t\t\t\t\t\t\t\tonChange?.(\n\t\t\t\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\t\t\t\t// Don't change the selected date's time fields.\n\t\t\t\t\t\t\t\t\t\t\tnew Date(\n\t\t\t\t\t\t\t\t\t\t\t\tday.getFullYear(),\n\t\t\t\t\t\t\t\t\t\t\t\tday.getMonth(),\n\t\t\t\t\t\t\t\t\t\t\t\tday.getDate(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getHours(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getMinutes(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getSeconds(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getMilliseconds()\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tlet nextFocusable;\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowLeft' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addDays(\n\t\t\t\t\t\t\t\t\t\t\tday,\n\t\t\t\t\t\t\t\t\t\t\tisRTL() ? 1 : -1\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowRight' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addDays(\n\t\t\t\t\t\t\t\t\t\t\tday,\n\t\t\t\t\t\t\t\t\t\t\tisRTL() ? -1 : 1\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = subWeeks( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addWeeks( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'PageUp' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = subMonths( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'PageDown' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addMonths( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'Home' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = startOfWeek( day );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'End' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = startOfDay(\n\t\t\t\t\t\t\t\t\t\t\tendOfWeek( day )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( nextFocusable ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetFocusable( nextFocusable );\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t! isSameMonth(\n\t\t\t\t\t\t\t\t\t\t\t\tnextFocusable,\n\t\t\t\t\t\t\t\t\t\t\t\tviewing\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tsetViewing( nextFocusable );\n\t\t\t\t\t\t\t\t\t\t\tonMonthPreviewed?.(\n\t\t\t\t\t\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextFocusable,\n\t\t\t\t\t\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\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) }\n\t\t\t</Calendar>\n\t\t</Wrapper>\n\t);\n}\n\ntype DayProps = {\n\tday: Date;\n\tcolumn: number;\n\tisSelected: boolean;\n\tisFocusable: boolean;\n\tisFocusAllowed: boolean;\n\tisToday: boolean;\n\tnumEvents: number;\n\tisInvalid: boolean;\n\tonClick: () => void;\n\tonKeyDown: KeyboardEventHandler;\n};\n\nfunction Day( {\n\tday,\n\tcolumn,\n\tisSelected,\n\tisFocusable,\n\tisFocusAllowed,\n\tisToday,\n\tisInvalid,\n\tnumEvents,\n\tonClick,\n\tonKeyDown,\n}: DayProps ) {\n\tconst ref = useRef< HTMLButtonElement >();\n\n\t// Focus the day when it becomes focusable, e.g. because an arrow key is\n\t// pressed. Only do this if focus is allowed - this stops us stealing focus\n\t// from e.g. a TimePicker input.\n\tuseEffect( () => {\n\t\tif ( ref.current && isFocusable && isFocusAllowed ) {\n\t\t\tref.current.focus();\n\t\t}\n\t\t// isFocusAllowed is not a dep as there is no point calling focus() on\n\t\t// an already focused element.\n\t}, [ isFocusable ] );\n\n\treturn (\n\t\t<DayButton\n\t\t\t__next40pxDefaultSize\n\t\t\tref={ ref }\n\t\t\tclassName=\"components-datetime__date__day\" // Unused, for backwards compatibility.\n\t\t\tdisabled={ isInvalid }\n\t\t\ttabIndex={ isFocusable ? 0 : -1 }\n\t\t\taria-label={ getDayLabel( day, isSelected, numEvents ) }\n\t\t\tcolumn={ column }\n\t\t\tisSelected={ isSelected }\n\t\t\tisToday={ isToday }\n\t\t\thasEvents={ numEvents > 0 }\n\t\t\tonClick={ onClick }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t>\n\t\t\t{ dateI18n( 'j', day, -day.getTimezoneOffset() ) }\n\t\t</DayButton>\n\t);\n}\n\nfunction getDayLabel( date: Date, isSelected: boolean, numEvents: number ) {\n\tconst { formats } = getSettings();\n\tconst localizedDate = dateI18n(\n\t\tformats.date,\n\t\tdate,\n\t\t-date.getTimezoneOffset()\n\t);\n\tif ( isSelected && numEvents > 0 ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: The calendar date. 2: Number of events on the calendar date.\n\t\t\t_n(\n\t\t\t\t'%1$s. Selected. There is %2$d event',\n\t\t\t\t'%1$s. Selected. There are %2$d events',\n\t\t\t\tnumEvents\n\t\t\t),\n\t\t\tlocalizedDate,\n\t\t\tnumEvents\n\t\t);\n\t} else if ( isSelected ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: The calendar date.\n\t\t\t__( '%1$s. Selected' ),\n\t\t\tlocalizedDate\n\t\t);\n\t} else if ( numEvents > 0 ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: The calendar date. 2: Number of events on the calendar date.\n\t\t\t_n(\n\t\t\t\t'%1$s. There is %2$d event',\n\t\t\t\t'%1$s. There are %2$d events',\n\t\t\t\tnumEvents\n\t\t\t),\n\t\t\tlocalizedDate,\n\t\t\tnumEvents\n\t\t);\n\t}\n\treturn localizedDate;\n}\n\nexport default DatePicker;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["format","isSameDay","subMonths","addMonths","startOfDay","isEqual","addDays","subWeeks","addWeeks","isSameMonth","startOfWeek","endOfWeek","__","_n","sprintf","isRTL","arrowLeft","arrowRight","dateI18n","getSettings","useState","useRef","useEffect","useLilius","Wrapper","Navigator","NavigatorHeading","Calendar","DayOfWeek","DayButton","inputToDate","Button","TIMEZONELESS_FORMAT","jsx","_jsx","jsxs","_jsxs","DatePicker","currentDate","onChange","events","isInvalidDate","onMonthPreviewed","weekStartsOn","date","Date","calendar","viewing","setSelected","setViewing","isSelected","viewPreviousMonth","viewNextMonth","selected","focusable","setFocusable","isFocusWithinCalendar","setIsFocusWithinCalendar","prevCurrentDate","setPrevCurrentDate","className","role","children","icon","variant","onClick","size","level","getTimezoneOffset","onFocus","onBlur","map","day","toString","week","index","Day","column","isFocusable","isFocusAllowed","isToday","isInvalid","numEvents","filter","event","length","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","onKeyDown","nextFocusable","key","preventDefault","ref","current","focus","__next40pxDefaultSize","disabled","tabIndex","getDayLabel","hasEvents","formats","localizedDate"],"sources":["@wordpress/components/src/date-time/date/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tformat,\n\tisSameDay,\n\tsubMonths,\n\taddMonths,\n\tstartOfDay,\n\tisEqual,\n\taddDays,\n\tsubWeeks,\n\taddWeeks,\n\tisSameMonth,\n\tstartOfWeek,\n\tendOfWeek,\n} from 'date-fns';\nimport type { KeyboardEventHandler } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf, isRTL } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight } from '@wordpress/icons';\nimport { dateI18n, getSettings } from '@wordpress/date';\nimport { useState, useRef, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useLilius } from './use-lilius';\nimport type { DatePickerProps } from '../types';\nimport {\n\tWrapper,\n\tNavigator,\n\tNavigatorHeading,\n\tCalendar,\n\tDayOfWeek,\n\tDayButton,\n} from './styles';\nimport { inputToDate } from '../utils';\nimport Button from '../../button';\nimport { TIMEZONELESS_FORMAT } from '../constants';\n\n/**\n * DatePicker is a React component that renders a calendar for date selection.\n *\n * ```jsx\n * import { DatePicker } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyDatePicker = () => {\n * const [ date, setDate ] = useState( new Date() );\n *\n * return (\n * <DatePicker\n * currentDate={ date }\n * onChange={ ( newDate ) => setDate( newDate ) }\n * />\n * );\n * };\n * ```\n */\nexport function DatePicker( {\n\tcurrentDate,\n\tonChange,\n\tevents = [],\n\tisInvalidDate,\n\tonMonthPreviewed,\n\tstartOfWeek: weekStartsOn = 0,\n}: DatePickerProps ) {\n\tconst date = currentDate ? inputToDate( currentDate ) : new Date();\n\n\tconst {\n\t\tcalendar,\n\t\tviewing,\n\t\tsetSelected,\n\t\tsetViewing,\n\t\tisSelected,\n\t\tviewPreviousMonth,\n\t\tviewNextMonth,\n\t} = useLilius( {\n\t\tselected: [ startOfDay( date ) ],\n\t\tviewing: startOfDay( date ),\n\t\tweekStartsOn,\n\t} );\n\n\t// Used to implement a roving tab index. Tracks the day that receives focus\n\t// when the user tabs into the calendar.\n\tconst [ focusable, setFocusable ] = useState( startOfDay( date ) );\n\n\t// Allows us to only programmatically focus() a day when focus was already\n\t// within the calendar. This stops us stealing focus from e.g. a TimePicker\n\t// input.\n\tconst [ isFocusWithinCalendar, setIsFocusWithinCalendar ] =\n\t\tuseState( false );\n\n\t// Update internal state when currentDate prop changes.\n\tconst [ prevCurrentDate, setPrevCurrentDate ] = useState( currentDate );\n\tif ( currentDate !== prevCurrentDate ) {\n\t\tsetPrevCurrentDate( currentDate );\n\t\tsetSelected( [ startOfDay( date ) ] );\n\t\tsetViewing( startOfDay( date ) );\n\t\tsetFocusable( startOfDay( date ) );\n\t}\n\n\treturn (\n\t\t<Wrapper\n\t\t\tclassName=\"components-datetime__date\"\n\t\t\trole=\"application\"\n\t\t\taria-label={ __( 'Calendar' ) }\n\t\t>\n\t\t\t<Navigator>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isRTL() ? arrowRight : arrowLeft }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\taria-label={ __( 'View previous month' ) }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tviewPreviousMonth();\n\t\t\t\t\t\tsetFocusable( subMonths( focusable, 1 ) );\n\t\t\t\t\t\tonMonthPreviewed?.(\n\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\tsubMonths( viewing, 1 ),\n\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\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\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t\t<NavigatorHeading level={ 3 }>\n\t\t\t\t\t<strong>\n\t\t\t\t\t\t{ dateI18n(\n\t\t\t\t\t\t\t'F',\n\t\t\t\t\t\t\tviewing,\n\t\t\t\t\t\t\t-viewing.getTimezoneOffset()\n\t\t\t\t\t\t) }\n\t\t\t\t\t</strong>{ ' ' }\n\t\t\t\t\t{ dateI18n( 'Y', viewing, -viewing.getTimezoneOffset() ) }\n\t\t\t\t</NavigatorHeading>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isRTL() ? arrowLeft : arrowRight }\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\taria-label={ __( 'View next month' ) }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tviewNextMonth();\n\t\t\t\t\t\tsetFocusable( addMonths( focusable, 1 ) );\n\t\t\t\t\t\tonMonthPreviewed?.(\n\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\taddMonths( viewing, 1 ),\n\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\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\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t</Navigator>\n\t\t\t<Calendar\n\t\t\t\tonFocus={ () => setIsFocusWithinCalendar( true ) }\n\t\t\t\tonBlur={ () => setIsFocusWithinCalendar( false ) }\n\t\t\t>\n\t\t\t\t{ calendar[ 0 ][ 0 ].map( ( day ) => (\n\t\t\t\t\t<DayOfWeek key={ day.toString() }>\n\t\t\t\t\t\t{ dateI18n( 'D', day, -day.getTimezoneOffset() ) }\n\t\t\t\t\t</DayOfWeek>\n\t\t\t\t) ) }\n\t\t\t\t{ calendar[ 0 ].map( ( week ) =>\n\t\t\t\t\tweek.map( ( day, index ) => {\n\t\t\t\t\t\tif ( ! isSameMonth( day, viewing ) ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Day\n\t\t\t\t\t\t\t\tkey={ day.toString() }\n\t\t\t\t\t\t\t\tday={ day }\n\t\t\t\t\t\t\t\tcolumn={ index + 1 }\n\t\t\t\t\t\t\t\tisSelected={ isSelected( day ) }\n\t\t\t\t\t\t\t\tisFocusable={ isEqual( day, focusable ) }\n\t\t\t\t\t\t\t\tisFocusAllowed={ isFocusWithinCalendar }\n\t\t\t\t\t\t\t\tisToday={ isSameDay( day, new Date() ) }\n\t\t\t\t\t\t\t\tisInvalid={\n\t\t\t\t\t\t\t\t\tisInvalidDate ? isInvalidDate( day ) : false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnumEvents={\n\t\t\t\t\t\t\t\t\tevents.filter( ( event ) =>\n\t\t\t\t\t\t\t\t\t\tisSameDay( event.date, day )\n\t\t\t\t\t\t\t\t\t).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetSelected( [ day ] );\n\t\t\t\t\t\t\t\t\tsetFocusable( day );\n\t\t\t\t\t\t\t\t\tonChange?.(\n\t\t\t\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\t\t\t\t// Don't change the selected date's time fields.\n\t\t\t\t\t\t\t\t\t\t\tnew Date(\n\t\t\t\t\t\t\t\t\t\t\t\tday.getFullYear(),\n\t\t\t\t\t\t\t\t\t\t\t\tday.getMonth(),\n\t\t\t\t\t\t\t\t\t\t\t\tday.getDate(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getHours(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getMinutes(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getSeconds(),\n\t\t\t\t\t\t\t\t\t\t\t\tdate.getMilliseconds()\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tlet nextFocusable;\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowLeft' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addDays(\n\t\t\t\t\t\t\t\t\t\t\tday,\n\t\t\t\t\t\t\t\t\t\t\tisRTL() ? 1 : -1\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowRight' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addDays(\n\t\t\t\t\t\t\t\t\t\t\tday,\n\t\t\t\t\t\t\t\t\t\t\tisRTL() ? -1 : 1\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = subWeeks( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addWeeks( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'PageUp' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = subMonths( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'PageDown' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = addMonths( day, 1 );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'Home' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = startOfWeek( day );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( event.key === 'End' ) {\n\t\t\t\t\t\t\t\t\t\tnextFocusable = startOfDay(\n\t\t\t\t\t\t\t\t\t\t\tendOfWeek( day )\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( nextFocusable ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tsetFocusable( nextFocusable );\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t! isSameMonth(\n\t\t\t\t\t\t\t\t\t\t\t\tnextFocusable,\n\t\t\t\t\t\t\t\t\t\t\t\tviewing\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tsetViewing( nextFocusable );\n\t\t\t\t\t\t\t\t\t\t\tonMonthPreviewed?.(\n\t\t\t\t\t\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnextFocusable,\n\t\t\t\t\t\t\t\t\t\t\t\t\tTIMEZONELESS_FORMAT\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\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) }\n\t\t\t</Calendar>\n\t\t</Wrapper>\n\t);\n}\n\ntype DayProps = {\n\tday: Date;\n\tcolumn: number;\n\tisSelected: boolean;\n\tisFocusable: boolean;\n\tisFocusAllowed: boolean;\n\tisToday: boolean;\n\tnumEvents: number;\n\tisInvalid: boolean;\n\tonClick: () => void;\n\tonKeyDown: KeyboardEventHandler;\n};\n\nfunction Day( {\n\tday,\n\tcolumn,\n\tisSelected,\n\tisFocusable,\n\tisFocusAllowed,\n\tisToday,\n\tisInvalid,\n\tnumEvents,\n\tonClick,\n\tonKeyDown,\n}: DayProps ) {\n\tconst ref = useRef< HTMLButtonElement >();\n\n\t// Focus the day when it becomes focusable, e.g. because an arrow key is\n\t// pressed. Only do this if focus is allowed - this stops us stealing focus\n\t// from e.g. a TimePicker input.\n\tuseEffect( () => {\n\t\tif ( ref.current && isFocusable && isFocusAllowed ) {\n\t\t\tref.current.focus();\n\t\t}\n\t\t// isFocusAllowed is not a dep as there is no point calling focus() on\n\t\t// an already focused element.\n\t}, [ isFocusable ] );\n\n\treturn (\n\t\t<DayButton\n\t\t\t__next40pxDefaultSize\n\t\t\tref={ ref }\n\t\t\tclassName=\"components-datetime__date__day\" // Unused, for backwards compatibility.\n\t\t\tdisabled={ isInvalid }\n\t\t\ttabIndex={ isFocusable ? 0 : -1 }\n\t\t\taria-label={ getDayLabel( day, isSelected, numEvents ) }\n\t\t\tcolumn={ column }\n\t\t\tisSelected={ isSelected }\n\t\t\tisToday={ isToday }\n\t\t\thasEvents={ numEvents > 0 }\n\t\t\tonClick={ onClick }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t>\n\t\t\t{ dateI18n( 'j', day, -day.getTimezoneOffset() ) }\n\t\t</DayButton>\n\t);\n}\n\nfunction getDayLabel( date: Date, isSelected: boolean, numEvents: number ) {\n\tconst { formats } = getSettings();\n\tconst localizedDate = dateI18n(\n\t\tformats.date,\n\t\tdate,\n\t\t-date.getTimezoneOffset()\n\t);\n\tif ( isSelected && numEvents > 0 ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: The calendar date. 2: Number of events on the calendar date.\n\t\t\t_n(\n\t\t\t\t'%1$s. Selected. There is %2$d event',\n\t\t\t\t'%1$s. Selected. There are %2$d events',\n\t\t\t\tnumEvents\n\t\t\t),\n\t\t\tlocalizedDate,\n\t\t\tnumEvents\n\t\t);\n\t} else if ( isSelected ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: The calendar date.\n\t\t\t__( '%1$s. Selected' ),\n\t\t\tlocalizedDate\n\t\t);\n\t} else if ( numEvents > 0 ) {\n\t\treturn sprintf(\n\t\t\t// translators: 1: The calendar date. 2: Number of events on the calendar date.\n\t\t\t_n(\n\t\t\t\t'%1$s. There is %2$d event',\n\t\t\t\t'%1$s. There are %2$d events',\n\t\t\t\tnumEvents\n\t\t\t),\n\t\t\tlocalizedDate,\n\t\t\tnumEvents\n\t\t);\n\t}\n\treturn localizedDate;\n}\n\nexport default DatePicker;\n"],"mappings":"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","ignoreList":[]}
@@ -55,12 +55,10 @@ export function FormFileUpload({
55
55
  ...props,
56
56
  children: children
57
57
  });
58
- // @todo: Temporary fix a bug that prevents Chromium browsers from selecting ".heic" files
59
- // from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.
60
- // This can be removed once the Chromium fix is in the stable channel.
61
- // Prevent Safari from adding "image/heic" and "image/heif" to the accept attribute.
62
- const isSafari = globalThis.window?.navigator.userAgent.includes('Safari') && !globalThis.window?.navigator.userAgent.includes('Chrome') && !globalThis.window?.navigator.userAgent.includes('Chromium');
63
- const compatAccept = !isSafari && !!accept?.includes('image/*') ? `${accept}, image/heic, image/heif` : accept;
58
+
59
+ // iOS browsers may not reliably handle 'audio/*' in the accept attribute.
60
+ // Adding explicit audio MIME types improves compatibility across all devices.
61
+ const compatAccept = accept?.includes('audio/*') ? `${accept}, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm` : accept;
64
62
  return /*#__PURE__*/_jsxs("div", {
65
63
  className: "components-form-file-upload",
66
64
  children: [ui, /*#__PURE__*/_jsx("input", {
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","Button","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","componentName","__next40pxDefaultSize","size","ui","isSafari","globalThis","window","navigator","userAgent","includes","compatAccept","className","type","style","display"],"sources":["@wordpress/components/src/form-file-upload/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\n/**\n * FormFileUpload allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * __next40pxDefaultSize\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\t// @todo: Temporary fix a bug that prevents Chromium browsers from selecting \".heic\" files\n\t// from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.\n\t// This can be removed once the Chromium fix is in the stable channel.\n\t// Prevent Safari from adding \"image/heic\" and \"image/heif\" to the accept attribute.\n\tconst isSafari =\n\t\tglobalThis.window?.navigator.userAgent.includes( 'Safari' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chrome' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chromium' );\n\tconst compatAccept =\n\t\t! isSafari && !! accept?.includes( 'image/*' )\n\t\t\t? `${ accept }, image/heic, image/heif`\n\t\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAG9B,SAASC,2BAA2B,QAAQ,+BAA+B;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA,OAAO,SAASC,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAGf,MAAM,CAAsB,IAAK,CAAC;EAC9C,MAAMgB,cAAc,GAAGA,CAAA,KAAM;IAC5BD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEL,MAAM,EAAG;IACfX,2BAA2B,CAAE;MAC5BiB,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAEN,KAAK,CAACM,qBAAqB;MAClD;MACAC,IAAI,EAAEP,KAAK,CAACO;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGT,MAAM,GAChBA,MAAM,CAAE;IAAEG;EAAe,CAAE,CAAC,gBAE5BZ,IAAA,CAACH,MAAM;IAACW,OAAO,EAAGI,cAAgB;IAAA,GAAMF,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;EACD;EACA;EACA;EACA;EACA,MAAMc,QAAQ,GACbC,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC3D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC7D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,UAAW,CAAC;EAChE,MAAMC,YAAY,GACjB,CAAEN,QAAQ,IAAI,CAAC,CAAEf,MAAM,EAAEoB,QAAQ,CAAE,SAAU,CAAC,GAC3C,GAAIpB,MAAM,0BAA2B,GACrCA,MAAM;EAEV,oBACCF,KAAA;IAAKwB,SAAS,EAAC,6BAA6B;IAAArB,QAAA,GACzCa,EAAE,eACJlB,IAAA;MACC2B,IAAI,EAAC,MAAM;MACXhB,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBsB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BzB,MAAM,EAAGqB,YAAc;MACvBlB,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,eAAeL,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["useRef","Button","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","componentName","__next40pxDefaultSize","size","ui","compatAccept","includes","className","type","style","display"],"sources":["@wordpress/components/src/form-file-upload/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\n/**\n * FormFileUpload allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * __next40pxDefaultSize\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\n\t// iOS browsers may not reliably handle 'audio/*' in the accept attribute.\n\t// Adding explicit audio MIME types improves compatibility across all devices.\n\tconst compatAccept = accept?.includes( 'audio/*' )\n\t\t? `${ accept }, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm`\n\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAG9B,SAASC,2BAA2B,QAAQ,+BAA+B;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA,OAAO,SAASC,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAGf,MAAM,CAAsB,IAAK,CAAC;EAC9C,MAAMgB,cAAc,GAAGA,CAAA,KAAM;IAC5BD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEL,MAAM,EAAG;IACfX,2BAA2B,CAAE;MAC5BiB,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAEN,KAAK,CAACM,qBAAqB;MAClD;MACAC,IAAI,EAAEP,KAAK,CAACO;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGT,MAAM,GAChBA,MAAM,CAAE;IAAEG;EAAe,CAAE,CAAC,gBAE5BZ,IAAA,CAACH,MAAM;IAACW,OAAO,EAAGI,cAAgB;IAAA,GAAMF,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;;EAED;EACA;EACA,MAAMc,YAAY,GAAGf,MAAM,EAAEgB,QAAQ,CAAE,SAAU,CAAC,GAC/C,GAAIhB,MAAM,6EAA8E,GACxFA,MAAM;EAET,oBACCF,KAAA;IAAKmB,SAAS,EAAC,6BAA6B;IAAAhB,QAAA,GACzCa,EAAE,eACJlB,IAAA;MACCsB,IAAI,EAAC,MAAM;MACXX,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBiB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BpB,MAAM,EAAGe,YAAc;MACvBZ,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,eAAeL,cAAc","ignoreList":[]}
@@ -205,6 +205,9 @@ export function FormTokenField(props) {
205
205
  case 'Escape':
206
206
  preventDefault = handleEscapeKey(event);
207
207
  break;
208
+ case 'Tab':
209
+ preventDefault = handleTabKey(event);
210
+ break;
208
211
  default:
209
212
  break;
210
213
  }
@@ -295,15 +298,22 @@ export function FormTokenField(props) {
295
298
  setSelectedSuggestionScroll(true);
296
299
  return true; // PreventDefault.
297
300
  }
298
- function handleEscapeKey(event) {
301
+ function collapseSuggestionsList(event) {
299
302
  if (event.target instanceof HTMLInputElement) {
300
303
  setIncompleteTokenValue(event.target.value);
301
304
  setIsExpanded(false);
302
305
  setSelectedSuggestionIndex(-1);
303
306
  setSelectedSuggestionScroll(false);
304
307
  }
308
+ }
309
+ function handleEscapeKey(event) {
310
+ collapseSuggestionsList(event);
305
311
  return true; // PreventDefault.
306
312
  }
313
+ function handleTabKey(event) {
314
+ collapseSuggestionsList(event);
315
+ return false; // Do not prevent the default behavior.
316
+ }
307
317
  function handleCommaKey() {
308
318
  if (inputHasValidValue()) {
309
319
  addNewToken(incompleteTokenValue);
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","isShallowEqual","deprecated","Token","TokenInput","TokensAndInputWrapperFlex","SuggestionsList","FlexItem","StyledHelp","StyledLabel","Spacer","useDeprecated36pxDefaultSizeProp","withIgnoreIMEEvents","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","identity","value","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalRenderItem","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","__next40pxDefaultSize","__experimentalAutoSelectFirstMatch","__nextHasNoMarginBottom","tokenizeOnBlur","since","version","hint","componentName","size","instanceId","incompleteTokenValue","setIncompleteTokenValue","inputOffsetFromEnd","setInputOffsetFromEnd","isActive","setIsActive","isExpanded","setIsExpanded","selectedSuggestionIndex","setSelectedSuggestionIndex","selectedSuggestionScroll","setSelectedSuggestionScroll","prevSuggestions","prevValue","input","tokensAndInput","debouncedSpeak","hasFocus","focus","suggestionsDidUpdate","updateSuggestions","current","ownerDocument","activeElement","onFocusHandler","event","target","onBlur","inputHasValidValue","addNewToken","hasFocusWithin","relatedTarget","onKeyDown","preventDefault","defaultPrevented","key","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","Set","map","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","normalize","toLocaleLowerCase","forEach","push","concat","some","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","children","title","onClickRemove","onMouseEnter","onMouseLeave","inputProps","ref","classes","tokenFieldProps","tabIndex","Object","assign","htmlFor","onMouseDown","onTouchStart","justify","align","gap","wrap","hasTokens","selectedIndex","scrollIntoView","onHover","onSelect","marginBottom","id"],"sources":["@wordpress/components/src/form-token-field/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { KeyboardEvent, MouseEvent, TouchEvent, FocusEvent } from 'react';\n\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 type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport {\n\tStyledHelp,\n\tStyledLabel,\n} from '../base-control/styles/base-control-styles';\nimport { Spacer } from '../spacer';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\nconst identity = ( value: string ) => 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: FormTokenFieldProps ) {\n\tconst {\n\t\tautoCapitalize,\n\t\tautoComplete,\n\t\tmaxLength,\n\t\tplaceholder,\n\t\tlabel = __( 'Add item' ),\n\t\tclassName,\n\t\tsuggestions = [],\n\t\tmaxSuggestions = 100,\n\t\tvalue = [],\n\t\tdisplayTransform = identity,\n\t\tsaveTransform = ( token ) => token.trim(),\n\t\tonChange = () => {},\n\t\tonInputChange = () => {},\n\t\tonFocus = undefined,\n\t\tisBorderless = false,\n\t\tdisabled = false,\n\t\ttokenizeOnSpace = false,\n\t\tmessages = {\n\t\t\tadded: __( 'Item added.' ),\n\t\t\tremoved: __( 'Item removed.' ),\n\t\t\tremove: __( 'Remove item' ),\n\t\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t\t},\n\t\t__experimentalRenderItem,\n\t\t__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\n\t\t__next40pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t\t__nextHasNoMarginBottom = false,\n\t\ttokenizeOnBlur = false,\n\t} = useDeprecated36pxDefaultSizeProp< FormTokenFieldProps >( props );\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated( 'Bottom margin styles for wp.components.FormTokenField', {\n\t\t\tsince: '6.7',\n\t\t\tversion: '7.0',\n\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version.',\n\t\t} );\n\t}\n\n\tmaybeWarnDeprecated36pxSize( {\n\t\tcomponentName: 'FormTokenField',\n\t\tsize: undefined,\n\t\t__next40pxDefaultSize,\n\t} );\n\n\tconst instanceId = useInstanceId( FormTokenField );\n\n\t// We reset to these initial values again in the onBlur\n\tconst [ incompleteTokenValue, setIncompleteTokenValue ] = useState( '' );\n\tconst [ inputOffsetFromEnd, setInputOffsetFromEnd ] = useState( 0 );\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst [ isExpanded, setIsExpanded ] = useState( false );\n\tconst [ selectedSuggestionIndex, setSelectedSuggestionIndex ] =\n\t\tuseState( -1 );\n\tconst [ selectedSuggestionScroll, setSelectedSuggestionScroll ] =\n\t\tuseState( false );\n\n\tconst prevSuggestions = usePrevious< string[] >( suggestions );\n\tconst prevValue = usePrevious< ( string | TokenItem )[] >( value );\n\n\tconst input = useRef< HTMLInputElement >( null );\n\tconst tokensAndInput = useRef< HTMLInputElement >( null );\n\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tuseEffect( () => {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( isActive && ! hasFocus() ) {\n\t\t\tfocus();\n\t\t}\n\t}, [ isActive ] );\n\n\tuseEffect( () => {\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevSuggestions || []\n\t\t);\n\n\t\tif ( suggestionsDidUpdate || value !== prevValue ) {\n\t\t\tupdateSuggestions( suggestionsDidUpdate );\n\t\t}\n\n\t\t// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ __experimentalAutoSelectFirstMatch ] );\n\n\tif ( disabled && isActive ) {\n\t\tsetIsActive( false );\n\t\tsetIncompleteTokenValue( '' );\n\t}\n\n\tfunction focus() {\n\t\tinput.current?.focus();\n\t}\n\n\tfunction hasFocus() {\n\t\treturn input.current === input.current?.ownerDocument.activeElement;\n\t}\n\n\tfunction onFocusHandler( event: FocusEvent ) {\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( hasFocus() || event.target === tokensAndInput.current ) {\n\t\t\tsetIsActive( true );\n\t\t\tsetIsExpanded( __experimentalExpandOnFocus || isExpanded );\n\t\t} else {\n\t\t\t/*\n\t\t\t * Otherwise, focus is on one of the token \"remove\" buttons and we\n\t\t\t * set the isActive state to false to prevent the input to be\n\t\t\t * re-focused, see componentDidUpdate().\n\t\t\t */\n\t\t\tsetIsActive( false );\n\t\t}\n\n\t\tif ( 'function' === typeof onFocus ) {\n\t\t\tonFocus( event );\n\t\t}\n\t}\n\n\tfunction onBlur( event: FocusEvent ) {\n\t\tif (\n\t\t\tinputHasValidValue() &&\n\t\t\t__experimentalValidateInput( incompleteTokenValue )\n\t\t) {\n\t\t\tsetIsActive( false );\n\t\t\tif ( tokenizeOnBlur && inputHasValidValue() ) {\n\t\t\t\taddNewToken( incompleteTokenValue );\n\t\t\t}\n\t\t} else {\n\t\t\t// Reset to initial state\n\t\t\tsetIncompleteTokenValue( '' );\n\t\t\tsetInputOffsetFromEnd( 0 );\n\t\t\tsetIsActive( false );\n\n\t\t\tif ( __experimentalExpandOnFocus ) {\n\t\t\t\t// If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n\t\t\t\t// the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n\t\t\t\tconst hasFocusWithin =\n\t\t\t\t\tevent.relatedTarget === tokensAndInput.current;\n\t\t\t\tsetIsExpanded( hasFocusWithin );\n\t\t\t} else {\n\t\t\t\t// Else collapse the suggestion list. This will result in the suggestion list closing\n\t\t\t\t// after a suggestion has been submitted since that causes a blur.\n\t\t\t\tsetIsExpanded( false );\n\t\t\t}\n\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onKeyDown( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.key ) {\n\t\t\tcase 'Backspace':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenBeforeInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpreventDefault = handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenAfterInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Space':\n\t\t\t\tif ( tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tpreventDefault = handleEscapeKey( event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onKeyPress( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tswitch ( event.key ) {\n\t\t\tcase ',':\n\t\t\t\tpreventDefault = handleCommaKey();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onContainerTouched( event: MouseEvent | TouchEvent ) {\n\t\t// Prevent clicking/touching the tokensAndInput container from blurring\n\t\t// the input and adding the current token.\n\t\tif ( event.target === tokensAndInput.current && isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onTokenClickRemove( event: { value: string } ) {\n\t\tdeleteToken( event.value );\n\t\tfocus();\n\t}\n\n\tfunction onSuggestionHovered( suggestion: string ) {\n\t\tconst index = getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tsetSelectedSuggestionIndex( index );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onSuggestionSelected( suggestion: string ) {\n\t\taddNewToken( suggestion );\n\t}\n\n\tfunction onInputChangeHandler( event: { value: string } ) {\n\t\tconst text = event.value;\n\t\tconst separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n\t\tconst items = text.split( separator );\n\t\tconst tokenValue = items[ items.length - 1 ] || '';\n\n\t\tif ( items.length > 1 ) {\n\t\t\taddNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\t\tsetIncompleteTokenValue( tokenValue );\n\t\tonInputChange( tokenValue );\n\t}\n\n\tfunction handleDeleteKey( _deleteToken: () => void ) {\n\t\tlet preventDefault = false;\n\t\tif ( hasFocus() && isInputEmpty() ) {\n\t\t\t_deleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleUpArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index === 0\n\t\t\t\t\t? getMatchingSuggestions(\n\t\t\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\t\t\tsuggestions,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\t\t\tsaveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: index ) - 1\n\t\t\t);\n\t\t} );\n\t\tsetSelectedSuggestionScroll( true );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleDownArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index + 1 ) %\n\t\t\t\tgetMatchingSuggestions(\n\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tvalue,\n\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\tsaveTransform\n\t\t\t\t).length\n\t\t\t);\n\t\t} );\n\n\t\tsetSelectedSuggestionScroll( true );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleEscapeKey( event: KeyboardEvent ) {\n\t\tif ( event.target instanceof HTMLInputElement ) {\n\t\t\tsetIncompleteTokenValue( event.target.value );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleCommaKey() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction moveInputToIndex( index: number ) {\n\t\tsetInputOffsetFromEnd( value.length - Math.max( index, -1 ) - 1 );\n\t}\n\n\tfunction moveInputBeforePreviousToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.min( prevInputOffsetFromEnd + 1, value.length );\n\t\t} );\n\t}\n\n\tfunction moveInputAfterNextToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.max( prevInputOffsetFromEnd - 1, 0 );\n\t\t} );\n\t}\n\n\tfunction deleteTokenBeforeInput() {\n\t\tconst index = getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t}\n\t}\n\n\tfunction deleteTokenAfterInput() {\n\t\tconst index = getIndexOfInput();\n\n\t\tif ( index < value.length ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tmoveInputToIndex( index );\n\t\t}\n\t}\n\n\tfunction addCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\taddNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction addNewTokens( tokens: string[] ) {\n\t\tconst tokensToAdd = [\n\t\t\t...new Set(\n\t\t\t\ttokens\n\t\t\t\t\t.map( saveTransform )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t\t),\n\t\t];\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = [ ...value ];\n\t\t\tnewValue.splice( getIndexOfInput(), 0, ...tokensToAdd );\n\t\t\tonChange( newValue );\n\t\t}\n\t}\n\n\tfunction addNewToken( token: string ) {\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tspeak( messages.__experimentalInvalid, 'assertive' );\n\t\t\treturn;\n\t\t}\n\t\taddNewTokens( [ token ] );\n\t\tspeak( messages.added, 'assertive' );\n\n\t\tsetIncompleteTokenValue( '' );\n\t\tsetSelectedSuggestionIndex( -1 );\n\t\tsetSelectedSuggestionScroll( false );\n\t\tsetIsExpanded( ! __experimentalExpandOnFocus );\n\n\t\tif ( isActive && ! tokenizeOnBlur ) {\n\t\t\tfocus();\n\t\t}\n\t}\n\n\tfunction deleteToken( token: string | TokenItem ) {\n\t\tconst newTokens = value.filter( ( item ) => {\n\t\t\treturn getTokenValue( item ) !== getTokenValue( token );\n\t\t} );\n\t\tonChange( newTokens );\n\t\tspeak( messages.removed, 'assertive' );\n\t}\n\n\tfunction getTokenValue( token: { value: string } | string ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tfunction getMatchingSuggestions(\n\t\tsearchValue = incompleteTokenValue,\n\t\t_suggestions = suggestions,\n\t\t_value = value,\n\t\t_maxSuggestions = maxSuggestions,\n\t\t_saveTransform = saveTransform\n\t) {\n\t\tlet match = _saveTransform( searchValue );\n\t\tconst startsWithMatch: string[] = [];\n\t\tconst containsMatch: string[] = [];\n\t\tconst normalizedValue = _value.map( ( item ) => {\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\treturn item.value;\n\t\t} );\n\n\t\tif ( match.length === 0 ) {\n\t\t\t_suggestions = _suggestions.filter(\n\t\t\t\t( suggestion ) => ! normalizedValue.includes( suggestion )\n\t\t\t);\n\t\t} else {\n\t\t\tmatch = match.normalize( 'NFKC' ).toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion\n\t\t\t\t\t.normalize( 'NFKC' )\n\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t.indexOf( match );\n\t\t\t\tif ( normalizedValue.indexOf( suggestion ) === -1 ) {\n\t\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t\tstartsWithMatch.push( suggestion );\n\t\t\t\t\t} else if ( index > 0 ) {\n\t\t\t\t\t\tcontainsMatch.push( suggestion );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t_suggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn _suggestions.slice( 0, _maxSuggestions );\n\t}\n\n\tfunction getSelectedSuggestion() {\n\t\tif ( selectedSuggestionIndex !== -1 ) {\n\t\t\treturn getMatchingSuggestions()[ selectedSuggestionIndex ];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction valueContainsToken( token: string ) {\n\t\treturn value.some( ( item ) => {\n\t\t\treturn getTokenValue( token ) === getTokenValue( item );\n\t\t} );\n\t}\n\n\tfunction getIndexOfInput() {\n\t\treturn value.length - inputOffsetFromEnd;\n\t}\n\n\tfunction isInputEmpty() {\n\t\treturn incompleteTokenValue.length === 0;\n\t}\n\n\tfunction inputHasValidValue() {\n\t\treturn saveTransform( incompleteTokenValue ).length > 0;\n\t}\n\n\tfunction updateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions =\n\t\t\tgetMatchingSuggestions( incompleteTokenValue );\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n\t\tsetIsExpanded(\n\t\t\tshouldExpandIfFocuses ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tif (\n\t\t\t\t__experimentalAutoSelectFirstMatch &&\n\t\t\t\tinputHasMinimumChars &&\n\t\t\t\thasMatchingSuggestions\n\t\t\t) {\n\t\t\t\tsetSelectedSuggestionIndex( 0 );\n\t\t\t\tsetSelectedSuggestionScroll( true );\n\t\t\t} else {\n\t\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\t\tsetSelectedSuggestionScroll( false );\n\t\t\t}\n\t\t}\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst message = hasMatchingSuggestions\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t )\n\t\t\t\t: __( 'No results.' );\n\n\t\t\tdebouncedSpeak( message, 'assertive' );\n\t\t}\n\t}\n\n\tfunction renderTokensAndInput() {\n\t\tconst components = value.map( renderToken );\n\t\tcomponents.splice( getIndexOfInput(), 0, renderInput() );\n\n\t\treturn components;\n\t}\n\n\tfunction renderToken(\n\t\ttoken: string | TokenItem,\n\t\tindex: number,\n\t\ttokens: ( string | TokenItem )[]\n\t) {\n\t\tconst _value = getTokenValue( token );\n\t\tconst status = typeof token !== 'string' ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<FlexItem key={ 'token-' + _value }>\n\t\t\t\t<Token\n\t\t\t\t\tvalue={ _value }\n\t\t\t\t\tstatus={ status }\n\t\t\t\t\ttitle={\n\t\t\t\t\t\ttypeof token !== 'string' ? token.title : undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\t\tisBorderless={\n\t\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\t\tisBorderless\n\t\t\t\t\t}\n\t\t\t\t\tonMouseEnter={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseEnter\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonMouseLeave={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseLeave\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\t\tmessages={ messages }\n\t\t\t\t\ttermsCount={ termsCount }\n\t\t\t\t\ttermPosition={ termPosition }\n\t\t\t\t/>\n\t\t\t</FlexItem>\n\t\t);\n\t}\n\n\tfunction renderInput() {\n\t\tconst inputProps = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tdisabled,\n\t\t\tvalue: incompleteTokenValue,\n\t\t\tonBlur,\n\t\t\tisExpanded,\n\t\t\tselectedSuggestionIndex,\n\t\t};\n\n\t\treturn (\n\t\t\t<TokenInput\n\t\t\t\tkey=\"input\"\n\t\t\t\t{ ...inputProps }\n\t\t\t\tonChange={\n\t\t\t\t\t! ( maxLength && value.length >= maxLength )\n\t\t\t\t\t\t? onInputChangeHandler\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tref={ input }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst classes = clsx(\n\t\tclassName,\n\t\t'components-form-token-field__input-container',\n\t\t{\n\t\t\t'is-active': isActive,\n\t\t\t'is-disabled': disabled,\n\t\t}\n\t);\n\n\tlet tokenFieldProps = {\n\t\tclassName: 'components-form-token-field',\n\t\ttabIndex: -1,\n\t};\n\tconst matchingSuggestions = getMatchingSuggestions();\n\n\tif ( ! disabled ) {\n\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\tonKeyDown: withIgnoreIMEEvents( onKeyDown ),\n\t\t\tonKeyPress,\n\t\t\tonFocus: onFocusHandler,\n\t\t} );\n\t}\n\n\t// Disable reason: There is no appropriate role which describes the\n\t// input container intended accessible usability.\n\t// TODO: Refactor click detection to use blur to stop propagation.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<div { ...tokenFieldProps }>\n\t\t\t{ label && (\n\t\t\t\t<StyledLabel\n\t\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</StyledLabel>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tref={ tokensAndInput }\n\t\t\t\tclassName={ classes }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonMouseDown={ onContainerTouched }\n\t\t\t\tonTouchStart={ onContainerTouched }\n\t\t\t>\n\t\t\t\t<TokensAndInputWrapperFlex\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\twrap\n\t\t\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\t\t\thasTokens={ !! value.length }\n\t\t\t\t>\n\t\t\t\t\t{ renderTokensAndInput() }\n\t\t\t\t</TokensAndInputWrapperFlex>\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\tmatch={ saveTransform( incompleteTokenValue ) }\n\t\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\tselectedIndex={ selectedSuggestionIndex }\n\t\t\t\t\t\tscrollIntoView={ selectedSuggestionScroll }\n\t\t\t\t\t\tonHover={ onSuggestionHovered }\n\t\t\t\t\t\tonSelect={ onSuggestionSelected }\n\t\t\t\t\t\t__experimentalRenderItem={ __experimentalRenderItem }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! __nextHasNoMarginBottom && <Spacer marginBottom={ 2 } /> }\n\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t<StyledHelp\n\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t>\n\t\t\t\t\t{ tokenizeOnSpace\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t</StyledHelp>\n\t\t\t) }\n\t\t</div>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n\nexport default FormTokenField;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","isShallowEqual","deprecated","Token","TokenInput","TokensAndInputWrapperFlex","SuggestionsList","FlexItem","StyledHelp","StyledLabel","Spacer","useDeprecated36pxDefaultSizeProp","withIgnoreIMEEvents","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","identity","value","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalRenderItem","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","__next40pxDefaultSize","__experimentalAutoSelectFirstMatch","__nextHasNoMarginBottom","tokenizeOnBlur","since","version","hint","componentName","size","instanceId","incompleteTokenValue","setIncompleteTokenValue","inputOffsetFromEnd","setInputOffsetFromEnd","isActive","setIsActive","isExpanded","setIsExpanded","selectedSuggestionIndex","setSelectedSuggestionIndex","selectedSuggestionScroll","setSelectedSuggestionScroll","prevSuggestions","prevValue","input","tokensAndInput","debouncedSpeak","hasFocus","focus","suggestionsDidUpdate","updateSuggestions","current","ownerDocument","activeElement","onFocusHandler","event","target","onBlur","inputHasValidValue","addNewToken","hasFocusWithin","relatedTarget","onKeyDown","preventDefault","defaultPrevented","key","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","handleTabKey","onKeyPress","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","collapseSuggestionsList","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","Set","map","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","normalize","toLocaleLowerCase","forEach","push","concat","some","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","children","title","onClickRemove","onMouseEnter","onMouseLeave","inputProps","ref","classes","tokenFieldProps","tabIndex","Object","assign","htmlFor","onMouseDown","onTouchStart","justify","align","gap","wrap","hasTokens","selectedIndex","scrollIntoView","onHover","onSelect","marginBottom","id"],"sources":["@wordpress/components/src/form-token-field/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { KeyboardEvent, MouseEvent, TouchEvent, FocusEvent } from 'react';\n\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 type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport {\n\tStyledHelp,\n\tStyledLabel,\n} from '../base-control/styles/base-control-styles';\nimport { Spacer } from '../spacer';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\nconst identity = ( value: string ) => 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: FormTokenFieldProps ) {\n\tconst {\n\t\tautoCapitalize,\n\t\tautoComplete,\n\t\tmaxLength,\n\t\tplaceholder,\n\t\tlabel = __( 'Add item' ),\n\t\tclassName,\n\t\tsuggestions = [],\n\t\tmaxSuggestions = 100,\n\t\tvalue = [],\n\t\tdisplayTransform = identity,\n\t\tsaveTransform = ( token ) => token.trim(),\n\t\tonChange = () => {},\n\t\tonInputChange = () => {},\n\t\tonFocus = undefined,\n\t\tisBorderless = false,\n\t\tdisabled = false,\n\t\ttokenizeOnSpace = false,\n\t\tmessages = {\n\t\t\tadded: __( 'Item added.' ),\n\t\t\tremoved: __( 'Item removed.' ),\n\t\t\tremove: __( 'Remove item' ),\n\t\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t\t},\n\t\t__experimentalRenderItem,\n\t\t__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\n\t\t__next40pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t\t__nextHasNoMarginBottom = false,\n\t\ttokenizeOnBlur = false,\n\t} = useDeprecated36pxDefaultSizeProp< FormTokenFieldProps >( props );\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated( 'Bottom margin styles for wp.components.FormTokenField', {\n\t\t\tsince: '6.7',\n\t\t\tversion: '7.0',\n\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version.',\n\t\t} );\n\t}\n\n\tmaybeWarnDeprecated36pxSize( {\n\t\tcomponentName: 'FormTokenField',\n\t\tsize: undefined,\n\t\t__next40pxDefaultSize,\n\t} );\n\n\tconst instanceId = useInstanceId( FormTokenField );\n\n\t// We reset to these initial values again in the onBlur\n\tconst [ incompleteTokenValue, setIncompleteTokenValue ] = useState( '' );\n\tconst [ inputOffsetFromEnd, setInputOffsetFromEnd ] = useState( 0 );\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst [ isExpanded, setIsExpanded ] = useState( false );\n\tconst [ selectedSuggestionIndex, setSelectedSuggestionIndex ] =\n\t\tuseState( -1 );\n\tconst [ selectedSuggestionScroll, setSelectedSuggestionScroll ] =\n\t\tuseState( false );\n\n\tconst prevSuggestions = usePrevious< string[] >( suggestions );\n\tconst prevValue = usePrevious< ( string | TokenItem )[] >( value );\n\n\tconst input = useRef< HTMLInputElement >( null );\n\tconst tokensAndInput = useRef< HTMLInputElement >( null );\n\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tuseEffect( () => {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( isActive && ! hasFocus() ) {\n\t\t\tfocus();\n\t\t}\n\t}, [ isActive ] );\n\n\tuseEffect( () => {\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevSuggestions || []\n\t\t);\n\n\t\tif ( suggestionsDidUpdate || value !== prevValue ) {\n\t\t\tupdateSuggestions( suggestionsDidUpdate );\n\t\t}\n\n\t\t// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ __experimentalAutoSelectFirstMatch ] );\n\n\tif ( disabled && isActive ) {\n\t\tsetIsActive( false );\n\t\tsetIncompleteTokenValue( '' );\n\t}\n\n\tfunction focus() {\n\t\tinput.current?.focus();\n\t}\n\n\tfunction hasFocus() {\n\t\treturn input.current === input.current?.ownerDocument.activeElement;\n\t}\n\n\tfunction onFocusHandler( event: FocusEvent ) {\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( hasFocus() || event.target === tokensAndInput.current ) {\n\t\t\tsetIsActive( true );\n\t\t\tsetIsExpanded( __experimentalExpandOnFocus || isExpanded );\n\t\t} else {\n\t\t\t/*\n\t\t\t * Otherwise, focus is on one of the token \"remove\" buttons and we\n\t\t\t * set the isActive state to false to prevent the input to be\n\t\t\t * re-focused, see componentDidUpdate().\n\t\t\t */\n\t\t\tsetIsActive( false );\n\t\t}\n\n\t\tif ( 'function' === typeof onFocus ) {\n\t\t\tonFocus( event );\n\t\t}\n\t}\n\n\tfunction onBlur( event: FocusEvent ) {\n\t\tif (\n\t\t\tinputHasValidValue() &&\n\t\t\t__experimentalValidateInput( incompleteTokenValue )\n\t\t) {\n\t\t\tsetIsActive( false );\n\t\t\tif ( tokenizeOnBlur && inputHasValidValue() ) {\n\t\t\t\taddNewToken( incompleteTokenValue );\n\t\t\t}\n\t\t} else {\n\t\t\t// Reset to initial state\n\t\t\tsetIncompleteTokenValue( '' );\n\t\t\tsetInputOffsetFromEnd( 0 );\n\t\t\tsetIsActive( false );\n\n\t\t\tif ( __experimentalExpandOnFocus ) {\n\t\t\t\t// If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n\t\t\t\t// the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n\t\t\t\tconst hasFocusWithin =\n\t\t\t\t\tevent.relatedTarget === tokensAndInput.current;\n\t\t\t\tsetIsExpanded( hasFocusWithin );\n\t\t\t} else {\n\t\t\t\t// Else collapse the suggestion list. This will result in the suggestion list closing\n\t\t\t\t// after a suggestion has been submitted since that causes a blur.\n\t\t\t\tsetIsExpanded( false );\n\t\t\t}\n\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onKeyDown( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.key ) {\n\t\t\tcase 'Backspace':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenBeforeInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpreventDefault = handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenAfterInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Space':\n\t\t\t\tif ( tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tpreventDefault = handleEscapeKey( event );\n\t\t\t\tbreak;\n\t\t\tcase 'Tab':\n\t\t\t\tpreventDefault = handleTabKey( event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onKeyPress( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tswitch ( event.key ) {\n\t\t\tcase ',':\n\t\t\t\tpreventDefault = handleCommaKey();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onContainerTouched( event: MouseEvent | TouchEvent ) {\n\t\t// Prevent clicking/touching the tokensAndInput container from blurring\n\t\t// the input and adding the current token.\n\t\tif ( event.target === tokensAndInput.current && isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onTokenClickRemove( event: { value: string } ) {\n\t\tdeleteToken( event.value );\n\t\tfocus();\n\t}\n\n\tfunction onSuggestionHovered( suggestion: string ) {\n\t\tconst index = getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tsetSelectedSuggestionIndex( index );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onSuggestionSelected( suggestion: string ) {\n\t\taddNewToken( suggestion );\n\t}\n\n\tfunction onInputChangeHandler( event: { value: string } ) {\n\t\tconst text = event.value;\n\t\tconst separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n\t\tconst items = text.split( separator );\n\t\tconst tokenValue = items[ items.length - 1 ] || '';\n\n\t\tif ( items.length > 1 ) {\n\t\t\taddNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\t\tsetIncompleteTokenValue( tokenValue );\n\t\tonInputChange( tokenValue );\n\t}\n\n\tfunction handleDeleteKey( _deleteToken: () => void ) {\n\t\tlet preventDefault = false;\n\t\tif ( hasFocus() && isInputEmpty() ) {\n\t\t\t_deleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleUpArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index === 0\n\t\t\t\t\t? getMatchingSuggestions(\n\t\t\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\t\t\tsuggestions,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\t\t\tsaveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: index ) - 1\n\t\t\t);\n\t\t} );\n\t\tsetSelectedSuggestionScroll( true );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleDownArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index + 1 ) %\n\t\t\t\tgetMatchingSuggestions(\n\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tvalue,\n\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\tsaveTransform\n\t\t\t\t).length\n\t\t\t);\n\t\t} );\n\n\t\tsetSelectedSuggestionScroll( true );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction collapseSuggestionsList( event: KeyboardEvent ) {\n\t\tif ( event.target instanceof HTMLInputElement ) {\n\t\t\tsetIncompleteTokenValue( event.target.value );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction handleEscapeKey( event: KeyboardEvent ) {\n\t\tcollapseSuggestionsList( event );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleTabKey( event: KeyboardEvent ) {\n\t\tcollapseSuggestionsList( event );\n\t\treturn false; // Do not prevent the default behavior.\n\t}\n\n\tfunction handleCommaKey() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction moveInputToIndex( index: number ) {\n\t\tsetInputOffsetFromEnd( value.length - Math.max( index, -1 ) - 1 );\n\t}\n\n\tfunction moveInputBeforePreviousToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.min( prevInputOffsetFromEnd + 1, value.length );\n\t\t} );\n\t}\n\n\tfunction moveInputAfterNextToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.max( prevInputOffsetFromEnd - 1, 0 );\n\t\t} );\n\t}\n\n\tfunction deleteTokenBeforeInput() {\n\t\tconst index = getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t}\n\t}\n\n\tfunction deleteTokenAfterInput() {\n\t\tconst index = getIndexOfInput();\n\n\t\tif ( index < value.length ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tmoveInputToIndex( index );\n\t\t}\n\t}\n\n\tfunction addCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\taddNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction addNewTokens( tokens: string[] ) {\n\t\tconst tokensToAdd = [\n\t\t\t...new Set(\n\t\t\t\ttokens\n\t\t\t\t\t.map( saveTransform )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t\t),\n\t\t];\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = [ ...value ];\n\t\t\tnewValue.splice( getIndexOfInput(), 0, ...tokensToAdd );\n\t\t\tonChange( newValue );\n\t\t}\n\t}\n\n\tfunction addNewToken( token: string ) {\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tspeak( messages.__experimentalInvalid, 'assertive' );\n\t\t\treturn;\n\t\t}\n\t\taddNewTokens( [ token ] );\n\t\tspeak( messages.added, 'assertive' );\n\n\t\tsetIncompleteTokenValue( '' );\n\t\tsetSelectedSuggestionIndex( -1 );\n\t\tsetSelectedSuggestionScroll( false );\n\t\tsetIsExpanded( ! __experimentalExpandOnFocus );\n\n\t\tif ( isActive && ! tokenizeOnBlur ) {\n\t\t\tfocus();\n\t\t}\n\t}\n\n\tfunction deleteToken( token: string | TokenItem ) {\n\t\tconst newTokens = value.filter( ( item ) => {\n\t\t\treturn getTokenValue( item ) !== getTokenValue( token );\n\t\t} );\n\t\tonChange( newTokens );\n\t\tspeak( messages.removed, 'assertive' );\n\t}\n\n\tfunction getTokenValue( token: { value: string } | string ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tfunction getMatchingSuggestions(\n\t\tsearchValue = incompleteTokenValue,\n\t\t_suggestions = suggestions,\n\t\t_value = value,\n\t\t_maxSuggestions = maxSuggestions,\n\t\t_saveTransform = saveTransform\n\t) {\n\t\tlet match = _saveTransform( searchValue );\n\t\tconst startsWithMatch: string[] = [];\n\t\tconst containsMatch: string[] = [];\n\t\tconst normalizedValue = _value.map( ( item ) => {\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\treturn item.value;\n\t\t} );\n\n\t\tif ( match.length === 0 ) {\n\t\t\t_suggestions = _suggestions.filter(\n\t\t\t\t( suggestion ) => ! normalizedValue.includes( suggestion )\n\t\t\t);\n\t\t} else {\n\t\t\tmatch = match.normalize( 'NFKC' ).toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion\n\t\t\t\t\t.normalize( 'NFKC' )\n\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t.indexOf( match );\n\t\t\t\tif ( normalizedValue.indexOf( suggestion ) === -1 ) {\n\t\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t\tstartsWithMatch.push( suggestion );\n\t\t\t\t\t} else if ( index > 0 ) {\n\t\t\t\t\t\tcontainsMatch.push( suggestion );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t_suggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn _suggestions.slice( 0, _maxSuggestions );\n\t}\n\n\tfunction getSelectedSuggestion() {\n\t\tif ( selectedSuggestionIndex !== -1 ) {\n\t\t\treturn getMatchingSuggestions()[ selectedSuggestionIndex ];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction valueContainsToken( token: string ) {\n\t\treturn value.some( ( item ) => {\n\t\t\treturn getTokenValue( token ) === getTokenValue( item );\n\t\t} );\n\t}\n\n\tfunction getIndexOfInput() {\n\t\treturn value.length - inputOffsetFromEnd;\n\t}\n\n\tfunction isInputEmpty() {\n\t\treturn incompleteTokenValue.length === 0;\n\t}\n\n\tfunction inputHasValidValue() {\n\t\treturn saveTransform( incompleteTokenValue ).length > 0;\n\t}\n\n\tfunction updateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions =\n\t\t\tgetMatchingSuggestions( incompleteTokenValue );\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n\t\tsetIsExpanded(\n\t\t\tshouldExpandIfFocuses ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tif (\n\t\t\t\t__experimentalAutoSelectFirstMatch &&\n\t\t\t\tinputHasMinimumChars &&\n\t\t\t\thasMatchingSuggestions\n\t\t\t) {\n\t\t\t\tsetSelectedSuggestionIndex( 0 );\n\t\t\t\tsetSelectedSuggestionScroll( true );\n\t\t\t} else {\n\t\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\t\tsetSelectedSuggestionScroll( false );\n\t\t\t}\n\t\t}\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst message = hasMatchingSuggestions\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t )\n\t\t\t\t: __( 'No results.' );\n\n\t\t\tdebouncedSpeak( message, 'assertive' );\n\t\t}\n\t}\n\n\tfunction renderTokensAndInput() {\n\t\tconst components = value.map( renderToken );\n\t\tcomponents.splice( getIndexOfInput(), 0, renderInput() );\n\n\t\treturn components;\n\t}\n\n\tfunction renderToken(\n\t\ttoken: string | TokenItem,\n\t\tindex: number,\n\t\ttokens: ( string | TokenItem )[]\n\t) {\n\t\tconst _value = getTokenValue( token );\n\t\tconst status = typeof token !== 'string' ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<FlexItem key={ 'token-' + _value }>\n\t\t\t\t<Token\n\t\t\t\t\tvalue={ _value }\n\t\t\t\t\tstatus={ status }\n\t\t\t\t\ttitle={\n\t\t\t\t\t\ttypeof token !== 'string' ? token.title : undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\t\tisBorderless={\n\t\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\t\tisBorderless\n\t\t\t\t\t}\n\t\t\t\t\tonMouseEnter={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseEnter\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonMouseLeave={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseLeave\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\t\tmessages={ messages }\n\t\t\t\t\ttermsCount={ termsCount }\n\t\t\t\t\ttermPosition={ termPosition }\n\t\t\t\t/>\n\t\t\t</FlexItem>\n\t\t);\n\t}\n\n\tfunction renderInput() {\n\t\tconst inputProps = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tdisabled,\n\t\t\tvalue: incompleteTokenValue,\n\t\t\tonBlur,\n\t\t\tisExpanded,\n\t\t\tselectedSuggestionIndex,\n\t\t};\n\n\t\treturn (\n\t\t\t<TokenInput\n\t\t\t\tkey=\"input\"\n\t\t\t\t{ ...inputProps }\n\t\t\t\tonChange={\n\t\t\t\t\t! ( maxLength && value.length >= maxLength )\n\t\t\t\t\t\t? onInputChangeHandler\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tref={ input }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst classes = clsx(\n\t\tclassName,\n\t\t'components-form-token-field__input-container',\n\t\t{\n\t\t\t'is-active': isActive,\n\t\t\t'is-disabled': disabled,\n\t\t}\n\t);\n\n\tlet tokenFieldProps = {\n\t\tclassName: 'components-form-token-field',\n\t\ttabIndex: -1,\n\t};\n\tconst matchingSuggestions = getMatchingSuggestions();\n\n\tif ( ! disabled ) {\n\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\tonKeyDown: withIgnoreIMEEvents( onKeyDown ),\n\t\t\tonKeyPress,\n\t\t\tonFocus: onFocusHandler,\n\t\t} );\n\t}\n\n\t// Disable reason: There is no appropriate role which describes the\n\t// input container intended accessible usability.\n\t// TODO: Refactor click detection to use blur to stop propagation.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<div { ...tokenFieldProps }>\n\t\t\t{ label && (\n\t\t\t\t<StyledLabel\n\t\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</StyledLabel>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tref={ tokensAndInput }\n\t\t\t\tclassName={ classes }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonMouseDown={ onContainerTouched }\n\t\t\t\tonTouchStart={ onContainerTouched }\n\t\t\t>\n\t\t\t\t<TokensAndInputWrapperFlex\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\twrap\n\t\t\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\t\t\thasTokens={ !! value.length }\n\t\t\t\t>\n\t\t\t\t\t{ renderTokensAndInput() }\n\t\t\t\t</TokensAndInputWrapperFlex>\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\tmatch={ saveTransform( incompleteTokenValue ) }\n\t\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\tselectedIndex={ selectedSuggestionIndex }\n\t\t\t\t\t\tscrollIntoView={ selectedSuggestionScroll }\n\t\t\t\t\t\tonHover={ onSuggestionHovered }\n\t\t\t\t\t\tonSelect={ onSuggestionSelected }\n\t\t\t\t\t\t__experimentalRenderItem={ __experimentalRenderItem }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! __nextHasNoMarginBottom && <Spacer marginBottom={ 2 } /> }\n\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t<StyledHelp\n\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t>\n\t\t\t\t\t{ tokenizeOnSpace\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t</StyledHelp>\n\t\t\t) }\n\t\t</div>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n\nexport default FormTokenField;\n"],"mappings":"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","ignoreList":[]}
@@ -44,7 +44,7 @@ export default function Token({
44
44
  });
45
45
  const transformedValue = displayTransform(value);
46
46
  const termPositionAndCount = sprintf(/* translators: 1: term name, 2: term position in a set of terms, 3: total term set count. */
47
- __('%1$s (%2$s of %3$s)'), transformedValue, termPosition, termsCount);
47
+ __('%1$s (%2$d of %3$d)'), transformedValue, termPosition, termsCount);
48
48
  return /*#__PURE__*/_jsxs("span", {
49
49
  className: tokenClasses,
50
50
  onMouseEnter: onMouseEnter,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useInstanceId","__","sprintf","closeSmall","Button","VisuallyHidden","jsx","_jsx","jsxs","_jsxs","noop","Token","value","status","title","displayTransform","isBorderless","disabled","onClickRemove","onMouseEnter","onMouseLeave","messages","termPosition","termsCount","instanceId","tokenClasses","onClick","transformedValue","termPositionAndCount","className","children","id","as","size","icon","undefined","label","remove"],"sources":["@wordpress/components/src/form-token-field/token.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { VisuallyHidden } from '../visually-hidden';\nimport type { TokenProps } from './types';\n\nconst noop = () => {};\n\nexport default function Token( {\n\tvalue,\n\tstatus,\n\ttitle,\n\tdisplayTransform,\n\tisBorderless = false,\n\tdisabled = false,\n\tonClickRemove = noop,\n\tonMouseEnter,\n\tonMouseLeave,\n\tmessages,\n\ttermPosition,\n\ttermsCount,\n}: TokenProps ) {\n\tconst instanceId = useInstanceId( Token );\n\tconst tokenClasses = clsx( 'components-form-token-field__token', {\n\t\t'is-error': 'error' === status,\n\t\t'is-success': 'success' === status,\n\t\t'is-validating': 'validating' === status,\n\t\t'is-borderless': isBorderless,\n\t\t'is-disabled': disabled,\n\t} );\n\n\tconst onClick = () => onClickRemove( { value } );\n\n\tconst transformedValue = displayTransform( value );\n\tconst termPositionAndCount = sprintf(\n\t\t/* translators: 1: term name, 2: term position in a set of terms, 3: total term set count. */\n\t\t__( '%1$s (%2$s of %3$s)' ),\n\t\ttransformedValue,\n\t\ttermPosition,\n\t\ttermsCount\n\t);\n\n\treturn (\n\t\t<span\n\t\t\tclassName={ tokenClasses }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\ttitle={ title }\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName=\"components-form-token-field__token-text\"\n\t\t\t\tid={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t>\n\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t{ termPositionAndCount }\n\t\t\t\t</VisuallyHidden>\n\t\t\t\t<span aria-hidden=\"true\">{ transformedValue }</span>\n\t\t\t</span>\n\n\t\t\t<Button\n\t\t\t\tclassName=\"components-form-token-field__remove-token\"\n\t\t\t\tsize=\"small\"\n\t\t\t\ticon={ closeSmall }\n\t\t\t\tonClick={ ! disabled ? onClick : undefined }\n\t\t\t\t// Disable reason: Even when FormTokenField itself is accessibly disabled, token reset buttons shouldn't be in the tab sequence.\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ messages.remove }\n\t\t\t\taria-describedby={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t/>\n\t\t</span>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,UAAU,QAAQ,kBAAkB;;AAE7C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAC9B,SAASC,cAAc,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGpD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,eAAe,SAASC,KAAKA,CAAE;EAC9BC,KAAK;EACLC,MAAM;EACNC,KAAK;EACLC,gBAAgB;EAChBC,YAAY,GAAG,KAAK;EACpBC,QAAQ,GAAG,KAAK;EAChBC,aAAa,GAAGR,IAAI;EACpBS,YAAY;EACZC,YAAY;EACZC,QAAQ;EACRC,YAAY;EACZC;AACW,CAAC,EAAG;EACf,MAAMC,UAAU,GAAGxB,aAAa,CAAEW,KAAM,CAAC;EACzC,MAAMc,YAAY,GAAG1B,IAAI,CAAE,oCAAoC,EAAE;IAChE,UAAU,EAAE,OAAO,KAAKc,MAAM;IAC9B,YAAY,EAAE,SAAS,KAAKA,MAAM;IAClC,eAAe,EAAE,YAAY,KAAKA,MAAM;IACxC,eAAe,EAAEG,YAAY;IAC7B,aAAa,EAAEC;EAChB,CAAE,CAAC;EAEH,MAAMS,OAAO,GAAGA,CAAA,KAAMR,aAAa,CAAE;IAAEN;EAAM,CAAE,CAAC;EAEhD,MAAMe,gBAAgB,GAAGZ,gBAAgB,CAAEH,KAAM,CAAC;EAClD,MAAMgB,oBAAoB,GAAG1B,OAAO,CACnC;EACAD,EAAE,CAAE,qBAAsB,CAAC,EAC3B0B,gBAAgB,EAChBL,YAAY,EACZC,UACD,CAAC;EAED,oBACCd,KAAA;IACCoB,SAAS,EAAGJ,YAAc;IAC1BN,YAAY,EAAGA,YAAc;IAC7BC,YAAY,EAAGA,YAAc;IAC7BN,KAAK,EAAGA,KAAO;IAAAgB,QAAA,gBAEfrB,KAAA;MACCoB,SAAS,EAAC,yCAAyC;MACnDE,EAAE,EAAG,2CAA4CP,UAAU,EAAK;MAAAM,QAAA,gBAEhEvB,IAAA,CAACF,cAAc;QAAC2B,EAAE,EAAC,MAAM;QAAAF,QAAA,EACtBF;MAAoB,CACP,CAAC,eACjBrB,IAAA;QAAM,eAAY,MAAM;QAAAuB,QAAA,EAAGH;MAAgB,CAAQ,CAAC;IAAA,CAC/C,CAAC,eAEPpB,IAAA,CAACH,MAAM;MACNyB,SAAS,EAAC,2CAA2C;MACrDI,IAAI,EAAC,OAAO;MACZC,IAAI,EAAG/B,UAAY;MACnBuB,OAAO,EAAG,CAAET,QAAQ,GAAGS,OAAO,GAAGS;MACjC;MACA;MAAA;MACAlB,QAAQ,EAAGA,QAAU;MACrBmB,KAAK,EAAGf,QAAQ,CAACgB,MAAQ;MACzB,oBAAmB,2CAA4Cb,UAAU;IAAK,CAC9E,CAAC;EAAA,CACG,CAAC;AAET","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useInstanceId","__","sprintf","closeSmall","Button","VisuallyHidden","jsx","_jsx","jsxs","_jsxs","noop","Token","value","status","title","displayTransform","isBorderless","disabled","onClickRemove","onMouseEnter","onMouseLeave","messages","termPosition","termsCount","instanceId","tokenClasses","onClick","transformedValue","termPositionAndCount","className","children","id","as","size","icon","undefined","label","remove"],"sources":["@wordpress/components/src/form-token-field/token.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { VisuallyHidden } from '../visually-hidden';\nimport type { TokenProps } from './types';\n\nconst noop = () => {};\n\nexport default function Token( {\n\tvalue,\n\tstatus,\n\ttitle,\n\tdisplayTransform,\n\tisBorderless = false,\n\tdisabled = false,\n\tonClickRemove = noop,\n\tonMouseEnter,\n\tonMouseLeave,\n\tmessages,\n\ttermPosition,\n\ttermsCount,\n}: TokenProps ) {\n\tconst instanceId = useInstanceId( Token );\n\tconst tokenClasses = clsx( 'components-form-token-field__token', {\n\t\t'is-error': 'error' === status,\n\t\t'is-success': 'success' === status,\n\t\t'is-validating': 'validating' === status,\n\t\t'is-borderless': isBorderless,\n\t\t'is-disabled': disabled,\n\t} );\n\n\tconst onClick = () => onClickRemove( { value } );\n\n\tconst transformedValue = displayTransform( value );\n\tconst termPositionAndCount = sprintf(\n\t\t/* translators: 1: term name, 2: term position in a set of terms, 3: total term set count. */\n\t\t__( '%1$s (%2$d of %3$d)' ),\n\t\ttransformedValue,\n\t\ttermPosition,\n\t\ttermsCount\n\t);\n\n\treturn (\n\t\t<span\n\t\t\tclassName={ tokenClasses }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\ttitle={ title }\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName=\"components-form-token-field__token-text\"\n\t\t\t\tid={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t>\n\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t{ termPositionAndCount }\n\t\t\t\t</VisuallyHidden>\n\t\t\t\t<span aria-hidden=\"true\">{ transformedValue }</span>\n\t\t\t</span>\n\n\t\t\t<Button\n\t\t\t\tclassName=\"components-form-token-field__remove-token\"\n\t\t\t\tsize=\"small\"\n\t\t\t\ticon={ closeSmall }\n\t\t\t\tonClick={ ! disabled ? onClick : undefined }\n\t\t\t\t// Disable reason: Even when FormTokenField itself is accessibly disabled, token reset buttons shouldn't be in the tab sequence.\n\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ messages.remove }\n\t\t\t\taria-describedby={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t/>\n\t\t</span>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,UAAU,QAAQ,kBAAkB;;AAE7C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAC9B,SAASC,cAAc,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGpD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,eAAe,SAASC,KAAKA,CAAE;EAC9BC,KAAK;EACLC,MAAM;EACNC,KAAK;EACLC,gBAAgB;EAChBC,YAAY,GAAG,KAAK;EACpBC,QAAQ,GAAG,KAAK;EAChBC,aAAa,GAAGR,IAAI;EACpBS,YAAY;EACZC,YAAY;EACZC,QAAQ;EACRC,YAAY;EACZC;AACW,CAAC,EAAG;EACf,MAAMC,UAAU,GAAGxB,aAAa,CAAEW,KAAM,CAAC;EACzC,MAAMc,YAAY,GAAG1B,IAAI,CAAE,oCAAoC,EAAE;IAChE,UAAU,EAAE,OAAO,KAAKc,MAAM;IAC9B,YAAY,EAAE,SAAS,KAAKA,MAAM;IAClC,eAAe,EAAE,YAAY,KAAKA,MAAM;IACxC,eAAe,EAAEG,YAAY;IAC7B,aAAa,EAAEC;EAChB,CAAE,CAAC;EAEH,MAAMS,OAAO,GAAGA,CAAA,KAAMR,aAAa,CAAE;IAAEN;EAAM,CAAE,CAAC;EAEhD,MAAMe,gBAAgB,GAAGZ,gBAAgB,CAAEH,KAAM,CAAC;EAClD,MAAMgB,oBAAoB,GAAG1B,OAAO,CACnC;EACAD,EAAE,CAAE,qBAAsB,CAAC,EAC3B0B,gBAAgB,EAChBL,YAAY,EACZC,UACD,CAAC;EAED,oBACCd,KAAA;IACCoB,SAAS,EAAGJ,YAAc;IAC1BN,YAAY,EAAGA,YAAc;IAC7BC,YAAY,EAAGA,YAAc;IAC7BN,KAAK,EAAGA,KAAO;IAAAgB,QAAA,gBAEfrB,KAAA;MACCoB,SAAS,EAAC,yCAAyC;MACnDE,EAAE,EAAG,2CAA4CP,UAAU,EAAK;MAAAM,QAAA,gBAEhEvB,IAAA,CAACF,cAAc;QAAC2B,EAAE,EAAC,MAAM;QAAAF,QAAA,EACtBF;MAAoB,CACP,CAAC,eACjBrB,IAAA;QAAM,eAAY,MAAM;QAAAuB,QAAA,EAAGH;MAAgB,CAAQ,CAAC;IAAA,CAC/C,CAAC,eAEPpB,IAAA,CAACH,MAAM;MACNyB,SAAS,EAAC,2CAA2C;MACrDI,IAAI,EAAC,OAAO;MACZC,IAAI,EAAG/B,UAAY;MACnBuB,OAAO,EAAG,CAAET,QAAQ,GAAGS,OAAO,GAAGS;MACjC;MACA;MAAA;MACAlB,QAAQ,EAAGA,QAAU;MACrBmB,KAAK,EAAGf,QAAQ,CAACgB,MAAQ;MACzB,oBAAmB,2CAA4Cb,UAAU;IAAK,CAC9E,CAAC;EAAA,CACG,CAAC;AAET","ignoreList":[]}
@@ -18,6 +18,7 @@ default as __experimentalBoxControl, default as BoxControl, applyValueToSides as
18
18
  export { default as Button } from './button';
19
19
  export { default as ButtonGroup } from './button-group';
20
20
  export { Card, CardBody, CardDivider, CardFooter, CardHeader, CardMedia } from './card';
21
+ export { DateCalendar, DateRangeCalendar, TZDate } from './calendar';
21
22
  export { default as CheckboxControl } from './checkbox-control';
22
23
  export { default as ClipboardButton } from './clipboard-button';
23
24
  export { default as __experimentalPaletteEdit } from './palette-edit';