@wordpress/components 21.3.0 → 22.1.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 (811) hide show
  1. package/CHANGELOG.md +107 -1
  2. package/build/angle-picker-control/index.js +4 -2
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/autocomplete/autocompleter-ui.js +28 -2
  5. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  6. package/build/autocomplete/index.js +7 -3
  7. package/build/autocomplete/index.js.map +1 -1
  8. package/build/border-box-control/border-box-control/component.js +63 -15
  9. package/build/border-box-control/border-box-control/component.js.map +1 -1
  10. package/build/border-box-control/border-box-control/hook.js +19 -3
  11. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  12. package/build/border-box-control/border-box-control-linked-button/hook.js +3 -3
  13. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  14. package/build/border-box-control/border-box-control-split-controls/component.js +3 -3
  15. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  16. package/build/border-box-control/border-box-control-split-controls/hook.js +18 -11
  17. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  18. package/build/border-box-control/border-box-control-visualizer/hook.js +3 -7
  19. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  20. package/build/border-box-control/styles.js +34 -34
  21. package/build/border-box-control/styles.js.map +1 -1
  22. package/build/border-control/border-control/component.js +6 -5
  23. package/build/border-control/border-control/component.js.map +1 -1
  24. package/build/border-control/border-control/hook.js +22 -5
  25. package/build/border-control/border-control/hook.js.map +1 -1
  26. package/build/border-control/border-control-dropdown/component.js +1 -1
  27. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  28. package/build/border-control/border-control-dropdown/hook.js +15 -7
  29. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  30. package/build/border-control/styles.js +19 -34
  31. package/build/border-control/styles.js.map +1 -1
  32. package/build/box-control/index.js +6 -2
  33. package/build/box-control/index.js.map +1 -1
  34. package/build/circular-option-picker/index.js +14 -14
  35. package/build/circular-option-picker/index.js.map +1 -1
  36. package/build/color-palette/index.js +84 -31
  37. package/build/color-palette/index.js.map +1 -1
  38. package/build/color-palette/styles.js +3 -3
  39. package/build/color-palette/styles.js.map +1 -1
  40. package/build/color-palette/types.js +6 -0
  41. package/build/color-palette/types.js.map +1 -0
  42. package/build/color-picker/input-with-slider.js +18 -4
  43. package/build/color-picker/input-with-slider.js.map +1 -1
  44. package/build/custom-gradient-picker/gradient-bar/index.js +1 -3
  45. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  46. package/build/custom-select-control/index.js +12 -5
  47. package/build/custom-select-control/index.js.map +1 -1
  48. package/build/dashicon/index.js +17 -2
  49. package/build/dashicon/index.js.map +1 -1
  50. package/build/date-time/date-time/index.js +2 -0
  51. package/build/date-time/date-time/index.js.map +1 -1
  52. package/build/date-time/time/index.js +4 -4
  53. package/build/date-time/time/index.js.map +1 -1
  54. package/build/disabled/index.js +8 -1
  55. package/build/disabled/index.js.map +1 -1
  56. package/build/draggable/index.js +58 -38
  57. package/build/draggable/index.js.map +1 -1
  58. package/build/draggable/types.js +6 -0
  59. package/build/draggable/types.js.map +1 -0
  60. package/build/external-link/index.js +13 -2
  61. package/build/external-link/index.js.map +1 -1
  62. package/build/flex/flex/hook.js +2 -3
  63. package/build/flex/flex/hook.js.map +1 -1
  64. package/build/focal-point-picker/focal-point.js +2 -12
  65. package/build/focal-point-picker/focal-point.js.map +1 -1
  66. package/build/focal-point-picker/styles/focal-point-style.js +11 -51
  67. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  68. package/build/focusable-iframe/index.js +0 -1
  69. package/build/focusable-iframe/index.js.map +1 -1
  70. package/build/font-size-picker/constants.js +41 -0
  71. package/build/font-size-picker/constants.js.map +1 -0
  72. package/build/font-size-picker/font-size-picker-select.js +97 -0
  73. package/build/font-size-picker/font-size-picker-select.js.map +1 -0
  74. package/build/font-size-picker/font-size-picker-toggle-group.js +50 -0
  75. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -0
  76. package/build/font-size-picker/index.js +86 -110
  77. package/build/font-size-picker/index.js.map +1 -1
  78. package/build/font-size-picker/utils.js +16 -109
  79. package/build/font-size-picker/utils.js.map +1 -1
  80. package/build/form-file-upload/index.js.map +1 -1
  81. package/build/form-token-field/index.js +9 -6
  82. package/build/form-token-field/index.js.map +1 -1
  83. package/build/higher-order/navigate-regions/index.js +3 -0
  84. package/build/higher-order/navigate-regions/index.js.map +1 -1
  85. package/build/higher-order/with-filters/index.js +1 -7
  86. package/build/higher-order/with-filters/index.js.map +1 -1
  87. package/build/icon/index.js +3 -2
  88. package/build/icon/index.js.map +1 -1
  89. package/build/index.js +15 -1
  90. package/build/index.js.map +1 -1
  91. package/build/input-control/index.js +2 -0
  92. package/build/input-control/index.js.map +1 -1
  93. package/build/input-control/input-base.js +1 -1
  94. package/build/input-control/input-base.js.map +1 -1
  95. package/build/input-control/styles/input-control-styles.js +21 -21
  96. package/build/input-control/styles/input-control-styles.js.map +1 -1
  97. package/build/isolated-event-container/index.js +5 -9
  98. package/build/isolated-event-container/index.js.map +1 -1
  99. package/build/item-group/styles.js +10 -10
  100. package/build/item-group/styles.js.map +1 -1
  101. package/build/menu-group/index.js +17 -3
  102. package/build/menu-group/index.js.map +1 -1
  103. package/build/menu-group/types.js +6 -0
  104. package/build/menu-group/types.js.map +1 -0
  105. package/build/navigator/navigator-screen/component.js +27 -17
  106. package/build/navigator/navigator-screen/component.js.map +1 -1
  107. package/build/number-control/index.js +82 -22
  108. package/build/number-control/index.js.map +1 -1
  109. package/build/number-control/styles/number-control-styles.js +36 -6
  110. package/build/number-control/styles/number-control-styles.js.map +1 -1
  111. package/build/palette-edit/index.js +3 -1
  112. package/build/palette-edit/index.js.map +1 -1
  113. package/build/popover/index.js +23 -33
  114. package/build/popover/index.js.map +1 -1
  115. package/build/radio-group/index.js +7 -1
  116. package/build/radio-group/index.js.map +1 -1
  117. package/build/{radio → radio-group/radio}/index.js +7 -1
  118. package/build/radio-group/radio/index.js.map +1 -0
  119. package/build/{radio-context → radio-group/radio-context}/index.js +0 -0
  120. package/build/radio-group/radio-context/index.js.map +1 -0
  121. package/build/range-control/styles/range-control-styles.js +47 -57
  122. package/build/range-control/styles/range-control-styles.js.map +1 -1
  123. package/build/slot-fill/bubbles-virtually/fill.js +9 -5
  124. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  125. package/build/slot-fill/bubbles-virtually/slot.js +13 -8
  126. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  127. package/build/slot-fill/bubbles-virtually/use-slot.js +15 -9
  128. package/build/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  129. package/build/slot-fill/fill.js +12 -4
  130. package/build/slot-fill/fill.js.map +1 -1
  131. package/build/slot-fill/use-slot.js +3 -1
  132. package/build/slot-fill/use-slot.js.map +1 -1
  133. package/build/snackbar/index.js +1 -1
  134. package/build/snackbar/index.js.map +1 -1
  135. package/build/spinner/styles.js +4 -4
  136. package/build/spinner/styles.js.map +1 -1
  137. package/build/tab-panel/index.js +4 -9
  138. package/build/tab-panel/index.js.map +1 -1
  139. package/build/text-control/index.js +0 -2
  140. package/build/text-control/index.js.map +1 -1
  141. package/build/toggle-control/index.js +15 -3
  142. package/build/toggle-control/index.js.map +1 -1
  143. package/build/toggle-group-control/toggle-group-control/as-button-group.js +90 -0
  144. package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -0
  145. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +90 -0
  146. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -0
  147. package/build/toggle-group-control/toggle-group-control/component.js +22 -50
  148. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  149. package/build/toggle-group-control/toggle-group-control/styles.js +13 -8
  150. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  151. package/build/toggle-group-control/toggle-group-control-option-base/component.js +39 -17
  152. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  153. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +23 -23
  154. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  155. package/build/toolbar-dropdown-menu/index.js +1 -1
  156. package/build/toolbar-dropdown-menu/index.js.map +1 -1
  157. package/build/tools-panel/styles.js +14 -14
  158. package/build/tools-panel/styles.js.map +1 -1
  159. package/build/tools-panel/tools-panel-item/hook.js +9 -5
  160. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  161. package/build/ui/context/context-system-provider.js +9 -22
  162. package/build/ui/context/context-system-provider.js.map +1 -1
  163. package/build/unit-control/index.js +7 -9
  164. package/build/unit-control/index.js.map +1 -1
  165. package/build/unit-control/styles/unit-control-styles.js +15 -25
  166. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  167. package/build/utils/colors-values.js +3 -2
  168. package/build/utils/colors-values.js.map +1 -1
  169. package/build/utils/config-values.js +0 -1
  170. package/build/utils/config-values.js.map +1 -1
  171. package/build/utils/hooks/use-update-effect.js +5 -1
  172. package/build/utils/hooks/use-update-effect.js.map +1 -1
  173. package/build/utils/input/base.js +2 -2
  174. package/build/utils/input/base.js.map +1 -1
  175. package/build/view/index.js.map +1 -1
  176. package/build-module/angle-picker-control/index.js +3 -2
  177. package/build-module/angle-picker-control/index.js.map +1 -1
  178. package/build-module/autocomplete/autocompleter-ui.js +29 -3
  179. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  180. package/build-module/autocomplete/index.js +7 -3
  181. package/build-module/autocomplete/index.js.map +1 -1
  182. package/build-module/border-box-control/border-box-control/component.js +61 -13
  183. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  184. package/build-module/border-box-control/border-box-control/hook.js +19 -3
  185. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  186. package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -3
  187. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  188. package/build-module/border-box-control/border-box-control-split-controls/component.js +3 -3
  189. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  190. package/build-module/border-box-control/border-box-control-split-controls/hook.js +19 -10
  191. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  192. package/build-module/border-box-control/border-box-control-visualizer/hook.js +4 -6
  193. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  194. package/build-module/border-box-control/styles.js +26 -28
  195. package/build-module/border-box-control/styles.js.map +1 -1
  196. package/build-module/border-control/border-control/component.js +6 -5
  197. package/build-module/border-control/border-control/component.js.map +1 -1
  198. package/build-module/border-control/border-control/hook.js +22 -5
  199. package/build-module/border-control/border-control/hook.js.map +1 -1
  200. package/build-module/border-control/border-control-dropdown/component.js +1 -1
  201. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  202. package/build-module/border-control/border-control-dropdown/hook.js +15 -7
  203. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  204. package/build-module/border-control/styles.js +20 -36
  205. package/build-module/border-control/styles.js.map +1 -1
  206. package/build-module/box-control/index.js +6 -2
  207. package/build-module/box-control/index.js.map +1 -1
  208. package/build-module/circular-option-picker/index.js +14 -14
  209. package/build-module/circular-option-picker/index.js.map +1 -1
  210. package/build-module/color-palette/index.js +82 -29
  211. package/build-module/color-palette/index.js.map +1 -1
  212. package/build-module/color-palette/styles.js +3 -3
  213. package/build-module/color-palette/styles.js.map +1 -1
  214. package/build-module/color-palette/types.js +2 -0
  215. package/build-module/color-palette/types.js.map +1 -0
  216. package/build-module/color-picker/input-with-slider.js +18 -4
  217. package/build-module/color-picker/input-with-slider.js.map +1 -1
  218. package/build-module/custom-gradient-picker/gradient-bar/index.js +1 -2
  219. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  220. package/build-module/custom-select-control/index.js +12 -5
  221. package/build-module/custom-select-control/index.js.map +1 -1
  222. package/build-module/dashicon/index.js +17 -2
  223. package/build-module/dashicon/index.js.map +1 -1
  224. package/build-module/date-time/date-time/index.js +2 -0
  225. package/build-module/date-time/date-time/index.js.map +1 -1
  226. package/build-module/date-time/time/index.js +4 -4
  227. package/build-module/date-time/time/index.js.map +1 -1
  228. package/build-module/disabled/index.js +8 -1
  229. package/build-module/disabled/index.js.map +1 -1
  230. package/build-module/draggable/index.js +59 -38
  231. package/build-module/draggable/index.js.map +1 -1
  232. package/build-module/draggable/types.js +2 -0
  233. package/build-module/draggable/types.js.map +1 -0
  234. package/build-module/external-link/index.js +13 -2
  235. package/build-module/external-link/index.js.map +1 -1
  236. package/build-module/flex/flex/hook.js +2 -3
  237. package/build-module/flex/flex/hook.js.map +1 -1
  238. package/build-module/focal-point-picker/focal-point.js +3 -13
  239. package/build-module/focal-point-picker/focal-point.js.map +1 -1
  240. package/build-module/focal-point-picker/styles/focal-point-style.js +6 -52
  241. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  242. package/build-module/focusable-iframe/index.js +0 -1
  243. package/build-module/focusable-iframe/index.js.map +1 -1
  244. package/build-module/font-size-picker/constants.js +31 -0
  245. package/build-module/font-size-picker/constants.js.map +1 -0
  246. package/build-module/font-size-picker/font-size-picker-select.js +83 -0
  247. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -0
  248. package/build-module/font-size-picker/font-size-picker-toggle-group.js +40 -0
  249. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -0
  250. package/build-module/font-size-picker/index.js +88 -111
  251. package/build-module/font-size-picker/index.js.map +1 -1
  252. package/build-module/font-size-picker/utils.js +15 -105
  253. package/build-module/font-size-picker/utils.js.map +1 -1
  254. package/build-module/form-file-upload/index.js.map +1 -1
  255. package/build-module/form-token-field/index.js +9 -6
  256. package/build-module/form-token-field/index.js.map +1 -1
  257. package/build-module/higher-order/navigate-regions/index.js +3 -0
  258. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  259. package/build-module/higher-order/with-filters/index.js +1 -6
  260. package/build-module/higher-order/with-filters/index.js.map +1 -1
  261. package/build-module/icon/index.js +3 -2
  262. package/build-module/icon/index.js.map +1 -1
  263. package/build-module/index.js +3 -2
  264. package/build-module/index.js.map +1 -1
  265. package/build-module/input-control/index.js +2 -0
  266. package/build-module/input-control/index.js.map +1 -1
  267. package/build-module/input-control/input-base.js +1 -1
  268. package/build-module/input-control/input-base.js.map +1 -1
  269. package/build-module/input-control/styles/input-control-styles.js +21 -21
  270. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  271. package/build-module/isolated-event-container/index.js +7 -9
  272. package/build-module/isolated-event-container/index.js.map +1 -1
  273. package/build-module/item-group/styles.js +10 -10
  274. package/build-module/item-group/styles.js.map +1 -1
  275. package/build-module/menu-group/index.js +20 -2
  276. package/build-module/menu-group/index.js.map +1 -1
  277. package/build-module/menu-group/types.js +2 -0
  278. package/build-module/menu-group/types.js.map +1 -0
  279. package/build-module/navigator/navigator-screen/component.js +27 -7
  280. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  281. package/build-module/number-control/index.js +81 -26
  282. package/build-module/number-control/index.js.map +1 -1
  283. package/build-module/number-control/styles/number-control-styles.js +30 -4
  284. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  285. package/build-module/palette-edit/index.js +3 -1
  286. package/build-module/palette-edit/index.js.map +1 -1
  287. package/build-module/popover/index.js +23 -33
  288. package/build-module/popover/index.js.map +1 -1
  289. package/build-module/radio-group/index.js +6 -1
  290. package/build-module/radio-group/index.js.map +1 -1
  291. package/build-module/{radio → radio-group/radio}/index.js +6 -1
  292. package/build-module/radio-group/radio/index.js.map +1 -0
  293. package/build-module/{radio-context → radio-group/radio-context}/index.js +0 -0
  294. package/build-module/radio-group/radio-context/index.js.map +1 -0
  295. package/build-module/range-control/styles/range-control-styles.js +47 -57
  296. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  297. package/build-module/slot-fill/bubbles-virtually/fill.js +9 -5
  298. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  299. package/build-module/slot-fill/bubbles-virtually/slot.js +13 -8
  300. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  301. package/build-module/slot-fill/bubbles-virtually/use-slot.js +15 -9
  302. package/build-module/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  303. package/build-module/slot-fill/fill.js +12 -4
  304. package/build-module/slot-fill/fill.js.map +1 -1
  305. package/build-module/slot-fill/use-slot.js +3 -1
  306. package/build-module/slot-fill/use-slot.js.map +1 -1
  307. package/build-module/snackbar/index.js +1 -1
  308. package/build-module/snackbar/index.js.map +1 -1
  309. package/build-module/spinner/styles.js +4 -4
  310. package/build-module/spinner/styles.js.map +1 -1
  311. package/build-module/tab-panel/index.js +5 -10
  312. package/build-module/tab-panel/index.js.map +1 -1
  313. package/build-module/text-control/index.js +0 -2
  314. package/build-module/text-control/index.js.map +1 -1
  315. package/build-module/toggle-control/index.js +15 -3
  316. package/build-module/toggle-control/index.js.map +1 -1
  317. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +76 -0
  318. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -0
  319. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +75 -0
  320. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -0
  321. package/build-module/toggle-group-control/toggle-group-control/component.js +20 -49
  322. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  323. package/build-module/toggle-group-control/toggle-group-control/styles.js +13 -6
  324. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  325. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +39 -17
  326. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  327. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +21 -18
  328. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  329. package/build-module/toolbar-dropdown-menu/index.js +1 -1
  330. package/build-module/toolbar-dropdown-menu/index.js.map +1 -1
  331. package/build-module/tools-panel/styles.js +14 -14
  332. package/build-module/tools-panel/styles.js.map +1 -1
  333. package/build-module/tools-panel/tools-panel-item/hook.js +9 -5
  334. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  335. package/build-module/ui/context/context-system-provider.js +6 -20
  336. package/build-module/ui/context/context-system-provider.js.map +1 -1
  337. package/build-module/unit-control/index.js +8 -10
  338. package/build-module/unit-control/index.js.map +1 -1
  339. package/build-module/unit-control/styles/unit-control-styles.js +8 -24
  340. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  341. package/build-module/utils/colors-values.js +3 -2
  342. package/build-module/utils/colors-values.js.map +1 -1
  343. package/build-module/utils/config-values.js +0 -1
  344. package/build-module/utils/config-values.js.map +1 -1
  345. package/build-module/utils/hooks/use-update-effect.js +5 -1
  346. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  347. package/build-module/utils/input/base.js +2 -2
  348. package/build-module/utils/input/base.js.map +1 -1
  349. package/build-module/view/index.js.map +1 -1
  350. package/build-style/style-rtl.css +93 -85
  351. package/build-style/style.css +91 -83
  352. package/build-types/base-field/hook.d.ts +11 -11
  353. package/build-types/border-box-control/border-box-control/component.d.ts +55 -6
  354. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  355. package/build-types/border-box-control/border-box-control/hook.d.ts +18 -17
  356. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  357. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts +4 -2
  358. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -1
  359. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +12 -12
  360. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  361. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +3 -3
  362. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  363. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +17 -17
  364. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  365. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts +3 -2
  366. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  367. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +12 -12
  368. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  369. package/build-types/border-box-control/stories/index.d.ts +17 -0
  370. package/build-types/border-box-control/stories/index.d.ts.map +1 -0
  371. package/build-types/border-box-control/styles.d.ts +7 -6
  372. package/build-types/border-box-control/styles.d.ts.map +1 -1
  373. package/build-types/border-box-control/types.d.ts +5 -42
  374. package/build-types/border-box-control/types.d.ts.map +1 -1
  375. package/build-types/border-control/border-control/component.d.ts +4 -2
  376. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  377. package/build-types/border-control/border-control/hook.d.ts +18 -18
  378. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  379. package/build-types/border-control/border-control-dropdown/component.d.ts +3 -3
  380. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  381. package/build-types/border-control/border-control-dropdown/hook.d.ts +16 -16
  382. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  383. package/build-types/border-control/border-control-style-picker/hook.d.ts +11 -11
  384. package/build-types/border-control/stories/index.d.ts +24 -12
  385. package/build-types/border-control/stories/index.d.ts.map +1 -1
  386. package/build-types/border-control/styles.d.ts +3 -3
  387. package/build-types/border-control/styles.d.ts.map +1 -1
  388. package/build-types/border-control/types.d.ts +10 -53
  389. package/build-types/border-control/types.d.ts.map +1 -1
  390. package/build-types/card/card/hook.d.ts +12 -12
  391. package/build-types/card/card-body/hook.d.ts +12 -12
  392. package/build-types/card/card-divider/hook.d.ts +13 -13
  393. package/build-types/card/card-footer/hook.d.ts +12 -12
  394. package/build-types/card/card-header/hook.d.ts +12 -12
  395. package/build-types/card/card-media/hook.d.ts +12 -12
  396. package/build-types/card/stories/index.d.ts.map +1 -1
  397. package/build-types/circular-option-picker/index.d.ts +4 -24
  398. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  399. package/build-types/color-palette/index.d.ts +43 -14
  400. package/build-types/color-palette/index.d.ts.map +1 -1
  401. package/build-types/color-palette/stories/index.d.ts +50 -0
  402. package/build-types/color-palette/stories/index.d.ts.map +1 -0
  403. package/build-types/color-palette/styles.d.ts +3 -2
  404. package/build-types/color-palette/styles.d.ts.map +1 -1
  405. package/build-types/color-palette/test/index.d.ts +2 -0
  406. package/build-types/color-palette/test/index.d.ts.map +1 -0
  407. package/build-types/color-palette/types.d.ts +90 -0
  408. package/build-types/color-palette/types.d.ts.map +1 -0
  409. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  410. package/build-types/color-picker/styles.d.ts +5 -4
  411. package/build-types/color-picker/styles.d.ts.map +1 -1
  412. package/build-types/confirm-dialog/component.d.ts +4 -4
  413. package/build-types/custom-select-control/index.d.ts +1 -12
  414. package/build-types/custom-select-control/index.d.ts.map +1 -1
  415. package/build-types/custom-select-control/styles.d.ts +3 -1
  416. package/build-types/custom-select-control/styles.d.ts.map +1 -1
  417. package/build-types/dashicon/index.d.ts +6 -1
  418. package/build-types/dashicon/index.d.ts.map +1 -1
  419. package/build-types/date-time/date/styles.d.ts +3 -3
  420. package/build-types/date-time/date-time/index.d.ts +2 -0
  421. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  422. package/build-types/date-time/date-time/styles.d.ts +3 -3
  423. package/build-types/date-time/stories/date-time.d.ts.map +1 -1
  424. package/build-types/date-time/time/styles.d.ts +8 -4
  425. package/build-types/date-time/time/styles.d.ts.map +1 -1
  426. package/build-types/date-time/types.d.ts +0 -16
  427. package/build-types/date-time/types.d.ts.map +1 -1
  428. package/build-types/disabled/index.d.ts +8 -1
  429. package/build-types/disabled/index.d.ts.map +1 -1
  430. package/build-types/draggable/index.d.ts +42 -66
  431. package/build-types/draggable/index.d.ts.map +1 -1
  432. package/build-types/draggable/stories/index.d.ts +12 -0
  433. package/build-types/draggable/stories/index.d.ts.map +1 -0
  434. package/build-types/draggable/types.d.ts +58 -0
  435. package/build-types/draggable/types.d.ts.map +1 -0
  436. package/build-types/elevation/hook.d.ts +12 -12
  437. package/build-types/external-link/index.d.ts.map +1 -1
  438. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  439. package/build-types/external-link/test/index.d.ts +2 -0
  440. package/build-types/external-link/test/index.d.ts.map +1 -0
  441. package/build-types/flex/flex/hook.d.ts +12 -12
  442. package/build-types/flex/flex/hook.d.ts.map +1 -1
  443. package/build-types/flex/flex-block/hook.d.ts +12 -12
  444. package/build-types/flex/flex-item/hook.d.ts +12 -12
  445. package/build-types/focal-point-picker/focal-point.d.ts.map +1 -1
  446. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
  447. package/build-types/focal-point-picker/styles/focal-point-style.d.ts +1 -12
  448. package/build-types/focal-point-picker/styles/focal-point-style.d.ts.map +1 -1
  449. package/build-types/focusable-iframe/index.d.ts.map +1 -1
  450. package/build-types/font-size-picker/constants.d.ts +15 -0
  451. package/build-types/font-size-picker/constants.d.ts.map +1 -0
  452. package/build-types/font-size-picker/font-size-picker-select.d.ts +5 -0
  453. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -0
  454. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts +5 -0
  455. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -0
  456. package/build-types/font-size-picker/index.d.ts.map +1 -1
  457. package/build-types/font-size-picker/types.d.ts +14 -14
  458. package/build-types/font-size-picker/types.d.ts.map +1 -1
  459. package/build-types/font-size-picker/utils.d.ts +6 -26
  460. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  461. package/build-types/form-file-upload/index.d.ts.map +1 -1
  462. package/build-types/form-file-upload/types.d.ts +5 -4
  463. package/build-types/form-file-upload/types.d.ts.map +1 -1
  464. package/build-types/form-token-field/index.d.ts.map +1 -1
  465. package/build-types/grid/hook.d.ts +12 -12
  466. package/build-types/h-stack/component.d.ts +1 -1
  467. package/build-types/h-stack/hook.d.ts +12 -12
  468. package/build-types/heading/hook.d.ts +12 -12
  469. package/build-types/icon/index.d.ts +1 -1
  470. package/build-types/icon/index.d.ts.map +1 -1
  471. package/build-types/input-control/index.d.ts +1 -1
  472. package/build-types/input-control/index.d.ts.map +1 -1
  473. package/build-types/input-control/input-base.d.ts +5 -2
  474. package/build-types/input-control/input-base.d.ts.map +1 -1
  475. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  476. package/build-types/input-control/types.d.ts +3 -8
  477. package/build-types/input-control/types.d.ts.map +1 -1
  478. package/build-types/input-control/utils.d.ts +1 -1
  479. package/build-types/isolated-event-container/index.d.ts +3 -2
  480. package/build-types/isolated-event-container/index.d.ts.map +1 -1
  481. package/build-types/item-group/item/hook.d.ts +13 -13
  482. package/build-types/item-group/item-group/hook.d.ts +13 -13
  483. package/build-types/menu-group/index.d.ts +21 -1
  484. package/build-types/menu-group/index.d.ts.map +1 -1
  485. package/build-types/menu-group/test/index.d.ts +2 -0
  486. package/build-types/menu-group/test/index.d.ts.map +1 -0
  487. package/build-types/menu-group/types.d.ts +23 -0
  488. package/build-types/menu-group/types.d.ts.map +1 -0
  489. package/build-types/navigator/navigator-back-button/hook.d.ts +13 -13
  490. package/build-types/navigator/navigator-button/hook.d.ts +13 -13
  491. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  492. package/build-types/number-control/index.d.ts +2 -4
  493. package/build-types/number-control/index.d.ts.map +1 -1
  494. package/build-types/number-control/styles/number-control-styles.d.ts +5 -0
  495. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  496. package/build-types/number-control/types.d.ts +12 -0
  497. package/build-types/number-control/types.d.ts.map +1 -1
  498. package/build-types/popover/index.d.ts +1 -1
  499. package/build-types/popover/index.d.ts.map +1 -1
  500. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  501. package/build-types/popover/stories/index.d.ts +2 -0
  502. package/build-types/popover/stories/index.d.ts.map +1 -1
  503. package/build-types/popover/types.d.ts +18 -14
  504. package/build-types/popover/types.d.ts.map +1 -1
  505. package/build-types/radio-group/index.d.ts +10 -0
  506. package/build-types/radio-group/index.d.ts.map +1 -0
  507. package/build-types/radio-group/radio/index.d.ts +7 -0
  508. package/build-types/radio-group/radio/index.d.ts.map +1 -0
  509. package/build-types/{radio-context → radio-group/radio-context}/index.d.ts +0 -0
  510. package/build-types/radio-group/radio-context/index.d.ts.map +1 -0
  511. package/build-types/range-control/index.d.ts +1 -1
  512. package/build-types/range-control/styles/range-control-styles.d.ts +2 -1
  513. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  514. package/build-types/resizable-box/index.d.ts +1 -1
  515. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  516. package/build-types/resizable-box/resize-tooltip/label.d.ts +1 -1
  517. package/build-types/scrollable/hook.d.ts +12 -12
  518. package/build-types/search-control/index.d.ts +2 -2
  519. package/build-types/search-control/stories/index.d.ts +4 -4
  520. package/build-types/select-control/stories/index.d.ts.map +1 -1
  521. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts.map +1 -1
  522. package/build-types/slot-fill/fill.d.ts.map +1 -1
  523. package/build-types/slot-fill/use-slot.d.ts.map +1 -1
  524. package/build-types/spacer/hook.d.ts +12 -12
  525. package/build-types/spinner/index.d.ts +1 -1
  526. package/build-types/surface/hook.d.ts +12 -12
  527. package/build-types/tab-panel/index.d.ts.map +1 -1
  528. package/build-types/text/hook.d.ts +12 -12
  529. package/build-types/text-control/index.d.ts +2 -4
  530. package/build-types/text-control/index.d.ts.map +1 -1
  531. package/build-types/text-control/stories/index.d.ts.map +1 -1
  532. package/build-types/toggle-control/index.d.ts.map +1 -1
  533. package/build-types/toggle-control/types.d.ts +2 -1
  534. package/build-types/toggle-control/types.d.ts.map +1 -1
  535. package/build-types/toggle-group-control/stories/index.d.ts +2 -2
  536. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -1
  537. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +6 -0
  538. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -0
  539. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +6 -0
  540. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -0
  541. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -2
  542. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  543. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -2
  544. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  545. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  546. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +4 -7
  547. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  548. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  549. package/build-types/toggle-group-control/types.d.ts +21 -15
  550. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  551. package/build-types/tools-panel/tools-panel/hook.d.ts +12 -12
  552. package/build-types/tools-panel/tools-panel-header/hook.d.ts +12 -12
  553. package/build-types/tools-panel/tools-panel-item/hook.d.ts +12 -12
  554. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  555. package/build-types/truncate/hook.d.ts +12 -12
  556. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  557. package/build-types/ui/control-group/hook.d.ts +12 -12
  558. package/build-types/ui/control-label/component.d.ts +1 -1
  559. package/build-types/ui/control-label/hook.d.ts +12 -12
  560. package/build-types/ui/form-group/form-group.d.ts +4 -4
  561. package/build-types/ui/form-group/use-form-group.d.ts +28 -28
  562. package/build-types/unit-control/index.d.ts +2 -2
  563. package/build-types/unit-control/index.d.ts.map +1 -1
  564. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -5
  565. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  566. package/build-types/unit-control/types.d.ts +3 -3
  567. package/build-types/unit-control/types.d.ts.map +1 -1
  568. package/build-types/utils/colors-values.d.ts +1 -0
  569. package/build-types/utils/colors-values.d.ts.map +1 -1
  570. package/build-types/utils/config-values.d.ts +0 -1
  571. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  572. package/build-types/utils/types.d.ts +0 -14
  573. package/build-types/utils/types.d.ts.map +1 -1
  574. package/build-types/v-stack/component.d.ts +2 -2
  575. package/build-types/v-stack/hook.d.ts +12 -12
  576. package/build-types/v-stack/stories/index.d.ts +2 -2
  577. package/build-types/view/index.d.ts +1 -1
  578. package/build-types/view/index.d.ts.map +1 -1
  579. package/package.json +17 -17
  580. package/src/angle-picker-control/index.js +3 -2
  581. package/src/angle-picker-control/stories/index.js +3 -0
  582. package/src/autocomplete/autocompleter-ui.js +29 -2
  583. package/src/autocomplete/index.js +12 -3
  584. package/src/autocomplete/style.scss +1 -1
  585. package/src/autocomplete/test/index.js +89 -0
  586. package/src/base-field/test/__snapshots__/index.js.snap +9 -7
  587. package/src/base-field/test/index.js +27 -15
  588. package/src/border-box-control/border-box-control/README.md +13 -17
  589. package/src/border-box-control/border-box-control/component.tsx +64 -13
  590. package/src/border-box-control/border-box-control/hook.ts +25 -6
  591. package/src/border-box-control/border-box-control-linked-button/hook.ts +3 -6
  592. package/src/border-box-control/border-box-control-split-controls/component.tsx +3 -6
  593. package/src/border-box-control/border-box-control-split-controls/hook.ts +21 -14
  594. package/src/border-box-control/border-box-control-visualizer/hook.ts +4 -7
  595. package/src/border-box-control/stories/index.tsx +90 -0
  596. package/src/border-box-control/styles.ts +28 -22
  597. package/src/border-box-control/test/index.js +287 -122
  598. package/src/border-box-control/types.ts +32 -62
  599. package/src/border-control/border-control/README.md +12 -17
  600. package/src/border-control/border-control/component.tsx +5 -4
  601. package/src/border-control/border-control/hook.ts +20 -6
  602. package/src/border-control/border-control-dropdown/component.tsx +7 -6
  603. package/src/border-control/border-control-dropdown/hook.ts +14 -8
  604. package/src/border-control/stories/index.tsx +12 -14
  605. package/src/border-control/styles.ts +20 -23
  606. package/src/border-control/test/index.js +139 -96
  607. package/src/border-control/types.ts +43 -82
  608. package/src/box-control/README.md +14 -0
  609. package/src/box-control/index.js +4 -0
  610. package/src/box-control/stories/index.js +8 -27
  611. package/src/button/README.md +2 -15
  612. package/src/button/stories/index.js +109 -178
  613. package/src/button/style.scss +17 -54
  614. package/src/card/stories/index.tsx +27 -31
  615. package/src/card/test/__snapshots__/index.tsx.snap +98 -401
  616. package/src/card/test/index.tsx +4 -8
  617. package/src/checkbox-control/style.scss +3 -3
  618. package/src/circular-option-picker/index.js +14 -20
  619. package/src/color-palette/README.md +47 -49
  620. package/src/color-palette/{index.js → index.tsx} +132 -51
  621. package/src/color-palette/stories/{index.js → index.tsx} +38 -27
  622. package/src/color-palette/style.scss +3 -3
  623. package/src/color-palette/{styles.js → styles.ts} +0 -0
  624. package/src/color-palette/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  625. package/src/color-palette/test/{index.js → index.tsx} +1 -1
  626. package/src/color-palette/types.ts +97 -0
  627. package/src/color-picker/input-with-slider.tsx +14 -3
  628. package/src/custom-gradient-picker/gradient-bar/index.js +1 -3
  629. package/src/custom-select-control/README.md +14 -0
  630. package/src/custom-select-control/index.js +29 -15
  631. package/src/custom-select-control/stories/index.js +1 -0
  632. package/src/custom-select-control/style.scss +6 -1
  633. package/src/custom-select-control/test/index.js +39 -0
  634. package/src/dashicon/index.js +21 -2
  635. package/src/date-time/date/test/index.tsx +2 -2
  636. package/src/date-time/date-time/index.tsx +2 -0
  637. package/src/date-time/stories/date-time.tsx +4 -0
  638. package/src/date-time/time/index.tsx +4 -4
  639. package/src/date-time/types.ts +0 -19
  640. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -0
  641. package/src/disabled/README.md +2 -0
  642. package/src/disabled/index.tsx +8 -1
  643. package/src/disabled/test/index.tsx +0 -5
  644. package/src/divider/test/index.tsx +4 -4
  645. package/src/draggable/README.md +13 -18
  646. package/src/draggable/{index.js → index.tsx} +71 -47
  647. package/src/draggable/stories/index.tsx +83 -0
  648. package/src/draggable/types.ts +58 -0
  649. package/src/drop-zone/style.scss +1 -1
  650. package/src/external-link/index.tsx +14 -6
  651. package/src/external-link/test/index.tsx +106 -0
  652. package/src/flex/flex/hook.ts +0 -3
  653. package/src/flex/test/index.tsx +29 -3
  654. package/src/focal-point-picker/focal-point.tsx +2 -24
  655. package/src/focal-point-picker/styles/focal-point-style.ts +8 -32
  656. package/src/focusable-iframe/index.js +0 -1
  657. package/src/font-size-picker/README.md +3 -3
  658. package/src/font-size-picker/constants.ts +37 -0
  659. package/src/font-size-picker/font-size-picker-select.tsx +98 -0
  660. package/src/font-size-picker/font-size-picker-toggle-group.tsx +41 -0
  661. package/src/font-size-picker/index.tsx +161 -214
  662. package/src/font-size-picker/test/index.tsx +653 -171
  663. package/src/font-size-picker/test/utils.ts +56 -140
  664. package/src/font-size-picker/types.ts +26 -17
  665. package/src/font-size-picker/utils.ts +16 -124
  666. package/src/form-file-upload/README.md +1 -3
  667. package/src/form-file-upload/index.tsx +1 -0
  668. package/src/form-file-upload/types.ts +5 -4
  669. package/src/form-toggle/style.scss +3 -3
  670. package/src/form-toggle/test/__snapshots__/index.tsx.snap +15 -13
  671. package/src/form-toggle/test/index.tsx +1 -1
  672. package/src/form-token-field/index.tsx +13 -5
  673. package/src/form-token-field/style.scss +2 -2
  674. package/src/form-token-field/test/index.tsx +6 -6
  675. package/src/h-stack/test/__snapshots__/index.tsx.snap +36 -30
  676. package/src/h-stack/test/index.tsx +3 -3
  677. package/src/higher-order/navigate-regions/index.js +4 -0
  678. package/src/higher-order/navigate-regions/style.scss +72 -20
  679. package/src/higher-order/with-filters/index.js +4 -9
  680. package/src/higher-order/with-notices/test/index.js +1 -1
  681. package/src/icon/index.tsx +3 -2
  682. package/src/icon/test/index.js +10 -0
  683. package/src/index.js +3 -1
  684. package/src/input-control/index.tsx +2 -0
  685. package/src/input-control/input-base.tsx +3 -3
  686. package/src/input-control/styles/input-control-styles.tsx +1 -0
  687. package/src/input-control/types.ts +4 -11
  688. package/src/isolated-event-container/index.tsx +32 -0
  689. package/src/item-group/stories/index.js +1 -1
  690. package/src/item-group/styles.ts +1 -1
  691. package/src/item-group/test/__snapshots__/index.js.snap +90 -85
  692. package/src/item-group/test/index.js +7 -17
  693. package/src/menu-group/{index.js → index.tsx} +22 -3
  694. package/src/menu-group/test/{index.js → index.tsx} +0 -0
  695. package/src/menu-group/types.ts +23 -0
  696. package/src/menu-item/style.scss +1 -1
  697. package/src/mobile/bottom-sheet/test/range-cell.native.js +4 -4
  698. package/src/mobile/html-text-input/test/index.native.js +2 -2
  699. package/src/mobile/link-settings/test/edit.native.js +29 -29
  700. package/src/mobile/link-settings/test/link-settings-navigation.native.js +5 -5
  701. package/src/navigator/navigator-screen/component.tsx +28 -6
  702. package/src/notice/README.md +2 -1
  703. package/src/notice/style.scss +1 -1
  704. package/src/number-control/README.md +9 -4
  705. package/src/number-control/index.tsx +100 -33
  706. package/src/number-control/styles/number-control-styles.js +26 -1
  707. package/src/number-control/test/index.js +50 -0
  708. package/src/number-control/types.ts +12 -0
  709. package/src/palette-edit/index.js +3 -0
  710. package/src/panel/style.scss +1 -1
  711. package/src/popover/README.md +12 -7
  712. package/src/popover/index.tsx +38 -37
  713. package/src/popover/stories/index.tsx +29 -1
  714. package/src/popover/style.scss +9 -0
  715. package/src/popover/types.ts +18 -15
  716. package/src/radio-group/README.md +4 -0
  717. package/src/radio-group/index.js +6 -1
  718. package/src/{radio → radio-group/radio}/index.js +6 -1
  719. package/src/{radio-context → radio-group/radio-context}/index.js +0 -0
  720. package/src/radio-group/stories/index.js +11 -2
  721. package/src/range-control/styles/range-control-styles.ts +2 -2
  722. package/src/resizable-box/style.scss +2 -2
  723. package/src/sandbox/test/index.js +2 -2
  724. package/src/scrollable/test/index.tsx +7 -3
  725. package/src/search-control/style.scss +1 -1
  726. package/src/select-control/stories/index.tsx +9 -4
  727. package/src/slot-fill/bubbles-virtually/fill.js +5 -5
  728. package/src/slot-fill/bubbles-virtually/slot.js +10 -8
  729. package/src/slot-fill/bubbles-virtually/use-slot.js +15 -9
  730. package/src/slot-fill/fill.js +12 -2
  731. package/src/slot-fill/use-slot.js +3 -0
  732. package/src/snackbar/index.js +1 -1
  733. package/src/snackbar/style.scss +2 -2
  734. package/src/spacer/test/index.tsx +33 -3
  735. package/src/spinner/styles.ts +1 -1
  736. package/src/surface/test/__snapshots__/index.tsx.snap +58 -46
  737. package/src/surface/test/index.tsx +12 -22
  738. package/src/tab-panel/index.tsx +10 -8
  739. package/src/tab-panel/style.scss +4 -5
  740. package/src/tab-panel/test/index.tsx +78 -1
  741. package/src/text/test/__snapshots__/index.tsx.snap +19 -15
  742. package/src/text/test/index.tsx +6 -6
  743. package/src/text-control/index.tsx +0 -2
  744. package/src/text-control/stories/index.tsx +5 -6
  745. package/src/toggle-control/README.md +6 -4
  746. package/src/toggle-control/index.tsx +13 -2
  747. package/src/toggle-control/types.ts +2 -4
  748. package/src/toggle-group-control/stories/index.tsx +6 -4
  749. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +221 -164
  750. package/src/toggle-group-control/test/index.tsx +156 -17
  751. package/src/toggle-group-control/toggle-group-control/README.md +8 -1
  752. package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +103 -0
  753. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +99 -0
  754. package/src/toggle-group-control/toggle-group-control/component.tsx +29 -74
  755. package/src/toggle-group-control/toggle-group-control/styles.ts +23 -15
  756. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +49 -25
  757. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +39 -19
  758. package/src/toggle-group-control/types.ts +76 -63
  759. package/src/toolbar-dropdown-menu/index.js +1 -1
  760. package/src/tools-panel/stories/index.js +0 -1
  761. package/src/tools-panel/stories/tools-panel-with-item-group-slot.js +0 -1
  762. package/src/tools-panel/styles.ts +1 -1
  763. package/src/tools-panel/tools-panel-item/hook.ts +6 -1
  764. package/src/tree-grid/test/__snapshots__/cell.js.snap +20 -18
  765. package/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap +3 -1
  766. package/src/tree-grid/test/__snapshots__/row.js.snap +33 -29
  767. package/src/tree-grid/test/cell.js +1 -1
  768. package/src/tree-grid/test/index.js +12 -12
  769. package/src/tree-grid/test/roving-tab-index.js +1 -1
  770. package/src/tree-grid/test/row.js +2 -2
  771. package/src/truncate/test/index.tsx +9 -9
  772. package/src/ui/context/context-system-provider.js +5 -18
  773. package/src/ui/context/test/__snapshots__/context-system-provider.js.snap +23 -17
  774. package/src/ui/context/test/context-system-provider.js +3 -3
  775. package/src/ui/control-group/test/__snapshots__/index.js.snap +18 -16
  776. package/src/ui/control-group/test/index.js +1 -1
  777. package/src/ui/control-label/test/__snapshots__/index.js.snap +27 -21
  778. package/src/ui/control-label/test/index.js +3 -3
  779. package/src/ui/form-group/test/__snapshots__/index.js.snap +34 -30
  780. package/src/ui/form-group/test/index.js +18 -19
  781. package/src/ui/shortcut/test/__snapshots__/index.js.snap +1 -1
  782. package/src/ui/shortcut/test/index.js +1 -1
  783. package/src/ui/spinner/test/__snapshots__/index.js.snap +75 -73
  784. package/src/ui/spinner/test/index.js +3 -7
  785. package/src/unit-control/index.tsx +29 -30
  786. package/src/unit-control/styles/unit-control-styles.ts +6 -12
  787. package/src/unit-control/test/utils.ts +43 -0
  788. package/src/unit-control/types.ts +5 -6
  789. package/src/utils/colors-values.js +4 -2
  790. package/src/utils/config-values.js +0 -1
  791. package/src/utils/hooks/stories/use-cx.js +1 -1
  792. package/src/utils/hooks/use-update-effect.js +5 -1
  793. package/src/utils/input/base.js +2 -2
  794. package/src/utils/types.ts +0 -15
  795. package/src/v-stack/test/__snapshots__/index.tsx.snap +36 -30
  796. package/src/v-stack/test/index.tsx +3 -3
  797. package/src/view/{index.js → index.ts} +0 -0
  798. package/src/view/test/__snapshots__/index.js.snap +34 -24
  799. package/src/view/test/index.js +5 -5
  800. package/tsconfig.json +0 -2
  801. package/tsconfig.tsbuildinfo +1 -1
  802. package/build/radio/index.js.map +0 -1
  803. package/build/radio-context/index.js.map +0 -1
  804. package/build-module/radio/index.js.map +0 -1
  805. package/build-module/radio-context/index.js.map +0 -1
  806. package/build-types/radio-context/index.d.ts.map +0 -1
  807. package/src/border-box-control/stories/index.js +0 -106
  808. package/src/draggable/stories/index.js +0 -72
  809. package/src/form-file-upload/stories/index.js +0 -51
  810. package/src/isolated-event-container/index.js +0 -28
  811. package/src/radio/stories/index.js +0 -20
