@wordpress/components 19.14.0 → 19.15.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 (506) hide show
  1. package/CHANGELOG.md +51 -12
  2. package/build/autocomplete/get-default-use-items.js +5 -1
  3. package/build/autocomplete/get-default-use-items.js.map +1 -1
  4. package/build/autocomplete/index.js +5 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/border-control/border-control/hook.js.map +1 -1
  7. package/build/box-control/index.js +1 -1
  8. package/build/box-control/index.js.map +1 -1
  9. package/build/color-picker/hex-input.js +5 -4
  10. package/build/color-picker/hex-input.js.map +1 -1
  11. package/build/color-picker/index.native.js +35 -34
  12. package/build/color-picker/index.native.js.map +1 -1
  13. package/build/color-picker/input-with-slider.js +3 -1
  14. package/build/color-picker/input-with-slider.js.map +1 -1
  15. package/build/color-picker/styles.js +31 -43
  16. package/build/color-picker/styles.js.map +1 -1
  17. package/build/color-picker/use-deprecated-props.js +22 -31
  18. package/build/color-picker/use-deprecated-props.js.map +1 -1
  19. package/build/combobox-control/index.js +14 -6
  20. package/build/combobox-control/index.js.map +1 -1
  21. package/build/combobox-control/styles.js +39 -0
  22. package/build/combobox-control/styles.js.map +1 -0
  23. package/build/dropdown-menu/index.js +5 -5
  24. package/build/dropdown-menu/index.js.map +1 -1
  25. package/build/dropdown-menu/index.native.js +5 -5
  26. package/build/dropdown-menu/index.native.js.map +1 -1
  27. package/build/elevation/hook.js +5 -5
  28. package/build/elevation/hook.js.map +1 -1
  29. package/build/external-link/index.js +1 -3
  30. package/build/external-link/index.js.map +1 -1
  31. package/build/focal-point-picker/grid.js +2 -7
  32. package/build/focal-point-picker/grid.js.map +1 -1
  33. package/build/focal-point-picker/index.native.js +8 -8
  34. package/build/focal-point-picker/index.native.js.map +1 -1
  35. package/build/focal-point-picker/tooltip/index.native.js +11 -12
  36. package/build/focal-point-picker/tooltip/index.native.js.map +1 -1
  37. package/build/form-token-field/index.js +22 -7
  38. package/build/form-token-field/index.js.map +1 -1
  39. package/build/form-token-field/styles.js +40 -0
  40. package/build/form-token-field/styles.js.map +1 -0
  41. package/build/form-token-field/suggestions-list.js +2 -7
  42. package/build/form-token-field/suggestions-list.js.map +1 -1
  43. package/build/grid/component.js +7 -8
  44. package/build/grid/component.js.map +1 -1
  45. package/build/grid/hook.js +1 -5
  46. package/build/grid/hook.js.map +1 -1
  47. package/build/grid/index.js.map +1 -1
  48. package/build/grid/utils.js +4 -7
  49. package/build/grid/utils.js.map +1 -1
  50. package/build/h-stack/component.js +5 -9
  51. package/build/h-stack/component.js.map +1 -1
  52. package/build/h-stack/hook.js +8 -10
  53. package/build/h-stack/hook.js.map +1 -1
  54. package/build/h-stack/index.js.map +1 -1
  55. package/build/h-stack/utils.js +7 -18
  56. package/build/h-stack/utils.js.map +1 -1
  57. package/build/icon/index.js.map +1 -1
  58. package/build/menu-item/index.js +1 -3
  59. package/build/menu-item/index.js.map +1 -1
  60. package/build/mobile/focal-point-settings-panel/index.native.js +1 -1
  61. package/build/mobile/focal-point-settings-panel/index.native.js.map +1 -1
  62. package/build/mobile/image/index.native.js +4 -2
  63. package/build/mobile/image/index.native.js.map +1 -1
  64. package/build/modal/index.js +17 -3
  65. package/build/modal/index.js.map +1 -1
  66. package/build/navigation/index.js +4 -1
  67. package/build/navigation/index.js.map +1 -1
  68. package/build/navigation/item/base.js +3 -0
  69. package/build/navigation/item/base.js.map +1 -1
  70. package/build/popover/index.js +4 -4
  71. package/build/popover/index.js.map +1 -1
  72. package/build/range-control/index.js +54 -40
  73. package/build/range-control/index.js.map +1 -1
  74. package/build/range-control/input-range.js +5 -7
  75. package/build/range-control/input-range.js.map +1 -1
  76. package/build/range-control/mark.js +5 -7
  77. package/build/range-control/mark.js.map +1 -1
  78. package/build/range-control/rail.js +10 -16
  79. package/build/range-control/rail.js.map +1 -1
  80. package/build/range-control/styles/range-control-styles.js +62 -62
  81. package/build/range-control/styles/range-control-styles.js.map +1 -1
  82. package/build/range-control/tooltip.js +5 -7
  83. package/build/range-control/tooltip.js.map +1 -1
  84. package/build/range-control/types.js +6 -0
  85. package/build/range-control/types.js.map +1 -0
  86. package/build/range-control/utils.js +22 -29
  87. package/build/range-control/utils.js.map +1 -1
  88. package/build/resizable-box/resize-tooltip/utils.js +2 -7
  89. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  90. package/build/scrollable/component.js +7 -8
  91. package/build/scrollable/component.js.map +1 -1
  92. package/build/scrollable/hook.js +0 -8
  93. package/build/scrollable/hook.js.map +1 -1
  94. package/build/scrollable/index.js.map +1 -1
  95. package/build/scrollable/styles.js +7 -7
  96. package/build/scrollable/styles.js.map +1 -1
  97. package/build/shortcut/index.js +2 -8
  98. package/build/shortcut/index.js.map +1 -1
  99. package/build/slot-fill/index.native.js +6 -8
  100. package/build/slot-fill/index.native.js.map +1 -1
  101. package/build/slot-fill/provider.js +4 -8
  102. package/build/slot-fill/provider.js.map +1 -1
  103. package/build/slot-fill/slot.js +4 -8
  104. package/build/slot-fill/slot.js.map +1 -1
  105. package/build/spacer/component.js.map +1 -1
  106. package/build/spacer/hook.js +2 -2
  107. package/build/spacer/hook.js.map +1 -1
  108. package/build/spacer/index.js.map +1 -1
  109. package/build/text-highlight/index.js +22 -5
  110. package/build/text-highlight/index.js.map +1 -1
  111. package/build/text-highlight/types.js +6 -0
  112. package/build/text-highlight/types.js.map +1 -0
  113. package/build/tip/index.js +5 -11
  114. package/build/tip/index.js.map +1 -1
  115. package/build/tip/types.js +6 -0
  116. package/build/tip/types.js.map +1 -0
  117. package/build/toolbar-group/index.js +3 -3
  118. package/build/toolbar-group/index.js.map +1 -1
  119. package/build/tree-select/index.js +2 -2
  120. package/build/tree-select/index.js.map +1 -1
  121. package/build/ui/utils/get-valid-children.js.map +1 -1
  122. package/build/visually-hidden/component.js +12 -13
  123. package/build/visually-hidden/component.js.map +1 -1
  124. package/build/visually-hidden/index.js.map +1 -1
  125. package/build/visually-hidden/styles.js +3 -1
  126. package/build/visually-hidden/styles.js.map +1 -1
  127. package/build/visually-hidden/types.js +6 -0
  128. package/build/visually-hidden/types.js.map +1 -0
  129. package/build-module/autocomplete/get-default-use-items.js +3 -2
  130. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  131. package/build-module/autocomplete/index.js +3 -2
  132. package/build-module/autocomplete/index.js.map +1 -1
  133. package/build-module/border-control/border-control/hook.js.map +1 -1
  134. package/build-module/box-control/index.js +1 -1
  135. package/build-module/box-control/index.js.map +1 -1
  136. package/build-module/color-picker/hex-input.js +4 -3
  137. package/build-module/color-picker/hex-input.js.map +1 -1
  138. package/build-module/color-picker/index.native.js +36 -35
  139. package/build-module/color-picker/index.native.js.map +1 -1
  140. package/build-module/color-picker/input-with-slider.js +3 -1
  141. package/build-module/color-picker/input-with-slider.js.map +1 -1
  142. package/build-module/color-picker/styles.js +23 -40
  143. package/build-module/color-picker/styles.js.map +1 -1
  144. package/build-module/color-picker/use-deprecated-props.js +22 -31
  145. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  146. package/build-module/combobox-control/index.js +14 -7
  147. package/build-module/combobox-control/index.js.map +1 -1
  148. package/build-module/combobox-control/styles.js +27 -0
  149. package/build-module/combobox-control/styles.js.map +1 -0
  150. package/build-module/dropdown-menu/index.js +5 -4
  151. package/build-module/dropdown-menu/index.js.map +1 -1
  152. package/build-module/dropdown-menu/index.native.js +5 -4
  153. package/build-module/dropdown-menu/index.native.js.map +1 -1
  154. package/build-module/elevation/hook.js +5 -5
  155. package/build-module/elevation/hook.js.map +1 -1
  156. package/build-module/external-link/index.js +1 -2
  157. package/build-module/external-link/index.js.map +1 -1
  158. package/build-module/focal-point-picker/grid.js +2 -6
  159. package/build-module/focal-point-picker/grid.js.map +1 -1
  160. package/build-module/focal-point-picker/index.native.js +8 -8
  161. package/build-module/focal-point-picker/index.native.js.map +1 -1
  162. package/build-module/focal-point-picker/tooltip/index.native.js +11 -12
  163. package/build-module/focal-point-picker/tooltip/index.native.js.map +1 -1
  164. package/build-module/form-token-field/index.js +20 -6
  165. package/build-module/form-token-field/index.js.map +1 -1
  166. package/build-module/form-token-field/styles.js +28 -0
  167. package/build-module/form-token-field/styles.js.map +1 -0
  168. package/build-module/form-token-field/suggestions-list.js +2 -7
  169. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  170. package/build-module/grid/component.js +7 -8
  171. package/build-module/grid/component.js.map +1 -1
  172. package/build-module/grid/hook.js +1 -5
  173. package/build-module/grid/hook.js.map +1 -1
  174. package/build-module/grid/index.js.map +1 -1
  175. package/build-module/grid/utils.js +3 -8
  176. package/build-module/grid/utils.js.map +1 -1
  177. package/build-module/h-stack/component.js +3 -7
  178. package/build-module/h-stack/component.js.map +1 -1
  179. package/build-module/h-stack/hook.js +10 -12
  180. package/build-module/h-stack/hook.js.map +1 -1
  181. package/build-module/h-stack/index.js.map +1 -1
  182. package/build-module/h-stack/utils.js +7 -19
  183. package/build-module/h-stack/utils.js.map +1 -1
  184. package/build-module/icon/index.js.map +1 -1
  185. package/build-module/menu-item/index.js +1 -2
  186. package/build-module/menu-item/index.js.map +1 -1
  187. package/build-module/mobile/focal-point-settings-panel/index.native.js +2 -2
  188. package/build-module/mobile/focal-point-settings-panel/index.native.js.map +1 -1
  189. package/build-module/mobile/image/index.native.js +3 -2
  190. package/build-module/mobile/image/index.native.js.map +1 -1
  191. package/build-module/modal/index.js +19 -5
  192. package/build-module/modal/index.js.map +1 -1
  193. package/build-module/navigation/index.js +4 -1
  194. package/build-module/navigation/index.js.map +1 -1
  195. package/build-module/navigation/item/base.js +3 -0
  196. package/build-module/navigation/item/base.js.map +1 -1
  197. package/build-module/popover/index.js +4 -4
  198. package/build-module/popover/index.js.map +1 -1
  199. package/build-module/range-control/index.js +54 -40
  200. package/build-module/range-control/index.js.map +1 -1
  201. package/build-module/range-control/input-range.js +5 -6
  202. package/build-module/range-control/input-range.js.map +1 -1
  203. package/build-module/range-control/mark.js +5 -6
  204. package/build-module/range-control/mark.js.map +1 -1
  205. package/build-module/range-control/rail.js +10 -15
  206. package/build-module/range-control/rail.js.map +1 -1
  207. package/build-module/range-control/styles/range-control-styles.js +62 -64
  208. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  209. package/build-module/range-control/tooltip.js +5 -6
  210. package/build-module/range-control/tooltip.js.map +1 -1
  211. package/build-module/range-control/types.js +2 -0
  212. package/build-module/range-control/types.js.map +1 -0
  213. package/build-module/range-control/utils.js +22 -29
  214. package/build-module/range-control/utils.js.map +1 -1
  215. package/build-module/resizable-box/resize-tooltip/utils.js +2 -6
  216. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  217. package/build-module/scrollable/component.js +7 -8
  218. package/build-module/scrollable/component.js.map +1 -1
  219. package/build-module/scrollable/hook.js +0 -8
  220. package/build-module/scrollable/hook.js.map +1 -1
  221. package/build-module/scrollable/index.js.map +1 -1
  222. package/build-module/scrollable/styles.js +7 -7
  223. package/build-module/scrollable/styles.js.map +1 -1
  224. package/build-module/shortcut/index.js +2 -7
  225. package/build-module/shortcut/index.js.map +1 -1
  226. package/build-module/slot-fill/index.native.js +6 -7
  227. package/build-module/slot-fill/index.native.js.map +1 -1
  228. package/build-module/slot-fill/provider.js +4 -7
  229. package/build-module/slot-fill/provider.js.map +1 -1
  230. package/build-module/slot-fill/slot.js +4 -7
  231. package/build-module/slot-fill/slot.js.map +1 -1
  232. package/build-module/spacer/component.js.map +1 -1
  233. package/build-module/spacer/hook.js +2 -2
  234. package/build-module/spacer/hook.js.map +1 -1
  235. package/build-module/spacer/index.js.map +1 -1
  236. package/build-module/text-highlight/index.js +23 -6
  237. package/build-module/text-highlight/index.js.map +1 -1
  238. package/build-module/text-highlight/types.js +2 -0
  239. package/build-module/text-highlight/types.js.map +1 -0
  240. package/build-module/tip/index.js +6 -10
  241. package/build-module/tip/index.js.map +1 -1
  242. package/build-module/tip/types.js +2 -0
  243. package/build-module/tip/types.js.map +1 -0
  244. package/build-module/toolbar-group/index.js +3 -2
  245. package/build-module/toolbar-group/index.js.map +1 -1
  246. package/build-module/tree-select/index.js +3 -3
  247. package/build-module/tree-select/index.js.map +1 -1
  248. package/build-module/ui/utils/get-valid-children.js.map +1 -1
  249. package/build-module/visually-hidden/component.js +12 -13
  250. package/build-module/visually-hidden/component.js.map +1 -1
  251. package/build-module/visually-hidden/index.js.map +1 -1
  252. package/build-module/visually-hidden/styles.js +3 -1
  253. package/build-module/visually-hidden/styles.js.map +1 -1
  254. package/build-module/visually-hidden/types.js +2 -0
  255. package/build-module/visually-hidden/types.js.map +1 -0
  256. package/build-style/style-rtl.css +13 -19
  257. package/build-style/style.css +13 -19
  258. package/build-types/border-control/border-control/hook.d.ts +1 -1
  259. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  260. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  261. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  262. package/build-types/color-picker/styles.d.ts +30 -31
  263. package/build-types/color-picker/styles.d.ts.map +1 -1
  264. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  265. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  266. package/build-types/external-link/index.d.ts.map +1 -1
  267. package/build-types/form-token-field/index.d.ts.map +1 -1
  268. package/build-types/form-token-field/styles.d.ts +14 -0
  269. package/build-types/form-token-field/styles.d.ts.map +1 -0
  270. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  271. package/build-types/form-token-field/types.d.ts +7 -0
  272. package/build-types/form-token-field/types.d.ts.map +1 -1
  273. package/build-types/grid/component.d.ts +3 -3
  274. package/build-types/grid/component.d.ts.map +1 -1
  275. package/build-types/grid/hook.d.ts +5 -2
  276. package/build-types/grid/hook.d.ts.map +1 -1
  277. package/build-types/grid/index.d.ts +2 -2
  278. package/build-types/grid/index.d.ts.map +1 -1
  279. package/build-types/grid/stories/index.d.ts +9 -0
  280. package/build-types/grid/stories/index.d.ts.map +1 -0
  281. package/build-types/grid/test/grid.d.ts +2 -0
  282. package/build-types/grid/test/grid.d.ts.map +1 -0
  283. package/build-types/grid/types.d.ts +16 -15
  284. package/build-types/grid/types.d.ts.map +1 -1
  285. package/build-types/grid/utils.d.ts +50 -69
  286. package/build-types/grid/utils.d.ts.map +1 -1
  287. package/build-types/h-stack/component.d.ts +3 -2
  288. package/build-types/h-stack/component.d.ts.map +1 -1
  289. package/build-types/h-stack/hook.d.ts +5 -3
  290. package/build-types/h-stack/hook.d.ts.map +1 -1
  291. package/build-types/h-stack/index.d.ts +2 -2
  292. package/build-types/h-stack/index.d.ts.map +1 -1
  293. package/build-types/h-stack/stories/index.d.ts +9 -0
  294. package/build-types/h-stack/stories/index.d.ts.map +1 -0
  295. package/build-types/h-stack/test/index.d.ts +2 -0
  296. package/build-types/h-stack/test/index.d.ts.map +1 -0
  297. package/build-types/h-stack/utils.d.ts +8 -4
  298. package/build-types/h-stack/utils.d.ts.map +1 -1
  299. package/build-types/icon/index.d.ts +1 -1
  300. package/build-types/icon/index.d.ts.map +1 -1
  301. package/build-types/menu-item/index.d.ts.map +1 -1
  302. package/build-types/popover/index.d.ts.map +1 -1
  303. package/build-types/range-control/index.d.ts +54 -29
  304. package/build-types/range-control/index.d.ts.map +1 -1
  305. package/build-types/range-control/input-range.d.ts +7 -10
  306. package/build-types/range-control/input-range.d.ts.map +1 -1
  307. package/build-types/range-control/mark.d.ts +4 -7
  308. package/build-types/range-control/mark.d.ts.map +1 -1
  309. package/build-types/range-control/rail.d.ts +4 -9
  310. package/build-types/range-control/rail.d.ts.map +1 -1
  311. package/build-types/range-control/stories/index.d.ts +48 -0
  312. package/build-types/range-control/stories/index.d.ts.map +1 -0
  313. package/build-types/range-control/styles/range-control-styles.d.ts +32 -40
  314. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  315. package/build-types/range-control/test/index.d.ts +2 -0
  316. package/build-types/range-control/test/index.d.ts.map +1 -0
  317. package/build-types/range-control/tooltip.d.ts +4 -11
  318. package/build-types/range-control/tooltip.d.ts.map +1 -1
  319. package/build-types/range-control/types.d.ts +302 -0
  320. package/build-types/range-control/types.d.ts.map +1 -0
  321. package/build-types/range-control/utils.d.ts +15 -33
  322. package/build-types/range-control/utils.d.ts.map +1 -1
  323. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  324. package/build-types/scrollable/component.d.ts +3 -3
  325. package/build-types/scrollable/component.d.ts.map +1 -1
  326. package/build-types/scrollable/hook.d.ts +5 -2
  327. package/build-types/scrollable/hook.d.ts.map +1 -1
  328. package/build-types/scrollable/index.d.ts +2 -2
  329. package/build-types/scrollable/index.d.ts.map +1 -1
  330. package/build-types/scrollable/stories/index.d.ts +9 -0
  331. package/build-types/scrollable/stories/index.d.ts.map +1 -0
  332. package/build-types/scrollable/styles.d.ts +7 -7
  333. package/build-types/scrollable/styles.d.ts.map +1 -1
  334. package/build-types/scrollable/test/index.d.ts +2 -0
  335. package/build-types/scrollable/test/index.d.ts.map +1 -0
  336. package/build-types/scrollable/types.d.ts +9 -6
  337. package/build-types/scrollable/types.d.ts.map +1 -1
  338. package/build-types/shortcut/index.d.ts.map +1 -1
  339. package/build-types/slot-fill/provider.d.ts.map +1 -1
  340. package/build-types/slot-fill/slot.d.ts.map +1 -1
  341. package/build-types/spacer/component.d.ts +2 -2
  342. package/build-types/spacer/component.d.ts.map +1 -1
  343. package/build-types/spacer/hook.d.ts +2 -2
  344. package/build-types/spacer/hook.d.ts.map +1 -1
  345. package/build-types/spacer/index.d.ts +1 -1
  346. package/build-types/spacer/index.d.ts.map +1 -1
  347. package/build-types/spacer/test/index.d.ts +2 -0
  348. package/build-types/spacer/test/index.d.ts.map +1 -0
  349. package/build-types/spacer/types.d.ts +41 -29
  350. package/build-types/spacer/types.d.ts.map +1 -1
  351. package/build-types/text-highlight/index.d.ts +23 -0
  352. package/build-types/text-highlight/index.d.ts.map +1 -0
  353. package/build-types/text-highlight/stories/index.d.ts +12 -0
  354. package/build-types/text-highlight/stories/index.d.ts.map +1 -0
  355. package/build-types/text-highlight/test/index.d.ts +2 -0
  356. package/build-types/text-highlight/test/index.d.ts.map +1 -0
  357. package/build-types/text-highlight/types.d.ts +17 -0
  358. package/build-types/text-highlight/types.d.ts.map +1 -0
  359. package/build-types/tip/index.d.ts +5 -14
  360. package/build-types/tip/index.d.ts.map +1 -1
  361. package/build-types/tip/stories/index.d.ts +12 -0
  362. package/build-types/tip/stories/index.d.ts.map +1 -0
  363. package/build-types/tip/types.d.ts +11 -0
  364. package/build-types/tip/types.d.ts.map +1 -0
  365. package/build-types/ui/form-group/form-group.d.ts +1 -1
  366. package/build-types/ui/form-group/types.d.ts +1 -1
  367. package/build-types/ui/form-group/types.d.ts.map +1 -1
  368. package/build-types/ui/form-group/use-form-group.d.ts +3 -3
  369. package/build-types/ui/utils/get-valid-children.d.ts +2 -2
  370. package/build-types/ui/utils/get-valid-children.d.ts.map +1 -1
  371. package/build-types/visually-hidden/component.d.ts +8 -10
  372. package/build-types/visually-hidden/component.d.ts.map +1 -1
  373. package/build-types/visually-hidden/index.d.ts +1 -1
  374. package/build-types/visually-hidden/index.d.ts.map +1 -1
  375. package/build-types/visually-hidden/stories/index.d.ts +14 -0
  376. package/build-types/visually-hidden/stories/index.d.ts.map +1 -0
  377. package/build-types/visually-hidden/styles.d.ts +5 -2
  378. package/build-types/visually-hidden/styles.d.ts.map +1 -1
  379. package/build-types/visually-hidden/test/index.d.ts +2 -0
  380. package/build-types/visually-hidden/test/index.d.ts.map +1 -0
  381. package/build-types/visually-hidden/types.d.ts +11 -0
  382. package/build-types/visually-hidden/types.d.ts.map +1 -0
  383. package/package.json +17 -17
  384. package/src/autocomplete/get-default-use-items.js +3 -2
  385. package/src/autocomplete/index.js +3 -2
  386. package/src/border-control/border-control/hook.ts +1 -1
  387. package/src/box-control/index.js +1 -1
  388. package/src/button/README.md +1 -1
  389. package/src/color-picker/hex-input.tsx +3 -2
  390. package/src/color-picker/index.native.js +20 -27
  391. package/src/color-picker/input-with-slider.tsx +2 -0
  392. package/src/color-picker/styles.ts +0 -5
  393. package/src/color-picker/use-deprecated-props.ts +24 -43
  394. package/src/combobox-control/index.js +15 -7
  395. package/src/combobox-control/stories/index.js +3 -2
  396. package/src/combobox-control/style.scss +1 -1
  397. package/src/combobox-control/styles.ts +27 -0
  398. package/src/dropdown-menu/index.js +3 -4
  399. package/src/dropdown-menu/index.native.js +3 -5
  400. package/src/elevation/hook.js +3 -3
  401. package/src/external-link/index.tsx +10 -4
  402. package/src/focal-point-picker/grid.js +2 -5
  403. package/src/focal-point-picker/index.native.js +8 -8
  404. package/src/focal-point-picker/tooltip/index.native.js +10 -11
  405. package/src/form-token-field/index.tsx +45 -24
  406. package/src/form-token-field/style.scss +2 -7
  407. package/src/form-token-field/styles.ts +32 -0
  408. package/src/form-token-field/suggestions-list.tsx +2 -4
  409. package/src/form-token-field/types.ts +7 -0
  410. package/src/grid/README.md +33 -19
  411. package/src/grid/{component.js → component.tsx} +13 -9
  412. package/src/grid/{hook.js → hook.ts} +5 -5
  413. package/src/grid/{index.js → index.ts} +0 -0
  414. package/src/grid/stories/index.tsx +72 -0
  415. package/src/grid/test/{grid.js → grid.tsx} +4 -4
  416. package/src/grid/types.ts +16 -17
  417. package/src/grid/{utils.js → utils.ts} +9 -7
  418. package/src/guide/style.scss +1 -0
  419. package/src/h-stack/{component.js → component.tsx} +8 -8
  420. package/src/h-stack/{hook.js → hook.tsx} +21 -16
  421. package/src/h-stack/{index.js → index.ts} +0 -0
  422. package/src/h-stack/stories/index.tsx +92 -0
  423. package/src/h-stack/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  424. package/src/h-stack/test/{index.js → index.tsx} +0 -0
  425. package/src/h-stack/{utils.js → utils.ts} +14 -14
  426. package/src/higher-order/navigate-regions/README.md +4 -1
  427. package/src/icon/index.tsx +1 -1
  428. package/src/menu-item/index.js +1 -2
  429. package/src/mobile/focal-point-settings-panel/index.native.js +2 -2
  430. package/src/mobile/image/index.native.js +3 -2
  431. package/src/modal/index.js +21 -2
  432. package/src/modal/stories/index.js +17 -1
  433. package/src/modal/style.scss +9 -18
  434. package/src/navigation/index.js +3 -0
  435. package/src/navigation/item/base.js +2 -1
  436. package/src/popover/README.md +2 -2
  437. package/src/popover/index.js +7 -4
  438. package/src/range-control/README.md +107 -79
  439. package/src/range-control/{index.js → index.tsx} +78 -48
  440. package/src/range-control/{input-range.js → input-range.tsx} +11 -7
  441. package/src/range-control/{mark.js → mark.tsx} +15 -9
  442. package/src/range-control/{rail.js → rail.tsx} +40 -23
  443. package/src/range-control/stories/index.tsx +244 -0
  444. package/src/range-control/styles/{range-control-styles.js → range-control-styles.ts} +28 -24
  445. package/src/range-control/test/index.tsx +311 -0
  446. package/src/range-control/{tooltip.js → tooltip.tsx} +19 -14
  447. package/src/range-control/types.ts +326 -0
  448. package/src/range-control/utils.ts +132 -0
  449. package/src/resizable-box/resize-tooltip/utils.ts +2 -3
  450. package/src/scrollable/README.md +14 -8
  451. package/src/scrollable/{component.js → component.tsx} +13 -10
  452. package/src/scrollable/{hook.js → hook.ts} +5 -7
  453. package/src/scrollable/{index.js → index.ts} +0 -0
  454. package/src/scrollable/stories/{index.js → index.tsx} +29 -34
  455. package/src/scrollable/{styles.js → styles.ts} +0 -0
  456. package/src/scrollable/test/__snapshots__/{index.js.snap → index.tsx.snap} +1 -0
  457. package/src/scrollable/test/index.tsx +34 -0
  458. package/src/scrollable/types.ts +10 -5
  459. package/src/select-control/test/select-control.tsx +22 -15
  460. package/src/shortcut/index.js +2 -7
  461. package/src/slot-fill/index.native.js +2 -7
  462. package/src/slot-fill/provider.js +3 -7
  463. package/src/slot-fill/slot.js +21 -24
  464. package/src/spacer/README.md +43 -37
  465. package/src/spacer/component.tsx +2 -2
  466. package/src/spacer/hook.ts +4 -2
  467. package/src/spacer/index.ts +1 -1
  468. package/src/spacer/test/__snapshots__/{index.js.snap → index.tsx.snap} +1 -0
  469. package/src/spacer/test/index.tsx +149 -0
  470. package/src/spacer/types.ts +41 -29
  471. package/src/tab-panel/README.md +1 -1
  472. package/src/text-highlight/README.md +6 -6
  473. package/src/text-highlight/index.tsx +49 -0
  474. package/src/text-highlight/stories/index.tsx +33 -0
  475. package/src/text-highlight/test/index.tsx +93 -0
  476. package/src/text-highlight/types.ts +16 -0
  477. package/src/tip/index.tsx +22 -0
  478. package/src/tip/stories/index.tsx +33 -0
  479. package/src/tip/types.ts +11 -0
  480. package/src/toolbar-group/index.js +1 -2
  481. package/src/tree-select/index.tsx +3 -3
  482. package/src/ui/form-group/types.ts +1 -1
  483. package/src/ui/utils/get-valid-children.ts +4 -2
  484. package/src/visually-hidden/{component.js → component.tsx} +23 -15
  485. package/src/visually-hidden/{index.js → index.ts} +0 -0
  486. package/src/visually-hidden/stories/index.tsx +66 -0
  487. package/src/visually-hidden/{styles.js → styles.ts} +6 -2
  488. package/src/visually-hidden/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  489. package/src/visually-hidden/test/index.tsx +17 -0
  490. package/src/visually-hidden/types.ts +11 -0
  491. package/tsconfig.json +1 -0
  492. package/tsconfig.tsbuildinfo +1 -1
  493. package/src/grid/stories/index.js +0 -49
  494. package/src/h-stack/stories/index.js +0 -22
  495. package/src/range-control/stories/index.js +0 -180
  496. package/src/range-control/test/index.js +0 -320
  497. package/src/range-control/utils.js +0 -131
  498. package/src/scrollable/test/index.js +0 -31
  499. package/src/spacer/test/index.js +0 -146
  500. package/src/text-highlight/index.js +0 -28
  501. package/src/text-highlight/stories/index.js +0 -28
  502. package/src/text-highlight/test/index.js +0 -120
  503. package/src/tip/index.js +0 -24
  504. package/src/tip/stories/index.js +0 -26
  505. package/src/visually-hidden/stories/index.js +0 -42
  506. package/src/visually-hidden/test/index.js +0 -19
