@wordpress/components 19.17.0 → 20.0.2-next.957ca95e4c.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 (916) hide show
  1. package/CHANGELOG.md +96 -1
  2. package/CONTRIBUTING.md +12 -12
  3. package/build/alignment-matrix-control/index.js +1 -1
  4. package/build/alignment-matrix-control/index.js.map +1 -1
  5. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +13 -13
  6. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  7. package/build/angle-picker-control/index.js +3 -0
  8. package/build/angle-picker-control/index.js.map +1 -1
  9. package/build/angle-picker-control/styles/angle-picker-control-styles.js +14 -4
  10. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  11. package/build/autocomplete/get-default-use-items.js +7 -1
  12. package/build/autocomplete/get-default-use-items.js.map +1 -1
  13. package/build/autocomplete/index.js +12 -12
  14. package/build/autocomplete/index.js.map +1 -1
  15. package/build/base-control/styles/base-control-styles.js +8 -8
  16. package/build/base-control/styles/base-control-styles.js.map +1 -1
  17. package/build/base-field/styles.js +5 -5
  18. package/build/base-field/styles.js.map +1 -1
  19. package/build/box-control/styles/box-control-visualizer-styles.js +8 -8
  20. package/build/box-control/styles/box-control-visualizer-styles.js.map +1 -1
  21. package/build/card/card/component.js +6 -11
  22. package/build/card/card/component.js.map +1 -1
  23. package/build/card/card/hook.js +0 -10
  24. package/build/card/card/hook.js.map +1 -1
  25. package/build/card/card/index.js.map +1 -1
  26. package/build/card/card-body/component.js +7 -8
  27. package/build/card/card-body/component.js.map +1 -1
  28. package/build/card/card-body/hook.js +0 -4
  29. package/build/card/card-body/hook.js.map +1 -1
  30. package/build/card/card-body/index.js.map +1 -1
  31. package/build/card/card-divider/component.js +7 -8
  32. package/build/card/card-divider/component.js.map +1 -1
  33. package/build/card/card-divider/hook.js +0 -4
  34. package/build/card/card-divider/hook.js.map +1 -1
  35. package/build/card/card-divider/index.js.map +1 -1
  36. package/build/card/card-footer/component.js +7 -8
  37. package/build/card/card-footer/component.js.map +1 -1
  38. package/build/card/card-footer/hook.js +0 -4
  39. package/build/card/card-footer/hook.js.map +1 -1
  40. package/build/card/card-footer/index.js.map +1 -1
  41. package/build/card/card-header/component.js +7 -8
  42. package/build/card/card-header/component.js.map +1 -1
  43. package/build/card/card-header/hook.js +0 -4
  44. package/build/card/card-header/hook.js.map +1 -1
  45. package/build/card/card-header/index.js.map +1 -1
  46. package/build/card/card-media/component.js +7 -7
  47. package/build/card/card-media/component.js.map +1 -1
  48. package/build/card/card-media/hook.js +0 -4
  49. package/build/card/card-media/hook.js.map +1 -1
  50. package/build/card/card-media/index.js.map +1 -1
  51. package/build/card/context.js.map +1 -1
  52. package/build/card/index.js.map +1 -1
  53. package/build/card/styles.js +17 -17
  54. package/build/card/styles.js.map +1 -1
  55. package/build/clipboard-button/index.js +16 -1
  56. package/build/clipboard-button/index.js.map +1 -1
  57. package/build/color-list-picker/index.js +16 -5
  58. package/build/color-list-picker/index.js.map +1 -1
  59. package/build/color-palette/index.js +28 -14
  60. package/build/color-palette/index.js.map +1 -1
  61. package/build/color-palette/index.native.js +3 -3
  62. package/build/color-palette/index.native.js.map +1 -1
  63. package/build/combobox-control/index.js +7 -4
  64. package/build/combobox-control/index.js.map +1 -1
  65. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  66. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -0
  67. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +34 -41
  68. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -0
  69. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -1
  70. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -0
  71. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  72. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -0
  73. package/build/custom-gradient-picker/index.js +30 -4
  74. package/build/custom-gradient-picker/index.js.map +1 -1
  75. package/build/custom-select-control/index.js +21 -11
  76. package/build/custom-select-control/index.js.map +1 -1
  77. package/build/custom-select-control/styles.js +34 -0
  78. package/build/custom-select-control/styles.js.map +1 -0
  79. package/build/date-time/constants.js +9 -0
  80. package/build/date-time/constants.js.map +1 -0
  81. package/build/date-time/date/index.js +196 -188
  82. package/build/date-time/date/index.js.map +1 -1
  83. package/build/date-time/date/styles.js +68 -39
  84. package/build/date-time/date/styles.js.map +1 -1
  85. package/build/date-time/date-time/index.js +3 -2
  86. package/build/date-time/date-time/index.js.map +1 -1
  87. package/build/date-time/date-time/styles.js +19 -5
  88. package/build/date-time/date-time/styles.js.map +1 -1
  89. package/build/date-time/time/index.js +22 -17
  90. package/build/date-time/time/index.js.map +1 -1
  91. package/build/date-time/time/styles.js +12 -12
  92. package/build/date-time/time/styles.js.map +1 -1
  93. package/build/date-time/utils.js +27 -0
  94. package/build/date-time/utils.js.map +1 -0
  95. package/build/dimension-control/index.js +2 -6
  96. package/build/dimension-control/index.js.map +1 -1
  97. package/build/disabled/index.js +28 -11
  98. package/build/disabled/index.js.map +1 -1
  99. package/build/disabled/styles/disabled-styles.js +3 -3
  100. package/build/disabled/styles/disabled-styles.js.map +1 -1
  101. package/build/{swatch → disabled}/types.js +0 -0
  102. package/build/{swatch → disabled}/types.js.map +0 -0
  103. package/build/drop-zone/index.js +2 -4
  104. package/build/drop-zone/index.js.map +1 -1
  105. package/build/dropdown/index.js +5 -6
  106. package/build/dropdown/index.js.map +1 -1
  107. package/build/dropdown-menu/index.js +1 -3
  108. package/build/dropdown-menu/index.js.map +1 -1
  109. package/build/dropdown-menu/index.native.js +0 -17
  110. package/build/dropdown-menu/index.native.js.map +1 -1
  111. package/build/duotone-picker/custom-duotone-bar.js +2 -2
  112. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  113. package/build/duotone-picker/duotone-picker.js +9 -1
  114. package/build/duotone-picker/duotone-picker.js.map +1 -1
  115. package/build/duotone-picker/duotone-swatch.js +13 -3
  116. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  117. package/build/focal-point-picker/controls.js +4 -4
  118. package/build/focal-point-picker/controls.js.map +1 -1
  119. package/build/focal-point-picker/focal-point.js +4 -6
  120. package/build/focal-point-picker/focal-point.js.map +1 -1
  121. package/build/focal-point-picker/grid.js +6 -35
  122. package/build/focal-point-picker/grid.js.map +1 -1
  123. package/build/focal-point-picker/index.js +164 -336
  124. package/build/focal-point-picker/index.js.map +1 -1
  125. package/build/focal-point-picker/media.js +4 -34
  126. package/build/focal-point-picker/media.js.map +1 -1
  127. package/build/focal-point-picker/styles/focal-point-picker-style.js +14 -14
  128. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  129. package/build/focal-point-picker/styles/focal-point-style.js +4 -4
  130. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  131. package/build/focal-point-picker/utils.js +2 -6
  132. package/build/focal-point-picker/utils.js.map +1 -1
  133. package/build/focusable-iframe/index.js +6 -0
  134. package/build/focusable-iframe/index.js.map +1 -1
  135. package/build/font-size-picker/index.js +43 -14
  136. package/build/font-size-picker/index.js.map +1 -1
  137. package/build/font-size-picker/utils.js +32 -22
  138. package/build/font-size-picker/utils.js.map +1 -1
  139. package/build/form-token-field/index.js +29 -20
  140. package/build/form-token-field/index.js.map +1 -1
  141. package/build/gradient-picker/index.js +25 -2
  142. package/build/gradient-picker/index.js.map +1 -1
  143. package/build/guide/index.js +13 -9
  144. package/build/guide/index.js.map +1 -1
  145. package/build/guide/page-control.js +3 -7
  146. package/build/guide/page-control.js.map +1 -1
  147. package/build/higher-order/with-constrained-tabbing/index.js +1 -1
  148. package/build/higher-order/with-constrained-tabbing/index.js.map +1 -1
  149. package/build/higher-order/with-spoken-messages/index.js +2 -0
  150. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  151. package/build/isolated-event-container/index.js +4 -0
  152. package/build/isolated-event-container/index.js.map +1 -1
  153. package/build/item-group/styles.js +10 -10
  154. package/build/item-group/styles.js.map +1 -1
  155. package/build/mobile/bottom-sheet/index.native.js +3 -6
  156. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  157. package/build/mobile/global-styles-context/utils.native.js +4 -2
  158. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  159. package/build/mobile/image/index.native.js +6 -26
  160. package/build/mobile/image/index.native.js.map +1 -1
  161. package/build/mobile/picker/index.android.js +3 -3
  162. package/build/mobile/picker/index.android.js.map +1 -1
  163. package/build/modal/index.js +1 -3
  164. package/build/modal/index.js.map +1 -1
  165. package/build/navigable-container/container.js +9 -8
  166. package/build/navigable-container/container.js.map +1 -1
  167. package/build/navigable-container/menu.js +3 -9
  168. package/build/navigable-container/menu.js.map +1 -1
  169. package/build/navigation/menu/menu-title-search.js +1 -3
  170. package/build/navigation/menu/menu-title-search.js.map +1 -1
  171. package/build/navigator/navigator-back-button/hook.js +0 -4
  172. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  173. package/build/navigator/navigator-button/hook.js +0 -4
  174. package/build/navigator/navigator-button/hook.js.map +1 -1
  175. package/build/notice/list.js +10 -6
  176. package/build/notice/list.js.map +1 -1
  177. package/build/palette-edit/index.js +7 -2
  178. package/build/palette-edit/index.js.map +1 -1
  179. package/build/palette-edit/styles.js +10 -10
  180. package/build/palette-edit/styles.js.map +1 -1
  181. package/build/popover/index.js +93 -110
  182. package/build/popover/index.js.map +1 -1
  183. package/build/popover/utils.js +178 -0
  184. package/build/popover/utils.js.map +1 -0
  185. package/build/range-control/index.js +3 -0
  186. package/build/range-control/index.js.map +1 -1
  187. package/build/range-control/styles/range-control-styles.js +43 -37
  188. package/build/range-control/styles/range-control-styles.js.map +1 -1
  189. package/build/select-control/chevron-down.js +30 -0
  190. package/build/select-control/chevron-down.js.map +1 -0
  191. package/build/select-control/index.js +7 -7
  192. package/build/select-control/index.js.map +1 -1
  193. package/build/select-control/styles/select-control-styles.js +30 -15
  194. package/build/select-control/styles/select-control-styles.js.map +1 -1
  195. package/build/snackbar/list.js +5 -3
  196. package/build/snackbar/list.js.map +1 -1
  197. package/build/spinner/index.js +2 -0
  198. package/build/spinner/index.js.map +1 -1
  199. package/build/text/styles.js +7 -7
  200. package/build/text/styles.js.map +1 -1
  201. package/build/text-highlight/index.js +4 -4
  202. package/build/text-highlight/index.js.map +1 -1
  203. package/build/toggle-group-control/toggle-group-control/component.js +17 -9
  204. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  205. package/build/toggle-group-control/toggle-group-control/styles.js +24 -7
  206. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  207. package/build/toggle-group-control/toggle-group-control-option/component.js +15 -5
  208. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  209. package/build/toggle-group-control/toggle-group-control-option-base/component.js +5 -1
  210. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  211. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +20 -7
  212. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  213. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +26 -7
  214. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  215. package/build/tools-panel/styles.js +11 -11
  216. package/build/tools-panel/styles.js.map +1 -1
  217. package/build/tooltip/index.js +1 -7
  218. package/build/tooltip/index.js.map +1 -1
  219. package/build/tree-grid/index.js +4 -10
  220. package/build/tree-grid/index.js.map +1 -1
  221. package/build/ui/context/context-connect.js +1 -3
  222. package/build/ui/context/context-connect.js.map +1 -1
  223. package/build/unit-control/index.js +2 -3
  224. package/build/unit-control/index.js.map +1 -1
  225. package/build/utils/colors-values.js +52 -142
  226. package/build/utils/colors-values.js.map +1 -1
  227. package/build/utils/config-values.js +1 -1
  228. package/build/utils/config-values.js.map +1 -1
  229. package/build/utils/input/input-control.js +1 -1
  230. package/build/utils/input/input-control.js.map +1 -1
  231. package/build/utils/rtl.js +6 -5
  232. package/build/utils/rtl.js.map +1 -1
  233. package/build/utils/strings.js +63 -0
  234. package/build/utils/strings.js.map +1 -0
  235. package/build-module/alignment-matrix-control/index.js +1 -1
  236. package/build-module/alignment-matrix-control/index.js.map +1 -1
  237. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +13 -13
  238. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  239. package/build-module/angle-picker-control/index.js +3 -0
  240. package/build-module/angle-picker-control/index.js.map +1 -1
  241. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +13 -4
  242. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  243. package/build-module/autocomplete/get-default-use-items.js +6 -1
  244. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  245. package/build-module/autocomplete/index.js +11 -11
  246. package/build-module/autocomplete/index.js.map +1 -1
  247. package/build-module/base-control/styles/base-control-styles.js +8 -8
  248. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  249. package/build-module/base-field/styles.js +5 -5
  250. package/build-module/base-field/styles.js.map +1 -1
  251. package/build-module/box-control/styles/box-control-visualizer-styles.js +8 -8
  252. package/build-module/box-control/styles/box-control-visualizer-styles.js.map +1 -1
  253. package/build-module/card/card/component.js +5 -10
  254. package/build-module/card/card/component.js.map +1 -1
  255. package/build-module/card/card/hook.js +0 -9
  256. package/build-module/card/card/hook.js.map +1 -1
  257. package/build-module/card/card/index.js.map +1 -1
  258. package/build-module/card/card-body/component.js +7 -8
  259. package/build-module/card/card-body/component.js.map +1 -1
  260. package/build-module/card/card-body/hook.js +0 -4
  261. package/build-module/card/card-body/hook.js.map +1 -1
  262. package/build-module/card/card-body/index.js.map +1 -1
  263. package/build-module/card/card-divider/component.js +7 -8
  264. package/build-module/card/card-divider/component.js.map +1 -1
  265. package/build-module/card/card-divider/hook.js +0 -4
  266. package/build-module/card/card-divider/hook.js.map +1 -1
  267. package/build-module/card/card-divider/index.js.map +1 -1
  268. package/build-module/card/card-footer/component.js +7 -8
  269. package/build-module/card/card-footer/component.js.map +1 -1
  270. package/build-module/card/card-footer/hook.js +0 -4
  271. package/build-module/card/card-footer/hook.js.map +1 -1
  272. package/build-module/card/card-footer/index.js.map +1 -1
  273. package/build-module/card/card-header/component.js +7 -8
  274. package/build-module/card/card-header/component.js.map +1 -1
  275. package/build-module/card/card-header/hook.js +0 -4
  276. package/build-module/card/card-header/hook.js.map +1 -1
  277. package/build-module/card/card-header/index.js.map +1 -1
  278. package/build-module/card/card-media/component.js +7 -7
  279. package/build-module/card/card-media/component.js.map +1 -1
  280. package/build-module/card/card-media/hook.js +0 -4
  281. package/build-module/card/card-media/hook.js.map +1 -1
  282. package/build-module/card/card-media/index.js.map +1 -1
  283. package/build-module/card/context.js.map +1 -1
  284. package/build-module/card/index.js.map +1 -1
  285. package/build-module/card/styles.js +17 -17
  286. package/build-module/card/styles.js.map +1 -1
  287. package/build-module/clipboard-button/index.js +17 -1
  288. package/build-module/clipboard-button/index.js.map +1 -1
  289. package/build-module/color-list-picker/index.js +13 -5
  290. package/build-module/color-list-picker/index.js.map +1 -1
  291. package/build-module/color-palette/index.js +27 -13
  292. package/build-module/color-palette/index.js.map +1 -1
  293. package/build-module/color-palette/index.native.js +4 -4
  294. package/build-module/color-palette/index.native.js.map +1 -1
  295. package/build-module/combobox-control/index.js +6 -3
  296. package/build-module/combobox-control/index.js.map +1 -1
  297. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  298. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -0
  299. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +34 -41
  300. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -0
  301. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -1
  302. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -0
  303. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  304. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -0
  305. package/build-module/custom-gradient-picker/index.js +26 -3
  306. package/build-module/custom-gradient-picker/index.js.map +1 -1
  307. package/build-module/custom-select-control/index.js +20 -12
  308. package/build-module/custom-select-control/index.js.map +1 -1
  309. package/build-module/custom-select-control/styles.js +22 -0
  310. package/build-module/custom-select-control/styles.js.map +1 -0
  311. package/build-module/date-time/constants.js +2 -0
  312. package/build-module/date-time/constants.js.map +1 -0
  313. package/build-module/date-time/date/index.js +199 -186
  314. package/build-module/date-time/date/index.js.map +1 -1
  315. package/build-module/date-time/date/styles.js +61 -36
  316. package/build-module/date-time/date/styles.js.map +1 -1
  317. package/build-module/date-time/date-time/index.js +4 -3
  318. package/build-module/date-time/date-time/index.js.map +1 -1
  319. package/build-module/date-time/date-time/styles.js +20 -1
  320. package/build-module/date-time/date-time/styles.js.map +1 -1
  321. package/build-module/date-time/time/index.js +20 -16
  322. package/build-module/date-time/time/index.js.map +1 -1
  323. package/build-module/date-time/time/styles.js +12 -12
  324. package/build-module/date-time/time/styles.js.map +1 -1
  325. package/build-module/date-time/utils.js +19 -0
  326. package/build-module/date-time/utils.js.map +1 -0
  327. package/build-module/dimension-control/index.js +1 -5
  328. package/build-module/dimension-control/index.js.map +1 -1
  329. package/build-module/disabled/index.js +28 -11
  330. package/build-module/disabled/index.js.map +1 -1
  331. package/build-module/disabled/styles/disabled-styles.js +3 -3
  332. package/build-module/disabled/styles/disabled-styles.js.map +1 -1
  333. package/build-module/{swatch → disabled}/types.js +0 -0
  334. package/build-module/{swatch → disabled}/types.js.map +0 -0
  335. package/build-module/drop-zone/index.js +2 -3
  336. package/build-module/drop-zone/index.js.map +1 -1
  337. package/build-module/dropdown/index.js +5 -6
  338. package/build-module/dropdown/index.js.map +1 -1
  339. package/build-module/dropdown-menu/index.js +1 -2
  340. package/build-module/dropdown-menu/index.js.map +1 -1
  341. package/build-module/dropdown-menu/index.native.js +0 -16
  342. package/build-module/dropdown-menu/index.native.js.map +1 -1
  343. package/build-module/duotone-picker/custom-duotone-bar.js +1 -1
  344. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  345. package/build-module/duotone-picker/duotone-picker.js +7 -1
  346. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  347. package/build-module/duotone-picker/duotone-swatch.js +11 -3
  348. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  349. package/build-module/focal-point-picker/controls.js +4 -4
  350. package/build-module/focal-point-picker/controls.js.map +1 -1
  351. package/build-module/focal-point-picker/focal-point.js +4 -6
  352. package/build-module/focal-point-picker/focal-point.js.map +1 -1
  353. package/build-module/focal-point-picker/grid.js +6 -34
  354. package/build-module/focal-point-picker/grid.js.map +1 -1
  355. package/build-module/focal-point-picker/index.js +162 -330
  356. package/build-module/focal-point-picker/index.js.map +1 -1
  357. package/build-module/focal-point-picker/media.js +4 -36
  358. package/build-module/focal-point-picker/media.js.map +1 -1
  359. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +13 -14
  360. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  361. package/build-module/focal-point-picker/styles/focal-point-style.js +4 -4
  362. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  363. package/build-module/focal-point-picker/utils.js +2 -6
  364. package/build-module/focal-point-picker/utils.js.map +1 -1
  365. package/build-module/focusable-iframe/index.js +6 -0
  366. package/build-module/focusable-iframe/index.js.map +1 -1
  367. package/build-module/font-size-picker/index.js +39 -14
  368. package/build-module/font-size-picker/index.js.map +1 -1
  369. package/build-module/font-size-picker/utils.js +31 -23
  370. package/build-module/font-size-picker/utils.js.map +1 -1
  371. package/build-module/form-token-field/index.js +30 -20
  372. package/build-module/form-token-field/index.js.map +1 -1
  373. package/build-module/gradient-picker/index.js +23 -2
  374. package/build-module/gradient-picker/index.js.map +1 -1
  375. package/build-module/guide/index.js +13 -8
  376. package/build-module/guide/index.js.map +1 -1
  377. package/build-module/guide/page-control.js +3 -6
  378. package/build-module/guide/page-control.js.map +1 -1
  379. package/build-module/higher-order/with-constrained-tabbing/index.js +1 -1
  380. package/build-module/higher-order/with-constrained-tabbing/index.js.map +1 -1
  381. package/build-module/higher-order/with-spoken-messages/index.js +2 -0
  382. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  383. package/build-module/isolated-event-container/index.js +3 -0
  384. package/build-module/isolated-event-container/index.js.map +1 -1
  385. package/build-module/item-group/styles.js +10 -10
  386. package/build-module/item-group/styles.js.map +1 -1
  387. package/build-module/mobile/bottom-sheet/index.native.js +3 -5
  388. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  389. package/build-module/mobile/global-styles-context/utils.native.js +3 -2
  390. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  391. package/build-module/mobile/image/index.native.js +8 -28
  392. package/build-module/mobile/image/index.native.js.map +1 -1
  393. package/build-module/mobile/picker/index.android.js +3 -3
  394. package/build-module/mobile/picker/index.android.js.map +1 -1
  395. package/build-module/modal/index.js +1 -2
  396. package/build-module/modal/index.js.map +1 -1
  397. package/build-module/navigable-container/container.js +9 -7
  398. package/build-module/navigable-container/container.js.map +1 -1
  399. package/build-module/navigable-container/menu.js +3 -8
  400. package/build-module/navigable-container/menu.js.map +1 -1
  401. package/build-module/navigation/menu/menu-title-search.js +1 -2
  402. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  403. package/build-module/navigator/navigator-back-button/hook.js +0 -4
  404. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  405. package/build-module/navigator/navigator-button/hook.js +0 -4
  406. package/build-module/navigator/navigator-button/hook.js.map +1 -1
  407. package/build-module/notice/list.js +10 -5
  408. package/build-module/notice/list.js.map +1 -1
  409. package/build-module/palette-edit/index.js +7 -2
  410. package/build-module/palette-edit/index.js.map +1 -1
  411. package/build-module/palette-edit/styles.js +10 -10
  412. package/build-module/palette-edit/styles.js.map +1 -1
  413. package/build-module/popover/index.js +93 -111
  414. package/build-module/popover/index.js.map +1 -1
  415. package/build-module/popover/utils.js +164 -0
  416. package/build-module/popover/utils.js.map +1 -0
  417. package/build-module/range-control/index.js +3 -0
  418. package/build-module/range-control/index.js.map +1 -1
  419. package/build-module/range-control/styles/range-control-styles.js +43 -37
  420. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  421. package/build-module/select-control/chevron-down.js +21 -0
  422. package/build-module/select-control/chevron-down.js.map +1 -0
  423. package/build-module/select-control/index.js +7 -7
  424. package/build-module/select-control/index.js.map +1 -1
  425. package/build-module/select-control/styles/select-control-styles.js +24 -13
  426. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  427. package/build-module/snackbar/list.js +5 -2
  428. package/build-module/snackbar/list.js.map +1 -1
  429. package/build-module/spinner/index.js +2 -0
  430. package/build-module/spinner/index.js.map +1 -1
  431. package/build-module/text/styles.js +7 -7
  432. package/build-module/text/styles.js.map +1 -1
  433. package/build-module/text-highlight/index.js +2 -5
  434. package/build-module/text-highlight/index.js.map +1 -1
  435. package/build-module/toggle-group-control/toggle-group-control/component.js +16 -8
  436. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  437. package/build-module/toggle-group-control/toggle-group-control/styles.js +20 -5
  438. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  439. package/build-module/toggle-group-control/toggle-group-control-option/component.js +17 -3
  440. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  441. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +5 -1
  442. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  443. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +16 -6
  444. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  445. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +27 -5
  446. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  447. package/build-module/tools-panel/styles.js +11 -11
  448. package/build-module/tools-panel/styles.js.map +1 -1
  449. package/build-module/tooltip/index.js +1 -6
  450. package/build-module/tooltip/index.js.map +1 -1
  451. package/build-module/tree-grid/index.js +4 -9
  452. package/build-module/tree-grid/index.js.map +1 -1
  453. package/build-module/ui/context/context-connect.js +1 -2
  454. package/build-module/ui/context/context-connect.js.map +1 -1
  455. package/build-module/unit-control/index.js +2 -2
  456. package/build-module/unit-control/index.js.map +1 -1
  457. package/build-module/utils/colors-values.js +52 -141
  458. package/build-module/utils/colors-values.js.map +1 -1
  459. package/build-module/utils/config-values.js +1 -1
  460. package/build-module/utils/config-values.js.map +1 -1
  461. package/build-module/utils/input/input-control.js +1 -1
  462. package/build-module/utils/input/input-control.js.map +1 -1
  463. package/build-module/utils/rtl.js +6 -4
  464. package/build-module/utils/rtl.js.map +1 -1
  465. package/build-module/utils/strings.js +48 -0
  466. package/build-module/utils/strings.js.map +1 -0
  467. package/build-style/style-rtl.css +202 -1272
  468. package/build-style/style.css +202 -1275
  469. package/build-types/animation/index.d.ts +2 -0
  470. package/build-types/{flyout → animation}/index.d.ts.map +1 -1
  471. package/build-types/card/card/component.d.ts +3 -3
  472. package/build-types/card/card/component.d.ts.map +1 -1
  473. package/build-types/card/card/hook.d.ts +7 -2
  474. package/build-types/card/card/hook.d.ts.map +1 -1
  475. package/build-types/card/card/index.d.ts +2 -2
  476. package/build-types/card/card/index.d.ts.map +1 -1
  477. package/build-types/card/card-body/component.d.ts +3 -3
  478. package/build-types/card/card-body/component.d.ts.map +1 -1
  479. package/build-types/card/card-body/hook.d.ts +5 -2
  480. package/build-types/card/card-body/hook.d.ts.map +1 -1
  481. package/build-types/card/card-body/index.d.ts +2 -2
  482. package/build-types/card/card-body/index.d.ts.map +1 -1
  483. package/build-types/card/card-divider/component.d.ts +3 -3
  484. package/build-types/card/card-divider/component.d.ts.map +1 -1
  485. package/build-types/card/card-divider/hook.d.ts +5 -2
  486. package/build-types/card/card-divider/hook.d.ts.map +1 -1
  487. package/build-types/card/card-divider/index.d.ts +2 -2
  488. package/build-types/card/card-divider/index.d.ts.map +1 -1
  489. package/build-types/card/card-footer/component.d.ts +3 -3
  490. package/build-types/card/card-footer/component.d.ts.map +1 -1
  491. package/build-types/card/card-footer/hook.d.ts +5 -2
  492. package/build-types/card/card-footer/hook.d.ts.map +1 -1
  493. package/build-types/card/card-footer/index.d.ts +2 -2
  494. package/build-types/card/card-footer/index.d.ts.map +1 -1
  495. package/build-types/card/card-header/component.d.ts +3 -3
  496. package/build-types/card/card-header/component.d.ts.map +1 -1
  497. package/build-types/card/card-header/hook.d.ts +5 -2
  498. package/build-types/card/card-header/hook.d.ts.map +1 -1
  499. package/build-types/card/card-header/index.d.ts +2 -2
  500. package/build-types/card/card-header/index.d.ts.map +1 -1
  501. package/build-types/card/card-media/component.d.ts +3 -4
  502. package/build-types/card/card-media/component.d.ts.map +1 -1
  503. package/build-types/card/card-media/hook.d.ts +6 -5
  504. package/build-types/card/card-media/hook.d.ts.map +1 -1
  505. package/build-types/card/card-media/index.d.ts +2 -2
  506. package/build-types/card/card-media/index.d.ts.map +1 -1
  507. package/build-types/card/context.d.ts +3 -2
  508. package/build-types/card/context.d.ts.map +1 -1
  509. package/build-types/card/index.d.ts +6 -6
  510. package/build-types/card/index.d.ts.map +1 -1
  511. package/build-types/card/stories/index.d.ts +12 -0
  512. package/build-types/card/stories/index.d.ts.map +1 -0
  513. package/build-types/card/styles.d.ts +20 -22
  514. package/build-types/card/styles.d.ts.map +1 -1
  515. package/build-types/card/test/index.d.ts +2 -0
  516. package/build-types/{flyout/flyout → card/test}/index.d.ts.map +1 -1
  517. package/build-types/card/types.d.ts +7 -1
  518. package/build-types/card/types.d.ts.map +1 -1
  519. package/build-types/clipboard-button/index.d.ts +16 -0
  520. package/build-types/clipboard-button/index.d.ts.map +1 -0
  521. package/build-types/color-palette/index.d.ts +2 -1
  522. package/build-types/color-palette/index.d.ts.map +1 -1
  523. package/build-types/color-picker/styles.d.ts +2 -2
  524. package/build-types/composite/index.d.ts +2 -0
  525. package/build-types/composite/index.d.ts.map +1 -0
  526. package/build-types/date-time/constants.d.ts +2 -0
  527. package/build-types/date-time/constants.d.ts.map +1 -0
  528. package/build-types/date-time/date/index.d.ts +4 -2
  529. package/build-types/date-time/date/index.d.ts.map +1 -1
  530. package/build-types/date-time/date/styles.d.ts +26 -8
  531. package/build-types/date-time/date/styles.d.ts.map +1 -1
  532. package/build-types/date-time/date/test/index.d.ts +1 -1
  533. package/build-types/date-time/date/test/index.d.ts.map +1 -1
  534. package/build-types/date-time/date-time/styles.d.ts +13 -0
  535. package/build-types/date-time/date-time/styles.d.ts.map +1 -1
  536. package/build-types/date-time/time/index.d.ts.map +1 -1
  537. package/build-types/date-time/time/styles.d.ts.map +1 -1
  538. package/build-types/date-time/utils.d.ts +8 -0
  539. package/build-types/date-time/utils.d.ts.map +1 -0
  540. package/build-types/disabled/index.d.ts +35 -28
  541. package/build-types/disabled/index.d.ts.map +1 -1
  542. package/build-types/disabled/stories/index.d.ts +13 -0
  543. package/build-types/disabled/stories/index.d.ts.map +1 -0
  544. package/build-types/disabled/styles/disabled-styles.d.ts +2 -1
  545. package/build-types/disabled/styles/disabled-styles.d.ts.map +1 -1
  546. package/build-types/disabled/test/index.d.ts +2 -0
  547. package/build-types/disabled/test/index.d.ts.map +1 -0
  548. package/build-types/disabled/types.d.ts +14 -0
  549. package/build-types/disabled/types.d.ts.map +1 -0
  550. package/build-types/disclosure/index.d.ts +2 -0
  551. package/build-types/disclosure/index.d.ts.map +1 -0
  552. package/build-types/dropdown/index.d.ts.map +1 -1
  553. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  554. package/build-types/focusable-iframe/index.d.ts +8 -0
  555. package/build-types/focusable-iframe/index.d.ts.map +1 -0
  556. package/build-types/form-token-field/index.d.ts.map +1 -1
  557. package/build-types/form-token-field/stories/index.d.ts +1 -0
  558. package/build-types/form-token-field/stories/index.d.ts.map +1 -1
  559. package/build-types/form-token-field/test/index.d.ts +2 -0
  560. package/build-types/form-token-field/test/index.d.ts.map +1 -0
  561. package/build-types/form-token-field/types.d.ts +7 -0
  562. package/build-types/form-token-field/types.d.ts.map +1 -1
  563. package/build-types/higher-order/with-constrained-tabbing/index.d.ts +3 -0
  564. package/build-types/higher-order/with-constrained-tabbing/index.d.ts.map +1 -0
  565. package/build-types/higher-order/with-spoken-messages/index.d.ts +4 -0
  566. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -0
  567. package/build-types/isolated-event-container/index.d.ts +3 -0
  568. package/build-types/isolated-event-container/index.d.ts.map +1 -0
  569. package/build-types/mobile/inserter-button/sparkles.d.ts +3 -0
  570. package/build-types/mobile/inserter-button/sparkles.d.ts.map +1 -0
  571. package/build-types/navigable-container/menu.d.ts.map +1 -1
  572. package/build-types/navigator/navigator-back-button/hook.d.ts +0 -3
  573. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  574. package/build-types/navigator/navigator-button/hook.d.ts +0 -3
  575. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  576. package/build-types/placeholder/test/index.d.ts +2 -0
  577. package/build-types/placeholder/test/index.d.ts.map +1 -0
  578. package/build-types/popover/index.d.ts +1 -2
  579. package/build-types/popover/index.d.ts.map +1 -1
  580. package/build-types/popover/utils.d.ts +26 -69
  581. package/build-types/popover/utils.d.ts.map +1 -1
  582. package/build-types/radio-context/index.d.ts +6 -0
  583. package/build-types/radio-context/index.d.ts.map +1 -0
  584. package/build-types/range-control/index.d.ts +2 -2
  585. package/build-types/range-control/index.d.ts.map +1 -1
  586. package/build-types/range-control/styles/range-control-styles.d.ts +5 -2
  587. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  588. package/build-types/range-control/types.d.ts +2 -2
  589. package/build-types/range-control/types.d.ts.map +1 -1
  590. package/build-types/select-control/chevron-down.d.ts +4 -0
  591. package/build-types/select-control/chevron-down.d.ts.map +1 -0
  592. package/build-types/select-control/index.d.ts.map +1 -1
  593. package/build-types/select-control/styles/select-control-styles.d.ts +8 -0
  594. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  595. package/build-types/spinner/index.d.ts.map +1 -1
  596. package/build-types/text-highlight/index.d.ts +0 -3
  597. package/build-types/text-highlight/index.d.ts.map +1 -1
  598. package/build-types/toggle-group-control/stories/index.d.ts +25 -0
  599. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -0
  600. package/build-types/toggle-group-control/test/index.d.ts +2 -0
  601. package/build-types/toggle-group-control/test/index.d.ts.map +1 -0
  602. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +6 -3
  603. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  604. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +5 -0
  605. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  606. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +6 -7
  607. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  608. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  609. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +4 -0
  610. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  611. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +11 -9
  612. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
  613. package/build-types/toggle-group-control/types.d.ts +23 -10
  614. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  615. package/build-types/tooltip/index.d.ts.map +1 -1
  616. package/build-types/ui/context/context-connect.d.ts +3 -0
  617. package/build-types/ui/context/context-connect.d.ts.map +1 -1
  618. package/build-types/ui/form-group/use-form-group.d.ts +2 -2
  619. package/build-types/unit-control/index.d.ts +2 -1
  620. package/build-types/unit-control/index.d.ts.map +1 -1
  621. package/build-types/unit-control/types.d.ts +5 -1
  622. package/build-types/unit-control/types.d.ts.map +1 -1
  623. package/build-types/utils/colors-values.d.ts +18 -97
  624. package/build-types/utils/colors-values.d.ts.map +1 -1
  625. package/build-types/utils/rtl.d.ts.map +1 -1
  626. package/build-types/utils/strings.d.ts +10 -0
  627. package/build-types/utils/strings.d.ts.map +1 -0
  628. package/package.json +22 -21
  629. package/src/alignment-matrix-control/index.js +1 -1
  630. package/src/alignment-matrix-control/stories/index.js +49 -24
  631. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +2 -3
  632. package/src/angle-picker-control/index.js +7 -1
  633. package/src/angle-picker-control/stories/index.js +8 -5
  634. package/src/angle-picker-control/styles/angle-picker-control-styles.js +12 -3
  635. package/src/autocomplete/get-default-use-items.js +6 -1
  636. package/src/autocomplete/index.js +11 -19
  637. package/src/base-control/styles/base-control-styles.ts +1 -1
  638. package/src/base-field/styles.js +1 -1
  639. package/src/base-field/test/__snapshots__/index.js.snap +2 -2
  640. package/src/box-control/styles/box-control-visualizer-styles.js +0 -1
  641. package/src/box-control/test/index.js +8 -8
  642. package/src/button/test/index.js +188 -146
  643. package/src/card/card/{component.js → component.tsx} +13 -9
  644. package/src/card/card/{hook.js → hook.ts} +11 -11
  645. package/src/card/card/{index.js → index.ts} +0 -0
  646. package/src/card/card-body/{component.js → component.tsx} +13 -9
  647. package/src/card/card-body/{hook.js → hook.ts} +5 -5
  648. package/src/card/card-body/{index.js → index.ts} +0 -0
  649. package/src/card/card-divider/{component.js → component.tsx} +16 -10
  650. package/src/card/card-divider/{hook.js → hook.ts} +5 -5
  651. package/src/card/card-divider/{index.js → index.ts} +0 -0
  652. package/src/card/card-footer/{component.js → component.tsx} +13 -9
  653. package/src/card/card-footer/{hook.js → hook.ts} +5 -5
  654. package/src/card/card-footer/{index.js → index.ts} +0 -0
  655. package/src/card/card-header/{component.js → component.tsx} +13 -9
  656. package/src/card/card-header/{hook.js → hook.ts} +5 -5
  657. package/src/card/card-header/{index.js → index.ts} +0 -0
  658. package/src/card/card-media/{component.js → component.tsx} +13 -8
  659. package/src/card/card-media/{hook.js → hook.ts} +5 -5
  660. package/src/card/card-media/{index.js → index.ts} +0 -0
  661. package/src/card/{context.js → context.ts} +0 -0
  662. package/src/card/{index.js → index.ts} +0 -0
  663. package/src/card/stories/index.tsx +75 -0
  664. package/src/card/{styles.js → styles.ts} +0 -0
  665. package/src/card/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  666. package/src/card/test/{index.js → index.tsx} +3 -3
  667. package/src/card/types.ts +8 -1
  668. package/src/clipboard-button/index.js +13 -0
  669. package/src/color-list-picker/index.js +15 -3
  670. package/src/color-list-picker/style.scss +11 -0
  671. package/src/color-palette/index.js +40 -21
  672. package/src/color-palette/index.native.js +10 -6
  673. package/src/color-palette/stories/index.js +1 -1
  674. package/src/color-palette/style.scss +0 -14
  675. package/src/color-palette/test/__snapshots__/index.js.snap +28 -7
  676. package/src/combobox-control/index.js +6 -5
  677. package/src/combobox-control/stories/index.js +9 -3
  678. package/src/combobox-control/style.scss +0 -1
  679. package/src/confirm-dialog/test/index.js +85 -62
  680. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  681. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +54 -50
  682. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -3
  683. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/test/utils.js +0 -0
  684. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  685. package/src/custom-gradient-picker/index.js +30 -3
  686. package/src/custom-gradient-picker/stories/index.js +6 -2
  687. package/src/custom-gradient-picker/style.scss +30 -27
  688. package/src/custom-select-control/README.md +10 -0
  689. package/src/custom-select-control/index.js +22 -16
  690. package/src/custom-select-control/stories/index.js +1 -1
  691. package/src/custom-select-control/style.scss +0 -12
  692. package/src/custom-select-control/styles.ts +28 -0
  693. package/src/custom-select-control/test/index.js +4 -1
  694. package/src/date-time/constants.ts +1 -0
  695. package/src/date-time/date/index.tsx +310 -185
  696. package/src/date-time/date/styles.ts +92 -27
  697. package/src/date-time/date/test/index.tsx +24 -30
  698. package/src/date-time/date-time/index.tsx +3 -3
  699. package/src/date-time/date-time/styles.ts +9 -0
  700. package/src/date-time/time/index.tsx +23 -19
  701. package/src/date-time/time/styles.ts +1 -0
  702. package/src/date-time/utils.ts +17 -0
  703. package/src/dimension-control/index.js +1 -5
  704. package/src/disabled/index.tsx +80 -0
  705. package/src/disabled/stories/index.tsx +87 -0
  706. package/src/disabled/styles/{disabled-styles.js → disabled-styles.tsx} +0 -0
  707. package/src/disabled/test/index.tsx +174 -0
  708. package/src/disabled/types.ts +13 -0
  709. package/src/drop-zone/index.js +2 -3
  710. package/src/dropdown/index.js +3 -5
  711. package/src/dropdown-menu/index.js +1 -2
  712. package/src/dropdown-menu/index.native.js +0 -13
  713. package/src/dropdown-menu/stories/index.js +13 -2
  714. package/src/dropdown-menu/test/index.js +54 -58
  715. package/src/duotone-picker/custom-duotone-bar.js +1 -1
  716. package/src/duotone-picker/duotone-picker.js +34 -26
  717. package/src/duotone-picker/duotone-swatch.js +12 -5
  718. package/src/duotone-picker/stories/duotone-picker.js +66 -0
  719. package/src/duotone-picker/stories/duotone-swatch.js +32 -0
  720. package/src/focal-point-picker/README.md +3 -6
  721. package/src/focal-point-picker/controls.js +4 -4
  722. package/src/focal-point-picker/focal-point.js +2 -8
  723. package/src/focal-point-picker/grid.js +5 -41
  724. package/src/focal-point-picker/index.js +171 -308
  725. package/src/focal-point-picker/media.js +4 -28
  726. package/src/focal-point-picker/styles/focal-point-picker-style.js +5 -8
  727. package/src/focal-point-picker/styles/focal-point-style.js +0 -1
  728. package/src/focal-point-picker/test/index.js +79 -46
  729. package/src/focal-point-picker/utils.js +2 -6
  730. package/src/focusable-iframe/index.js +5 -0
  731. package/src/font-size-picker/index.js +161 -144
  732. package/src/font-size-picker/stories/index.js +1 -0
  733. package/src/font-size-picker/style.scss +8 -5
  734. package/src/font-size-picker/test/index.js +13 -6
  735. package/src/font-size-picker/test/{util.js → utils.js} +77 -1
  736. package/src/font-size-picker/utils.js +38 -23
  737. package/src/form-token-field/README.md +1 -0
  738. package/src/form-token-field/index.tsx +41 -33
  739. package/src/form-token-field/stories/index.tsx +8 -0
  740. package/src/form-token-field/test/index.tsx +2106 -0
  741. package/src/form-token-field/types.ts +7 -0
  742. package/src/gradient-picker/README.md +9 -0
  743. package/src/gradient-picker/index.js +31 -7
  744. package/src/gradient-picker/stories/index.js +57 -81
  745. package/src/guide/index.js +9 -4
  746. package/src/guide/page-control.js +1 -6
  747. package/src/guide/stories/index.js +12 -11
  748. package/src/guide/test/index.js +191 -37
  749. package/src/higher-order/with-constrained-tabbing/index.js +1 -1
  750. package/src/higher-order/with-notices/test/index.js +4 -2
  751. package/src/higher-order/with-spoken-messages/index.js +2 -0
  752. package/src/higher-order/with-spoken-messages/test/index.js +1 -1
  753. package/src/isolated-event-container/index.js +3 -0
  754. package/src/item-group/styles.ts +3 -3
  755. package/src/menu-group/test/index.js +18 -7
  756. package/src/mobile/bottom-sheet/index.native.js +2 -4
  757. package/src/mobile/global-styles-context/utils.native.js +8 -2
  758. package/src/mobile/image/index.native.js +9 -30
  759. package/src/mobile/picker/index.android.js +10 -4
  760. package/src/mobile/picker/styles.native.scss +4 -4
  761. package/src/modal/index.js +1 -2
  762. package/src/modal/test/index.js +11 -9
  763. package/src/navigable-container/container.js +12 -18
  764. package/src/navigable-container/menu.js +3 -7
  765. package/src/navigable-container/test/menu.js +14 -11
  766. package/src/navigation/menu/menu-title-search.js +1 -2
  767. package/src/navigator/navigator-back-button/hook.ts +0 -3
  768. package/src/navigator/navigator-button/hook.ts +0 -3
  769. package/src/notice/list.js +12 -10
  770. package/src/palette-edit/index.js +15 -10
  771. package/src/palette-edit/style.scss +3 -11
  772. package/src/palette-edit/styles.js +6 -5
  773. package/src/placeholder/README.md +1 -1
  774. package/src/placeholder/style.scss +62 -20
  775. package/src/placeholder/test/index.tsx +174 -0
  776. package/src/popover/index.js +129 -126
  777. package/src/popover/stories/index.js +17 -4
  778. package/src/popover/test/__snapshots__/index.js.snap +6 -6
  779. package/src/popover/test/index.js +129 -36
  780. package/src/popover/utils.js +107 -0
  781. package/src/range-control/index.tsx +3 -0
  782. package/src/range-control/styles/range-control-styles.ts +9 -4
  783. package/src/range-control/types.ts +5 -2
  784. package/src/select-control/chevron-down.tsx +25 -0
  785. package/src/select-control/index.tsx +6 -9
  786. package/src/select-control/styles/select-control-styles.ts +23 -14
  787. package/src/slot-fill/test/slot.js +5 -5
  788. package/src/snackbar/list.js +3 -2
  789. package/src/spinner/index.tsx +2 -0
  790. package/src/style.scss +0 -2
  791. package/src/text/styles.js +1 -1
  792. package/src/text/test/index.tsx +1 -1
  793. package/src/text-highlight/index.tsx +1 -5
  794. package/src/toggle-group-control/stories/index.tsx +127 -0
  795. package/src/toggle-group-control/test/__snapshots__/{index.js.snap → index.tsx.snap} +81 -57
  796. package/src/toggle-group-control/test/{index.js → index.tsx} +2 -4
  797. package/src/toggle-group-control/toggle-group-control/README.md +2 -0
  798. package/src/toggle-group-control/toggle-group-control/component.tsx +21 -11
  799. package/src/toggle-group-control/toggle-group-control/styles.ts +14 -6
  800. package/src/toggle-group-control/toggle-group-control-option/component.tsx +19 -3
  801. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +3 -0
  802. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +18 -0
  803. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +6 -8
  804. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +30 -7
  805. package/src/toggle-group-control/types.ts +74 -59
  806. package/src/toolbar/test/index.js +4 -4
  807. package/src/toolbar-group/test/index.js +9 -15
  808. package/src/tools-panel/styles.ts +2 -2
  809. package/src/tools-panel/test/index.js +3 -2
  810. package/src/tooltip/index.js +1 -5
  811. package/src/tooltip/test/index.js +188 -172
  812. package/src/tree-grid/index.js +4 -9
  813. package/src/ui/context/context-connect.ts +3 -2
  814. package/src/unit-control/index.tsx +2 -2
  815. package/src/unit-control/types.ts +10 -1
  816. package/src/utils/colors-values.js +42 -137
  817. package/src/utils/config-values.js +1 -1
  818. package/src/utils/input/input-control.js +6 -6
  819. package/src/utils/rtl.js +6 -2
  820. package/src/utils/strings.ts +83 -0
  821. package/src/utils/test/strings.js +15 -0
  822. package/tsconfig.json +45 -77
  823. package/tsconfig.tsbuildinfo +1 -1
  824. package/build/custom-gradient-bar/constants.js.map +0 -1
  825. package/build/custom-gradient-bar/control-points.js.map +0 -1
  826. package/build/custom-gradient-bar/index.js.map +0 -1
  827. package/build/custom-gradient-bar/utils.js.map +0 -1
  828. package/build/date-time/date/utils.js +0 -34
  829. package/build/date-time/date/utils.js.map +0 -1
  830. package/build/swatch/index.js +0 -41
  831. package/build/swatch/index.js.map +0 -1
  832. package/build/ui/__storybook-utils/example-grid.js +0 -88
  833. package/build/ui/__storybook-utils/example-grid.js.map +0 -1
  834. package/build/ui/__storybook-utils/index.js +0 -19
  835. package/build/ui/__storybook-utils/index.js.map +0 -1
  836. package/build/ui/__storybook-utils/page.js +0 -43
  837. package/build/ui/__storybook-utils/page.js.map +0 -1
  838. package/build/utils/keyboard.js +0 -41
  839. package/build/utils/keyboard.js.map +0 -1
  840. package/build-module/custom-gradient-bar/constants.js.map +0 -1
  841. package/build-module/custom-gradient-bar/control-points.js.map +0 -1
  842. package/build-module/custom-gradient-bar/index.js.map +0 -1
  843. package/build-module/custom-gradient-bar/utils.js.map +0 -1
  844. package/build-module/date-time/date/utils.js +0 -22
  845. package/build-module/date-time/date/utils.js.map +0 -1
  846. package/build-module/swatch/index.js +0 -30
  847. package/build-module/swatch/index.js.map +0 -1
  848. package/build-module/ui/__storybook-utils/example-grid.js +0 -69
  849. package/build-module/ui/__storybook-utils/example-grid.js.map +0 -1
  850. package/build-module/ui/__storybook-utils/index.js +0 -2
  851. package/build-module/ui/__storybook-utils/index.js.map +0 -1
  852. package/build-module/ui/__storybook-utils/page.js +0 -32
  853. package/build-module/ui/__storybook-utils/page.js.map +0 -1
  854. package/build-module/utils/keyboard.js +0 -33
  855. package/build-module/utils/keyboard.js.map +0 -1
  856. package/build-types/color-picker/color-display.d.ts +0 -13
  857. package/build-types/color-picker/color-display.d.ts.map +0 -1
  858. package/build-types/date-time/date/test/utils.d.ts +0 -2
  859. package/build-types/date-time/date/test/utils.d.ts.map +0 -1
  860. package/build-types/date-time/date/utils.d.ts +0 -15
  861. package/build-types/date-time/date/utils.d.ts.map +0 -1
  862. package/build-types/flyout/context.d.ts +0 -6
  863. package/build-types/flyout/context.d.ts.map +0 -1
  864. package/build-types/flyout/flyout/component.d.ts +0 -21
  865. package/build-types/flyout/flyout/component.d.ts.map +0 -1
  866. package/build-types/flyout/flyout/hook.d.ts +0 -270
  867. package/build-types/flyout/flyout/hook.d.ts.map +0 -1
  868. package/build-types/flyout/flyout/index.d.ts +0 -3
  869. package/build-types/flyout/flyout-content/component.d.ts +0 -3
  870. package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
  871. package/build-types/flyout/flyout-content/index.d.ts +0 -2
  872. package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
  873. package/build-types/flyout/index.d.ts +0 -2
  874. package/build-types/flyout/styles.d.ts +0 -22
  875. package/build-types/flyout/styles.d.ts.map +0 -1
  876. package/build-types/flyout/types.d.ts +0 -80
  877. package/build-types/flyout/types.d.ts.map +0 -1
  878. package/build-types/flyout/utils.d.ts +0 -8
  879. package/build-types/flyout/utils.d.ts.map +0 -1
  880. package/build-types/form-token-field/test/lib/fixtures.d.ts +0 -26
  881. package/build-types/form-token-field/test/lib/fixtures.d.ts.map +0 -1
  882. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts +0 -21
  883. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts.map +0 -1
  884. package/build-types/swatch/index.d.ts +0 -5
  885. package/build-types/swatch/index.d.ts.map +0 -1
  886. package/build-types/swatch/types.d.ts +0 -11
  887. package/build-types/swatch/types.d.ts.map +0 -1
  888. package/build-types/utils/hooks/use-combined-ref.d.ts +0 -8
  889. package/build-types/utils/hooks/use-combined-ref.d.ts.map +0 -1
  890. package/build-types/utils/keyboard.d.ts +0 -12
  891. package/build-types/utils/keyboard.d.ts.map +0 -1
  892. package/src/card/stories/index.js +0 -209
  893. package/src/date-time/date/datepicker.scss +0 -863
  894. package/src/date-time/date/style.scss +0 -85
  895. package/src/date-time/date/test/utils.ts +0 -32
  896. package/src/date-time/date/utils.ts +0 -20
  897. package/src/date-time/style.scss +0 -1
  898. package/src/disabled/index.js +0 -55
  899. package/src/disabled/stories/index.js +0 -61
  900. package/src/disabled/test/index.js +0 -240
  901. package/src/form-token-field/test/index.js +0 -411
  902. package/src/form-token-field/test/lib/fixtures.js +0 -89
  903. package/src/form-token-field/test/lib/token-field-wrapper.tsx +0 -71
  904. package/src/guide/test/page-control.js +0 -43
  905. package/src/menu-group/test/__snapshots__/index.js.snap +0 -23
  906. package/src/placeholder/test/index.js +0 -163
  907. package/src/swatch/index.tsx +0 -22
  908. package/src/swatch/style.scss +0 -21
  909. package/src/swatch/types.ts +0 -11
  910. package/src/toggle-group-control/stories/index.js +0 -203
  911. package/src/tools-panel/test/__snapshots__/index.js.snap +0 -210
  912. package/src/ui/__storybook-utils/example-grid.js +0 -61
  913. package/src/ui/__storybook-utils/index.js +0 -1
  914. package/src/ui/__storybook-utils/page.js +0 -29
  915. package/src/utils/keyboard.js +0 -28
  916. package/src/utils/test/keyboard.js +0 -34
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/font-size-picker/index.js"],"names":["__","sprintf","settings","useState","useMemo","forwardRef","BaseControl","Button","RangeControl","Flex","FlexItem","default","UnitControl","useCustomUnits","CustomSelectControl","VisuallyHidden","ToggleGroupControl","ToggleGroupControlOption","getFontSizeOptions","getSelectedOption","splitValueAndUnitFromSize","isSimpleCssValue","CUSTOM_FONT_SIZE","FontSizePicker","ref","fallbackFontSize","fontSizes","disableCustomFontSizes","onChange","size","value","withSlider","withReset","hasUnits","includes","noUnitsValue","parseInt","isPixelValue","endsWith","units","availableUnits","fontSizesContainComplexValues","some","sizeArg","shouldUseSelectControl","length","options","selectedOption","isCustomValue","slug","showCustomValueControl","setShowCustomValueControl","headerHint","hint","name","unit","currentFontSizeSR","baseClassName","find","option","key","selectedItem","Number","newValue","map","label","nextSize","parseFloat","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { settings } from '@wordpress/icons';\nimport { useState, useMemo, forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { BaseControl } from '../base-control';\nimport Button from '../button';\nimport RangeControl from '../range-control';\nimport { Flex, FlexItem } from '../flex';\nimport { default as UnitControl, useCustomUnits } from '../unit-control';\nimport CustomSelectControl from '../custom-select-control';\nimport { VisuallyHidden } from '../visually-hidden';\nimport {\n\tToggleGroupControl,\n\tToggleGroupControlOption,\n} from '../toggle-group-control';\nimport {\n\tgetFontSizeOptions,\n\tgetSelectedOption,\n\tsplitValueAndUnitFromSize,\n\tisSimpleCssValue,\n\tCUSTOM_FONT_SIZE,\n} from './utils';\n\nfunction FontSizePicker(\n\t{\n\t\tfallbackFontSize,\n\t\tfontSizes = [],\n\t\tdisableCustomFontSizes = false,\n\t\tonChange,\n\t\t/** @type {'default' | '__unstable-large'} */\n\t\tsize = 'default',\n\t\tvalue,\n\t\twithSlider = false,\n\t\twithReset = true,\n\t},\n\tref\n) {\n\tconst hasUnits = [ typeof value, typeof fontSizes?.[ 0 ]?.size ].includes(\n\t\t'string'\n\t);\n\tconst noUnitsValue = ! hasUnits ? value : parseInt( value );\n\tconst isPixelValue = typeof value === 'number' || value?.endsWith?.( 'px' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: [ 'px', 'em', 'rem' ],\n\t} );\n\n\t/**\n\t * The main font size UI displays a toggle group when the presets are less\n\t * than six and a select control when they are more.\n\t */\n\tconst fontSizesContainComplexValues = fontSizes.some(\n\t\t( { size: sizeArg } ) => ! isSimpleCssValue( sizeArg )\n\t);\n\tconst shouldUseSelectControl = fontSizes.length > 5;\n\tconst options = useMemo(\n\t\t() =>\n\t\t\tgetFontSizeOptions(\n\t\t\t\tshouldUseSelectControl,\n\t\t\t\tfontSizes,\n\t\t\t\tdisableCustomFontSizes,\n\t\t\t\tfontSizesContainComplexValues\n\t\t\t),\n\t\t[\n\t\t\tshouldUseSelectControl,\n\t\t\tfontSizes,\n\t\t\tdisableCustomFontSizes,\n\t\t\tfontSizesContainComplexValues,\n\t\t]\n\t);\n\tconst selectedOption = getSelectedOption( fontSizes, value );\n\tconst isCustomValue = selectedOption.slug === CUSTOM_FONT_SIZE;\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\t! disableCustomFontSizes && isCustomValue\n\t);\n\tconst headerHint = useMemo( () => {\n\t\tif ( showCustomValueControl ) {\n\t\t\treturn `(${ __( 'Custom' ) })`;\n\t\t}\n\n\t\t// If we have a custom value that is not available in the font sizes,\n\t\t// show it as a hint as long as it's a simple CSS value.\n\t\tif ( isCustomValue ) {\n\t\t\treturn isSimpleCssValue( value ) && `(${ value })`;\n\t\t}\n\t\tif ( shouldUseSelectControl ) {\n\t\t\treturn (\n\t\t\t\tisSimpleCssValue( selectedOption?.size ) &&\n\t\t\t\t`(${ selectedOption?.size })`\n\t\t\t);\n\t\t}\n\t\t// Calculate the `hint` for toggle group control.\n\t\tlet hint = selectedOption.name;\n\t\tif (\n\t\t\t! fontSizesContainComplexValues &&\n\t\t\ttypeof selectedOption.size === 'string'\n\t\t) {\n\t\t\tconst [ , unit ] = splitValueAndUnitFromSize( selectedOption.size );\n\t\t\thint += `(${ unit })`;\n\t\t}\n\t\treturn hint;\n\t}, [\n\t\tshowCustomValueControl,\n\t\tselectedOption?.name,\n\t\tselectedOption?.size,\n\t\tvalue,\n\t\tisCustomValue,\n\t\tshouldUseSelectControl,\n\t\tfontSizesContainComplexValues,\n\t] );\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\t// This is used for select control only. We need to add support\n\t// for ToggleGroupControl.\n\tconst currentFontSizeSR = sprintf(\n\t\t// translators: %s: Currently selected font size.\n\t\t__( 'Currently selected font size: %s' ),\n\t\tselectedOption.name\n\t);\n\tconst baseClassName = 'components-font-size-picker';\n\treturn (\n\t\t<fieldset className={ baseClassName } { ...( ref ? {} : { ref } ) }>\n\t\t\t<VisuallyHidden as=\"legend\">{ __( 'Font size' ) }</VisuallyHidden>\n\t\t\t<Flex\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName={ `${ baseClassName }__header` }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t{ __( 'Size' ) }\n\t\t\t\t\t\t{ headerHint && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={ `${ baseClassName }__header__hint` }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ headerHint }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t</FlexItem>\n\t\t\t\t{ ! disableCustomFontSizes && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t\t\t? __( 'Use size preset' )\n\t\t\t\t\t\t\t\t\t: __( 'Set custom size' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ticon={ settings }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowCustomValueControl(\n\t\t\t\t\t\t\t\t\t! showCustomValueControl\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t\t<div className={ `${ baseClassName }__controls` }>\n\t\t\t\t{ !! fontSizes.length &&\n\t\t\t\t\tshouldUseSelectControl &&\n\t\t\t\t\t! showCustomValueControl && (\n\t\t\t\t\t\t<CustomSelectControl\n\t\t\t\t\t\t\t__nextUnconstrainedWidth\n\t\t\t\t\t\t\tclassName={ `${ baseClassName }__select` }\n\t\t\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tdescribedBy={ currentFontSizeSR }\n\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\tvalue={ options.find(\n\t\t\t\t\t\t\t\t( option ) => option.key === selectedOption.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\thasUnits\n\t\t\t\t\t\t\t\t\t\t? selectedItem.size\n\t\t\t\t\t\t\t\t\t\t: Number( selectedItem.size )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( selectedItem.key === CUSTOM_FONT_SIZE ) {\n\t\t\t\t\t\t\t\t\tsetShowCustomValueControl( true );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t{ ! shouldUseSelectControl && ! showCustomValueControl && (\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\thasUnits ? newValue : Number( newValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ options.map( ( option ) => (\n\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\tkey={ option.key }\n\t\t\t\t\t\t\t\tvalue={ option.value }\n\t\t\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t\t\t\taria-label={ option.name }\n\t\t\t\t\t\t\t\tshowTooltip={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t) }\n\t\t\t\t{ ! withSlider &&\n\t\t\t\t\t! disableCustomFontSizes &&\n\t\t\t\t\tshowCustomValueControl && (\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\t\t\tclassName={ `${ baseClassName }__custom-size-control` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Custom' ) }\n\t\t\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\tonChange={ ( nextSize ) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t0 === parseFloat( nextSize ) ||\n\t\t\t\t\t\t\t\t\t\t\t! nextSize\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tonChange( undefined );\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\thasUnits\n\t\t\t\t\t\t\t\t\t\t\t\t\t? nextSize\n\t\t\t\t\t\t\t\t\t\t\t\t\t: parseInt( nextSize, 10 )\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\tsize={ size }\n\t\t\t\t\t\t\t\t\tunits={ hasUnits ? units : [] }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t{ withReset && (\n\t\t\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tclassName=\"components-color-palette__clear\"\n\t\t\t\t\t\t\t\t\t\tdisabled={ value === undefined }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tonChange( undefined );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ withSlider && (\n\t\t\t\t<RangeControl\n\t\t\t\t\tclassName={ `${ baseClassName }__custom-input` }\n\t\t\t\t\tlabel={ __( 'Custom Size' ) }\n\t\t\t\t\tvalue={ ( isPixelValue && noUnitsValue ) || '' }\n\t\t\t\t\tinitialPosition={ fallbackFontSize }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tonChange( hasUnits ? newValue + 'px' : newValue );\n\t\t\t\t\t} }\n\t\t\t\t\tmin={ 12 }\n\t\t\t\t\tmax={ 100 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</fieldset>\n\t);\n}\n\nexport default forwardRef( FontSizePicker );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/font-size-picker/index.js"],"names":["classNames","__","sprintf","settings","useState","useMemo","forwardRef","BaseControl","Button","RangeControl","Flex","FlexItem","default","UnitControl","useCustomUnits","CustomSelectControl","VisuallyHidden","ToggleGroupControl","ToggleGroupControlOption","getFontSizeOptions","getSelectedOption","splitValueAndUnitFromSize","isSimpleCssValue","CUSTOM_FONT_SIZE","VStack","HStack","MaybeVStack","__nextHasNoMarginBottom","children","FontSizePicker","ref","fallbackFontSize","fontSizes","disableCustomFontSizes","onChange","size","value","withSlider","withReset","hasUnits","includes","noUnitsValue","parseInt","isPixelValue","endsWith","units","availableUnits","fontSizesContainComplexValues","some","sizeArg","shouldUseSelectControl","length","options","selectedOption","isCustomValue","slug","showCustomValueControl","setShowCustomValueControl","headerHint","hint","name","unit","currentFontSizeSR","baseClassName","find","option","key","selectedItem","Number","newValue","map","label","nextSize","parseFloat","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { settings } from '@wordpress/icons';\nimport { useState, useMemo, forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { BaseControl } from '../base-control';\nimport Button from '../button';\nimport RangeControl from '../range-control';\nimport { Flex, FlexItem } from '../flex';\nimport { default as UnitControl, useCustomUnits } from '../unit-control';\nimport CustomSelectControl from '../custom-select-control';\nimport { VisuallyHidden } from '../visually-hidden';\nimport {\n\tToggleGroupControl,\n\tToggleGroupControlOption,\n} from '../toggle-group-control';\nimport {\n\tgetFontSizeOptions,\n\tgetSelectedOption,\n\tsplitValueAndUnitFromSize,\n\tisSimpleCssValue,\n\tCUSTOM_FONT_SIZE,\n} from './utils';\nimport { VStack } from '../v-stack';\nimport { HStack } from '../h-stack';\n\n// This conditional is needed to maintain the spacing before the slider in the `withSlider` case.\nconst MaybeVStack = ( { __nextHasNoMarginBottom, children } ) =>\n\t! __nextHasNoMarginBottom ? (\n\t\tchildren\n\t) : (\n\t\t<VStack spacing={ 6 } children={ children } />\n\t);\n\nfunction FontSizePicker(\n\t{\n\t\t/** Start opting into the new margin-free styles that will become the default in a future version. */\n\t\t__nextHasNoMarginBottom = false,\n\t\tfallbackFontSize,\n\t\tfontSizes = [],\n\t\tdisableCustomFontSizes = false,\n\t\tonChange,\n\t\t/** @type {'default' | '__unstable-large'} */\n\t\tsize = 'default',\n\t\tvalue,\n\t\twithSlider = false,\n\t\twithReset = true,\n\t},\n\tref\n) {\n\tconst hasUnits = [ typeof value, typeof fontSizes?.[ 0 ]?.size ].includes(\n\t\t'string'\n\t);\n\tconst noUnitsValue = ! hasUnits ? value : parseInt( value );\n\tconst isPixelValue = typeof value === 'number' || value?.endsWith?.( 'px' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: [ 'px', 'em', 'rem' ],\n\t} );\n\n\t/**\n\t * The main font size UI displays a toggle group when the presets are less\n\t * than six and a select control when they are more.\n\t */\n\tconst fontSizesContainComplexValues = fontSizes.some(\n\t\t( { size: sizeArg } ) => ! isSimpleCssValue( sizeArg )\n\t);\n\tconst shouldUseSelectControl = fontSizes.length > 5;\n\tconst options = useMemo(\n\t\t() =>\n\t\t\tgetFontSizeOptions(\n\t\t\t\tshouldUseSelectControl,\n\t\t\t\tfontSizes,\n\t\t\t\tdisableCustomFontSizes\n\t\t\t),\n\t\t[ shouldUseSelectControl, fontSizes, disableCustomFontSizes ]\n\t);\n\tconst selectedOption = getSelectedOption( fontSizes, value );\n\tconst isCustomValue = selectedOption.slug === CUSTOM_FONT_SIZE;\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\t! disableCustomFontSizes && isCustomValue\n\t);\n\tconst headerHint = useMemo( () => {\n\t\tif ( showCustomValueControl ) {\n\t\t\treturn `(${ __( 'Custom' ) })`;\n\t\t}\n\n\t\t// If we have a custom value that is not available in the font sizes,\n\t\t// show it as a hint as long as it's a simple CSS value.\n\t\tif ( isCustomValue ) {\n\t\t\treturn isSimpleCssValue( value ) && `(${ value })`;\n\t\t}\n\t\tif ( shouldUseSelectControl ) {\n\t\t\treturn (\n\t\t\t\tisSimpleCssValue( selectedOption?.size ) &&\n\t\t\t\t`(${ selectedOption?.size })`\n\t\t\t);\n\t\t}\n\n\t\t// Calculate the `hint` for toggle group control.\n\t\tlet hint = selectedOption.name;\n\t\tif (\n\t\t\t! fontSizesContainComplexValues &&\n\t\t\ttypeof selectedOption.size === 'string'\n\t\t) {\n\t\t\tconst [ , unit ] = splitValueAndUnitFromSize( selectedOption.size );\n\t\t\thint += `(${ unit })`;\n\t\t}\n\t\treturn hint;\n\t}, [\n\t\tshowCustomValueControl,\n\t\tselectedOption?.name,\n\t\tselectedOption?.size,\n\t\tvalue,\n\t\tisCustomValue,\n\t\tshouldUseSelectControl,\n\t\tfontSizesContainComplexValues,\n\t] );\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\t// This is used for select control only. We need to add support\n\t// for ToggleGroupControl.\n\tconst currentFontSizeSR = sprintf(\n\t\t// translators: %s: Currently selected font size.\n\t\t__( 'Currently selected font size: %s' ),\n\t\tselectedOption.name\n\t);\n\tconst baseClassName = 'components-font-size-picker';\n\treturn (\n\t\t<fieldset className={ baseClassName } { ...( ref ? {} : { ref } ) }>\n\t\t\t<VisuallyHidden as=\"legend\">{ __( 'Font size' ) }</VisuallyHidden>\n\t\t\t<HStack className={ `${ baseClassName }__header` }>\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Size' ) }\n\t\t\t\t\t{ headerHint && (\n\t\t\t\t\t\t<span className={ `${ baseClassName }__header__hint` }>\n\t\t\t\t\t\t\t{ headerHint }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t{ ! disableCustomFontSizes && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t\t? __( 'Use size preset' )\n\t\t\t\t\t\t\t\t: __( 'Set custom size' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon={ settings }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetShowCustomValueControl(\n\t\t\t\t\t\t\t\t! showCustomValueControl\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\t\tisSmall\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<MaybeVStack __nextHasNoMarginBottom={ __nextHasNoMarginBottom }>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ classNames( `${ baseClassName }__controls`, {\n\t\t\t\t\t\t'is-next-has-no-margin-bottom': __nextHasNoMarginBottom,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ !! fontSizes.length &&\n\t\t\t\t\t\tshouldUseSelectControl &&\n\t\t\t\t\t\t! showCustomValueControl && (\n\t\t\t\t\t\t\t<CustomSelectControl\n\t\t\t\t\t\t\t\t__nextUnconstrainedWidth\n\t\t\t\t\t\t\t\tclassName={ `${ baseClassName }__select` }\n\t\t\t\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\tdescribedBy={ currentFontSizeSR }\n\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\tvalue={ options.find(\n\t\t\t\t\t\t\t\t\t( option ) =>\n\t\t\t\t\t\t\t\t\t\toption.key === selectedOption.slug\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\thasUnits\n\t\t\t\t\t\t\t\t\t\t\t? selectedItem.size\n\t\t\t\t\t\t\t\t\t\t\t: Number( selectedItem.size )\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tselectedItem.key === CUSTOM_FONT_SIZE\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tsetShowCustomValueControl( true );\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\tsize={ size }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t{ ! shouldUseSelectControl && ! showCustomValueControl && (\n\t\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\thasUnits ? newValue : Number( newValue )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ options.map( ( option ) => (\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tkey={ option.key }\n\t\t\t\t\t\t\t\t\tvalue={ option.value }\n\t\t\t\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t\t\t\t\taria-label={ option.name }\n\t\t\t\t\t\t\t\t\tshowTooltip={ true }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! withSlider &&\n\t\t\t\t\t\t! disableCustomFontSizes &&\n\t\t\t\t\t\tshowCustomValueControl && (\n\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\t\t\t\tclassName={ `${ baseClassName }__custom-size-control` }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Custom' ) }\n\t\t\t\t\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( nextSize ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t0 === parseFloat( nextSize ) ||\n\t\t\t\t\t\t\t\t\t\t\t\t! nextSize\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange( undefined );\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\thasUnits\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? nextSize\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: parseInt(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnextSize,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t10\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t )\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\tsize={ size }\n\t\t\t\t\t\t\t\t\t\tunits={ hasUnits ? units : [] }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t{ withReset && (\n\t\t\t\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-color-palette__clear\"\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ value === undefined }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange( undefined );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t{ withSlider && (\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t\t\tclassName={ `${ baseClassName }__custom-input` }\n\t\t\t\t\t\tlabel={ __( 'Custom Size' ) }\n\t\t\t\t\t\tvalue={ ( isPixelValue && noUnitsValue ) || '' }\n\t\t\t\t\t\tinitialPosition={ fallbackFontSize }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tonChange( hasUnits ? newValue + 'px' : newValue );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmin={ 12 }\n\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</MaybeVStack>\n\t\t</fieldset>\n\t);\n}\n\nexport default forwardRef( FontSizePicker );\n"]}
@@ -13,14 +13,22 @@ const CUSTOM_FONT_SIZE_OPTION = {
13
13
  name: __('Custom')
14
14
  };
15
15
  /**
16
- * In case we have at most five font sizes, where at least one the them
17
- * contain a complex css value(clamp, var, etc..) show a incremental sequence
18
- * of numbers as a label of the font size. We do this because complex css values
19
- * cannot be caluclated properly and the incremental sequence of numbers as labels
20
- * can help the user better mentally map the different available font sizes.
16
+ * In case we have at most five font sizes, show a `T-shirt size`
17
+ * alias as a label of the font size. The label assumes that the font sizes
18
+ * are ordered accordingly - from smallest to largest.
21
19
  */
22
20
 
23
- const FONT_SIZES_ALIASES = ['1', '2', '3', '4', '5'];
21
+ const FONT_SIZES_ALIASES = [
22
+ /* translators: S stands for 'small' and is a size label. */
23
+ __('S'),
24
+ /* translators: M stands for 'medium' and is a size label. */
25
+ __('M'),
26
+ /* translators: L stands for 'large' and is a size label. */
27
+ __('L'),
28
+ /* translators: XL stands for 'extra large' and is a size label. */
29
+ __('XL'),
30
+ /* translators: XXL stands for 'extra extra large' and is a size label. */
31
+ __('XXL')];
24
32
  /**
25
33
  * Helper util to split a font size to its numeric value
26
34
  * and its `unit`, if exists.
@@ -54,19 +62,18 @@ export function isSimpleCssValue(value) {
54
62
  * Return font size options in the proper format depending
55
63
  * on the currently used control (select, toggle group).
56
64
  *
57
- * @param {boolean} useSelectControl Whether to use a select control.
58
- * @param {Object[]} optionsArray Array of available font sizes objects.
59
- * @param {*} disableCustomFontSizes Flag that indicates if custom font sizes are disabled.
60
- * @param {boolean} optionsContainComplexCssValues Whether font sizes contain at least one complex css value(clamp, var, etc..).
61
- * @return {Object[]|null} Array of font sizes in proper format for the used control.
65
+ * @param {boolean} useSelectControl Whether to use a select control.
66
+ * @param {Object[]} optionsArray Array of available font sizes objects.
67
+ * @param {boolean} disableCustomFontSizes Flag that indicates if custom font sizes are disabled.
68
+ * @return {Object[]|null} Array of font sizes in proper format for the used control.
62
69
  */
63
70
 
64
- export function getFontSizeOptions(useSelectControl, optionsArray, disableCustomFontSizes, optionsContainComplexCssValues) {
71
+ export function getFontSizeOptions(useSelectControl, optionsArray, disableCustomFontSizes) {
65
72
  if (disableCustomFontSizes && !optionsArray.length) {
66
73
  return null;
67
74
  }
68
75
 
69
- return useSelectControl ? getSelectOptions(optionsArray, disableCustomFontSizes) : getToggleGroupOptions(optionsArray, optionsContainComplexCssValues);
76
+ return useSelectControl ? getSelectOptions(optionsArray, disableCustomFontSizes) : getToggleGroupOptions(optionsArray);
70
77
  }
71
78
 
72
79
  function getSelectOptions(optionsArray, disableCustomFontSizes) {
@@ -85,30 +92,31 @@ function getSelectOptions(optionsArray, disableCustomFontSizes) {
85
92
  };
86
93
  });
87
94
  }
95
+ /**
96
+ * Build options for the toggle group options.
97
+ *
98
+ * @param {Array} optionsArray An array of font size options.
99
+ * @param {string[]} labelAliases An array of alternative labels.
100
+ * @return {Array} Remapped optionsArray.
101
+ */
102
+
88
103
 
89
- function getToggleGroupOptions(optionsArray, optionsContainComplexCssValues) {
104
+ export function getToggleGroupOptions(optionsArray) {
105
+ let labelAliases = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FONT_SIZES_ALIASES;
90
106
  return optionsArray.map((_ref2, index) => {
91
107
  let {
92
108
  slug,
93
109
  size,
94
110
  name
95
111
  } = _ref2;
96
- let label = optionsContainComplexCssValues ? FONT_SIZES_ALIASES[index] : size;
97
-
98
- if (!optionsContainComplexCssValues && typeof size === 'string') {
99
- const [numericValue] = splitValueAndUnitFromSize(size);
100
- label = numericValue;
101
- }
102
-
103
112
  return {
104
113
  key: slug,
105
114
  value: size,
106
- label,
115
+ label: labelAliases[index],
107
116
  name
108
117
  };
109
118
  });
110
119
  }
111
-
112
120
  export function getSelectedOption(fontSizes, value) {
113
121
  if (!value) {
114
122
  return DEFAULT_FONT_SIZE_OPTION;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/font-size-picker/utils.js"],"names":["__","DEFAULT_FONT_SIZE","DEFAULT_FONT_SIZE_OPTION","slug","name","CUSTOM_FONT_SIZE","CUSTOM_FONT_SIZE_OPTION","FONT_SIZES_ALIASES","splitValueAndUnitFromSize","size","numericValue","unit","match","isNaN","parseFloat","isFinite","isSimpleCssValue","value","sizeRegex","test","getFontSizeOptions","useSelectControl","optionsArray","disableCustomFontSizes","optionsContainComplexCssValues","length","getSelectOptions","getToggleGroupOptions","options","map","key","__experimentalHint","index","label","getSelectedOption","fontSizes","find","font"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AAEA,MAAMC,iBAAiB,GAAG,SAA1B;AACA,MAAMC,wBAAwB,GAAG;AAChCC,EAAAA,IAAI,EAAEF,iBAD0B;AAEhCG,EAAAA,IAAI,EAAEJ,EAAE,CAAE,SAAF;AAFwB,CAAjC;AAIA,OAAO,MAAMK,gBAAgB,GAAG,QAAzB;AACP,MAAMC,uBAAuB,GAAG;AAC/BH,EAAAA,IAAI,EAAEE,gBADyB;AAE/BD,EAAAA,IAAI,EAAEJ,EAAE,CAAE,QAAF;AAFuB,CAAhC;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMO,kBAAkB,GAAG,CAAE,GAAF,EAAO,GAAP,EAAY,GAAZ,EAAiB,GAAjB,EAAsB,GAAtB,CAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,yBAAT,CAAoCC,IAApC,EAA2C;AACjD,QAAM,CAAEC,YAAF,EAAgBC,IAAhB,IAA0B,GAAGF,IAAM,EAAV,CAAYG,KAAZ,CAAmB,cAAnB,CAA/B;;AAEA,MAAK,CAAEC,KAAK,CAAEC,UAAU,CAAEJ,YAAF,CAAZ,CAAP,IAAyCK,QAAQ,CAAEL,YAAF,CAAtD,EAAyE;AACxE,WAAO,CAAEA,YAAF,EAAgBC,IAAhB,CAAP;AACA;;AAED,SAAO,EAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASK,gBAAT,CAA2BC,KAA3B,EAAmC;AACzC,QAAMC,SAAS,GAAG,gCAAlB;AACA,SAAOA,SAAS,CAACC,IAAV,CAAgBF,KAAhB,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,kBAAT,CACNC,gBADM,EAENC,YAFM,EAGNC,sBAHM,EAINC,8BAJM,EAKL;AACD,MAAKD,sBAAsB,IAAI,CAAED,YAAY,CAACG,MAA9C,EAAuD;AACtD,WAAO,IAAP;AACA;;AACD,SAAOJ,gBAAgB,GACpBK,gBAAgB,CAAEJ,YAAF,EAAgBC,sBAAhB,CADI,GAEpBI,qBAAqB,CAAEL,YAAF,EAAgBE,8BAAhB,CAFxB;AAGA;;AAED,SAASE,gBAAT,CAA2BJ,YAA3B,EAAyCC,sBAAzC,EAAkE;AACjE,QAAMK,OAAO,GAAG,CACf1B,wBADe,EAEf,GAAGoB,YAFY,EAGf,IAAKC,sBAAsB,GAAG,EAAH,GAAQ,CAAEjB,uBAAF,CAAnC,CAHe,CAAhB;AAKA,SAAOsB,OAAO,CAACC,GAAR,CAAa;AAAA,QAAE;AAAE1B,MAAAA,IAAF;AAAQC,MAAAA,IAAR;AAAcK,MAAAA;AAAd,KAAF;AAAA,WAA8B;AACjDqB,MAAAA,GAAG,EAAE3B,IAD4C;AAEjDC,MAAAA,IAFiD;AAGjDK,MAAAA,IAHiD;AAIjDsB,MAAAA,kBAAkB,EACjBtB,IAAI,IAAIO,gBAAgB,CAAEP,IAAF,CAAxB,IAAoCK,UAAU,CAAEL,IAAF;AALE,KAA9B;AAAA,GAAb,CAAP;AAOA;;AAED,SAASkB,qBAAT,CAAgCL,YAAhC,EAA8CE,8BAA9C,EAA+E;AAC9E,SAAOF,YAAY,CAACO,GAAb,CAAkB,QAAwBG,KAAxB,KAAmC;AAAA,QAAjC;AAAE7B,MAAAA,IAAF;AAAQM,MAAAA,IAAR;AAAcL,MAAAA;AAAd,KAAiC;AAC3D,QAAI6B,KAAK,GAAGT,8BAA8B,GACvCjB,kBAAkB,CAAEyB,KAAF,CADqB,GAEvCvB,IAFH;;AAGA,QAAK,CAAEe,8BAAF,IAAoC,OAAOf,IAAP,KAAgB,QAAzD,EAAoE;AACnE,YAAM,CAAEC,YAAF,IAAmBF,yBAAyB,CAAEC,IAAF,CAAlD;AACAwB,MAAAA,KAAK,GAAGvB,YAAR;AACA;;AACD,WAAO;AAAEoB,MAAAA,GAAG,EAAE3B,IAAP;AAAac,MAAAA,KAAK,EAAER,IAApB;AAA0BwB,MAAAA,KAA1B;AAAiC7B,MAAAA;AAAjC,KAAP;AACA,GATM,CAAP;AAUA;;AAED,OAAO,SAAS8B,iBAAT,CAA4BC,SAA5B,EAAuClB,KAAvC,EAA+C;AACrD,MAAK,CAAEA,KAAP,EAAe;AACd,WAAOf,wBAAP;AACA;;AACD,SACCiC,SAAS,CAACC,IAAV,CAAkBC,IAAF,IAAYA,IAAI,CAAC5B,IAAL,KAAcQ,KAA1C,KACAX,uBAFD;AAIA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_FONT_SIZE = 'default';\nconst DEFAULT_FONT_SIZE_OPTION = {\n\tslug: DEFAULT_FONT_SIZE,\n\tname: __( 'Default' ),\n};\nexport const CUSTOM_FONT_SIZE = 'custom';\nconst CUSTOM_FONT_SIZE_OPTION = {\n\tslug: CUSTOM_FONT_SIZE,\n\tname: __( 'Custom' ),\n};\n\n/**\n * In case we have at most five font sizes, where at least one the them\n * contain a complex css value(clamp, var, etc..) show a incremental sequence\n * of numbers as a label of the font size. We do this because complex css values\n * cannot be caluclated properly and the incremental sequence of numbers as labels\n * can help the user better mentally map the different available font sizes.\n */\nconst FONT_SIZES_ALIASES = [ '1', '2', '3', '4', '5' ];\n\n/**\n * Helper util to split a font size to its numeric value\n * and its `unit`, if exists.\n *\n * @param {string|number} size Font size.\n * @return {[number, string]} An array with the numeric value and the unit if exists.\n */\nexport function splitValueAndUnitFromSize( size ) {\n\tconst [ numericValue, unit ] = `${ size }`.match( /[\\d\\.]+|\\D+/g );\n\n\tif ( ! isNaN( parseFloat( numericValue ) ) && isFinite( numericValue ) ) {\n\t\treturn [ numericValue, unit ];\n\t}\n\n\treturn [];\n}\n\n/**\n * Some themes use css vars for their font sizes, so until we\n * have the way of calculating them don't display them.\n *\n * @param {string|number} value The value that is checked.\n * @return {boolean} Whether the value is a simple css value.\n */\nexport function isSimpleCssValue( value ) {\n\tconst sizeRegex = /^[\\d\\.]+(px|em|rem|vw|vh|%)?$/i;\n\treturn sizeRegex.test( value );\n}\n\n/**\n * Return font size options in the proper format depending\n * on the currently used control (select, toggle group).\n *\n * @param {boolean} useSelectControl Whether to use a select control.\n * @param {Object[]} optionsArray Array of available font sizes objects.\n * @param {*} disableCustomFontSizes Flag that indicates if custom font sizes are disabled.\n * @param {boolean} optionsContainComplexCssValues Whether font sizes contain at least one complex css value(clamp, var, etc..).\n * @return {Object[]|null} Array of font sizes in proper format for the used control.\n */\nexport function getFontSizeOptions(\n\tuseSelectControl,\n\toptionsArray,\n\tdisableCustomFontSizes,\n\toptionsContainComplexCssValues\n) {\n\tif ( disableCustomFontSizes && ! optionsArray.length ) {\n\t\treturn null;\n\t}\n\treturn useSelectControl\n\t\t? getSelectOptions( optionsArray, disableCustomFontSizes )\n\t\t: getToggleGroupOptions( optionsArray, optionsContainComplexCssValues );\n}\n\nfunction getSelectOptions( optionsArray, disableCustomFontSizes ) {\n\tconst options = [\n\t\tDEFAULT_FONT_SIZE_OPTION,\n\t\t...optionsArray,\n\t\t...( disableCustomFontSizes ? [] : [ CUSTOM_FONT_SIZE_OPTION ] ),\n\t];\n\treturn options.map( ( { slug, name, size } ) => ( {\n\t\tkey: slug,\n\t\tname,\n\t\tsize,\n\t\t__experimentalHint:\n\t\t\tsize && isSimpleCssValue( size ) && parseFloat( size ),\n\t} ) );\n}\n\nfunction getToggleGroupOptions( optionsArray, optionsContainComplexCssValues ) {\n\treturn optionsArray.map( ( { slug, size, name }, index ) => {\n\t\tlet label = optionsContainComplexCssValues\n\t\t\t? FONT_SIZES_ALIASES[ index ]\n\t\t\t: size;\n\t\tif ( ! optionsContainComplexCssValues && typeof size === 'string' ) {\n\t\t\tconst [ numericValue ] = splitValueAndUnitFromSize( size );\n\t\t\tlabel = numericValue;\n\t\t}\n\t\treturn { key: slug, value: size, label, name };\n\t} );\n}\n\nexport function getSelectedOption( fontSizes, value ) {\n\tif ( ! value ) {\n\t\treturn DEFAULT_FONT_SIZE_OPTION;\n\t}\n\treturn (\n\t\tfontSizes.find( ( font ) => font.size === value ) ||\n\t\tCUSTOM_FONT_SIZE_OPTION\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/font-size-picker/utils.js"],"names":["__","DEFAULT_FONT_SIZE","DEFAULT_FONT_SIZE_OPTION","slug","name","CUSTOM_FONT_SIZE","CUSTOM_FONT_SIZE_OPTION","FONT_SIZES_ALIASES","splitValueAndUnitFromSize","size","numericValue","unit","match","isNaN","parseFloat","isFinite","isSimpleCssValue","value","sizeRegex","test","getFontSizeOptions","useSelectControl","optionsArray","disableCustomFontSizes","length","getSelectOptions","getToggleGroupOptions","options","map","key","__experimentalHint","labelAliases","index","label","getSelectedOption","fontSizes","find","font"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_FONT_SIZE = 'default';\nconst DEFAULT_FONT_SIZE_OPTION = {\n\tslug: DEFAULT_FONT_SIZE,\n\tname: __( 'Default' ),\n};\nexport const CUSTOM_FONT_SIZE = 'custom';\nconst CUSTOM_FONT_SIZE_OPTION = {\n\tslug: CUSTOM_FONT_SIZE,\n\tname: __( 'Custom' ),\n};\n\n/**\n * In case we have at most five font sizes, show a `T-shirt size`\n * alias as a label of the font size. The label assumes that the font sizes\n * are ordered accordingly - from smallest to largest.\n */\nconst FONT_SIZES_ALIASES = [\n\t/* translators: S stands for 'small' and is a size label. */\n\t__( 'S' ),\n\t/* translators: M stands for 'medium' and is a size label. */\n\t__( 'M' ),\n\t/* translators: L stands for 'large' and is a size label. */\n\t__( 'L' ),\n\t/* translators: XL stands for 'extra large' and is a size label. */\n\t__( 'XL' ),\n\t/* translators: XXL stands for 'extra extra large' and is a size label. */\n\t__( 'XXL' ),\n];\n\n/**\n * Helper util to split a font size to its numeric value\n * and its `unit`, if exists.\n *\n * @param {string|number} size Font size.\n * @return {[number, string]} An array with the numeric value and the unit if exists.\n */\nexport function splitValueAndUnitFromSize( size ) {\n\tconst [ numericValue, unit ] = `${ size }`.match( /[\\d\\.]+|\\D+/g );\n\n\tif ( ! isNaN( parseFloat( numericValue ) ) && isFinite( numericValue ) ) {\n\t\treturn [ numericValue, unit ];\n\t}\n\n\treturn [];\n}\n\n/**\n * Some themes use css vars for their font sizes, so until we\n * have the way of calculating them don't display them.\n *\n * @param {string|number} value The value that is checked.\n * @return {boolean} Whether the value is a simple css value.\n */\nexport function isSimpleCssValue( value ) {\n\tconst sizeRegex = /^[\\d\\.]+(px|em|rem|vw|vh|%)?$/i;\n\treturn sizeRegex.test( value );\n}\n\n/**\n * Return font size options in the proper format depending\n * on the currently used control (select, toggle group).\n *\n * @param {boolean} useSelectControl Whether to use a select control.\n * @param {Object[]} optionsArray Array of available font sizes objects.\n * @param {boolean} disableCustomFontSizes Flag that indicates if custom font sizes are disabled.\n * @return {Object[]|null} Array of font sizes in proper format for the used control.\n */\nexport function getFontSizeOptions(\n\tuseSelectControl,\n\toptionsArray,\n\tdisableCustomFontSizes\n) {\n\tif ( disableCustomFontSizes && ! optionsArray.length ) {\n\t\treturn null;\n\t}\n\treturn useSelectControl\n\t\t? getSelectOptions( optionsArray, disableCustomFontSizes )\n\t\t: getToggleGroupOptions( optionsArray );\n}\n\nfunction getSelectOptions( optionsArray, disableCustomFontSizes ) {\n\tconst options = [\n\t\tDEFAULT_FONT_SIZE_OPTION,\n\t\t...optionsArray,\n\t\t...( disableCustomFontSizes ? [] : [ CUSTOM_FONT_SIZE_OPTION ] ),\n\t];\n\treturn options.map( ( { slug, name, size } ) => ( {\n\t\tkey: slug,\n\t\tname,\n\t\tsize,\n\t\t__experimentalHint:\n\t\t\tsize && isSimpleCssValue( size ) && parseFloat( size ),\n\t} ) );\n}\n\n/**\n * Build options for the toggle group options.\n *\n * @param {Array} optionsArray An array of font size options.\n * @param {string[]} labelAliases An array of alternative labels.\n * @return {Array} Remapped optionsArray.\n */\nexport function getToggleGroupOptions(\n\toptionsArray,\n\tlabelAliases = FONT_SIZES_ALIASES\n) {\n\treturn optionsArray.map( ( { slug, size, name }, index ) => {\n\t\treturn {\n\t\t\tkey: slug,\n\t\t\tvalue: size,\n\t\t\tlabel: labelAliases[ index ],\n\t\t\tname,\n\t\t};\n\t} );\n}\n\nexport function getSelectedOption( fontSizes, value ) {\n\tif ( ! value ) {\n\t\treturn DEFAULT_FONT_SIZE_OPTION;\n\t}\n\treturn (\n\t\tfontSizes.find( ( font ) => font.size === value ) ||\n\t\tCUSTOM_FONT_SIZE_OPTION\n\t);\n}\n"]}
@@ -4,7 +4,7 @@ import { createElement } from "@wordpress/element";
4
4
  /**
5
5
  * External dependencies
6
6
  */
7
- import { last, clone, uniq, map, difference, some } from 'lodash';
7
+ import { last, clone, map, some } from 'lodash';
8
8
  import classnames from 'classnames';
9
9
 
10
10
  /**
@@ -14,7 +14,6 @@ import { useEffect, useRef, useState } from '@wordpress/element';
14
14
  import { __, _n, sprintf } from '@wordpress/i18n';
15
15
  import { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';
16
16
  import { speak } from '@wordpress/a11y';
17
- import { BACKSPACE, ENTER, UP, DOWN, LEFT, RIGHT, SPACE, DELETE, ESCAPE } from '@wordpress/keycodes';
18
17
  import isShallowEqual from '@wordpress/is-shallow-equal';
19
18
  /**
20
19
  * Internal dependencies
@@ -69,7 +68,8 @@ export function FormTokenField(props) {
69
68
  __experimentalExpandOnFocus = false,
70
69
  __experimentalValidateInput = () => true,
71
70
  __experimentalShowHowTo = true,
72
- __next36pxDefaultSize = false
71
+ __next36pxDefaultSize = false,
72
+ __experimentalAutoSelectFirstMatch = false
73
73
  } = props;
74
74
  const instanceId = useInstanceId(FormTokenField); // We reset to these initial values again in the onBlur
75
75
 
@@ -102,6 +102,9 @@ export function FormTokenField(props) {
102
102
  useEffect(() => {
103
103
  updateSuggestions(); // eslint-disable-next-line react-hooks/exhaustive-deps
104
104
  }, [incompleteTokenValue]);
105
+ useEffect(() => {
106
+ updateSuggestions(); // eslint-disable-next-line react-hooks/exhaustive-deps
107
+ }, [__experimentalAutoSelectFirstMatch]);
105
108
 
106
109
  if (disabled && isActive) {
107
110
  setIsActive(false);
@@ -158,46 +161,45 @@ export function FormTokenField(props) {
158
161
 
159
162
  if (event.defaultPrevented) {
160
163
  return;
161
- } // TODO: replace to event.code;
162
-
164
+ }
163
165
 
164
- switch (event.keyCode) {
165
- case BACKSPACE:
166
+ switch (event.code) {
167
+ case 'Backspace':
166
168
  preventDefault = handleDeleteKey(deleteTokenBeforeInput);
167
169
  break;
168
170
 
169
- case ENTER:
171
+ case 'Enter':
170
172
  preventDefault = addCurrentToken();
171
173
  break;
172
174
 
173
- case LEFT:
175
+ case 'ArrowLeft':
174
176
  preventDefault = handleLeftArrowKey();
175
177
  break;
176
178
 
177
- case UP:
179
+ case 'ArrowUp':
178
180
  preventDefault = handleUpArrowKey();
179
181
  break;
180
182
 
181
- case RIGHT:
183
+ case 'ArrowRight':
182
184
  preventDefault = handleRightArrowKey();
183
185
  break;
184
186
 
185
- case DOWN:
187
+ case 'ArrowDown':
186
188
  preventDefault = handleDownArrowKey();
187
189
  break;
188
190
 
189
- case DELETE:
191
+ case 'Delete':
190
192
  preventDefault = handleDeleteKey(deleteTokenAfterInput);
191
193
  break;
192
194
 
193
- case SPACE:
195
+ case 'Space':
194
196
  if (tokenizeOnSpace) {
195
197
  preventDefault = addCurrentToken();
196
198
  }
197
199
 
198
200
  break;
199
201
 
200
- case ESCAPE:
202
+ case 'Escape':
201
203
  preventDefault = handleEscapeKey(event);
202
204
  break;
203
205
 
@@ -387,7 +389,7 @@ export function FormTokenField(props) {
387
389
  }
388
390
 
389
391
  function addNewTokens(tokens) {
390
- const tokensToAdd = uniq(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)));
392
+ const tokensToAdd = [...new Set(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)))];
391
393
 
392
394
  if (tokensToAdd.length > 0) {
393
395
  const newValue = clone(value);
@@ -455,7 +457,7 @@ export function FormTokenField(props) {
455
457
  });
456
458
 
457
459
  if (match.length === 0) {
458
- _suggestions = difference(_suggestions, normalizedValue);
460
+ _suggestions = _suggestions.filter(suggestion => !normalizedValue.includes(suggestion));
459
461
  } else {
460
462
  match = match.toLocaleLowerCase();
461
463
 
@@ -508,11 +510,19 @@ export function FormTokenField(props) {
508
510
  const inputHasMinimumChars = incompleteTokenValue.trim().length > 1;
509
511
  const matchingSuggestions = getMatchingSuggestions(incompleteTokenValue);
510
512
  const hasMatchingSuggestions = matchingSuggestions.length > 0;
511
- setIsExpanded(__experimentalExpandOnFocus || inputHasMinimumChars && hasMatchingSuggestions);
513
+
514
+ const shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;
515
+
516
+ setIsExpanded(shouldExpandIfFocuses || inputHasMinimumChars && hasMatchingSuggestions);
512
517
 
513
518
  if (resetSelectedSuggestion) {
514
- setSelectedSuggestionIndex(-1);
515
- setSelectedSuggestionScroll(false);
519
+ if (__experimentalAutoSelectFirstMatch && inputHasMinimumChars && hasMatchingSuggestions) {
520
+ setSelectedSuggestionIndex(0);
521
+ setSelectedSuggestionScroll(true);
522
+ } else {
523
+ setSelectedSuggestionIndex(-1);
524
+ setSelectedSuggestionScroll(false);
525
+ }
516
526
  }
517
527
 
518
528
  if (inputHasMinimumChars) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-token-field/index.tsx"],"names":["last","clone","uniq","map","difference","some","classnames","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","BACKSPACE","ENTER","UP","DOWN","LEFT","RIGHT","SPACE","DELETE","ESCAPE","isShallowEqual","Token","TokenInput","TokensAndInputWrapperFlex","SuggestionsList","FlexItem","StyledLabel","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","__next36pxDefaultSize","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","onKeyDown","preventDefault","defaultPrevented","keyCode","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","charCode","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","addNewToken","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","toLocaleLowerCase","forEach","push","concat","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","title","onMouseEnter","onMouseLeave","inputProps","key","classes","tokenFieldProps","tabIndex","Object","assign"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { last, clone, uniq, map, difference, some } from 'lodash';\nimport classnames from 'classnames';\nimport type { KeyboardEvent, MouseEvent, TouchEvent } 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 {\n\tBACKSPACE,\n\tENTER,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tSPACE,\n\tDELETE,\n\tESCAPE,\n} from '@wordpress/keycodes';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport { StyledLabel } from '../base-control/styles/base-control-styles';\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](http://facebook.github.io/react/docs/forms.html) 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__next36pxDefaultSize = false,\n\t} = props;\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\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ incompleteTokenValue ] );\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() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\tsetIsActive( false );\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\t\t\tsetIsExpanded( false );\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\t// TODO: replace to event.code;\n\t\tswitch ( event.keyCode ) {\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 LEFT:\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase UP:\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase RIGHT:\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase DOWN:\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\t\t// TODO: replace to event.code;\n\t\tswitch ( event.charCode ) {\n\t\t\tcase 44: // Comma.\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 = last( items ) || '';\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 = uniq(\n\t\t\ttokens\n\t\t\t\t.map( saveTransform )\n\t\t\t\t.filter( Boolean )\n\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t);\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = clone( 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 ) {\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 = difference( _suggestions, normalizedValue );\n\t\t} else {\n\t\t\tmatch = match.toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion.toLocaleLowerCase().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 some( value, ( 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\tsetIsExpanded(\n\t\t\t__experimentalExpandOnFocus ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\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 = map( value, 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\tkey: 'input',\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\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 = classnames(\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,\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<StyledLabel\n\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</StyledLabel>\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={ true }\n\t\t\t\t\t__next36pxDefaultSize={ __next36pxDefaultSize }\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{ __experimentalShowHowTo && (\n\t\t\t\t<p\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>\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</p>\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"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-token-field/index.tsx"],"names":["last","clone","map","some","classnames","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","isShallowEqual","Token","TokenInput","TokensAndInputWrapperFlex","SuggestionsList","FlexItem","StyledLabel","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","__next36pxDefaultSize","__experimentalAutoSelectFirstMatch","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","onKeyDown","preventDefault","defaultPrevented","code","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","charCode","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","addNewToken","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","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","toLocaleLowerCase","forEach","push","concat","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","title","onMouseEnter","onMouseLeave","inputProps","key","classes","tokenFieldProps","tabIndex","Object","assign"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { last, clone, map, some } from 'lodash';\nimport classnames from 'classnames';\nimport type { KeyboardEvent, MouseEvent, TouchEvent } 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';\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 { StyledLabel } from '../base-control/styles/base-control-styles';\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](http://facebook.github.io/react/docs/forms.html) 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__next36pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t} = props;\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\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\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() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\tsetIsActive( false );\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\t\t\tsetIsExpanded( false );\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.code ) {\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\t\t// TODO: replace to event.code;\n\t\tswitch ( event.charCode ) {\n\t\t\tcase 44: // Comma.\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 = last( items ) || '';\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 = clone( 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 ) {\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.toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion.toLocaleLowerCase().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 some( value, ( 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 = map( value, 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\tkey: 'input',\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\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 = classnames(\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,\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<StyledLabel\n\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</StyledLabel>\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={ true }\n\t\t\t\t\t__next36pxDefaultSize={ __next36pxDefaultSize }\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{ __experimentalShowHowTo && (\n\t\t\t\t<p\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>\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</p>\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"]}
@@ -11,6 +11,7 @@ import { map } from 'lodash';
11
11
 
12
12
  import { __, sprintf } from '@wordpress/i18n';
13
13
  import { useCallback, useMemo } from '@wordpress/element';
14
+ import deprecated from '@wordpress/deprecated';
14
15
  /**
15
16
  * Internal dependencies
16
17
  */
@@ -19,6 +20,7 @@ import CircularOptionPicker from '../circular-option-picker';
19
20
  import CustomGradientPicker from '../custom-gradient-picker';
20
21
  import { VStack } from '../v-stack';
21
22
  import { ColorHeading } from '../color-palette/styles';
23
+ import { Spacer } from '../spacer';
22
24
 
23
25
  function SingleOrigin(_ref) {
24
26
  let {
@@ -95,6 +97,8 @@ function MultipleOrigin(_ref3) {
95
97
 
96
98
  export default function GradientPicker(_ref5) {
97
99
  let {
100
+ /** Start opting into the new margin-free styles that will become the default in a future version. */
101
+ __nextHasNoMargin = false,
98
102
  className,
99
103
  gradients,
100
104
  onChange,
@@ -106,6 +110,19 @@ export default function GradientPicker(_ref5) {
106
110
  } = _ref5;
107
111
  const clearGradient = useCallback(() => onChange(undefined), [onChange]);
108
112
  const Component = __experimentalHasMultipleOrigins && gradients !== null && gradients !== void 0 && gradients.length ? MultipleOrigin : SingleOrigin;
113
+
114
+ if (!__nextHasNoMargin) {
115
+ deprecated('Outer margin styles for wp.components.GradientPicker', {
116
+ since: '6.1',
117
+ version: '6.4',
118
+ hint: 'Set the `__nextHasNoMargin` prop to true to start opting into the new styles, which will become the default in a future version'
119
+ });
120
+ } // Can be removed when deprecation period is over
121
+
122
+
123
+ const deprecatedMarginSpacerProps = !__nextHasNoMargin ? {
124
+ marginTop: 3
125
+ } : {};
109
126
  return createElement(Component, {
110
127
  className: className,
111
128
  clearable: clearable,
@@ -116,11 +133,15 @@ export default function GradientPicker(_ref5) {
116
133
  actions: clearable && ((gradients === null || gradients === void 0 ? void 0 : gradients.length) || !disableCustomGradients) && createElement(CircularOptionPicker.ButtonAction, {
117
134
  onClick: clearGradient
118
135
  }, __('Clear')),
119
- content: !disableCustomGradients && createElement(CustomGradientPicker, {
136
+ content: !disableCustomGradients && createElement(Spacer, _extends({
137
+ marginTop: gradients !== null && gradients !== void 0 && gradients.length ? 3 : 0,
138
+ marginBottom: 0
139
+ }, deprecatedMarginSpacerProps), createElement(CustomGradientPicker, {
140
+ __nextHasNoMargin: __nextHasNoMargin,
120
141
  __experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar,
121
142
  value: value,
122
143
  onChange: onChange
123
- })
144
+ }))
124
145
  });
125
146
  }
126
147
  //# sourceMappingURL=index.js.map