@@ -3,65 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CUSTOM_FONT_SIZE = void 0;
7
- exports.getFontSizeOptions = getFontSizeOptions;
8
- exports.getSelectedOption = getSelectedOption;
9
- exports.getToggleGroupOptions = getToggleGroupOptions;
6
+ exports.getCommonSizeUnit = getCommonSizeUnit;
10
7
  exports.isSimpleCssValue = isSimpleCssValue;
11
- exports.splitValueAndUnitFromSize = splitValueAndUnitFromSize;
12
8
 
13
- var _i18n = require("@wordpress/i18n");
9
+ var _unitControl = require("../unit-control");
14
10
 
15
11
  /**
16
12
  * WordPress dependencies
17
13
  */
18
- const DEFAULT_FONT_SIZE = 'default';
19
- const DEFAULT_FONT_SIZE_OPTION = {
20
- slug: DEFAULT_FONT_SIZE,
21
- name: (0, _i18n.__)('Default')
22
- };
23
- const CUSTOM_FONT_SIZE = 'custom';
24
- exports.CUSTOM_FONT_SIZE = CUSTOM_FONT_SIZE;
25
- const CUSTOM_FONT_SIZE_OPTION = {
26
- slug: CUSTOM_FONT_SIZE,
27
- name: (0, _i18n.__)('Custom')
28
- };
29
- /**
30
- * In case we have at most five font sizes, show a `T-shirt size`
31
- * alias as a label of the font size. The label assumes that the font sizes
32
- * are ordered accordingly - from smallest to largest.
33
- */
34
14
 