package/CHANGELOG.md CHANGED
@@ -2,15 +2,53 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 19.15.0 (2022-07-13)
6
+
7
+ ### Bug Fix
8
+
9
+ - `BoxControl`: Change ARIA role from `region` to `group` to avoid unwanted ARIA landmark regions ([#42094](https://github.com/WordPress/gutenberg/pull/42094)).
10
+ - `FocalPointPicker`, `FormTokenField`, `ResizableBox`: Fixed SSR breakage ([#42248](https://github.com/WordPress/gutenberg/pull/42248)).
11
+ - `ComboboxControl`: use custom prefix when generating the instanceId ([#42134](https://github.com/WordPress/gutenberg/pull/42134).
12
+ - `Popover`: pass missing anchor ref to the `getAnchorRect` callback prop. ([#42076](https://github.com/WordPress/gutenberg/pull/42076)).
13
+ - `Popover`: call `getAnchorRect` callback prop even if `anchorRefFallback` has no value. ([#42329](https://github.com/WordPress/gutenberg/pull/42329)).
14
+
15
+ ### Internal
16
+
17
+ - `Grid`: Convert to TypeScript ([#41923](https://github.com/WordPress/gutenberg/pull/41923)).
18
+ - `TextHighlight`: Convert to TypeScript ([#41698](https://github.com/WordPress/gutenberg/pull/41698)).
19
+ - `Tip`: Convert to TypeScript ([#42262](https://github.com/WordPress/gutenberg/pull/42262)).
20
+ - `Scrollable`: Convert to TypeScript ([#42016](https://github.com/WordPress/gutenberg/pull/42016)).
21
+ - `Spacer`: Complete TypeScript migration ([#42013](https://github.com/WordPress/gutenberg/pull/42013)).
22
+ - `VisuallyHidden`: Convert to TypeScript ([#42220](https://github.com/WordPress/gutenberg/pull/42220)).
23
+ - `TreeSelect`: Refactor away from `_.repeat()` ([#42070](https://github.com/WordPress/gutenberg/pull/42070/)).
24
+ - `FocalPointPicker` updated to satisfy `react/exhaustive-deps` eslint rule ([#41520](https://github.com/WordPress/gutenberg/pull/41520)).
25
+ - `ColorPicker` updated to satisfy `react/exhaustive-deps` eslint rule ([#41294](https://github.com/WordPress/gutenberg/pull/41294)).
26
+ - `Slot`/`Fill`: Refactor away from Lodash ([#42153](https://github.com/WordPress/gutenberg/pull/42153/)).
27
+ - `ComboboxControl`: Refactor away from `_.deburr()` ([#42169](https://github.com/WordPress/gutenberg/pull/42169/)).
28
+ - `FormTokenField`: Refactor away from `_.identity()` ([#42215](https://github.com/WordPress/gutenberg/pull/42215/)).
29
+ - `SelectControl`: Use roles and `@testing-library/user-event` in unit tests ([#42308](https://github.com/WordPress/gutenberg/pull/42308)).
30
+ - `DropdownMenu`: Refactor away from Lodash ([#42218](https://github.com/WordPress/gutenberg/pull/42218/)).
31
+ - `ToolbarGroup`: Refactor away from `_.flatMap()` ([#42223](https://github.com/WordPress/gutenberg/pull/42223/)).
32
+ - `TreeSelect`: Refactor away from `_.flatMap()` ([#42223](https://github.com/WordPress/gutenberg/pull/42223/)).
33
+ - `Autocomplete`: Refactor away from `_.deburr()` ([#42266](https://github.com/WordPress/gutenberg/pull/42266/)).
34
+ - `MenuItem`: Refactor away from `_.isString()` ([#42268](https://github.com/WordPress/gutenberg/pull/42268/)).
35
+ - `Shortcut`: Refactor away from `_.isString()` ([#42268](https://github.com/WordPress/gutenberg/pull/42268/)).
36
+ - `Shortcut`: Refactor away from `_.isObject()` ([#42336](https://github.com/WordPress/gutenberg/pull/42336/)).
37
+ - `RangeControl`: Convert to TypeScript ([#40535](https://github.com/WordPress/gutenberg/pull/40535)).
38
+ - `ExternalLink`: Refactor away from Lodash ([#42341](https://github.com/WordPress/gutenberg/pull/42341/)).
39
+ - `Navigation`: updated to satisfy `react/exhaustive-deps` eslint rule ([#41612](https://github.com/WordPress/gutenberg/pull/41612))
40
+
5
41
  ## 19.14.0 (2022-06-29)
6
42
 
7
43
  ### Bug Fix
8
44
 
9
45
  - `ColorPicker`: Remove horizontal scrollbar when using HSL or RGB color input types. ([#41646](https://github.com/WordPress/gutenberg/pull/41646))
46
+ - `ColorPicker`: Widen hex input field for mobile. ([#42004](https://github.com/WordPress/gutenberg/pull/42004))
10
47
 
11
48
  ### Enhancements
12
49
 
13
50
  - Wrapped `ColorIndicator` in a `forwardRef` call ([#41587](https://github.com/WordPress/gutenberg/pull/41587)).
51
+ - `ComboboxControl` & `FormTokenField`: Add `__next36pxDefaultSize` flag for larger default size ([#40746](https://github.com/WordPress/gutenberg/pull/40746)).
14
52
  - `BorderControl`: Improve TypeScript support. ([#41843](https://github.com/WordPress/gutenberg/pull/41843)).
15
53
  - `DatePicker`: highlight today's date. ([#41647](https://github.com/WordPress/gutenberg/pull/41647/)).
16
54
  - Allow automatic repositioning of `BorderBoxControl` and `ColorPalette` popovers within smaller viewports ([#41930](https://github.com/WordPress/gutenberg/pull/41930)).
@@ -38,7 +76,7 @@
38
76
  - `CustomGradientPicker`: Refactor away from Lodash ([#41901](https://github.com/WordPress/gutenberg/pull/41901/)).
39
77
  - `SegmentedControl`: Refactor away from `_.values()` ([#41905](https://github.com/WordPress/gutenberg/pull/41905/)).
40
78
  - `DimensionControl`: Refactor docs away from `_.partialRight()` ([#41909](https://github.com/WordPress/gutenberg/pull/41909/)).
41
- - `NavigationItem` updated to ignore `react/exhuastive-deps` eslint rule ([#41639](https://github.com/WordPress/gutenberg/pull/41639)).
79
+ - `NavigationItem` updated to ignore `react/exhaustive-deps` eslint rule ([#41639](https://github.com/WordPress/gutenberg/pull/41639)).
42
80
 
43
81
  ## 19.13.0 (2022-06-15)
44
82
 
@@ -57,18 +95,18 @@
57
95
  ### Internal
58
96
 
59
97
  - `FormTokenField`: Convert to TypeScript and refactor to functional component ([#41216](https://github.com/WordPress/gutenberg/pull/41216)).
60
- - `Draggable`: updated to satisfy `react/exhuastive-deps` eslint rule ([#41499](https://github.com/WordPress/gutenberg/pull/41499))
98
+ - `Draggable`: updated to satisfy `react/exhaustive-deps` eslint rule ([#41499](https://github.com/WordPress/gutenberg/pull/41499))
61
99
  - `RadioControl`: Convert to TypeScript ([#41568](https://github.com/WordPress/gutenberg/pull/41568)).
62
- - `Flex` updated to satisfy `react/exhuastive-deps` eslint rule ([#41507](https://github.com/WordPress/gutenberg/pull/41507)).
63
- - `CustomGradientBar` updated to satisfy `react/exhuastive-deps` eslint rule ([#41463](https://github.com/WordPress/gutenberg/pull/41463))
100
+ - `Flex` updated to satisfy `react/exhaustive-deps` eslint rule ([#41507](https://github.com/WordPress/gutenberg/pull/41507)).
101
+ - `CustomGradientBar` updated to satisfy `react/exhaustive-deps` eslint rule ([#41463](https://github.com/WordPress/gutenberg/pull/41463))
64
102
  - `TreeSelect`: Convert to TypeScript ([#41536](https://github.com/WordPress/gutenberg/pull/41536)).
65
- - `FontSizePicker`: updated to satisfy `react/exhuastive-deps` eslint rule ([#41600](https://github.com/WordPress/gutenberg/pull/41600)).
103
+ - `FontSizePicker`: updated to satisfy `react/exhaustive-deps` eslint rule ([#41600](https://github.com/WordPress/gutenberg/pull/41600)).
66
104
  - `ZStack`: Convert component story to TypeScript and add inline docs ([#41694](https://github.com/WordPress/gutenberg/pull/41694)).
67
105
  - `Dropdown`: Make sure cleanup (closing the dropdown) only runs when the menu has actually been opened.
68
106
  - Enhance the TypeScript migration guidelines ([#41669](https://github.com/WordPress/gutenberg/pull/41669)).
69
107
  - `ExternalLink`: Convert to TypeScript ([#41681](https://github.com/WordPress/gutenberg/pull/41681)).
70
- - `InputControl` updated to satisfy `react/exhuastive-deps` eslint rule ([#41601](https://github.com/WordPress/gutenberg/pull/41601))
71
- - `Modal`: updated to satisfy `react/exhuastive-deps` eslint rule ([#41610](https://github.com/WordPress/gutenberg/pull/41610))
108
+ - `InputControl` updated to satisfy `react/exhaustive-deps` eslint rule ([#41601](https://github.com/WordPress/gutenberg/pull/41601))
109
+ - `Modal`: updated to satisfy `react/exhaustive-deps` eslint rule ([#41610](https://github.com/WordPress/gutenberg/pull/41610))
72
110
 
73
111
  ### Experimental
74
112
 
@@ -92,8 +130,8 @@
92
130
 
93
131
  ### Internal
94
132
 
95
- - `AlignmentMatrixControl` updated to satisfy `react/exhuastive-deps` eslint rule ([#41167](https://github.com/WordPress/gutenberg/pull/41167))
96
- - `BorderControl` updated to satisfy `react/exhuastive-deps` eslint rule ([#41259](https://github.com/WordPress/gutenberg/pull/41259))
133
+ - `AlignmentMatrixControl` updated to satisfy `react/exhaustive-deps` eslint rule ([#41167](https://github.com/WordPress/gutenberg/pull/41167))
134
+ - `BorderControl` updated to satisfy `react/exhaustive-deps` eslint rule ([#41259](https://github.com/WordPress/gutenberg/pull/41259))
97
135
  - `CheckboxControl`: Add unit tests ([#41165](https://github.com/WordPress/gutenberg/pull/41165)).
98
136
  - `BorderBoxControl`: fix some layout misalignments, especially for RTL users ([#41254](https://github.com/WordPress/gutenberg/pull/41254)).
99
137
  - `TimePicker`: Update unit tests to use `@testing-library/user-event` ([#41270](https://github.com/WordPress/gutenberg/pull/41270)).
@@ -101,9 +139,9 @@
101
139
  - `TextareaControl`: Convert to TypeScript ([#41215](https://github.com/WordPress/gutenberg/pull/41215)).
102
140
  - `BoxControl`: Update unit tests to use `@testing-library/user-event` ([#41422](https://github.com/WordPress/gutenberg/pull/41422)).
103
141
  - `Surface`: Convert to TypeScript ([#41212](https://github.com/WordPress/gutenberg/pull/41212)).
104
- - `Autocomplete` updated to satisfy `react/exhuastive-deps` eslint rule ([#41382](https://github.com/WordPress/gutenberg/pull/41382))
105
- - `Dropdown` updated to satisfy `react/exhuastive-deps` eslint rule ([#41505](https://github.com/WordPress/gutenberg/pull/41505))
106
- - `DateDayPicker` updated to satisfy `react/exhuastive-deps` eslint rule ([#41470](https://github.com/WordPress/gutenberg/pull/41470)).
142
+ - `Autocomplete` updated to satisfy `react/exhaustive-deps` eslint rule ([#41382](https://github.com/WordPress/gutenberg/pull/41382))
143
+ - `Dropdown` updated to satisfy `react/exhaustive-deps` eslint rule ([#41505](https://github.com/WordPress/gutenberg/pull/41505))
144
+ - `DateDayPicker` updated to satisfy `react/exhaustive-deps` eslint rule ([#41470](https://github.com/WordPress/gutenberg/pull/41470)).
107
145
 
108
146
  ### Experimental
109
147
 
@@ -141,6 +179,7 @@
141
179
 
142
180
  - `InputControl`: Add `__next36pxDefaultSize` flag for larger default size ([#40622](https://github.com/WordPress/gutenberg/pull/40622)).
143
181
  - `UnitControl`: Add `__next36pxDefaultSize` flag for larger default size ([#40627](https://github.com/WordPress/gutenberg/pull/40627)).
182
+ - `Modal` design adjustments: Blur elements outside of the modal, increase modal title size, use larger close icon, remove header border when modal contents are scrolled. ([#40781](https://github.com/WordPress/gutenberg/pull/40781)).
144
183
  - `SelectControl`: Improved TypeScript support ([#40737](https://github.com/WordPress/gutenberg/pull/40737)).
145
184
  - `ToggleControlGroup`: Switch to internal `Icon` component for dashicon support ([40717](https://github.com/WordPress/gutenberg/pull/40717)).
146
185
  - Improve `ToolsPanel` accessibility. ([#40716](https://github.com/WordPress/gutenberg/pull/40716))
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,6 +9,8 @@ exports.default = getDefaultUseItems;
7
9
 
8
10
  var _lodash = require("lodash");
9
11
 
12
+ var _removeAccents = _interopRequireDefault(require("remove-accents"));
13
+
10
14
  var _element = require("@wordpress/element");
11
15
 
12
16
  /**
@@ -32,7 +36,7 @@ function filterOptions(search) {
32
36
  keywords = [...keywords, option.label];
33
37
  }
34
38
 
35
- const isMatch = keywords.some(keyword => search.test((0, _lodash.deburr)(keyword)));
39
+ const isMatch = keywords.some(keyword => search.test((0, _removeAccents.default)(keyword)));
36
40
 
37
41
  if (!isMatch) {
38
42
  continue;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/autocomplete/get-default-use-items.js"],"names":["filterOptions","search","options","maxResults","filtered","i","length","option","keywords","label","isMatch","some","keyword","test","push","getDefaultUseItems","autocompleter","filterValue","items","setItems","isDebounced","loadOptions","promise","Promise","resolve","then","optionsData","canceled","keyedOptions","map","optionData","optionIndex","key","name","value","getOptionLabel","getOptionKeywords","isDisabled","isOptionDisabled","RegExp","cancel"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { debounce, deburr, escapeRegExp } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useState } from '@wordpress/element';\n\nfunction filterOptions( search, options = [], maxResults = 10 ) {\n\tconst filtered = [];\n\tfor ( let i = 0; i < options.length; i++ ) {\n\t\tconst option = options[ i ];\n\n\t\t// Merge label into keywords.\n\t\tlet { keywords = [] } = option;\n\t\tif ( 'string' === typeof option.label ) {\n\t\t\tkeywords = [ ...keywords, option.label ];\n\t\t}\n\n\t\tconst isMatch = keywords.some( ( keyword ) =>\n\t\t\tsearch.test( deburr( keyword ) )\n\t\t);\n\t\tif ( ! isMatch ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfiltered.push( option );\n\n\t\t// Abort early if max reached.\n\t\tif ( filtered.length === maxResults ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn filtered;\n}\n\nexport default function getDefaultUseItems( autocompleter ) {\n\treturn ( filterValue ) => {\n\t\tconst [ items, setItems ] = useState( [] );\n\t\t/*\n\t\t * We support both synchronous and asynchronous retrieval of completer options\n\t\t * but internally treat all as async so we maintain a single, consistent code path.\n\t\t *\n\t\t * Because networks can be slow, and the internet is wonderfully unpredictable,\n\t\t * we don't want two promises updating the state at once. This ensures that only\n\t\t * the most recent promise will act on `optionsData`. This doesn't use the state\n\t\t * because `setState` is batched, and so there's no guarantee that setting\n\t\t * `activePromise` in the state would result in it actually being in `this.state`\n\t\t * before the promise resolves and we check to see if this is the active promise or not.\n\t\t */\n\t\tuseLayoutEffect( () => {\n\t\t\tconst { options, isDebounced } = autocompleter;\n\t\t\tconst loadOptions = debounce(\n\t\t\t\t() => {\n\t\t\t\t\tconst promise = Promise.resolve(\n\t\t\t\t\t\ttypeof options === 'function'\n\t\t\t\t\t\t\t? options( filterValue )\n\t\t\t\t\t\t\t: options\n\t\t\t\t\t).then( ( optionsData ) => {\n\t\t\t\t\t\tif ( promise.canceled ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst keyedOptions = optionsData.map(\n\t\t\t\t\t\t\t( optionData, optionIndex ) => ( {\n\t\t\t\t\t\t\t\tkey: `${ autocompleter.name }-${ optionIndex }`,\n\t\t\t\t\t\t\t\tvalue: optionData,\n\t\t\t\t\t\t\t\tlabel: autocompleter.getOptionLabel(\n\t\t\t\t\t\t\t\t\toptionData\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tkeywords: autocompleter.getOptionKeywords\n\t\t\t\t\t\t\t\t\t? autocompleter.getOptionKeywords(\n\t\t\t\t\t\t\t\t\t\t\toptionData\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: [],\n\t\t\t\t\t\t\t\tisDisabled: autocompleter.isOptionDisabled\n\t\t\t\t\t\t\t\t\t? autocompleter.isOptionDisabled(\n\t\t\t\t\t\t\t\t\t\t\toptionData\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Create a regular expression to filter the options.\n\t\t\t\t\t\tconst search = new RegExp(\n\t\t\t\t\t\t\t'(?:\\\\b|\\\\s|^)' + escapeRegExp( filterValue ),\n\t\t\t\t\t\t\t'i'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetItems( filterOptions( search, keyedOptions ) );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn promise;\n\t\t\t\t},\n\t\t\t\tisDebounced ? 250 : 0\n\t\t\t);\n\n\t\t\tconst promise = loadOptions();\n\n\t\t\treturn () => {\n\t\t\t\tloadOptions.cancel();\n\t\t\t\tif ( promise ) {\n\t\t\t\t\tpromise.canceled = true;\n\t\t\t\t}\n\t\t\t};\n\t\t}, [ filterValue ] );\n\n\t\treturn [ items ];\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/autocomplete/get-default-use-items.js"],"names":["filterOptions","search","options","maxResults","filtered","i","length","option","keywords","label","isMatch","some","keyword","test","push","getDefaultUseItems","autocompleter","filterValue","items","setItems","isDebounced","loadOptions","promise","Promise","resolve","then","optionsData","canceled","keyedOptions","map","optionData","optionIndex","key","name","value","getOptionLabel","getOptionKeywords","isDisabled","isOptionDisabled","RegExp","cancel"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { debounce, escapeRegExp } from 'lodash';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useState } from '@wordpress/element';\n\nfunction filterOptions( search, options = [], maxResults = 10 ) {\n\tconst filtered = [];\n\tfor ( let i = 0; i < options.length; i++ ) {\n\t\tconst option = options[ i ];\n\n\t\t// Merge label into keywords.\n\t\tlet { keywords = [] } = option;\n\t\tif ( 'string' === typeof option.label ) {\n\t\t\tkeywords = [ ...keywords, option.label ];\n\t\t}\n\n\t\tconst isMatch = keywords.some( ( keyword ) =>\n\t\t\tsearch.test( removeAccents( keyword ) )\n\t\t);\n\t\tif ( ! isMatch ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfiltered.push( option );\n\n\t\t// Abort early if max reached.\n\t\tif ( filtered.length === maxResults ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn filtered;\n}\n\nexport default function getDefaultUseItems( autocompleter ) {\n\treturn ( filterValue ) => {\n\t\tconst [ items, setItems ] = useState( [] );\n\t\t/*\n\t\t * We support both synchronous and asynchronous retrieval of completer options\n\t\t * but internally treat all as async so we maintain a single, consistent code path.\n\t\t *\n\t\t * Because networks can be slow, and the internet is wonderfully unpredictable,\n\t\t * we don't want two promises updating the state at once. This ensures that only\n\t\t * the most recent promise will act on `optionsData`. This doesn't use the state\n\t\t * because `setState` is batched, and so there's no guarantee that setting\n\t\t * `activePromise` in the state would result in it actually being in `this.state`\n\t\t * before the promise resolves and we check to see if this is the active promise or not.\n\t\t */\n\t\tuseLayoutEffect( () => {\n\t\t\tconst { options, isDebounced } = autocompleter;\n\t\t\tconst loadOptions = debounce(\n\t\t\t\t() => {\n\t\t\t\t\tconst promise = Promise.resolve(\n\t\t\t\t\t\ttypeof options === 'function'\n\t\t\t\t\t\t\t? options( filterValue )\n\t\t\t\t\t\t\t: options\n\t\t\t\t\t).then( ( optionsData ) => {\n\t\t\t\t\t\tif ( promise.canceled ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst keyedOptions = optionsData.map(\n\t\t\t\t\t\t\t( optionData, optionIndex ) => ( {\n\t\t\t\t\t\t\t\tkey: `${ autocompleter.name }-${ optionIndex }`,\n\t\t\t\t\t\t\t\tvalue: optionData,\n\t\t\t\t\t\t\t\tlabel: autocompleter.getOptionLabel(\n\t\t\t\t\t\t\t\t\toptionData\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tkeywords: autocompleter.getOptionKeywords\n\t\t\t\t\t\t\t\t\t? autocompleter.getOptionKeywords(\n\t\t\t\t\t\t\t\t\t\t\toptionData\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: [],\n\t\t\t\t\t\t\t\tisDisabled: autocompleter.isOptionDisabled\n\t\t\t\t\t\t\t\t\t? autocompleter.isOptionDisabled(\n\t\t\t\t\t\t\t\t\t\t\toptionData\n\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t: false,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Create a regular expression to filter the options.\n\t\t\t\t\t\tconst search = new RegExp(\n\t\t\t\t\t\t\t'(?:\\\\b|\\\\s|^)' + escapeRegExp( filterValue ),\n\t\t\t\t\t\t\t'i'\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetItems( filterOptions( search, keyedOptions ) );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn promise;\n\t\t\t\t},\n\t\t\t\tisDebounced ? 250 : 0\n\t\t\t);\n\n\t\t\tconst promise = loadOptions();\n\n\t\t\treturn () => {\n\t\t\t\tloadOptions.cancel();\n\t\t\t\tif ( promise ) {\n\t\t\t\t\tpromise.canceled = true;\n\t\t\t\t}\n\t\t\t};\n\t\t}, [ filterValue ] );\n\n\t\treturn [ items ];\n\t};\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -10,6 +12,8 @@ var _element = require("@wordpress/element");
10
12
 
11
13
  var _lodash = require("lodash");
12
14
 
15
+ var _removeAccents = _interopRequireDefault(require("remove-accents"));
16
+
13
17
  var _keycodes = require("@wordpress/keycodes");
14
18
 
15
19
  var _i18n = require("@wordpress/i18n");
@@ -265,7 +269,7 @@ function useAutocomplete(_ref) {
265
269
  return;
266
270
  }
267
271
 
268
- const text = (0, _lodash.deburr)(textContent);
272
+ const text = (0, _removeAccents.default)(textContent);
269
273
  const textAfterSelection = (0, _richText.getTextContent)((0, _richText.slice)(record, undefined, (0, _richText.getTextContent)(record).length));
270
274
  const completer = (0, _lodash.find)(completers, _ref2 => {
271
275
  let {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/autocomplete/index.js"],"names":["useAutocomplete","record","onChange","onReplace","completers","contentRef","debouncedSpeak","speak","instanceId","selectedIndex","setSelectedIndex","filteredOptions","setFilteredOptions","filterValue","setFilterValue","autocompleter","setAutocompleter","AutocompleterUI","setAutocompleterUI","backspacing","insertCompletion","replacement","end","start","triggerPrefix","length","toInsert","html","select","option","getOptionCompletion","isDisabled","completion","value","action","undefined","reset","announce","options","onChangeOptions","handleKeyDown","event","current","keyCode","BACKSPACE","defaultPrevented","UP","DOWN","ESCAPE","preventDefault","ENTER","LEFT","RIGHT","textContent","text","textAfterSelection","completer","allowContext","index","lastIndexOf","textWithoutTrigger","slice","tooDistantFromTrigger","mismatch","wordsFromTrigger","split","hasOneTriggerWord","matchingWhileBackspacing","test","safeTrigger","match","RegExp","query","key","selectedKey","className","isExpanded","listBoxId","activeId","hasSelection","onKeyDown","popover","useAutocompleteProps","ref","onKeyDownRef","element","_onKeyDown","addEventListener","removeEventListener","children","Autocomplete","isSelected","props"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { escapeRegExp, find, deburr } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\trenderToString,\n\tuseEffect,\n\tuseState,\n\tuseRef,\n\tuseMemo,\n} from '@wordpress/element';\nimport {\n\tENTER,\n\tESCAPE,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tBACKSPACE,\n} from '@wordpress/keycodes';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseInstanceId,\n\tuseDebounce,\n\tuseMergeRefs,\n\tuseRefEffect,\n} from '@wordpress/compose';\nimport {\n\tcreate,\n\tslice,\n\tinsert,\n\tisCollapsed,\n\tgetTextContent,\n} from '@wordpress/rich-text';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { getAutoCompleterUI } from './autocompleter-ui';\n\n/**\n * A raw completer option.\n *\n * @typedef {*} CompleterOption\n */\n\n/**\n * @callback FnGetOptions\n *\n * @return {(CompleterOption[]|Promise.<CompleterOption[]>)} The completer options or a promise for them.\n */\n\n/**\n * @callback FnGetOptionKeywords\n * @param {CompleterOption} option a completer option.\n *\n * @return {string[]} list of key words to search.\n */\n\n/**\n * @callback FnIsOptionDisabled\n * @param {CompleterOption} option a completer option.\n *\n * @return {string[]} whether or not the given option is disabled.\n */\n\n/**\n * @callback FnGetOptionLabel\n * @param {CompleterOption} option a completer option.\n *\n * @return {(string|Array.<(string|WPElement)>)} list of react components to render.\n */\n\n/**\n * @callback FnAllowContext\n * @param {string} before the string before the auto complete trigger and query.\n * @param {string} after the string after the autocomplete trigger and query.\n *\n * @return {boolean} true if the completer can handle.\n */\n\n/**\n * @typedef {Object} OptionCompletion\n * @property {'insert-at-caret'|'replace'} action the intended placement of the completion.\n * @property {OptionCompletionValue} value the completion value.\n */\n\n/**\n * A completion value.\n *\n * @typedef {(string|WPElement|Object)} OptionCompletionValue\n */\n\n/**\n * @callback FnGetOptionCompletion\n * @param {CompleterOption} value the value of the completer option.\n * @param {string} query the text value of the autocomplete query.\n *\n * @return {(OptionCompletion|OptionCompletionValue)} the completion for the given option. If an\n * \t\t\t\t\t\t\t\t\t\t\t\t\t OptionCompletionValue is returned, the\n * \t\t\t\t\t\t\t\t\t\t\t\t\t completion action defaults to `insert-at-caret`.\n */\n\n/**\n * @typedef {Object} WPCompleter\n * @property {string} name a way to identify a completer, useful for selective overriding.\n * @property {?string} className A class to apply to the popup menu.\n * @property {string} triggerPrefix the prefix that will display the menu.\n * @property {(CompleterOption[]|FnGetOptions)} options the completer options or a function to get them.\n * @property {?FnGetOptionKeywords} getOptionKeywords get the keywords for a given option.\n * @property {?FnIsOptionDisabled} isOptionDisabled get whether or not the given option is disabled.\n * @property {FnGetOptionLabel} getOptionLabel get the label for a given option.\n * @property {?FnAllowContext} allowContext filter the context under which the autocomplete activates.\n * @property {FnGetOptionCompletion} getOptionCompletion get the completion associated with a given option.\n */\n\nfunction useAutocomplete( {\n\trecord,\n\tonChange,\n\tonReplace,\n\tcompleters,\n\tcontentRef,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst instanceId = useInstanceId( useAutocomplete );\n\tconst [ selectedIndex, setSelectedIndex ] = useState( 0 );\n\tconst [ filteredOptions, setFilteredOptions ] = useState( [] );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ autocompleter, setAutocompleter ] = useState( null );\n\tconst [ AutocompleterUI, setAutocompleterUI ] = useState( null );\n\tconst backspacing = useRef( false );\n\n\tfunction insertCompletion( replacement ) {\n\t\tconst end = record.start;\n\t\tconst start =\n\t\t\tend - autocompleter.triggerPrefix.length - filterValue.length;\n\t\tconst toInsert = create( { html: renderToString( replacement ) } );\n\n\t\tonChange( insert( record, toInsert, start, end ) );\n\t}\n\n\tfunction select( option ) {\n\t\tconst { getOptionCompletion } = autocompleter || {};\n\n\t\tif ( option.isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( getOptionCompletion ) {\n\t\t\tconst completion = getOptionCompletion( option.value, filterValue );\n\n\t\t\tconst { action, value } =\n\t\t\t\tundefined === completion.action ||\n\t\t\t\tundefined === completion.value\n\t\t\t\t\t? { action: 'insert-at-caret', value: completion }\n\t\t\t\t\t: completion;\n\n\t\t\tif ( 'replace' === action ) {\n\t\t\t\tonReplace( [ value ] );\n\t\t\t\t// When replacing, the component will unmount, so don't reset\n\t\t\t\t// state (below) on an unmounted component.\n\t\t\t\treturn;\n\t\t\t} else if ( 'insert-at-caret' === action ) {\n\t\t\t\tinsertCompletion( value );\n\t\t\t}\n\t\t}\n\n\t\t// Reset autocomplete state after insertion rather than before\n\t\t// so insertion events don't cause the completion menu to redisplay.\n\t\treset();\n\t}\n\n\tfunction reset() {\n\t\tsetSelectedIndex( 0 );\n\t\tsetFilteredOptions( [] );\n\t\tsetFilterValue( '' );\n\t\tsetAutocompleter( null );\n\t\tsetAutocompleterUI( null );\n\t}\n\n\tfunction announce( options ) {\n\t\tif ( ! debouncedSpeak ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( !! options.length ) {\n\t\t\tdebouncedSpeak(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\toptions.length\n\t\t\t\t\t),\n\t\t\t\t\toptions.length\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else {\n\t\t\tdebouncedSpeak( __( 'No results.' ), 'assertive' );\n\t\t}\n\t}\n\n\t/**\n\t * Load options for an autocompleter.\n\t *\n\t * @param {Array} options\n\t */\n\tfunction onChangeOptions( options ) {\n\t\tsetSelectedIndex(\n\t\t\toptions.length === filteredOptions.length ? selectedIndex : 0\n\t\t);\n\t\tsetFilteredOptions( options );\n\t\tannounce( options );\n\t}\n\n\tfunction handleKeyDown( event ) {\n\t\tbackspacing.current = event.keyCode === BACKSPACE;\n\n\t\tif ( ! autocompleter ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( filteredOptions.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP:\n\t\t\t\tsetSelectedIndex(\n\t\t\t\t\t( selectedIndex === 0\n\t\t\t\t\t\t? filteredOptions.length\n\t\t\t\t\t\t: selectedIndex ) - 1\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase DOWN:\n\t\t\t\tsetSelectedIndex(\n\t\t\t\t\t( selectedIndex + 1 ) % filteredOptions.length\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase ESCAPE:\n\t\t\t\tsetAutocompleter( null );\n\t\t\t\tsetAutocompleterUI( null );\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbreak;\n\n\t\t\tcase ENTER:\n\t\t\t\tselect( filteredOptions[ selectedIndex ] );\n\t\t\t\tbreak;\n\n\t\t\tcase LEFT:\n\t\t\tcase RIGHT:\n\t\t\t\treset();\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Any handled keycode should prevent original behavior. This relies on\n\t\t// the early return in the default case.\n\t\tevent.preventDefault();\n\t}\n\n\t// textContent is a primitive (string), memoizing is not strictly necessary\n\t// but this is a preemptive performance improvement, since the autocompleter\n\t// is a potential bottleneck for the editor type metric.\n\tconst textContent = useMemo( () => {\n\t\tif ( isCollapsed( record ) ) {\n\t\t\treturn getTextContent( slice( record, 0 ) );\n\t\t}\n\t}, [ record ] );\n\n\tuseEffect( () => {\n\t\tif ( ! textContent ) {\n\t\t\treset();\n\t\t\treturn;\n\t\t}\n\n\t\tconst text = deburr( textContent );\n\t\tconst textAfterSelection = getTextContent(\n\t\t\tslice( record, undefined, getTextContent( record ).length )\n\t\t);\n\t\tconst completer = find(\n\t\t\tcompleters,\n\t\t\t( { triggerPrefix, allowContext } ) => {\n\t\t\t\tconst index = text.lastIndexOf( triggerPrefix );\n\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst textWithoutTrigger = text.slice(\n\t\t\t\t\tindex + triggerPrefix.length\n\t\t\t\t);\n\n\t\t\t\tconst tooDistantFromTrigger = textWithoutTrigger.length > 50; // 50 chars seems to be a good limit.\n\t\t\t\t// This is a final barrier to prevent the effect from completing with\n\t\t\t\t// an extremely long string, which causes the editor to slow-down\n\t\t\t\t// significantly. This could happen, for example, if `matchingWhileBackspacing`\n\t\t\t\t// is true and one of the \"words\" end up being too long. If that's the case,\n\t\t\t\t// it will be caught by this guard.\n\t\t\t\tif ( tooDistantFromTrigger ) return false;\n\n\t\t\t\tconst mismatch = filteredOptions.length === 0;\n\t\t\t\tconst wordsFromTrigger = textWithoutTrigger.split( /\\s/ );\n\t\t\t\t// We need to allow the effect to run when not backspacing and if there\n\t\t\t\t// was a mismatch. i.e when typing a trigger + the match string or when\n\t\t\t\t// clicking in an existing trigger word on the page. We do that if we\n\t\t\t\t// detect that we have one word from trigger in the current textual context.\n\t\t\t\t//\n\t\t\t\t// Ex.: \"Some text @a\" <-- \"@a\" will be detected as the trigger word and\n\t\t\t\t// allow the effect to run. It will run until there's a mismatch.\n\t\t\t\tconst hasOneTriggerWord = wordsFromTrigger.length === 1;\n\t\t\t\t// This is used to allow the effect to run when backspacing and if\n\t\t\t\t// \"touching\" a word that \"belongs\" to a trigger. We consider a \"trigger\n\t\t\t\t// word\" any word up to the limit of 3 from the trigger character.\n\t\t\t\t// Anything beyond that is ignored if there's a mismatch. This allows\n\t\t\t\t// us to \"escape\" a mismatch when backspacing, but still imposing some\n\t\t\t\t// sane limits.\n\t\t\t\t//\n\t\t\t\t// Ex: \"Some text @marcelo sekkkk\" <--- \"kkkk\" caused a mismatch, but\n\t\t\t\t// if the user presses backspace here, it will show the completion popup again.\n\t\t\t\tconst matchingWhileBackspacing =\n\t\t\t\t\tbackspacing.current &&\n\t\t\t\t\ttextWithoutTrigger.split( /\\s/ ).length <= 3;\n\n\t\t\t\tif (\n\t\t\t\t\tmismatch &&\n\t\t\t\t\t! ( matchingWhileBackspacing || hasOneTriggerWord )\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tallowContext &&\n\t\t\t\t\t! allowContext( text.slice( 0, index ), textAfterSelection )\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t/^\\s/.test( textWithoutTrigger ) ||\n\t\t\t\t\t/\\s\\s+$/.test( textWithoutTrigger )\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn /[\\u0000-\\uFFFF]*$/.test( textWithoutTrigger );\n\t\t\t}\n\t\t);\n\n\t\tif ( ! completer ) {\n\t\t\treset();\n\t\t\treturn;\n\t\t}\n\n\t\tconst safeTrigger = escapeRegExp( completer.triggerPrefix );\n\t\tconst match = text\n\t\t\t.slice( text.lastIndexOf( completer.triggerPrefix ) )\n\t\t\t.match( new RegExp( `${ safeTrigger }([\\u0000-\\uFFFF]*)$` ) );\n\t\tconst query = match && match[ 1 ];\n\n\t\tsetAutocompleter( completer );\n\t\tsetAutocompleterUI( () =>\n\t\t\tcompleter !== autocompleter\n\t\t\t\t? getAutoCompleterUI( completer )\n\t\t\t\t: AutocompleterUI\n\t\t);\n\t\tsetFilterValue( query );\n\t\t// Temporarily disabling exhaustive-deps to avoid introducing unexpected side effecst.\n\t\t// See https://github.com/WordPress/gutenberg/pull/41820\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ textContent ] );\n\n\tconst { key: selectedKey = '' } = filteredOptions[ selectedIndex ] || {};\n\tconst { className } = autocompleter || {};\n\tconst isExpanded = !! autocompleter && filteredOptions.length > 0;\n\tconst listBoxId = isExpanded\n\t\t? `components-autocomplete-listbox-${ instanceId }`\n\t\t: null;\n\tconst activeId = isExpanded\n\t\t? `components-autocomplete-item-${ instanceId }-${ selectedKey }`\n\t\t: null;\n\tconst hasSelection = record.start !== undefined;\n\n\treturn {\n\t\tlistBoxId,\n\t\tactiveId,\n\t\tonKeyDown: handleKeyDown,\n\t\tpopover: hasSelection && AutocompleterUI && (\n\t\t\t<AutocompleterUI\n\t\t\t\tclassName={ className }\n\t\t\t\tfilterValue={ filterValue }\n\t\t\t\tinstanceId={ instanceId }\n\t\t\t\tlistBoxId={ listBoxId }\n\t\t\t\tselectedIndex={ selectedIndex }\n\t\t\t\tonChangeOptions={ onChangeOptions }\n\t\t\t\tonSelect={ select }\n\t\t\t\tvalue={ record }\n\t\t\t\tcontentRef={ contentRef }\n\t\t\t\treset={ reset }\n\t\t\t/>\n\t\t),\n\t};\n}\n\nexport function useAutocompleteProps( options ) {\n\tconst ref = useRef();\n\tconst onKeyDownRef = useRef();\n\tconst { popover, listBoxId, activeId, onKeyDown } = useAutocomplete( {\n\t\t...options,\n\t\tcontentRef: ref,\n\t} );\n\tonKeyDownRef.current = onKeyDown;\n\treturn {\n\t\tref: useMergeRefs( [\n\t\t\tref,\n\t\t\tuseRefEffect( ( element ) => {\n\t\t\t\tfunction _onKeyDown( event ) {\n\t\t\t\t\tonKeyDownRef.current( event );\n\t\t\t\t}\n\t\t\t\telement.addEventListener( 'keydown', _onKeyDown );\n\t\t\t\treturn () => {\n\t\t\t\t\telement.removeEventListener( 'keydown', _onKeyDown );\n\t\t\t\t};\n\t\t\t}, [] ),\n\t\t] ),\n\t\tchildren: popover,\n\t\t'aria-autocomplete': listBoxId ? 'list' : undefined,\n\t\t'aria-owns': listBoxId,\n\t\t'aria-activedescendant': activeId,\n\t};\n}\n\nexport default function Autocomplete( { children, isSelected, ...options } ) {\n\tconst { popover, ...props } = useAutocomplete( options );\n\treturn (\n\t\t<>\n\t\t\t{ children( props ) }\n\t\t\t{ isSelected && popover }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/autocomplete/index.js"],"names":["useAutocomplete","record","onChange","onReplace","completers","contentRef","debouncedSpeak","speak","instanceId","selectedIndex","setSelectedIndex","filteredOptions","setFilteredOptions","filterValue","setFilterValue","autocompleter","setAutocompleter","AutocompleterUI","setAutocompleterUI","backspacing","insertCompletion","replacement","end","start","triggerPrefix","length","toInsert","html","select","option","getOptionCompletion","isDisabled","completion","value","action","undefined","reset","announce","options","onChangeOptions","handleKeyDown","event","current","keyCode","BACKSPACE","defaultPrevented","UP","DOWN","ESCAPE","preventDefault","ENTER","LEFT","RIGHT","textContent","text","textAfterSelection","completer","allowContext","index","lastIndexOf","textWithoutTrigger","slice","tooDistantFromTrigger","mismatch","wordsFromTrigger","split","hasOneTriggerWord","matchingWhileBackspacing","test","safeTrigger","match","RegExp","query","key","selectedKey","className","isExpanded","listBoxId","activeId","hasSelection","onKeyDown","popover","useAutocompleteProps","ref","onKeyDownRef","element","_onKeyDown","addEventListener","removeEventListener","children","Autocomplete","isSelected","props"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { escapeRegExp, find } from 'lodash';\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport {\n\trenderToString,\n\tuseEffect,\n\tuseState,\n\tuseRef,\n\tuseMemo,\n} from '@wordpress/element';\nimport {\n\tENTER,\n\tESCAPE,\n\tUP,\n\tDOWN,\n\tLEFT,\n\tRIGHT,\n\tBACKSPACE,\n} from '@wordpress/keycodes';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseInstanceId,\n\tuseDebounce,\n\tuseMergeRefs,\n\tuseRefEffect,\n} from '@wordpress/compose';\nimport {\n\tcreate,\n\tslice,\n\tinsert,\n\tisCollapsed,\n\tgetTextContent,\n} from '@wordpress/rich-text';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { getAutoCompleterUI } from './autocompleter-ui';\n\n/**\n * A raw completer option.\n *\n * @typedef {*} CompleterOption\n */\n\n/**\n * @callback FnGetOptions\n *\n * @return {(CompleterOption[]|Promise.<CompleterOption[]>)} The completer options or a promise for them.\n */\n\n/**\n * @callback FnGetOptionKeywords\n * @param {CompleterOption} option a completer option.\n *\n * @return {string[]} list of key words to search.\n */\n\n/**\n * @callback FnIsOptionDisabled\n * @param {CompleterOption} option a completer option.\n *\n * @return {string[]} whether or not the given option is disabled.\n */\n\n/**\n * @callback FnGetOptionLabel\n * @param {CompleterOption} option a completer option.\n *\n * @return {(string|Array.<(string|WPElement)>)} list of react components to render.\n */\n\n/**\n * @callback FnAllowContext\n * @param {string} before the string before the auto complete trigger and query.\n * @param {string} after the string after the autocomplete trigger and query.\n *\n * @return {boolean} true if the completer can handle.\n */\n\n/**\n * @typedef {Object} OptionCompletion\n * @property {'insert-at-caret'|'replace'} action the intended placement of the completion.\n * @property {OptionCompletionValue} value the completion value.\n */\n\n/**\n * A completion value.\n *\n * @typedef {(string|WPElement|Object)} OptionCompletionValue\n */\n\n/**\n * @callback FnGetOptionCompletion\n * @param {CompleterOption} value the value of the completer option.\n * @param {string} query the text value of the autocomplete query.\n *\n * @return {(OptionCompletion|OptionCompletionValue)} the completion for the given option. If an\n * \t\t\t\t\t\t\t\t\t\t\t\t\t OptionCompletionValue is returned, the\n * \t\t\t\t\t\t\t\t\t\t\t\t\t completion action defaults to `insert-at-caret`.\n */\n\n/**\n * @typedef {Object} WPCompleter\n * @property {string} name a way to identify a completer, useful for selective overriding.\n * @property {?string} className A class to apply to the popup menu.\n * @property {string} triggerPrefix the prefix that will display the menu.\n * @property {(CompleterOption[]|FnGetOptions)} options the completer options or a function to get them.\n * @property {?FnGetOptionKeywords} getOptionKeywords get the keywords for a given option.\n * @property {?FnIsOptionDisabled} isOptionDisabled get whether or not the given option is disabled.\n * @property {FnGetOptionLabel} getOptionLabel get the label for a given option.\n * @property {?FnAllowContext} allowContext filter the context under which the autocomplete activates.\n * @property {FnGetOptionCompletion} getOptionCompletion get the completion associated with a given option.\n */\n\nfunction useAutocomplete( {\n\trecord,\n\tonChange,\n\tonReplace,\n\tcompleters,\n\tcontentRef,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst instanceId = useInstanceId( useAutocomplete );\n\tconst [ selectedIndex, setSelectedIndex ] = useState( 0 );\n\tconst [ filteredOptions, setFilteredOptions ] = useState( [] );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ autocompleter, setAutocompleter ] = useState( null );\n\tconst [ AutocompleterUI, setAutocompleterUI ] = useState( null );\n\tconst backspacing = useRef( false );\n\n\tfunction insertCompletion( replacement ) {\n\t\tconst end = record.start;\n\t\tconst start =\n\t\t\tend - autocompleter.triggerPrefix.length - filterValue.length;\n\t\tconst toInsert = create( { html: renderToString( replacement ) } );\n\n\t\tonChange( insert( record, toInsert, start, end ) );\n\t}\n\n\tfunction select( option ) {\n\t\tconst { getOptionCompletion } = autocompleter || {};\n\n\t\tif ( option.isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( getOptionCompletion ) {\n\t\t\tconst completion = getOptionCompletion( option.value, filterValue );\n\n\t\t\tconst { action, value } =\n\t\t\t\tundefined === completion.action ||\n\t\t\t\tundefined === completion.value\n\t\t\t\t\t? { action: 'insert-at-caret', value: completion }\n\t\t\t\t\t: completion;\n\n\t\t\tif ( 'replace' === action ) {\n\t\t\t\tonReplace( [ value ] );\n\t\t\t\t// When replacing, the component will unmount, so don't reset\n\t\t\t\t// state (below) on an unmounted component.\n\t\t\t\treturn;\n\t\t\t} else if ( 'insert-at-caret' === action ) {\n\t\t\t\tinsertCompletion( value );\n\t\t\t}\n\t\t}\n\n\t\t// Reset autocomplete state after insertion rather than before\n\t\t// so insertion events don't cause the completion menu to redisplay.\n\t\treset();\n\t}\n\n\tfunction reset() {\n\t\tsetSelectedIndex( 0 );\n\t\tsetFilteredOptions( [] );\n\t\tsetFilterValue( '' );\n\t\tsetAutocompleter( null );\n\t\tsetAutocompleterUI( null );\n\t}\n\n\tfunction announce( options ) {\n\t\tif ( ! debouncedSpeak ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( !! options.length ) {\n\t\t\tdebouncedSpeak(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\toptions.length\n\t\t\t\t\t),\n\t\t\t\t\toptions.length\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else {\n\t\t\tdebouncedSpeak( __( 'No results.' ), 'assertive' );\n\t\t}\n\t}\n\n\t/**\n\t * Load options for an autocompleter.\n\t *\n\t * @param {Array} options\n\t */\n\tfunction onChangeOptions( options ) {\n\t\tsetSelectedIndex(\n\t\t\toptions.length === filteredOptions.length ? selectedIndex : 0\n\t\t);\n\t\tsetFilteredOptions( options );\n\t\tannounce( options );\n\t}\n\n\tfunction handleKeyDown( event ) {\n\t\tbackspacing.current = event.keyCode === BACKSPACE;\n\n\t\tif ( ! autocompleter ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( filteredOptions.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP:\n\t\t\t\tsetSelectedIndex(\n\t\t\t\t\t( selectedIndex === 0\n\t\t\t\t\t\t? filteredOptions.length\n\t\t\t\t\t\t: selectedIndex ) - 1\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase DOWN:\n\t\t\t\tsetSelectedIndex(\n\t\t\t\t\t( selectedIndex + 1 ) % filteredOptions.length\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase ESCAPE:\n\t\t\t\tsetAutocompleter( null );\n\t\t\t\tsetAutocompleterUI( null );\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbreak;\n\n\t\t\tcase ENTER:\n\t\t\t\tselect( filteredOptions[ selectedIndex ] );\n\t\t\t\tbreak;\n\n\t\t\tcase LEFT:\n\t\t\tcase RIGHT:\n\t\t\t\treset();\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Any handled keycode should prevent original behavior. This relies on\n\t\t// the early return in the default case.\n\t\tevent.preventDefault();\n\t}\n\n\t// textContent is a primitive (string), memoizing is not strictly necessary\n\t// but this is a preemptive performance improvement, since the autocompleter\n\t// is a potential bottleneck for the editor type metric.\n\tconst textContent = useMemo( () => {\n\t\tif ( isCollapsed( record ) ) {\n\t\t\treturn getTextContent( slice( record, 0 ) );\n\t\t}\n\t}, [ record ] );\n\n\tuseEffect( () => {\n\t\tif ( ! textContent ) {\n\t\t\treset();\n\t\t\treturn;\n\t\t}\n\n\t\tconst text = removeAccents( textContent );\n\t\tconst textAfterSelection = getTextContent(\n\t\t\tslice( record, undefined, getTextContent( record ).length )\n\t\t);\n\t\tconst completer = find(\n\t\t\tcompleters,\n\t\t\t( { triggerPrefix, allowContext } ) => {\n\t\t\t\tconst index = text.lastIndexOf( triggerPrefix );\n\n\t\t\t\tif ( index === -1 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst textWithoutTrigger = text.slice(\n\t\t\t\t\tindex + triggerPrefix.length\n\t\t\t\t);\n\n\t\t\t\tconst tooDistantFromTrigger = textWithoutTrigger.length > 50; // 50 chars seems to be a good limit.\n\t\t\t\t// This is a final barrier to prevent the effect from completing with\n\t\t\t\t// an extremely long string, which causes the editor to slow-down\n\t\t\t\t// significantly. This could happen, for example, if `matchingWhileBackspacing`\n\t\t\t\t// is true and one of the \"words\" end up being too long. If that's the case,\n\t\t\t\t// it will be caught by this guard.\n\t\t\t\tif ( tooDistantFromTrigger ) return false;\n\n\t\t\t\tconst mismatch = filteredOptions.length === 0;\n\t\t\t\tconst wordsFromTrigger = textWithoutTrigger.split( /\\s/ );\n\t\t\t\t// We need to allow the effect to run when not backspacing and if there\n\t\t\t\t// was a mismatch. i.e when typing a trigger + the match string or when\n\t\t\t\t// clicking in an existing trigger word on the page. We do that if we\n\t\t\t\t// detect that we have one word from trigger in the current textual context.\n\t\t\t\t//\n\t\t\t\t// Ex.: \"Some text @a\" <-- \"@a\" will be detected as the trigger word and\n\t\t\t\t// allow the effect to run. It will run until there's a mismatch.\n\t\t\t\tconst hasOneTriggerWord = wordsFromTrigger.length === 1;\n\t\t\t\t// This is used to allow the effect to run when backspacing and if\n\t\t\t\t// \"touching\" a word that \"belongs\" to a trigger. We consider a \"trigger\n\t\t\t\t// word\" any word up to the limit of 3 from the trigger character.\n\t\t\t\t// Anything beyond that is ignored if there's a mismatch. This allows\n\t\t\t\t// us to \"escape\" a mismatch when backspacing, but still imposing some\n\t\t\t\t// sane limits.\n\t\t\t\t//\n\t\t\t\t// Ex: \"Some text @marcelo sekkkk\" <--- \"kkkk\" caused a mismatch, but\n\t\t\t\t// if the user presses backspace here, it will show the completion popup again.\n\t\t\t\tconst matchingWhileBackspacing =\n\t\t\t\t\tbackspacing.current &&\n\t\t\t\t\ttextWithoutTrigger.split( /\\s/ ).length <= 3;\n\n\t\t\t\tif (\n\t\t\t\t\tmismatch &&\n\t\t\t\t\t! ( matchingWhileBackspacing || hasOneTriggerWord )\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tallowContext &&\n\t\t\t\t\t! allowContext( text.slice( 0, index ), textAfterSelection )\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t/^\\s/.test( textWithoutTrigger ) ||\n\t\t\t\t\t/\\s\\s+$/.test( textWithoutTrigger )\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn /[\\u0000-\\uFFFF]*$/.test( textWithoutTrigger );\n\t\t\t}\n\t\t);\n\n\t\tif ( ! completer ) {\n\t\t\treset();\n\t\t\treturn;\n\t\t}\n\n\t\tconst safeTrigger = escapeRegExp( completer.triggerPrefix );\n\t\tconst match = text\n\t\t\t.slice( text.lastIndexOf( completer.triggerPrefix ) )\n\t\t\t.match( new RegExp( `${ safeTrigger }([\\u0000-\\uFFFF]*)$` ) );\n\t\tconst query = match && match[ 1 ];\n\n\t\tsetAutocompleter( completer );\n\t\tsetAutocompleterUI( () =>\n\t\t\tcompleter !== autocompleter\n\t\t\t\t? getAutoCompleterUI( completer )\n\t\t\t\t: AutocompleterUI\n\t\t);\n\t\tsetFilterValue( query );\n\t\t// Temporarily disabling exhaustive-deps to avoid introducing unexpected side effecst.\n\t\t// See https://github.com/WordPress/gutenberg/pull/41820\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ textContent ] );\n\n\tconst { key: selectedKey = '' } = filteredOptions[ selectedIndex ] || {};\n\tconst { className } = autocompleter || {};\n\tconst isExpanded = !! autocompleter && filteredOptions.length > 0;\n\tconst listBoxId = isExpanded\n\t\t? `components-autocomplete-listbox-${ instanceId }`\n\t\t: null;\n\tconst activeId = isExpanded\n\t\t? `components-autocomplete-item-${ instanceId }-${ selectedKey }`\n\t\t: null;\n\tconst hasSelection = record.start !== undefined;\n\n\treturn {\n\t\tlistBoxId,\n\t\tactiveId,\n\t\tonKeyDown: handleKeyDown,\n\t\tpopover: hasSelection && AutocompleterUI && (\n\t\t\t<AutocompleterUI\n\t\t\t\tclassName={ className }\n\t\t\t\tfilterValue={ filterValue }\n\t\t\t\tinstanceId={ instanceId }\n\t\t\t\tlistBoxId={ listBoxId }\n\t\t\t\tselectedIndex={ selectedIndex }\n\t\t\t\tonChangeOptions={ onChangeOptions }\n\t\t\t\tonSelect={ select }\n\t\t\t\tvalue={ record }\n\t\t\t\tcontentRef={ contentRef }\n\t\t\t\treset={ reset }\n\t\t\t/>\n\t\t),\n\t};\n}\n\nexport function useAutocompleteProps( options ) {\n\tconst ref = useRef();\n\tconst onKeyDownRef = useRef();\n\tconst { popover, listBoxId, activeId, onKeyDown } = useAutocomplete( {\n\t\t...options,\n\t\tcontentRef: ref,\n\t} );\n\tonKeyDownRef.current = onKeyDown;\n\treturn {\n\t\tref: useMergeRefs( [\n\t\t\tref,\n\t\t\tuseRefEffect( ( element ) => {\n\t\t\t\tfunction _onKeyDown( event ) {\n\t\t\t\t\tonKeyDownRef.current( event );\n\t\t\t\t}\n\t\t\t\telement.addEventListener( 'keydown', _onKeyDown );\n\t\t\t\treturn () => {\n\t\t\t\t\telement.removeEventListener( 'keydown', _onKeyDown );\n\t\t\t\t};\n\t\t\t}, [] ),\n\t\t] ),\n\t\tchildren: popover,\n\t\t'aria-autocomplete': listBoxId ? 'list' : undefined,\n\t\t'aria-owns': listBoxId,\n\t\t'aria-activedescendant': activeId,\n\t};\n}\n\nexport default function Autocomplete( { children, isSelected, ...options } ) {\n\tconst { popover, ...props } = useAutocomplete( options );\n\treturn (\n\t\t<>\n\t\t\t{ children( props ) }\n\t\t\t{ isSelected && popover }\n\t\t</>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/border-control/border-control/hook.ts"],"names":["sanitizeBorder","border","hasNoWidth","width","undefined","hasNoColor","color","useBorderControl","props","className","isCompact","onChange","shouldSanitizeBorder","value","__next36pxDefaultSize","otherProps","widthValue","originalWidthUnit","widthUnit","hadPreviousZeroWidth","colorSelection","setColorSelection","styleSelection","setStyleSelection","onBorderChange","newBorder","onWidthChange","newWidth","newWidthValue","parsedValue","hasZeroWidth","updatedBorder","style","onSliderChange","cx","classes","styles","borderControl","innerWrapperClassName","wrapperWidth","widthStyle","heightStyle","wrapperHeight","innerWrapper","widthControlClassName","borderWidthControl","sliderClassName","borderSlider","previousStyleSelection"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport * as styles from '../styles';\nimport { parseQuantityAndUnitFromRawValue } from '../../unit-control/utils';\nimport { useContextSystem, WordPressComponentProps } from '../../ui/context';\nimport { useCx } from '../../utils/hooks/use-cx';\n\nimport type { Border, BorderControlProps } from '../types';\n\nconst sanitizeBorder = ( border?: Border ) => {\n\tconst hasNoWidth = border?.width === undefined || border.width === '';\n\tconst hasNoColor = border?.color === undefined;\n\n\t// If width and color are undefined, unset any style selection as well.\n\tif ( hasNoWidth && hasNoColor ) {\n\t\treturn undefined;\n\t}\n\n\treturn border;\n};\n\nexport function useBorderControl(\n\tprops: WordPressComponentProps< BorderControlProps, 'div' >\n) {\n\tconst {\n\t\tclassName,\n\t\tisCompact,\n\t\tonChange,\n\t\tshouldSanitizeBorder = true,\n\t\tvalue: border,\n\t\twidth,\n\t\t__next36pxDefaultSize = false,\n\t\t...otherProps\n\t} = useContextSystem( props, 'BorderControl' );\n\n\tconst [ widthValue, originalWidthUnit ] = parseQuantityAndUnitFromRawValue(\n\t\tborder?.width\n\t);\n\tconst widthUnit = originalWidthUnit || 'px';\n\tconst hadPreviousZeroWidth = widthValue === 0;\n\n\tconst [ colorSelection, setColorSelection ] = useState< string >();\n\tconst [ styleSelection, setStyleSelection ] = useState< string >();\n\n\tconst onBorderChange = useCallback(\n\t\t( newBorder?: Border ) => {\n\t\t\tif ( shouldSanitizeBorder ) {\n\t\t\t\treturn onChange( sanitizeBorder( newBorder ) );\n\t\t\t}\n\n\t\t\tonChange( newBorder );\n\t\t},\n\t\t[ onChange, shouldSanitizeBorder ]\n\t);\n\n\tconst onWidthChange = useCallback(\n\t\t( newWidth?: string ) => {\n\t\t\tconst newWidthValue = newWidth === '' ? undefined : newWidth;\n\t\t\tconst [ parsedValue ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( newWidth );\n\t\t\tconst hasZeroWidth = parsedValue === 0;\n\n\t\t\tconst updatedBorder = { ...border, width: newWidthValue };\n\n\t\t\t// Setting the border width explicitly to zero will also set the\n\t\t\t// border style to `none` and clear the border color.\n\t\t\tif ( hasZeroWidth && ! hadPreviousZeroWidth ) {\n\t\t\t\t// Before clearing the color and style selections, keep track of\n\t\t\t\t// the current selections so they can be restored when the width\n\t\t\t\t// changes to a non-zero value.\n\t\t\t\tsetColorSelection( border?.color );\n\t\t\t\tsetStyleSelection( border?.style );\n\n\t\t\t\t// Clear the color and style border properties.\n\t\t\t\tupdatedBorder.color = undefined;\n\t\t\t\tupdatedBorder.style = 'none';\n\t\t\t}\n\n\t\t\t// Selection has changed from zero border width to non-zero width.\n\t\t\tif ( ! hasZeroWidth && hadPreviousZeroWidth ) {\n\t\t\t\t// Restore previous border color and style selections if width\n\t\t\t\t// is now not zero.\n\t\t\t\tif ( updatedBorder.color === undefined ) {\n\t\t\t\t\tupdatedBorder.color = colorSelection;\n\t\t\t\t}\n\t\t\t\tif ( updatedBorder.style === 'none' ) {\n\t\t\t\t\tupdatedBorder.style = styleSelection;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonBorderChange( updatedBorder );\n\t\t},\n\t\t[\n\t\t\tborder,\n\t\t\thadPreviousZeroWidth,\n\t\t\tcolorSelection,\n\t\t\tstyleSelection,\n\t\t\tonBorderChange,\n\t\t]\n\t);\n\n\tconst onSliderChange = useCallback(\n\t\t( value: string ) => {\n\t\t\tonWidthChange( `${ value }${ widthUnit }` );\n\t\t},\n\t\t[ onWidthChange, widthUnit ]\n\t);\n\n\t// Generate class names.\n\tconst cx = useCx();\n\tconst classes = useMemo( () => {\n\t\treturn cx( styles.borderControl, className );\n\t}, [ className, cx ] );\n\n\tconst innerWrapperClassName = useMemo( () => {\n\t\tconst wrapperWidth = isCompact ? '90px' : width;\n\t\tconst widthStyle =\n\t\t\t!! wrapperWidth && styles.wrapperWidth( wrapperWidth );\n\t\tconst heightStyle = styles.wrapperHeight( __next36pxDefaultSize );\n\n\t\treturn cx( styles.innerWrapper(), widthStyle, heightStyle );\n\t}, [ isCompact, width, cx, __next36pxDefaultSize ] );\n\n\tconst widthControlClassName = useMemo( () => {\n\t\treturn cx( styles.borderWidthControl() );\n\t}, [ cx ] );\n\n\tconst sliderClassName = useMemo( () => {\n\t\treturn cx( styles.borderSlider() );\n\t}, [ cx ] );\n\n\treturn {\n\t\t...otherProps,\n\t\tclassName: classes,\n\t\tinnerWrapperClassName,\n\t\tonBorderChange,\n\t\tonSliderChange,\n\t\tonWidthChange,\n\t\tpreviousStyleSelection: styleSelection,\n\t\tsliderClassName,\n\t\tvalue: border,\n\t\twidthControlClassName,\n\t\twidthUnit,\n\t\twidthValue,\n\t\t__next36pxDefaultSize,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/border-control/border-control/hook.ts"],"names":["sanitizeBorder","border","hasNoWidth","width","undefined","hasNoColor","color","useBorderControl","props","className","isCompact","onChange","shouldSanitizeBorder","value","__next36pxDefaultSize","otherProps","widthValue","originalWidthUnit","widthUnit","hadPreviousZeroWidth","colorSelection","setColorSelection","styleSelection","setStyleSelection","onBorderChange","newBorder","onWidthChange","newWidth","newWidthValue","parsedValue","hasZeroWidth","updatedBorder","style","onSliderChange","cx","classes","styles","borderControl","innerWrapperClassName","wrapperWidth","widthStyle","heightStyle","wrapperHeight","innerWrapper","widthControlClassName","borderWidthControl","sliderClassName","borderSlider","previousStyleSelection"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport * as styles from '../styles';\nimport { parseQuantityAndUnitFromRawValue } from '../../unit-control/utils';\nimport { useContextSystem, WordPressComponentProps } from '../../ui/context';\nimport { useCx } from '../../utils/hooks/use-cx';\n\nimport type { Border, BorderControlProps } from '../types';\n\nconst sanitizeBorder = ( border?: Border ) => {\n\tconst hasNoWidth = border?.width === undefined || border.width === '';\n\tconst hasNoColor = border?.color === undefined;\n\n\t// If width and color are undefined, unset any style selection as well.\n\tif ( hasNoWidth && hasNoColor ) {\n\t\treturn undefined;\n\t}\n\n\treturn border;\n};\n\nexport function useBorderControl(\n\tprops: WordPressComponentProps< BorderControlProps, 'div' >\n) {\n\tconst {\n\t\tclassName,\n\t\tisCompact,\n\t\tonChange,\n\t\tshouldSanitizeBorder = true,\n\t\tvalue: border,\n\t\twidth,\n\t\t__next36pxDefaultSize = false,\n\t\t...otherProps\n\t} = useContextSystem( props, 'BorderControl' );\n\n\tconst [ widthValue, originalWidthUnit ] = parseQuantityAndUnitFromRawValue(\n\t\tborder?.width\n\t);\n\tconst widthUnit = originalWidthUnit || 'px';\n\tconst hadPreviousZeroWidth = widthValue === 0;\n\n\tconst [ colorSelection, setColorSelection ] = useState< string >();\n\tconst [ styleSelection, setStyleSelection ] = useState< string >();\n\n\tconst onBorderChange = useCallback(\n\t\t( newBorder?: Border ) => {\n\t\t\tif ( shouldSanitizeBorder ) {\n\t\t\t\treturn onChange( sanitizeBorder( newBorder ) );\n\t\t\t}\n\n\t\t\tonChange( newBorder );\n\t\t},\n\t\t[ onChange, shouldSanitizeBorder ]\n\t);\n\n\tconst onWidthChange = useCallback(\n\t\t( newWidth?: string ) => {\n\t\t\tconst newWidthValue = newWidth === '' ? undefined : newWidth;\n\t\t\tconst [ parsedValue ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( newWidth );\n\t\t\tconst hasZeroWidth = parsedValue === 0;\n\n\t\t\tconst updatedBorder = { ...border, width: newWidthValue };\n\n\t\t\t// Setting the border width explicitly to zero will also set the\n\t\t\t// border style to `none` and clear the border color.\n\t\t\tif ( hasZeroWidth && ! hadPreviousZeroWidth ) {\n\t\t\t\t// Before clearing the color and style selections, keep track of\n\t\t\t\t// the current selections so they can be restored when the width\n\t\t\t\t// changes to a non-zero value.\n\t\t\t\tsetColorSelection( border?.color );\n\t\t\t\tsetStyleSelection( border?.style );\n\n\t\t\t\t// Clear the color and style border properties.\n\t\t\t\tupdatedBorder.color = undefined;\n\t\t\t\tupdatedBorder.style = 'none';\n\t\t\t}\n\n\t\t\t// Selection has changed from zero border width to non-zero width.\n\t\t\tif ( ! hasZeroWidth && hadPreviousZeroWidth ) {\n\t\t\t\t// Restore previous border color and style selections if width\n\t\t\t\t// is now not zero.\n\t\t\t\tif ( updatedBorder.color === undefined ) {\n\t\t\t\t\tupdatedBorder.color = colorSelection;\n\t\t\t\t}\n\t\t\t\tif ( updatedBorder.style === 'none' ) {\n\t\t\t\t\tupdatedBorder.style = styleSelection;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonBorderChange( updatedBorder );\n\t\t},\n\t\t[\n\t\t\tborder,\n\t\t\thadPreviousZeroWidth,\n\t\t\tcolorSelection,\n\t\t\tstyleSelection,\n\t\t\tonBorderChange,\n\t\t]\n\t);\n\n\tconst onSliderChange = useCallback(\n\t\t( value?: number ) => {\n\t\t\tonWidthChange( `${ value }${ widthUnit }` );\n\t\t},\n\t\t[ onWidthChange, widthUnit ]\n\t);\n\n\t// Generate class names.\n\tconst cx = useCx();\n\tconst classes = useMemo( () => {\n\t\treturn cx( styles.borderControl, className );\n\t}, [ className, cx ] );\n\n\tconst innerWrapperClassName = useMemo( () => {\n\t\tconst wrapperWidth = isCompact ? '90px' : width;\n\t\tconst widthStyle =\n\t\t\t!! wrapperWidth && styles.wrapperWidth( wrapperWidth );\n\t\tconst heightStyle = styles.wrapperHeight( __next36pxDefaultSize );\n\n\t\treturn cx( styles.innerWrapper(), widthStyle, heightStyle );\n\t}, [ isCompact, width, cx, __next36pxDefaultSize ] );\n\n\tconst widthControlClassName = useMemo( () => {\n\t\treturn cx( styles.borderWidthControl() );\n\t}, [ cx ] );\n\n\tconst sliderClassName = useMemo( () => {\n\t\treturn cx( styles.borderSlider() );\n\t}, [ cx ] );\n\n\treturn {\n\t\t...otherProps,\n\t\tclassName: classes,\n\t\tinnerWrapperClassName,\n\t\tonBorderChange,\n\t\tonSliderChange,\n\t\tonWidthChange,\n\t\tpreviousStyleSelection: styleSelection,\n\t\tsliderClassName,\n\t\tvalue: border,\n\t\twidthControlClassName,\n\t\twidthUnit,\n\t\twidthValue,\n\t\t__next36pxDefaultSize,\n\t};\n}\n"]}
@@ -128,7 +128,7 @@ function BoxControl(_ref) {
128
128
  };
129
129
  return (0, _element.createElement)(_boxControlStyles.Root, {
130
130
  id: id,
131
- role: "region",
131
+ role: "group",
132
132
  "aria-labelledby": headingId
133
133
  }, (0, _element.createElement)(_boxControlStyles.Header, {
134
134
  className: "component-box-control__header"
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/box-control/index.js"],"names":["defaultInputProps","min","noop","useUniqueId","idProp","instanceId","BoxControl","id","inputProps","onChange","label","values","valuesProp","units","sides","splitOnAxis","allowReset","resetValues","DEFAULT_VALUES","setValues","fallback","inputValues","hasInitialValue","hasOneSide","length","isDirty","setIsDirty","isLinked","setIsLinked","side","setSide","selectedUnits","setSelectedUnits","top","right","bottom","left","headingId","toggleLinked","handleOnFocus","event","nextSide","handleOnChange","nextValues","handleOnReset","inputControlProps","onFocus"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { FlexItem, FlexBlock } from '../flex';\nimport AllInputControl from './all-input-control';\nimport InputControls from './input-controls';\nimport AxialInputControls from './axial-input-controls';\nimport BoxControlIcon from './icon';\nimport { Text } from '../text';\nimport LinkedButton from './linked-button';\nimport {\n\tRoot,\n\tHeader,\n\tHeaderControlWrapper,\n} from './styles/box-control-styles';\nimport { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';\nimport {\n\tDEFAULT_VALUES,\n\tgetInitialSide,\n\tisValuesMixed,\n\tisValuesDefined,\n} from './utils';\nimport { useControlledState } from '../utils/hooks';\n\nconst defaultInputProps = {\n\tmin: 0,\n};\n\nconst noop = () => {};\n\nfunction useUniqueId( idProp ) {\n\tconst instanceId = useInstanceId( BoxControl, 'inspector-box-control' );\n\n\treturn idProp || instanceId;\n}\nexport default function BoxControl( {\n\tid: idProp,\n\tinputProps = defaultInputProps,\n\tonChange = noop,\n\tlabel = __( 'Box Control' ),\n\tvalues: valuesProp,\n\tunits,\n\tsides,\n\tsplitOnAxis = false,\n\tallowReset = true,\n\tresetValues = DEFAULT_VALUES,\n} ) {\n\tconst [ values, setValues ] = useControlledState( valuesProp, {\n\t\tfallback: DEFAULT_VALUES,\n\t} );\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasInitialValue = isValuesDefined( valuesProp );\n\tconst hasOneSide = sides?.length === 1;\n\n\tconst [ isDirty, setIsDirty ] = useState( hasInitialValue );\n\tconst [ isLinked, setIsLinked ] = useState(\n\t\t! hasInitialValue || ! isValuesMixed( inputValues ) || hasOneSide\n\t);\n\n\tconst [ side, setSide ] = useState(\n\t\tgetInitialSide( isLinked, splitOnAxis )\n\t);\n\n\t// Tracking selected units via internal state allows filtering of CSS unit\n\t// only values from being saved while maintaining preexisting unit selection\n\t// behaviour. Filtering CSS only values prevents invalid style values.\n\tconst [ selectedUnits, setSelectedUnits ] = useState( {\n\t\ttop: parseQuantityAndUnitFromRawValue( valuesProp?.top )[ 1 ],\n\t\tright: parseQuantityAndUnitFromRawValue( valuesProp?.right )[ 1 ],\n\t\tbottom: parseQuantityAndUnitFromRawValue( valuesProp?.bottom )[ 1 ],\n\t\tleft: parseQuantityAndUnitFromRawValue( valuesProp?.left )[ 1 ],\n\t} );\n\n\tconst id = useUniqueId( idProp );\n\tconst headingId = `${ id }-heading`;\n\n\tconst toggleLinked = () => {\n\t\tsetIsLinked( ! isLinked );\n\t\tsetSide( getInitialSide( ! isLinked, splitOnAxis ) );\n\t};\n\n\tconst handleOnFocus = ( event, { side: nextSide } ) => {\n\t\tsetSide( nextSide );\n\t};\n\n\tconst handleOnChange = ( nextValues ) => {\n\t\tonChange( nextValues );\n\t\tsetValues( nextValues );\n\t\tsetIsDirty( true );\n\t};\n\n\tconst handleOnReset = () => {\n\t\tonChange( resetValues );\n\t\tsetValues( resetValues );\n\t\tsetSelectedUnits( resetValues );\n\t\tsetIsDirty( false );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tonChange: handleOnChange,\n\t\tonFocus: handleOnFocus,\n\t\tisLinked,\n\t\tunits,\n\t\tselectedUnits,\n\t\tsetSelectedUnits,\n\t\tsides,\n\t\tvalues: inputValues,\n\t};\n\n\treturn (\n\t\t<Root id={ id } role=\"region\" aria-labelledby={ headingId }>\n\t\t\t<Header className=\"component-box-control__header\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tid={ headingId }\n\t\t\t\t\t\tclassName=\"component-box-control__label\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Text>\n\t\t\t\t</FlexItem>\n\t\t\t\t{ allowReset && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"component-box-control__reset-button\"\n\t\t\t\t\t\t\tisSecondary\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tonClick={ handleOnReset }\n\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</Header>\n\t\t\t<HeaderControlWrapper className=\"component-box-control__header-control-wrapper\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BoxControlIcon side={ side } sides={ sides } />\n\t\t\t\t</FlexItem>\n\t\t\t\t{ isLinked && (\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<AllInputControl\n\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t{ ...inputControlProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t) }\n\t\t\t\t{ ! isLinked && splitOnAxis && (\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<AxialInputControls { ...inputControlProps } />\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t) }\n\t\t\t\t{ ! hasOneSide && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<LinkedButton\n\t\t\t\t\t\t\tonClick={ toggleLinked }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</HeaderControlWrapper>\n\t\t\t{ ! isLinked && ! splitOnAxis && (\n\t\t\t\t<InputControls { ...inputControlProps } />\n\t\t\t) }\n\t\t</Root>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/box-control/index.js"],"names":["defaultInputProps","min","noop","useUniqueId","idProp","instanceId","BoxControl","id","inputProps","onChange","label","values","valuesProp","units","sides","splitOnAxis","allowReset","resetValues","DEFAULT_VALUES","setValues","fallback","inputValues","hasInitialValue","hasOneSide","length","isDirty","setIsDirty","isLinked","setIsLinked","side","setSide","selectedUnits","setSelectedUnits","top","right","bottom","left","headingId","toggleLinked","handleOnFocus","event","nextSide","handleOnChange","nextValues","handleOnReset","inputControlProps","onFocus"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport { FlexItem, FlexBlock } from '../flex';\nimport AllInputControl from './all-input-control';\nimport InputControls from './input-controls';\nimport AxialInputControls from './axial-input-controls';\nimport BoxControlIcon from './icon';\nimport { Text } from '../text';\nimport LinkedButton from './linked-button';\nimport {\n\tRoot,\n\tHeader,\n\tHeaderControlWrapper,\n} from './styles/box-control-styles';\nimport { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';\nimport {\n\tDEFAULT_VALUES,\n\tgetInitialSide,\n\tisValuesMixed,\n\tisValuesDefined,\n} from './utils';\nimport { useControlledState } from '../utils/hooks';\n\nconst defaultInputProps = {\n\tmin: 0,\n};\n\nconst noop = () => {};\n\nfunction useUniqueId( idProp ) {\n\tconst instanceId = useInstanceId( BoxControl, 'inspector-box-control' );\n\n\treturn idProp || instanceId;\n}\nexport default function BoxControl( {\n\tid: idProp,\n\tinputProps = defaultInputProps,\n\tonChange = noop,\n\tlabel = __( 'Box Control' ),\n\tvalues: valuesProp,\n\tunits,\n\tsides,\n\tsplitOnAxis = false,\n\tallowReset = true,\n\tresetValues = DEFAULT_VALUES,\n} ) {\n\tconst [ values, setValues ] = useControlledState( valuesProp, {\n\t\tfallback: DEFAULT_VALUES,\n\t} );\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasInitialValue = isValuesDefined( valuesProp );\n\tconst hasOneSide = sides?.length === 1;\n\n\tconst [ isDirty, setIsDirty ] = useState( hasInitialValue );\n\tconst [ isLinked, setIsLinked ] = useState(\n\t\t! hasInitialValue || ! isValuesMixed( inputValues ) || hasOneSide\n\t);\n\n\tconst [ side, setSide ] = useState(\n\t\tgetInitialSide( isLinked, splitOnAxis )\n\t);\n\n\t// Tracking selected units via internal state allows filtering of CSS unit\n\t// only values from being saved while maintaining preexisting unit selection\n\t// behaviour. Filtering CSS only values prevents invalid style values.\n\tconst [ selectedUnits, setSelectedUnits ] = useState( {\n\t\ttop: parseQuantityAndUnitFromRawValue( valuesProp?.top )[ 1 ],\n\t\tright: parseQuantityAndUnitFromRawValue( valuesProp?.right )[ 1 ],\n\t\tbottom: parseQuantityAndUnitFromRawValue( valuesProp?.bottom )[ 1 ],\n\t\tleft: parseQuantityAndUnitFromRawValue( valuesProp?.left )[ 1 ],\n\t} );\n\n\tconst id = useUniqueId( idProp );\n\tconst headingId = `${ id }-heading`;\n\n\tconst toggleLinked = () => {\n\t\tsetIsLinked( ! isLinked );\n\t\tsetSide( getInitialSide( ! isLinked, splitOnAxis ) );\n\t};\n\n\tconst handleOnFocus = ( event, { side: nextSide } ) => {\n\t\tsetSide( nextSide );\n\t};\n\n\tconst handleOnChange = ( nextValues ) => {\n\t\tonChange( nextValues );\n\t\tsetValues( nextValues );\n\t\tsetIsDirty( true );\n\t};\n\n\tconst handleOnReset = () => {\n\t\tonChange( resetValues );\n\t\tsetValues( resetValues );\n\t\tsetSelectedUnits( resetValues );\n\t\tsetIsDirty( false );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tonChange: handleOnChange,\n\t\tonFocus: handleOnFocus,\n\t\tisLinked,\n\t\tunits,\n\t\tselectedUnits,\n\t\tsetSelectedUnits,\n\t\tsides,\n\t\tvalues: inputValues,\n\t};\n\n\treturn (\n\t\t<Root id={ id } role=\"group\" aria-labelledby={ headingId }>\n\t\t\t<Header className=\"component-box-control__header\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tid={ headingId }\n\t\t\t\t\t\tclassName=\"component-box-control__label\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Text>\n\t\t\t\t</FlexItem>\n\t\t\t\t{ allowReset && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"component-box-control__reset-button\"\n\t\t\t\t\t\t\tisSecondary\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tonClick={ handleOnReset }\n\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</Header>\n\t\t\t<HeaderControlWrapper className=\"component-box-control__header-control-wrapper\">\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<BoxControlIcon side={ side } sides={ sides } />\n\t\t\t\t</FlexItem>\n\t\t\t\t{ isLinked && (\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<AllInputControl\n\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t{ ...inputControlProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t) }\n\t\t\t\t{ ! isLinked && splitOnAxis && (\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<AxialInputControls { ...inputControlProps } />\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t) }\n\t\t\t\t{ ! hasOneSide && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<LinkedButton\n\t\t\t\t\t\t\tonClick={ toggleLinked }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t</HeaderControlWrapper>\n\t\t\t{ ! isLinked && ! splitOnAxis && (\n\t\t\t\t<InputControls { ...inputControlProps } />\n\t\t\t) }\n\t\t</Root>\n\t);\n}\n"]}
@@ -11,14 +11,14 @@ var _colord = require("colord");
11
11
 
12
12
  var _i18n = require("@wordpress/i18n");
13
13
 
14
+ var _inputControl = require("../input-control");
15
+
14
16
  var _text = require("../text");
15
17
 
16
18
  var _spacer = require("../spacer");
17
19
 
18
20
  var _space = require("../ui/utils/space");
19
21
 
20
- var _styles = require("./styles");
21
-
22
22
  var _colorsValues = require("../utils/colors-values");
23
23
 
24
24
  /**
@@ -61,7 +61,7 @@ const HexInput = _ref => {
61
61
  };
62
62
  };
63
63
 
64
- return (0, _element.createElement)(_styles.ColorHexInputControl, {
64
+ return (0, _element.createElement)(_inputControl.InputControl, {
65
65
  prefix: (0, _element.createElement)(_spacer.Spacer, {
66
66
  as: _text.Text,
67
67
  marginLeft: (0, _space.space)(3.5),
@@ -73,7 +73,8 @@ const HexInput = _ref => {
73
73
  maxLength: enableAlpha ? 9 : 7,
74
74
  label: (0, _i18n.__)('Hex color'),
75
75
  hideLabelFromVision: true,
76
- __unstableStateReducer: stateReducer
76
+ __unstableStateReducer: stateReducer,
77
+ __unstableInputWidth: "9em"
77
78
  });
78
79
  };
79
80
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/color-picker/hex-input.tsx"],"names":["HexInput","color","onChange","enableAlpha","handleChange","nextValue","hexValue","startsWith","stateReducer","state","action","nativeEvent","payload","event","inputType","value","slice","toUpperCase","Text","COLORS","ui","theme","toHex"],"mappings":";;;;;;;;;AAGA;;AAKA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAjBA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAcO,MAAMA,QAAQ,GAAG,QAAuD;AAAA,MAArD;AAAEC,IAAAA,KAAF;AAASC,IAAAA,QAAT;AAAmBC,IAAAA;AAAnB,GAAqD;;AAC9E,QAAMC,YAAY,GAAKC,SAAF,IAAqC;AACzD,QAAK,CAAEA,SAAP,EAAmB;AACnB,UAAMC,QAAQ,GAAGD,SAAS,CAACE,UAAV,CAAsB,GAAtB,IACdF,SADc,GAEd,MAAMA,SAFT;AAIAH,IAAAA,QAAQ,CAAE,oBAAQI,QAAR,CAAF,CAAR;AACA,GAPD;;AASA,QAAME,YAA0B,GAAG,CAAEC,KAAF,EAASC,MAAT,KAAqB;AAAA;;AACvD,UAAMC,WAAW,sBAAGD,MAAM,CAACE,OAAV,6EAAG,gBAAgBC,KAAnB,0DAAG,sBAAuBF,WAA3C;;AAEA,QAAK,uBAAsBA,WAAtB,aAAsBA,WAAtB,uBAAsBA,WAAW,CAAEG,SAAnC,CAAL,EAAoD;AACnD,aAAO,EAAE,GAAGL;AAAL,OAAP;AACA;;AAED,UAAMM,KAAK,GAAG,gBAAAN,KAAK,CAACM,KAAN,sDAAaR,UAAb,CAAyB,GAAzB,IACXE,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAmB,CAAnB,EAAuBC,WAAvB,EADW,oBAEXR,KAAK,CAACM,KAFK,kDAEX,cAAaE,WAAb,EAFH;AAIA,WAAO,EAAE,GAAGR,KAAL;AAAYM,MAAAA;AAAZ,KAAP;AACA,GAZD;;AAcA,SACC,4BAAC,4BAAD;AACC,IAAA,MAAM,EACL,4BAAC,cAAD;AACC,MAAA,EAAE,EAAGG,UADN;AAEC,MAAA,UAAU,EAAG,kBAAO,GAAP,CAFd;AAGC,MAAA,KAAK,EAAGC,qBAAOC,EAAP,CAAUC,KAHnB;AAIC,MAAA,UAAU,EAAG;AAJd,WAFF;AAWC,IAAA,KAAK,EAAGpB,KAAK,CAACqB,KAAN,GAAcN,KAAd,CAAqB,CAArB,EAAyBC,WAAzB,EAXT;AAYC,IAAA,QAAQ,EAAGb,YAZZ;AAaC,IAAA,SAAS,EAAGD,WAAW,GAAG,CAAH,GAAO,CAb/B;AAcC,IAAA,KAAK,EAAG,cAAI,WAAJ,CAdT;AAeC,IAAA,mBAAmB,MAfpB;AAgBC,IAAA,sBAAsB,EAAGK;AAhB1B,IADD;AAoBA,CA5CM","sourcesContent":["/**\n * External dependencies\n */\nimport { colord, Colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { Text } from '../text';\nimport { Spacer } from '../spacer';\nimport { space } from '../ui/utils/space';\nimport { ColorHexInputControl } from './styles';\nimport { COLORS } from '../utils/colors-values';\nimport type { StateReducer } from '../input-control/reducer/state';\n\ninterface HexInputProps {\n\tcolor: Colord;\n\tonChange: ( nextColor: Colord ) => void;\n\tenableAlpha: boolean;\n}\n\nexport const HexInput = ( { color, onChange, enableAlpha }: HexInputProps ) => {\n\tconst handleChange = ( nextValue: string | undefined ) => {\n\t\tif ( ! nextValue ) return;\n\t\tconst hexValue = nextValue.startsWith( '#' )\n\t\t\t? nextValue\n\t\t\t: '#' + nextValue;\n\n\t\tonChange( colord( hexValue ) );\n\t};\n\n\tconst stateReducer: StateReducer = ( state, action ) => {\n\t\tconst nativeEvent = action.payload?.event?.nativeEvent as InputEvent;\n\n\t\tif ( 'insertFromPaste' !== nativeEvent?.inputType ) {\n\t\t\treturn { ...state };\n\t\t}\n\n\t\tconst value = state.value?.startsWith( '#' )\n\t\t\t? state.value.slice( 1 ).toUpperCase()\n\t\t\t: state.value?.toUpperCase();\n\n\t\treturn { ...state, value };\n\t};\n\n\treturn (\n\t\t<ColorHexInputControl\n\t\t\tprefix={\n\t\t\t\t<Spacer\n\t\t\t\t\tas={ Text }\n\t\t\t\t\tmarginLeft={ space( 3.5 ) }\n\t\t\t\t\tcolor={ COLORS.ui.theme }\n\t\t\t\t\tlineHeight={ 1 }\n\t\t\t\t>\n\t\t\t\t\t#\n\t\t\t\t</Spacer>\n\t\t\t}\n\t\t\tvalue={ color.toHex().slice( 1 ).toUpperCase() }\n\t\t\tonChange={ handleChange }\n\t\t\tmaxLength={ enableAlpha ? 9 : 7 }\n\t\t\tlabel={ __( 'Hex color' ) }\n\t\t\thideLabelFromVision\n\t\t\t__unstableStateReducer={ stateReducer }\n\t\t/>\n\t);\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/color-picker/hex-input.tsx"],"names":["HexInput","color","onChange","enableAlpha","handleChange","nextValue","hexValue","startsWith","stateReducer","state","action","nativeEvent","payload","event","inputType","value","slice","toUpperCase","Text","COLORS","ui","theme","toHex"],"mappings":";;;;;;;;;AAGA;;AAKA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAjBA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAcO,MAAMA,QAAQ,GAAG,QAAuD;AAAA,MAArD;AAAEC,IAAAA,KAAF;AAASC,IAAAA,QAAT;AAAmBC,IAAAA;AAAnB,GAAqD;;AAC9E,QAAMC,YAAY,GAAKC,SAAF,IAAqC;AACzD,QAAK,CAAEA,SAAP,EAAmB;AACnB,UAAMC,QAAQ,GAAGD,SAAS,CAACE,UAAV,CAAsB,GAAtB,IACdF,SADc,GAEd,MAAMA,SAFT;AAIAH,IAAAA,QAAQ,CAAE,oBAAQI,QAAR,CAAF,CAAR;AACA,GAPD;;AASA,QAAME,YAA0B,GAAG,CAAEC,KAAF,EAASC,MAAT,KAAqB;AAAA;;AACvD,UAAMC,WAAW,sBAAGD,MAAM,CAACE,OAAV,6EAAG,gBAAgBC,KAAnB,0DAAG,sBAAuBF,WAA3C;;AAEA,QAAK,uBAAsBA,WAAtB,aAAsBA,WAAtB,uBAAsBA,WAAW,CAAEG,SAAnC,CAAL,EAAoD;AACnD,aAAO,EAAE,GAAGL;AAAL,OAAP;AACA;;AAED,UAAMM,KAAK,GAAG,gBAAAN,KAAK,CAACM,KAAN,sDAAaR,UAAb,CAAyB,GAAzB,IACXE,KAAK,CAACM,KAAN,CAAYC,KAAZ,CAAmB,CAAnB,EAAuBC,WAAvB,EADW,oBAEXR,KAAK,CAACM,KAFK,kDAEX,cAAaE,WAAb,EAFH;AAIA,WAAO,EAAE,GAAGR,KAAL;AAAYM,MAAAA;AAAZ,KAAP;AACA,GAZD;;AAcA,SACC,4BAAC,0BAAD;AACC,IAAA,MAAM,EACL,4BAAC,cAAD;AACC,MAAA,EAAE,EAAGG,UADN;AAEC,MAAA,UAAU,EAAG,kBAAO,GAAP,CAFd;AAGC,MAAA,KAAK,EAAGC,qBAAOC,EAAP,CAAUC,KAHnB;AAIC,MAAA,UAAU,EAAG;AAJd,WAFF;AAWC,IAAA,KAAK,EAAGpB,KAAK,CAACqB,KAAN,GAAcN,KAAd,CAAqB,CAArB,EAAyBC,WAAzB,EAXT;AAYC,IAAA,QAAQ,EAAGb,YAZZ;AAaC,IAAA,SAAS,EAAGD,WAAW,GAAG,CAAH,GAAO,CAb/B;AAcC,IAAA,KAAK,EAAG,cAAI,WAAJ,CAdT;AAeC,IAAA,mBAAmB,MAfpB;AAgBC,IAAA,sBAAsB,EAAGK,YAhB1B;AAiBC,IAAA,oBAAoB,EAAC;AAjBtB,IADD;AAqBA,CA7CM","sourcesContent":["/**\n * External dependencies\n */\nimport { colord, Colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { InputControl } from '../input-control';\nimport { Text } from '../text';\nimport { Spacer } from '../spacer';\nimport { space } from '../ui/utils/space';\nimport { COLORS } from '../utils/colors-values';\nimport type { StateReducer } from '../input-control/reducer/state';\n\ninterface HexInputProps {\n\tcolor: Colord;\n\tonChange: ( nextColor: Colord ) => void;\n\tenableAlpha: boolean;\n}\n\nexport const HexInput = ( { color, onChange, enableAlpha }: HexInputProps ) => {\n\tconst handleChange = ( nextValue: string | undefined ) => {\n\t\tif ( ! nextValue ) return;\n\t\tconst hexValue = nextValue.startsWith( '#' )\n\t\t\t? nextValue\n\t\t\t: '#' + nextValue;\n\n\t\tonChange( colord( hexValue ) );\n\t};\n\n\tconst stateReducer: StateReducer = ( state, action ) => {\n\t\tconst nativeEvent = action.payload?.event?.nativeEvent as InputEvent;\n\n\t\tif ( 'insertFromPaste' !== nativeEvent?.inputType ) {\n\t\t\treturn { ...state };\n\t\t}\n\n\t\tconst value = state.value?.startsWith( '#' )\n\t\t\t? state.value.slice( 1 ).toUpperCase()\n\t\t\t: state.value?.toUpperCase();\n\n\t\treturn { ...state, value };\n\t};\n\n\treturn (\n\t\t<InputControl\n\t\t\tprefix={\n\t\t\t\t<Spacer\n\t\t\t\t\tas={ Text }\n\t\t\t\t\tmarginLeft={ space( 3.5 ) }\n\t\t\t\t\tcolor={ COLORS.ui.theme }\n\t\t\t\t\tlineHeight={ 1 }\n\t\t\t\t>\n\t\t\t\t\t#\n\t\t\t\t</Spacer>\n\t\t\t}\n\t\t\tvalue={ color.toHex().slice( 1 ).toUpperCase() }\n\t\t\tonChange={ handleChange }\n\t\t\tmaxLength={ enableAlpha ? 9 : 7 }\n\t\t\tlabel={ __( 'Hex color' ) }\n\t\t\thideLabelFromVision\n\t\t\t__unstableStateReducer={ stateReducer }\n\t\t\t__unstableInputWidth=\"9em\"\n\t\t/>\n\t);\n};\n"]}
@@ -54,7 +54,6 @@ function ColorPicker(_ref) {
54
54
  onHandleHardwareButtonPress,
55
55
  bottomLabelText
56
56
  } = _ref;
57
- const didMount = (0, _element.useRef)(false);
58
57
  const isIOS = _reactNative.Platform.OS === 'ios';
59
58
  const hitSlop = {
60
59
  top: 22,
@@ -89,19 +88,32 @@ function ColorPicker(_ref) {
89
88
  const colorTextStyle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.colorText, _style.default.colorTextDark);
90
89
  const selectColorTextStyle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.selectColorText, _style.default.selectColorTextDark);
91
90
  const footerStyle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.footer, _style.default.footerDark);
92
- const currentColor = (0, _colord.colord)({
93
- h: hue,
94
- s: sat * 100,
95
- v: val * 100
96
- }).toHex();
97
- (0, _element.useEffect)(() => {
98
- if (!didMount.current) {
99
- didMount.current = true;
100
- return;
101
- }
102
91
 
103
- setColor(currentColor);
104
- }, [currentColor]);
92
+ const combineToHex = function () {
93
+ let h = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : hue;
94
+ let s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : sat;
95
+ let v = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : val;
96
+ return (0, _colord.colord)({
97
+ h,
98
+ s: s * 100,
99
+ v: v * 100
100
+ }).toHex();
101
+ };
102
+
103
+ const currentColor = combineToHex();
104
+
105
+ const updateColor = _ref2 => {
106
+ let {
107
+ hue: h,
108
+ saturation: s,
109
+ value: v
110
+ } = _ref2;
111
+ if (h !== undefined) setHue(h);
112
+ if (s !== undefined) setSaturation(s);
113
+ if (v !== undefined) setValue(v);
114
+ setColor(combineToHex(h, s, v));
115
+ };
116
+
105
117
  (0, _element.useEffect)(() => {
106
118
  shouldEnableBottomSheetMaxHeight(false);
107
119
  onHandleClosingBottomSheet(() => {
@@ -116,24 +128,13 @@ function ColorPicker(_ref) {
116
128
 
117
129
  if (onHandleHardwareButtonPress) {
118
130
  onHandleHardwareButtonPress(onButtonPress);
119
- }
120
- }, []);
121
-
122
- function onHuePickerChange(_ref2) {
123
- let {
124
- hue: h
125
- } = _ref2;
126
- setHue(h);
127
- }
131
+ } // TODO: Revisit this to discover if there's a good reason for omitting
132
+ // the hook’s dependencies and running it a single time. Ideally there
133
+ // may be a way to refactor and obviate the disabled lint rule. If not,
134
+ // this comment should be replaced by one that explains the reasoning.
135
+ // eslint-disable-next-line react-hooks/exhaustive-deps
128
136
 
129
- function onSatValPickerChange(_ref3) {
130
- let {
131
- saturation: s,
132
- value: v
133
- } = _ref3;
134
- setSaturation(s);
135
- setValue(v);
136
- }
137
+ }, []);
137
138
 
138
139
  function onButtonPress(action) {
139
140
  onNavigationBack();
@@ -148,13 +149,13 @@ function ColorPicker(_ref) {
148
149
 
149
150
  return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_reactNativeHsvColorPicker.default, {
150
151
  huePickerHue: hue,
151
- onHuePickerDragMove: onHuePickerChange,
152
- onHuePickerPress: !isBottomSheetContentScrolling && onHuePickerChange,
152
+ onHuePickerDragMove: updateColor,
153
+ onHuePickerPress: !isBottomSheetContentScrolling && updateColor,
153
154
  satValPickerHue: hue,
154
155
  satValPickerSaturation: sat,
155
156
  satValPickerValue: val,
156
- onSatValPickerDragMove: onSatValPickerChange,
157
- onSatValPickerPress: !isBottomSheetContentScrolling && onSatValPickerChange,
157
+ onSatValPickerDragMove: updateColor,
158
+ onSatValPickerPress: !isBottomSheetContentScrolling && updateColor,
158
159
  onSatValPickerDragStart: () => {
159
160
  shouldEnableBottomSheetScroll(false);
160
161
  },