@wordpress/components 20.0.1-next.d6164808d3.0 → 20.0.2-next.957ca95e4c.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/CONTRIBUTING.md +12 -12
  3. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +12 -12
  4. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  5. package/build/autocomplete/get-default-use-items.js +7 -1
  6. package/build/autocomplete/get-default-use-items.js.map +1 -1
  7. package/build/autocomplete/index.js +3 -1
  8. package/build/autocomplete/index.js.map +1 -1
  9. package/build/card/card/component.js +6 -11
  10. package/build/card/card/component.js.map +1 -1
  11. package/build/card/card/hook.js +0 -10
  12. package/build/card/card/hook.js.map +1 -1
  13. package/build/card/card/index.js.map +1 -1
  14. package/build/card/card-body/component.js +7 -8
  15. package/build/card/card-body/component.js.map +1 -1
  16. package/build/card/card-body/hook.js +0 -4
  17. package/build/card/card-body/hook.js.map +1 -1
  18. package/build/card/card-body/index.js.map +1 -1
  19. package/build/card/card-divider/component.js +7 -8
  20. package/build/card/card-divider/component.js.map +1 -1
  21. package/build/card/card-divider/hook.js +0 -4
  22. package/build/card/card-divider/hook.js.map +1 -1
  23. package/build/card/card-divider/index.js.map +1 -1
  24. package/build/card/card-footer/component.js +7 -8
  25. package/build/card/card-footer/component.js.map +1 -1
  26. package/build/card/card-footer/hook.js +0 -4
  27. package/build/card/card-footer/hook.js.map +1 -1
  28. package/build/card/card-footer/index.js.map +1 -1
  29. package/build/card/card-header/component.js +7 -8
  30. package/build/card/card-header/component.js.map +1 -1
  31. package/build/card/card-header/hook.js +0 -4
  32. package/build/card/card-header/hook.js.map +1 -1
  33. package/build/card/card-header/index.js.map +1 -1
  34. package/build/card/card-media/component.js +7 -7
  35. package/build/card/card-media/component.js.map +1 -1
  36. package/build/card/card-media/hook.js +0 -4
  37. package/build/card/card-media/hook.js.map +1 -1
  38. package/build/card/card-media/index.js.map +1 -1
  39. package/build/card/context.js.map +1 -1
  40. package/build/card/index.js.map +1 -1
  41. package/build/card/styles.js +17 -17
  42. package/build/card/styles.js.map +1 -1
  43. package/build/clipboard-button/index.js +16 -1
  44. package/build/clipboard-button/index.js.map +1 -1
  45. package/build/color-palette/index.js +6 -2
  46. package/build/color-palette/index.js.map +1 -1
  47. package/build/custom-gradient-picker/index.js +11 -0
  48. package/build/custom-gradient-picker/index.js.map +1 -1
  49. package/build/date-time/date/index.js +25 -6
  50. package/build/date-time/date/index.js.map +1 -1
  51. package/build/date-time/date/styles.js +22 -12
  52. package/build/date-time/date/styles.js.map +1 -1
  53. package/build/date-time/date-time/index.js +1 -3
  54. package/build/date-time/date-time/index.js.map +1 -1
  55. package/build/date-time/date-time/styles.js +19 -5
  56. package/build/date-time/date-time/styles.js.map +1 -1
  57. package/build/date-time/time/styles.js +12 -12
  58. package/build/date-time/time/styles.js.map +1 -1
  59. package/build/drop-zone/index.js +2 -4
  60. package/build/drop-zone/index.js.map +1 -1
  61. package/build/dropdown-menu/index.js +1 -3
  62. package/build/dropdown-menu/index.js.map +1 -1
  63. package/build/dropdown-menu/index.native.js +0 -17
  64. package/build/dropdown-menu/index.native.js.map +1 -1
  65. package/build/focal-point-picker/controls.js +4 -4
  66. package/build/focal-point-picker/controls.js.map +1 -1
  67. package/build/focal-point-picker/focal-point.js +4 -6
  68. package/build/focal-point-picker/focal-point.js.map +1 -1
  69. package/build/focal-point-picker/grid.js +6 -35
  70. package/build/focal-point-picker/grid.js.map +1 -1
  71. package/build/focal-point-picker/index.js +160 -330
  72. package/build/focal-point-picker/index.js.map +1 -1
  73. package/build/focal-point-picker/media.js +4 -34
  74. package/build/focal-point-picker/media.js.map +1 -1
  75. package/build/focal-point-picker/styles/focal-point-picker-style.js +14 -14
  76. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  77. package/build/focal-point-picker/utils.js +2 -6
  78. package/build/focal-point-picker/utils.js.map +1 -1
  79. package/build/focusable-iframe/index.js +6 -0
  80. package/build/focusable-iframe/index.js.map +1 -1
  81. package/build/form-token-field/index.js +18 -15
  82. package/build/form-token-field/index.js.map +1 -1
  83. package/build/gradient-picker/index.js +12 -1
  84. package/build/gradient-picker/index.js.map +1 -1
  85. package/build/guide/index.js +8 -6
  86. package/build/guide/index.js.map +1 -1
  87. package/build/higher-order/with-constrained-tabbing/index.js +1 -1
  88. package/build/higher-order/with-constrained-tabbing/index.js.map +1 -1
  89. package/build/higher-order/with-spoken-messages/index.js +2 -0
  90. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  91. package/build/isolated-event-container/index.js +4 -0
  92. package/build/isolated-event-container/index.js.map +1 -1
  93. package/build/mobile/global-styles-context/utils.native.js +1 -1
  94. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  95. package/build/navigable-container/menu.js +3 -9
  96. package/build/navigable-container/menu.js.map +1 -1
  97. package/build/navigation/menu/menu-title-search.js +1 -3
  98. package/build/navigation/menu/menu-title-search.js.map +1 -1
  99. package/build/palette-edit/index.js +6 -2
  100. package/build/palette-edit/index.js.map +1 -1
  101. package/build/popover/index.js +15 -35
  102. package/build/popover/index.js.map +1 -1
  103. package/build/text-highlight/index.js +4 -4
  104. package/build/text-highlight/index.js.map +1 -1
  105. package/build/toggle-group-control/toggle-group-control/component.js +1 -1
  106. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  107. package/build/toggle-group-control/toggle-group-control/styles.js +23 -8
  108. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  109. package/build/tooltip/index.js +1 -7
  110. package/build/tooltip/index.js.map +1 -1
  111. package/build/tree-grid/index.js +4 -10
  112. package/build/tree-grid/index.js.map +1 -1
  113. package/build/utils/strings.js +13 -0
  114. package/build/utils/strings.js.map +1 -1
  115. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +12 -12
  116. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  117. package/build-module/autocomplete/get-default-use-items.js +6 -1
  118. package/build-module/autocomplete/get-default-use-items.js.map +1 -1
  119. package/build-module/autocomplete/index.js +2 -1
  120. package/build-module/autocomplete/index.js.map +1 -1
  121. package/build-module/card/card/component.js +5 -10
  122. package/build-module/card/card/component.js.map +1 -1
  123. package/build-module/card/card/hook.js +0 -9
  124. package/build-module/card/card/hook.js.map +1 -1
  125. package/build-module/card/card/index.js.map +1 -1
  126. package/build-module/card/card-body/component.js +7 -8
  127. package/build-module/card/card-body/component.js.map +1 -1
  128. package/build-module/card/card-body/hook.js +0 -4
  129. package/build-module/card/card-body/hook.js.map +1 -1
  130. package/build-module/card/card-body/index.js.map +1 -1
  131. package/build-module/card/card-divider/component.js +7 -8
  132. package/build-module/card/card-divider/component.js.map +1 -1
  133. package/build-module/card/card-divider/hook.js +0 -4
  134. package/build-module/card/card-divider/hook.js.map +1 -1
  135. package/build-module/card/card-divider/index.js.map +1 -1
  136. package/build-module/card/card-footer/component.js +7 -8
  137. package/build-module/card/card-footer/component.js.map +1 -1
  138. package/build-module/card/card-footer/hook.js +0 -4
  139. package/build-module/card/card-footer/hook.js.map +1 -1
  140. package/build-module/card/card-footer/index.js.map +1 -1
  141. package/build-module/card/card-header/component.js +7 -8
  142. package/build-module/card/card-header/component.js.map +1 -1
  143. package/build-module/card/card-header/hook.js +0 -4
  144. package/build-module/card/card-header/hook.js.map +1 -1
  145. package/build-module/card/card-header/index.js.map +1 -1
  146. package/build-module/card/card-media/component.js +7 -7
  147. package/build-module/card/card-media/component.js.map +1 -1
  148. package/build-module/card/card-media/hook.js +0 -4
  149. package/build-module/card/card-media/hook.js.map +1 -1
  150. package/build-module/card/card-media/index.js.map +1 -1
  151. package/build-module/card/context.js.map +1 -1
  152. package/build-module/card/index.js.map +1 -1
  153. package/build-module/card/styles.js +17 -17
  154. package/build-module/card/styles.js.map +1 -1
  155. package/build-module/clipboard-button/index.js +17 -1
  156. package/build-module/clipboard-button/index.js.map +1 -1
  157. package/build-module/color-palette/index.js +5 -2
  158. package/build-module/color-palette/index.js.map +1 -1
  159. package/build-module/custom-gradient-picker/index.js +10 -0
  160. package/build-module/custom-gradient-picker/index.js.map +1 -1
  161. package/build-module/date-time/date/index.js +27 -8
  162. package/build-module/date-time/date/index.js.map +1 -1
  163. package/build-module/date-time/date/styles.js +21 -5
  164. package/build-module/date-time/date/styles.js.map +1 -1
  165. package/build-module/date-time/date-time/index.js +2 -3
  166. package/build-module/date-time/date-time/index.js.map +1 -1
  167. package/build-module/date-time/date-time/styles.js +20 -1
  168. package/build-module/date-time/date-time/styles.js.map +1 -1
  169. package/build-module/date-time/time/styles.js +12 -12
  170. package/build-module/date-time/time/styles.js.map +1 -1
  171. package/build-module/drop-zone/index.js +2 -3
  172. package/build-module/drop-zone/index.js.map +1 -1
  173. package/build-module/dropdown-menu/index.js +1 -2
  174. package/build-module/dropdown-menu/index.js.map +1 -1
  175. package/build-module/dropdown-menu/index.native.js +0 -16
  176. package/build-module/dropdown-menu/index.native.js.map +1 -1
  177. package/build-module/focal-point-picker/controls.js +4 -4
  178. package/build-module/focal-point-picker/controls.js.map +1 -1
  179. package/build-module/focal-point-picker/focal-point.js +4 -6
  180. package/build-module/focal-point-picker/focal-point.js.map +1 -1
  181. package/build-module/focal-point-picker/grid.js +6 -34
  182. package/build-module/focal-point-picker/grid.js.map +1 -1
  183. package/build-module/focal-point-picker/index.js +158 -325
  184. package/build-module/focal-point-picker/index.js.map +1 -1
  185. package/build-module/focal-point-picker/media.js +4 -36
  186. package/build-module/focal-point-picker/media.js.map +1 -1
  187. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +13 -14
  188. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  189. package/build-module/focal-point-picker/utils.js +2 -6
  190. package/build-module/focal-point-picker/utils.js.map +1 -1
  191. package/build-module/focusable-iframe/index.js +6 -0
  192. package/build-module/focusable-iframe/index.js.map +1 -1
  193. package/build-module/form-token-field/index.js +18 -14
  194. package/build-module/form-token-field/index.js.map +1 -1
  195. package/build-module/gradient-picker/index.js +11 -1
  196. package/build-module/gradient-picker/index.js.map +1 -1
  197. package/build-module/guide/index.js +8 -5
  198. package/build-module/guide/index.js.map +1 -1
  199. package/build-module/higher-order/with-constrained-tabbing/index.js +1 -1
  200. package/build-module/higher-order/with-constrained-tabbing/index.js.map +1 -1
  201. package/build-module/higher-order/with-spoken-messages/index.js +2 -0
  202. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  203. package/build-module/isolated-event-container/index.js +3 -0
  204. package/build-module/isolated-event-container/index.js.map +1 -1
  205. package/build-module/mobile/global-styles-context/utils.native.js +2 -2
  206. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  207. package/build-module/navigable-container/menu.js +3 -8
  208. package/build-module/navigable-container/menu.js.map +1 -1
  209. package/build-module/navigation/menu/menu-title-search.js +1 -2
  210. package/build-module/navigation/menu/menu-title-search.js.map +1 -1
  211. package/build-module/palette-edit/index.js +6 -2
  212. package/build-module/palette-edit/index.js.map +1 -1
  213. package/build-module/popover/index.js +15 -35
  214. package/build-module/popover/index.js.map +1 -1
  215. package/build-module/text-highlight/index.js +2 -5
  216. package/build-module/text-highlight/index.js.map +1 -1
  217. package/build-module/toggle-group-control/toggle-group-control/component.js +2 -1
  218. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  219. package/build-module/toggle-group-control/toggle-group-control/styles.js +20 -6
  220. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  221. package/build-module/tooltip/index.js +1 -6
  222. package/build-module/tooltip/index.js.map +1 -1
  223. package/build-module/tree-grid/index.js +4 -9
  224. package/build-module/tree-grid/index.js.map +1 -1
  225. package/build-module/utils/strings.js +11 -0
  226. package/build-module/utils/strings.js.map +1 -1
  227. package/build-style/style-rtl.css +2 -21
  228. package/build-style/style.css +2 -21
  229. package/build-types/animation/index.d.ts +2 -0
  230. package/build-types/animation/index.d.ts.map +1 -0
  231. package/build-types/card/card/component.d.ts +3 -3
  232. package/build-types/card/card/component.d.ts.map +1 -1
  233. package/build-types/card/card/hook.d.ts +7 -2
  234. package/build-types/card/card/hook.d.ts.map +1 -1
  235. package/build-types/card/card/index.d.ts +2 -2
  236. package/build-types/card/card/index.d.ts.map +1 -1
  237. package/build-types/card/card-body/component.d.ts +3 -3
  238. package/build-types/card/card-body/component.d.ts.map +1 -1
  239. package/build-types/card/card-body/hook.d.ts +5 -2
  240. package/build-types/card/card-body/hook.d.ts.map +1 -1
  241. package/build-types/card/card-body/index.d.ts +2 -2
  242. package/build-types/card/card-body/index.d.ts.map +1 -1
  243. package/build-types/card/card-divider/component.d.ts +3 -3
  244. package/build-types/card/card-divider/component.d.ts.map +1 -1
  245. package/build-types/card/card-divider/hook.d.ts +5 -2
  246. package/build-types/card/card-divider/hook.d.ts.map +1 -1
  247. package/build-types/card/card-divider/index.d.ts +2 -2
  248. package/build-types/card/card-divider/index.d.ts.map +1 -1
  249. package/build-types/card/card-footer/component.d.ts +3 -3
  250. package/build-types/card/card-footer/component.d.ts.map +1 -1
  251. package/build-types/card/card-footer/hook.d.ts +5 -2
  252. package/build-types/card/card-footer/hook.d.ts.map +1 -1
  253. package/build-types/card/card-footer/index.d.ts +2 -2
  254. package/build-types/card/card-footer/index.d.ts.map +1 -1
  255. package/build-types/card/card-header/component.d.ts +3 -3
  256. package/build-types/card/card-header/component.d.ts.map +1 -1
  257. package/build-types/card/card-header/hook.d.ts +5 -2
  258. package/build-types/card/card-header/hook.d.ts.map +1 -1
  259. package/build-types/card/card-header/index.d.ts +2 -2
  260. package/build-types/card/card-header/index.d.ts.map +1 -1
  261. package/build-types/card/card-media/component.d.ts +3 -4
  262. package/build-types/card/card-media/component.d.ts.map +1 -1
  263. package/build-types/card/card-media/hook.d.ts +6 -5
  264. package/build-types/card/card-media/hook.d.ts.map +1 -1
  265. package/build-types/card/card-media/index.d.ts +2 -2
  266. package/build-types/card/card-media/index.d.ts.map +1 -1
  267. package/build-types/card/context.d.ts +3 -2
  268. package/build-types/card/context.d.ts.map +1 -1
  269. package/build-types/card/index.d.ts +6 -6
  270. package/build-types/card/index.d.ts.map +1 -1
  271. package/build-types/card/stories/index.d.ts +12 -0
  272. package/build-types/card/stories/index.d.ts.map +1 -0
  273. package/build-types/card/styles.d.ts +20 -22
  274. package/build-types/card/styles.d.ts.map +1 -1
  275. package/build-types/card/test/index.d.ts +2 -0
  276. package/build-types/card/test/index.d.ts.map +1 -0
  277. package/build-types/card/types.d.ts +7 -1
  278. package/build-types/card/types.d.ts.map +1 -1
  279. package/build-types/clipboard-button/index.d.ts +16 -0
  280. package/build-types/clipboard-button/index.d.ts.map +1 -0
  281. package/build-types/color-palette/index.d.ts.map +1 -1
  282. package/build-types/composite/index.d.ts +2 -0
  283. package/build-types/composite/index.d.ts.map +1 -0
  284. package/build-types/date-time/date/index.d.ts +1 -1
  285. package/build-types/date-time/date/index.d.ts.map +1 -1
  286. package/build-types/date-time/date/styles.d.ts +4 -0
  287. package/build-types/date-time/date/styles.d.ts.map +1 -1
  288. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  289. package/build-types/date-time/date-time/styles.d.ts +13 -0
  290. package/build-types/date-time/date-time/styles.d.ts.map +1 -1
  291. package/build-types/date-time/time/styles.d.ts.map +1 -1
  292. package/build-types/disclosure/index.d.ts +2 -0
  293. package/build-types/disclosure/index.d.ts.map +1 -0
  294. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  295. package/build-types/focusable-iframe/index.d.ts +8 -0
  296. package/build-types/focusable-iframe/index.d.ts.map +1 -0
  297. package/build-types/form-token-field/index.d.ts.map +1 -1
  298. package/build-types/form-token-field/test/index.d.ts +2 -0
  299. package/build-types/form-token-field/test/index.d.ts.map +1 -0
  300. package/build-types/higher-order/with-constrained-tabbing/index.d.ts +3 -0
  301. package/build-types/higher-order/with-constrained-tabbing/index.d.ts.map +1 -0
  302. package/build-types/higher-order/with-spoken-messages/index.d.ts +4 -0
  303. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -0
  304. package/build-types/isolated-event-container/index.d.ts +3 -0
  305. package/build-types/isolated-event-container/index.d.ts.map +1 -0
  306. package/build-types/mobile/inserter-button/sparkles.d.ts +3 -0
  307. package/build-types/mobile/inserter-button/sparkles.d.ts.map +1 -0
  308. package/build-types/navigable-container/menu.d.ts.map +1 -1
  309. package/build-types/popover/index.d.ts +0 -1
  310. package/build-types/popover/index.d.ts.map +1 -1
  311. package/build-types/radio-context/index.d.ts +6 -0
  312. package/build-types/radio-context/index.d.ts.map +1 -0
  313. package/build-types/text-highlight/index.d.ts +0 -3
  314. package/build-types/text-highlight/index.d.ts.map +1 -1
  315. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  316. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +4 -0
  317. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  318. package/build-types/tooltip/index.d.ts.map +1 -1
  319. package/build-types/utils/strings.d.ts +8 -0
  320. package/build-types/utils/strings.d.ts.map +1 -1
  321. package/package.json +17 -17
  322. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +1 -0
  323. package/src/autocomplete/get-default-use-items.js +6 -1
  324. package/src/autocomplete/index.js +2 -1
  325. package/src/card/card/{component.js → component.tsx} +13 -9
  326. package/src/card/card/{hook.js → hook.ts} +11 -11
  327. package/src/card/card/{index.js → index.ts} +0 -0
  328. package/src/card/card-body/{component.js → component.tsx} +13 -9
  329. package/src/card/card-body/{hook.js → hook.ts} +5 -5
  330. package/src/card/card-body/{index.js → index.ts} +0 -0
  331. package/src/card/card-divider/{component.js → component.tsx} +16 -10
  332. package/src/card/card-divider/{hook.js → hook.ts} +5 -5
  333. package/src/card/card-divider/{index.js → index.ts} +0 -0
  334. package/src/card/card-footer/{component.js → component.tsx} +13 -9
  335. package/src/card/card-footer/{hook.js → hook.ts} +5 -5
  336. package/src/card/card-footer/{index.js → index.ts} +0 -0
  337. package/src/card/card-header/{component.js → component.tsx} +13 -9
  338. package/src/card/card-header/{hook.js → hook.ts} +5 -5
  339. package/src/card/card-header/{index.js → index.ts} +0 -0
  340. package/src/card/card-media/{component.js → component.tsx} +13 -8
  341. package/src/card/card-media/{hook.js → hook.ts} +5 -5
  342. package/src/card/card-media/{index.js → index.ts} +0 -0
  343. package/src/card/{context.js → context.ts} +0 -0
  344. package/src/card/{index.js → index.ts} +0 -0
  345. package/src/card/stories/index.tsx +75 -0
  346. package/src/card/{styles.js → styles.ts} +0 -0
  347. package/src/card/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  348. package/src/card/test/{index.js → index.tsx} +3 -3
  349. package/src/card/types.ts +8 -1
  350. package/src/clipboard-button/index.js +13 -0
  351. package/src/color-palette/index.js +8 -5
  352. package/src/color-palette/style.scss +0 -14
  353. package/src/color-palette/test/__snapshots__/index.js.snap +11 -4
  354. package/src/custom-gradient-picker/index.js +12 -0
  355. package/src/custom-gradient-picker/stories/index.js +3 -0
  356. package/src/date-time/date/index.tsx +26 -6
  357. package/src/date-time/date/styles.ts +6 -0
  358. package/src/date-time/date/test/index.tsx +6 -2
  359. package/src/date-time/date-time/index.tsx +3 -4
  360. package/src/date-time/date-time/styles.ts +9 -0
  361. package/src/date-time/time/styles.ts +1 -0
  362. package/src/drop-zone/index.js +2 -3
  363. package/src/dropdown-menu/index.js +1 -2
  364. package/src/dropdown-menu/index.native.js +0 -13
  365. package/src/dropdown-menu/test/index.js +54 -58
  366. package/src/focal-point-picker/README.md +3 -6
  367. package/src/focal-point-picker/controls.js +4 -4
  368. package/src/focal-point-picker/focal-point.js +2 -8
  369. package/src/focal-point-picker/grid.js +5 -41
  370. package/src/focal-point-picker/index.js +161 -303
  371. package/src/focal-point-picker/media.js +4 -28
  372. package/src/focal-point-picker/styles/focal-point-picker-style.js +5 -8
  373. package/src/focal-point-picker/test/index.js +1 -1
  374. package/src/focal-point-picker/utils.js +2 -6
  375. package/src/focusable-iframe/index.js +5 -0
  376. package/src/form-token-field/index.tsx +17 -23
  377. package/src/form-token-field/test/index.tsx +2106 -0
  378. package/src/gradient-picker/README.md +9 -0
  379. package/src/gradient-picker/index.js +9 -0
  380. package/src/gradient-picker/stories/index.js +1 -0
  381. package/src/guide/index.js +6 -3
  382. package/src/guide/test/index.js +138 -1
  383. package/src/higher-order/with-constrained-tabbing/index.js +1 -1
  384. package/src/higher-order/with-spoken-messages/index.js +2 -0
  385. package/src/isolated-event-container/index.js +3 -0
  386. package/src/mobile/global-styles-context/utils.native.js +7 -2
  387. package/src/navigable-container/menu.js +3 -7
  388. package/src/navigation/menu/menu-title-search.js +1 -2
  389. package/src/palette-edit/index.js +14 -10
  390. package/src/palette-edit/style.scss +3 -11
  391. package/src/placeholder/style.scss +1 -4
  392. package/src/popover/index.js +17 -35
  393. package/src/popover/stories/index.js +0 -1
  394. package/src/text-highlight/index.tsx +1 -5
  395. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +62 -44
  396. package/src/toggle-group-control/toggle-group-control/component.tsx +3 -2
  397. package/src/toggle-group-control/toggle-group-control/styles.ts +5 -0
  398. package/src/tooltip/index.js +1 -5
  399. package/src/tree-grid/index.js +4 -9
  400. package/src/utils/strings.ts +11 -0
  401. package/tsconfig.json +45 -76
  402. package/tsconfig.tsbuildinfo +1 -1
  403. package/build/ui/__storybook-utils/example-grid.js +0 -88
  404. package/build/ui/__storybook-utils/example-grid.js.map +0 -1
  405. package/build/ui/__storybook-utils/index.js +0 -19
  406. package/build/ui/__storybook-utils/index.js.map +0 -1
  407. package/build/ui/__storybook-utils/page.js +0 -43
  408. package/build/ui/__storybook-utils/page.js.map +0 -1
  409. package/build/utils/keyboard.js +0 -41
  410. package/build/utils/keyboard.js.map +0 -1
  411. package/build-module/ui/__storybook-utils/example-grid.js +0 -69
  412. package/build-module/ui/__storybook-utils/example-grid.js.map +0 -1
  413. package/build-module/ui/__storybook-utils/index.js +0 -2
  414. package/build-module/ui/__storybook-utils/index.js.map +0 -1
  415. package/build-module/ui/__storybook-utils/page.js +0 -32
  416. package/build-module/ui/__storybook-utils/page.js.map +0 -1
  417. package/build-module/utils/keyboard.js +0 -33
  418. package/build-module/utils/keyboard.js.map +0 -1
  419. package/build-types/form-token-field/test/lib/fixtures.d.ts +0 -26
  420. package/build-types/form-token-field/test/lib/fixtures.d.ts.map +0 -1
  421. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts +0 -21
  422. package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts.map +0 -1
  423. package/build-types/utils/keyboard.d.ts +0 -12
  424. package/build-types/utils/keyboard.d.ts.map +0 -1
  425. package/src/card/stories/index.js +0 -209
  426. package/src/form-token-field/test/index.js +0 -442
  427. package/src/form-token-field/test/lib/fixtures.js +0 -89
  428. package/src/form-token-field/test/lib/token-field-wrapper.tsx +0 -71
  429. package/src/guide/test/page-control.js +0 -40
  430. package/src/ui/__storybook-utils/example-grid.js +0 -61
  431. package/src/ui/__storybook-utils/index.js +0 -1
  432. package/src/ui/__storybook-utils/page.js +0 -29
  433. package/src/utils/keyboard.js +0 -28
  434. package/src/utils/test/keyboard.js +0 -34