35
- const FONT_SIZES_ALIASES = [
36
- /* translators: S stands for 'small' and is a size label. */
37
- (0, _i18n.__)('S'),
38
- /* translators: M stands for 'medium' and is a size label. */
39
- (0, _i18n.__)('M'),
40
- /* translators: L stands for 'large' and is a size label. */
41
- (0, _i18n.__)('L'),
42
- /* translators: XL stands for 'extra large' and is a size label. */
43
- (0, _i18n.__)('XL'),
44
- /* translators: XXL stands for 'extra extra large' and is a size label. */
45
- (0, _i18n.__)('XXL')];
46
15
  /**
47
- * Helper util to split a font size to its numeric value
48
- * and its `unit`, if exists.
49
- *
50
- * @param size Font size.
51
- * @return An array with the numeric value and the unit if exists.
16
+ * Internal dependencies
52
17
  */
53
18
 
54
- function splitValueAndUnitFromSize(size) {
55
- var _$match;
56
-
57
- const [numericValue, unit] = (_$match = `${size}`.match(/[\d\.]+|\D+/g)) !== null && _$match !== void 0 ? _$match : [];
58
-
59
- if (!isNaN(parseFloat(numericValue)) && isFinite(Number(numericValue))) {
60
- return [numericValue, unit];
61
- }
62
-
63
- return [];
64
- }
65
19
  /**
66
20
  * Some themes use css vars for their font sizes, so until we
67
21
  * have the way of calculating them don't display them.
@@ -69,78 +23,31 @@ function splitValueAndUnitFromSize(size) {
69
23
  * @param value The value that is checked.
70
24
  * @return Whether the value is a simple css value.
71
25
  */
72
-
73
-
74
26
  function isSimpleCssValue(value) {
75
27
  const sizeRegex = /^[\d\.]+(px|em|rem|vw|vh|%)?$/i;
76
28
  return sizeRegex.test(String(value));
77
29
  }
78
30
  /**
79
- * Return font size options in the proper format depending
80
- * on the currently used control (select, toggle group).
31
+ * If all of the given font sizes have the same unit (e.g. 'px'), return that
32
+ * unit. Otherwise return null.
81
33
  *
82
- * @param useSelectControl Whether to use a select control.
83
- * @param optionsArray Array of available font sizes objects.
84
- * @param disableCustomFontSizes Flag that indicates if custom font sizes are disabled.
85
- * @return Array of font sizes in proper format for the used control.
34
+ * @param fontSizes List of font sizes.
35
+ * @return The common unit, or null.
86
36
  */
87
37
 
88
38
 
