@wordpress/components 19.12.0 → 19.13.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 (717) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/CONTRIBUTING.md +94 -12
  3. package/build/alignment-matrix-control/index.js +3 -3
  4. package/build/alignment-matrix-control/index.js.map +1 -1
  5. package/build/angle-picker-control/index.js +2 -2
  6. package/build/angle-picker-control/index.js.map +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  8. package/build/border-box-control/utils.js.map +1 -1
  9. package/build/border-control/border-control/hook.js.map +1 -1
  10. package/build/box-control/all-input-control.js +6 -10
  11. package/build/box-control/all-input-control.js.map +1 -1
  12. package/build/box-control/axial-input-controls.js.map +1 -1
  13. package/build/box-control/index.js +3 -7
  14. package/build/box-control/index.js.map +1 -1
  15. package/build/box-control/input-controls.js +6 -10
  16. package/build/box-control/input-controls.js.map +1 -1
  17. package/build/box-control/unit-control.js +4 -4
  18. package/build/box-control/unit-control.js.map +1 -1
  19. package/build/button/index.native.js +1 -3
  20. package/build/button/index.native.js.map +1 -1
  21. package/build/checkbox-control/index.js.map +1 -1
  22. package/build/color-picker/index.native.js.map +1 -1
  23. package/build/combobox-control/index.js +4 -2
  24. package/build/combobox-control/index.js.map +1 -1
  25. package/build/confirm-dialog/component.js.map +1 -1
  26. package/build/custom-gradient-bar/constants.js +1 -3
  27. package/build/custom-gradient-bar/constants.js.map +1 -1
  28. package/build/custom-gradient-bar/control-points.js +15 -8
  29. package/build/custom-gradient-bar/control-points.js.map +1 -1
  30. package/build/custom-gradient-bar/index.js +5 -5
  31. package/build/custom-gradient-bar/index.js.map +1 -1
  32. package/build/custom-gradient-bar/utils.js +5 -7
  33. package/build/custom-gradient-bar/utils.js.map +1 -1
  34. package/build/custom-gradient-picker/utils.js.map +1 -1
  35. package/build/custom-select-control/index.js.map +1 -1
  36. package/build/date-time/date/index.js +4 -4
  37. package/build/date-time/date/index.js.map +1 -1
  38. package/build/date-time/date-time/index.js +3 -3
  39. package/build/date-time/date-time/index.js.map +1 -1
  40. package/build/dimension-control/index.js +1 -3
  41. package/build/dimension-control/index.js.map +1 -1
  42. package/build/divider/styles.js +5 -5
  43. package/build/divider/styles.js.map +1 -1
  44. package/build/draggable/index.js.map +1 -1
  45. package/build/draggable/index.native.js +6 -1
  46. package/build/draggable/index.native.js.map +1 -1
  47. package/build/drop-zone/provider.js.map +1 -1
  48. package/build/dropdown/index.js +2 -2
  49. package/build/dropdown/index.js.map +1 -1
  50. package/build/dropdown-menu/index.js +13 -2
  51. package/build/dropdown-menu/index.js.map +1 -1
  52. package/build/dropdown-menu/index.native.js +13 -2
  53. package/build/dropdown-menu/index.native.js.map +1 -1
  54. package/build/external-link/index.js +20 -8
  55. package/build/external-link/index.js.map +1 -1
  56. package/build/external-link/styles/external-link-styles.js +3 -3
  57. package/build/external-link/styles/external-link-styles.js.map +1 -1
  58. package/build/external-link/types.js +6 -0
  59. package/build/external-link/types.js.map +1 -0
  60. package/build/flex/flex/hook.js +9 -5
  61. package/build/flex/flex/hook.js.map +1 -1
  62. package/build/focal-point-picker/controls.js +3 -7
  63. package/build/focal-point-picker/controls.js.map +1 -1
  64. package/build/focal-point-picker/index.js.map +1 -1
  65. package/build/focal-point-picker/media.js +4 -8
  66. package/build/focal-point-picker/media.js.map +1 -1
  67. package/build/font-size-picker/index.js +1 -1
  68. package/build/font-size-picker/index.js.map +1 -1
  69. package/build/form-toggle/index.js +6 -4
  70. package/build/form-toggle/index.js.map +1 -1
  71. package/build/form-token-field/index.js +328 -359
  72. package/build/form-token-field/index.js.map +1 -1
  73. package/build/form-token-field/suggestions-list.js +26 -20
  74. package/build/form-token-field/suggestions-list.js.map +1 -1
  75. package/build/form-token-field/token-input.js +39 -53
  76. package/build/form-token-field/token-input.js.map +1 -1
  77. package/build/form-token-field/token.js +3 -3
  78. package/build/form-token-field/token.js.map +1 -1
  79. package/build/form-token-field/types.js +6 -0
  80. package/build/form-token-field/types.js.map +1 -0
  81. package/build/gradient-picker/index.js.map +1 -1
  82. package/build/heading/hook.js.map +1 -1
  83. package/build/higher-order/navigate-regions/index.js.map +1 -1
  84. package/build/higher-order/with-focus-return/index.js.map +1 -1
  85. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  86. package/build/icon/index.js.map +1 -1
  87. package/build/input-control/index.js +5 -5
  88. package/build/input-control/index.js.map +1 -1
  89. package/build/input-control/input-field.js +10 -10
  90. package/build/input-control/input-field.js.map +1 -1
  91. package/build/input-control/reducer/reducer.js.map +1 -1
  92. package/build/input-control/utils.js +1 -1
  93. package/build/input-control/utils.js.map +1 -1
  94. package/build/menu-items-choice/index.js +3 -7
  95. package/build/menu-items-choice/index.js.map +1 -1
  96. package/build/mobile/bottom-sheet/bottom-sheet-context.native.js.map +1 -1
  97. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  98. package/build/mobile/bottom-sheet/cycle-picker-cell.native.js +1 -7
  99. package/build/mobile/bottom-sheet/cycle-picker-cell.native.js.map +1 -1
  100. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  101. package/build/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  102. package/build/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  103. package/build/mobile/color-settings/index.native.js.map +1 -1
  104. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  105. package/build/mobile/gradient/index.native.js.map +1 -1
  106. package/build/mobile/html-text-input/index.native.js.map +1 -1
  107. package/build/mobile/inserter-button/index.native.js.map +1 -1
  108. package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -1
  109. package/build/mobile/media-edit/index.native.js.map +1 -1
  110. package/build/mobile/segmented-control/index.native.js +1 -1
  111. package/build/mobile/segmented-control/index.native.js.map +1 -1
  112. package/build/modal/index.js +1 -1
  113. package/build/modal/index.js.map +1 -1
  114. package/build/navigable-container/container.js +4 -2
  115. package/build/navigable-container/container.js.map +1 -1
  116. package/build/navigation/context.js +12 -16
  117. package/build/navigation/context.js.map +1 -1
  118. package/build/navigation/index.js +3 -3
  119. package/build/navigation/index.js.map +1 -1
  120. package/build/navigation/item/index.js +3 -3
  121. package/build/navigation/item/index.js.map +1 -1
  122. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  123. package/build/navigator/navigator-button/hook.js.map +1 -1
  124. package/build/navigator/navigator-provider/component.js +1 -1
  125. package/build/navigator/navigator-provider/component.js.map +1 -1
  126. package/build/navigator/navigator-screen/component.js +1 -1
  127. package/build/navigator/navigator-screen/component.js.map +1 -1
  128. package/build/notice/index.js +5 -5
  129. package/build/notice/index.js.map +1 -1
  130. package/build/notice/list.js +4 -2
  131. package/build/notice/list.js.map +1 -1
  132. package/build/panel/body.js +3 -3
  133. package/build/panel/body.js.map +1 -1
  134. package/build/placeholder/index.js +26 -12
  135. package/build/placeholder/index.js.map +1 -1
  136. package/build/radio-control/index.js +43 -7
  137. package/build/radio-control/index.js.map +1 -1
  138. package/build/radio-control/types.js +6 -0
  139. package/build/radio-control/types.js.map +1 -0
  140. package/build/range-control/index.js +8 -6
  141. package/build/range-control/index.js.map +1 -1
  142. package/build/range-control/input-range.js +6 -10
  143. package/build/range-control/input-range.js.map +1 -1
  144. package/build/range-control/utils.js +7 -5
  145. package/build/range-control/utils.js.map +1 -1
  146. package/build/resizable-box/resize-tooltip/index.js +3 -3
  147. package/build/resizable-box/resize-tooltip/index.js.map +1 -1
  148. package/build/resizable-box/resize-tooltip/utils.js +4 -7
  149. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  150. package/build/responsive-wrapper/index.js.map +1 -1
  151. package/build/select-control/index.js +5 -3
  152. package/build/select-control/index.js.map +1 -1
  153. package/build/slot-fill/fill.js +1 -7
  154. package/build/slot-fill/fill.js.map +1 -1
  155. package/build/slot-fill/slot.js +14 -3
  156. package/build/slot-fill/slot.js.map +1 -1
  157. package/build/snackbar/index.js +7 -7
  158. package/build/snackbar/index.js.map +1 -1
  159. package/build/snackbar/list.js +3 -1
  160. package/build/snackbar/list.js.map +1 -1
  161. package/build/tab-panel/index.js +3 -1
  162. package/build/tab-panel/index.js.map +1 -1
  163. package/build/text/hook.js +4 -4
  164. package/build/text/hook.js.map +1 -1
  165. package/build/text/utils.js.map +1 -1
  166. package/build/toggle-control/index.js +1 -3
  167. package/build/toggle-control/index.js.map +1 -1
  168. package/build/toggle-control/index.native.js +1 -7
  169. package/build/toggle-control/index.native.js.map +1 -1
  170. package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +1 -1
  171. package/build/toolbar/index.js.map +1 -1
  172. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  173. package/build/tools-panel/tools-panel-header/hook.js.map +1 -1
  174. package/build/tooltip/index.js +2 -1
  175. package/build/tooltip/index.js.map +1 -1
  176. package/build/tree-grid/roving-tab-index-item.js.map +1 -1
  177. package/build/tree-select/index.js +57 -4
  178. package/build/tree-select/index.js.map +1 -1
  179. package/build/tree-select/types.js +6 -0
  180. package/build/tree-select/types.js.map +1 -0
  181. package/build/ui/form-group/form-group-content.js.map +1 -1
  182. package/build/unit-control/index.js.map +1 -1
  183. package/build/utils/unit-values.js.map +1 -1
  184. package/build/utils/values.js.map +1 -1
  185. package/build/z-stack/component.js +22 -3
  186. package/build/z-stack/component.js.map +1 -1
  187. package/build/z-stack/types.js +6 -0
  188. package/build/z-stack/types.js.map +1 -0
  189. package/build-module/alignment-matrix-control/index.js +2 -1
  190. package/build-module/alignment-matrix-control/index.js.map +1 -1
  191. package/build-module/angle-picker-control/index.js +1 -1
  192. package/build-module/angle-picker-control/index.js.map +1 -1
  193. package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  194. package/build-module/border-box-control/utils.js.map +1 -1
  195. package/build-module/border-control/border-control/hook.js.map +1 -1
  196. package/build-module/box-control/all-input-control.js +3 -5
  197. package/build-module/box-control/all-input-control.js.map +1 -1
  198. package/build-module/box-control/axial-input-controls.js.map +1 -1
  199. package/build-module/box-control/index.js +2 -5
  200. package/build-module/box-control/index.js.map +1 -1
  201. package/build-module/box-control/input-controls.js +3 -5
  202. package/build-module/box-control/input-controls.js.map +1 -1
  203. package/build-module/box-control/unit-control.js +3 -1
  204. package/build-module/box-control/unit-control.js.map +1 -1
  205. package/build-module/button/index.native.js +1 -2
  206. package/build-module/button/index.native.js.map +1 -1
  207. package/build-module/checkbox-control/index.js.map +1 -1
  208. package/build-module/color-picker/index.native.js.map +1 -1
  209. package/build-module/combobox-control/index.js +5 -2
  210. package/build-module/combobox-control/index.js.map +1 -1
  211. package/build-module/confirm-dialog/component.js.map +1 -1
  212. package/build-module/custom-gradient-bar/constants.js +0 -1
  213. package/build-module/custom-gradient-bar/constants.js.map +1 -1
  214. package/build-module/custom-gradient-bar/control-points.js +16 -9
  215. package/build-module/custom-gradient-bar/control-points.js.map +1 -1
  216. package/build-module/custom-gradient-bar/index.js +6 -6
  217. package/build-module/custom-gradient-bar/index.js.map +1 -1
  218. package/build-module/custom-gradient-bar/utils.js +6 -8
  219. package/build-module/custom-gradient-bar/utils.js.map +1 -1
  220. package/build-module/custom-gradient-picker/utils.js.map +1 -1
  221. package/build-module/custom-select-control/index.js.map +1 -1
  222. package/build-module/date-time/date/index.js +4 -3
  223. package/build-module/date-time/date/index.js.map +1 -1
  224. package/build-module/date-time/date-time/index.js +2 -1
  225. package/build-module/date-time/date-time/index.js.map +1 -1
  226. package/build-module/dimension-control/index.js +1 -2
  227. package/build-module/dimension-control/index.js.map +1 -1
  228. package/build-module/divider/styles.js +5 -5
  229. package/build-module/divider/styles.js.map +1 -1
  230. package/build-module/draggable/index.js.map +1 -1
  231. package/build-module/draggable/index.native.js +6 -1
  232. package/build-module/draggable/index.native.js.map +1 -1
  233. package/build-module/drop-zone/provider.js.map +1 -1
  234. package/build-module/dropdown/index.js +2 -2
  235. package/build-module/dropdown/index.js.map +1 -1
  236. package/build-module/dropdown-menu/index.js +12 -1
  237. package/build-module/dropdown-menu/index.js.map +1 -1
  238. package/build-module/dropdown-menu/index.native.js +12 -1
  239. package/build-module/dropdown-menu/index.native.js.map +1 -1
  240. package/build-module/external-link/index.js +22 -7
  241. package/build-module/external-link/index.js.map +1 -1
  242. package/build-module/external-link/styles/external-link-styles.js +3 -3
  243. package/build-module/external-link/styles/external-link-styles.js.map +1 -1
  244. package/build-module/external-link/types.js +2 -0
  245. package/build-module/external-link/types.js.map +1 -0
  246. package/build-module/flex/flex/hook.js +7 -5
  247. package/build-module/flex/flex/hook.js.map +1 -1
  248. package/build-module/focal-point-picker/controls.js +3 -5
  249. package/build-module/focal-point-picker/controls.js.map +1 -1
  250. package/build-module/focal-point-picker/index.js.map +1 -1
  251. package/build-module/focal-point-picker/media.js +3 -5
  252. package/build-module/focal-point-picker/media.js.map +1 -1
  253. package/build-module/font-size-picker/index.js +1 -1
  254. package/build-module/font-size-picker/index.js.map +1 -1
  255. package/build-module/form-toggle/index.js +1 -1
  256. package/build-module/form-toggle/index.js.map +1 -1
  257. package/build-module/form-token-field/index.js +329 -361
  258. package/build-module/form-token-field/index.js.map +1 -1
  259. package/build-module/form-token-field/suggestions-list.js +32 -23
  260. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  261. package/build-module/form-token-field/token-input.js +43 -58
  262. package/build-module/form-token-field/token-input.js.map +1 -1
  263. package/build-module/form-token-field/token.js +3 -1
  264. package/build-module/form-token-field/token.js.map +1 -1
  265. package/build-module/form-token-field/types.js +2 -0
  266. package/build-module/form-token-field/types.js.map +1 -0
  267. package/build-module/gradient-picker/index.js.map +1 -1
  268. package/build-module/heading/hook.js.map +1 -1
  269. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  270. package/build-module/higher-order/with-focus-return/index.js.map +1 -1
  271. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  272. package/build-module/icon/index.js.map +1 -1
  273. package/build-module/input-control/index.js +2 -1
  274. package/build-module/input-control/index.js.map +1 -1
  275. package/build-module/input-control/input-field.js +2 -1
  276. package/build-module/input-control/input-field.js.map +1 -1
  277. package/build-module/input-control/reducer/reducer.js.map +1 -1
  278. package/build-module/input-control/utils.js +1 -1
  279. package/build-module/input-control/utils.js.map +1 -1
  280. package/build-module/menu-items-choice/index.js +3 -5
  281. package/build-module/menu-items-choice/index.js.map +1 -1
  282. package/build-module/mobile/bottom-sheet/bottom-sheet-context.native.js.map +1 -1
  283. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  284. package/build-module/mobile/bottom-sheet/cycle-picker-cell.native.js +1 -6
  285. package/build-module/mobile/bottom-sheet/cycle-picker-cell.native.js.map +1 -1
  286. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  287. package/build-module/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  288. package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
  289. package/build-module/mobile/color-settings/index.native.js.map +1 -1
  290. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  291. package/build-module/mobile/gradient/index.native.js.map +1 -1
  292. package/build-module/mobile/html-text-input/index.native.js.map +1 -1
  293. package/build-module/mobile/inserter-button/index.native.js.map +1 -1
  294. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -1
  295. package/build-module/mobile/media-edit/index.native.js.map +1 -1
  296. package/build-module/mobile/segmented-control/index.native.js +2 -2
  297. package/build-module/mobile/segmented-control/index.native.js.map +1 -1
  298. package/build-module/modal/index.js +1 -1
  299. package/build-module/modal/index.js.map +1 -1
  300. package/build-module/navigable-container/container.js +5 -2
  301. package/build-module/navigable-container/container.js.map +1 -1
  302. package/build-module/navigation/context.js +3 -5
  303. package/build-module/navigation/context.js.map +1 -1
  304. package/build-module/navigation/index.js +3 -1
  305. package/build-module/navigation/index.js.map +1 -1
  306. package/build-module/navigation/item/index.js +3 -1
  307. package/build-module/navigation/item/index.js.map +1 -1
  308. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  309. package/build-module/navigator/navigator-button/hook.js.map +1 -1
  310. package/build-module/navigator/navigator-provider/component.js +1 -1
  311. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  312. package/build-module/navigator/navigator-screen/component.js +1 -1
  313. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  314. package/build-module/notice/index.js +2 -1
  315. package/build-module/notice/index.js.map +1 -1
  316. package/build-module/notice/list.js +4 -1
  317. package/build-module/notice/list.js.map +1 -1
  318. package/build-module/panel/body.js +3 -1
  319. package/build-module/panel/body.js.map +1 -1
  320. package/build-module/placeholder/index.js +24 -11
  321. package/build-module/placeholder/index.js.map +1 -1
  322. package/build-module/radio-control/index.js +40 -7
  323. package/build-module/radio-control/index.js.map +1 -1
  324. package/build-module/radio-control/types.js +2 -0
  325. package/build-module/radio-control/types.js.map +1 -0
  326. package/build-module/range-control/index.js +4 -2
  327. package/build-module/range-control/index.js.map +1 -1
  328. package/build-module/range-control/input-range.js +2 -5
  329. package/build-module/range-control/input-range.js.map +1 -1
  330. package/build-module/range-control/utils.js +4 -1
  331. package/build-module/range-control/utils.js.map +1 -1
  332. package/build-module/resizable-box/resize-tooltip/index.js +2 -1
  333. package/build-module/resizable-box/resize-tooltip/index.js.map +1 -1
  334. package/build-module/resizable-box/resize-tooltip/utils.js +3 -5
  335. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  336. package/build-module/responsive-wrapper/index.js.map +1 -1
  337. package/build-module/select-control/index.js +3 -1
  338. package/build-module/select-control/index.js.map +1 -1
  339. package/build-module/slot-fill/fill.js +1 -6
  340. package/build-module/slot-fill/fill.js.map +1 -1
  341. package/build-module/slot-fill/slot.js +12 -2
  342. package/build-module/slot-fill/slot.js.map +1 -1
  343. package/build-module/snackbar/index.js +3 -1
  344. package/build-module/snackbar/index.js.map +1 -1
  345. package/build-module/snackbar/list.js +4 -1
  346. package/build-module/snackbar/list.js.map +1 -1
  347. package/build-module/tab-panel/index.js +3 -1
  348. package/build-module/tab-panel/index.js.map +1 -1
  349. package/build-module/text/hook.js +4 -4
  350. package/build-module/text/hook.js.map +1 -1
  351. package/build-module/text/utils.js.map +1 -1
  352. package/build-module/toggle-control/index.js +1 -2
  353. package/build-module/toggle-control/index.js.map +1 -1
  354. package/build-module/toggle-control/index.native.js +1 -6
  355. package/build-module/toggle-control/index.native.js.map +1 -1
  356. package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +1 -1
  357. package/build-module/toolbar/index.js.map +1 -1
  358. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  359. package/build-module/tools-panel/tools-panel-header/hook.js.map +1 -1
  360. package/build-module/tooltip/index.js +2 -1
  361. package/build-module/tooltip/index.js.map +1 -1
  362. package/build-module/tree-grid/roving-tab-index-item.js.map +1 -1
  363. package/build-module/tree-select/index.js +53 -3
  364. package/build-module/tree-select/index.js.map +1 -1
  365. package/build-module/tree-select/types.js +2 -0
  366. package/build-module/tree-select/types.js.map +1 -0
  367. package/build-module/ui/form-group/form-group-content.js.map +1 -1
  368. package/build-module/unit-control/index.js.map +1 -1
  369. package/build-module/utils/unit-values.js.map +1 -1
  370. package/build-module/utils/values.js.map +1 -1
  371. package/build-module/z-stack/component.js +21 -2
  372. package/build-module/z-stack/component.js.map +1 -1
  373. package/build-module/z-stack/types.js +2 -0
  374. package/build-module/z-stack/types.js.map +1 -0
  375. package/build-style/style-rtl.css +32 -3
  376. package/build-style/style.css +32 -4
  377. package/build-types/base-control/stories/index.d.ts.map +1 -1
  378. package/build-types/base-field/hook.d.ts +0 -1
  379. package/build-types/base-field/hook.d.ts.map +1 -1
  380. package/build-types/border-box-control/border-box-control/hook.d.ts +0 -1
  381. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  382. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -1
  383. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +0 -1
  384. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  385. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +0 -1
  386. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  387. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +0 -1
  388. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  389. package/build-types/border-box-control/utils.d.ts.map +1 -1
  390. package/build-types/border-control/border-control/hook.d.ts +0 -1
  391. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  392. package/build-types/border-control/border-control-dropdown/hook.d.ts +0 -1
  393. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  394. package/build-types/border-control/border-control-style-picker/hook.d.ts +0 -1
  395. package/build-types/border-control/border-control-style-picker/hook.d.ts.map +1 -1
  396. package/build-types/button-group/index.d.ts +1 -1
  397. package/build-types/button-group/index.d.ts.map +1 -1
  398. package/build-types/card/card/hook.d.ts +0 -1
  399. package/build-types/card/card/hook.d.ts.map +1 -1
  400. package/build-types/card/card-body/hook.d.ts +0 -1
  401. package/build-types/card/card-body/hook.d.ts.map +1 -1
  402. package/build-types/card/card-divider/hook.d.ts +0 -1
  403. package/build-types/card/card-divider/hook.d.ts.map +1 -1
  404. package/build-types/card/card-footer/hook.d.ts +0 -1
  405. package/build-types/card/card-footer/hook.d.ts.map +1 -1
  406. package/build-types/card/card-header/hook.d.ts +0 -1
  407. package/build-types/card/card-header/hook.d.ts.map +1 -1
  408. package/build-types/card/card-media/hook.d.ts +0 -1
  409. package/build-types/card/card-media/hook.d.ts.map +1 -1
  410. package/build-types/checkbox-control/index.d.ts.map +1 -1
  411. package/build-types/checkbox-control/stories/index.d.ts.map +1 -1
  412. package/build-types/color-picker/styles.d.ts +7 -7
  413. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  414. package/build-types/date-time/date/index.d.ts.map +1 -1
  415. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  416. package/build-types/date-time/stories/date-time.d.ts.map +1 -1
  417. package/build-types/date-time/stories/date.d.ts.map +1 -1
  418. package/build-types/date-time/time/styles.d.ts +1 -1
  419. package/build-types/divider/styles.d.ts.map +1 -1
  420. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  421. package/build-types/elevation/hook.d.ts +0 -1
  422. package/build-types/elevation/hook.d.ts.map +1 -1
  423. package/build-types/external-link/index.d.ts +17 -0
  424. package/build-types/external-link/index.d.ts.map +1 -0
  425. package/build-types/external-link/stories/index.d.ts +12 -0
  426. package/build-types/external-link/stories/index.d.ts.map +1 -0
  427. package/build-types/external-link/styles/external-link-styles.d.ts +10 -0
  428. package/build-types/external-link/styles/external-link-styles.d.ts.map +1 -0
  429. package/build-types/external-link/types.d.ts +15 -0
  430. package/build-types/external-link/types.d.ts.map +1 -0
  431. package/build-types/flex/flex/hook.d.ts +0 -1
  432. package/build-types/flex/flex/hook.d.ts.map +1 -1
  433. package/build-types/flex/flex-block/hook.d.ts +0 -1
  434. package/build-types/flex/flex-block/hook.d.ts.map +1 -1
  435. package/build-types/flex/flex-item/hook.d.ts +0 -1
  436. package/build-types/flex/flex-item/hook.d.ts.map +1 -1
  437. package/build-types/form-token-field/index.d.ts +15 -0
  438. package/build-types/form-token-field/index.d.ts.map +1 -0
  439. package/build-types/form-token-field/stories/index.d.ts +13 -0
  440. package/build-types/form-token-field/stories/index.d.ts.map +1 -0
  441. package/build-types/form-token-field/suggestions-list.d.ts +10 -0
  442. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -0
  443. package/build-types/form-token-field/test/lib/fixtures.d.ts +26 -0
  444. package/build-types/form-token-field/test/lib/fixtures.d.ts.map +1 -0
  445. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts +18 -0
  446. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts.map +1 -0
  447. package/build-types/form-token-field/token-input.d.ts +12 -0
  448. package/build-types/form-token-field/token-input.d.ts.map +1 -0
  449. package/build-types/form-token-field/token.d.ts +4 -0
  450. package/build-types/form-token-field/token.d.ts.map +1 -0
  451. package/build-types/form-token-field/types.d.ts +176 -0
  452. package/build-types/form-token-field/types.d.ts.map +1 -0
  453. package/build-types/grid/hook.d.ts +0 -1
  454. package/build-types/grid/hook.d.ts.map +1 -1
  455. package/build-types/h-stack/hook.d.ts +0 -1
  456. package/build-types/h-stack/hook.d.ts.map +1 -1
  457. package/build-types/heading/hook.d.ts +0 -1
  458. package/build-types/heading/hook.d.ts.map +1 -1
  459. package/build-types/higher-order/with-focus-outside/index.d.ts +1 -1
  460. package/build-types/input-control/index.d.ts +1 -1
  461. package/build-types/input-control/index.d.ts.map +1 -1
  462. package/build-types/input-control/input-field.d.ts +1 -1
  463. package/build-types/input-control/input-field.d.ts.map +1 -1
  464. package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
  465. package/build-types/input-control/stories/index.d.ts +5 -5
  466. package/build-types/input-control/stories/index.d.ts.map +1 -1
  467. package/build-types/item-group/item/hook.d.ts +0 -1
  468. package/build-types/item-group/item/hook.d.ts.map +1 -1
  469. package/build-types/item-group/item-group/hook.d.ts +0 -1
  470. package/build-types/item-group/item-group/hook.d.ts.map +1 -1
  471. package/build-types/navigator/navigator-back-button/hook.d.ts +0 -1
  472. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  473. package/build-types/navigator/navigator-button/hook.d.ts +0 -1
  474. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  475. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  476. package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
  477. package/build-types/radio-control/index.d.ts +31 -0
  478. package/build-types/radio-control/index.d.ts.map +1 -0
  479. package/build-types/radio-control/stories/index.d.ts +12 -0
  480. package/build-types/radio-control/stories/index.d.ts.map +1 -0
  481. package/build-types/radio-control/types.d.ts +29 -0
  482. package/build-types/radio-control/types.d.ts.map +1 -0
  483. package/build-types/range-control/index.d.ts +5 -5
  484. package/build-types/range-control/index.d.ts.map +1 -1
  485. package/build-types/range-control/input-range.d.ts +4 -4
  486. package/build-types/range-control/input-range.d.ts.map +1 -1
  487. package/build-types/range-control/utils.d.ts.map +1 -1
  488. package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
  489. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  490. package/build-types/scrollable/hook.d.ts +0 -1
  491. package/build-types/scrollable/hook.d.ts.map +1 -1
  492. package/build-types/select-control/index.d.ts +1 -1
  493. package/build-types/select-control/index.d.ts.map +1 -1
  494. package/build-types/select-control/stories/index.d.ts +3 -3
  495. package/build-types/select-control/stories/index.d.ts.map +1 -1
  496. package/build-types/slot-fill/fill.d.ts.map +1 -1
  497. package/build-types/slot-fill/slot.d.ts.map +1 -1
  498. package/build-types/spacer/hook.d.ts +0 -1
  499. package/build-types/spacer/hook.d.ts.map +1 -1
  500. package/build-types/surface/hook.d.ts +0 -1
  501. package/build-types/surface/hook.d.ts.map +1 -1
  502. package/build-types/text/hook.d.ts +0 -1
  503. package/build-types/text/hook.d.ts.map +1 -1
  504. package/build-types/text/utils.d.ts.map +1 -1
  505. package/build-types/text-control/index.d.ts +1 -1
  506. package/build-types/text-control/index.d.ts.map +1 -1
  507. package/build-types/text-control/stories/index.d.ts.map +1 -1
  508. package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts.map +1 -1
  509. package/build-types/tools-panel/tools-panel/hook.d.ts +0 -1
  510. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  511. package/build-types/tools-panel/tools-panel-header/hook.d.ts +0 -1
  512. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  513. package/build-types/tools-panel/tools-panel-item/hook.d.ts +0 -1
  514. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  515. package/build-types/tooltip/index.d.ts.map +1 -1
  516. package/build-types/tree-select/index.d.ts +53 -0
  517. package/build-types/tree-select/index.d.ts.map +1 -0
  518. package/build-types/tree-select/stories/index.d.ts +12 -0
  519. package/build-types/tree-select/stories/index.d.ts.map +1 -0
  520. package/build-types/tree-select/types.d.ts +30 -0
  521. package/build-types/tree-select/types.d.ts.map +1 -0
  522. package/build-types/truncate/hook.d.ts +0 -1
  523. package/build-types/truncate/hook.d.ts.map +1 -1
  524. package/build-types/ui/context/wordpress-component.d.ts.map +1 -1
  525. package/build-types/ui/control-group/hook.d.ts +0 -1
  526. package/build-types/ui/control-group/hook.d.ts.map +1 -1
  527. package/build-types/ui/control-label/hook.d.ts +0 -1
  528. package/build-types/ui/control-label/hook.d.ts.map +1 -1
  529. package/build-types/ui/form-group/use-form-group.d.ts +0 -2
  530. package/build-types/ui/form-group/use-form-group.d.ts.map +1 -1
  531. package/build-types/unit-control/index.d.ts +1 -1
  532. package/build-types/unit-control/index.d.ts.map +1 -1
  533. package/build-types/unit-control/stories/index.d.ts.map +1 -1
  534. package/build-types/utils/unit-values.d.ts.map +1 -1
  535. package/build-types/utils/values.d.ts.map +1 -1
  536. package/build-types/v-stack/hook.d.ts +0 -1
  537. package/build-types/v-stack/hook.d.ts.map +1 -1
  538. package/build-types/z-stack/component.d.ts +18 -28
  539. package/build-types/z-stack/component.d.ts.map +1 -1
  540. package/build-types/z-stack/stories/index.d.ts +6 -0
  541. package/build-types/z-stack/stories/index.d.ts.map +1 -0
  542. package/build-types/z-stack/types.d.ts +33 -0
  543. package/build-types/z-stack/types.d.ts.map +1 -0
  544. package/package.json +17 -17
  545. package/src/alignment-matrix-control/index.js +2 -1
  546. package/src/angle-picker-control/index.js +1 -1
  547. package/src/base-control/stories/index.tsx +2 -3
  548. package/src/border-box-control/border-box-control-linked-button/component.tsx +2 -5
  549. package/src/border-box-control/utils.ts +5 -2
  550. package/src/border-control/border-control/hook.ts +2 -3
  551. package/src/box-control/all-input-control.js +2 -4
  552. package/src/box-control/axial-input-controls.js +4 -6
  553. package/src/box-control/index.js +2 -5
  554. package/src/box-control/input-controls.js +33 -36
  555. package/src/box-control/unit-control.js +2 -1
  556. package/src/button/index.native.js +1 -2
  557. package/src/card/stories/index.js +10 -5
  558. package/src/checkbox-control/index.tsx +2 -3
  559. package/src/checkbox-control/stories/index.tsx +2 -3
  560. package/src/checkbox-control/test/index.tsx +2 -1
  561. package/src/color-picker/index.native.js +7 -4
  562. package/src/combobox-control/index.js +4 -2
  563. package/src/confirm-dialog/component.tsx +7 -8
  564. package/src/custom-gradient-bar/constants.js +2 -2
  565. package/src/custom-gradient-bar/control-points.js +20 -16
  566. package/src/custom-gradient-bar/index.js +11 -11
  567. package/src/custom-gradient-bar/test/utils.js +79 -0
  568. package/src/custom-gradient-bar/utils.js +6 -18
  569. package/src/custom-gradient-picker/style.scss +1 -3
  570. package/src/custom-gradient-picker/utils.js +4 -3
  571. package/src/custom-select-control/index.js +2 -1
  572. package/src/custom-select-control/stories/index.js +1 -2
  573. package/src/date-time/date/index.tsx +2 -2
  574. package/src/date-time/date/style.scss +10 -0
  575. package/src/date-time/date/test/index.tsx +1 -1
  576. package/src/date-time/date-time/index.tsx +6 -8
  577. package/src/date-time/stories/date-time.tsx +4 -6
  578. package/src/date-time/stories/date.tsx +2 -3
  579. package/src/date-time/time/test/index.tsx +12 -12
  580. package/src/dimension-control/index.js +1 -2
  581. package/src/divider/styles.ts +2 -3
  582. package/src/draggable/index.js +3 -3
  583. package/src/draggable/index.native.js +12 -4
  584. package/src/drop-zone/provider.js +1 -2
  585. package/src/dropdown/index.js +2 -2
  586. package/src/dropdown-menu/index.js +11 -1
  587. package/src/dropdown-menu/index.native.js +11 -1
  588. package/src/external-link/README.md +18 -0
  589. package/src/external-link/{index.js → index.tsx} +26 -6
  590. package/src/external-link/stories/index.tsx +36 -0
  591. package/src/external-link/styles/{external-link-styles.js → external-link-styles.ts} +0 -0
  592. package/src/external-link/types.ts +15 -0
  593. package/src/flex/flex/hook.js +4 -1
  594. package/src/focal-point-picker/controls.js +1 -5
  595. package/src/focal-point-picker/index.js +2 -8
  596. package/src/focal-point-picker/media.js +2 -5
  597. package/src/font-size-picker/index.js +3 -1
  598. package/src/form-toggle/index.js +2 -1
  599. package/src/form-toggle/test/index.js +1 -2
  600. package/src/form-token-field/index.tsx +694 -0
  601. package/src/form-token-field/stories/index.tsx +103 -0
  602. package/src/form-token-field/style.scss +2 -1
  603. package/src/form-token-field/{suggestions-list.js → suggestions-list.tsx} +45 -29
  604. package/src/form-token-field/test/index.js +64 -31
  605. package/src/form-token-field/test/lib/{token-field-wrapper.js → token-field-wrapper.tsx} +24 -9
  606. package/src/form-token-field/token-input.tsx +76 -0
  607. package/src/form-token-field/{token.js → token.tsx} +4 -2
  608. package/src/form-token-field/types.ts +178 -0
  609. package/src/gradient-picker/index.js +4 -3
  610. package/src/heading/hook.ts +5 -4
  611. package/src/higher-order/navigate-regions/index.js +7 -5
  612. package/src/higher-order/with-filters/test/index.js +43 -36
  613. package/src/higher-order/with-focus-return/index.js +14 -13
  614. package/src/higher-order/with-spoken-messages/index.js +8 -7
  615. package/src/higher-order/with-spoken-messages/test/index.js +1 -1
  616. package/src/icon/index.tsx +2 -2
  617. package/src/input-control/index.tsx +2 -1
  618. package/src/input-control/input-field.tsx +2 -1
  619. package/src/input-control/reducer/reducer.ts +23 -21
  620. package/src/input-control/utils.ts +1 -1
  621. package/src/item-group/stories/index.js +2 -1
  622. package/src/menu-item/test/index.js +2 -1
  623. package/src/menu-items-choice/index.js +2 -5
  624. package/src/mobile/bottom-sheet/bottom-sheet-context.native.js +2 -4
  625. package/src/mobile/bottom-sheet/cell.native.js +2 -3
  626. package/src/mobile/bottom-sheet/cycle-picker-cell.native.js +3 -5
  627. package/src/mobile/bottom-sheet/index.native.js +14 -17
  628. package/src/mobile/bottom-sheet/picker-cell.native.js +2 -7
  629. package/src/mobile/bottom-sheet/stepper-cell/index.native.js +4 -6
  630. package/src/mobile/color-settings/index.native.js +2 -4
  631. package/src/mobile/global-styles-context/index.native.js +8 -7
  632. package/src/mobile/gradient/index.native.js +12 -9
  633. package/src/mobile/gradient/test/index.native.js +1 -3
  634. package/src/mobile/html-text-input/index.native.js +2 -3
  635. package/src/mobile/inserter-button/index.native.js +2 -6
  636. package/src/mobile/link-settings/image-link-destinations-screen.native.js +6 -2
  637. package/src/mobile/media-edit/index.native.js +2 -3
  638. package/src/mobile/segmented-control/index.native.js +4 -5
  639. package/src/mobile/utils/test/index.native.js +3 -12
  640. package/src/modal/index.js +1 -1
  641. package/src/navigable-container/container.js +3 -2
  642. package/src/navigable-container/test/menu.js +1 -2
  643. package/src/navigable-container/test/tabbable.js +1 -2
  644. package/src/navigation/context.js +2 -5
  645. package/src/navigation/index.js +2 -1
  646. package/src/navigation/item/index.js +2 -1
  647. package/src/navigation/stories/controlled-state.js +1 -1
  648. package/src/navigation/stories/more-examples.js +2 -3
  649. package/src/navigation/test/index.js +252 -52
  650. package/src/navigator/navigator-back-button/hook.ts +14 -12
  651. package/src/navigator/navigator-button/hook.ts +14 -13
  652. package/src/navigator/navigator-provider/component.tsx +2 -6
  653. package/src/navigator/navigator-screen/component.tsx +3 -3
  654. package/src/notice/index.js +2 -1
  655. package/src/notice/list.js +3 -1
  656. package/src/panel/body.js +2 -1
  657. package/src/placeholder/README.md +7 -6
  658. package/src/placeholder/index.js +27 -10
  659. package/src/placeholder/style.scss +23 -0
  660. package/src/radio-control/README.md +17 -23
  661. package/src/radio-control/index.tsx +107 -0
  662. package/src/radio-control/stories/index.tsx +72 -0
  663. package/src/radio-control/types.ts +32 -0
  664. package/src/range-control/index.js +4 -2
  665. package/src/range-control/input-range.js +2 -5
  666. package/src/range-control/utils.js +3 -1
  667. package/src/resizable-box/resize-tooltip/index.tsx +2 -1
  668. package/src/resizable-box/resize-tooltip/utils.ts +1 -5
  669. package/src/responsive-wrapper/index.js +2 -4
  670. package/src/sandbox/test/index.js +4 -6
  671. package/src/select-control/index.tsx +3 -1
  672. package/src/select-control/stories/index.tsx +3 -4
  673. package/src/slot-fill/fill.js +1 -5
  674. package/src/slot-fill/slot.js +12 -2
  675. package/src/snackbar/index.js +1 -1
  676. package/src/snackbar/list.js +2 -1
  677. package/src/tab-panel/index.js +3 -1
  678. package/src/text/hook.js +4 -1
  679. package/src/text/utils.js +2 -3
  680. package/src/text-control/stories/index.tsx +4 -6
  681. package/src/toggle-control/index.js +1 -2
  682. package/src/toggle-control/index.native.js +2 -6
  683. package/src/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.tsx +2 -4
  684. package/src/toolbar/index.js +1 -2
  685. package/src/tools-panel/tools-panel/hook.ts +2 -4
  686. package/src/tools-panel/tools-panel-header/hook.ts +2 -5
  687. package/src/tooltip/index.js +1 -0
  688. package/src/tree-grid/roving-tab-index-item.js +2 -4
  689. package/src/tree-grid/test/index.js +2 -3
  690. package/src/tree-select/README.md +2 -2
  691. package/src/tree-select/index.tsx +99 -0
  692. package/src/tree-select/stories/index.tsx +80 -0
  693. package/src/tree-select/types.ts +35 -0
  694. package/src/ui/context/wordpress-component.ts +4 -5
  695. package/src/ui/form-group/form-group-content.js +4 -4
  696. package/src/unit-control/index.tsx +7 -9
  697. package/src/unit-control/stories/index.tsx +8 -12
  698. package/src/unit-control/test/index.tsx +4 -7
  699. package/src/utils/hooks/stories/use-cx.js +8 -7
  700. package/src/utils/hooks/test/use-controlled-state.js +2 -1
  701. package/src/utils/unit-values.ts +2 -1
  702. package/src/utils/values.js +2 -3
  703. package/src/z-stack/README.md +14 -3
  704. package/src/z-stack/component.tsx +24 -29
  705. package/src/z-stack/stories/index.tsx +76 -0
  706. package/src/z-stack/types.ts +33 -0
  707. package/tsconfig.json +5 -0
  708. package/tsconfig.tsbuildinfo +1 -1
  709. package/src/external-link/stories/index.js +0 -23
  710. package/src/form-token-field/index.js +0 -725
  711. package/src/form-token-field/stories/index.js +0 -102
  712. package/src/form-token-field/token-input.js +0 -81
  713. package/src/radio-control/index.js +0 -69
  714. package/src/radio-control/stories/index.js +0 -41
  715. package/src/tree-select/index.js +0 -48
  716. package/src/tree-select/stories/index.js +0 -80
  717. package/src/z-stack/stories/index.js +0 -70
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-token-field/index.js"],"names":["last","take","clone","uniq","map","difference","each","identity","some","classnames","__","_n","sprintf","Component","withInstanceId","BACKSPACE","ENTER","UP","DOWN","LEFT","RIGHT","SPACE","DELETE","ESCAPE","isShallowEqual","Token","TokenInput","SuggestionsList","withSpokenMessages","initialState","incompleteTokenValue","inputOffsetFromEnd","isActive","isExpanded","selectedSuggestionIndex","selectedSuggestionScroll","FormTokenField","constructor","arguments","state","onKeyDown","bind","onKeyPress","onFocus","onBlur","deleteTokenBeforeInput","deleteTokenAfterInput","addCurrentToken","onContainerTouched","renderToken","onTokenClickRemove","onSuggestionHovered","onSuggestionSelected","onInputChange","bindInput","bindTokensAndInput","updateSuggestions","componentDidUpdate","prevProps","input","hasFocus","focus","suggestions","value","props","suggestionsDidUpdate","getDerivedStateFromProps","disabled","ref","tokensAndInput","event","__experimentalExpandOnFocus","target","setState","inputHasValidValue","preventDefault","defaultPrevented","keyCode","handleDeleteKey","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","tokenizeOnSpace","handleEscapeKey","charCode","handleCommaKey","deleteToken","suggestion","index","getMatchingSuggestions","indexOf","addNewToken","text","separator","items","split","tokenValue","length","addNewTokens","slice","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","maxSuggestions","saveTransform","moveInputToIndex","Math","max","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","filter","Boolean","token","valueContainsToken","newValue","splice","apply","concat","onChange","__experimentalValidateInput","speak","messages","__experimentalInvalid","added","newTokens","item","getTokenValue","removed","searchValue","match","startsWithMatch","containsMatch","toLocaleLowerCase","push","resetSelectedSuggestion","inputHasMinimumChars","trim","matchingSuggestions","hasMatchingSuggestions","newState","debouncedSpeak","message","renderTokensAndInput","components","renderInput","status","undefined","termPosition","termsCount","title","displayTransform","isBorderless","onMouseEnter","onMouseLeave","autoCapitalize","autoComplete","maxLength","placeholder","instanceId","key","render","label","className","__experimentalShowHowTo","classes","tokenFieldProps","tabIndex","Object","assign","defaultProps","freeze","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tlast,\n\ttake,\n\tclone,\n\tuniq,\n\tmap,\n\tdifference,\n\teach,\n\tidentity,\n\tsome,\n} from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { Component } from '@wordpress/element';\nimport { withInstanceId } from '@wordpress/compose';\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 SuggestionsList from './suggestions-list';\nimport withSpokenMessages from '../higher-order/with-spoken-messages';\n\nconst initialState = {\n\tincompleteTokenValue: '',\n\tinputOffsetFromEnd: 0,\n\tisActive: false,\n\tisExpanded: false,\n\tselectedSuggestionIndex: -1,\n\tselectedSuggestionScroll: false,\n};\n\nclass FormTokenField extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.state = initialState;\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.onKeyPress = this.onKeyPress.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onBlur = this.onBlur.bind( this );\n\t\tthis.deleteTokenBeforeInput = this.deleteTokenBeforeInput.bind( this );\n\t\tthis.deleteTokenAfterInput = this.deleteTokenAfterInput.bind( this );\n\t\tthis.addCurrentToken = this.addCurrentToken.bind( this );\n\t\tthis.onContainerTouched = this.onContainerTouched.bind( this );\n\t\tthis.renderToken = this.renderToken.bind( this );\n\t\tthis.onTokenClickRemove = this.onTokenClickRemove.bind( this );\n\t\tthis.onSuggestionHovered = this.onSuggestionHovered.bind( this );\n\t\tthis.onSuggestionSelected = this.onSuggestionSelected.bind( this );\n\t\tthis.onInputChange = this.onInputChange.bind( this );\n\t\tthis.bindInput = this.bindInput.bind( this );\n\t\tthis.bindTokensAndInput = this.bindTokensAndInput.bind( this );\n\t\tthis.updateSuggestions = this.updateSuggestions.bind( this );\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( this.state.isActive && ! this.input.hasFocus() ) {\n\t\t\tthis.input.focus();\n\t\t}\n\n\t\tconst { suggestions, value } = this.props;\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevProps.suggestions\n\t\t);\n\t\tif ( suggestionsDidUpdate || value !== prevProps.value ) {\n\t\t\tthis.updateSuggestions( suggestionsDidUpdate );\n\t\t}\n\t}\n\n\tstatic getDerivedStateFromProps( props, state ) {\n\t\tif ( ! props.disabled || ! state.isActive ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tisActive: false,\n\t\t\tincompleteTokenValue: '',\n\t\t};\n\t}\n\n\tbindInput( ref ) {\n\t\tthis.input = ref;\n\t}\n\n\tbindTokensAndInput( ref ) {\n\t\tthis.tokensAndInput = ref;\n\t}\n\n\tonFocus( event ) {\n\t\tconst { __experimentalExpandOnFocus } = this.props;\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( this.input.hasFocus() || event.target === this.tokensAndInput ) {\n\t\t\tthis.setState( {\n\t\t\t\tisActive: true,\n\t\t\t\tisExpanded:\n\t\t\t\t\t!! __experimentalExpandOnFocus || this.state.isExpanded,\n\t\t\t} );\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\tthis.setState( { isActive: false } );\n\t\t}\n\n\t\tif ( 'function' === typeof this.props.onFocus ) {\n\t\t\tthis.props.onFocus( event );\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tif ( this.inputHasValidValue() ) {\n\t\t\tthis.setState( { isActive: false } );\n\t\t} else {\n\t\t\tthis.setState( initialState );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tlet preventDefault = false;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase BACKSPACE:\n\t\t\t\tpreventDefault = this.handleDeleteKey(\n\t\t\t\t\tthis.deleteTokenBeforeInput\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ENTER:\n\t\t\t\tpreventDefault = this.addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase LEFT:\n\t\t\t\tpreventDefault = this.handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase UP:\n\t\t\t\tpreventDefault = this.handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase RIGHT:\n\t\t\t\tpreventDefault = this.handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase DOWN:\n\t\t\t\tpreventDefault = this.handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase DELETE:\n\t\t\t\tpreventDefault = this.handleDeleteKey(\n\t\t\t\t\tthis.deleteTokenAfterInput\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase SPACE:\n\t\t\t\tif ( this.props.tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = this.addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ESCAPE:\n\t\t\t\tpreventDefault = this.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\tonKeyPress( event ) {\n\t\tlet preventDefault = false;\n\t\tswitch ( event.charCode ) {\n\t\t\tcase 44: // Comma.\n\t\t\t\tpreventDefault = this.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\tonContainerTouched( event ) {\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 === this.tokensAndInput && this.state.isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tonTokenClickRemove( event ) {\n\t\tthis.deleteToken( event.value );\n\t\tthis.input.focus();\n\t}\n\n\tonSuggestionHovered( suggestion ) {\n\t\tconst index = this.getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tthis.setState( {\n\t\t\t\tselectedSuggestionIndex: index,\n\t\t\t\tselectedSuggestionScroll: false,\n\t\t\t} );\n\t\t}\n\t}\n\n\tonSuggestionSelected( suggestion ) {\n\t\tthis.addNewToken( suggestion );\n\t}\n\n\tonInputChange( event ) {\n\t\tconst text = event.value;\n\t\tconst separator = this.props.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\tthis.addNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\n\t\tthis.setState(\n\t\t\t{ incompleteTokenValue: tokenValue },\n\t\t\tthis.updateSuggestions\n\t\t);\n\n\t\tthis.props.onInputChange( tokenValue );\n\t}\n\n\thandleDeleteKey( deleteToken ) {\n\t\tlet preventDefault = false;\n\t\tif ( this.input.hasFocus() && this.isInputEmpty() ) {\n\t\t\tdeleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\thandleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( this.isInputEmpty() ) {\n\t\t\tthis.moveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\thandleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( this.isInputEmpty() ) {\n\t\t\tthis.moveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\thandleUpArrowKey() {\n\t\tthis.setState( ( state, props ) => ( {\n\t\t\tselectedSuggestionIndex:\n\t\t\t\t( state.selectedSuggestionIndex === 0\n\t\t\t\t\t? this.getMatchingSuggestions(\n\t\t\t\t\t\t\tstate.incompleteTokenValue,\n\t\t\t\t\t\t\tprops.suggestions,\n\t\t\t\t\t\t\tprops.value,\n\t\t\t\t\t\t\tprops.maxSuggestions,\n\t\t\t\t\t\t\tprops.saveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: state.selectedSuggestionIndex ) - 1,\n\t\t\tselectedSuggestionScroll: true,\n\t\t} ) );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\thandleDownArrowKey() {\n\t\tthis.setState( ( state, props ) => ( {\n\t\t\tselectedSuggestionIndex:\n\t\t\t\t( state.selectedSuggestionIndex + 1 ) %\n\t\t\t\tthis.getMatchingSuggestions(\n\t\t\t\t\tstate.incompleteTokenValue,\n\t\t\t\t\tprops.suggestions,\n\t\t\t\t\tprops.value,\n\t\t\t\t\tprops.maxSuggestions,\n\t\t\t\t\tprops.saveTransform\n\t\t\t\t).length,\n\t\t\tselectedSuggestionScroll: true,\n\t\t} ) );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\thandleEscapeKey( event ) {\n\t\tthis.setState( {\n\t\t\tincompleteTokenValue: event.target.value,\n\t\t\tisExpanded: false,\n\t\t\tselectedSuggestionIndex: -1,\n\t\t\tselectedSuggestionScroll: false,\n\t\t} );\n\t\treturn true; // PreventDefault.\n\t}\n\n\thandleCommaKey() {\n\t\tif ( this.inputHasValidValue() ) {\n\t\t\tthis.addNewToken( this.state.incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tmoveInputToIndex( index ) {\n\t\tthis.setState( ( state, props ) => ( {\n\t\t\tinputOffsetFromEnd: props.value.length - Math.max( index, -1 ) - 1,\n\t\t} ) );\n\t}\n\n\tmoveInputBeforePreviousToken() {\n\t\tthis.setState( ( state, props ) => ( {\n\t\t\tinputOffsetFromEnd: Math.min(\n\t\t\t\tstate.inputOffsetFromEnd + 1,\n\t\t\t\tprops.value.length\n\t\t\t),\n\t\t} ) );\n\t}\n\n\tmoveInputAfterNextToken() {\n\t\tthis.setState( ( state ) => ( {\n\t\t\tinputOffsetFromEnd: Math.max( state.inputOffsetFromEnd - 1, 0 ),\n\t\t} ) );\n\t}\n\n\tdeleteTokenBeforeInput() {\n\t\tconst index = this.getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tthis.deleteToken( this.props.value[ index ] );\n\t\t}\n\t}\n\n\tdeleteTokenAfterInput() {\n\t\tconst index = this.getIndexOfInput();\n\n\t\tif ( index < this.props.value.length ) {\n\t\t\tthis.deleteToken( this.props.value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tthis.moveInputToIndex( index );\n\t\t}\n\t}\n\n\taddCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = this.getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\tthis.addNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( this.inputHasValidValue() ) {\n\t\t\tthis.addNewToken( this.state.incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\taddNewTokens( tokens ) {\n\t\tconst tokensToAdd = uniq(\n\t\t\ttokens\n\t\t\t\t.map( this.props.saveTransform )\n\t\t\t\t.filter( Boolean )\n\t\t\t\t.filter( ( token ) => ! this.valueContainsToken( token ) )\n\t\t);\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = clone( this.props.value );\n\t\t\tnewValue.splice.apply(\n\t\t\t\tnewValue,\n\t\t\t\t[ this.getIndexOfInput(), 0 ].concat( tokensToAdd )\n\t\t\t);\n\t\t\tthis.props.onChange( newValue );\n\t\t}\n\t}\n\n\taddNewToken( token ) {\n\t\tconst {\n\t\t\t__experimentalExpandOnFocus,\n\t\t\t__experimentalValidateInput,\n\t\t} = this.props;\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tthis.props.speak(\n\t\t\t\tthis.props.messages.__experimentalInvalid,\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tthis.addNewTokens( [ token ] );\n\t\tthis.props.speak( this.props.messages.added, 'assertive' );\n\n\t\tthis.setState( {\n\t\t\tincompleteTokenValue: '',\n\t\t\tselectedSuggestionIndex: -1,\n\t\t\tselectedSuggestionScroll: false,\n\t\t\tisExpanded: ! __experimentalExpandOnFocus,\n\t\t} );\n\n\t\tif ( this.state.isActive ) {\n\t\t\tthis.input.focus();\n\t\t}\n\t}\n\n\tdeleteToken( token ) {\n\t\tconst newTokens = this.props.value.filter( ( item ) => {\n\t\t\treturn this.getTokenValue( item ) !== this.getTokenValue( token );\n\t\t} );\n\t\tthis.props.onChange( newTokens );\n\t\tthis.props.speak( this.props.messages.removed, 'assertive' );\n\t}\n\n\tgetTokenValue( token ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tgetMatchingSuggestions(\n\t\tsearchValue = this.state.incompleteTokenValue,\n\t\tsuggestions = this.props.suggestions,\n\t\tvalue = this.props.value,\n\t\tmaxSuggestions = this.props.maxSuggestions,\n\t\tsaveTransform = this.props.saveTransform\n\t) {\n\t\tlet match = saveTransform( searchValue );\n\t\tconst startsWithMatch = [];\n\t\tconst containsMatch = [];\n\n\t\tif ( match.length === 0 ) {\n\t\t\tsuggestions = difference( suggestions, value );\n\t\t} else {\n\t\t\tmatch = match.toLocaleLowerCase();\n\n\t\t\teach( suggestions, ( suggestion ) => {\n\t\t\t\tconst index = suggestion.toLocaleLowerCase().indexOf( match );\n\t\t\t\tif ( value.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\tsuggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn take( suggestions, maxSuggestions );\n\t}\n\n\tgetSelectedSuggestion() {\n\t\tif ( this.state.selectedSuggestionIndex !== -1 ) {\n\t\t\treturn this.getMatchingSuggestions()[\n\t\t\t\tthis.state.selectedSuggestionIndex\n\t\t\t];\n\t\t}\n\t}\n\n\tvalueContainsToken( token ) {\n\t\treturn some( this.props.value, ( item ) => {\n\t\t\treturn this.getTokenValue( token ) === this.getTokenValue( item );\n\t\t} );\n\t}\n\n\tgetIndexOfInput() {\n\t\treturn this.props.value.length - this.state.inputOffsetFromEnd;\n\t}\n\n\tisInputEmpty() {\n\t\treturn this.state.incompleteTokenValue.length === 0;\n\t}\n\n\tinputHasValidValue() {\n\t\treturn (\n\t\t\tthis.props.saveTransform( this.state.incompleteTokenValue ).length >\n\t\t\t0\n\t\t);\n\t}\n\n\tupdateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst { __experimentalExpandOnFocus } = this.props;\n\t\tconst { incompleteTokenValue } = this.state;\n\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions = this.getMatchingSuggestions(\n\t\t\tincompleteTokenValue\n\t\t);\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst newState = {\n\t\t\tisExpanded:\n\t\t\t\t__experimentalExpandOnFocus ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions ),\n\t\t};\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tnewState.selectedSuggestionIndex = -1;\n\t\t\tnewState.selectedSuggestionScroll = false;\n\t\t}\n\n\t\tthis.setState( newState );\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst { debouncedSpeak } = this.props;\n\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\trenderTokensAndInput() {\n\t\tconst components = map( this.props.value, this.renderToken );\n\t\tcomponents.splice( this.getIndexOfInput(), 0, this.renderInput() );\n\n\t\treturn components;\n\t}\n\n\trenderToken( token, index, tokens ) {\n\t\tconst value = this.getTokenValue( token );\n\t\tconst status = token.status ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<Token\n\t\t\t\tkey={ 'token-' + value }\n\t\t\t\tvalue={ value }\n\t\t\t\tstatus={ status }\n\t\t\t\ttitle={ token.title }\n\t\t\t\tdisplayTransform={ this.props.displayTransform }\n\t\t\t\tonClickRemove={ this.onTokenClickRemove }\n\t\t\t\tisBorderless={ token.isBorderless || this.props.isBorderless }\n\t\t\t\tonMouseEnter={ token.onMouseEnter }\n\t\t\t\tonMouseLeave={ token.onMouseLeave }\n\t\t\t\tdisabled={ 'error' !== status && this.props.disabled }\n\t\t\t\tmessages={ this.props.messages }\n\t\t\t\ttermsCount={ termsCount }\n\t\t\t\ttermPosition={ termPosition }\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderInput() {\n\t\tconst {\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tmaxLength,\n\t\t\tplaceholder,\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t} = this.props;\n\n\t\tlet props = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tref: this.bindInput,\n\t\t\tkey: 'input',\n\t\t\tdisabled: this.props.disabled,\n\t\t\tvalue: this.state.incompleteTokenValue,\n\t\t\tonBlur: this.onBlur,\n\t\t\tisExpanded: this.state.isExpanded,\n\t\t\tselectedSuggestionIndex: this.state.selectedSuggestionIndex,\n\t\t};\n\n\t\tif ( ! ( maxLength && value.length >= maxLength ) ) {\n\t\t\tprops = { ...props, onChange: this.onInputChange };\n\t\t}\n\n\t\treturn <TokenInput { ...props } />;\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\tlabel = __( 'Add item' ),\n\t\t\tinstanceId,\n\t\t\tclassName,\n\t\t\t__experimentalShowHowTo,\n\t\t} = this.props;\n\t\tconst { isExpanded } = this.state;\n\t\tconst classes = classnames(\n\t\t\tclassName,\n\t\t\t'components-form-token-field__input-container',\n\t\t\t{\n\t\t\t\t'is-active': this.state.isActive,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t}\n\t\t);\n\n\t\tlet tokenFieldProps = {\n\t\t\tclassName: 'components-form-token-field',\n\t\t\ttabIndex: '-1',\n\t\t};\n\t\tconst matchingSuggestions = this.getMatchingSuggestions();\n\n\t\tif ( ! disabled ) {\n\t\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\t\tonKeyDown: this.onKeyDown,\n\t\t\t\tonKeyPress: this.onKeyPress,\n\t\t\t\tonFocus: this.onFocus,\n\t\t\t} );\n\t\t}\n\n\t\t// Disable reason: There is no appropriate role which describes the\n\t\t// input container intended accessible usability.\n\t\t// TODO: Refactor click detection to use blur to stop propagation.\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\treturn (\n\t\t\t<div { ...tokenFieldProps }>\n\t\t\t\t<label\n\t\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</label>\n\t\t\t\t<div\n\t\t\t\t\tref={ this.bindTokensAndInput }\n\t\t\t\t\tclassName={ classes }\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\tonMouseDown={ this.onContainerTouched }\n\t\t\t\t\tonTouchStart={ this.onContainerTouched }\n\t\t\t\t>\n\t\t\t\t\t{ this.renderTokensAndInput() }\n\t\t\t\t\t{ isExpanded && (\n\t\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\t\tmatch={ this.props.saveTransform(\n\t\t\t\t\t\t\t\tthis.state.incompleteTokenValue\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tdisplayTransform={ this.props.displayTransform }\n\t\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\t\tselectedIndex={ this.state.selectedSuggestionIndex }\n\t\t\t\t\t\t\tscrollIntoView={\n\t\t\t\t\t\t\t\tthis.state.selectedSuggestionScroll\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonHover={ this.onSuggestionHovered }\n\t\t\t\t\t\t\tonSelect={ this.onSuggestionSelected }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t\t<p\n\t\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ this.props.tokenizeOnSpace\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\t}\n}\n\nFormTokenField.defaultProps = {\n\tsuggestions: Object.freeze( [] ),\n\tmaxSuggestions: 100,\n\tvalue: Object.freeze( [] ),\n\tdisplayTransform: identity,\n\tsaveTransform: ( token ) => token.trim(),\n\tonChange: () => {},\n\tonInputChange: () => {},\n\tisBorderless: false,\n\tdisabled: false,\n\ttokenizeOnSpace: false,\n\tmessages: {\n\t\tadded: __( 'Item added.' ),\n\t\tremoved: __( 'Item removed.' ),\n\t\tremove: __( 'Remove item' ),\n\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t},\n\t__experimentalExpandOnFocus: false,\n\t__experimentalValidateInput: () => true,\n\t__experimentalShowHowTo: true,\n};\n\nexport default withSpokenMessages( withInstanceId( FormTokenField ) );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-token-field/index.tsx"],"names":["last","clone","uniq","map","difference","identity","some","classnames","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","BACKSPACE","ENTER","UP","DOWN","LEFT","RIGHT","SPACE","DELETE","ESCAPE","isShallowEqual","Token","TokenInput","SuggestionsList","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","value","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","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, identity, 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 SuggestionsList from './suggestions-list';\nimport type { FormTokenFieldProps, TokenItem } from './types';\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__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\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<Token\n\t\t\t\tkey={ 'token-' + _value }\n\t\t\t\tvalue={ _value }\n\t\t\t\tstatus={ status }\n\t\t\t\ttitle={ typeof token !== 'string' ? token.title : undefined }\n\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\tisBorderless={\n\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\tisBorderless\n\t\t\t\t}\n\t\t\t\tonMouseEnter={\n\t\t\t\t\ttypeof token !== 'string' ? token.onMouseEnter : undefined\n\t\t\t\t}\n\t\t\t\tonMouseLeave={\n\t\t\t\t\ttypeof token !== 'string' ? token.onMouseLeave : undefined\n\t\t\t\t}\n\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\tmessages={ messages }\n\t\t\t\ttermsCount={ termsCount }\n\t\t\t\ttermPosition={ termPosition }\n\t\t\t/>\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<label\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</label>\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{ renderTokensAndInput() }\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/>\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"]}
@@ -6,44 +6,58 @@ import { createElement } from "@wordpress/element";
6
6
  import { map } from 'lodash';
7
7
  import scrollView from 'dom-scroll-into-view';
8
8
  import classnames from 'classnames';
9
+
9
10
  /**
10
11
  * WordPress dependencies
11
12
  */
12
-
13
13
  import { useState } from '@wordpress/element';
14
- import { withSafeTimeout, useRefEffect } from '@wordpress/compose';
15
- const emptyList = Object.freeze([]);
14
+ import { useRefEffect } from '@wordpress/compose';
15
+ /**
16
+ * Internal dependencies
17
+ */
18
+
19
+ const {
20
+ setTimeout,
21
+ clearTimeout
22
+ } = window;
16
23
 
17
24
  const handleMouseDown = e => {
18
25
  // By preventing default here, we will not lose focus of <input> when clicking a suggestion.
19
26
  e.preventDefault();
20
27
  };
21
28
 
22
- function SuggestionsList(_ref) {
29
+ export function SuggestionsList(_ref) {
23
30
  let {
24
31
  selectedIndex,
25
32
  scrollIntoView,
26
- match = '',
33
+ match,
27
34
  onHover,
28
35
  onSelect,
29
- suggestions = emptyList,
36
+ suggestions = [],
30
37
  displayTransform,
31
- instanceId,
32
- setTimeout
38
+ instanceId
33
39
  } = _ref;
34
40
  const [scrollingIntoView, setScrollingIntoView] = useState(false);
35
41
  const listRef = useRefEffect(listNode => {
36
42
  // only have to worry about scrolling selected suggestion into view
37
43
  // when already expanded.
44
+ let id;
45
+
38
46
  if (selectedIndex > -1 && scrollIntoView && listNode.children[selectedIndex]) {
39
47
  setScrollingIntoView(true);
40
48
  scrollView(listNode.children[selectedIndex], listNode, {
41
49
  onlyScrollIfNeeded: true
42
50
  });
43
- setTimeout(() => {
51
+ id = setTimeout(() => {
44
52
  setScrollingIntoView(false);
45
53
  }, 100);
46
54
  }
55
+
56
+ return () => {
57
+ if (id !== undefined) {
58
+ clearTimeout(id);
59
+ }
60
+ };
47
61
  }, [selectedIndex, scrollIntoView]);
48
62
 
49
63
  const handleHover = suggestion => {
@@ -61,24 +75,20 @@ function SuggestionsList(_ref) {
61
75
  };
62
76
 
63
77
  const computeSuggestionMatch = suggestion => {
64
- const matchText = displayTransform(match || '').toLocaleLowerCase();
78
+ const matchText = displayTransform(match).toLocaleLowerCase();
65
79
 
66
80
  if (matchText.length === 0) {
67
81
  return null;
68
82
  }
69
83
 
70
- suggestion = displayTransform(suggestion);
71
- const indexOfMatch = suggestion.toLocaleLowerCase().indexOf(matchText);
84
+ const transformedSuggestion = displayTransform(suggestion);
85
+ const indexOfMatch = transformedSuggestion.toLocaleLowerCase().indexOf(matchText);
72
86
  return {
73
- suggestionBeforeMatch: suggestion.substring(0, indexOfMatch),
74
- suggestionMatch: suggestion.substring(indexOfMatch, indexOfMatch + matchText.length),
75
- suggestionAfterMatch: suggestion.substring(indexOfMatch + matchText.length)
87
+ suggestionBeforeMatch: transformedSuggestion.substring(0, indexOfMatch),
88
+ suggestionMatch: transformedSuggestion.substring(indexOfMatch, indexOfMatch + matchText.length),
89
+ suggestionAfterMatch: transformedSuggestion.substring(indexOfMatch + matchText.length)
76
90
  };
77
- }; // We set `tabIndex` here because otherwise Firefox sets focus on this
78
- // div when tabbing off of the input in `TokenField` -- not really sure
79
- // why, since usually a div isn't focusable by default
80
- // TODO does this still apply now that it's a <ul> and not a <div>?
81
-
91
+ };
82
92
 
83
93
  return createElement("ul", {
84
94
  ref: listRef,
@@ -96,7 +106,7 @@ function SuggestionsList(_ref) {
96
106
  id: `components-form-token-suggestions-${instanceId}-${index}`,
97
107
  role: "option",
98
108
  className: className,
99
- key: suggestion !== null && suggestion !== void 0 && suggestion.value ? suggestion.value : displayTransform(suggestion),
109
+ key: typeof suggestion === 'object' && 'value' in suggestion ? suggestion === null || suggestion === void 0 ? void 0 : suggestion.value : displayTransform(suggestion),
100
110
  onMouseDown: handleMouseDown,
101
111
  onClick: handleClick(suggestion),
102
112
  onMouseEnter: handleHover(suggestion),
@@ -109,6 +119,5 @@ function SuggestionsList(_ref) {
109
119
  /* eslint-enable jsx-a11y/click-events-have-key-events */
110
120
  }));
111
121
  }
112
-
113
- export default withSafeTimeout(SuggestionsList);
122
+ export default SuggestionsList;
114
123
  //# sourceMappingURL=suggestions-list.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-token-field/suggestions-list.js"],"names":["map","scrollView","classnames","useState","withSafeTimeout","useRefEffect","emptyList","Object","freeze","handleMouseDown","e","preventDefault","SuggestionsList","selectedIndex","scrollIntoView","match","onHover","onSelect","suggestions","displayTransform","instanceId","setTimeout","scrollingIntoView","setScrollingIntoView","listRef","listNode","children","onlyScrollIfNeeded","handleHover","suggestion","handleClick","computeSuggestionMatch","matchText","toLocaleLowerCase","length","indexOfMatch","indexOf","suggestionBeforeMatch","substring","suggestionMatch","suggestionAfterMatch","index","className","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { map } from 'lodash';\nimport scrollView from 'dom-scroll-into-view';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { withSafeTimeout, useRefEffect } from '@wordpress/compose';\n\nconst emptyList = Object.freeze( [] );\n\nconst handleMouseDown = ( e ) => {\n\t// By preventing default here, we will not lose focus of <input> when clicking a suggestion.\n\te.preventDefault();\n};\n\nfunction SuggestionsList( {\n\tselectedIndex,\n\tscrollIntoView,\n\tmatch = '',\n\tonHover,\n\tonSelect,\n\tsuggestions = emptyList,\n\tdisplayTransform,\n\tinstanceId,\n\tsetTimeout,\n} ) {\n\tconst [ scrollingIntoView, setScrollingIntoView ] = useState( false );\n\n\tconst listRef = useRefEffect(\n\t\t( listNode ) => {\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded.\n\t\t\tif (\n\t\t\t\tselectedIndex > -1 &&\n\t\t\t\tscrollIntoView &&\n\t\t\t\tlistNode.children[ selectedIndex ]\n\t\t\t) {\n\t\t\t\tsetScrollingIntoView( true );\n\t\t\t\tscrollView( listNode.children[ selectedIndex ], listNode, {\n\t\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t\t} );\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\tsetScrollingIntoView( false );\n\t\t\t\t}, 100 );\n\t\t\t}\n\t\t},\n\t\t[ selectedIndex, scrollIntoView ]\n\t);\n\n\tconst handleHover = ( suggestion ) => {\n\t\treturn () => {\n\t\t\tif ( ! scrollingIntoView ) {\n\t\t\t\tonHover?.( suggestion );\n\t\t\t}\n\t\t};\n\t};\n\n\tconst handleClick = ( suggestion ) => {\n\t\treturn () => {\n\t\t\tonSelect?.( suggestion );\n\t\t};\n\t};\n\n\tconst computeSuggestionMatch = ( suggestion ) => {\n\t\tconst matchText = displayTransform( match || '' ).toLocaleLowerCase();\n\t\tif ( matchText.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsuggestion = displayTransform( suggestion );\n\t\tconst indexOfMatch = suggestion\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf( matchText );\n\n\t\treturn {\n\t\t\tsuggestionBeforeMatch: suggestion.substring( 0, indexOfMatch ),\n\t\t\tsuggestionMatch: suggestion.substring(\n\t\t\t\tindexOfMatch,\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t\tsuggestionAfterMatch: suggestion.substring(\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t};\n\t};\n\n\t// We set `tabIndex` here because otherwise Firefox sets focus on this\n\t// div when tabbing off of the input in `TokenField` -- not really sure\n\t// why, since usually a div isn't focusable by default\n\t// TODO does this still apply now that it's a <ul> and not a <div>?\n\treturn (\n\t\t<ul\n\t\t\tref={ listRef }\n\t\t\tclassName=\"components-form-token-field__suggestions-list\"\n\t\t\tid={ `components-form-token-suggestions-${ instanceId }` }\n\t\t\trole=\"listbox\"\n\t\t>\n\t\t\t{ map( suggestions, ( suggestion, index ) => {\n\t\t\t\tconst matchText = computeSuggestionMatch( suggestion );\n\t\t\t\tconst className = classnames(\n\t\t\t\t\t'components-form-token-field__suggestion',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': index === selectedIndex,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t/* eslint-disable jsx-a11y/click-events-have-key-events */\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tid={ `components-form-token-suggestions-${ instanceId }-${ index }` }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\tsuggestion?.value\n\t\t\t\t\t\t\t\t? suggestion.value\n\t\t\t\t\t\t\t\t: displayTransform( suggestion )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonMouseDown={ handleMouseDown }\n\t\t\t\t\t\tonClick={ handleClick( suggestion ) }\n\t\t\t\t\t\tonMouseEnter={ handleHover( suggestion ) }\n\t\t\t\t\t\taria-selected={ index === selectedIndex }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ matchText ? (\n\t\t\t\t\t\t\t<span aria-label={ displayTransform( suggestion ) }>\n\t\t\t\t\t\t\t\t{ matchText.suggestionBeforeMatch }\n\t\t\t\t\t\t\t\t<strong className=\"components-form-token-field__suggestion-match\">\n\t\t\t\t\t\t\t\t\t{ matchText.suggestionMatch }\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t\t{ matchText.suggestionAfterMatch }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tdisplayTransform( suggestion )\n\t\t\t\t\t\t) }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t\t/* eslint-enable jsx-a11y/click-events-have-key-events */\n\t\t\t} ) }\n\t\t</ul>\n\t);\n}\n\nexport default withSafeTimeout( SuggestionsList );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-token-field/suggestions-list.tsx"],"names":["map","scrollView","classnames","useState","useRefEffect","setTimeout","clearTimeout","window","handleMouseDown","e","preventDefault","SuggestionsList","selectedIndex","scrollIntoView","match","onHover","onSelect","suggestions","displayTransform","instanceId","scrollingIntoView","setScrollingIntoView","listRef","listNode","id","children","onlyScrollIfNeeded","undefined","handleHover","suggestion","handleClick","computeSuggestionMatch","matchText","toLocaleLowerCase","length","transformedSuggestion","indexOfMatch","indexOf","suggestionBeforeMatch","substring","suggestionMatch","suggestionAfterMatch","index","className","value"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,GAAT,QAAoB,QAApB;AACA,OAAOC,UAAP,MAAuB,sBAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB;;AAGA;AACA;AACA;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,YAAT,QAA6B,oBAA7B;AAEA;AACA;AACA;;AAGA,MAAM;AAAEC,EAAAA,UAAF;AAAcC,EAAAA;AAAd,IAA+BC,MAArC;;AAEA,MAAMC,eAAkC,GAAKC,CAAF,IAAS;AACnD;AACAA,EAAAA,CAAC,CAACC,cAAF;AACA,CAHD;;AAKA,OAAO,SAASC,eAAT,OASwB;AAAA,MAT0C;AACxEC,IAAAA,aADwE;AAExEC,IAAAA,cAFwE;AAGxEC,IAAAA,KAHwE;AAIxEC,IAAAA,OAJwE;AAKxEC,IAAAA,QALwE;AAMxEC,IAAAA,WAAW,GAAG,EAN0D;AAOxEC,IAAAA,gBAPwE;AAQxEC,IAAAA;AARwE,GAS1C;AAC9B,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8ClB,QAAQ,CAAE,KAAF,CAA5D;AAEA,QAAMmB,OAAO,GAAGlB,YAAY,CACzBmB,QAAF,IAAgB;AACf;AACA;AACA,QAAIC,EAAJ;;AACA,QACCZ,aAAa,GAAG,CAAC,CAAjB,IACAC,cADA,IAEAU,QAAQ,CAACE,QAAT,CAAmBb,aAAnB,CAHD,EAIE;AACDS,MAAAA,oBAAoB,CAAE,IAAF,CAApB;AACApB,MAAAA,UAAU,CACTsB,QAAQ,CAACE,QAAT,CAAmBb,aAAnB,CADS,EAETW,QAFS,EAGT;AACCG,QAAAA,kBAAkB,EAAE;AADrB,OAHS,CAAV;AAOAF,MAAAA,EAAE,GAAGnB,UAAU,CAAE,MAAM;AACtBgB,QAAAA,oBAAoB,CAAE,KAAF,CAApB;AACA,OAFc,EAEZ,GAFY,CAAf;AAGA;;AAED,WAAO,MAAM;AACZ,UAAKG,EAAE,KAAKG,SAAZ,EAAwB;AACvBrB,QAAAA,YAAY,CAAEkB,EAAF,CAAZ;AACA;AACD,KAJD;AAKA,GA5B0B,EA6B3B,CAAEZ,aAAF,EAAiBC,cAAjB,CA7B2B,CAA5B;;AAgCA,QAAMe,WAAW,GAAKC,UAAF,IAAqB;AACxC,WAAO,MAAM;AACZ,UAAK,CAAET,iBAAP,EAA2B;AAC1BL,QAAAA,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAIc,UAAJ,CAAP;AACA;AACD,KAJD;AAKA,GAND;;AAQA,QAAMC,WAAW,GAAKD,UAAF,IAAqB;AACxC,WAAO,MAAM;AACZb,MAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAIa,UAAJ,CAAR;AACA,KAFD;AAGA,GAJD;;AAMA,QAAME,sBAAsB,GAAKF,UAAF,IAAqB;AACnD,UAAMG,SAAS,GAAGd,gBAAgB,CAAEJ,KAAF,CAAhB,CAA0BmB,iBAA1B,EAAlB;;AACA,QAAKD,SAAS,CAACE,MAAV,KAAqB,CAA1B,EAA8B;AAC7B,aAAO,IAAP;AACA;;AAED,UAAMC,qBAAqB,GAAGjB,gBAAgB,CAAEW,UAAF,CAA9C;AACA,UAAMO,YAAY,GAAGD,qBAAqB,CACxCF,iBADmB,GAEnBI,OAFmB,CAEVL,SAFU,CAArB;AAIA,WAAO;AACNM,MAAAA,qBAAqB,EAAEH,qBAAqB,CAACI,SAAtB,CACtB,CADsB,EAEtBH,YAFsB,CADjB;AAKNI,MAAAA,eAAe,EAAEL,qBAAqB,CAACI,SAAtB,CAChBH,YADgB,EAEhBA,YAAY,GAAGJ,SAAS,CAACE,MAFT,CALX;AASNO,MAAAA,oBAAoB,EAAEN,qBAAqB,CAACI,SAAtB,CACrBH,YAAY,GAAGJ,SAAS,CAACE,MADJ;AAThB,KAAP;AAaA,GAxBD;;AA0BA,SACC;AACC,IAAA,GAAG,EAAGZ,OADP;AAEC,IAAA,SAAS,EAAC,+CAFX;AAGC,IAAA,EAAE,EAAI,qCAAqCH,UAAY,EAHxD;AAIC,IAAA,IAAI,EAAC;AAJN,KAMGnB,GAAG,CAAEiB,WAAF,EAAe,CAAEY,UAAF,EAAca,KAAd,KAAyB;AAC5C,UAAMV,SAAS,GAAGD,sBAAsB,CAAEF,UAAF,CAAxC;AACA,UAAMc,SAAS,GAAGzC,UAAU,CAC3B,yCAD2B,EAE3B;AACC,qBAAewC,KAAK,KAAK9B;AAD1B,KAF2B,CAA5B;AAOA;;AACA,WACC;AACC,MAAA,EAAE,EAAI,qCAAqCO,UAAY,IAAIuB,KAAO,EADnE;AAEC,MAAA,IAAI,EAAC,QAFN;AAGC,MAAA,SAAS,EAAGC,SAHb;AAIC,MAAA,GAAG,EACF,OAAOd,UAAP,KAAsB,QAAtB,IACA,WAAWA,UADX,GAEGA,UAFH,aAEGA,UAFH,uBAEGA,UAAU,CAAEe,KAFf,GAGG1B,gBAAgB,CAAEW,UAAF,CARrB;AAUC,MAAA,WAAW,EAAGrB,eAVf;AAWC,MAAA,OAAO,EAAGsB,WAAW,CAAED,UAAF,CAXtB;AAYC,MAAA,YAAY,EAAGD,WAAW,CAAEC,UAAF,CAZ3B;AAaC,uBAAgBa,KAAK,KAAK9B;AAb3B,OAeGoB,SAAS,GACV;AAAM,oBAAad,gBAAgB,CAAEW,UAAF;AAAnC,OACGG,SAAS,CAACM,qBADb,EAEC;AAAQ,MAAA,SAAS,EAAC;AAAlB,OACGN,SAAS,CAACQ,eADb,CAFD,EAKGR,SAAS,CAACS,oBALb,CADU,GASVvB,gBAAgB,CAAEW,UAAF,CAxBlB,CADD;AA6BA;AACA,GAxCI,CANN,CADD;AAkDA;AAED,eAAelB,eAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { map } from 'lodash';\nimport scrollView from 'dom-scroll-into-view';\nimport classnames from 'classnames';\nimport type { MouseEventHandler } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport type { SuggestionsListProps } from './types';\n\nconst { setTimeout, clearTimeout } = window;\n\nconst handleMouseDown: MouseEventHandler = ( e ) => {\n\t// By preventing default here, we will not lose focus of <input> when clicking a suggestion.\n\te.preventDefault();\n};\n\nexport function SuggestionsList< T extends string | { value: string } >( {\n\tselectedIndex,\n\tscrollIntoView,\n\tmatch,\n\tonHover,\n\tonSelect,\n\tsuggestions = [],\n\tdisplayTransform,\n\tinstanceId,\n}: SuggestionsListProps< T > ) {\n\tconst [ scrollingIntoView, setScrollingIntoView ] = useState( false );\n\n\tconst listRef = useRefEffect< HTMLUListElement >(\n\t\t( listNode ) => {\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded.\n\t\t\tlet id: number;\n\t\t\tif (\n\t\t\t\tselectedIndex > -1 &&\n\t\t\t\tscrollIntoView &&\n\t\t\t\tlistNode.children[ selectedIndex ]\n\t\t\t) {\n\t\t\t\tsetScrollingIntoView( true );\n\t\t\t\tscrollView(\n\t\t\t\t\tlistNode.children[ selectedIndex ] as HTMLLIElement,\n\t\t\t\t\tlistNode,\n\t\t\t\t\t{\n\t\t\t\t\t\tonlyScrollIfNeeded: true,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tid = setTimeout( () => {\n\t\t\t\t\tsetScrollingIntoView( false );\n\t\t\t\t}, 100 );\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tif ( id !== undefined ) {\n\t\t\t\t\tclearTimeout( id );\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t[ selectedIndex, scrollIntoView ]\n\t);\n\n\tconst handleHover = ( suggestion: T ) => {\n\t\treturn () => {\n\t\t\tif ( ! scrollingIntoView ) {\n\t\t\t\tonHover?.( suggestion );\n\t\t\t}\n\t\t};\n\t};\n\n\tconst handleClick = ( suggestion: T ) => {\n\t\treturn () => {\n\t\t\tonSelect?.( suggestion );\n\t\t};\n\t};\n\n\tconst computeSuggestionMatch = ( suggestion: T ) => {\n\t\tconst matchText = displayTransform( match ).toLocaleLowerCase();\n\t\tif ( matchText.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst transformedSuggestion = displayTransform( suggestion );\n\t\tconst indexOfMatch = transformedSuggestion\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf( matchText );\n\n\t\treturn {\n\t\t\tsuggestionBeforeMatch: transformedSuggestion.substring(\n\t\t\t\t0,\n\t\t\t\tindexOfMatch\n\t\t\t),\n\t\t\tsuggestionMatch: transformedSuggestion.substring(\n\t\t\t\tindexOfMatch,\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t\tsuggestionAfterMatch: transformedSuggestion.substring(\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t};\n\t};\n\n\treturn (\n\t\t<ul\n\t\t\tref={ listRef }\n\t\t\tclassName=\"components-form-token-field__suggestions-list\"\n\t\t\tid={ `components-form-token-suggestions-${ instanceId }` }\n\t\t\trole=\"listbox\"\n\t\t>\n\t\t\t{ map( suggestions, ( suggestion, index ) => {\n\t\t\t\tconst matchText = computeSuggestionMatch( suggestion );\n\t\t\t\tconst className = classnames(\n\t\t\t\t\t'components-form-token-field__suggestion',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': index === selectedIndex,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t/* eslint-disable jsx-a11y/click-events-have-key-events */\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tid={ `components-form-token-suggestions-${ instanceId }-${ index }` }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\ttypeof suggestion === 'object' &&\n\t\t\t\t\t\t\t'value' in suggestion\n\t\t\t\t\t\t\t\t? suggestion?.value\n\t\t\t\t\t\t\t\t: displayTransform( suggestion )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonMouseDown={ handleMouseDown }\n\t\t\t\t\t\tonClick={ handleClick( suggestion ) }\n\t\t\t\t\t\tonMouseEnter={ handleHover( suggestion ) }\n\t\t\t\t\t\taria-selected={ index === selectedIndex }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ matchText ? (\n\t\t\t\t\t\t\t<span aria-label={ displayTransform( suggestion ) }>\n\t\t\t\t\t\t\t\t{ matchText.suggestionBeforeMatch }\n\t\t\t\t\t\t\t\t<strong className=\"components-form-token-field__suggestion-match\">\n\t\t\t\t\t\t\t\t\t{ matchText.suggestionMatch }\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t\t{ matchText.suggestionAfterMatch }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tdisplayTransform( suggestion )\n\t\t\t\t\t\t) }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t\t/* eslint-enable jsx-a11y/click-events-have-key-events */\n\t\t\t} ) }\n\t\t</ul>\n\t);\n}\n\nexport default SuggestionsList;\n"]}
@@ -5,68 +5,53 @@ import { createElement } from "@wordpress/element";
5
5
  * External dependencies
6
6
  */
7
7
  import classnames from 'classnames';
8
+
8
9
  /**
9
10
  * WordPress dependencies
10
11
  */
12
+ import { forwardRef } from '@wordpress/element';
13
+ /**
14
+ * Internal dependencies
15
+ */
11
16
 
12
- import { Component } from '@wordpress/element';
13
-
14
- class TokenInput extends Component {
15
- constructor() {
16
- super(...arguments);
17
- this.onChange = this.onChange.bind(this);
18
- this.bindInput = this.bindInput.bind(this);
19
- }
20
-
21
- focus() {
22
- this.input.focus();
23
- }
24
-
25
- hasFocus() {
26
- return this.input === this.input.ownerDocument.activeElement;
27
- }
28
-
29
- bindInput(ref) {
30
- this.input = ref;
31
- }
32
-
33
- onChange(event) {
34
- this.props.onChange({
35
- value: event.target.value
36
- });
37
- }
38
-
39
- render() {
40
- const {
41
- value,
42
- isExpanded,
43
- instanceId,
44
- selectedSuggestionIndex,
45
- className,
46
- onChange,
47
- ...props
48
- } = this.props;
49
- const size = value ? value.length + 1 : 0;
50
- return createElement("input", _extends({
51
- ref: this.bindInput,
52
- id: `components-form-token-input-${instanceId}`,
53
- type: "text"
54
- }, props, {
55
- value: value || '',
56
- onChange: onChange ? this.onChange : undefined,
57
- size: size,
58
- className: classnames(className, 'components-form-token-field__input'),
59
- autoComplete: "off",
60
- role: "combobox",
61
- "aria-expanded": isExpanded,
62
- "aria-autocomplete": "list",
63
- "aria-owns": isExpanded ? `components-form-token-suggestions-${instanceId}` : undefined,
64
- "aria-activedescendant": selectedSuggestionIndex !== -1 ? `components-form-token-suggestions-${instanceId}-${selectedSuggestionIndex}` : undefined,
65
- "aria-describedby": `components-form-token-suggestions-howto-${instanceId}`
66
- }));
67
- }
68
-
17
+ export function UnForwardedTokenInput(props, ref) {
18
+ const {
19
+ value,
20
+ isExpanded,
21
+ instanceId,
22
+ selectedSuggestionIndex,
23
+ className,
24
+ onChange,
25
+ ...restProps
26
+ } = props;
27
+ const size = value ? value.length + 1 : 0;
28
+
29
+ const onChangeHandler = event => {
30
+ if (onChange) {
31
+ onChange({
32
+ value: event.target.value
33
+ });
34
+ }
35
+ };
36
+
37
+ return createElement("input", _extends({
38
+ ref: ref,
39
+ id: `components-form-token-input-${instanceId}`,
40
+ type: "text"
41
+ }, restProps, {
42
+ value: value || '',
43
+ onChange: onChangeHandler,
44
+ size: size,
45
+ className: classnames(className, 'components-form-token-field__input'),
46
+ autoComplete: "off",
47
+ role: "combobox",
48
+ "aria-expanded": isExpanded,
49
+ "aria-autocomplete": "list",
50
+ "aria-owns": isExpanded ? `components-form-token-suggestions-${instanceId}` : undefined,
51
+ "aria-activedescendant": selectedSuggestionIndex !== -1 ? `components-form-token-suggestions-${instanceId}-${selectedSuggestionIndex}` : undefined,
52
+ "aria-describedby": `components-form-token-suggestions-howto-${instanceId}`
53
+ }));
69
54
  }
70
-
55
+ export const TokenInput = forwardRef(UnForwardedTokenInput);
71
56
  export default TokenInput;
72
57
  //# sourceMappingURL=token-input.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-token-field/token-input.js"],"names":["classnames","Component","TokenInput","constructor","arguments","onChange","bind","bindInput","focus","input","hasFocus","ownerDocument","activeElement","ref","event","props","value","target","render","isExpanded","instanceId","selectedSuggestionIndex","className","size","length","undefined"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,oBAA1B;;AAEA,MAAMC,UAAN,SAAyBD,SAAzB,CAAmC;AAClCE,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AACA,SAAKC,QAAL,GAAgB,KAAKA,QAAL,CAAcC,IAAd,CAAoB,IAApB,CAAhB;AACA,SAAKC,SAAL,GAAiB,KAAKA,SAAL,CAAeD,IAAf,CAAqB,IAArB,CAAjB;AACA;;AAEDE,EAAAA,KAAK,GAAG;AACP,SAAKC,KAAL,CAAWD,KAAX;AACA;;AAEDE,EAAAA,QAAQ,GAAG;AACV,WAAO,KAAKD,KAAL,KAAe,KAAKA,KAAL,CAAWE,aAAX,CAAyBC,aAA/C;AACA;;AAEDL,EAAAA,SAAS,CAAEM,GAAF,EAAQ;AAChB,SAAKJ,KAAL,GAAaI,GAAb;AACA;;AAEDR,EAAAA,QAAQ,CAAES,KAAF,EAAU;AACjB,SAAKC,KAAL,CAAWV,QAAX,CAAqB;AACpBW,MAAAA,KAAK,EAAEF,KAAK,CAACG,MAAN,CAAaD;AADA,KAArB;AAGA;;AAEDE,EAAAA,MAAM,GAAG;AACR,UAAM;AACLF,MAAAA,KADK;AAELG,MAAAA,UAFK;AAGLC,MAAAA,UAHK;AAILC,MAAAA,uBAJK;AAKLC,MAAAA,SALK;AAMLjB,MAAAA,QANK;AAOL,SAAGU;AAPE,QAQF,KAAKA,KART;AASA,UAAMQ,IAAI,GAAGP,KAAK,GAAGA,KAAK,CAACQ,MAAN,GAAe,CAAlB,GAAsB,CAAxC;AAEA,WACC;AACC,MAAA,GAAG,EAAG,KAAKjB,SADZ;AAEC,MAAA,EAAE,EAAI,+BAA+Ba,UAAY,EAFlD;AAGC,MAAA,IAAI,EAAC;AAHN,OAIML,KAJN;AAKC,MAAA,KAAK,EAAGC,KAAK,IAAI,EALlB;AAMC,MAAA,QAAQ,EAAGX,QAAQ,GAAG,KAAKA,QAAR,GAAmBoB,SANvC;AAOC,MAAA,IAAI,EAAGF,IAPR;AAQC,MAAA,SAAS,EAAGvB,UAAU,CACrBsB,SADqB,EAErB,oCAFqB,CARvB;AAYC,MAAA,YAAY,EAAC,KAZd;AAaC,MAAA,IAAI,EAAC,UAbN;AAcC,uBAAgBH,UAdjB;AAeC,2BAAkB,MAfnB;AAgBC,mBACCA,UAAU,GACN,qCAAqCC,UAAY,EAD3C,GAEPK,SAnBL;AAqBC,+BACCJ,uBAAuB,KAAK,CAAC,CAA7B,GACI,qCAAqCD,UAAY,IAAIC,uBAAyB,EADlF,GAEGI,SAxBL;AA0BC,0BAAoB,2CAA2CL,UAAY;AA1B5E,OADD;AA8BA;;AAnEiC;;AAsEnC,eAAelB,UAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\n\nclass TokenInput extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.bindInput = this.bindInput.bind( this );\n\t}\n\n\tfocus() {\n\t\tthis.input.focus();\n\t}\n\n\thasFocus() {\n\t\treturn this.input === this.input.ownerDocument.activeElement;\n\t}\n\n\tbindInput( ref ) {\n\t\tthis.input = ref;\n\t}\n\n\tonChange( event ) {\n\t\tthis.props.onChange( {\n\t\t\tvalue: event.target.value,\n\t\t} );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tvalue,\n\t\t\tisExpanded,\n\t\t\tinstanceId,\n\t\t\tselectedSuggestionIndex,\n\t\t\tclassName,\n\t\t\tonChange,\n\t\t\t...props\n\t\t} = this.props;\n\t\tconst size = value ? value.length + 1 : 0;\n\n\t\treturn (\n\t\t\t<input\n\t\t\t\tref={ this.bindInput }\n\t\t\t\tid={ `components-form-token-input-${ instanceId }` }\n\t\t\t\ttype=\"text\"\n\t\t\t\t{ ...props }\n\t\t\t\tvalue={ value || '' }\n\t\t\t\tonChange={ onChange ? this.onChange : undefined }\n\t\t\t\tsize={ size }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\tclassName,\n\t\t\t\t\t'components-form-token-field__input'\n\t\t\t\t) }\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\taria-owns={\n\t\t\t\t\tisExpanded\n\t\t\t\t\t\t? `components-form-token-suggestions-${ instanceId }`\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\taria-activedescendant={\n\t\t\t\t\tselectedSuggestionIndex !== -1\n\t\t\t\t\t\t? `components-form-token-suggestions-${ instanceId }-${ selectedSuggestionIndex }`\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\taria-describedby={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default TokenInput;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-token-field/token-input.tsx"],"names":["classnames","forwardRef","UnForwardedTokenInput","props","ref","value","isExpanded","instanceId","selectedSuggestionIndex","className","onChange","restProps","size","length","onChangeHandler","event","target","undefined","TokenInput"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;;AAGA;AACA;AACA;AACA,SAASC,UAAT,QAA2B,oBAA3B;AAEA;AACA;AACA;;AAIA,OAAO,SAASC,qBAAT,CACNC,KADM,EAENC,GAFM,EAGL;AACD,QAAM;AACLC,IAAAA,KADK;AAELC,IAAAA,UAFK;AAGLC,IAAAA,UAHK;AAILC,IAAAA,uBAJK;AAKLC,IAAAA,SALK;AAMLC,IAAAA,QANK;AAOL,OAAGC;AAPE,MAQFR,KARJ;AAUA,QAAMS,IAAI,GAAGP,KAAK,GAAGA,KAAK,CAACQ,MAAN,GAAe,CAAlB,GAAsB,CAAxC;;AAEA,QAAMC,eAAe,GAAKC,KAAF,IAA8C;AACrE,QAAKL,QAAL,EAAgB;AACfA,MAAAA,QAAQ,CAAE;AACTL,QAAAA,KAAK,EAAEU,KAAK,CAACC,MAAN,CAAaX;AADX,OAAF,CAAR;AAGA;AACD,GAND;;AAQA,SACC;AACC,IAAA,GAAG,EAAGD,GADP;AAEC,IAAA,EAAE,EAAI,+BAA+BG,UAAY,EAFlD;AAGC,IAAA,IAAI,EAAC;AAHN,KAIMI,SAJN;AAKC,IAAA,KAAK,EAAGN,KAAK,IAAI,EALlB;AAMC,IAAA,QAAQ,EAAGS,eANZ;AAOC,IAAA,IAAI,EAAGF,IAPR;AAQC,IAAA,SAAS,EAAGZ,UAAU,CACrBS,SADqB,EAErB,oCAFqB,CARvB;AAYC,IAAA,YAAY,EAAC,KAZd;AAaC,IAAA,IAAI,EAAC,UAbN;AAcC,qBAAgBH,UAdjB;AAeC,yBAAkB,MAfnB;AAgBC,iBACCA,UAAU,GACN,qCAAqCC,UAAY,EAD3C,GAEPU,SAnBL;AAqBC,6BACCT,uBAAuB,KAAK,CAAC,CAA7B,GACI,qCAAqCD,UAAY,IAAIC,uBAAyB,EADlF,GAEGS,SAxBL;AA0BC,wBAAoB,2CAA2CV,UAAY;AA1B5E,KADD;AA8BA;AAED,OAAO,MAAMW,UAAU,GAAGjB,UAAU,CAAEC,qBAAF,CAA7B;AAEP,eAAegB,UAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport type { ChangeEvent, ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../ui/context';\nimport type { TokenInputProps } from './types';\n\nexport function UnForwardedTokenInput(\n\tprops: WordPressComponentProps< TokenInputProps, 'input', false >,\n\tref: ForwardedRef< HTMLInputElement >\n) {\n\tconst {\n\t\tvalue,\n\t\tisExpanded,\n\t\tinstanceId,\n\t\tselectedSuggestionIndex,\n\t\tclassName,\n\t\tonChange,\n\t\t...restProps\n\t} = props;\n\n\tconst size = value ? value.length + 1 : 0;\n\n\tconst onChangeHandler = ( event: ChangeEvent< HTMLInputElement > ) => {\n\t\tif ( onChange ) {\n\t\t\tonChange( {\n\t\t\t\tvalue: event.target.value,\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<input\n\t\t\tref={ ref }\n\t\t\tid={ `components-form-token-input-${ instanceId }` }\n\t\t\ttype=\"text\"\n\t\t\t{ ...restProps }\n\t\t\tvalue={ value || '' }\n\t\t\tonChange={ onChangeHandler }\n\t\t\tsize={ size }\n\t\t\tclassName={ classnames(\n\t\t\t\tclassName,\n\t\t\t\t'components-form-token-field__input'\n\t\t\t) }\n\t\t\tautoComplete=\"off\"\n\t\t\trole=\"combobox\"\n\t\t\taria-expanded={ isExpanded }\n\t\t\taria-autocomplete=\"list\"\n\t\t\taria-owns={\n\t\t\t\tisExpanded\n\t\t\t\t\t? `components-form-token-suggestions-${ instanceId }`\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\taria-activedescendant={\n\t\t\t\tselectedSuggestionIndex !== -1\n\t\t\t\t\t? `components-form-token-suggestions-${ instanceId }-${ selectedSuggestionIndex }`\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\taria-describedby={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t/>\n\t);\n}\n\nexport const TokenInput = forwardRef( UnForwardedTokenInput );\n\nexport default TokenInput;\n"]}
@@ -4,7 +4,6 @@ import { createElement } from "@wordpress/element";
4
4
  * External dependencies
5
5
  */
6
6
  import classnames from 'classnames';
7
- import { noop } from 'lodash';
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
@@ -18,6 +17,9 @@ import { closeSmall } from '@wordpress/icons';
18
17
 
19
18
  import Button from '../button';
20
19
  import { VisuallyHidden } from '../visually-hidden';
20
+
21
+ const noop = () => {};
22
+
21
23
  export default function Token(_ref) {
22
24
  let {
23
25
  value,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-token-field/token.js"],"names":["classnames","noop","useInstanceId","__","sprintf","closeSmall","Button","VisuallyHidden","Token","value","status","title","displayTransform","isBorderless","disabled","onClickRemove","onMouseEnter","onMouseLeave","messages","termPosition","termsCount","instanceId","tokenClasses","onClick","transformedValue","termPositionAndCount","remove"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AACA,SAASC,IAAT,QAAqB,QAArB;AAEA;AACA;AACA;;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,UAAT,QAA2B,kBAA3B;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,SAASC,cAAT,QAA+B,oBAA/B;AAEA,eAAe,SAASC,KAAT,OAaX;AAAA,MAb2B;AAC9BC,IAAAA,KAD8B;AAE9BC,IAAAA,MAF8B;AAG9BC,IAAAA,KAH8B;AAI9BC,IAAAA,gBAJ8B;AAK9BC,IAAAA,YAAY,GAAG,KALe;AAM9BC,IAAAA,QAAQ,GAAG,KANmB;AAO9BC,IAAAA,aAAa,GAAGd,IAPc;AAQ9Be,IAAAA,YAR8B;AAS9BC,IAAAA,YAT8B;AAU9BC,IAAAA,QAV8B;AAW9BC,IAAAA,YAX8B;AAY9BC,IAAAA;AAZ8B,GAa3B;AACH,QAAMC,UAAU,GAAGnB,aAAa,CAAEM,KAAF,CAAhC;AACA,QAAMc,YAAY,GAAGtB,UAAU,CAAE,oCAAF,EAAwC;AACtE,gBAAY,YAAYU,MAD8C;AAEtE,kBAAc,cAAcA,MAF0C;AAGtE,qBAAiB,iBAAiBA,MAHoC;AAItE,qBAAiBG,YAJqD;AAKtE,mBAAeC;AALuD,GAAxC,CAA/B;;AAQA,QAAMS,OAAO,GAAG,MAAMR,aAAa,CAAE;AAAEN,IAAAA;AAAF,GAAF,CAAnC;;AAEA,QAAMe,gBAAgB,GAAGZ,gBAAgB,CAAEH,KAAF,CAAzC;AACA,QAAMgB,oBAAoB,GAAGrB,OAAO;AACnC;AACAD,EAAAA,EAAE,CAAE,qBAAF,CAFiC,EAGnCqB,gBAHmC,EAInCL,YAJmC,EAKnCC,UALmC,CAApC;AAQA,SACC;AACC,IAAA,SAAS,EAAGE,YADb;AAEC,IAAA,YAAY,EAAGN,YAFhB;AAGC,IAAA,YAAY,EAAGC,YAHhB;AAIC,IAAA,KAAK,EAAGN;AAJT,KAMC;AACC,IAAA,SAAS,EAAC,yCADX;AAEC,IAAA,EAAE,EAAI,2CAA2CU,UAAY;AAF9D,KAIC,cAAC,cAAD;AAAgB,IAAA,EAAE,EAAC;AAAnB,KACGI,oBADH,CAJD,EAOC;AAAM,mBAAY;AAAlB,KAA2BD,gBAA3B,CAPD,CAND,EAgBC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,2CADX;AAEC,IAAA,IAAI,EAAGnB,UAFR;AAGC,IAAA,OAAO,EAAG,CAAES,QAAF,IAAcS,OAHzB;AAIC,IAAA,KAAK,EAAGL,QAAQ,CAACQ,MAJlB;AAKC,wBAAoB,2CAA2CL,UAAY;AAL5E,IAhBD,CADD;AA0BA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { VisuallyHidden } from '../visually-hidden';\n\nexport default function Token( {\n\tvalue,\n\tstatus,\n\ttitle,\n\tdisplayTransform,\n\tisBorderless = false,\n\tdisabled = false,\n\tonClickRemove = noop,\n\tonMouseEnter,\n\tonMouseLeave,\n\tmessages,\n\ttermPosition,\n\ttermsCount,\n} ) {\n\tconst instanceId = useInstanceId( Token );\n\tconst tokenClasses = classnames( 'components-form-token-field__token', {\n\t\t'is-error': 'error' === status,\n\t\t'is-success': 'success' === status,\n\t\t'is-validating': 'validating' === status,\n\t\t'is-borderless': isBorderless,\n\t\t'is-disabled': disabled,\n\t} );\n\n\tconst onClick = () => onClickRemove( { value } );\n\n\tconst transformedValue = displayTransform( value );\n\tconst termPositionAndCount = sprintf(\n\t\t/* translators: 1: term name, 2: term position in a set of terms, 3: total term set count. */\n\t\t__( '%1$s (%2$s of %3$s)' ),\n\t\ttransformedValue,\n\t\ttermPosition,\n\t\ttermsCount\n\t);\n\n\treturn (\n\t\t<span\n\t\t\tclassName={ tokenClasses }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\ttitle={ title }\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName=\"components-form-token-field__token-text\"\n\t\t\t\tid={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t>\n\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t{ termPositionAndCount }\n\t\t\t\t</VisuallyHidden>\n\t\t\t\t<span aria-hidden=\"true\">{ transformedValue }</span>\n\t\t\t</span>\n\n\t\t\t<Button\n\t\t\t\tclassName=\"components-form-token-field__remove-token\"\n\t\t\t\ticon={ closeSmall }\n\t\t\t\tonClick={ ! disabled && onClick }\n\t\t\t\tlabel={ messages.remove }\n\t\t\t\taria-describedby={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t/>\n\t\t</span>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-token-field/token.tsx"],"names":["classnames","useInstanceId","__","sprintf","closeSmall","Button","VisuallyHidden","noop","Token","value","status","title","displayTransform","isBorderless","disabled","onClickRemove","onMouseEnter","onMouseLeave","messages","termPosition","termsCount","instanceId","tokenClasses","onClick","transformedValue","termPositionAndCount","remove"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AACA,SAASC,UAAT,QAA2B,kBAA3B;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,SAASC,cAAT,QAA+B,oBAA/B;;AAGA,MAAMC,IAAI,GAAG,MAAM,CAAE,CAArB;;AAEA,eAAe,SAASC,KAAT,OAaC;AAAA,MAbe;AAC9BC,IAAAA,KAD8B;AAE9BC,IAAAA,MAF8B;AAG9BC,IAAAA,KAH8B;AAI9BC,IAAAA,gBAJ8B;AAK9BC,IAAAA,YAAY,GAAG,KALe;AAM9BC,IAAAA,QAAQ,GAAG,KANmB;AAO9BC,IAAAA,aAAa,GAAGR,IAPc;AAQ9BS,IAAAA,YAR8B;AAS9BC,IAAAA,YAT8B;AAU9BC,IAAAA,QAV8B;AAW9BC,IAAAA,YAX8B;AAY9BC,IAAAA;AAZ8B,GAaf;AACf,QAAMC,UAAU,GAAGpB,aAAa,CAAEO,KAAF,CAAhC;AACA,QAAMc,YAAY,GAAGtB,UAAU,CAAE,oCAAF,EAAwC;AACtE,gBAAY,YAAYU,MAD8C;AAEtE,kBAAc,cAAcA,MAF0C;AAGtE,qBAAiB,iBAAiBA,MAHoC;AAItE,qBAAiBG,YAJqD;AAKtE,mBAAeC;AALuD,GAAxC,CAA/B;;AAQA,QAAMS,OAAO,GAAG,MAAMR,aAAa,CAAE;AAAEN,IAAAA;AAAF,GAAF,CAAnC;;AAEA,QAAMe,gBAAgB,GAAGZ,gBAAgB,CAAEH,KAAF,CAAzC;AACA,QAAMgB,oBAAoB,GAAGtB,OAAO;AACnC;AACAD,EAAAA,EAAE,CAAE,qBAAF,CAFiC,EAGnCsB,gBAHmC,EAInCL,YAJmC,EAKnCC,UALmC,CAApC;AAQA,SACC;AACC,IAAA,SAAS,EAAGE,YADb;AAEC,IAAA,YAAY,EAAGN,YAFhB;AAGC,IAAA,YAAY,EAAGC,YAHhB;AAIC,IAAA,KAAK,EAAGN;AAJT,KAMC;AACC,IAAA,SAAS,EAAC,yCADX;AAEC,IAAA,EAAE,EAAI,2CAA2CU,UAAY;AAF9D,KAIC,cAAC,cAAD;AAAgB,IAAA,EAAE,EAAC;AAAnB,KACGI,oBADH,CAJD,EAOC;AAAM,mBAAY;AAAlB,KAA2BD,gBAA3B,CAPD,CAND,EAgBC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,2CADX;AAEC,IAAA,IAAI,EAAGpB,UAFR;AAGC,IAAA,OAAO,EAAG,CAAEU,QAAF,IAAcS,OAHzB;AAIC,IAAA,KAAK,EAAGL,QAAQ,CAACQ,MAJlB;AAKC,wBAAoB,2CAA2CL,UAAY;AAL5E,IAhBD,CADD;AA0BA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { VisuallyHidden } from '../visually-hidden';\nimport type { TokenProps } from './types';\n\nconst noop = () => {};\n\nexport default function Token( {\n\tvalue,\n\tstatus,\n\ttitle,\n\tdisplayTransform,\n\tisBorderless = false,\n\tdisabled = false,\n\tonClickRemove = noop,\n\tonMouseEnter,\n\tonMouseLeave,\n\tmessages,\n\ttermPosition,\n\ttermsCount,\n}: TokenProps ) {\n\tconst instanceId = useInstanceId( Token );\n\tconst tokenClasses = classnames( 'components-form-token-field__token', {\n\t\t'is-error': 'error' === status,\n\t\t'is-success': 'success' === status,\n\t\t'is-validating': 'validating' === status,\n\t\t'is-borderless': isBorderless,\n\t\t'is-disabled': disabled,\n\t} );\n\n\tconst onClick = () => onClickRemove( { value } );\n\n\tconst transformedValue = displayTransform( value );\n\tconst termPositionAndCount = sprintf(\n\t\t/* translators: 1: term name, 2: term position in a set of terms, 3: total term set count. */\n\t\t__( '%1$s (%2$s of %3$s)' ),\n\t\ttransformedValue,\n\t\ttermPosition,\n\t\ttermsCount\n\t);\n\n\treturn (\n\t\t<span\n\t\t\tclassName={ tokenClasses }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\ttitle={ title }\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName=\"components-form-token-field__token-text\"\n\t\t\t\tid={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t>\n\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t{ termPositionAndCount }\n\t\t\t\t</VisuallyHidden>\n\t\t\t\t<span aria-hidden=\"true\">{ transformedValue }</span>\n\t\t\t</span>\n\n\t\t\t<Button\n\t\t\t\tclassName=\"components-form-token-field__remove-token\"\n\t\t\t\ticon={ closeSmall }\n\t\t\t\tonClick={ ! disabled && onClick }\n\t\t\t\tlabel={ messages.remove }\n\t\t\t\taria-describedby={ `components-form-token-field__token-text-${ instanceId }` }\n\t\t\t/>\n\t\t</span>\n\t);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/gradient-picker/index.js"],"names":["map","__","sprintf","useCallback","useMemo","CircularOptionPicker","CustomGradientPicker","VStack","ColorHeading","SingleOrigin","className","clearGradient","gradients","onChange","value","actions","content","gradientOptions","gradient","name","color","background","MultipleOrigin","index","gradientSet","length","GradientPicker","clearable","disableCustomGradients","__experimentalHasMultipleOrigins","__experimentalIsRenderedInSidebar","undefined","Component"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport CircularOptionPicker from '../circular-option-picker';\nimport CustomGradientPicker from '../custom-gradient-picker';\nimport { VStack } from '../v-stack';\nimport { ColorHeading } from '../color-palette/styles';\n\nfunction SingleOrigin( {\n\tclassName,\n\tclearGradient,\n\tgradients,\n\tonChange,\n\tvalue,\n\tactions,\n\tcontent,\n} ) {\n\tconst gradientOptions = useMemo( () => {\n\t\treturn map( gradients, ( { gradient, name } ) => (\n\t\t\t<CircularOptionPicker.Option\n\t\t\t\tkey={ gradient }\n\t\t\t\tvalue={ gradient }\n\t\t\t\tisSelected={ value === gradient }\n\t\t\t\ttooltipText={\n\t\t\t\t\tname ||\n\t\t\t\t\t// translators: %s: gradient code e.g: \"linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);\".\n\t\t\t\t\tsprintf( __( 'Gradient code: %s' ), gradient )\n\t\t\t\t}\n\t\t\t\tstyle={ { color: 'rgba( 0,0,0,0 )', background: gradient } }\n\t\t\t\tonClick={\n\t\t\t\t\tvalue === gradient\n\t\t\t\t\t\t? clearGradient\n\t\t\t\t\t\t: () => onChange( gradient )\n\t\t\t\t}\n\t\t\t\taria-label={\n\t\t\t\t\tname\n\t\t\t\t\t\t? // translators: %s: The name of the gradient e.g: \"Angular red to blue\".\n\t\t\t\t\t\t sprintf( __( 'Gradient: %s' ), name )\n\t\t\t\t\t\t: // translators: %s: gradient code e.g: \"linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);\".\n\t\t\t\t\t\t sprintf( __( 'Gradient code: %s' ), gradient )\n\t\t\t\t}\n\t\t\t/>\n\t\t) );\n\t}, [ gradients, value, onChange, clearGradient ] );\n\treturn (\n\t\t<CircularOptionPicker\n\t\t\tclassName={ className }\n\t\t\toptions={ gradientOptions }\n\t\t\tactions={ actions }\n\t\t>\n\t\t\t{ content }\n\t\t</CircularOptionPicker>\n\t);\n}\n\nfunction MultipleOrigin( {\n\tclassName,\n\tclearGradient,\n\tgradients,\n\tonChange,\n\tvalue,\n\tactions,\n\tcontent,\n} ) {\n\treturn (\n\t\t<VStack spacing={ 3 } className={ className }>\n\t\t\t{ gradients.map( ( { name, gradients: gradientSet }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<VStack spacing={ 2 } key={ index }>\n\t\t\t\t\t\t<ColorHeading>{ name }</ColorHeading>\n\t\t\t\t\t\t<SingleOrigin\n\t\t\t\t\t\t\tclearGradient={ clearGradient }\n\t\t\t\t\t\t\tgradients={ gradientSet }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t{ ...( gradients.length === index + 1\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\tactions,\n\t\t\t\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: {} ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n\nexport default function GradientPicker( {\n\tclassName,\n\tgradients,\n\tonChange,\n\tvalue,\n\tclearable = true,\n\tdisableCustomGradients = false,\n\t__experimentalHasMultipleOrigins,\n\t__experimentalIsRenderedInSidebar,\n} ) {\n\tconst clearGradient = useCallback( () => onChange( undefined ), [\n\t\tonChange,\n\t] );\n\tconst Component =\n\t\t__experimentalHasMultipleOrigins && gradients?.length\n\t\t\t? MultipleOrigin\n\t\t\t: SingleOrigin;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ className }\n\t\t\tclearable={ clearable }\n\t\t\tclearGradient={ clearGradient }\n\t\t\tgradients={ gradients }\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ value }\n\t\t\tactions={\n\t\t\t\tclearable &&\n\t\t\t\t( gradients?.length || ! disableCustomGradients ) && (\n\t\t\t\t\t<CircularOptionPicker.ButtonAction\n\t\t\t\t\t\tonClick={ clearGradient }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear' ) }\n\t\t\t\t\t</CircularOptionPicker.ButtonAction>\n\t\t\t\t)\n\t\t\t}\n\t\t\tcontent={\n\t\t\t\t! disableCustomGradients && (\n\t\t\t\t\t<CustomGradientPicker\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/gradient-picker/index.js"],"names":["map","__","sprintf","useCallback","useMemo","CircularOptionPicker","CustomGradientPicker","VStack","ColorHeading","SingleOrigin","className","clearGradient","gradients","onChange","value","actions","content","gradientOptions","gradient","name","color","background","MultipleOrigin","index","gradientSet","length","GradientPicker","clearable","disableCustomGradients","__experimentalHasMultipleOrigins","__experimentalIsRenderedInSidebar","undefined","Component"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { map } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport CircularOptionPicker from '../circular-option-picker';\nimport CustomGradientPicker from '../custom-gradient-picker';\nimport { VStack } from '../v-stack';\nimport { ColorHeading } from '../color-palette/styles';\n\nfunction SingleOrigin( {\n\tclassName,\n\tclearGradient,\n\tgradients,\n\tonChange,\n\tvalue,\n\tactions,\n\tcontent,\n} ) {\n\tconst gradientOptions = useMemo( () => {\n\t\treturn map( gradients, ( { gradient, name } ) => (\n\t\t\t<CircularOptionPicker.Option\n\t\t\t\tkey={ gradient }\n\t\t\t\tvalue={ gradient }\n\t\t\t\tisSelected={ value === gradient }\n\t\t\t\ttooltipText={\n\t\t\t\t\tname ||\n\t\t\t\t\t// translators: %s: gradient code e.g: \"linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);\".\n\t\t\t\t\tsprintf( __( 'Gradient code: %s' ), gradient )\n\t\t\t\t}\n\t\t\t\tstyle={ { color: 'rgba( 0,0,0,0 )', background: gradient } }\n\t\t\t\tonClick={\n\t\t\t\t\tvalue === gradient\n\t\t\t\t\t\t? clearGradient\n\t\t\t\t\t\t: () => onChange( gradient )\n\t\t\t\t}\n\t\t\t\taria-label={\n\t\t\t\t\tname\n\t\t\t\t\t\t? // translators: %s: The name of the gradient e.g: \"Angular red to blue\".\n\t\t\t\t\t\t sprintf( __( 'Gradient: %s' ), name )\n\t\t\t\t\t\t: // translators: %s: gradient code e.g: \"linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);\".\n\t\t\t\t\t\t sprintf( __( 'Gradient code: %s' ), gradient )\n\t\t\t\t}\n\t\t\t/>\n\t\t) );\n\t}, [ gradients, value, onChange, clearGradient ] );\n\treturn (\n\t\t<CircularOptionPicker\n\t\t\tclassName={ className }\n\t\t\toptions={ gradientOptions }\n\t\t\tactions={ actions }\n\t\t>\n\t\t\t{ content }\n\t\t</CircularOptionPicker>\n\t);\n}\n\nfunction MultipleOrigin( {\n\tclassName,\n\tclearGradient,\n\tgradients,\n\tonChange,\n\tvalue,\n\tactions,\n\tcontent,\n} ) {\n\treturn (\n\t\t<VStack spacing={ 3 } className={ className }>\n\t\t\t{ gradients.map( ( { name, gradients: gradientSet }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<VStack spacing={ 2 } key={ index }>\n\t\t\t\t\t\t<ColorHeading>{ name }</ColorHeading>\n\t\t\t\t\t\t<SingleOrigin\n\t\t\t\t\t\t\tclearGradient={ clearGradient }\n\t\t\t\t\t\t\tgradients={ gradientSet }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t{ ...( gradients.length === index + 1\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\tactions,\n\t\t\t\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: {} ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n\nexport default function GradientPicker( {\n\tclassName,\n\tgradients,\n\tonChange,\n\tvalue,\n\tclearable = true,\n\tdisableCustomGradients = false,\n\t__experimentalHasMultipleOrigins,\n\t__experimentalIsRenderedInSidebar,\n} ) {\n\tconst clearGradient = useCallback(\n\t\t() => onChange( undefined ),\n\t\t[ onChange ]\n\t);\n\tconst Component =\n\t\t__experimentalHasMultipleOrigins && gradients?.length\n\t\t\t? MultipleOrigin\n\t\t\t: SingleOrigin;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ className }\n\t\t\tclearable={ clearable }\n\t\t\tclearGradient={ clearGradient }\n\t\t\tgradients={ gradients }\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ value }\n\t\t\tactions={\n\t\t\t\tclearable &&\n\t\t\t\t( gradients?.length || ! disableCustomGradients ) && (\n\t\t\t\t\t<CircularOptionPicker.ButtonAction\n\t\t\t\t\t\tonClick={ clearGradient }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear' ) }\n\t\t\t\t\t</CircularOptionPicker.ButtonAction>\n\t\t\t\t)\n\t\t\t}\n\t\t\tcontent={\n\t\t\t\t! disableCustomGradients && (\n\t\t\t\t\t<CustomGradientPicker\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t);\n}\n"]}