@@ -12,16 +12,14 @@ import { FocalPointWrapper, PointerIconPathFill, PointerIconPathOutline, Pointer
12
12
  import classnames from 'classnames';
13
13
  export default function FocalPoint(_ref) {
14
14
  let {
15
- coordinates = {
16
- left: '50%',
17
- top: '50%'
18
- },
15
+ left = '50%',
16
+ top = '50%',
19
17
  ...props
20
18
  } = _ref;
21
19
  const classes = classnames('components-focal-point-picker__icon_container');
22
20
  const style = {
23
- left: coordinates.left,
24
- top: coordinates.top
21
+ left,
22
+ top
25
23
  };
26
24
  return createElement(FocalPointWrapper, _extends({}, props, {
27
25
  className: classes,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/focal-point-picker/focal-point.js"],"names":["FocalPointWrapper","PointerIconPathFill","PointerIconPathOutline","PointerIconSVG","classnames","FocalPoint","coordinates","left","top","props","classes","style"],"mappings":";;;AAAA;AACA;AACA;AACA,SACCA,iBADD,EAECC,mBAFD,EAGCC,sBAHD,EAICC,cAJD,QAKO,4BALP;AAOA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,eAAe,SAASC,UAAT,OAGX;AAAA,MAHgC;AACnCC,IAAAA,WAAW,GAAG;AAAEC,MAAAA,IAAI,EAAE,KAAR;AAAeC,MAAAA,GAAG,EAAE;AAApB,KADqB;AAEnC,OAAGC;AAFgC,GAGhC;AACH,QAAMC,OAAO,GAAGN,UAAU,CACzB,+CADyB,CAA1B;AAIA,QAAMO,KAAK,GAAG;AACbJ,IAAAA,IAAI,EAAED,WAAW,CAACC,IADL;AAEbC,IAAAA,GAAG,EAAEF,WAAW,CAACE;AAFJ,GAAd;AAKA,SACC,cAAC,iBAAD,eAAwBC,KAAxB;AAAgC,IAAA,SAAS,EAAGC,OAA5C;AAAsD,IAAA,KAAK,EAAGC;AAA9D,MACC,cAAC,cAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,KAAK,EAAC,4BAFP;AAGC,IAAA,OAAO,EAAC;AAHT,KAKC,cAAC,sBAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,CAAC,EAAC;AAFH,IALD,EASC,cAAC,mBAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,CAAC,EAAC;AAFH,IATD,CADD,CADD;AAkBA","sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tFocalPointWrapper,\n\tPointerIconPathFill,\n\tPointerIconPathOutline,\n\tPointerIconSVG,\n} from './styles/focal-point-style';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nexport default function FocalPoint( {\n\tcoordinates = { left: '50%', top: '50%' },\n\t...props\n} ) {\n\tconst classes = classnames(\n\t\t'components-focal-point-picker__icon_container'\n\t);\n\n\tconst style = {\n\t\tleft: coordinates.left,\n\t\ttop: coordinates.top,\n\t};\n\n\treturn (\n\t\t<FocalPointWrapper { ...props } className={ classes } style={ style }>\n\t\t\t<PointerIconSVG\n\t\t\t\tclassName=\"components-focal-point-picker__icon\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 30 30\"\n\t\t\t>\n\t\t\t\t<PointerIconPathOutline\n\t\t\t\t\tclassName=\"components-focal-point-picker__icon-outline\"\n\t\t\t\t\td=\"M15 1C7.3 1 1 7.3 1 15s6.3 14 14 14 14-6.3 14-14S22.7 1 15 1zm0 22c-4.4 0-8-3.6-8-8s3.6-8 8-8 8 3.6 8 8-3.6 8-8 8z\"\n\t\t\t\t/>\n\t\t\t\t<PointerIconPathFill\n\t\t\t\t\tclassName=\"components-focal-point-picker__icon-fill\"\n\t\t\t\t\td=\"M15 3C8.4 3 3 8.4 3 15s5.4 12 12 12 12-5.4 12-12S21.6 3 15 3zm0 22C9.5 25 5 20.5 5 15S9.5 5 15 5s10 4.5 10 10-4.5 10-10 10z\"\n\t\t\t\t/>\n\t\t\t</PointerIconSVG>\n\t\t</FocalPointWrapper>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/focal-point-picker/focal-point.js"],"names":["FocalPointWrapper","PointerIconPathFill","PointerIconPathOutline","PointerIconSVG","classnames","FocalPoint","left","top","props","classes","style"],"mappings":";;;AAAA;AACA;AACA;AACA,SACCA,iBADD,EAECC,mBAFD,EAGCC,sBAHD,EAICC,cAJD,QAKO,4BALP;AAOA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,eAAe,SAASC,UAAT,OAA+D;AAAA,MAA1C;AAAEC,IAAAA,IAAI,GAAG,KAAT;AAAgBC,IAAAA,GAAG,GAAG,KAAtB;AAA6B,OAAGC;AAAhC,GAA0C;AAC7E,QAAMC,OAAO,GAAGL,UAAU,CACzB,+CADyB,CAA1B;AAIA,QAAMM,KAAK,GAAG;AAAEJ,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAAd;AAEA,SACC,cAAC,iBAAD,eAAwBC,KAAxB;AAAgC,IAAA,SAAS,EAAGC,OAA5C;AAAsD,IAAA,KAAK,EAAGC;AAA9D,MACC,cAAC,cAAD;AACC,IAAA,SAAS,EAAC,qCADX;AAEC,IAAA,KAAK,EAAC,4BAFP;AAGC,IAAA,OAAO,EAAC;AAHT,KAKC,cAAC,sBAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,CAAC,EAAC;AAFH,IALD,EASC,cAAC,mBAAD;AACC,IAAA,SAAS,EAAC,0CADX;AAEC,IAAA,CAAC,EAAC;AAFH,IATD,CADD,CADD;AAkBA","sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tFocalPointWrapper,\n\tPointerIconPathFill,\n\tPointerIconPathOutline,\n\tPointerIconSVG,\n} from './styles/focal-point-style';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nexport default function FocalPoint( { left = '50%', top = '50%', ...props } ) {\n\tconst classes = classnames(\n\t\t'components-focal-point-picker__icon_container'\n\t);\n\n\tconst style = { left, top };\n\n\treturn (\n\t\t<FocalPointWrapper { ...props } className={ classes } style={ style }>\n\t\t\t<PointerIconSVG\n\t\t\t\tclassName=\"components-focal-point-picker__icon\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 30 30\"\n\t\t\t>\n\t\t\t\t<PointerIconPathOutline\n\t\t\t\t\tclassName=\"components-focal-point-picker__icon-outline\"\n\t\t\t\t\td=\"M15 1C7.3 1 1 7.3 1 15s6.3 14 14 14 14-6.3 14-14S22.7 1 15 1zm0 22c-4.4 0-8-3.6-8-8s3.6-8 8-8 8 3.6 8 8-3.6 8-8 8z\"\n\t\t\t\t/>\n\t\t\t\t<PointerIconPathFill\n\t\t\t\t\tclassName=\"components-focal-point-picker__icon-fill\"\n\t\t\t\t\td=\"M15 3C8.4 3 3 8.4 3 15s5.4 12 12 12 12-5.4 12-12S21.6 3 15 3zm0 22C9.5 25 5 20.5 5 15S9.5 5 15 5s10 4.5 10 10-4.5 10-10 10z\"\n\t\t\t\t/>\n\t\t\t</PointerIconSVG>\n\t\t</FocalPointWrapper>\n\t);\n}\n"]}
@@ -1,30 +1,21 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { createElement } from "@wordpress/element";
3
3
 
4
- /**
5
- * WordPress dependencies
6
- */
7
- import { useState } from '@wordpress/element';
8
4
  /**
9
5
  * Internal dependencies
10
6
  */
11
-
12
7
  import { GridView, GridLineX, GridLineY } from './styles/focal-point-picker-style';
13
- import { useUpdateEffect } from '../utils/hooks';
14
8
  export default function FocalPointPickerGrid(_ref) {
15
9
  let {
16
- bounds = {},
17
- value,
10
+ bounds,
18
11
  ...props
19
12
  } = _ref;
20
- const animationProps = useRevealAnimation(value);
21
- const style = {
22
- width: bounds.width,
23
- height: bounds.height
24
- };
25
- return createElement(GridView, _extends({}, props, animationProps, {
13
+ return createElement(GridView, _extends({}, props, {
26
14
  className: "components-focal-point-picker__grid",
27
- style: style
15
+ style: {
16
+ width: bounds.width,
17
+ height: bounds.height
18
+ }
28
19
  }), createElement(GridLineX, {
29
20
  style: {
30
21
  top: '33%'
@@ -43,23 +34,4 @@ export default function FocalPointPickerGrid(_ref) {
43
34
  }
44
35
  }));
45
36
  }
46
- /**
47
- * Custom hook that renders the "flash" animation whenever the value changes.
48
- *
49
- * @param {string} value Value of (box) side.
50
- */
51
-
52
- function useRevealAnimation(value) {
53
- const [isActive, setIsActive] = useState(false);
54
- useUpdateEffect(() => {
55
- setIsActive(true);
56
- const timeout = window.setTimeout(() => {
57
- setIsActive(false);
58
- }, 600);
59
- return () => window.clearTimeout(timeout);
60
- }, [value]);
61
- return {
62
- isActive
63
- };
64
- }
65
37
  //# sourceMappingURL=grid.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/focal-point-picker/grid.js"],"names":["useState","GridView","GridLineX","GridLineY","useUpdateEffect","FocalPointPickerGrid","bounds","value","props","animationProps","useRevealAnimation","style","width","height","top","left","isActive","setIsActive","timeout","window","setTimeout","clearTimeout"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,oBAAzB;AAEA;AACA;AACA;;AACA,SACCC,QADD,EAECC,SAFD,EAGCC,SAHD,QAIO,mCAJP;AAKA,SAASC,eAAT,QAAgC,gBAAhC;AAEA,eAAe,SAASC,oBAAT,OAIX;AAAA,MAJ0C;AAC7CC,IAAAA,MAAM,GAAG,EADoC;AAE7CC,IAAAA,KAF6C;AAG7C,OAAGC;AAH0C,GAI1C;AACH,QAAMC,cAAc,GAAGC,kBAAkB,CAAEH,KAAF,CAAzC;AACA,QAAMI,KAAK,GAAG;AACbC,IAAAA,KAAK,EAAEN,MAAM,CAACM,KADD;AAEbC,IAAAA,MAAM,EAAEP,MAAM,CAACO;AAFF,GAAd;AAKA,SACC,cAAC,QAAD,eACML,KADN,EAEMC,cAFN;AAGC,IAAA,SAAS,EAAC,qCAHX;AAIC,IAAA,KAAK,EAAGE;AAJT,MAMC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEG,MAAAA,GAAG,EAAE;AAAP;AAAnB,IAND,EAOC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEA,MAAAA,GAAG,EAAE;AAAP;AAAnB,IAPD,EAQC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEC,MAAAA,IAAI,EAAE;AAAR;AAAnB,IARD,EASC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEA,MAAAA,IAAI,EAAE;AAAR;AAAnB,IATD,CADD;AAaA;AAED;AACA;AACA;AACA;AACA;;AACA,SAASL,kBAAT,CAA6BH,KAA7B,EAAqC;AACpC,QAAM,CAAES,QAAF,EAAYC,WAAZ,IAA4BjB,QAAQ,CAAE,KAAF,CAA1C;AAEAI,EAAAA,eAAe,CAAE,MAAM;AACtBa,IAAAA,WAAW,CAAE,IAAF,CAAX;AACA,UAAMC,OAAO,GAAGC,MAAM,CAACC,UAAP,CAAmB,MAAM;AACxCH,MAAAA,WAAW,CAAE,KAAF,CAAX;AACA,KAFe,EAEb,GAFa,CAAhB;AAIA,WAAO,MAAME,MAAM,CAACE,YAAP,CAAqBH,OAArB,CAAb;AACA,GAPc,EAOZ,CAAEX,KAAF,CAPY,CAAf;AASA,SAAO;AACNS,IAAAA;AADM,GAAP;AAGA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGridView,\n\tGridLineX,\n\tGridLineY,\n} from './styles/focal-point-picker-style';\nimport { useUpdateEffect } from '../utils/hooks';\n\nexport default function FocalPointPickerGrid( {\n\tbounds = {},\n\tvalue,\n\t...props\n} ) {\n\tconst animationProps = useRevealAnimation( value );\n\tconst style = {\n\t\twidth: bounds.width,\n\t\theight: bounds.height,\n\t};\n\n\treturn (\n\t\t<GridView\n\t\t\t{ ...props }\n\t\t\t{ ...animationProps }\n\t\t\tclassName=\"components-focal-point-picker__grid\"\n\t\t\tstyle={ style }\n\t\t>\n\t\t\t<GridLineX style={ { top: '33%' } } />\n\t\t\t<GridLineX style={ { top: '66%' } } />\n\t\t\t<GridLineY style={ { left: '33%' } } />\n\t\t\t<GridLineY style={ { left: '66%' } } />\n\t\t</GridView>\n\t);\n}\n\n/**\n * Custom hook that renders the \"flash\" animation whenever the value changes.\n *\n * @param {string} value Value of (box) side.\n */\nfunction useRevealAnimation( value ) {\n\tconst [ isActive, setIsActive ] = useState( false );\n\n\tuseUpdateEffect( () => {\n\t\tsetIsActive( true );\n\t\tconst timeout = window.setTimeout( () => {\n\t\t\tsetIsActive( false );\n\t\t}, 600 );\n\n\t\treturn () => window.clearTimeout( timeout );\n\t}, [ value ] );\n\n\treturn {\n\t\tisActive,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/focal-point-picker/grid.js"],"names":["GridView","GridLineX","GridLineY","FocalPointPickerGrid","bounds","props","width","height","top","left"],"mappings":";;;AAAA;AACA;AACA;AACA,SACCA,QADD,EAECC,SAFD,EAGCC,SAHD,QAIO,mCAJP;AAMA,eAAe,SAASC,oBAAT,OAAsD;AAAA,MAAvB;AAAEC,IAAAA,MAAF;AAAU,OAAGC;AAAb,GAAuB;AACpE,SACC,cAAC,QAAD,eACMA,KADN;AAEC,IAAA,SAAS,EAAC,qCAFX;AAGC,IAAA,KAAK,EAAG;AACPC,MAAAA,KAAK,EAAEF,MAAM,CAACE,KADP;AAEPC,MAAAA,MAAM,EAAEH,MAAM,CAACG;AAFR;AAHT,MAQC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEC,MAAAA,GAAG,EAAE;AAAP;AAAnB,IARD,EASC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEA,MAAAA,GAAG,EAAE;AAAP;AAAnB,IATD,EAUC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEC,MAAAA,IAAI,EAAE;AAAR;AAAnB,IAVD,EAWC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAEA,MAAAA,IAAI,EAAE;AAAR;AAAnB,IAXD,CADD;AAeA","sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tGridView,\n\tGridLineX,\n\tGridLineY,\n} from './styles/focal-point-picker-style';\n\nexport default function FocalPointPickerGrid( { bounds, ...props } ) {\n\treturn (\n\t\t<GridView\n\t\t\t{ ...props }\n\t\t\tclassName=\"components-focal-point-picker__grid\"\n\t\t\tstyle={ {\n\t\t\t\twidth: bounds.width,\n\t\t\t\theight: bounds.height,\n\t\t\t} }\n\t\t>\n\t\t\t<GridLineX style={ { top: '33%' } } />\n\t\t\t<GridLineX style={ { top: '66%' } } />\n\t\t\t<GridLineY style={ { left: '33%' } } />\n\t\t\t<GridLineY style={ { left: '66%' } } />\n\t\t</GridView>\n\t);\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import { createElement } from "@wordpress/element";
2
3
 
3
4
  /**
@@ -9,8 +10,8 @@ import classnames from 'classnames';
9
10
  */
10
11
 
11
12
  import { __ } from '@wordpress/i18n';
12
- import { Component, createRef } from '@wordpress/element';
13
- import { withInstanceId } from '@wordpress/compose';
13
+ import { useEffect, useRef, useState } from '@wordpress/element';
14
+ import { __experimentalUseDragging as useDragging, useInstanceId, useIsomorphicLayoutEffect } from '@wordpress/compose';
14
15
  /**
15
16
  * Internal dependencies
16
17
  */
@@ -21,354 +22,186 @@ import FocalPoint from './focal-point';
21
22
  import Grid from './grid';
22
23
  import Media from './media';
23
24
  import { MediaWrapper, MediaContainer } from './styles/focal-point-picker-style';
24
- import { roundClamp } from '../utils/math';
25
25
  import { INITIAL_BOUNDS } from './utils';
26
- export class FocalPointPicker extends Component {
27
- constructor(props) {
28
- super(...arguments);
29
- this.state = {
30
- isDragging: false,
31
- bounds: INITIAL_BOUNDS,
32
- percentages: props.value
33
- };
34
- this.containerRef = createRef();
35
- this.mediaRef = createRef();
36
- this.onMouseDown = this.startDrag.bind(this);
37
- this.onMouseUp = this.stopDrag.bind(this);
38
- this.onKeyDown = this.onKeyDown.bind(this);
39
- this.onMouseMove = this.doDrag.bind(this);
40
-
41
- this.ifDraggingStop = () => {
42
- if (this.state.isDragging) {
43
- this.stopDrag();
44
- }
45
- };
46
-
47
- this.onChangeAtControls = value => {
48
- this.updateValue(value, () => {
49
- this.props.onChange(this.state.percentages);
50
- });
51
- };
52
-
53
- this.updateBounds = this.updateBounds.bind(this);
54
- this.updateValue = this.updateValue.bind(this);
55
- }
56
-
57
- componentDidMount() {
58
- const {
59
- defaultView
60
- } = this.containerRef.current.ownerDocument;
61
- defaultView.addEventListener('resize', this.updateBounds);
62
- /*
63
- * Set initial bound values.
64
- *
65
- * This is necessary for Safari:
66
- * https://github.com/WordPress/gutenberg/issues/25814
67
- */
68
-
69
- this.updateBounds();
70
- }
71
-
72
- componentDidUpdate(prevProps) {
73
- if (prevProps.url !== this.props.url) {
74
- this.ifDraggingStop();
26
+ import { useUpdateEffect } from '../utils/hooks';
27
+ const GRID_OVERLAY_TIMEOUT = 600;
28
+ export default function FocalPointPicker(_ref) {
29
+ let {
30
+ autoPlay = true,
31
+ className,
32
+ help,
33
+ label,
34
+ onChange,
35
+ onDrag,
36
+ onDragEnd,
37
+ onDragStart,
38
+ resolvePoint,
39
+ url,
40
+ value: valueProp = {
41
+ x: 0.5,
42
+ y: 0.5
75
43
  }
76
- /*
77
- * Handles cases where the incoming value changes.
78
- * An example is the values resetting based on an UNDO action.
79
- */
80
-
81
-
82
- const {
83
- isDragging,
84
- percentages: {
85
- x,
86
- y
87
- }
88
- } = this.state;
89
- const {
90
- value
91
- } = this.props;
92
-
93
- if (!isDragging && (value.x !== x || value.y !== y)) {
94
- this.setState({
95
- percentages: this.props.value
96
- });
44
+ } = _ref;
45
+ const [point, setPoint] = useState(valueProp);
46
+ const [showGridOverlay, setShowGridOverlay] = useState(false);
47
+ const {
48
+ startDrag,
49
+ endDrag,
50
+ isDragging
51
+ } = useDragging({
52
+ onDragStart: event => {
53
+ dragAreaRef.current.focus();
54
+ const value = getValueWithinDragArea(event);
55
+ onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(value, event);
56
+ setPoint(value);
57
+ },
58
+ onDragMove: event => {
59
+ // Prevents text-selection when dragging.
60
+ event.preventDefault();
61
+ const value = getValueWithinDragArea(event);
62
+ onDrag === null || onDrag === void 0 ? void 0 : onDrag(value, event);
63
+ setPoint(value);
64
+ },
65
+ onDragEnd: event => {
66
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event);
67
+ onChange === null || onChange === void 0 ? void 0 : onChange(point);
97
68
  }
98
- }
69
+ }); // Uses the internal point while dragging or else the value from props.
70
+
71
+ const {
72
+ x,
73
+ y
74
+ } = isDragging ? point : valueProp;
75
+ const dragAreaRef = useRef();
76
+ const [bounds, setBounds] = useState(INITIAL_BOUNDS);
77
+ const refUpdateBounds = useRef(() => {
78
+ const {
79
+ clientWidth: width,
80
+ clientHeight: height
81
+ } = dragAreaRef.current; // Falls back to initial bounds if the ref has no size. Since styles
82
+ // give the drag area dimensions even when the media has not loaded
83
+ // this should only happen in unit tests (jsdom).
99
84
 
100
- componentWillUnmount() {
85
+ setBounds(width > 0 && height > 0 ? {
86
+ width,
87
+ height
88
+ } : { ...INITIAL_BOUNDS
89
+ });
90
+ });
91
+ useEffect(() => {
92
+ const updateBounds = refUpdateBounds.current;
101
93
  const {
102
94
  defaultView
103
- } = this.containerRef.current.ownerDocument;
104
- defaultView.removeEventListener('resize', this.updateBounds);
105
- this.ifDraggingStop();
106
- }
107
-
108
- calculateBounds() {
109
- const bounds = INITIAL_BOUNDS;
110
-
111
- if (!this.mediaRef.current) {
112
- return bounds;
113
- } // Prevent division by zero when updateBounds runs in componentDidMount
95
+ } = dragAreaRef.current.ownerDocument;
96
+ defaultView.addEventListener('resize', updateBounds);
97
+ return () => defaultView.removeEventListener('resize', updateBounds);
98
+ }, []); // Updates the bounds to cover cases of unspecified media or load failures.
114
99
 
100
+ useIsomorphicLayoutEffect(() => void refUpdateBounds.current(), []);
115
101
 
116
- if (this.mediaRef.current.clientWidth === 0 || this.mediaRef.current.clientHeight === 0) {
117
- return bounds;
118
- }
119
-
120
- const dimensions = {
121
- width: this.mediaRef.current.clientWidth,
122
- height: this.mediaRef.current.clientHeight
123
- };
124
- const pickerDimensions = this.pickerDimensions();
125
- const widthRatio = pickerDimensions.width / dimensions.width;
126
- const heightRatio = pickerDimensions.height / dimensions.height;
127
-
128
- if (heightRatio >= widthRatio) {
129
- bounds.width = bounds.right = pickerDimensions.width;
130
- bounds.height = dimensions.height * widthRatio;
131
- bounds.top = (pickerDimensions.height - bounds.height) / 2;
132
- bounds.bottom = bounds.top + bounds.height;
133
- } else {
134
- bounds.height = bounds.bottom = pickerDimensions.height;
135
- bounds.width = dimensions.width * heightRatio;
136
- bounds.left = (pickerDimensions.width - bounds.width) / 2;
137
- bounds.right = bounds.left + bounds.width;
138
- }
139
-
140
- return bounds;
141
- }
142
-
143
- updateValue() {
144
- var _this$props$resolvePo, _this$props$resolvePo2, _this$props;
145
-
146
- let nextValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
147
- let callback = arguments.length > 1 ? arguments[1] : undefined;
148
- const resolvedValue = (_this$props$resolvePo = (_this$props$resolvePo2 = (_this$props = this.props).resolvePoint) === null || _this$props$resolvePo2 === void 0 ? void 0 : _this$props$resolvePo2.call(_this$props, nextValue)) !== null && _this$props$resolvePo !== void 0 ? _this$props$resolvePo : nextValue;
102
+ const getValueWithinDragArea = _ref2 => {
103
+ let {
104
+ clientX,
105
+ clientY,
106
+ shiftKey
107
+ } = _ref2;
149
108
  const {
150
- x,
151
- y
152
- } = resolvedValue;
153
- const nextPercentage = {
154
- x: parseFloat(x).toFixed(2),
155
- y: parseFloat(y).toFixed(2)
156
- };
157
- this.setState({
158
- percentages: nextPercentage
159
- }, callback);
160
- }
161
-
162
- updateBounds() {
163
- this.setState({
164
- bounds: this.calculateBounds()
165
- });
166
- }
109
+ top,
110
+ left
111
+ } = dragAreaRef.current.getBoundingClientRect();
112
+ let nextX = (clientX - left) / bounds.width;
113
+ let nextY = (clientY - top) / bounds.height; // Enables holding shift to jump values by 10%.
167
114
 
168
- startDrag(event) {
169
- var _this$props$onDragSta, _this$props2;
115
+ if (shiftKey) {
116
+ nextX = Math.round(nextX / 0.1) * 0.1;
117
+ nextY = Math.round(nextY / 0.1) * 0.1;
118
+ }
170
119
 
171
- event.persist();
172
- this.containerRef.current.focus();
173
- this.setState({
174
- isDragging: true
120
+ return getFinalValue({
121
+ x: nextX,
122
+ y: nextY
175
123
  });
176
- const {
177
- ownerDocument
178
- } = this.containerRef.current;
179
- ownerDocument.addEventListener('mouseup', this.onMouseUp);
180
- ownerDocument.addEventListener('mousemove', this.onMouseMove);
181
- const value = this.getValueFromPoint({
182
- x: event.pageX,
183
- y: event.pageY
184
- }, event.shiftKey);
185
- this.updateValue(value);
186
- (_this$props$onDragSta = (_this$props2 = this.props).onDragStart) === null || _this$props$onDragSta === void 0 ? void 0 : _this$props$onDragSta.call(_this$props2, value, event);
187
- }
124
+ };
188
125
 
189
- stopDrag(event) {
190
- var _this$props$onDragEnd, _this$props3;
126
+ const getFinalValue = value => {
127
+ var _resolvePoint;
191
128
 
192
- const {
193
- ownerDocument
194
- } = this.containerRef.current;
195
- ownerDocument.removeEventListener('mouseup', this.onMouseUp);
196
- ownerDocument.removeEventListener('mousemove', this.onMouseMove);
197
- this.setState({
198
- isDragging: false
199
- }, () => {
200
- this.props.onChange(this.state.percentages);
201
- });
202
- (_this$props$onDragEnd = (_this$props3 = this.props).onDragEnd) === null || _this$props$onDragEnd === void 0 ? void 0 : _this$props$onDragEnd.call(_this$props3, event);
203
- }
129
+ const resolvedValue = (_resolvePoint = resolvePoint === null || resolvePoint === void 0 ? void 0 : resolvePoint(value)) !== null && _resolvePoint !== void 0 ? _resolvePoint : value;
130
+ resolvedValue.x = Math.max(0, Math.min(resolvedValue.x, 1));
131
+ resolvedValue.y = Math.max(0, Math.min(resolvedValue.y, 1));
132
+ return {
133
+ x: parseFloat(resolvedValue.x).toFixed(2),
134
+ y: parseFloat(resolvedValue.y).toFixed(2)
135
+ };
136
+ };
204
137
 
205
- onKeyDown(event) {
138
+ const arrowKeyStep = event => {
206
139
  const {
207
140
  code,
208
141
  shiftKey
209
142
  } = event;
210
143
  if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(code)) return;
211
144
  event.preventDefault();
212
- const next = { ...this.state.percentages
145
+ const value = {
146
+ x,
147
+ y
213
148
  };
214
149
  const step = shiftKey ? 0.1 : 0.01;
215
150
  const delta = code === 'ArrowUp' || code === 'ArrowLeft' ? -1 * step : step;
216
151
  const axis = code === 'ArrowUp' || code === 'ArrowDown' ? 'y' : 'x';
217
- const value = parseFloat(next[axis]) + delta;
218
- next[axis] = roundClamp(value, 0, 1, step);
219
- this.updateValue(next, () => {
220
- this.props.onChange(this.state.percentages);
221
- });
222
- }
223
-
224
- doDrag(event) {
225
- var _this$props$onDrag, _this$props4;
226
-
227
- // Prevents text-selection when dragging.
228
- event.preventDefault();
229
- const value = this.getValueFromPoint({
230
- x: event.pageX,
231
- y: event.pageY
232
- }, event.shiftKey);
233
- this.updateValue(value);
234
- (_this$props$onDrag = (_this$props4 = this.props).onDrag) === null || _this$props$onDrag === void 0 ? void 0 : _this$props$onDrag.call(_this$props4, value, event);
235
- }
236
-
237
- getValueFromPoint(point, byTenths) {
238
- const {
239
- bounds
240
- } = this.state;
241
- const pickerDimensions = this.pickerDimensions();
242
- const relativePoint = {
243
- left: point.x - pickerDimensions.left,
244
- top: point.y - pickerDimensions.top
245
- };
246
- const left = Math.max(bounds.left, Math.min(relativePoint.left, bounds.right));
247
- const top = Math.max(bounds.top, Math.min(relativePoint.top, bounds.bottom));
248
- let nextX = (left - bounds.left) / (pickerDimensions.width - bounds.left * 2);
249
- let nextY = (top - bounds.top) / (pickerDimensions.height - bounds.top * 2); // Enables holding shift to jump values by 10%
250
-
251
- const step = byTenths ? 0.1 : 0.01;
252
- nextX = roundClamp(nextX, 0, 1, step);
253
- nextY = roundClamp(nextY, 0, 1, step);
254
- return {
255
- x: nextX,
256
- y: nextY
257
- };
258
- }
259
-
260
- pickerDimensions() {
261
- const containerNode = this.containerRef.current;
262
-
263
- if (!containerNode) {
264
- return {
265
- width: 0,
266
- height: 0,
267
- left: 0,
268
- top: 0
269
- };
270
- }
271
-
272
- const {
273
- clientHeight,
274
- clientWidth
275
- } = containerNode;
276
- const {
277
- top,
278
- left
279
- } = containerNode.getBoundingClientRect();
280
- return {
281
- width: clientWidth,
282
- height: clientHeight,
283
- top: top + document.body.scrollTop,
284
- left
285
- };
286
- }
287
-
288
- iconCoordinates() {
289
- const {
290
- bounds,
291
- percentages: {
292
- x,
293
- y
294
- }
295
- } = this.state;
296
-
297
- if (bounds.left === undefined || bounds.top === undefined) {
298
- return {
299
- left: '50%',
300
- top: '50%'
301
- };
152
+ value[axis] = parseFloat(value[axis]) + delta;
153
+ onChange === null || onChange === void 0 ? void 0 : onChange(getFinalValue(value));
154
+ };
155
+
156
+ const focalPointPosition = {
157
+ left: x * bounds.width,
158
+ top: y * bounds.height
159
+ };
160
+ const classes = classnames('components-focal-point-picker-control', className);
161
+ const instanceId = useInstanceId(FocalPointPicker);
162
+ const id = `inspector-focal-point-picker-control-${instanceId}`;
163
+ useUpdateEffect(() => {
164
+ setShowGridOverlay(true);
165
+ const timeout = window.setTimeout(() => {
166
+ setShowGridOverlay(false);
167
+ }, GRID_OVERLAY_TIMEOUT);
168
+ return () => window.clearTimeout(timeout);
169
+ }, [x, y]);
170
+ return createElement(BaseControl, {
171
+ label: label,
172
+ id: id,
173
+ help: help,
174
+ className: classes
175
+ }, createElement(MediaWrapper, {
176
+ className: "components-focal-point-picker-wrapper"
177
+ }, createElement(MediaContainer, {
178
+ className: "components-focal-point-picker",
179
+ onKeyDown: arrowKeyStep,
180
+ onMouseDown: startDrag,
181
+ onBlur: () => {
182
+ if (isDragging) endDrag();
183
+ },
184
+ ref: dragAreaRef,
185
+ role: "button",
186
+ tabIndex: "-1"
187
+ }, createElement(Grid, {
188
+ bounds: bounds,
189
+ showOverlay: showGridOverlay
190
+ }), createElement(Media, {
191
+ alt: __('Media preview'),
192
+ autoPlay: autoPlay,
193
+ onLoad: refUpdateBounds.current,
194
+ src: url
195
+ }), createElement(FocalPoint, _extends({}, focalPointPosition, {
196
+ isDragging: isDragging
197
+ })))), createElement(Controls, {
198
+ point: {
199
+ x,
200
+ y
201
+ },
202
+ onChange: value => {
203
+ onChange === null || onChange === void 0 ? void 0 : onChange(getFinalValue(value));
302
204
  }
303
-
304
- const {
305
- width,
306
- height
307
- } = this.pickerDimensions();
308
- return {
309
- left: x * (width - bounds.left * 2) + bounds.left,
310
- top: y * (height - bounds.top * 2) + bounds.top
311
- };
312
- }
313
-
314
- render() {
315
- const {
316
- autoPlay,
317
- className,
318
- help,
319
- instanceId,
320
- label,
321
- url
322
- } = this.props;
323
- const {
324
- bounds,
325
- isDragging,
326
- percentages
327
- } = this.state;
328
- const iconCoordinates = this.iconCoordinates();
329
- const classes = classnames('components-focal-point-picker-control', className);
330
- const id = `inspector-focal-point-picker-control-${instanceId}`;
331
- return createElement(BaseControl, {
332
- label: label,
333
- id: id,
334
- help: help,
335
- className: classes
336
- }, createElement(MediaWrapper, {
337
- className: "components-focal-point-picker-wrapper"
338
- }, createElement(MediaContainer, {
339
- className: "components-focal-point-picker",
340
- onKeyDown: this.onKeyDown,
341
- onMouseDown: this.onMouseDown,
342
- onBlur: this.ifDraggingStop,
343
- ref: this.containerRef,
344
- role: "button",
345
- tabIndex: "-1"
346
- }, createElement(Grid, {
347
- bounds: bounds,
348
- value: percentages.x + percentages.y
349
- }), createElement(Media, {
350
- alt: __('Media preview'),
351
- autoPlay: autoPlay,
352
- mediaRef: this.mediaRef,
353
- onLoad: this.updateBounds,
354
- src: url
355
- }), createElement(FocalPoint, {
356
- coordinates: iconCoordinates,
357
- isDragging: isDragging
358
- }))), createElement(Controls, {
359
- percentages: percentages,
360
- onChange: this.onChangeAtControls
361
- }));
362
- }
363
-
205
+ }));
364
206
  }
365
- FocalPointPicker.defaultProps = {
366
- autoPlay: true,
367
- value: {
368
- x: 0.5,
369
- y: 0.5
370
- },
371
- url: null
372
- };
373
- export default withInstanceId(FocalPointPicker);
374
207
  //# sourceMappingURL=index.js.map