89
- function getFontSizeOptions(useSelectControl, optionsArray, disableCustomFontSizes) {
90
- if (disableCustomFontSizes && !optionsArray.length) {
39
+ function getCommonSizeUnit(fontSizes) {
40
+ const [firstFontSize, ...otherFontSizes] = fontSizes;
41
+
42
+ if (!firstFontSize) {
91
43
  return null;
92
44
  }
93
45
 
94
- return useSelectControl ? getSelectOptions(optionsArray, disableCustomFontSizes) : getToggleGroupOptions(optionsArray);
95
- }
96
-
97
- function getSelectOptions(optionsArray, disableCustomFontSizes) {
98
- const options = [DEFAULT_FONT_SIZE_OPTION, ...optionsArray, ...(disableCustomFontSizes ? [] : [CUSTOM_FONT_SIZE_OPTION])];
99
- return options.map(_ref => {
100
- let {
101
- slug,
102
- name,
103
- size
104
- } = _ref;
105
- return {
106
- key: slug,
107
- name: name || slug,
108
- size,
109
- __experimentalHint: size && isSimpleCssValue(size) && parseFloat(String(size))
110
- };
111
- });
112
- }
113
- /**
114
- * Build options for the toggle group options.
115
- *
116
- * @param optionsArray An array of font size options.
117
- * @param labelAliases An array of alternative labels.
118
- * @return Remapped optionsArray.
119
- */
120
-
121
-
122
- function getToggleGroupOptions(optionsArray) {
123
- let labelAliases = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FONT_SIZES_ALIASES;
124
- return optionsArray.map((_ref2, index) => {
125
- let {
126
- slug,
127
- size,
128
- name
129
- } = _ref2;
130
- return {
131
- key: slug,
132
- value: size,
133
- label: labelAliases[index],
134
- name: name || labelAliases[index]
135
- };
46
+ const [, firstUnit] = (0, _unitControl.parseQuantityAndUnitFromRawValue)(firstFontSize.size);
47
+ const areAllSizesSameUnit = otherFontSizes.every(fontSize => {
48
+ const [, unit] = (0, _unitControl.parseQuantityAndUnitFromRawValue)(fontSize.size);
49
+ return unit === firstUnit;
136
50
  });
137
- }
138
-
139
- function getSelectedOption(fontSizes, value) {
140
- if (!value) {
141
- return DEFAULT_FONT_SIZE_OPTION;
142
- }
143
-
144
- return fontSizes.find(font => font.size === value) || CUSTOM_FONT_SIZE_OPTION;
51
+ return areAllSizesSameUnit ? firstUnit : null;
145
52
  }
146
53
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/font-size-picker/utils.ts"],"names":["DEFAULT_FONT_SIZE","DEFAULT_FONT_SIZE_OPTION","slug","name","CUSTOM_FONT_SIZE","CUSTOM_FONT_SIZE_OPTION","FONT_SIZES_ALIASES","splitValueAndUnitFromSize","size","numericValue","unit","match","isNaN","parseFloat","isFinite","Number","isSimpleCssValue","value","sizeRegex","test","String","getFontSizeOptions","useSelectControl","optionsArray","disableCustomFontSizes","length","getSelectOptions","getToggleGroupOptions","options","map","key","__experimentalHint","labelAliases","index","label","getSelectedOption","fontSizes","find","font"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFontSize,\n\tFontSizeOption,\n\tFontSizeSelectOption,\n\tFontSizeToggleGroupOption,\n\tFontSizePickerProps,\n} from './types';\n\nconst DEFAULT_FONT_SIZE = 'default';\nconst DEFAULT_FONT_SIZE_OPTION = {\n\tslug: DEFAULT_FONT_SIZE,\n\tname: __( 'Default' ),\n};\nexport const CUSTOM_FONT_SIZE = 'custom';\nconst CUSTOM_FONT_SIZE_OPTION = {\n\tslug: CUSTOM_FONT_SIZE,\n\tname: __( 'Custom' ),\n};\n\n/**\n * In case we have at most five font sizes, show a `T-shirt size`\n * alias as a label of the font size. The label assumes that the font sizes\n * are ordered accordingly - from smallest to largest.\n */\nconst FONT_SIZES_ALIASES = [\n\t/* translators: S stands for 'small' and is a size label. */\n\t__( 'S' ),\n\t/* translators: M stands for 'medium' and is a size label. */\n\t__( 'M' ),\n\t/* translators: L stands for 'large' and is a size label. */\n\t__( 'L' ),\n\t/* translators: XL stands for 'extra large' and is a size label. */\n\t__( 'XL' ),\n\t/* translators: XXL stands for 'extra extra large' and is a size label. */\n\t__( 'XXL' ),\n];\n\n/**\n * Helper util to split a font size to its numeric value\n * and its `unit`, if exists.\n *\n * @param size Font size.\n * @return An array with the numeric value and the unit if exists.\n */\nexport function splitValueAndUnitFromSize(\n\tsize: NonNullable< FontSizePickerProps[ 'value' ] >\n) {\n\tconst [ numericValue, unit ] = `${ size }`.match( /[\\d\\.]+|\\D+/g ) ?? [];\n\n\tif (\n\t\t! isNaN( parseFloat( numericValue ) ) &&\n\t\tisFinite( Number( numericValue ) )\n\t) {\n\t\treturn [ numericValue, unit ];\n\t}\n\n\treturn [];\n}\n\n/**\n * Some themes use css vars for their font sizes, so until we\n * have the way of calculating them don't display them.\n *\n * @param value The value that is checked.\n * @return Whether the value is a simple css value.\n */\nexport function isSimpleCssValue(\n\tvalue: NonNullable< FontSizePickerProps[ 'value' ] >\n) {\n\tconst sizeRegex = /^[\\d\\.]+(px|em|rem|vw|vh|%)?$/i;\n\treturn sizeRegex.test( String( value ) );\n}\n\n/**\n * Return font size options in the proper format depending\n * on the currently used control (select, toggle group).\n *\n * @param useSelectControl Whether to use a select control.\n * @param optionsArray Array of available font sizes objects.\n * @param disableCustomFontSizes Flag that indicates if custom font sizes are disabled.\n * @return Array of font sizes in proper format for the used control.\n */\nexport function getFontSizeOptions(\n\tuseSelectControl: boolean,\n\toptionsArray: FontSize[],\n\tdisableCustomFontSizes: boolean\n): FontSizeSelectOption[] | FontSizeToggleGroupOption[] | null {\n\tif ( disableCustomFontSizes && ! optionsArray.length ) {\n\t\treturn null;\n\t}\n\treturn useSelectControl\n\t\t? getSelectOptions( optionsArray, disableCustomFontSizes )\n\t\t: getToggleGroupOptions( optionsArray );\n}\n\nfunction getSelectOptions(\n\toptionsArray: FontSize[],\n\tdisableCustomFontSizes: boolean\n): FontSizeSelectOption[] {\n\tconst options: FontSizeOption[] = [\n\t\tDEFAULT_FONT_SIZE_OPTION,\n\t\t...optionsArray,\n\t\t...( disableCustomFontSizes ? [] : [ CUSTOM_FONT_SIZE_OPTION ] ),\n\t];\n\treturn options.map( ( { slug, name, size } ) => ( {\n\t\tkey: slug,\n\t\tname: name || slug,\n\t\tsize,\n\t\t__experimentalHint:\n\t\t\tsize && isSimpleCssValue( size ) && parseFloat( String( size ) ),\n\t} ) );\n}\n\n/**\n * Build options for the toggle group options.\n *\n * @param optionsArray An array of font size options.\n * @param labelAliases An array of alternative labels.\n * @return Remapped optionsArray.\n */\nexport function getToggleGroupOptions(\n\toptionsArray: FontSize[],\n\tlabelAliases: string[] = FONT_SIZES_ALIASES\n): FontSizeToggleGroupOption[] {\n\treturn optionsArray.map( ( { slug, size, name }, index ) => {\n\t\treturn {\n\t\t\tkey: slug,\n\t\t\tvalue: size,\n\t\t\tlabel: labelAliases[ index ],\n\t\t\tname: name || labelAliases[ index ],\n\t\t};\n\t} );\n}\n\nexport function getSelectedOption(\n\tfontSizes: FontSize[],\n\tvalue: FontSizePickerProps[ 'value' ]\n): FontSizeOption {\n\tif ( ! value ) {\n\t\treturn DEFAULT_FONT_SIZE_OPTION;\n\t}\n\treturn (\n\t\tfontSizes.find( ( font ) => font.size === value ) ||\n\t\tCUSTOM_FONT_SIZE_OPTION\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/font-size-picker/utils.ts"],"names":["isSimpleCssValue","value","sizeRegex","test","String","getCommonSizeUnit","fontSizes","firstFontSize","otherFontSizes","firstUnit","size","areAllSizesSameUnit","every","fontSize","unit"],"mappings":";;;;;;;;AASA;;AATA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,gBAAT,CACNC,KADM,EAEL;AACD,QAAMC,SAAS,GAAG,gCAAlB;AACA,SAAOA,SAAS,CAACC,IAAV,CAAgBC,MAAM,CAAEH,KAAF,CAAtB,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASI,iBAAT,CAA4BC,SAA5B,EAAoD;AAC1D,QAAM,CAAEC,aAAF,EAAiB,GAAGC,cAApB,IAAuCF,SAA7C;;AACA,MAAK,CAAEC,aAAP,EAAuB;AACtB,WAAO,IAAP;AACA;;AACD,QAAM,GAAIE,SAAJ,IAAkB,mDACvBF,aAAa,CAACG,IADS,CAAxB;AAGA,QAAMC,mBAAmB,GAAGH,cAAc,CAACI,KAAf,CAAwBC,QAAF,IAAgB;AACjE,UAAM,GAAIC,IAAJ,IAAa,mDAAkCD,QAAQ,CAACH,IAA3C,CAAnB;AACA,WAAOI,IAAI,KAAKL,SAAhB;AACA,GAH2B,CAA5B;AAIA,SAAOE,mBAAmB,GAAGF,SAAH,GAAe,IAAzC;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { FontSizePickerProps, FontSize } from './types';\nimport { parseQuantityAndUnitFromRawValue } from '../unit-control';\n\n/**\n * Some themes use css vars for their font sizes, so until we\n * have the way of calculating them don't display them.\n *\n * @param value The value that is checked.\n * @return Whether the value is a simple css value.\n */\nexport function isSimpleCssValue(\n\tvalue: NonNullable< FontSizePickerProps[ 'value' ] >\n) {\n\tconst sizeRegex = /^[\\d\\.]+(px|em|rem|vw|vh|%)?$/i;\n\treturn sizeRegex.test( String( value ) );\n}\n\n/**\n * If all of the given font sizes have the same unit (e.g. 'px'), return that\n * unit. Otherwise return null.\n *\n * @param fontSizes List of font sizes.\n * @return The common unit, or null.\n */\nexport function getCommonSizeUnit( fontSizes: FontSize[] ) {\n\tconst [ firstFontSize, ...otherFontSizes ] = fontSizes;\n\tif ( ! firstFontSize ) {\n\t\treturn null;\n\t}\n\tconst [ , firstUnit ] = parseQuantityAndUnitFromRawValue(\n\t\tfirstFontSize.size\n\t);\n\tconst areAllSizesSameUnit = otherFontSizes.every( ( fontSize ) => {\n\t\tconst [ , unit ] = parseQuantityAndUnitFromRawValue( fontSize.size );\n\t\treturn unit === firstUnit;\n\t} );\n\treturn areAllSizesSameUnit ? firstUnit : null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-file-upload/index.tsx"],"names":["FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","ui","display"],"mappings":";;;;;;;;;;AAGA;;;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAT,OAQ8D;AAAA,MARrC;AAC/BC,IAAAA,MAD+B;AAE/BC,IAAAA,QAF+B;AAG/BC,IAAAA,QAAQ,GAAG,KAHoB;AAI/BC,IAAAA,QAJ+B;AAK/BC,IAAAA,OAL+B;AAM/BC,IAAAA,MAN+B;AAO/B,OAAGC;AAP4B,GAQqC;AACpE,QAAMC,GAAG,GAAG,qBAA4B,IAA5B,CAAZ;;AACA,QAAMC,cAAc,GAAG,MAAM;AAAA;;AAC5B,oBAAAD,GAAG,CAACE,OAAJ,8DAAaC,KAAb;AACA,GAFD;;AAIA,QAAMC,EAAE,GAAGN,MAAM,GAChBA,MAAM,CAAE;AAAEG,IAAAA;AAAF,GAAF,CADU,GAGhB,4BAAC,eAAD;AAAQ,IAAA,OAAO,EAAGA;AAAlB,KAAwCF,KAAxC,GACGL,QADH,CAHD;AAOA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGU,EADH,EAEC;AACC,IAAA,IAAI,EAAC,MADN;AAEC,IAAA,GAAG,EAAGJ,GAFP;AAGC,IAAA,QAAQ,EAAGL,QAHZ;AAIC,IAAA,KAAK,EAAG;AAAEU,MAAAA,OAAO,EAAE;AAAX,KAJT;AAKC,IAAA,MAAM,EAAGZ,MALV;AAMC,IAAA,QAAQ,EAAGG,QANZ;AAOC,IAAA,OAAO,EAAGC,OAPX;AAQC,mBAAY;AARb,IAFD,CADD;AAeA;;eAEcL,c","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport type { WordPressComponentProps } from '../ui/context';\nimport type { FormFileUploadProps } from './types';\n\n/**\n * FormFileUpload is a component that allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ accept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-file-upload/index.tsx"],"names":["FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","ui","display"],"mappings":";;;;;;;;;;AAGA;;;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAT,OAQ8D;AAAA,MARrC;AAC/BC,IAAAA,MAD+B;AAE/BC,IAAAA,QAF+B;AAG/BC,IAAAA,QAAQ,GAAG,KAHoB;AAI/BC,IAAAA,QAJ+B;AAK/BC,IAAAA,OAL+B;AAM/BC,IAAAA,MAN+B;AAO/B,OAAGC;AAP4B,GAQqC;AACpE,QAAMC,GAAG,GAAG,qBAA4B,IAA5B,CAAZ;;AACA,QAAMC,cAAc,GAAG,MAAM;AAAA;;AAC5B,oBAAAD,GAAG,CAACE,OAAJ,8DAAaC,KAAb;AACA,GAFD;;AAIA,QAAMC,EAAE,GAAGN,MAAM,GAChBA,MAAM,CAAE;AAAEG,IAAAA;AAAF,GAAF,CADU,GAGhB,4BAAC,eAAD;AAAQ,IAAA,OAAO,EAAGA;AAAlB,KAAwCF,KAAxC,GACGL,QADH,CAHD;AAQA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGU,EADH,EAEC;AACC,IAAA,IAAI,EAAC,MADN;AAEC,IAAA,GAAG,EAAGJ,GAFP;AAGC,IAAA,QAAQ,EAAGL,QAHZ;AAIC,IAAA,KAAK,EAAG;AAAEU,MAAAA,OAAO,EAAE;AAAX,KAJT;AAKC,IAAA,MAAM,EAAGZ,MALV;AAMC,IAAA,QAAQ,EAAGG,QANZ;AAOC,IAAA,OAAO,EAAGC,OAPX;AAQC,mBAAY;AARb,IAFD,CADD;AAeA;;eAEcL,c","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport type { WordPressComponentProps } from '../ui/context';\nimport type { FormFileUploadProps } from './types';\n\n/**\n * FormFileUpload is a component that allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ accept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"]}
@@ -178,11 +178,15 @@ function FormTokenField(props) {
178
178
  function onKeyDown(event) {
179
179
  let preventDefault = false;
180
180
 
181
- if (event.defaultPrevented) {
181
+ if (event.defaultPrevented || // Ignore keydowns from IMEs
182
+ event.nativeEvent.isComposing || // Workaround for Mac Safari where the final Enter/Backspace of an IME composition
183
+ // is `isComposing=false`, even though it's technically still part of the composition.
184
+ // These can only be detected by keyCode.
185
+ event.keyCode === 229) {
182
186
  return;
183
187
  }
184
188
 
185
- switch (event.code) {
189
+ switch (event.key) {
186
190
  case 'Backspace':
187
191
  preventDefault = handleDeleteKey(deleteTokenBeforeInput);
188
192
  break;
@@ -232,11 +236,10 @@ function FormTokenField(props) {
232
236
  }
233
237
 
234
238
  function onKeyPress(event) {
235
- let preventDefault = false; // TODO: replace to event.code;
239
+ let preventDefault = false;
236
240
 
237
- switch (event.charCode) {
238
- case 44:
239
- // Comma.
241
+ switch (event.key) {
242
+ case ',':
240
243
  preventDefault = handleCommaKey();
241
244
  break;
242
245
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/form-token-field/index.tsx"],"names":["identity","value","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalRenderItem","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","__next36pxDefaultSize","__experimentalAutoSelectFirstMatch","instanceId","incompleteTokenValue","setIncompleteTokenValue","inputOffsetFromEnd","setInputOffsetFromEnd","isActive","setIsActive","isExpanded","setIsExpanded","selectedSuggestionIndex","setSelectedSuggestionIndex","selectedSuggestionScroll","setSelectedSuggestionScroll","prevSuggestions","prevValue","input","tokensAndInput","debouncedSpeak","speak","hasFocus","focus","suggestionsDidUpdate","updateSuggestions","current","ownerDocument","activeElement","onFocusHandler","event","target","onBlur","inputHasValidValue","onKeyDown","preventDefault","defaultPrevented","code","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","charCode","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","addNewToken","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","Set","map","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","toLocaleLowerCase","forEach","push","concat","some","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","title","onMouseEnter","onMouseLeave","inputProps","key","classes","tokenFieldProps","tabIndex","Object","assign"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport type { KeyboardEvent, MouseEvent, TouchEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport { StyledLabel } from '../base-control/styles/base-control-styles';\n\nconst identity = ( value: string ) => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](http://facebook.github.io/react/docs/forms.html) in the React Documentation for more information.\n */\nexport function FormTokenField( props: FormTokenFieldProps ) {\n\tconst {\n\t\tautoCapitalize,\n\t\tautoComplete,\n\t\tmaxLength,\n\t\tplaceholder,\n\t\tlabel = __( 'Add item' ),\n\t\tclassName,\n\t\tsuggestions = [],\n\t\tmaxSuggestions = 100,\n\t\tvalue = [],\n\t\tdisplayTransform = identity,\n\t\tsaveTransform = ( token ) => token.trim(),\n\t\tonChange = () => {},\n\t\tonInputChange = () => {},\n\t\tonFocus = undefined,\n\t\tisBorderless = false,\n\t\tdisabled = false,\n\t\ttokenizeOnSpace = false,\n\t\tmessages = {\n\t\t\tadded: __( 'Item added.' ),\n\t\t\tremoved: __( 'Item removed.' ),\n\t\t\tremove: __( 'Remove item' ),\n\t\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t\t},\n\t\t__experimentalRenderItem,\n\t\t__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\n\t\t__next36pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t} = props;\n\n\tconst instanceId = useInstanceId( FormTokenField );\n\n\t// We reset to these initial values again in the onBlur\n\tconst [ incompleteTokenValue, setIncompleteTokenValue ] = useState( '' );\n\tconst [ inputOffsetFromEnd, setInputOffsetFromEnd ] = useState( 0 );\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst [ isExpanded, setIsExpanded ] = useState( false );\n\tconst [ selectedSuggestionIndex, setSelectedSuggestionIndex ] =\n\t\tuseState( -1 );\n\tconst [ selectedSuggestionScroll, setSelectedSuggestionScroll ] =\n\t\tuseState( false );\n\n\tconst prevSuggestions = usePrevious< string[] >( suggestions );\n\tconst prevValue = usePrevious< ( string | TokenItem )[] >( value );\n\n\tconst input = useRef< HTMLInputElement >( null );\n\tconst tokensAndInput = useRef< HTMLInputElement >( null );\n\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tuseEffect( () => {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( isActive && ! hasFocus() ) {\n\t\t\tfocus();\n\t\t}\n\t}, [ isActive ] );\n\n\tuseEffect( () => {\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevSuggestions || []\n\t\t);\n\n\t\tif ( suggestionsDidUpdate || value !== prevValue ) {\n\t\t\tupdateSuggestions( suggestionsDidUpdate );\n\t\t}\n\n\t\t// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ __experimentalAutoSelectFirstMatch ] );\n\n\tif ( disabled && isActive ) {\n\t\tsetIsActive( false );\n\t\tsetIncompleteTokenValue( '' );\n\t}\n\n\tfunction focus() {\n\t\tinput.current?.focus();\n\t}\n\n\tfunction hasFocus() {\n\t\treturn input.current === input.current?.ownerDocument.activeElement;\n\t}\n\n\tfunction onFocusHandler( event: FocusEvent ) {\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( hasFocus() || event.target === tokensAndInput.current ) {\n\t\t\tsetIsActive( true );\n\t\t\tsetIsExpanded( __experimentalExpandOnFocus || isExpanded );\n\t\t} else {\n\t\t\t/*\n\t\t\t * Otherwise, focus is on one of the token \"remove\" buttons and we\n\t\t\t * set the isActive state to false to prevent the input to be\n\t\t\t * re-focused, see componentDidUpdate().\n\t\t\t */\n\t\t\tsetIsActive( false );\n\t\t}\n\n\t\tif ( 'function' === typeof onFocus ) {\n\t\t\tonFocus( event );\n\t\t}\n\t}\n\n\tfunction onBlur() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\tsetIsActive( false );\n\t\t} else {\n\t\t\t// Reset to initial state\n\t\t\tsetIncompleteTokenValue( '' );\n\t\t\tsetInputOffsetFromEnd( 0 );\n\t\t\tsetIsActive( false );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onKeyDown( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.code ) {\n\t\t\tcase 'Backspace':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenBeforeInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpreventDefault = handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenAfterInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Space':\n\t\t\t\tif ( tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tpreventDefault = handleEscapeKey( event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onKeyPress( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\t\t// TODO: replace to event.code;\n\t\tswitch ( event.charCode ) {\n\t\t\tcase 44: // Comma.\n\t\t\t\tpreventDefault = handleCommaKey();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onContainerTouched( event: MouseEvent | TouchEvent ) {\n\t\t// Prevent clicking/touching the tokensAndInput container from blurring\n\t\t// the input and adding the current token.\n\t\tif ( event.target === tokensAndInput.current && isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onTokenClickRemove( event: { value: string } ) {\n\t\tdeleteToken( event.value );\n\t\tfocus();\n\t}\n\n\tfunction onSuggestionHovered( suggestion: string ) {\n\t\tconst index = getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tsetSelectedSuggestionIndex( index );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onSuggestionSelected( suggestion: string ) {\n\t\taddNewToken( suggestion );\n\t}\n\n\tfunction onInputChangeHandler( event: { value: string } ) {\n\t\tconst text = event.value;\n\t\tconst separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n\t\tconst items = text.split( separator );\n\t\tconst tokenValue = items[ items.length - 1 ] || '';\n\n\t\tif ( items.length > 1 ) {\n\t\t\taddNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\t\tsetIncompleteTokenValue( tokenValue );\n\t\tonInputChange( tokenValue );\n\t}\n\n\tfunction handleDeleteKey( _deleteToken: () => void ) {\n\t\tlet preventDefault = false;\n\t\tif ( hasFocus() && isInputEmpty() ) {\n\t\t\t_deleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleUpArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index === 0\n\t\t\t\t\t? getMatchingSuggestions(\n\t\t\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\t\t\tsuggestions,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\t\t\tsaveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: index ) - 1\n\t\t\t);\n\t\t} );\n\t\tsetSelectedSuggestionScroll( true );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleDownArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index + 1 ) %\n\t\t\t\tgetMatchingSuggestions(\n\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tvalue,\n\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\tsaveTransform\n\t\t\t\t).length\n\t\t\t);\n\t\t} );\n\n\t\tsetSelectedSuggestionScroll( true );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleEscapeKey( event: KeyboardEvent ) {\n\t\tif ( event.target instanceof HTMLInputElement ) {\n\t\t\tsetIncompleteTokenValue( event.target.value );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleCommaKey() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction moveInputToIndex( index: number ) {\n\t\tsetInputOffsetFromEnd( value.length - Math.max( index, -1 ) - 1 );\n\t}\n\n\tfunction moveInputBeforePreviousToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.min( prevInputOffsetFromEnd + 1, value.length );\n\t\t} );\n\t}\n\n\tfunction moveInputAfterNextToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.max( prevInputOffsetFromEnd - 1, 0 );\n\t\t} );\n\t}\n\n\tfunction deleteTokenBeforeInput() {\n\t\tconst index = getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t}\n\t}\n\n\tfunction deleteTokenAfterInput() {\n\t\tconst index = getIndexOfInput();\n\n\t\tif ( index < value.length ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tmoveInputToIndex( index );\n\t\t}\n\t}\n\n\tfunction addCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\taddNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction addNewTokens( tokens: string[] ) {\n\t\tconst tokensToAdd = [\n\t\t\t...new Set(\n\t\t\t\ttokens\n\t\t\t\t\t.map( saveTransform )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t\t),\n\t\t];\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = [ ...value ];\n\t\t\tnewValue.splice( getIndexOfInput(), 0, ...tokensToAdd );\n\t\t\tonChange( newValue );\n\t\t}\n\t}\n\n\tfunction addNewToken( token: string ) {\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tspeak( messages.__experimentalInvalid, 'assertive' );\n\t\t\treturn;\n\t\t}\n\t\taddNewTokens( [ token ] );\n\t\tspeak( messages.added, 'assertive' );\n\n\t\tsetIncompleteTokenValue( '' );\n\t\tsetSelectedSuggestionIndex( -1 );\n\t\tsetSelectedSuggestionScroll( false );\n\t\tsetIsExpanded( ! __experimentalExpandOnFocus );\n\n\t\tif ( isActive ) {\n\t\t\tfocus();\n\t\t}\n\t}\n\n\tfunction deleteToken( token: string | TokenItem ) {\n\t\tconst newTokens = value.filter( ( item ) => {\n\t\t\treturn getTokenValue( item ) !== getTokenValue( token );\n\t\t} );\n\t\tonChange( newTokens );\n\t\tspeak( messages.removed, 'assertive' );\n\t}\n\n\tfunction getTokenValue( token: { value: string } | string ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tfunction getMatchingSuggestions(\n\t\tsearchValue = incompleteTokenValue,\n\t\t_suggestions = suggestions,\n\t\t_value = value,\n\t\t_maxSuggestions = maxSuggestions,\n\t\t_saveTransform = saveTransform\n\t) {\n\t\tlet match = _saveTransform( searchValue );\n\t\tconst startsWithMatch: string[] = [];\n\t\tconst containsMatch: string[] = [];\n\t\tconst normalizedValue = _value.map( ( item ) => {\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\treturn item.value;\n\t\t} );\n\n\t\tif ( match.length === 0 ) {\n\t\t\t_suggestions = _suggestions.filter(\n\t\t\t\t( suggestion ) => ! normalizedValue.includes( suggestion )\n\t\t\t);\n\t\t} else {\n\t\t\tmatch = match.toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion.toLocaleLowerCase().indexOf( match );\n\t\t\t\tif ( normalizedValue.indexOf( suggestion ) === -1 ) {\n\t\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t\tstartsWithMatch.push( suggestion );\n\t\t\t\t\t} else if ( index > 0 ) {\n\t\t\t\t\t\tcontainsMatch.push( suggestion );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t_suggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn _suggestions.slice( 0, _maxSuggestions );\n\t}\n\n\tfunction getSelectedSuggestion() {\n\t\tif ( selectedSuggestionIndex !== -1 ) {\n\t\t\treturn getMatchingSuggestions()[ selectedSuggestionIndex ];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction valueContainsToken( token: string ) {\n\t\treturn value.some( ( item ) => {\n\t\t\treturn getTokenValue( token ) === getTokenValue( item );\n\t\t} );\n\t}\n\n\tfunction getIndexOfInput() {\n\t\treturn value.length - inputOffsetFromEnd;\n\t}\n\n\tfunction isInputEmpty() {\n\t\treturn incompleteTokenValue.length === 0;\n\t}\n\n\tfunction inputHasValidValue() {\n\t\treturn saveTransform( incompleteTokenValue ).length > 0;\n\t}\n\n\tfunction updateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions =\n\t\t\tgetMatchingSuggestions( incompleteTokenValue );\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n\t\tsetIsExpanded(\n\t\t\tshouldExpandIfFocuses ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tif (\n\t\t\t\t__experimentalAutoSelectFirstMatch &&\n\t\t\t\tinputHasMinimumChars &&\n\t\t\t\thasMatchingSuggestions\n\t\t\t) {\n\t\t\t\tsetSelectedSuggestionIndex( 0 );\n\t\t\t\tsetSelectedSuggestionScroll( true );\n\t\t\t} else {\n\t\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\t\tsetSelectedSuggestionScroll( false );\n\t\t\t}\n\t\t}\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst message = hasMatchingSuggestions\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t )\n\t\t\t\t: __( 'No results.' );\n\n\t\t\tdebouncedSpeak( message, 'assertive' );\n\t\t}\n\t}\n\n\tfunction renderTokensAndInput() {\n\t\tconst components = value.map( renderToken );\n\t\tcomponents.splice( getIndexOfInput(), 0, renderInput() );\n\n\t\treturn components;\n\t}\n\n\tfunction renderToken(\n\t\ttoken: string | TokenItem,\n\t\tindex: number,\n\t\ttokens: ( string | TokenItem )[]\n\t) {\n\t\tconst _value = getTokenValue( token );\n\t\tconst status = typeof token !== 'string' ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<FlexItem key={ 'token-' + _value }>\n\t\t\t\t<Token\n\t\t\t\t\tvalue={ _value }\n\t\t\t\t\tstatus={ status }\n\t\t\t\t\ttitle={\n\t\t\t\t\t\ttypeof token !== 'string' ? token.title : undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\t\tisBorderless={\n\t\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\t\tisBorderless\n\t\t\t\t\t}\n\t\t\t\t\tonMouseEnter={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseEnter\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonMouseLeave={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseLeave\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\t\tmessages={ messages }\n\t\t\t\t\ttermsCount={ termsCount }\n\t\t\t\t\ttermPosition={ termPosition }\n\t\t\t\t/>\n\t\t\t</FlexItem>\n\t\t);\n\t}\n\n\tfunction renderInput() {\n\t\tconst inputProps = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tkey: 'input',\n\t\t\tdisabled,\n\t\t\tvalue: incompleteTokenValue,\n\t\t\tonBlur,\n\t\t\tisExpanded,\n\t\t\tselectedSuggestionIndex,\n\t\t};\n\n\t\treturn (\n\t\t\t<TokenInput\n\t\t\t\t{ ...inputProps }\n\t\t\t\tonChange={\n\t\t\t\t\t! ( maxLength && value.length >= maxLength )\n\t\t\t\t\t\t? onInputChangeHandler\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tref={ input }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst classes = classnames(\n\t\tclassName,\n\t\t'components-form-token-field__input-container',\n\t\t{\n\t\t\t'is-active': isActive,\n\t\t\t'is-disabled': disabled,\n\t\t}\n\t);\n\n\tlet tokenFieldProps = {\n\t\tclassName: 'components-form-token-field',\n\t\ttabIndex: -1,\n\t};\n\tconst matchingSuggestions = getMatchingSuggestions();\n\n\tif ( ! disabled ) {\n\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\tonKeyDown,\n\t\t\tonKeyPress,\n\t\t\tonFocus: onFocusHandler,\n\t\t} );\n\t}\n\n\t// Disable reason: There is no appropriate role which describes the\n\t// input container intended accessible usability.\n\t// TODO: Refactor click detection to use blur to stop propagation.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<div { ...tokenFieldProps }>\n\t\t\t<StyledLabel\n\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</StyledLabel>\n\t\t\t<div\n\t\t\t\tref={ tokensAndInput }\n\t\t\t\tclassName={ classes }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonMouseDown={ onContainerTouched }\n\t\t\t\tonTouchStart={ onContainerTouched }\n\t\t\t>\n\t\t\t\t<TokensAndInputWrapperFlex\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\twrap={ true }\n\t\t\t\t\t__next36pxDefaultSize={ __next36pxDefaultSize }\n\t\t\t\t\thasTokens={ !! value.length }\n\t\t\t\t>\n\t\t\t\t\t{ renderTokensAndInput() }\n\t\t\t\t</TokensAndInputWrapperFlex>\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\tmatch={ saveTransform( incompleteTokenValue ) }\n\t\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\tselectedIndex={ selectedSuggestionIndex }\n\t\t\t\t\t\tscrollIntoView={ selectedSuggestionScroll }\n\t\t\t\t\t\tonHover={ onSuggestionHovered }\n\t\t\t\t\t\tonSelect={ onSuggestionSelected }\n\t\t\t\t\t\t__experimentalRenderItem={ __experimentalRenderItem }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t<p\n\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t>\n\t\t\t\t\t{ tokenizeOnSpace\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</div>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n\nexport default FormTokenField;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/form-token-field/index.tsx"],"names":["identity","value","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalRenderItem","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","__next36pxDefaultSize","__experimentalAutoSelectFirstMatch","instanceId","incompleteTokenValue","setIncompleteTokenValue","inputOffsetFromEnd","setInputOffsetFromEnd","isActive","setIsActive","isExpanded","setIsExpanded","selectedSuggestionIndex","setSelectedSuggestionIndex","selectedSuggestionScroll","setSelectedSuggestionScroll","prevSuggestions","prevValue","input","tokensAndInput","debouncedSpeak","speak","hasFocus","focus","suggestionsDidUpdate","updateSuggestions","current","ownerDocument","activeElement","onFocusHandler","event","target","onBlur","inputHasValidValue","onKeyDown","preventDefault","defaultPrevented","nativeEvent","isComposing","keyCode","key","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","addNewToken","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","Set","map","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","toLocaleLowerCase","forEach","push","concat","some","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","title","onMouseEnter","onMouseLeave","inputProps","classes","tokenFieldProps","tabIndex","Object","assign"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport type { KeyboardEvent, MouseEvent, TouchEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport { StyledLabel } from '../base-control/styles/base-control-styles';\n\nconst identity = ( value: string ) => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](http://facebook.github.io/react/docs/forms.html) in the React Documentation for more information.\n */\nexport function FormTokenField( props: FormTokenFieldProps ) {\n\tconst {\n\t\tautoCapitalize,\n\t\tautoComplete,\n\t\tmaxLength,\n\t\tplaceholder,\n\t\tlabel = __( 'Add item' ),\n\t\tclassName,\n\t\tsuggestions = [],\n\t\tmaxSuggestions = 100,\n\t\tvalue = [],\n\t\tdisplayTransform = identity,\n\t\tsaveTransform = ( token ) => token.trim(),\n\t\tonChange = () => {},\n\t\tonInputChange = () => {},\n\t\tonFocus = undefined,\n\t\tisBorderless = false,\n\t\tdisabled = false,\n\t\ttokenizeOnSpace = false,\n\t\tmessages = {\n\t\t\tadded: __( 'Item added.' ),\n\t\t\tremoved: __( 'Item removed.' ),\n\t\t\tremove: __( 'Remove item' ),\n\t\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t\t},\n\t\t__experimentalRenderItem,\n\t\t__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\n\t\t__next36pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t} = props;\n\n\tconst instanceId = useInstanceId( FormTokenField );\n\n\t// We reset to these initial values again in the onBlur\n\tconst [ incompleteTokenValue, setIncompleteTokenValue ] = useState( '' );\n\tconst [ inputOffsetFromEnd, setInputOffsetFromEnd ] = useState( 0 );\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst [ isExpanded, setIsExpanded ] = useState( false );\n\tconst [ selectedSuggestionIndex, setSelectedSuggestionIndex ] =\n\t\tuseState( -1 );\n\tconst [ selectedSuggestionScroll, setSelectedSuggestionScroll ] =\n\t\tuseState( false );\n\n\tconst prevSuggestions = usePrevious< string[] >( suggestions );\n\tconst prevValue = usePrevious< ( string | TokenItem )[] >( value );\n\n\tconst input = useRef< HTMLInputElement >( null );\n\tconst tokensAndInput = useRef< HTMLInputElement >( null );\n\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tuseEffect( () => {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( isActive && ! hasFocus() ) {\n\t\t\tfocus();\n\t\t}\n\t}, [ isActive ] );\n\n\tuseEffect( () => {\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevSuggestions || []\n\t\t);\n\n\t\tif ( suggestionsDidUpdate || value !== prevValue ) {\n\t\t\tupdateSuggestions( suggestionsDidUpdate );\n\t\t}\n\n\t\t// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ __experimentalAutoSelectFirstMatch ] );\n\n\tif ( disabled && isActive ) {\n\t\tsetIsActive( false );\n\t\tsetIncompleteTokenValue( '' );\n\t}\n\n\tfunction focus() {\n\t\tinput.current?.focus();\n\t}\n\n\tfunction hasFocus() {\n\t\treturn input.current === input.current?.ownerDocument.activeElement;\n\t}\n\n\tfunction onFocusHandler( event: FocusEvent ) {\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( hasFocus() || event.target === tokensAndInput.current ) {\n\t\t\tsetIsActive( true );\n\t\t\tsetIsExpanded( __experimentalExpandOnFocus || isExpanded );\n\t\t} else {\n\t\t\t/*\n\t\t\t * Otherwise, focus is on one of the token \"remove\" buttons and we\n\t\t\t * set the isActive state to false to prevent the input to be\n\t\t\t * re-focused, see componentDidUpdate().\n\t\t\t */\n\t\t\tsetIsActive( false );\n\t\t}\n\n\t\tif ( 'function' === typeof onFocus ) {\n\t\t\tonFocus( event );\n\t\t}\n\t}\n\n\tfunction onBlur() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\tsetIsActive( false );\n\t\t} else {\n\t\t\t// Reset to initial state\n\t\t\tsetIncompleteTokenValue( '' );\n\t\t\tsetInputOffsetFromEnd( 0 );\n\t\t\tsetIsActive( false );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onKeyDown( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tif (\n\t\t\tevent.defaultPrevented ||\n\t\t\t// Ignore keydowns from IMEs\n\t\t\tevent.nativeEvent.isComposing ||\n\t\t\t// Workaround for Mac Safari where the final Enter/Backspace of an IME composition\n\t\t\t// is `isComposing=false`, even though it's technically still part of the composition.\n\t\t\t// These can only be detected by keyCode.\n\t\t\tevent.keyCode === 229\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.key ) {\n\t\t\tcase 'Backspace':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenBeforeInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpreventDefault = handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenAfterInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Space':\n\t\t\t\tif ( tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tpreventDefault = handleEscapeKey( event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onKeyPress( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tswitch ( event.key ) {\n\t\t\tcase ',':\n\t\t\t\tpreventDefault = handleCommaKey();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onContainerTouched( event: MouseEvent | TouchEvent ) {\n\t\t// Prevent clicking/touching the tokensAndInput container from blurring\n\t\t// the input and adding the current token.\n\t\tif ( event.target === tokensAndInput.current && isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onTokenClickRemove( event: { value: string } ) {\n\t\tdeleteToken( event.value );\n\t\tfocus();\n\t}\n\n\tfunction onSuggestionHovered( suggestion: string ) {\n\t\tconst index = getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tsetSelectedSuggestionIndex( index );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onSuggestionSelected( suggestion: string ) {\n\t\taddNewToken( suggestion );\n\t}\n\n\tfunction onInputChangeHandler( event: { value: string } ) {\n\t\tconst text = event.value;\n\t\tconst separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n\t\tconst items = text.split( separator );\n\t\tconst tokenValue = items[ items.length - 1 ] || '';\n\n\t\tif ( items.length > 1 ) {\n\t\t\taddNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\t\tsetIncompleteTokenValue( tokenValue );\n\t\tonInputChange( tokenValue );\n\t}\n\n\tfunction handleDeleteKey( _deleteToken: () => void ) {\n\t\tlet preventDefault = false;\n\t\tif ( hasFocus() && isInputEmpty() ) {\n\t\t\t_deleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleUpArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index === 0\n\t\t\t\t\t? getMatchingSuggestions(\n\t\t\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\t\t\tsuggestions,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\t\t\tsaveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: index ) - 1\n\t\t\t);\n\t\t} );\n\t\tsetSelectedSuggestionScroll( true );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleDownArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index + 1 ) %\n\t\t\t\tgetMatchingSuggestions(\n\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tvalue,\n\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\tsaveTransform\n\t\t\t\t).length\n\t\t\t);\n\t\t} );\n\n\t\tsetSelectedSuggestionScroll( true );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleEscapeKey( event: KeyboardEvent ) {\n\t\tif ( event.target instanceof HTMLInputElement ) {\n\t\t\tsetIncompleteTokenValue( event.target.value );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleCommaKey() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction moveInputToIndex( index: number ) {\n\t\tsetInputOffsetFromEnd( value.length - Math.max( index, -1 ) - 1 );\n\t}\n\n\tfunction moveInputBeforePreviousToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.min( prevInputOffsetFromEnd + 1, value.length );\n\t\t} );\n\t}\n\n\tfunction moveInputAfterNextToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.max( prevInputOffsetFromEnd - 1, 0 );\n\t\t} );\n\t}\n\n\tfunction deleteTokenBeforeInput() {\n\t\tconst index = getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t}\n\t}\n\n\tfunction deleteTokenAfterInput() {\n\t\tconst index = getIndexOfInput();\n\n\t\tif ( index < value.length ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tmoveInputToIndex( index );\n\t\t}\n\t}\n\n\tfunction addCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\taddNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction addNewTokens( tokens: string[] ) {\n\t\tconst tokensToAdd = [\n\t\t\t...new Set(\n\t\t\t\ttokens\n\t\t\t\t\t.map( saveTransform )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t\t),\n\t\t];\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = [ ...value ];\n\t\t\tnewValue.splice( getIndexOfInput(), 0, ...tokensToAdd );\n\t\t\tonChange( newValue );\n\t\t}\n\t}\n\n\tfunction addNewToken( token: string ) {\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tspeak( messages.__experimentalInvalid, 'assertive' );\n\t\t\treturn;\n\t\t}\n\t\taddNewTokens( [ token ] );\n\t\tspeak( messages.added, 'assertive' );\n\n\t\tsetIncompleteTokenValue( '' );\n\t\tsetSelectedSuggestionIndex( -1 );\n\t\tsetSelectedSuggestionScroll( false );\n\t\tsetIsExpanded( ! __experimentalExpandOnFocus );\n\n\t\tif ( isActive ) {\n\t\t\tfocus();\n\t\t}\n\t}\n\n\tfunction deleteToken( token: string | TokenItem ) {\n\t\tconst newTokens = value.filter( ( item ) => {\n\t\t\treturn getTokenValue( item ) !== getTokenValue( token );\n\t\t} );\n\t\tonChange( newTokens );\n\t\tspeak( messages.removed, 'assertive' );\n\t}\n\n\tfunction getTokenValue( token: { value: string } | string ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tfunction getMatchingSuggestions(\n\t\tsearchValue = incompleteTokenValue,\n\t\t_suggestions = suggestions,\n\t\t_value = value,\n\t\t_maxSuggestions = maxSuggestions,\n\t\t_saveTransform = saveTransform\n\t) {\n\t\tlet match = _saveTransform( searchValue );\n\t\tconst startsWithMatch: string[] = [];\n\t\tconst containsMatch: string[] = [];\n\t\tconst normalizedValue = _value.map( ( item ) => {\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\treturn item.value;\n\t\t} );\n\n\t\tif ( match.length === 0 ) {\n\t\t\t_suggestions = _suggestions.filter(\n\t\t\t\t( suggestion ) => ! normalizedValue.includes( suggestion )\n\t\t\t);\n\t\t} else {\n\t\t\tmatch = match.toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion.toLocaleLowerCase().indexOf( match );\n\t\t\t\tif ( normalizedValue.indexOf( suggestion ) === -1 ) {\n\t\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t\tstartsWithMatch.push( suggestion );\n\t\t\t\t\t} else if ( index > 0 ) {\n\t\t\t\t\t\tcontainsMatch.push( suggestion );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t_suggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn _suggestions.slice( 0, _maxSuggestions );\n\t}\n\n\tfunction getSelectedSuggestion() {\n\t\tif ( selectedSuggestionIndex !== -1 ) {\n\t\t\treturn getMatchingSuggestions()[ selectedSuggestionIndex ];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction valueContainsToken( token: string ) {\n\t\treturn value.some( ( item ) => {\n\t\t\treturn getTokenValue( token ) === getTokenValue( item );\n\t\t} );\n\t}\n\n\tfunction getIndexOfInput() {\n\t\treturn value.length - inputOffsetFromEnd;\n\t}\n\n\tfunction isInputEmpty() {\n\t\treturn incompleteTokenValue.length === 0;\n\t}\n\n\tfunction inputHasValidValue() {\n\t\treturn saveTransform( incompleteTokenValue ).length > 0;\n\t}\n\n\tfunction updateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions =\n\t\t\tgetMatchingSuggestions( incompleteTokenValue );\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n\t\tsetIsExpanded(\n\t\t\tshouldExpandIfFocuses ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tif (\n\t\t\t\t__experimentalAutoSelectFirstMatch &&\n\t\t\t\tinputHasMinimumChars &&\n\t\t\t\thasMatchingSuggestions\n\t\t\t) {\n\t\t\t\tsetSelectedSuggestionIndex( 0 );\n\t\t\t\tsetSelectedSuggestionScroll( true );\n\t\t\t} else {\n\t\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\t\tsetSelectedSuggestionScroll( false );\n\t\t\t}\n\t\t}\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst message = hasMatchingSuggestions\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t )\n\t\t\t\t: __( 'No results.' );\n\n\t\t\tdebouncedSpeak( message, 'assertive' );\n\t\t}\n\t}\n\n\tfunction renderTokensAndInput() {\n\t\tconst components = value.map( renderToken );\n\t\tcomponents.splice( getIndexOfInput(), 0, renderInput() );\n\n\t\treturn components;\n\t}\n\n\tfunction renderToken(\n\t\ttoken: string | TokenItem,\n\t\tindex: number,\n\t\ttokens: ( string | TokenItem )[]\n\t) {\n\t\tconst _value = getTokenValue( token );\n\t\tconst status = typeof token !== 'string' ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<FlexItem key={ 'token-' + _value }>\n\t\t\t\t<Token\n\t\t\t\t\tvalue={ _value }\n\t\t\t\t\tstatus={ status }\n\t\t\t\t\ttitle={\n\t\t\t\t\t\ttypeof token !== 'string' ? token.title : undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\t\tisBorderless={\n\t\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\t\tisBorderless\n\t\t\t\t\t}\n\t\t\t\t\tonMouseEnter={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseEnter\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonMouseLeave={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseLeave\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\t\tmessages={ messages }\n\t\t\t\t\ttermsCount={ termsCount }\n\t\t\t\t\ttermPosition={ termPosition }\n\t\t\t\t/>\n\t\t\t</FlexItem>\n\t\t);\n\t}\n\n\tfunction renderInput() {\n\t\tconst inputProps = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tkey: 'input',\n\t\t\tdisabled,\n\t\t\tvalue: incompleteTokenValue,\n\t\t\tonBlur,\n\t\t\tisExpanded,\n\t\t\tselectedSuggestionIndex,\n\t\t};\n\n\t\treturn (\n\t\t\t<TokenInput\n\t\t\t\t{ ...inputProps }\n\t\t\t\tonChange={\n\t\t\t\t\t! ( maxLength && value.length >= maxLength )\n\t\t\t\t\t\t? onInputChangeHandler\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tref={ input }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst classes = classnames(\n\t\tclassName,\n\t\t'components-form-token-field__input-container',\n\t\t{\n\t\t\t'is-active': isActive,\n\t\t\t'is-disabled': disabled,\n\t\t}\n\t);\n\n\tlet tokenFieldProps = {\n\t\tclassName: 'components-form-token-field',\n\t\ttabIndex: -1,\n\t};\n\tconst matchingSuggestions = getMatchingSuggestions();\n\n\tif ( ! disabled ) {\n\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\tonKeyDown,\n\t\t\tonKeyPress,\n\t\t\tonFocus: onFocusHandler,\n\t\t} );\n\t}\n\n\t// Disable reason: There is no appropriate role which describes the\n\t// input container intended accessible usability.\n\t// TODO: Refactor click detection to use blur to stop propagation.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<div { ...tokenFieldProps }>\n\t\t\t<StyledLabel\n\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</StyledLabel>\n\t\t\t<div\n\t\t\t\tref={ tokensAndInput }\n\t\t\t\tclassName={ classes }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonMouseDown={ onContainerTouched }\n\t\t\t\tonTouchStart={ onContainerTouched }\n\t\t\t>\n\t\t\t\t<TokensAndInputWrapperFlex\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\twrap={ true }\n\t\t\t\t\t__next36pxDefaultSize={ __next36pxDefaultSize }\n\t\t\t\t\thasTokens={ !! value.length }\n\t\t\t\t>\n\t\t\t\t\t{ renderTokensAndInput() }\n\t\t\t\t</TokensAndInputWrapperFlex>\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\tmatch={ saveTransform( incompleteTokenValue ) }\n\t\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\tselectedIndex={ selectedSuggestionIndex }\n\t\t\t\t\t\tscrollIntoView={ selectedSuggestionScroll }\n\t\t\t\t\t\tonHover={ onSuggestionHovered }\n\t\t\t\t\t\tonSelect={ onSuggestionSelected }\n\t\t\t\t\t\t__experimentalRenderItem={ __experimentalRenderItem }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t<p\n\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t>\n\t\t\t\t\t{ tokenizeOnSpace\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</div>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n\nexport default FormTokenField;\n"]}
@@ -19,6 +19,9 @@ const defaultShortcuts = {
19
19
  previous: [{
20
20
  modifier: 'ctrlShift',
21
21
  character: '`'
22
+ }, {
23
+ modifier: 'ctrlShift',
24
+ character: '~'
22
25
  }, {
23
26
  modifier: 'access',
24
27
  character: 'p'
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/higher-order/navigate-regions/index.js"],"names":["defaultShortcuts","previous","modifier","character","next","useNavigateRegions","shortcuts","ref","isFocusingRegions","setIsFocusingRegions","focusRegion","offset","regions","Array","from","current","querySelectorAll","length","nextRegion","selectedIndex","indexOf","ownerDocument","activeElement","nextIndex","focus","clickRef","element","onClick","addEventListener","removeEventListener","className","onKeyDown","event","some","isKeyboardEvent","Component","props"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useRef } from '@wordpress/element';\nimport {\n\tcreateHigherOrderComponent,\n\tuseRefEffect,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { isKeyboardEvent } from '@wordpress/keycodes';\n\nconst defaultShortcuts = {\n\tprevious: [\n\t\t{\n\t\t\tmodifier: 'ctrlShift',\n\t\t\tcharacter: '`',\n\t\t},\n\t\t{\n\t\t\tmodifier: 'access',\n\t\t\tcharacter: 'p',\n\t\t},\n\t],\n\tnext: [\n\t\t{\n\t\t\tmodifier: 'ctrl',\n\t\t\tcharacter: '`',\n\t\t},\n\t\t{\n\t\t\tmodifier: 'access',\n\t\t\tcharacter: 'n',\n\t\t},\n\t],\n};\n\nexport function useNavigateRegions( shortcuts = defaultShortcuts ) {\n\tconst ref = useRef();\n\tconst [ isFocusingRegions, setIsFocusingRegions ] = useState( false );\n\n\tfunction focusRegion( offset ) {\n\t\tconst regions = Array.from(\n\t\t\tref.current.querySelectorAll( '[role=\"region\"]' )\n\t\t);\n\t\tif ( ! regions.length ) {\n\t\t\treturn;\n\t\t}\n\t\tlet nextRegion = regions[ 0 ];\n\t\tconst selectedIndex = regions.indexOf(\n\t\t\tref.current.ownerDocument.activeElement\n\t\t);\n\t\tif ( selectedIndex !== -1 ) {\n\t\t\tlet nextIndex = selectedIndex + offset;\n\t\t\tnextIndex = nextIndex === -1 ? regions.length - 1 : nextIndex;\n\t\t\tnextIndex = nextIndex === regions.length ? 0 : nextIndex;\n\t\t\tnextRegion = regions[ nextIndex ];\n\t\t}\n\n\t\tnextRegion.focus();\n\t\tsetIsFocusingRegions( true );\n\t}\n\n\tconst clickRef = useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onClick() {\n\t\t\t\tsetIsFocusingRegions( false );\n\t\t\t}\n\n\t\t\telement.addEventListener( 'click', onClick );\n\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'click', onClick );\n\t\t\t};\n\t\t},\n\t\t[ setIsFocusingRegions ]\n\t);\n\n\treturn {\n\t\tref: useMergeRefs( [ ref, clickRef ] ),\n\t\tclassName: isFocusingRegions ? 'is-focusing-regions' : '',\n\t\tonKeyDown( event ) {\n\t\t\tif (\n\t\t\t\tshortcuts.previous.some( ( { modifier, character } ) => {\n\t\t\t\t\treturn isKeyboardEvent[ modifier ]( event, character );\n\t\t\t\t} )\n\t\t\t) {\n\t\t\t\tfocusRegion( -1 );\n\t\t\t} else if (\n\t\t\t\tshortcuts.next.some( ( { modifier, character } ) => {\n\t\t\t\t\treturn isKeyboardEvent[ modifier ]( event, character );\n\t\t\t\t} )\n\t\t\t) {\n\t\t\t\tfocusRegion( 1 );\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport default createHigherOrderComponent(\n\t( Component ) =>\n\t\t( { shortcuts, ...props } ) =>\n\t\t\t(\n\t\t\t\t<div { ...useNavigateRegions( shortcuts ) }>\n\t\t\t\t\t<Component { ...props } />\n\t\t\t\t</div>\n\t\t\t),\n\t'navigateRegions'\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/higher-order/navigate-regions/index.js"],"names":["defaultShortcuts","previous","modifier","character","next","useNavigateRegions","shortcuts","ref","isFocusingRegions","setIsFocusingRegions","focusRegion","offset","regions","Array","from","current","querySelectorAll","length","nextRegion","selectedIndex","indexOf","ownerDocument","activeElement","nextIndex","focus","clickRef","element","onClick","addEventListener","removeEventListener","className","onKeyDown","event","some","isKeyboardEvent","Component","props"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useRef } from '@wordpress/element';\nimport {\n\tcreateHigherOrderComponent,\n\tuseRefEffect,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { isKeyboardEvent } from '@wordpress/keycodes';\n\nconst defaultShortcuts = {\n\tprevious: [\n\t\t{\n\t\t\tmodifier: 'ctrlShift',\n\t\t\tcharacter: '`',\n\t\t},\n\t\t{\n\t\t\tmodifier: 'ctrlShift',\n\t\t\tcharacter: '~',\n\t\t},\n\t\t{\n\t\t\tmodifier: 'access',\n\t\t\tcharacter: 'p',\n\t\t},\n\t],\n\tnext: [\n\t\t{\n\t\t\tmodifier: 'ctrl',\n\t\t\tcharacter: '`',\n\t\t},\n\t\t{\n\t\t\tmodifier: 'access',\n\t\t\tcharacter: 'n',\n\t\t},\n\t],\n};\n\nexport function useNavigateRegions( shortcuts = defaultShortcuts ) {\n\tconst ref = useRef();\n\tconst [ isFocusingRegions, setIsFocusingRegions ] = useState( false );\n\n\tfunction focusRegion( offset ) {\n\t\tconst regions = Array.from(\n\t\t\tref.current.querySelectorAll( '[role=\"region\"]' )\n\t\t);\n\t\tif ( ! regions.length ) {\n\t\t\treturn;\n\t\t}\n\t\tlet nextRegion = regions[ 0 ];\n\t\tconst selectedIndex = regions.indexOf(\n\t\t\tref.current.ownerDocument.activeElement\n\t\t);\n\t\tif ( selectedIndex !== -1 ) {\n\t\t\tlet nextIndex = selectedIndex + offset;\n\t\t\tnextIndex = nextIndex === -1 ? regions.length - 1 : nextIndex;\n\t\t\tnextIndex = nextIndex === regions.length ? 0 : nextIndex;\n\t\t\tnextRegion = regions[ nextIndex ];\n\t\t}\n\n\t\tnextRegion.focus();\n\t\tsetIsFocusingRegions( true );\n\t}\n\n\tconst clickRef = useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onClick() {\n\t\t\t\tsetIsFocusingRegions( false );\n\t\t\t}\n\n\t\t\telement.addEventListener( 'click', onClick );\n\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'click', onClick );\n\t\t\t};\n\t\t},\n\t\t[ setIsFocusingRegions ]\n\t);\n\n\treturn {\n\t\tref: useMergeRefs( [ ref, clickRef ] ),\n\t\tclassName: isFocusingRegions ? 'is-focusing-regions' : '',\n\t\tonKeyDown( event ) {\n\t\t\tif (\n\t\t\t\tshortcuts.previous.some( ( { modifier, character } ) => {\n\t\t\t\t\treturn isKeyboardEvent[ modifier ]( event, character );\n\t\t\t\t} )\n\t\t\t) {\n\t\t\t\tfocusRegion( -1 );\n\t\t\t} else if (\n\t\t\t\tshortcuts.next.some( ( { modifier, character } ) => {\n\t\t\t\t\treturn isKeyboardEvent[ modifier ]( event, character );\n\t\t\t\t} )\n\t\t\t) {\n\t\t\t\tfocusRegion( 1 );\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport default createHigherOrderComponent(\n\t( Component ) =>\n\t\t( { shortcuts, ...props } ) =>\n\t\t\t(\n\t\t\t\t<div { ...useNavigateRegions( shortcuts ) }>\n\t\t\t\t\t<Component { ...props } />\n\t\t\t\t</div>\n\t\t\t),\n\t'navigateRegions'\n);\n"]}
@@ -7,16 +7,10 @@ exports.default = withFilters;
7
7
 
8
8
  var _element = require("@wordpress/element");
9
9
 
10
- var _lodash = require("lodash");
11
-
12
10
  var _hooks = require("@wordpress/hooks");
13
11
 
14
12
  var _compose = require("@wordpress/compose");
15
13
 
16
- /**
17
- * External dependencies
18
- */
19
-
20
14
  /**
21
15
  * WordPress dependencies
22
16
  */
@@ -72,7 +66,7 @@ function withFilters(hookName) {
72
66
  }
73
67
 
74
68
  componentWillUnmount() {
75
- FilteredComponentRenderer.instances = (0, _lodash.without)(FilteredComponentRenderer.instances, this); // If this was the last of the mounted components filtered on
69
+ FilteredComponentRenderer.instances = FilteredComponentRenderer.instances.filter(instance => instance !== this); // If this was the last of the mounted components filtered on
76
70
  // this hook, remove the hook handler.
77
71
 
78
72
  if (FilteredComponentRenderer.instances.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/higher-order/with-filters/index.js"],"names":["ANIMATION_FRAME_PERIOD","withFilters","hookName","OriginalComponent","namespace","FilteredComponent","ensureFilteredComponent","undefined","FilteredComponentRenderer","Component","constructor","arguments","componentDidMount","instances","push","length","onHooksUpdated","componentWillUnmount","render","props","throttledForceUpdate","forEach","instance","forceUpdate","updatedHookName"],"mappings":";;;;;;;AAQA;;AALA;;AAMA;;AACA;;AAVA;AACA;AACA;;AAGA;AACA;AACA;AAKA,MAAMA,sBAAsB,GAAG,EAA/B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,WAAT,CAAsBC,QAAtB,EAAiC;AAC/C,SAAO,yCAA8BC,iBAAF,IAAyB;AAC3D,UAAMC,SAAS,GAAG,uBAAuBF,QAAzC;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;;AACE,QAAIG,iBAAJ;AAEA;AACF;AACA;AACA;;AACE,aAASC,uBAAT,GAAmC;AAClC,UAAKD,iBAAiB,KAAKE,SAA3B,EAAuC;AACtCF,QAAAA,iBAAiB,GAAG,yBAAcH,QAAd,EAAwBC,iBAAxB,CAApB;AACA;AACD;;AAED,UAAMK,yBAAN,SAAwCC,kBAAxC,CAAkD;AACjDC,MAAAA,WAAW,GAAG;AACb,cAAO,GAAGC,SAAV;AAEAL,QAAAA,uBAAuB;AACvB;;AAEDM,MAAAA,iBAAiB,GAAG;AACnBJ,QAAAA,yBAAyB,CAACK,SAA1B,CAAoCC,IAApC,CAA0C,IAA1C,EADmB,CAGnB;AACA;;AACA,YAAKN,yBAAyB,CAACK,SAA1B,CAAoCE,MAApC,KAA+C,CAApD,EAAwD;AACvD,gCAAW,aAAX,EAA0BX,SAA1B,EAAqCY,cAArC;AACA,gCAAW,WAAX,EAAwBZ,SAAxB,EAAmCY,cAAnC;AACA;AACD;;AAEDC,MAAAA,oBAAoB,GAAG;AACtBT,QAAAA,yBAAyB,CAACK,SAA1B,GAAsC,qBACrCL,yBAAyB,CAACK,SADW,EAErC,IAFqC,CAAtC,CADsB,CAMtB;AACA;;AACA,YAAKL,yBAAyB,CAACK,SAA1B,CAAoCE,MAApC,KAA+C,CAApD,EAAwD;AACvD,mCAAc,aAAd,EAA6BX,SAA7B;AACA,mCAAc,WAAd,EAA2BA,SAA3B;AACA;AACD;;AAEDc,MAAAA,MAAM,GAAG;AACR,eAAO,4BAAC,iBAAD,EAAwB,KAAKC,KAA7B,CAAP;AACA;;AAlCgD;;AAqClDX,IAAAA,yBAAyB,CAACK,SAA1B,GAAsC,EAAtC;AAEA;AACF;AACA;AACA;;AACE,UAAMO,oBAAoB,GAAG,uBAAU,MAAM;AAC5C;AACA;AACAf,MAAAA,iBAAiB,GAAG,yBAAcH,QAAd,EAAwBC,iBAAxB,CAApB,CAH4C,CAK5C;;AACAK,MAAAA,yBAAyB,CAACK,SAA1B,CAAoCQ,OAApC,CAA+CC,QAAF,IAAgB;AAC5DA,QAAAA,QAAQ,CAACC,WAAT;AACA,OAFD;AAGA,KAT4B,EAS1BvB,sBAT0B,CAA7B;AAWA;AACF;AACA;AACA;AACA;AACA;AACA;;AACE,aAASgB,cAAT,CAAyBQ,eAAzB,EAA2C;AAC1C,UAAKA,eAAe,KAAKtB,QAAzB,EAAoC;AACnCkB,QAAAA,oBAAoB;AACpB;AACD;;AAED,WAAOZ,yBAAP;AACA,GA1FM,EA0FJ,aA1FI,CAAP;AA2FA","sourcesContent":["/**\n * External dependencies\n */\nimport { without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { addAction, applyFilters, removeAction } from '@wordpress/hooks';\nimport { createHigherOrderComponent, debounce } from '@wordpress/compose';\n\nconst ANIMATION_FRAME_PERIOD = 16;\n\n/**\n * Creates a higher-order component which adds filtering capability to the\n * wrapped component. Filters get applied when the original component is about\n * to be mounted. When a filter is added or removed that matches the hook name,\n * the wrapped component re-renders.\n *\n * @param {string} hookName Hook name exposed to be used by filters.\n *\n * @return {Function} Higher-order component factory.\n */\nexport default function withFilters( hookName ) {\n\treturn createHigherOrderComponent( ( OriginalComponent ) => {\n\t\tconst namespace = 'core/with-filters/' + hookName;\n\n\t\t/**\n\t\t * The component definition with current filters applied. Each instance\n\t\t * reuse this shared reference as an optimization to avoid excessive\n\t\t * calls to `applyFilters` when many instances exist.\n\t\t *\n\t\t * @type {?Component}\n\t\t */\n\t\tlet FilteredComponent;\n\n\t\t/**\n\t\t * Initializes the FilteredComponent variable once, if not already\n\t\t * assigned. Subsequent calls are effectively a noop.\n\t\t */\n\t\tfunction ensureFilteredComponent() {\n\t\t\tif ( FilteredComponent === undefined ) {\n\t\t\t\tFilteredComponent = applyFilters( hookName, OriginalComponent );\n\t\t\t}\n\t\t}\n\n\t\tclass FilteredComponentRenderer extends Component {\n\t\t\tconstructor() {\n\t\t\t\tsuper( ...arguments );\n\n\t\t\t\tensureFilteredComponent();\n\t\t\t}\n\n\t\t\tcomponentDidMount() {\n\t\t\t\tFilteredComponentRenderer.instances.push( this );\n\n\t\t\t\t// If there were previously no mounted instances for components\n\t\t\t\t// filtered on this hook, add the hook handler.\n\t\t\t\tif ( FilteredComponentRenderer.instances.length === 1 ) {\n\t\t\t\t\taddAction( 'hookRemoved', namespace, onHooksUpdated );\n\t\t\t\t\taddAction( 'hookAdded', namespace, onHooksUpdated );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcomponentWillUnmount() {\n\t\t\t\tFilteredComponentRenderer.instances = without(\n\t\t\t\t\tFilteredComponentRenderer.instances,\n\t\t\t\t\tthis\n\t\t\t\t);\n\n\t\t\t\t// If this was the last of the mounted components filtered on\n\t\t\t\t// this hook, remove the hook handler.\n\t\t\t\tif ( FilteredComponentRenderer.instances.length === 0 ) {\n\t\t\t\t\tremoveAction( 'hookRemoved', namespace );\n\t\t\t\t\tremoveAction( 'hookAdded', namespace );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trender() {\n\t\t\t\treturn <FilteredComponent { ...this.props } />;\n\t\t\t}\n\t\t}\n\n\t\tFilteredComponentRenderer.instances = [];\n\n\t\t/**\n\t\t * Updates the FilteredComponent definition, forcing a render for each\n\t\t * mounted instance. This occurs a maximum of once per animation frame.\n\t\t */\n\t\tconst throttledForceUpdate = debounce( () => {\n\t\t\t// Recreate the filtered component, only after delay so that it's\n\t\t\t// computed once, even if many filters added.\n\t\t\tFilteredComponent = applyFilters( hookName, OriginalComponent );\n\n\t\t\t// Force each instance to render.\n\t\t\tFilteredComponentRenderer.instances.forEach( ( instance ) => {\n\t\t\t\tinstance.forceUpdate();\n\t\t\t} );\n\t\t}, ANIMATION_FRAME_PERIOD );\n\n\t\t/**\n\t\t * When a filter is added or removed for the matching hook name, each\n\t\t * mounted instance should re-render with the new filters having been\n\t\t * applied to the original component.\n\t\t *\n\t\t * @param {string} updatedHookName Name of the hook that was updated.\n\t\t */\n\t\tfunction onHooksUpdated( updatedHookName ) {\n\t\t\tif ( updatedHookName === hookName ) {\n\t\t\t\tthrottledForceUpdate();\n\t\t\t}\n\t\t}\n\n\t\treturn FilteredComponentRenderer;\n\t}, 'withFilters' );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/higher-order/with-filters/index.js"],"names":["ANIMATION_FRAME_PERIOD","withFilters","hookName","OriginalComponent","namespace","FilteredComponent","ensureFilteredComponent","undefined","FilteredComponentRenderer","Component","constructor","arguments","componentDidMount","instances","push","length","onHooksUpdated","componentWillUnmount","filter","instance","render","props","throttledForceUpdate","forEach","forceUpdate","updatedHookName"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AALA;AACA;AACA;AAKA,MAAMA,sBAAsB,GAAG,EAA/B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,WAAT,CAAsBC,QAAtB,EAAiC;AAC/C,SAAO,yCAA8BC,iBAAF,IAAyB;AAC3D,UAAMC,SAAS,GAAG,uBAAuBF,QAAzC;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;;AACE,QAAIG,iBAAJ;AAEA;AACF;AACA;AACA;;AACE,aAASC,uBAAT,GAAmC;AAClC,UAAKD,iBAAiB,KAAKE,SAA3B,EAAuC;AACtCF,QAAAA,iBAAiB,GAAG,yBAAcH,QAAd,EAAwBC,iBAAxB,CAApB;AACA;AACD;;AAED,UAAMK,yBAAN,SAAwCC,kBAAxC,CAAkD;AACjDC,MAAAA,WAAW,GAAG;AACb,cAAO,GAAGC,SAAV;AAEAL,QAAAA,uBAAuB;AACvB;;AAEDM,MAAAA,iBAAiB,GAAG;AACnBJ,QAAAA,yBAAyB,CAACK,SAA1B,CAAoCC,IAApC,CAA0C,IAA1C,EADmB,CAGnB;AACA;;AACA,YAAKN,yBAAyB,CAACK,SAA1B,CAAoCE,MAApC,KAA+C,CAApD,EAAwD;AACvD,gCAAW,aAAX,EAA0BX,SAA1B,EAAqCY,cAArC;AACA,gCAAW,WAAX,EAAwBZ,SAAxB,EAAmCY,cAAnC;AACA;AACD;;AAEDC,MAAAA,oBAAoB,GAAG;AACtBT,QAAAA,yBAAyB,CAACK,SAA1B,GACCL,yBAAyB,CAACK,SAA1B,CAAoCK,MAApC,CACGC,QAAF,IAAgBA,QAAQ,KAAK,IAD9B,CADD,CADsB,CAMtB;AACA;;AACA,YAAKX,yBAAyB,CAACK,SAA1B,CAAoCE,MAApC,KAA+C,CAApD,EAAwD;AACvD,mCAAc,aAAd,EAA6BX,SAA7B;AACA,mCAAc,WAAd,EAA2BA,SAA3B;AACA;AACD;;AAEDgB,MAAAA,MAAM,GAAG;AACR,eAAO,4BAAC,iBAAD,EAAwB,KAAKC,KAA7B,CAAP;AACA;;AAlCgD;;AAqClDb,IAAAA,yBAAyB,CAACK,SAA1B,GAAsC,EAAtC;AAEA;AACF;AACA;AACA;;AACE,UAAMS,oBAAoB,GAAG,uBAAU,MAAM;AAC5C;AACA;AACAjB,MAAAA,iBAAiB,GAAG,yBAAcH,QAAd,EAAwBC,iBAAxB,CAApB,CAH4C,CAK5C;;AACAK,MAAAA,yBAAyB,CAACK,SAA1B,CAAoCU,OAApC,CAA+CJ,QAAF,IAAgB;AAC5DA,QAAAA,QAAQ,CAACK,WAAT;AACA,OAFD;AAGA,KAT4B,EAS1BxB,sBAT0B,CAA7B;AAWA;AACF;AACA;AACA;AACA;AACA;AACA;;AACE,aAASgB,cAAT,CAAyBS,eAAzB,EAA2C;AAC1C,UAAKA,eAAe,KAAKvB,QAAzB,EAAoC;AACnCoB,QAAAA,oBAAoB;AACpB;AACD;;AAED,WAAOd,yBAAP;AACA,GA1FM,EA0FJ,aA1FI,CAAP;AA2FA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { addAction, applyFilters, removeAction } from '@wordpress/hooks';\nimport { createHigherOrderComponent, debounce } from '@wordpress/compose';\n\nconst ANIMATION_FRAME_PERIOD = 16;\n\n/**\n * Creates a higher-order component which adds filtering capability to the\n * wrapped component. Filters get applied when the original component is about\n * to be mounted. When a filter is added or removed that matches the hook name,\n * the wrapped component re-renders.\n *\n * @param {string} hookName Hook name exposed to be used by filters.\n *\n * @return {Function} Higher-order component factory.\n */\nexport default function withFilters( hookName ) {\n\treturn createHigherOrderComponent( ( OriginalComponent ) => {\n\t\tconst namespace = 'core/with-filters/' + hookName;\n\n\t\t/**\n\t\t * The component definition with current filters applied. Each instance\n\t\t * reuse this shared reference as an optimization to avoid excessive\n\t\t * calls to `applyFilters` when many instances exist.\n\t\t *\n\t\t * @type {?Component}\n\t\t */\n\t\tlet FilteredComponent;\n\n\t\t/**\n\t\t * Initializes the FilteredComponent variable once, if not already\n\t\t * assigned. Subsequent calls are effectively a noop.\n\t\t */\n\t\tfunction ensureFilteredComponent() {\n\t\t\tif ( FilteredComponent === undefined ) {\n\t\t\t\tFilteredComponent = applyFilters( hookName, OriginalComponent );\n\t\t\t}\n\t\t}\n\n\t\tclass FilteredComponentRenderer extends Component {\n\t\t\tconstructor() {\n\t\t\t\tsuper( ...arguments );\n\n\t\t\t\tensureFilteredComponent();\n\t\t\t}\n\n\t\t\tcomponentDidMount() {\n\t\t\t\tFilteredComponentRenderer.instances.push( this );\n\n\t\t\t\t// If there were previously no mounted instances for components\n\t\t\t\t// filtered on this hook, add the hook handler.\n\t\t\t\tif ( FilteredComponentRenderer.instances.length === 1 ) {\n\t\t\t\t\taddAction( 'hookRemoved', namespace, onHooksUpdated );\n\t\t\t\t\taddAction( 'hookAdded', namespace, onHooksUpdated );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcomponentWillUnmount() {\n\t\t\t\tFilteredComponentRenderer.instances =\n\t\t\t\t\tFilteredComponentRenderer.instances.filter(\n\t\t\t\t\t\t( instance ) => instance !== this\n\t\t\t\t\t);\n\n\t\t\t\t// If this was the last of the mounted components filtered on\n\t\t\t\t// this hook, remove the hook handler.\n\t\t\t\tif ( FilteredComponentRenderer.instances.length === 0 ) {\n\t\t\t\t\tremoveAction( 'hookRemoved', namespace );\n\t\t\t\t\tremoveAction( 'hookAdded', namespace );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trender() {\n\t\t\t\treturn <FilteredComponent { ...this.props } />;\n\t\t\t}\n\t\t}\n\n\t\tFilteredComponentRenderer.instances = [];\n\n\t\t/**\n\t\t * Updates the FilteredComponent definition, forcing a render for each\n\t\t * mounted instance. This occurs a maximum of once per animation frame.\n\t\t */\n\t\tconst throttledForceUpdate = debounce( () => {\n\t\t\t// Recreate the filtered component, only after delay so that it's\n\t\t\t// computed once, even if many filters added.\n\t\t\tFilteredComponent = applyFilters( hookName, OriginalComponent );\n\n\t\t\t// Force each instance to render.\n\t\t\tFilteredComponentRenderer.instances.forEach( ( instance ) => {\n\t\t\t\tinstance.forceUpdate();\n\t\t\t} );\n\t\t}, ANIMATION_FRAME_PERIOD );\n\n\t\t/**\n\t\t * When a filter is added or removed for the matching hook name, each\n\t\t * mounted instance should re-render with the new filters having been\n\t\t * applied to the original component.\n\t\t *\n\t\t * @param {string} updatedHookName Name of the hook that was updated.\n\t\t */\n\t\tfunction onHooksUpdated( updatedHookName ) {\n\t\t\tif ( updatedHookName === hookName ) {\n\t\t\t\tthrottledForceUpdate();\n\t\t\t}\n\t\t}\n\n\t\treturn FilteredComponentRenderer;\n\t}, 'withFilters' );\n}\n"]}
@@ -29,13 +29,14 @@ var _dashicon = _interopRequireDefault(require("../dashicon"));
29
29
  function Icon(_ref) {
30
30
  let {
31
31
  icon = null,
32
- size = 24,
32
+ size = 'string' === typeof icon ? 20 : 24,
33
33
  ...additionalProps
34
34
  } = _ref;
35
35
 
36
36
  if ('string' === typeof icon) {
37
37
  return (0, _element.createElement)(_dashicon.default, (0, _extends2.default)({
38
- icon: icon
38
+ icon: icon,
39
+ size: size
39
40
  }, additionalProps));
40
41
  }
41
42
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/icon/index.tsx"],"names":["Icon","icon","size","additionalProps","Dashicon","type","prototype","Component","SVG","appliedProps","props","width","height"],"mappings":";;;;;;;;;;;AAQA;;AAMA;;AAKA;;AAnBA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AA8BA,SAASA,IAAT,OAIgB;AAAA,MAJI;AACnBC,IAAAA,IAAI,GAAG,IADY;AAEnBC,IAAAA,IAAI,GAAG,EAFY;AAGnB,OAAGC;AAHgB,GAIJ;;AACf,MAAK,aAAa,OAAOF,IAAzB,EAAgC;AAC/B,WACC,4BAAC,iBAAD;AACC,MAAA,IAAI,EAAGA;AADR,OAEQE,eAFR,EADD;AAMA;;AAED,MAAK,6BAAgBF,IAAhB,KAA0BG,sBAAaH,IAAI,CAACI,IAAjD,EAAwD;AACvD,WAAO,2BAAcJ,IAAd,EAAoB,EAC1B,GAAGE;AADuB,KAApB,CAAP;AAGA;;AAED,MAAK,eAAe,OAAOF,IAA3B,EAAkC;AACjC,QAAKA,IAAI,CAACK,SAAL,YAA0BC,kBAA/B,EAA2C;AAC1C,aAAO,4BAAeN,IAAf,EAAqB;AAC3BC,QAAAA,IAD2B;AAE3B,WAAGC;AAFwB,OAArB,CAAP;AAIA;;AAED,WAASF,IAAF,CAA+C;AACrDC,MAAAA,IADqD;AAErD,SAAGC;AAFkD,KAA/C,CAAP;AAIA;;AAED,MAAKF,IAAI,KAAMA,IAAI,CAACI,IAAL,KAAc,KAAd,IAAuBJ,IAAI,CAACI,IAAL,KAAcG,eAA3C,CAAT,EAA4D;AAC3D,UAAMC,YAAY,GAAG,EACpB,GAAGR,IAAI,CAACS,KADY;AAEpBC,MAAAA,KAAK,EAAET,IAFa;AAGpBU,MAAAA,MAAM,EAAEV,IAHY;AAIpB,SAAGC;AAJiB,KAArB;AAOA,WAAO,4BAAC,eAAD,EAAUM,YAAV,CAAP;AACA;;AAED,MAAK,6BAAgBR,IAAhB,CAAL,EAA8B;AAC7B,WAAO,2BAAcA,IAAd,EAAoB;AAC1B;AACAC,MAAAA,IAF0B;AAG1B,SAAGC;AAHuB,KAApB,CAAP;AAKA;;AAED,SAAOF,IAAP;AACA;;eAEcD,I","sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentType, HTMLProps, SVGProps } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcloneElement,\n\tcreateElement,\n\tComponent,\n\tisValidElement,\n} from '@wordpress/element';\nimport { SVG } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport Dashicon from '../dashicon';\nimport type { IconKey as DashiconIconKey } from '../dashicon/types';\n\nexport type IconType< P > = DashiconIconKey | ComponentType< P > | JSX.Element;\n\ninterface BaseProps< P > {\n\t/**\n\t * The icon to render. Supported values are: Dashicons (specified as\n\t * strings), functions, Component instances and `null`.\n\t *\n\t * @default null\n\t */\n\ticon?: IconType< P > | null;\n\t/**\n\t * The size (width and height) of the icon.\n\t *\n\t * @default 24\n\t */\n\tsize?: number;\n}\n\ntype AdditionalProps< T > = T extends ComponentType< infer U >\n\t? U\n\t: T extends DashiconIconKey\n\t? SVGProps< SVGSVGElement >\n\t: {};\n\nexport type Props< P > = BaseProps< P > & AdditionalProps< IconType< P > >;\n\nfunction Icon< P >( {\n\ticon = null,\n\tsize = 24,\n\t...additionalProps\n}: Props< P > ) {\n\tif ( 'string' === typeof icon ) {\n\t\treturn (\n\t\t\t<Dashicon\n\t\t\t\ticon={ icon }\n\t\t\t\t{ ...( additionalProps as HTMLProps< HTMLSpanElement > ) }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( isValidElement( icon ) && Dashicon === icon.type ) {\n\t\treturn cloneElement( icon, {\n\t\t\t...additionalProps,\n\t\t} );\n\t}\n\n\tif ( 'function' === typeof icon ) {\n\t\tif ( icon.prototype instanceof Component ) {\n\t\t\treturn createElement( icon, {\n\t\t\t\tsize,\n\t\t\t\t...additionalProps,\n\t\t\t} as unknown as P );\n\t\t}\n\n\t\treturn ( icon as ( ...args: any[] ) => JSX.Element )( {\n\t\t\tsize,\n\t\t\t...additionalProps,\n\t\t} );\n\t}\n\n\tif ( icon && ( icon.type === 'svg' || icon.type === SVG ) ) {\n\t\tconst appliedProps = {\n\t\t\t...icon.props,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t\t...additionalProps,\n\t\t};\n\n\t\treturn <SVG { ...appliedProps } />;\n\t}\n\n\tif ( isValidElement( icon ) ) {\n\t\treturn cloneElement( icon, {\n\t\t\t// @ts-ignore Just forwarding the size prop along\n\t\t\tsize,\n\t\t\t...additionalProps,\n\t\t} );\n\t}\n\n\treturn icon;\n}\n\nexport default Icon;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/icon/index.tsx"],"names":["Icon","icon","size","additionalProps","Dashicon","type","prototype","Component","SVG","appliedProps","props","width","height"],"mappings":";;;;;;;;;;;AAQA;;AAMA;;AAKA;;AAnBA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AA8BA,SAASA,IAAT,OAIgB;AAAA,MAJI;AACnBC,IAAAA,IAAI,GAAG,IADY;AAEnBC,IAAAA,IAAI,GAAG,aAAa,OAAOD,IAApB,GAA2B,EAA3B,GAAgC,EAFpB;AAGnB,OAAGE;AAHgB,GAIJ;;AACf,MAAK,aAAa,OAAOF,IAAzB,EAAgC;AAC/B,WACC,4BAAC,iBAAD;AACC,MAAA,IAAI,EAAGA,IADR;AAEC,MAAA,IAAI,EAAGC;AAFR,OAGQC,eAHR,EADD;AAOA;;AAED,MAAK,6BAAgBF,IAAhB,KAA0BG,sBAAaH,IAAI,CAACI,IAAjD,EAAwD;AACvD,WAAO,2BAAcJ,IAAd,EAAoB,EAC1B,GAAGE;AADuB,KAApB,CAAP;AAGA;;AAED,MAAK,eAAe,OAAOF,IAA3B,EAAkC;AACjC,QAAKA,IAAI,CAACK,SAAL,YAA0BC,kBAA/B,EAA2C;AAC1C,aAAO,4BAAeN,IAAf,EAAqB;AAC3BC,QAAAA,IAD2B;AAE3B,WAAGC;AAFwB,OAArB,CAAP;AAIA;;AAED,WAASF,IAAF,CAA+C;AACrDC,MAAAA,IADqD;AAErD,SAAGC;AAFkD,KAA/C,CAAP;AAIA;;AAED,MAAKF,IAAI,KAAMA,IAAI,CAACI,IAAL,KAAc,KAAd,IAAuBJ,IAAI,CAACI,IAAL,KAAcG,eAA3C,CAAT,EAA4D;AAC3D,UAAMC,YAAY,GAAG,EACpB,GAAGR,IAAI,CAACS,KADY;AAEpBC,MAAAA,KAAK,EAAET,IAFa;AAGpBU,MAAAA,MAAM,EAAEV,IAHY;AAIpB,SAAGC;AAJiB,KAArB;AAOA,WAAO,4BAAC,eAAD,EAAUM,YAAV,CAAP;AACA;;AAED,MAAK,6BAAgBR,IAAhB,CAAL,EAA8B;AAC7B,WAAO,2BAAcA,IAAd,EAAoB;AAC1B;AACAC,MAAAA,IAF0B;AAG1B,SAAGC;AAHuB,KAApB,CAAP;AAKA;;AAED,SAAOF,IAAP;AACA;;eAEcD,I","sourcesContent":["/**\n * External dependencies\n */\nimport type { ComponentType, HTMLProps, SVGProps } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcloneElement,\n\tcreateElement,\n\tComponent,\n\tisValidElement,\n} from '@wordpress/element';\nimport { SVG } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport Dashicon from '../dashicon';\nimport type { IconKey as DashiconIconKey } from '../dashicon/types';\n\nexport type IconType< P > = DashiconIconKey | ComponentType< P > | JSX.Element;\n\ninterface BaseProps< P > {\n\t/**\n\t * The icon to render. Supported values are: Dashicons (specified as\n\t * strings), functions, Component instances and `null`.\n\t *\n\t * @default null\n\t */\n\ticon?: IconType< P > | null;\n\t/**\n\t * The size (width and height) of the icon.\n\t *\n\t * @default `20` when a Dashicon is rendered, `24` for all other icons.\n\t */\n\tsize?: number;\n}\n\ntype AdditionalProps< T > = T extends ComponentType< infer U >\n\t? U\n\t: T extends DashiconIconKey\n\t? SVGProps< SVGSVGElement >\n\t: {};\n\nexport type Props< P > = BaseProps< P > & AdditionalProps< IconType< P > >;\n\nfunction Icon< P >( {\n\ticon = null,\n\tsize = 'string' === typeof icon ? 20 : 24,\n\t...additionalProps\n}: Props< P > ) {\n\tif ( 'string' === typeof icon ) {\n\t\treturn (\n\t\t\t<Dashicon\n\t\t\t\ticon={ icon }\n\t\t\t\tsize={ size }\n\t\t\t\t{ ...( additionalProps as HTMLProps< HTMLSpanElement > ) }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( isValidElement( icon ) && Dashicon === icon.type ) {\n\t\treturn cloneElement( icon, {\n\t\t\t...additionalProps,\n\t\t} );\n\t}\n\n\tif ( 'function' === typeof icon ) {\n\t\tif ( icon.prototype instanceof Component ) {\n\t\t\treturn createElement( icon, {\n\t\t\t\tsize,\n\t\t\t\t...additionalProps,\n\t\t\t} as unknown as P );\n\t\t}\n\n\t\treturn ( icon as ( ...args: any[] ) => JSX.Element )( {\n\t\t\tsize,\n\t\t\t...additionalProps,\n\t\t} );\n\t}\n\n\tif ( icon && ( icon.type === 'svg' || icon.type === SVG ) ) {\n\t\tconst appliedProps = {\n\t\t\t...icon.props,\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t\t...additionalProps,\n\t\t};\n\n\t\treturn <SVG { ...appliedProps } />;\n\t}\n\n\tif ( isValidElement( icon ) ) {\n\t\treturn cloneElement( icon, {\n\t\t\t// @ts-ignore Just forwarding the size prop along\n\t\t\tsize,\n\t\t\t...additionalProps,\n\t\t} );\n\t}\n\n\treturn icon;\n}\n\nexport default Icon;\n"]}