@wordpress/components 28.4.0 → 28.6.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 (698) hide show
  1. package/CHANGELOG.md +113 -1
  2. package/CONTRIBUTING.md +155 -64
  3. package/build/alignment-matrix-control/cell.js +2 -2
  4. package/build/alignment-matrix-control/cell.js.map +1 -1
  5. package/build/alignment-matrix-control/index.js +6 -5
  6. package/build/alignment-matrix-control/index.js.map +1 -1
  7. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +8 -17
  8. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  9. package/build/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
  10. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  11. package/build/autocomplete/autocompleter-ui.js +2 -0
  12. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  13. package/build/base-control/index.js +54 -41
  14. package/build/base-control/index.js.map +1 -1
  15. package/build/base-control/styles/base-control-styles.js +8 -8
  16. package/build/base-control/styles/base-control-styles.js.map +1 -1
  17. package/build/base-control/types.js.map +1 -1
  18. package/build/border-control/styles.js +18 -24
  19. package/build/border-control/styles.js.map +1 -1
  20. package/build/checkbox-control/index.js +1 -0
  21. package/build/checkbox-control/index.js.map +1 -1
  22. package/build/circular-option-picker/circular-option-picker-option.js +4 -4
  23. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -1
  24. package/build/circular-option-picker/circular-option-picker.js +3 -3
  25. package/build/circular-option-picker/circular-option-picker.js.map +1 -1
  26. package/build/circular-option-picker/types.js.map +1 -1
  27. package/build/color-palette/index.js +1 -1
  28. package/build/color-palette/index.js.map +1 -1
  29. package/build/color-palette/utils.js +17 -5
  30. package/build/color-palette/utils.js.map +1 -1
  31. package/build/color-picker/input-with-slider.js +1 -0
  32. package/build/color-picker/input-with-slider.js.map +1 -1
  33. package/build/combobox-control/index.js +1 -0
  34. package/build/combobox-control/index.js.map +1 -1
  35. package/build/composite/context.js +19 -0
  36. package/build/composite/context.js.map +1 -0
  37. package/build/composite/index.js +287 -9
  38. package/build/composite/index.js.map +1 -1
  39. package/build/composite/legacy/index.js +10 -8
  40. package/build/composite/legacy/index.js.map +1 -1
  41. package/build/composite/types.js +6 -0
  42. package/build/composite/types.js.map +1 -0
  43. package/build/custom-select-control/index.js +37 -14
  44. package/build/custom-select-control/index.js.map +1 -1
  45. package/build/custom-select-control/types.js.map +1 -1
  46. package/build/custom-select-control-v2/custom-select.js +3 -2
  47. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  48. package/build/custom-select-control-v2/styles.js +9 -9
  49. package/build/custom-select-control-v2/styles.js.map +1 -1
  50. package/build/date-time/index.js +0 -7
  51. package/build/date-time/index.js.map +1 -1
  52. package/build/date-time/time/index.js +77 -41
  53. package/build/date-time/time/index.js.map +1 -1
  54. package/build/date-time/time/styles.js +11 -11
  55. package/build/date-time/time/styles.js.map +1 -1
  56. package/build/date-time/{time-input → time/time-input}/index.js +7 -7
  57. package/build/date-time/time/time-input/index.js.map +1 -0
  58. package/build/date-time/types.js.map +1 -1
  59. package/build/dimension-control/index.js +25 -8
  60. package/build/dimension-control/index.js.map +1 -1
  61. package/build/dimension-control/types.js.map +1 -1
  62. package/build/dropdown-menu-v2/index.js +3 -2
  63. package/build/dropdown-menu-v2/index.js.map +1 -1
  64. package/build/dropdown-menu-v2/styles.js +23 -21
  65. package/build/dropdown-menu-v2/styles.js.map +1 -1
  66. package/build/focal-point-picker/controls.js +1 -3
  67. package/build/focal-point-picker/controls.js.map +1 -1
  68. package/build/focal-point-picker/index.js +1 -2
  69. package/build/focal-point-picker/index.js.map +1 -1
  70. package/build/focal-point-picker/styles/focal-point-picker-style.js +11 -11
  71. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  72. package/build/focal-point-picker/types.js.map +1 -1
  73. package/build/form-file-upload/types.js.map +1 -1
  74. package/build/form-toggle/index.js +24 -24
  75. package/build/form-toggle/index.js.map +1 -1
  76. package/build/guide/index.js +2 -0
  77. package/build/guide/index.js.map +1 -1
  78. package/build/heading/types.js.map +1 -1
  79. package/build/index.js +5 -5
  80. package/build/index.js.map +1 -1
  81. package/build/item-group/styles.js +11 -11
  82. package/build/item-group/styles.js.map +1 -1
  83. package/build/mobile/utils/alignments.native.js +1 -1
  84. package/build/mobile/utils/alignments.native.js.map +1 -1
  85. package/build/modal/index.js +18 -11
  86. package/build/modal/index.js.map +1 -1
  87. package/build/navigator/navigator-back-button/component.js +1 -1
  88. package/build/navigator/navigator-back-button/component.js.map +1 -1
  89. package/build/navigator/navigator-back-button/hook.js +3 -9
  90. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  91. package/build/navigator/navigator-provider/component.js +17 -9
  92. package/build/navigator/navigator-provider/component.js.map +1 -1
  93. package/build/navigator/navigator-to-parent-button/component.js +13 -40
  94. package/build/navigator/navigator-to-parent-button/component.js.map +1 -1
  95. package/build/navigator/types.js.map +1 -1
  96. package/build/palette-edit/styles.js +11 -11
  97. package/build/palette-edit/styles.js.map +1 -1
  98. package/build/popover/index.js +6 -1
  99. package/build/popover/index.js.map +1 -1
  100. package/build/private-apis.js +6 -6
  101. package/build/private-apis.js.map +1 -1
  102. package/build/progress-bar/styles.js +5 -5
  103. package/build/progress-bar/styles.js.map +1 -1
  104. package/build/query-controls/index.js +6 -7
  105. package/build/query-controls/index.js.map +1 -1
  106. package/build/query-controls/types.js.map +1 -1
  107. package/build/radio-control/index.js +43 -15
  108. package/build/radio-control/index.js.map +1 -1
  109. package/build/radio-control/types.js.map +1 -1
  110. package/build/radio-group/radio.js +3 -2
  111. package/build/radio-group/radio.js.map +1 -1
  112. package/build/range-control/index.js +32 -9
  113. package/build/range-control/index.js.map +1 -1
  114. package/build/range-control/styles/range-control-styles.js +29 -29
  115. package/build/range-control/styles/range-control-styles.js.map +1 -1
  116. package/build/search-control/index.js +5 -4
  117. package/build/search-control/index.js.map +1 -1
  118. package/build/select-control/index.js +21 -8
  119. package/build/select-control/index.js.map +1 -1
  120. package/build/select-control/types.js.map +1 -1
  121. package/build/tab-panel/index.js +3 -2
  122. package/build/tab-panel/index.js.map +1 -1
  123. package/build/tabs/index.js +3 -2
  124. package/build/tabs/index.js.map +1 -1
  125. package/build/tabs/tablist.js +6 -4
  126. package/build/tabs/tablist.js.map +1 -1
  127. package/build/tabs/tabpanel.js +6 -1
  128. package/build/tabs/tabpanel.js.map +1 -1
  129. package/build/text/styles.js +7 -7
  130. package/build/text/styles.js.map +1 -1
  131. package/build/text-control/index.js +2 -0
  132. package/build/text-control/index.js.map +1 -1
  133. package/build/textarea-control/index.js +1 -0
  134. package/build/textarea-control/index.js.map +1 -1
  135. package/build/textarea-control/styles/textarea-control-styles.js +8 -2
  136. package/build/textarea-control/styles/textarea-control-styles.js.map +1 -1
  137. package/build/toggle-control/index.js +35 -25
  138. package/build/toggle-control/index.js.map +1 -1
  139. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +3 -2
  140. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  141. package/build/toggle-group-control/toggle-group-control/component.js +7 -1
  142. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  143. package/build/toggle-group-control/toggle-group-control/styles.js +7 -7
  144. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  145. package/build/toggle-group-control/toggle-group-control-option/component.js +6 -1
  146. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  147. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  148. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  149. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +14 -14
  150. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  151. package/build/tools-panel/styles.js +13 -13
  152. package/build/tools-panel/styles.js.map +1 -1
  153. package/build/tooltip/index.js +14 -2
  154. package/build/tooltip/index.js.map +1 -1
  155. package/build/tree-select/index.js +20 -8
  156. package/build/tree-select/index.js.map +1 -1
  157. package/build/unit-control/styles/unit-control-styles.js +7 -7
  158. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  159. package/build/utils/config-values.js +10 -3
  160. package/build/utils/config-values.js.map +1 -1
  161. package/build-module/alignment-matrix-control/cell.js +2 -2
  162. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  163. package/build-module/alignment-matrix-control/index.js +4 -3
  164. package/build-module/alignment-matrix-control/index.js.map +1 -1
  165. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -18
  166. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  167. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
  168. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  169. package/build-module/autocomplete/autocompleter-ui.js +2 -0
  170. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  171. package/build-module/base-control/index.js +54 -42
  172. package/build-module/base-control/index.js.map +1 -1
  173. package/build-module/base-control/styles/base-control-styles.js +8 -8
  174. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  175. package/build-module/base-control/types.js.map +1 -1
  176. package/build-module/border-control/styles.js +13 -23
  177. package/build-module/border-control/styles.js.map +1 -1
  178. package/build-module/checkbox-control/index.js +1 -0
  179. package/build-module/checkbox-control/index.js.map +1 -1
  180. package/build-module/circular-option-picker/circular-option-picker-option.js +4 -4
  181. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -1
  182. package/build-module/circular-option-picker/circular-option-picker.js +1 -1
  183. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -1
  184. package/build-module/circular-option-picker/types.js.map +1 -1
  185. package/build-module/color-palette/index.js +1 -1
  186. package/build-module/color-palette/index.js.map +1 -1
  187. package/build-module/color-palette/utils.js +17 -5
  188. package/build-module/color-palette/utils.js.map +1 -1
  189. package/build-module/color-picker/input-with-slider.js +1 -0
  190. package/build-module/color-picker/input-with-slider.js.map +1 -1
  191. package/build-module/combobox-control/index.js +1 -0
  192. package/build-module/combobox-control/index.js.map +1 -1
  193. package/build-module/composite/context.js +12 -0
  194. package/build-module/composite/context.js.map +1 -0
  195. package/build-module/composite/index.js +284 -6
  196. package/build-module/composite/index.js.map +1 -1
  197. package/build-module/composite/legacy/index.js +10 -6
  198. package/build-module/composite/legacy/index.js.map +1 -1
  199. package/build-module/composite/types.js +2 -0
  200. package/build-module/composite/types.js.map +1 -0
  201. package/build-module/custom-select-control/index.js +38 -14
  202. package/build-module/custom-select-control/index.js.map +1 -1
  203. package/build-module/custom-select-control/types.js.map +1 -1
  204. package/build-module/custom-select-control-v2/custom-select.js +2 -1
  205. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  206. package/build-module/custom-select-control-v2/styles.js +9 -9
  207. package/build-module/custom-select-control-v2/styles.js.map +1 -1
  208. package/build-module/date-time/index.js +1 -2
  209. package/build-module/date-time/index.js.map +1 -1
  210. package/build-module/date-time/time/index.js +77 -41
  211. package/build-module/date-time/time/index.js.map +1 -1
  212. package/build-module/date-time/time/styles.js +11 -11
  213. package/build-module/date-time/time/styles.js.map +1 -1
  214. package/build-module/date-time/{time-input → time/time-input}/index.js +7 -7
  215. package/build-module/date-time/time/time-input/index.js.map +1 -0
  216. package/build-module/date-time/types.js.map +1 -1
  217. package/build-module/dimension-control/index.js +25 -8
  218. package/build-module/dimension-control/index.js.map +1 -1
  219. package/build-module/dimension-control/types.js.map +1 -1
  220. package/build-module/dropdown-menu-v2/index.js +2 -1
  221. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  222. package/build-module/dropdown-menu-v2/styles.js +23 -21
  223. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  224. package/build-module/focal-point-picker/controls.js +1 -3
  225. package/build-module/focal-point-picker/controls.js.map +1 -1
  226. package/build-module/focal-point-picker/index.js +1 -2
  227. package/build-module/focal-point-picker/index.js.map +1 -1
  228. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +11 -11
  229. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  230. package/build-module/focal-point-picker/types.js.map +1 -1
  231. package/build-module/form-file-upload/types.js.map +1 -1
  232. package/build-module/form-toggle/index.js +23 -22
  233. package/build-module/form-toggle/index.js.map +1 -1
  234. package/build-module/guide/index.js +2 -0
  235. package/build-module/guide/index.js.map +1 -1
  236. package/build-module/heading/types.js.map +1 -1
  237. package/build-module/index.js +1 -1
  238. package/build-module/index.js.map +1 -1
  239. package/build-module/item-group/styles.js +11 -11
  240. package/build-module/item-group/styles.js.map +1 -1
  241. package/build-module/mobile/utils/alignments.native.js +1 -1
  242. package/build-module/mobile/utils/alignments.native.js.map +1 -1
  243. package/build-module/modal/index.js +17 -11
  244. package/build-module/modal/index.js.map +1 -1
  245. package/build-module/navigator/navigator-back-button/component.js +1 -1
  246. package/build-module/navigator/navigator-back-button/component.js.map +1 -1
  247. package/build-module/navigator/navigator-back-button/hook.js +3 -9
  248. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  249. package/build-module/navigator/navigator-provider/component.js +17 -9
  250. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  251. package/build-module/navigator/navigator-to-parent-button/component.js +12 -41
  252. package/build-module/navigator/navigator-to-parent-button/component.js.map +1 -1
  253. package/build-module/navigator/types.js.map +1 -1
  254. package/build-module/palette-edit/styles.js +11 -11
  255. package/build-module/palette-edit/styles.js.map +1 -1
  256. package/build-module/popover/index.js +6 -1
  257. package/build-module/popover/index.js.map +1 -1
  258. package/build-module/private-apis.js +6 -6
  259. package/build-module/private-apis.js.map +1 -1
  260. package/build-module/progress-bar/styles.js +5 -5
  261. package/build-module/progress-bar/styles.js.map +1 -1
  262. package/build-module/query-controls/index.js +6 -7
  263. package/build-module/query-controls/index.js.map +1 -1
  264. package/build-module/query-controls/types.js.map +1 -1
  265. package/build-module/radio-control/index.js +44 -17
  266. package/build-module/radio-control/index.js.map +1 -1
  267. package/build-module/radio-control/types.js.map +1 -1
  268. package/build-module/radio-group/radio.js +2 -1
  269. package/build-module/radio-group/radio.js.map +1 -1
  270. package/build-module/range-control/index.js +32 -9
  271. package/build-module/range-control/index.js.map +1 -1
  272. package/build-module/range-control/styles/range-control-styles.js +29 -29
  273. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  274. package/build-module/search-control/index.js +5 -4
  275. package/build-module/search-control/index.js.map +1 -1
  276. package/build-module/select-control/index.js +21 -8
  277. package/build-module/select-control/index.js.map +1 -1
  278. package/build-module/select-control/types.js.map +1 -1
  279. package/build-module/tab-panel/index.js +2 -1
  280. package/build-module/tab-panel/index.js.map +1 -1
  281. package/build-module/tabs/index.js +2 -1
  282. package/build-module/tabs/index.js.map +1 -1
  283. package/build-module/tabs/tablist.js +5 -3
  284. package/build-module/tabs/tablist.js.map +1 -1
  285. package/build-module/tabs/tabpanel.js +6 -2
  286. package/build-module/tabs/tabpanel.js.map +1 -1
  287. package/build-module/text/styles.js +7 -7
  288. package/build-module/text/styles.js.map +1 -1
  289. package/build-module/text-control/index.js +2 -0
  290. package/build-module/text-control/index.js.map +1 -1
  291. package/build-module/textarea-control/index.js +1 -0
  292. package/build-module/textarea-control/index.js.map +1 -1
  293. package/build-module/textarea-control/styles/textarea-control-styles.js +9 -2
  294. package/build-module/textarea-control/styles/textarea-control-styles.js.map +1 -1
  295. package/build-module/toggle-control/index.js +34 -24
  296. package/build-module/toggle-control/index.js.map +1 -1
  297. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +2 -1
  298. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  299. package/build-module/toggle-group-control/toggle-group-control/component.js +7 -1
  300. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  301. package/build-module/toggle-group-control/toggle-group-control/styles.js +7 -7
  302. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  303. package/build-module/toggle-group-control/toggle-group-control-option/component.js +6 -1
  304. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  305. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  306. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  307. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +14 -14
  308. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  309. package/build-module/tools-panel/styles.js +13 -13
  310. package/build-module/tools-panel/styles.js.map +1 -1
  311. package/build-module/tooltip/index.js +14 -2
  312. package/build-module/tooltip/index.js.map +1 -1
  313. package/build-module/tree-select/index.js +20 -8
  314. package/build-module/tree-select/index.js.map +1 -1
  315. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  316. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  317. package/build-module/utils/config-values.js +10 -3
  318. package/build-module/utils/config-values.js.map +1 -1
  319. package/build-style/style-rtl.css +79 -33
  320. package/build-style/style.css +79 -33
  321. package/build-types/alignment-matrix-control/index.d.ts.map +1 -1
  322. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -1
  323. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
  324. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  325. package/build-types/base-control/hooks.d.ts +1 -0
  326. package/build-types/base-control/hooks.d.ts.map +1 -1
  327. package/build-types/base-control/index.d.ts +44 -0
  328. package/build-types/base-control/index.d.ts.map +1 -1
  329. package/build-types/base-control/types.d.ts +7 -0
  330. package/build-types/base-control/types.d.ts.map +1 -1
  331. package/build-types/border-control/styles.d.ts.map +1 -1
  332. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  333. package/build-types/checkbox-control/index.d.ts.map +1 -1
  334. package/build-types/checkbox-control/stories/index.story.d.ts.map +1 -1
  335. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -1
  336. package/build-types/circular-option-picker/types.d.ts +2 -3
  337. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  338. package/build-types/color-palette/index.d.ts.map +1 -1
  339. package/build-types/color-palette/styles.d.ts +2 -2
  340. package/build-types/color-palette/utils.d.ts.map +1 -1
  341. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  342. package/build-types/color-picker/styles.d.ts +3 -1
  343. package/build-types/color-picker/styles.d.ts.map +1 -1
  344. package/build-types/combobox-control/index.d.ts.map +1 -1
  345. package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
  346. package/build-types/composite/context.d.ts +7 -0
  347. package/build-types/composite/context.d.ts.map +1 -0
  348. package/build-types/composite/index.d.ts +181 -1
  349. package/build-types/composite/index.d.ts.map +1 -1
  350. package/build-types/composite/legacy/index.d.ts +7 -2
  351. package/build-types/composite/legacy/index.d.ts.map +1 -1
  352. package/build-types/composite/legacy/stories/utils.d.ts +19 -0
  353. package/build-types/composite/legacy/stories/utils.d.ts.map +1 -1
  354. package/build-types/composite/stories/index.story.d.ts +13 -0
  355. package/build-types/composite/stories/index.story.d.ts.map +1 -0
  356. package/build-types/composite/stories/utils.d.ts +29 -0
  357. package/build-types/composite/stories/utils.d.ts.map +1 -0
  358. package/build-types/composite/types.d.ts +288 -0
  359. package/build-types/composite/types.d.ts.map +1 -0
  360. package/build-types/custom-select-control/index.d.ts +2 -2
  361. package/build-types/custom-select-control/index.d.ts.map +1 -1
  362. package/build-types/custom-select-control/stories/index.story.d.ts +3 -3
  363. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  364. package/build-types/custom-select-control/types.d.ts +7 -7
  365. package/build-types/custom-select-control/types.d.ts.map +1 -1
  366. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  367. package/build-types/custom-select-control-v2/styles.d.ts +16 -28
  368. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
  369. package/build-types/date-time/date/styles.d.ts +2 -2
  370. package/build-types/date-time/date-time/index.d.ts +1 -1
  371. package/build-types/date-time/index.d.ts +1 -2
  372. package/build-types/date-time/index.d.ts.map +1 -1
  373. package/build-types/date-time/stories/time.story.d.ts +5 -0
  374. package/build-types/date-time/stories/time.story.d.ts.map +1 -1
  375. package/build-types/date-time/time/index.d.ts +4 -1
  376. package/build-types/date-time/time/index.d.ts.map +1 -1
  377. package/build-types/date-time/time/styles.d.ts.map +1 -1
  378. package/build-types/date-time/{time-input → time/time-input}/index.d.ts +1 -1
  379. package/build-types/date-time/time/time-input/index.d.ts.map +1 -0
  380. package/build-types/date-time/time/time-input/test/index.d.ts.map +1 -0
  381. package/build-types/date-time/types.d.ts +7 -1
  382. package/build-types/date-time/types.d.ts.map +1 -1
  383. package/build-types/dimension-control/index.d.ts +1 -0
  384. package/build-types/dimension-control/index.d.ts.map +1 -1
  385. package/build-types/dimension-control/stories/index.story.d.ts +8 -1
  386. package/build-types/dimension-control/stories/index.story.d.ts.map +1 -1
  387. package/build-types/dimension-control/types.d.ts +2 -7
  388. package/build-types/dimension-control/types.d.ts.map +1 -1
  389. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  390. package/build-types/dropdown-menu-v2/styles.d.ts +24 -42
  391. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  392. package/build-types/focal-point-picker/controls.d.ts +1 -1
  393. package/build-types/focal-point-picker/controls.d.ts.map +1 -1
  394. package/build-types/focal-point-picker/index.d.ts +1 -1
  395. package/build-types/focal-point-picker/index.d.ts.map +1 -1
  396. package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
  397. package/build-types/focal-point-picker/types.d.ts +2 -2
  398. package/build-types/focal-point-picker/types.d.ts.map +1 -1
  399. package/build-types/form-file-upload/types.d.ts +6 -0
  400. package/build-types/form-file-upload/types.d.ts.map +1 -1
  401. package/build-types/form-toggle/index.d.ts +2 -5
  402. package/build-types/form-toggle/index.d.ts.map +1 -1
  403. package/build-types/guide/index.d.ts.map +1 -1
  404. package/build-types/heading/component.d.ts +1 -1
  405. package/build-types/heading/types.d.ts +1 -1
  406. package/build-types/heading/types.d.ts.map +1 -1
  407. package/build-types/index.d.ts +1 -1
  408. package/build-types/index.d.ts.map +1 -1
  409. package/build-types/modal/index.d.ts.map +1 -1
  410. package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
  411. package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
  412. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
  413. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  414. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  415. package/build-types/navigator/navigator-to-parent-button/component.d.ts +6 -0
  416. package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
  417. package/build-types/navigator/types.d.ts +45 -9
  418. package/build-types/navigator/types.d.ts.map +1 -1
  419. package/build-types/palette-edit/styles.d.ts +2 -2
  420. package/build-types/popover/index.d.ts +1 -1
  421. package/build-types/popover/index.d.ts.map +1 -1
  422. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  423. package/build-types/private-apis.d.ts.map +1 -1
  424. package/build-types/query-controls/index.d.ts +1 -1
  425. package/build-types/query-controls/index.d.ts.map +1 -1
  426. package/build-types/query-controls/types.d.ts +2 -1
  427. package/build-types/query-controls/types.d.ts.map +1 -1
  428. package/build-types/radio-control/index.d.ts.map +1 -1
  429. package/build-types/radio-control/stories/index.story.d.ts +1 -0
  430. package/build-types/radio-control/stories/index.story.d.ts.map +1 -1
  431. package/build-types/radio-control/test/index.d.ts +2 -0
  432. package/build-types/radio-control/test/index.d.ts.map +1 -0
  433. package/build-types/radio-control/types.d.ts +4 -0
  434. package/build-types/radio-control/types.d.ts.map +1 -1
  435. package/build-types/radio-group/radio.d.ts.map +1 -1
  436. package/build-types/range-control/index.d.ts.map +1 -1
  437. package/build-types/range-control/stories/index.story.d.ts.map +1 -1
  438. package/build-types/search-control/index.d.ts.map +1 -1
  439. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  440. package/build-types/select-control/index.d.ts +4 -1
  441. package/build-types/select-control/index.d.ts.map +1 -1
  442. package/build-types/select-control/stories/index.story.d.ts +13 -5
  443. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  444. package/build-types/select-control/types.d.ts +27 -27
  445. package/build-types/select-control/types.d.ts.map +1 -1
  446. package/build-types/tab-panel/index.d.ts.map +1 -1
  447. package/build-types/tabs/index.d.ts.map +1 -1
  448. package/build-types/tabs/styles.d.ts +8 -14
  449. package/build-types/tabs/styles.d.ts.map +1 -1
  450. package/build-types/tabs/tablist.d.ts.map +1 -1
  451. package/build-types/tabs/tabpanel.d.ts +0 -3
  452. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  453. package/build-types/text-control/index.d.ts +1 -0
  454. package/build-types/text-control/index.d.ts.map +1 -1
  455. package/build-types/text-control/stories/index.story.d.ts.map +1 -1
  456. package/build-types/textarea-control/index.d.ts.map +1 -1
  457. package/build-types/textarea-control/styles/textarea-control-styles.d.ts.map +1 -1
  458. package/build-types/toggle-control/index.d.ts +3 -9
  459. package/build-types/toggle-control/index.d.ts.map +1 -1
  460. package/build-types/toggle-control/stories/index.story.d.ts.map +1 -1
  461. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  462. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +6 -1
  463. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  464. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +6 -1
  465. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  466. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +14 -14
  467. package/build-types/tooltip/index.d.ts.map +1 -1
  468. package/build-types/tooltip/test/utils/index.d.ts +1 -5
  469. package/build-types/tooltip/test/utils/index.d.ts.map +1 -1
  470. package/build-types/tree-select/index.d.ts +1 -1
  471. package/build-types/tree-select/index.d.ts.map +1 -1
  472. package/build-types/utils/config-values.d.ts +10 -3
  473. package/package.json +20 -20
  474. package/src/alignment-matrix-control/cell.tsx +3 -3
  475. package/src/alignment-matrix-control/index.tsx +5 -4
  476. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.ts +2 -2
  477. package/src/alignment-matrix-control/test/index.tsx +1 -3
  478. package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +2 -2
  479. package/src/autocomplete/autocompleter-ui.tsx +2 -0
  480. package/src/autocomplete/style.scss +0 -6
  481. package/src/base-control/README.md +5 -2
  482. package/src/base-control/index.tsx +61 -41
  483. package/src/base-control/styles/base-control-styles.ts +1 -1
  484. package/src/base-control/types.ts +7 -0
  485. package/src/border-box-control/border-box-control/README.md +7 -0
  486. package/src/border-control/border-control/README.md +7 -0
  487. package/src/border-control/styles.ts +1 -6
  488. package/src/button/README.md +7 -0
  489. package/src/button/stories/e2e/index.story.tsx +103 -21
  490. package/src/button/style.scss +51 -23
  491. package/src/button/test/index.tsx +18 -40
  492. package/src/button-group/style.scss +2 -2
  493. package/src/checkbox-control/index.tsx +1 -0
  494. package/src/checkbox-control/stories/index.story.tsx +1 -0
  495. package/src/checkbox-control/test/index.tsx +8 -1
  496. package/src/circular-option-picker/circular-option-picker-option.tsx +8 -6
  497. package/src/circular-option-picker/circular-option-picker.tsx +1 -1
  498. package/src/circular-option-picker/style.scss +3 -3
  499. package/src/circular-option-picker/test/index.tsx +1 -4
  500. package/src/circular-option-picker/types.ts +2 -3
  501. package/src/color-indicator/style.scss +1 -1
  502. package/src/color-palette/index.tsx +22 -20
  503. package/src/color-palette/style.scss +2 -2
  504. package/src/color-palette/utils.ts +23 -10
  505. package/src/color-picker/input-with-slider.tsx +1 -0
  506. package/src/combobox-control/README.md +8 -0
  507. package/src/combobox-control/index.tsx +1 -0
  508. package/src/combobox-control/stories/index.story.tsx +3 -4
  509. package/src/combobox-control/test/index.tsx +5 -1
  510. package/src/composite/README.md +325 -0
  511. package/src/composite/context.ts +14 -0
  512. package/src/composite/index.tsx +341 -0
  513. package/src/composite/legacy/index.tsx +15 -14
  514. package/src/composite/legacy/stories/utils.tsx +19 -0
  515. package/src/composite/legacy/test/index.tsx +2 -18
  516. package/src/composite/stories/index.story.tsx +466 -0
  517. package/src/composite/{current/stories → stories}/utils.tsx +22 -7
  518. package/src/composite/types.ts +298 -0
  519. package/src/custom-gradient-picker/style.scss +2 -2
  520. package/src/custom-select-control/README.md +7 -0
  521. package/src/custom-select-control/index.tsx +55 -25
  522. package/src/custom-select-control/test/index.tsx +172 -30
  523. package/src/custom-select-control/types.ts +7 -7
  524. package/src/custom-select-control-v2/custom-select.tsx +2 -1
  525. package/src/custom-select-control-v2/styles.ts +7 -6
  526. package/src/custom-select-control-v2/test/index.tsx +15 -19
  527. package/src/date-time/index.ts +1 -2
  528. package/src/date-time/stories/time.story.tsx +17 -0
  529. package/src/date-time/time/index.tsx +72 -28
  530. package/src/date-time/time/styles.ts +1 -0
  531. package/src/date-time/{time-input → time/time-input}/index.tsx +9 -9
  532. package/src/date-time/types.ts +11 -1
  533. package/src/dimension-control/README.md +17 -0
  534. package/src/dimension-control/index.tsx +26 -9
  535. package/src/dimension-control/stories/index.story.tsx +1 -0
  536. package/src/dimension-control/test/__snapshots__/index.test.js.snap +0 -16
  537. package/src/dimension-control/test/index.test.js +5 -1
  538. package/src/dimension-control/types.ts +5 -7
  539. package/src/drop-zone/style.scss +1 -1
  540. package/src/dropdown-menu-v2/index.tsx +5 -3
  541. package/src/dropdown-menu-v2/styles.ts +35 -32
  542. package/src/dropdown-menu-v2/test/index.tsx +1 -4
  543. package/src/focal-point-picker/README.md +9 -1
  544. package/src/focal-point-picker/controls.tsx +1 -3
  545. package/src/focal-point-picker/index.tsx +1 -2
  546. package/src/focal-point-picker/stories/index.story.tsx +3 -0
  547. package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
  548. package/src/focal-point-picker/test/index.tsx +5 -1
  549. package/src/focal-point-picker/types.ts +2 -2
  550. package/src/font-size-picker/README.md +7 -0
  551. package/src/font-size-picker/test/index.tsx +50 -43
  552. package/src/form-file-upload/README.md +8 -0
  553. package/src/form-file-upload/types.ts +6 -0
  554. package/src/form-toggle/index.tsx +23 -21
  555. package/src/form-token-field/README.md +1 -0
  556. package/src/guide/index.tsx +2 -0
  557. package/src/guide/style.scss +0 -1
  558. package/src/heading/types.ts +1 -4
  559. package/src/index.ts +1 -1
  560. package/src/input-control/README.md +8 -0
  561. package/src/item-group/styles.ts +1 -1
  562. package/src/mobile/utils/alignments.native.js +1 -0
  563. package/src/modal/index.tsx +21 -20
  564. package/src/modal/style.scss +3 -3
  565. package/src/navigator/navigator-back-button/component.tsx +1 -1
  566. package/src/navigator/navigator-back-button/hook.ts +6 -10
  567. package/src/navigator/navigator-provider/README.md +38 -36
  568. package/src/navigator/navigator-provider/component.tsx +13 -7
  569. package/src/navigator/navigator-screen/README.md +13 -1
  570. package/src/navigator/navigator-to-parent-button/README.md +2 -0
  571. package/src/navigator/navigator-to-parent-button/component.tsx +14 -43
  572. package/src/navigator/test/index.tsx +136 -6
  573. package/src/navigator/types.ts +45 -10
  574. package/src/number-control/README.md +8 -0
  575. package/src/palette-edit/styles.ts +5 -5
  576. package/src/placeholder/style.scss +15 -3
  577. package/src/popover/index.tsx +9 -3
  578. package/src/popover/style.scss +2 -2
  579. package/src/popover/test/index.tsx +34 -0
  580. package/src/private-apis.ts +6 -12
  581. package/src/progress-bar/styles.ts +2 -2
  582. package/src/query-controls/README.md +7 -0
  583. package/src/query-controls/index.tsx +10 -7
  584. package/src/query-controls/types.ts +2 -1
  585. package/src/radio-control/index.tsx +62 -13
  586. package/src/radio-control/stories/index.story.tsx +23 -0
  587. package/src/radio-control/style.scss +38 -3
  588. package/src/radio-control/test/index.tsx +277 -0
  589. package/src/radio-control/types.ts +4 -0
  590. package/src/radio-group/radio.tsx +2 -1
  591. package/src/range-control/README.md +7 -0
  592. package/src/range-control/index.tsx +39 -9
  593. package/src/range-control/stories/index.story.tsx +7 -0
  594. package/src/range-control/styles/range-control-styles.ts +2 -2
  595. package/src/range-control/test/index.tsx +54 -14
  596. package/src/search-control/index.tsx +7 -4
  597. package/src/search-control/stories/index.story.tsx +1 -0
  598. package/src/search-control/test/index.tsx +1 -0
  599. package/src/select-control/README.md +16 -1
  600. package/src/select-control/index.tsx +34 -22
  601. package/src/select-control/stories/index.story.tsx +8 -5
  602. package/src/select-control/test/select-control.tsx +155 -5
  603. package/src/select-control/types.ts +70 -65
  604. package/src/snackbar/style.scss +2 -2
  605. package/src/tab-panel/index.tsx +4 -1
  606. package/src/tab-panel/style.scss +1 -1
  607. package/src/tab-panel/test/index.tsx +1 -8
  608. package/src/tabs/index.tsx +2 -1
  609. package/src/tabs/tablist.tsx +6 -4
  610. package/src/tabs/tabpanel.tsx +6 -2
  611. package/src/tabs/test/index.tsx +68 -84
  612. package/src/text/styles.ts +1 -1
  613. package/src/text-control/README.md +9 -0
  614. package/src/text-control/index.tsx +2 -0
  615. package/src/text-control/stories/index.story.tsx +3 -1
  616. package/src/text-control/style.scss +5 -0
  617. package/src/text-control/test/text-control.tsx +5 -1
  618. package/src/textarea-control/index.tsx +1 -0
  619. package/src/textarea-control/stories/index.story.tsx +2 -0
  620. package/src/textarea-control/styles/textarea-control-styles.ts +75 -2
  621. package/src/toggle-control/README.md +9 -0
  622. package/src/toggle-control/index.tsx +34 -22
  623. package/src/toggle-control/stories/index.story.tsx +1 -0
  624. package/src/toggle-control/style.scss +2 -1
  625. package/src/toggle-control/test/index.tsx +7 -1
  626. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +14 -30
  627. package/src/toggle-group-control/test/index.tsx +5 -7
  628. package/src/toggle-group-control/toggle-group-control/README.md +20 -1
  629. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +2 -1
  630. package/src/toggle-group-control/toggle-group-control/component.tsx +7 -1
  631. package/src/toggle-group-control/toggle-group-control/styles.ts +1 -1
  632. package/src/toggle-group-control/toggle-group-control-option/README.md +6 -1
  633. package/src/toggle-group-control/toggle-group-control-option/component.tsx +6 -1
  634. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +2 -2
  635. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  636. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +14 -14
  637. package/src/toolbar/toolbar/style.scss +2 -2
  638. package/src/tools-panel/styles.ts +1 -1
  639. package/src/tooltip/index.tsx +16 -2
  640. package/src/tooltip/style.scss +1 -1
  641. package/src/tooltip/test/index.tsx +0 -5
  642. package/src/tooltip/test/utils/index.tsx +5 -5
  643. package/src/tree-select/index.tsx +17 -7
  644. package/src/tree-select/stories/index.story.tsx +1 -0
  645. package/src/unit-control/README.md +7 -0
  646. package/src/unit-control/styles/unit-control-styles.ts +1 -1
  647. package/src/utils/config-values.js +10 -3
  648. package/tsconfig.tsbuildinfo +1 -1
  649. package/build/composite/current/index.js +0 -43
  650. package/build/composite/current/index.js.map +0 -1
  651. package/build/composite/v2.js +0 -17
  652. package/build/composite/v2.js.map +0 -1
  653. package/build/date-time/time-input/index.js.map +0 -1
  654. package/build/utils/input/base.js +0 -20
  655. package/build/utils/input/base.js.map +0 -1
  656. package/build/utils/input/index.js +0 -17
  657. package/build/utils/input/index.js.map +0 -1
  658. package/build/utils/input/input-control.js +0 -21
  659. package/build/utils/input/input-control.js.map +0 -1
  660. package/build-module/composite/current/index.js +0 -12
  661. package/build-module/composite/current/index.js.map +0 -1
  662. package/build-module/composite/v2.js +0 -5
  663. package/build-module/composite/v2.js.map +0 -1
  664. package/build-module/date-time/time-input/index.js.map +0 -1
  665. package/build-module/utils/input/base.js +0 -13
  666. package/build-module/utils/input/base.js.map +0 -1
  667. package/build-module/utils/input/index.js +0 -2
  668. package/build-module/utils/input/index.js.map +0 -1
  669. package/build-module/utils/input/input-control.js +0 -14
  670. package/build-module/utils/input/input-control.js.map +0 -1
  671. package/build-types/composite/current/index.d.ts +0 -12
  672. package/build-types/composite/current/index.d.ts.map +0 -1
  673. package/build-types/composite/current/stories/index.story.d.ts +0 -13
  674. package/build-types/composite/current/stories/index.story.d.ts.map +0 -1
  675. package/build-types/composite/current/stories/utils.d.ts +0 -14
  676. package/build-types/composite/current/stories/utils.d.ts.map +0 -1
  677. package/build-types/composite/v2.d.ts +0 -2
  678. package/build-types/composite/v2.d.ts.map +0 -1
  679. package/build-types/date-time/stories/time-input.story.d.ts +0 -12
  680. package/build-types/date-time/stories/time-input.story.d.ts.map +0 -1
  681. package/build-types/date-time/time-input/index.d.ts.map +0 -1
  682. package/build-types/date-time/time-input/test/index.d.ts.map +0 -1
  683. package/build-types/utils/input/base.d.ts +0 -3
  684. package/build-types/utils/input/base.d.ts.map +0 -1
  685. package/build-types/utils/input/index.d.ts +0 -2
  686. package/build-types/utils/input/index.d.ts.map +0 -1
  687. package/build-types/utils/input/input-control.d.ts +0 -2
  688. package/build-types/utils/input/input-control.d.ts.map +0 -1
  689. package/src/composite/current/index.ts +0 -20
  690. package/src/composite/current/stories/index.story.tsx +0 -86
  691. package/src/composite/index.ts +0 -7
  692. package/src/composite/v2.ts +0 -4
  693. package/src/date-time/stories/time-input.story.tsx +0 -36
  694. package/src/utils/input/base.js +0 -30
  695. package/src/utils/input/index.js +0 -1
  696. package/src/utils/input/input-control.js +0 -63
  697. /package/build-types/date-time/{time-input → time/time-input}/test/index.d.ts +0 -0
  698. /package/src/date-time/{time-input → time/time-input}/test/index.tsx +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["css","CONFIG","COLORS","font","unstyledButton","as","undefined","theme","accent","process","env","NODE_ENV","itemWrapper","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","item","bordered","surfaceBorderColor","separated","borderRadius","controlBorderRadius","spacedAround","rounded","baseFontHeight","fontSize","fontLineHeightBase","paddingY","controlHeight","paddingYSmall","controlHeightSmall","paddingYLarge","controlHeightLarge","itemSizes","small","controlPaddingXSmall","medium","controlPaddingX","large","controlPaddingXLarge"],"sources":["@wordpress/components/src/item-group/styles.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport { css } from '@emotion/react';\n\n/**\n * Internal dependencies\n */\nimport { CONFIG, COLORS, font } from '../utils';\n\nexport const unstyledButton = ( as: 'a' | 'button' ) => {\n\treturn css`\n\t\tfont-size: ${ font( 'default.fontSize' ) };\n\t\tfont-family: inherit;\n\t\tappearance: none;\n\t\tborder: 1px solid transparent;\n\t\tcursor: pointer;\n\t\tbackground: none;\n\t\ttext-align: start;\n\t\ttext-decoration: ${ as === 'a' ? 'none' : undefined };\n\n\t\tsvg,\n\t\tpath {\n\t\t\tfill: currentColor;\n\t\t}\n\n\t\t&:hover {\n\t\t\tcolor: ${ COLORS.theme.accent };\n\t\t}\n\n\t\t&:focus {\n\t\t\tbox-shadow: none;\n\t\t\toutline: none;\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: 0 0 0 var( --wp-admin-border-width-focus )\n\t\t\t\t${ COLORS.theme.accent };\n\t\t\t// Windows high contrast mode.\n\t\t\toutline: 2px solid transparent;\n\t\t\toutline-offset: 0;\n\t\t}\n\t`;\n};\n\nexport const itemWrapper = css`\n\twidth: 100%;\n\tdisplay: block;\n`;\n\nexport const item = css`\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tdisplay: block;\n\tmargin: 0;\n\tcolor: inherit;\n`;\n\nexport const bordered = css`\n\tborder: 1px solid ${ CONFIG.surfaceBorderColor };\n`;\n\nexport const separated = css`\n\t> *:not( marquee ) > * {\n\t\tborder-bottom: 1px solid ${ CONFIG.surfaceBorderColor };\n\t}\n\n\t> *:last-of-type > *:not( :focus ) {\n\t\tborder-bottom-color: transparent;\n\t}\n`;\n\nconst borderRadius = CONFIG.controlBorderRadius;\n\nexport const spacedAround = css`\n\tborder-radius: ${ borderRadius };\n`;\n\nexport const rounded = css`\n\tborder-radius: ${ borderRadius };\n\n\t> *:first-of-type > * {\n\t\tborder-top-left-radius: ${ borderRadius };\n\t\tborder-top-right-radius: ${ borderRadius };\n\t}\n\n\t> *:last-of-type > * {\n\t\tborder-bottom-left-radius: ${ borderRadius };\n\t\tborder-bottom-right-radius: ${ borderRadius };\n\t}\n`;\n\nconst baseFontHeight = `calc(${ CONFIG.fontSize } * ${ CONFIG.fontLineHeightBase })`;\n\n/*\n * Math:\n * - Use the desired height as the base value\n * - Subtract the computed height of (default) text\n * - Subtract the effects of border\n * - Divide the calculated number by 2, in order to get an individual top/bottom padding\n */\nconst paddingY = `calc((${ CONFIG.controlHeight } - ${ baseFontHeight } - 2px) / 2)`;\nconst paddingYSmall = `calc((${ CONFIG.controlHeightSmall } - ${ baseFontHeight } - 2px) / 2)`;\nconst paddingYLarge = `calc((${ CONFIG.controlHeightLarge } - ${ baseFontHeight } - 2px) / 2)`;\n\nexport const itemSizes = {\n\tsmall: css`\n\t\tpadding: ${ paddingYSmall } ${ CONFIG.controlPaddingXSmall };\n\t`,\n\tmedium: css`\n\t\tpadding: ${ paddingY } ${ CONFIG.controlPaddingX };\n\t`,\n\tlarge: css`\n\t\tpadding: ${ paddingYLarge } ${ CONFIG.controlPaddingXLarge };\n\t`,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["css","CONFIG","COLORS","font","unstyledButton","as","undefined","theme","accent","process","env","NODE_ENV","itemWrapper","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","item","bordered","surfaceBorderColor","separated","borderRadius","radiusSmall","spacedAround","rounded","baseFontHeight","fontSize","fontLineHeightBase","paddingY","controlHeight","paddingYSmall","controlHeightSmall","paddingYLarge","controlHeightLarge","itemSizes","small","controlPaddingXSmall","medium","controlPaddingX","large","controlPaddingXLarge"],"sources":["@wordpress/components/src/item-group/styles.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport { css } from '@emotion/react';\n\n/**\n * Internal dependencies\n */\nimport { CONFIG, COLORS, font } from '../utils';\n\nexport const unstyledButton = ( as: 'a' | 'button' ) => {\n\treturn css`\n\t\tfont-size: ${ font( 'default.fontSize' ) };\n\t\tfont-family: inherit;\n\t\tappearance: none;\n\t\tborder: 1px solid transparent;\n\t\tcursor: pointer;\n\t\tbackground: none;\n\t\ttext-align: start;\n\t\ttext-decoration: ${ as === 'a' ? 'none' : undefined };\n\n\t\tsvg,\n\t\tpath {\n\t\t\tfill: currentColor;\n\t\t}\n\n\t\t&:hover {\n\t\t\tcolor: ${ COLORS.theme.accent };\n\t\t}\n\n\t\t&:focus {\n\t\t\tbox-shadow: none;\n\t\t\toutline: none;\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: 0 0 0 var( --wp-admin-border-width-focus )\n\t\t\t\t${ COLORS.theme.accent };\n\t\t\t// Windows high contrast mode.\n\t\t\toutline: 2px solid transparent;\n\t\t\toutline-offset: 0;\n\t\t}\n\t`;\n};\n\nexport const itemWrapper = css`\n\twidth: 100%;\n\tdisplay: block;\n`;\n\nexport const item = css`\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tdisplay: block;\n\tmargin: 0;\n\tcolor: inherit;\n`;\n\nexport const bordered = css`\n\tborder: 1px solid ${ CONFIG.surfaceBorderColor };\n`;\n\nexport const separated = css`\n\t> *:not( marquee ) > * {\n\t\tborder-bottom: 1px solid ${ CONFIG.surfaceBorderColor };\n\t}\n\n\t> *:last-of-type > *:not( :focus ) {\n\t\tborder-bottom-color: transparent;\n\t}\n`;\n\nconst borderRadius = CONFIG.radiusSmall;\n\nexport const spacedAround = css`\n\tborder-radius: ${ borderRadius };\n`;\n\nexport const rounded = css`\n\tborder-radius: ${ borderRadius };\n\n\t> *:first-of-type > * {\n\t\tborder-top-left-radius: ${ borderRadius };\n\t\tborder-top-right-radius: ${ borderRadius };\n\t}\n\n\t> *:last-of-type > * {\n\t\tborder-bottom-left-radius: ${ borderRadius };\n\t\tborder-bottom-right-radius: ${ borderRadius };\n\t}\n`;\n\nconst baseFontHeight = `calc(${ CONFIG.fontSize } * ${ CONFIG.fontLineHeightBase })`;\n\n/*\n * Math:\n * - Use the desired height as the base value\n * - Subtract the computed height of (default) text\n * - Subtract the effects of border\n * - Divide the calculated number by 2, in order to get an individual top/bottom padding\n */\nconst paddingY = `calc((${ CONFIG.controlHeight } - ${ baseFontHeight } - 2px) / 2)`;\nconst paddingYSmall = `calc((${ CONFIG.controlHeightSmall } - ${ baseFontHeight } - 2px) / 2)`;\nconst paddingYLarge = `calc((${ CONFIG.controlHeightLarge } - ${ baseFontHeight } - 2px) / 2)`;\n\nexport const itemSizes = {\n\tsmall: css`\n\t\tpadding: ${ paddingYSmall } ${ CONFIG.controlPaddingXSmall };\n\t`,\n\tmedium: css`\n\t\tpadding: ${ paddingY } ${ CONFIG.controlPaddingX };\n\t`,\n\tlarge: css`\n\t\tpadding: ${ paddingYLarge } ${ CONFIG.controlPaddingXLarge };\n\t`,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,7 @@ export const WIDE_ALIGNMENTS = {
8
8
  full: 'full'
9
9
  },
10
10
  excludeBlocks: ['core/heading'],
11
- notInnerContainers: ['core/image', 'core/separator', 'core/media-text', 'core/pullquote']
11
+ notInnerContainers: ['core/image', 'core/separator', 'core/media-text', 'core/quote', 'core/pullquote']
12
12
  };
13
13
  export const ALIGNMENT_BREAKPOINTS = {
14
14
  wide: 1024,
@@ -1 +1 @@
1
- {"version":3,"names":["getBlockType","WIDE_ALIGNMENTS","alignments","wide","full","excludeBlocks","notInnerContainers","ALIGNMENT_BREAKPOINTS","large","medium","small","mobile","isFullWidth","align","isWideWidth","isWider","width","breakpoint","isContainerRelated","blockName","includes","hasFullWidthSupport","hasParentFullWidthSupport","blockType","blockAlign","supports","Array","isArray","parent","some","alignmentHelpers"],"sources":["@wordpress/components/src/mobile/utils/alignments.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\n\nexport const WIDE_ALIGNMENTS = {\n\talignments: {\n\t\twide: 'wide',\n\t\tfull: 'full',\n\t},\n\texcludeBlocks: [ 'core/heading' ],\n\tnotInnerContainers: [\n\t\t'core/image',\n\t\t'core/separator',\n\t\t'core/media-text',\n\t\t'core/pullquote',\n\t],\n};\n\nexport const ALIGNMENT_BREAKPOINTS = {\n\twide: 1024,\n\tlarge: 820,\n\tmedium: 768,\n\tsmall: 680,\n\tmobile: 480,\n};\n\nconst isFullWidth = ( align ) => align === WIDE_ALIGNMENTS.alignments.full;\n\nconst isWideWidth = ( align ) => align === WIDE_ALIGNMENTS.alignments.wide;\n\nconst isWider = ( width, breakpoint ) =>\n\twidth > ALIGNMENT_BREAKPOINTS[ breakpoint ];\n\nconst isContainerRelated = ( blockName ) => {\n\tif ( WIDE_ALIGNMENTS.notInnerContainers.includes( blockName ) ) {\n\t\treturn false;\n\t}\n\n\tif ( hasFullWidthSupport( blockName ) ) {\n\t\treturn true;\n\t}\n\n\treturn hasParentFullWidthSupport( blockName );\n};\n\n/**\n * Whether the block has support for full width alignment.\n *\n * @param {string} blockName\n * @return {boolean} Return whether the block supports full width alignment.\n */\nfunction hasFullWidthSupport( blockName ) {\n\tconst blockType = getBlockType( blockName );\n\tconst blockAlign = blockType?.supports?.align;\n\treturn (\n\t\t!! Array.isArray( blockAlign ) &&\n\t\tblockAlign.includes( WIDE_ALIGNMENTS.alignments.full )\n\t);\n}\n/**\n * Whether the block's parent has support for full width alignment.\n *\n * @param {string} blockName\n * @return {boolean} Return whether the block's parent supports full width alignment.\n */\nfunction hasParentFullWidthSupport( blockName ) {\n\tconst blockType = getBlockType( blockName );\n\treturn !! blockType?.parent?.some( hasFullWidthSupport );\n}\n\nexport const alignmentHelpers = {\n\tisFullWidth,\n\tisWideWidth,\n\tisWider,\n\tisContainerRelated,\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,OAAO,MAAMC,eAAe,GAAG;EAC9BC,UAAU,EAAE;IACXC,IAAI,EAAE,MAAM;IACZC,IAAI,EAAE;EACP,CAAC;EACDC,aAAa,EAAE,CAAE,cAAc,CAAE;EACjCC,kBAAkB,EAAE,CACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB;AAElB,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAG;EACpCJ,IAAI,EAAE,IAAI;EACVK,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE;AACT,CAAC;AAED,MAAMC,WAAW,GAAKC,KAAK,IAAMA,KAAK,KAAKZ,eAAe,CAACC,UAAU,CAACE,IAAI;AAE1E,MAAMU,WAAW,GAAKD,KAAK,IAAMA,KAAK,KAAKZ,eAAe,CAACC,UAAU,CAACC,IAAI;AAE1E,MAAMY,OAAO,GAAGA,CAAEC,KAAK,EAAEC,UAAU,KAClCD,KAAK,GAAGT,qBAAqB,CAAEU,UAAU,CAAE;AAE5C,MAAMC,kBAAkB,GAAKC,SAAS,IAAM;EAC3C,IAAKlB,eAAe,CAACK,kBAAkB,CAACc,QAAQ,CAAED,SAAU,CAAC,EAAG;IAC/D,OAAO,KAAK;EACb;EAEA,IAAKE,mBAAmB,CAAEF,SAAU,CAAC,EAAG;IACvC,OAAO,IAAI;EACZ;EAEA,OAAOG,yBAAyB,CAAEH,SAAU,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAAEF,SAAS,EAAG;EACzC,MAAMI,SAAS,GAAGvB,YAAY,CAAEmB,SAAU,CAAC;EAC3C,MAAMK,UAAU,GAAGD,SAAS,EAAEE,QAAQ,EAAEZ,KAAK;EAC7C,OACC,CAAC,CAAEa,KAAK,CAACC,OAAO,CAAEH,UAAW,CAAC,IAC9BA,UAAU,CAACJ,QAAQ,CAAEnB,eAAe,CAACC,UAAU,CAACE,IAAK,CAAC;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,yBAAyBA,CAAEH,SAAS,EAAG;EAC/C,MAAMI,SAAS,GAAGvB,YAAY,CAAEmB,SAAU,CAAC;EAC3C,OAAO,CAAC,CAAEI,SAAS,EAAEK,MAAM,EAAEC,IAAI,CAAER,mBAAoB,CAAC;AACzD;AAEA,OAAO,MAAMS,gBAAgB,GAAG;EAC/BlB,WAAW;EACXE,WAAW;EACXC,OAAO;EACPG;AACD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getBlockType","WIDE_ALIGNMENTS","alignments","wide","full","excludeBlocks","notInnerContainers","ALIGNMENT_BREAKPOINTS","large","medium","small","mobile","isFullWidth","align","isWideWidth","isWider","width","breakpoint","isContainerRelated","blockName","includes","hasFullWidthSupport","hasParentFullWidthSupport","blockType","blockAlign","supports","Array","isArray","parent","some","alignmentHelpers"],"sources":["@wordpress/components/src/mobile/utils/alignments.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\n\nexport const WIDE_ALIGNMENTS = {\n\talignments: {\n\t\twide: 'wide',\n\t\tfull: 'full',\n\t},\n\texcludeBlocks: [ 'core/heading' ],\n\tnotInnerContainers: [\n\t\t'core/image',\n\t\t'core/separator',\n\t\t'core/media-text',\n\t\t'core/quote',\n\t\t'core/pullquote',\n\t],\n};\n\nexport const ALIGNMENT_BREAKPOINTS = {\n\twide: 1024,\n\tlarge: 820,\n\tmedium: 768,\n\tsmall: 680,\n\tmobile: 480,\n};\n\nconst isFullWidth = ( align ) => align === WIDE_ALIGNMENTS.alignments.full;\n\nconst isWideWidth = ( align ) => align === WIDE_ALIGNMENTS.alignments.wide;\n\nconst isWider = ( width, breakpoint ) =>\n\twidth > ALIGNMENT_BREAKPOINTS[ breakpoint ];\n\nconst isContainerRelated = ( blockName ) => {\n\tif ( WIDE_ALIGNMENTS.notInnerContainers.includes( blockName ) ) {\n\t\treturn false;\n\t}\n\n\tif ( hasFullWidthSupport( blockName ) ) {\n\t\treturn true;\n\t}\n\n\treturn hasParentFullWidthSupport( blockName );\n};\n\n/**\n * Whether the block has support for full width alignment.\n *\n * @param {string} blockName\n * @return {boolean} Return whether the block supports full width alignment.\n */\nfunction hasFullWidthSupport( blockName ) {\n\tconst blockType = getBlockType( blockName );\n\tconst blockAlign = blockType?.supports?.align;\n\treturn (\n\t\t!! Array.isArray( blockAlign ) &&\n\t\tblockAlign.includes( WIDE_ALIGNMENTS.alignments.full )\n\t);\n}\n/**\n * Whether the block's parent has support for full width alignment.\n *\n * @param {string} blockName\n * @return {boolean} Return whether the block's parent supports full width alignment.\n */\nfunction hasParentFullWidthSupport( blockName ) {\n\tconst blockType = getBlockType( blockName );\n\treturn !! blockType?.parent?.some( hasFullWidthSupport );\n}\n\nexport const alignmentHelpers = {\n\tisFullWidth,\n\tisWideWidth,\n\tisWider,\n\tisContainerRelated,\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,OAAO,MAAMC,eAAe,GAAG;EAC9BC,UAAU,EAAE;IACXC,IAAI,EAAE,MAAM;IACZC,IAAI,EAAE;EACP,CAAC;EACDC,aAAa,EAAE,CAAE,cAAc,CAAE;EACjCC,kBAAkB,EAAE,CACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB;AAElB,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAG;EACpCJ,IAAI,EAAE,IAAI;EACVK,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE,GAAG;EACXC,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE;AACT,CAAC;AAED,MAAMC,WAAW,GAAKC,KAAK,IAAMA,KAAK,KAAKZ,eAAe,CAACC,UAAU,CAACE,IAAI;AAE1E,MAAMU,WAAW,GAAKD,KAAK,IAAMA,KAAK,KAAKZ,eAAe,CAACC,UAAU,CAACC,IAAI;AAE1E,MAAMY,OAAO,GAAGA,CAAEC,KAAK,EAAEC,UAAU,KAClCD,KAAK,GAAGT,qBAAqB,CAAEU,UAAU,CAAE;AAE5C,MAAMC,kBAAkB,GAAKC,SAAS,IAAM;EAC3C,IAAKlB,eAAe,CAACK,kBAAkB,CAACc,QAAQ,CAAED,SAAU,CAAC,EAAG;IAC/D,OAAO,KAAK;EACb;EAEA,IAAKE,mBAAmB,CAAEF,SAAU,CAAC,EAAG;IACvC,OAAO,IAAI;EACZ;EAEA,OAAOG,yBAAyB,CAAEH,SAAU,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAAEF,SAAS,EAAG;EACzC,MAAMI,SAAS,GAAGvB,YAAY,CAAEmB,SAAU,CAAC;EAC3C,MAAMK,UAAU,GAAGD,SAAS,EAAEE,QAAQ,EAAEZ,KAAK;EAC7C,OACC,CAAC,CAAEa,KAAK,CAACC,OAAO,CAAEH,UAAW,CAAC,IAC9BA,UAAU,CAACJ,QAAQ,CAAEnB,eAAe,CAACC,UAAU,CAACE,IAAK,CAAC;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,yBAAyBA,CAAEH,SAAS,EAAG;EAC/C,MAAMI,SAAS,GAAGvB,YAAY,CAAEmB,SAAU,CAAC;EAC3C,OAAO,CAAC,CAAEI,SAAS,EAAEK,MAAM,EAAEC,IAAI,CAAER,mBAAoB,CAAC;AACzD;AAEA,OAAO,MAAMS,gBAAgB,GAAG;EAC/BlB,WAAW;EACXE,WAAW;EACXC,OAAO;EACPG;AACD,CAAC","ignoreList":[]}
@@ -22,7 +22,7 @@ import { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';
22
22
  // Used to track and dismiss the prior modal when another opens unless nested.
23
23
  import { jsx as _jsx } from "react/jsx-runtime";
24
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
25
- const ModalContext = createContext([]);
25
+ const ModalContext = createContext(new Set());
26
26
 
27
27
  // Used to track body class names applied while modals are open.
28
28
  const bodyOpenClasses = new Map();
@@ -109,22 +109,28 @@ function UnforwardedModal(props, forwardedRef) {
109
109
  // one should remain open at a time and the list enables closing prior ones.
110
110
  const dismissers = useContext(ModalContext);
111
111
  // Used for the tracking and dismissing any nested modals.
112
- const nestedDismissers = useRef([]);
112
+ const [nestedDismissers] = useState(() => new Set());
113
113
 
114
114
  // Updates the stack tracking open modals at this level and calls
115
115
  // onRequestClose for any prior and/or nested modals as applicable.
116
116
  useEffect(() => {
117
- dismissers.push(refOnRequestClose);
118
- const [first, second] = dismissers;
119
- if (second) {
120
- first?.current?.();
117
+ // add this modal instance to the dismissers set
118
+ dismissers.add(refOnRequestClose);
119
+ // request that all the other modals close themselves
120
+ for (const dismisser of dismissers) {
121
+ if (dismisser !== refOnRequestClose) {
122
+ dismisser.current?.();
123
+ }
121
124
  }
122
- const nested = nestedDismissers.current;
123
125
  return () => {
124
- nested[0]?.current?.();
125
- dismissers.shift();
126
+ // request that all the nested modals close themselves
127
+ for (const dismisser of nestedDismissers) {
128
+ dismisser.current?.();
129
+ }
130
+ // remove this modal instance from the dismissers set
131
+ dismissers.delete(refOnRequestClose);
126
132
  };
127
- }, [dismissers]);
133
+ }, [dismissers, nestedDismissers]);
128
134
 
129
135
  // Adds/removes the value of bodyOpenClassName to body element.
130
136
  useEffect(() => {
@@ -257,7 +263,7 @@ function UnforwardedModal(props, forwardedRef) {
257
263
  })
258
264
  });
259
265
  return createPortal( /*#__PURE__*/_jsx(ModalContext.Provider, {
260
- value: nestedDismissers.current,
266
+ value: nestedDismissers,
261
267
  children: modal
262
268
  }), document.body);
263
269
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","createPortal","useCallback","useEffect","useRef","useState","forwardRef","useLayoutEffect","createContext","useContext","useInstanceId","useFocusReturn","useFocusOnMount","useConstrainedTabbing","useMergeRefs","__","close","getScrollContainer","ariaHelper","Button","StyleProvider","withIgnoreIMEEvents","jsx","_jsx","jsxs","_jsxs","ModalContext","bodyOpenClasses","Map","UnforwardedModal","props","forwardedRef","bodyOpenClassName","role","title","focusOnMount","shouldCloseOnEsc","shouldCloseOnClickOutside","isDismissible","aria","labelledby","undefined","describedby","onRequestClose","icon","closeButtonLabel","children","style","overlayClassName","className","contentLabel","onKeyDown","isFullScreen","size","headerActions","__experimentalHideHeader","ref","instanceId","Modal","headingId","focusOnMountRef","constrainedTabbingRef","focusReturnRef","contentRef","childrenContainerRef","hasScrolledContent","setHasScrolledContent","hasScrollableContent","setHasScrollableContent","sizeClass","isContentScrollable","current","closestScrollContainer","modalize","unmodalize","refOnRequestClose","dismissers","nestedDismissers","push","first","second","nested","shift","_bodyOpenClasses$get","theClass","oneMore","get","set","document","body","classList","add","oneLess","remove","delete","window","ResizeObserver","resizeObserver","observe","disconnect","handleEscapeKeyDown","event","code","key","defaultPrevented","preventDefault","onContentContainerScroll","e","_e$currentTarget$scro","scrollY","currentTarget","scrollTop","pressTarget","overlayPressHandlers","onPointerDown","target","onPointerUp","button","isSameTarget","modal","tabIndex","onScroll","id","onClick","label","Provider","value"],"sources":["@wordpress/components/src/modal/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type {\n\tForwardedRef,\n\tKeyboardEvent,\n\tMutableRefObject,\n\tUIEvent,\n} from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreatePortal,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n\tforwardRef,\n\tuseLayoutEffect,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport {\n\tuseInstanceId,\n\tuseFocusReturn,\n\tuseFocusOnMount,\n\tuseConstrainedTabbing,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { close } from '@wordpress/icons';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport * as ariaHelper from './aria-helper';\nimport Button from '../button';\nimport StyleProvider from '../style-provider';\nimport type { ModalProps } from './types';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\n\n// Used to track and dismiss the prior modal when another opens unless nested.\nconst ModalContext = createContext<\n\tMutableRefObject< ModalProps[ 'onRequestClose' ] | undefined >[]\n>( [] );\n\n// Used to track body class names applied while modals are open.\nconst bodyOpenClasses = new Map< string, number >();\n\nfunction UnforwardedModal(\n\tprops: ModalProps,\n\tforwardedRef: ForwardedRef< HTMLDivElement >\n) {\n\tconst {\n\t\tbodyOpenClassName = 'modal-open',\n\t\trole = 'dialog',\n\t\ttitle = null,\n\t\tfocusOnMount = true,\n\t\tshouldCloseOnEsc = true,\n\t\tshouldCloseOnClickOutside = true,\n\t\tisDismissible = true,\n\t\t/* Accessibility. */\n\t\taria = {\n\t\t\tlabelledby: undefined,\n\t\t\tdescribedby: undefined,\n\t\t},\n\t\tonRequestClose,\n\t\ticon,\n\t\tcloseButtonLabel,\n\t\tchildren,\n\t\tstyle,\n\t\toverlayClassName,\n\t\tclassName,\n\t\tcontentLabel,\n\t\tonKeyDown,\n\t\tisFullScreen = false,\n\t\tsize,\n\t\theaderActions = null,\n\t\t__experimentalHideHeader = false,\n\t} = props;\n\n\tconst ref = useRef< HTMLDivElement >();\n\n\tconst instanceId = useInstanceId( Modal );\n\tconst headingId = title\n\t\t? `components-modal-header-${ instanceId }`\n\t\t: aria.labelledby;\n\n\t// The focus hook does not support 'firstContentElement' but this is a valid\n\t// value for the Modal's focusOnMount prop. The following code ensures the focus\n\t// hook will focus the first focusable node within the element to which it is applied.\n\t// When `firstContentElement` is passed as the value of the focusOnMount prop,\n\t// the focus hook is applied to the Modal's content element.\n\t// Otherwise, the focus hook is applied to the Modal's ref. This ensures that the\n\t// focus hook will focus the first element in the Modal's **content** when\n\t// `firstContentElement` is passed.\n\tconst focusOnMountRef = useFocusOnMount(\n\t\tfocusOnMount === 'firstContentElement' ? 'firstElement' : focusOnMount\n\t);\n\tconst constrainedTabbingRef = useConstrainedTabbing();\n\tconst focusReturnRef = useFocusReturn();\n\tconst contentRef = useRef< HTMLDivElement >( null );\n\tconst childrenContainerRef = useRef< HTMLDivElement >( null );\n\n\tconst [ hasScrolledContent, setHasScrolledContent ] = useState( false );\n\tconst [ hasScrollableContent, setHasScrollableContent ] = useState( false );\n\n\tlet sizeClass;\n\tif ( isFullScreen || size === 'fill' ) {\n\t\tsizeClass = 'is-full-screen';\n\t} else if ( size ) {\n\t\tsizeClass = `has-size-${ size }`;\n\t}\n\n\t// Determines whether the Modal content is scrollable and updates the state.\n\tconst isContentScrollable = useCallback( () => {\n\t\tif ( ! contentRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst closestScrollContainer = getScrollContainer( contentRef.current );\n\n\t\tif ( contentRef.current === closestScrollContainer ) {\n\t\t\tsetHasScrollableContent( true );\n\t\t} else {\n\t\t\tsetHasScrollableContent( false );\n\t\t}\n\t}, [ contentRef ] );\n\n\t// Accessibly isolates/unisolates the modal.\n\tuseEffect( () => {\n\t\tariaHelper.modalize( ref.current );\n\t\treturn () => ariaHelper.unmodalize();\n\t}, [] );\n\n\t// Keeps a fresh ref for the subsequent effect.\n\tconst refOnRequestClose = useRef< ModalProps[ 'onRequestClose' ] >();\n\tuseEffect( () => {\n\t\trefOnRequestClose.current = onRequestClose;\n\t}, [ onRequestClose ] );\n\n\t// The list of `onRequestClose` callbacks of open (non-nested) Modals. Only\n\t// one should remain open at a time and the list enables closing prior ones.\n\tconst dismissers = useContext( ModalContext );\n\t// Used for the tracking and dismissing any nested modals.\n\tconst nestedDismissers = useRef< typeof dismissers >( [] );\n\n\t// Updates the stack tracking open modals at this level and calls\n\t// onRequestClose for any prior and/or nested modals as applicable.\n\tuseEffect( () => {\n\t\tdismissers.push( refOnRequestClose );\n\t\tconst [ first, second ] = dismissers;\n\t\tif ( second ) {\n\t\t\tfirst?.current?.();\n\t\t}\n\n\t\tconst nested = nestedDismissers.current;\n\t\treturn () => {\n\t\t\tnested[ 0 ]?.current?.();\n\t\t\tdismissers.shift();\n\t\t};\n\t}, [ dismissers ] );\n\n\t// Adds/removes the value of bodyOpenClassName to body element.\n\tuseEffect( () => {\n\t\tconst theClass = bodyOpenClassName;\n\t\tconst oneMore = 1 + ( bodyOpenClasses.get( theClass ) ?? 0 );\n\t\tbodyOpenClasses.set( theClass, oneMore );\n\t\tdocument.body.classList.add( bodyOpenClassName );\n\t\treturn () => {\n\t\t\tconst oneLess = bodyOpenClasses.get( theClass )! - 1;\n\t\t\tif ( oneLess === 0 ) {\n\t\t\t\tdocument.body.classList.remove( theClass );\n\t\t\t\tbodyOpenClasses.delete( theClass );\n\t\t\t} else {\n\t\t\t\tbodyOpenClasses.set( theClass, oneLess );\n\t\t\t}\n\t\t};\n\t}, [ bodyOpenClassName ] );\n\n\t// Calls the isContentScrollable callback when the Modal children container resizes.\n\tuseLayoutEffect( () => {\n\t\tif ( ! window.ResizeObserver || ! childrenContainerRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeObserver = new ResizeObserver( isContentScrollable );\n\t\tresizeObserver.observe( childrenContainerRef.current );\n\n\t\tisContentScrollable();\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t};\n\t}, [ isContentScrollable, childrenContainerRef ] );\n\n\tfunction handleEscapeKeyDown( event: KeyboardEvent< HTMLDivElement > ) {\n\t\tif (\n\t\t\tshouldCloseOnEsc &&\n\t\t\t( event.code === 'Escape' || event.key === 'Escape' ) &&\n\t\t\t! event.defaultPrevented\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tif ( onRequestClose ) {\n\t\t\t\tonRequestClose( event );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst onContentContainerScroll = useCallback(\n\t\t( e: UIEvent< HTMLDivElement > ) => {\n\t\t\tconst scrollY = e?.currentTarget?.scrollTop ?? -1;\n\n\t\t\tif ( ! hasScrolledContent && scrollY > 0 ) {\n\t\t\t\tsetHasScrolledContent( true );\n\t\t\t} else if ( hasScrolledContent && scrollY <= 0 ) {\n\t\t\t\tsetHasScrolledContent( false );\n\t\t\t}\n\t\t},\n\t\t[ hasScrolledContent ]\n\t);\n\n\tlet pressTarget: EventTarget | null = null;\n\tconst overlayPressHandlers: {\n\t\tonPointerDown: React.PointerEventHandler< HTMLDivElement >;\n\t\tonPointerUp: React.PointerEventHandler< HTMLDivElement >;\n\t} = {\n\t\tonPointerDown: ( event ) => {\n\t\t\tif ( event.target === event.currentTarget ) {\n\t\t\t\tpressTarget = event.target;\n\t\t\t\t// Avoids focus changing so that focus return works as expected.\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t// Closes the modal with two exceptions. 1. Opening the context menu on\n\t\t// the overlay. 2. Pressing on the overlay then dragging the pointer\n\t\t// over the modal and releasing. Due to the modal being a child of the\n\t\t// overlay, such a gesture is a `click` on the overlay and cannot be\n\t\t// excepted by a `click` handler. Thus the tactic of handling\n\t\t// `pointerup` and comparing its target to that of the `pointerdown`.\n\t\tonPointerUp: ( { target, button } ) => {\n\t\t\tconst isSameTarget = target === pressTarget;\n\t\t\tpressTarget = null;\n\t\t\tif ( button === 0 && isSameTarget ) {\n\t\t\t\tonRequestClose();\n\t\t\t}\n\t\t},\n\t};\n\n\tconst modal = (\n\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t<div\n\t\t\tref={ useMergeRefs( [ ref, forwardedRef ] ) }\n\t\t\tclassName={ clsx(\n\t\t\t\t'components-modal__screen-overlay',\n\t\t\t\toverlayClassName\n\t\t\t) }\n\t\t\tonKeyDown={ withIgnoreIMEEvents( handleEscapeKeyDown ) }\n\t\t\t{ ...( shouldCloseOnClickOutside ? overlayPressHandlers : {} ) }\n\t\t>\n\t\t\t<StyleProvider document={ document }>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'components-modal__frame',\n\t\t\t\t\t\tsizeClass,\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ style }\n\t\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t\tconstrainedTabbingRef,\n\t\t\t\t\t\tfocusReturnRef,\n\t\t\t\t\t\tfocusOnMount !== 'firstContentElement'\n\t\t\t\t\t\t\t? focusOnMountRef\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t] ) }\n\t\t\t\t\trole={ role }\n\t\t\t\t\taria-label={ contentLabel }\n\t\t\t\t\taria-labelledby={ contentLabel ? undefined : headingId }\n\t\t\t\t\taria-describedby={ aria.describedby }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( 'components-modal__content', {\n\t\t\t\t\t\t\t'hide-header': __experimentalHideHeader,\n\t\t\t\t\t\t\t'is-scrollable': hasScrollableContent,\n\t\t\t\t\t\t\t'has-scrolled-content': hasScrolledContent,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\trole=\"document\"\n\t\t\t\t\t\tonScroll={ onContentContainerScroll }\n\t\t\t\t\t\tref={ contentRef }\n\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\thasScrollableContent\n\t\t\t\t\t\t\t\t? __( 'Scrollable section' )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttabIndex={ hasScrollableContent ? 0 : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! __experimentalHideHeader && (\n\t\t\t\t\t\t\t<div className=\"components-modal__header\">\n\t\t\t\t\t\t\t\t<div className=\"components-modal__header-heading-container\">\n\t\t\t\t\t\t\t\t\t{ icon && (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-modal__icon-container\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ title && (\n\t\t\t\t\t\t\t\t\t\t<h1\n\t\t\t\t\t\t\t\t\t\t\tid={ headingId }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-modal__header-heading\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{ headerActions }\n\t\t\t\t\t\t\t\t{ isDismissible && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tonClick={ onRequestClose }\n\t\t\t\t\t\t\t\t\t\ticon={ close }\n\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\tcloseButtonLabel || __( 'Close' )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t\t\t\tchildrenContainerRef,\n\t\t\t\t\t\t\t\tfocusOnMount === 'firstContentElement'\n\t\t\t\t\t\t\t\t\t? focusOnMountRef\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t] ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</StyleProvider>\n\t\t</div>\n\t);\n\n\treturn createPortal(\n\t\t<ModalContext.Provider value={ nestedDismissers.current }>\n\t\t\t{ modal }\n\t\t</ModalContext.Provider>,\n\t\tdocument.body\n\t);\n}\n\n/**\n * Modals give users information and choices related to a task they’re trying to\n * accomplish. They can contain critical information, require decisions, or\n * involve multiple tasks.\n *\n * ```jsx\n * import { Button, Modal } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyModal = () => {\n * const [ isOpen, setOpen ] = useState( false );\n * const openModal = () => setOpen( true );\n * const closeModal = () => setOpen( false );\n *\n * return (\n * <>\n * <Button variant=\"secondary\" onClick={ openModal }>\n * Open Modal\n * </Button>\n * { isOpen && (\n * <Modal title=\"This is my modal\" onRequestClose={ closeModal }>\n * <Button variant=\"secondary\" onClick={ closeModal }>\n * My custom close button\n * </Button>\n * </Modal>\n * ) }\n * </>\n * );\n * };\n * ```\n */\nexport const Modal = forwardRef( UnforwardedModal );\n\nexport default Modal;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","createPortal","useCallback","useEffect","useRef","useState","forwardRef","useLayoutEffect","createContext","useContext","useInstanceId","useFocusReturn","useFocusOnMount","useConstrainedTabbing","useMergeRefs","__","close","getScrollContainer","ariaHelper","Button","StyleProvider","withIgnoreIMEEvents","jsx","_jsx","jsxs","_jsxs","ModalContext","Set","bodyOpenClasses","Map","UnforwardedModal","props","forwardedRef","bodyOpenClassName","role","title","focusOnMount","shouldCloseOnEsc","shouldCloseOnClickOutside","isDismissible","aria","labelledby","undefined","describedby","onRequestClose","icon","closeButtonLabel","children","style","overlayClassName","className","contentLabel","onKeyDown","isFullScreen","size","headerActions","__experimentalHideHeader","ref","instanceId","Modal","headingId","focusOnMountRef","constrainedTabbingRef","focusReturnRef","contentRef","childrenContainerRef","hasScrolledContent","setHasScrolledContent","hasScrollableContent","setHasScrollableContent","sizeClass","isContentScrollable","current","closestScrollContainer","modalize","unmodalize","refOnRequestClose","dismissers","nestedDismissers","add","dismisser","delete","_bodyOpenClasses$get","theClass","oneMore","get","set","document","body","classList","oneLess","remove","window","ResizeObserver","resizeObserver","observe","disconnect","handleEscapeKeyDown","event","code","key","defaultPrevented","preventDefault","onContentContainerScroll","e","_e$currentTarget$scro","scrollY","currentTarget","scrollTop","pressTarget","overlayPressHandlers","onPointerDown","target","onPointerUp","button","isSameTarget","modal","tabIndex","onScroll","id","onClick","label","Provider","value"],"sources":["@wordpress/components/src/modal/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ForwardedRef, KeyboardEvent, RefObject, UIEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreatePortal,\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n\tforwardRef,\n\tuseLayoutEffect,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport {\n\tuseInstanceId,\n\tuseFocusReturn,\n\tuseFocusOnMount,\n\tuseConstrainedTabbing,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { close } from '@wordpress/icons';\nimport { getScrollContainer } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport * as ariaHelper from './aria-helper';\nimport Button from '../button';\nimport StyleProvider from '../style-provider';\nimport type { ModalProps } from './types';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\n\n// Used to track and dismiss the prior modal when another opens unless nested.\ntype Dismissers = Set<\n\tRefObject< ModalProps[ 'onRequestClose' ] | undefined >\n>;\nconst ModalContext = createContext< Dismissers >( new Set() );\n\n// Used to track body class names applied while modals are open.\nconst bodyOpenClasses = new Map< string, number >();\n\nfunction UnforwardedModal(\n\tprops: ModalProps,\n\tforwardedRef: ForwardedRef< HTMLDivElement >\n) {\n\tconst {\n\t\tbodyOpenClassName = 'modal-open',\n\t\trole = 'dialog',\n\t\ttitle = null,\n\t\tfocusOnMount = true,\n\t\tshouldCloseOnEsc = true,\n\t\tshouldCloseOnClickOutside = true,\n\t\tisDismissible = true,\n\t\t/* Accessibility. */\n\t\taria = {\n\t\t\tlabelledby: undefined,\n\t\t\tdescribedby: undefined,\n\t\t},\n\t\tonRequestClose,\n\t\ticon,\n\t\tcloseButtonLabel,\n\t\tchildren,\n\t\tstyle,\n\t\toverlayClassName,\n\t\tclassName,\n\t\tcontentLabel,\n\t\tonKeyDown,\n\t\tisFullScreen = false,\n\t\tsize,\n\t\theaderActions = null,\n\t\t__experimentalHideHeader = false,\n\t} = props;\n\n\tconst ref = useRef< HTMLDivElement >();\n\n\tconst instanceId = useInstanceId( Modal );\n\tconst headingId = title\n\t\t? `components-modal-header-${ instanceId }`\n\t\t: aria.labelledby;\n\n\t// The focus hook does not support 'firstContentElement' but this is a valid\n\t// value for the Modal's focusOnMount prop. The following code ensures the focus\n\t// hook will focus the first focusable node within the element to which it is applied.\n\t// When `firstContentElement` is passed as the value of the focusOnMount prop,\n\t// the focus hook is applied to the Modal's content element.\n\t// Otherwise, the focus hook is applied to the Modal's ref. This ensures that the\n\t// focus hook will focus the first element in the Modal's **content** when\n\t// `firstContentElement` is passed.\n\tconst focusOnMountRef = useFocusOnMount(\n\t\tfocusOnMount === 'firstContentElement' ? 'firstElement' : focusOnMount\n\t);\n\tconst constrainedTabbingRef = useConstrainedTabbing();\n\tconst focusReturnRef = useFocusReturn();\n\tconst contentRef = useRef< HTMLDivElement >( null );\n\tconst childrenContainerRef = useRef< HTMLDivElement >( null );\n\n\tconst [ hasScrolledContent, setHasScrolledContent ] = useState( false );\n\tconst [ hasScrollableContent, setHasScrollableContent ] = useState( false );\n\n\tlet sizeClass;\n\tif ( isFullScreen || size === 'fill' ) {\n\t\tsizeClass = 'is-full-screen';\n\t} else if ( size ) {\n\t\tsizeClass = `has-size-${ size }`;\n\t}\n\n\t// Determines whether the Modal content is scrollable and updates the state.\n\tconst isContentScrollable = useCallback( () => {\n\t\tif ( ! contentRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst closestScrollContainer = getScrollContainer( contentRef.current );\n\n\t\tif ( contentRef.current === closestScrollContainer ) {\n\t\t\tsetHasScrollableContent( true );\n\t\t} else {\n\t\t\tsetHasScrollableContent( false );\n\t\t}\n\t}, [ contentRef ] );\n\n\t// Accessibly isolates/unisolates the modal.\n\tuseEffect( () => {\n\t\tariaHelper.modalize( ref.current );\n\t\treturn () => ariaHelper.unmodalize();\n\t}, [] );\n\n\t// Keeps a fresh ref for the subsequent effect.\n\tconst refOnRequestClose = useRef< ModalProps[ 'onRequestClose' ] >();\n\tuseEffect( () => {\n\t\trefOnRequestClose.current = onRequestClose;\n\t}, [ onRequestClose ] );\n\n\t// The list of `onRequestClose` callbacks of open (non-nested) Modals. Only\n\t// one should remain open at a time and the list enables closing prior ones.\n\tconst dismissers = useContext( ModalContext );\n\t// Used for the tracking and dismissing any nested modals.\n\tconst [ nestedDismissers ] = useState< Dismissers >( () => new Set() );\n\n\t// Updates the stack tracking open modals at this level and calls\n\t// onRequestClose for any prior and/or nested modals as applicable.\n\tuseEffect( () => {\n\t\t// add this modal instance to the dismissers set\n\t\tdismissers.add( refOnRequestClose );\n\t\t// request that all the other modals close themselves\n\t\tfor ( const dismisser of dismissers ) {\n\t\t\tif ( dismisser !== refOnRequestClose ) {\n\t\t\t\tdismisser.current?.();\n\t\t\t}\n\t\t}\n\t\treturn () => {\n\t\t\t// request that all the nested modals close themselves\n\t\t\tfor ( const dismisser of nestedDismissers ) {\n\t\t\t\tdismisser.current?.();\n\t\t\t}\n\t\t\t// remove this modal instance from the dismissers set\n\t\t\tdismissers.delete( refOnRequestClose );\n\t\t};\n\t}, [ dismissers, nestedDismissers ] );\n\n\t// Adds/removes the value of bodyOpenClassName to body element.\n\tuseEffect( () => {\n\t\tconst theClass = bodyOpenClassName;\n\t\tconst oneMore = 1 + ( bodyOpenClasses.get( theClass ) ?? 0 );\n\t\tbodyOpenClasses.set( theClass, oneMore );\n\t\tdocument.body.classList.add( bodyOpenClassName );\n\t\treturn () => {\n\t\t\tconst oneLess = bodyOpenClasses.get( theClass )! - 1;\n\t\t\tif ( oneLess === 0 ) {\n\t\t\t\tdocument.body.classList.remove( theClass );\n\t\t\t\tbodyOpenClasses.delete( theClass );\n\t\t\t} else {\n\t\t\t\tbodyOpenClasses.set( theClass, oneLess );\n\t\t\t}\n\t\t};\n\t}, [ bodyOpenClassName ] );\n\n\t// Calls the isContentScrollable callback when the Modal children container resizes.\n\tuseLayoutEffect( () => {\n\t\tif ( ! window.ResizeObserver || ! childrenContainerRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeObserver = new ResizeObserver( isContentScrollable );\n\t\tresizeObserver.observe( childrenContainerRef.current );\n\n\t\tisContentScrollable();\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t};\n\t}, [ isContentScrollable, childrenContainerRef ] );\n\n\tfunction handleEscapeKeyDown( event: KeyboardEvent< HTMLDivElement > ) {\n\t\tif (\n\t\t\tshouldCloseOnEsc &&\n\t\t\t( event.code === 'Escape' || event.key === 'Escape' ) &&\n\t\t\t! event.defaultPrevented\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tif ( onRequestClose ) {\n\t\t\t\tonRequestClose( event );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst onContentContainerScroll = useCallback(\n\t\t( e: UIEvent< HTMLDivElement > ) => {\n\t\t\tconst scrollY = e?.currentTarget?.scrollTop ?? -1;\n\n\t\t\tif ( ! hasScrolledContent && scrollY > 0 ) {\n\t\t\t\tsetHasScrolledContent( true );\n\t\t\t} else if ( hasScrolledContent && scrollY <= 0 ) {\n\t\t\t\tsetHasScrolledContent( false );\n\t\t\t}\n\t\t},\n\t\t[ hasScrolledContent ]\n\t);\n\n\tlet pressTarget: EventTarget | null = null;\n\tconst overlayPressHandlers: {\n\t\tonPointerDown: React.PointerEventHandler< HTMLDivElement >;\n\t\tonPointerUp: React.PointerEventHandler< HTMLDivElement >;\n\t} = {\n\t\tonPointerDown: ( event ) => {\n\t\t\tif ( event.target === event.currentTarget ) {\n\t\t\t\tpressTarget = event.target;\n\t\t\t\t// Avoids focus changing so that focus return works as expected.\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t// Closes the modal with two exceptions. 1. Opening the context menu on\n\t\t// the overlay. 2. Pressing on the overlay then dragging the pointer\n\t\t// over the modal and releasing. Due to the modal being a child of the\n\t\t// overlay, such a gesture is a `click` on the overlay and cannot be\n\t\t// excepted by a `click` handler. Thus the tactic of handling\n\t\t// `pointerup` and comparing its target to that of the `pointerdown`.\n\t\tonPointerUp: ( { target, button } ) => {\n\t\t\tconst isSameTarget = target === pressTarget;\n\t\t\tpressTarget = null;\n\t\t\tif ( button === 0 && isSameTarget ) {\n\t\t\t\tonRequestClose();\n\t\t\t}\n\t\t},\n\t};\n\n\tconst modal = (\n\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t<div\n\t\t\tref={ useMergeRefs( [ ref, forwardedRef ] ) }\n\t\t\tclassName={ clsx(\n\t\t\t\t'components-modal__screen-overlay',\n\t\t\t\toverlayClassName\n\t\t\t) }\n\t\t\tonKeyDown={ withIgnoreIMEEvents( handleEscapeKeyDown ) }\n\t\t\t{ ...( shouldCloseOnClickOutside ? overlayPressHandlers : {} ) }\n\t\t>\n\t\t\t<StyleProvider document={ document }>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'components-modal__frame',\n\t\t\t\t\t\tsizeClass,\n\t\t\t\t\t\tclassName\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ style }\n\t\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t\tconstrainedTabbingRef,\n\t\t\t\t\t\tfocusReturnRef,\n\t\t\t\t\t\tfocusOnMount !== 'firstContentElement'\n\t\t\t\t\t\t\t? focusOnMountRef\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t] ) }\n\t\t\t\t\trole={ role }\n\t\t\t\t\taria-label={ contentLabel }\n\t\t\t\t\taria-labelledby={ contentLabel ? undefined : headingId }\n\t\t\t\t\taria-describedby={ aria.describedby }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( 'components-modal__content', {\n\t\t\t\t\t\t\t'hide-header': __experimentalHideHeader,\n\t\t\t\t\t\t\t'is-scrollable': hasScrollableContent,\n\t\t\t\t\t\t\t'has-scrolled-content': hasScrolledContent,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\trole=\"document\"\n\t\t\t\t\t\tonScroll={ onContentContainerScroll }\n\t\t\t\t\t\tref={ contentRef }\n\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\thasScrollableContent\n\t\t\t\t\t\t\t\t? __( 'Scrollable section' )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttabIndex={ hasScrollableContent ? 0 : undefined }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! __experimentalHideHeader && (\n\t\t\t\t\t\t\t<div className=\"components-modal__header\">\n\t\t\t\t\t\t\t\t<div className=\"components-modal__header-heading-container\">\n\t\t\t\t\t\t\t\t\t{ icon && (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-modal__icon-container\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ title && (\n\t\t\t\t\t\t\t\t\t\t<h1\n\t\t\t\t\t\t\t\t\t\t\tid={ headingId }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"components-modal__header-heading\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{ headerActions }\n\t\t\t\t\t\t\t\t{ isDismissible && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tonClick={ onRequestClose }\n\t\t\t\t\t\t\t\t\t\ticon={ close }\n\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\tcloseButtonLabel || __( 'Close' )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t\t\t\tchildrenContainerRef,\n\t\t\t\t\t\t\t\tfocusOnMount === 'firstContentElement'\n\t\t\t\t\t\t\t\t\t? focusOnMountRef\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\t] ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</StyleProvider>\n\t\t</div>\n\t);\n\n\treturn createPortal(\n\t\t<ModalContext.Provider value={ nestedDismissers }>\n\t\t\t{ modal }\n\t\t</ModalContext.Provider>,\n\t\tdocument.body\n\t);\n}\n\n/**\n * Modals give users information and choices related to a task they’re trying to\n * accomplish. They can contain critical information, require decisions, or\n * involve multiple tasks.\n *\n * ```jsx\n * import { Button, Modal } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyModal = () => {\n * const [ isOpen, setOpen ] = useState( false );\n * const openModal = () => setOpen( true );\n * const closeModal = () => setOpen( false );\n *\n * return (\n * <>\n * <Button variant=\"secondary\" onClick={ openModal }>\n * Open Modal\n * </Button>\n * { isOpen && (\n * <Modal title=\"This is my modal\" onRequestClose={ closeModal }>\n * <Button variant=\"secondary\" onClick={ closeModal }>\n * My custom close button\n * </Button>\n * </Modal>\n * ) }\n * </>\n * );\n * };\n * ```\n */\nexport const Modal = forwardRef( UnforwardedModal );\n\nexport default Modal;\n"],"mappings":"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","ignoreList":[]}
@@ -45,7 +45,7 @@ function UnconnectedNavigatorBackButton(props, forwardedRef) {
45
45
  * <NavigatorScreen path="/child">
46
46
  * <p>This is the child screen.</p>
47
47
  * <NavigatorBackButton>
48
- * Go back
48
+ * Go back (to parent)
49
49
  * </NavigatorBackButton>
50
50
  * </NavigatorScreen>
51
51
  * </NavigatorProvider>
@@ -1 +1 @@
1
- {"version":3,"names":["contextConnect","View","useNavigatorBackButton","jsx","_jsx","UnconnectedNavigatorBackButton","props","forwardedRef","navigatorBackButtonProps","ref","NavigatorBackButton"],"sources":["@wordpress/components/src/navigator/navigator-back-button/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect } from '../../context';\nimport { View } from '../../view';\nimport { useNavigatorBackButton } from './hook';\nimport type { NavigatorBackButtonProps } from '../types';\n\nfunction UnconnectedNavigatorBackButton(\n\tprops: WordPressComponentProps< NavigatorBackButtonProps, 'button' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst navigatorBackButtonProps = useNavigatorBackButton( props );\n\n\treturn <View ref={ forwardedRef } { ...navigatorBackButtonProps } />;\n}\n\n/**\n * The `NavigatorBackButton` component can be used to navigate to a screen and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorScreen` and the `NavigatorButton` components (or the `useNavigator`\n * hook).\n *\n * @example\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorBackButton as NavigatorBackButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorBackButton>\n * Go back\n * </NavigatorBackButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorBackButton = contextConnect(\n\tUnconnectedNavigatorBackButton,\n\t'NavigatorBackButton'\n);\n\nexport default NavigatorBackButton;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,eAAe;AAC9C,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,sBAAsB,QAAQ,QAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGhD,SAASC,8BAA8BA,CACtCC,KAAoE,EACpEC,YAAiC,EAChC;EACD,MAAMC,wBAAwB,GAAGN,sBAAsB,CAAEI,KAAM,CAAC;EAEhE,oBAAOF,IAAA,CAACH,IAAI;IAACQ,GAAG,EAAGF,YAAc;IAAA,GAAMC;EAAwB,CAAI,CAAC;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,mBAAmB,GAAGV,cAAc,CAChDK,8BAA8B,EAC9B,qBACD,CAAC;AAED,eAAeK,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["contextConnect","View","useNavigatorBackButton","jsx","_jsx","UnconnectedNavigatorBackButton","props","forwardedRef","navigatorBackButtonProps","ref","NavigatorBackButton"],"sources":["@wordpress/components/src/navigator/navigator-back-button/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect } from '../../context';\nimport { View } from '../../view';\nimport { useNavigatorBackButton } from './hook';\nimport type { NavigatorBackButtonProps } from '../types';\n\nfunction UnconnectedNavigatorBackButton(\n\tprops: WordPressComponentProps< NavigatorBackButtonProps, 'button' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst navigatorBackButtonProps = useNavigatorBackButton( props );\n\n\treturn <View ref={ forwardedRef } { ...navigatorBackButtonProps } />;\n}\n\n/**\n * The `NavigatorBackButton` component can be used to navigate to a screen and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorScreen` and the `NavigatorButton` components (or the `useNavigator`\n * hook).\n *\n * @example\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorBackButton as NavigatorBackButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorBackButton>\n * Go back (to parent)\n * </NavigatorBackButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorBackButton = contextConnect(\n\tUnconnectedNavigatorBackButton,\n\t'NavigatorBackButton'\n);\n\nexport default NavigatorBackButton;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,eAAe;AAC9C,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,sBAAsB,QAAQ,QAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGhD,SAASC,8BAA8BA,CACtCC,KAAoE,EACpEC,YAAiC,EAChC;EACD,MAAMC,wBAAwB,GAAGN,sBAAsB,CAAEI,KAAM,CAAC;EAEhE,oBAAOF,IAAA,CAACH,IAAI;IAACQ,GAAG,EAAGF,YAAc;IAAA,GAAMC;EAAwB,CAAI,CAAC;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,mBAAmB,GAAGV,cAAc,CAChDK,8BAA8B,EAC9B,qBACD,CAAC;AAED,eAAeK,mBAAmB","ignoreList":[]}
@@ -14,22 +14,16 @@ export function useNavigatorBackButton(props) {
14
14
  const {
15
15
  onClick,
16
16
  as = Button,
17
- goToParent: goToParentProp = false,
18
17
  ...otherProps
19
18
  } = useContextSystem(props, 'NavigatorBackButton');
20
19
  const {
21
- goBack,
22
- goToParent
20
+ goBack
23
21
  } = useNavigator();
24
22
  const handleClick = useCallback(e => {
25
23
  e.preventDefault();
26
- if (goToParentProp) {
27
- goToParent();
28
- } else {
29
- goBack();
30
- }
24
+ goBack();
31
25
  onClick?.(e);
32
- }, [goToParentProp, goToParent, goBack, onClick]);
26
+ }, [goBack, onClick]);
33
27
  return {
34
28
  as,
35
29
  onClick: handleClick,
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useContextSystem","Button","useNavigator","useNavigatorBackButton","props","onClick","as","goToParent","goToParentProp","otherProps","goBack","handleClick","e","preventDefault"],"sources":["@wordpress/components/src/navigator/navigator-back-button/hook.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { useContextSystem } from '../../context';\nimport Button from '../../button';\nimport useNavigator from '../use-navigator';\nimport type { NavigatorBackButtonHookProps } from '../types';\n\nexport function useNavigatorBackButton(\n\tprops: WordPressComponentProps< NavigatorBackButtonHookProps, 'button' >\n) {\n\tconst {\n\t\tonClick,\n\t\tas = Button,\n\t\tgoToParent: goToParentProp = false,\n\t\t...otherProps\n\t} = useContextSystem( props, 'NavigatorBackButton' );\n\n\tconst { goBack, goToParent } = useNavigator();\n\tconst handleClick: React.MouseEventHandler< HTMLButtonElement > =\n\t\tuseCallback(\n\t\t\t( e ) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tif ( goToParentProp ) {\n\t\t\t\t\tgoToParent();\n\t\t\t\t} else {\n\t\t\t\t\tgoBack();\n\t\t\t\t}\n\t\t\t\tonClick?.( e );\n\t\t\t},\n\t\t\t[ goToParentProp, goToParent, goBack, onClick ]\n\t\t);\n\n\treturn {\n\t\tas,\n\t\tonClick: handleClick,\n\t\t...otherProps,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,oBAAoB;;AAEhD;AACA;AACA;;AAEA,SAASC,gBAAgB,QAAQ,eAAe;AAChD,OAAOC,MAAM,MAAM,cAAc;AACjC,OAAOC,YAAY,MAAM,kBAAkB;AAG3C,OAAO,SAASC,sBAAsBA,CACrCC,KAAwE,EACvE;EACD,MAAM;IACLC,OAAO;IACPC,EAAE,GAAGL,MAAM;IACXM,UAAU,EAAEC,cAAc,GAAG,KAAK;IAClC,GAAGC;EACJ,CAAC,GAAGT,gBAAgB,CAAEI,KAAK,EAAE,qBAAsB,CAAC;EAEpD,MAAM;IAAEM,MAAM;IAAEH;EAAW,CAAC,GAAGL,YAAY,CAAC,CAAC;EAC7C,MAAMS,WAAyD,GAC9DZ,WAAW,CACRa,CAAC,IAAM;IACRA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClB,IAAKL,cAAc,EAAG;MACrBD,UAAU,CAAC,CAAC;IACb,CAAC,MAAM;MACNG,MAAM,CAAC,CAAC;IACT;IACAL,OAAO,GAAIO,CAAE,CAAC;EACf,CAAC,EACD,CAAEJ,cAAc,EAAED,UAAU,EAAEG,MAAM,EAAEL,OAAO,CAC9C,CAAC;EAEF,OAAO;IACNC,EAAE;IACFD,OAAO,EAAEM,WAAW;IACpB,GAAGF;EACJ,CAAC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useContextSystem","Button","useNavigator","useNavigatorBackButton","props","onClick","as","otherProps","goBack","handleClick","e","preventDefault"],"sources":["@wordpress/components/src/navigator/navigator-back-button/hook.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { useContextSystem } from '../../context';\nimport Button from '../../button';\nimport useNavigator from '../use-navigator';\nimport type { NavigatorBackButtonProps } from '../types';\n\nexport function useNavigatorBackButton(\n\tprops: WordPressComponentProps< NavigatorBackButtonProps, 'button' >\n) {\n\tconst {\n\t\tonClick,\n\t\tas = Button,\n\n\t\t...otherProps\n\t} = useContextSystem( props, 'NavigatorBackButton' );\n\n\tconst { goBack } = useNavigator();\n\tconst handleClick: React.MouseEventHandler< HTMLButtonElement > =\n\t\tuseCallback(\n\t\t\t( e ) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tgoBack();\n\t\t\t\tonClick?.( e );\n\t\t\t},\n\t\t\t[ goBack, onClick ]\n\t\t);\n\n\treturn {\n\t\tas,\n\t\tonClick: handleClick,\n\t\t...otherProps,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,oBAAoB;;AAEhD;AACA;AACA;;AAEA,SAASC,gBAAgB,QAAQ,eAAe;AAChD,OAAOC,MAAM,MAAM,cAAc;AACjC,OAAOC,YAAY,MAAM,kBAAkB;AAG3C,OAAO,SAASC,sBAAsBA,CACrCC,KAAoE,EACnE;EACD,MAAM;IACLC,OAAO;IACPC,EAAE,GAAGL,MAAM;IAEX,GAAGM;EACJ,CAAC,GAAGP,gBAAgB,CAAEI,KAAK,EAAE,qBAAsB,CAAC;EAEpD,MAAM;IAAEI;EAAO,CAAC,GAAGN,YAAY,CAAC,CAAC;EACjC,MAAMO,WAAyD,GAC9DV,WAAW,CACRW,CAAC,IAAM;IACRA,CAAC,CAACC,cAAc,CAAC,CAAC;IAClBH,MAAM,CAAC,CAAC;IACRH,OAAO,GAAIK,CAAE,CAAC;EACf,CAAC,EACD,CAAEF,MAAM,EAAEH,OAAO,CAClB,CAAC;EAEF,OAAO;IACNC,EAAE;IACFD,OAAO,EAAEI,WAAW;IACpB,GAAGF;EACJ,CAAC;AACF","ignoreList":[]}
@@ -18,6 +18,7 @@ import { patternMatch, findParent } from '../utils/router';
18
18
  import { View } from '../../view';
19
19
  import { NavigatorContext } from '../context';
20
20
  import * as styles from '../styles';
21
+ import deprecated from '@wordpress/deprecated';
21
22
  import { jsx as _jsx } from "react/jsx-runtime";
22
23
  const MAX_HISTORY_LENGTH = 50;
23
24
  function addScreen({
@@ -115,9 +116,6 @@ function routerReducer(state, action) {
115
116
  case 'remove':
116
117
  screens = removeScreen(state, action.screen);
117
118
  break;
118
- case 'goback':
119
- locationHistory = goBack(state);
120
- break;
121
119
  case 'goto':
122
120
  locationHistory = goTo(state, action.path, action.options);
123
121
  break;
@@ -163,18 +161,28 @@ function UnconnectedNavigatorProvider(props, forwardedRef) {
163
161
 
164
162
  // The methods are constant forever, create stable references to them.
165
163
  const methods = useMemo(() => ({
166
- goBack: () => dispatch({
167
- type: 'goback'
164
+ // Note: calling goBack calls `goToParent` internally, as it was established
165
+ // that `goBack` should behave like `goToParent`, and `goToParent` should
166
+ // be marked as deprecated.
167
+ goBack: options => dispatch({
168
+ type: 'gotoparent',
169
+ options
168
170
  }),
169
171
  goTo: (path, options) => dispatch({
170
172
  type: 'goto',
171
173
  path,
172
174
  options
173
175
  }),
174
- goToParent: options => dispatch({
175
- type: 'gotoparent',
176
- options
177
- }),
176
+ goToParent: options => {
177
+ deprecated(`wp.components.useNavigator().goToParent`, {
178
+ since: '6.7',
179
+ alternative: 'wp.components.useNavigator().goBack'
180
+ });
181
+ dispatch({
182
+ type: 'gotoparent',
183
+ options
184
+ });
185
+ },
178
186
  addScreen: screen => dispatch({
179
187
  type: 'add',
180
188
  screen
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useReducer","isShallowEqual","contextConnect","useContextSystem","useCx","patternMatch","findParent","View","NavigatorContext","styles","jsx","_jsx","MAX_HISTORY_LENGTH","addScreen","screens","screen","removeScreen","filter","s","id","goBack","locationHistory","length","slice","isBack","hasRestoredFocus","goTo","state","path","options","focusTargetSelector","skipFocus","replace","restOptions","isNavigatingToSamePath","isNavigatingToPreviousPath","newLocation","newLocationHistory","push","goToParent","currentPath","undefined","parentPath","routerReducer","action","matchedPath","type","params","UnconnectedNavigatorProvider","props","forwardedRef","initialPath","children","className","otherProps","routerState","dispatch","methods","navigatorContextValue","_matchedPath$params","location","isInitial","match","cx","classes","navigatorProviderWrapper","ref","Provider","value","NavigatorProvider"],"sources":["@wordpress/components/src/navigator/navigator-provider/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useReducer } from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { patternMatch, findParent } from '../utils/router';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport * as styles from '../styles';\nimport type {\n\tNavigatorProviderProps,\n\tNavigatorLocation,\n\tNavigatorContext as NavigatorContextType,\n\tNavigateOptions,\n\tScreen,\n\tNavigateToParentOptions,\n} from '../types';\n\ntype MatchedPath = ReturnType< typeof patternMatch >;\n\ntype RouterAction =\n\t| { type: 'add' | 'remove'; screen: Screen }\n\t| { type: 'goback' }\n\t| { type: 'goto'; path: string; options?: NavigateOptions }\n\t| { type: 'gotoparent'; options?: NavigateToParentOptions };\n\ntype RouterState = {\n\tscreens: Screen[];\n\tlocationHistory: NavigatorLocation[];\n\tmatchedPath: MatchedPath;\n};\n\nconst MAX_HISTORY_LENGTH = 50;\n\nfunction addScreen( { screens }: RouterState, screen: Screen ) {\n\treturn [ ...screens, screen ];\n}\n\nfunction removeScreen( { screens }: RouterState, screen: Screen ) {\n\treturn screens.filter( ( s ) => s.id !== screen.id );\n}\n\nfunction goBack( { locationHistory }: RouterState ) {\n\tif ( locationHistory.length <= 1 ) {\n\t\treturn locationHistory;\n\t}\n\treturn [\n\t\t...locationHistory.slice( 0, -2 ),\n\t\t{\n\t\t\t...locationHistory[ locationHistory.length - 2 ],\n\t\t\tisBack: true,\n\t\t\thasRestoredFocus: false,\n\t\t},\n\t];\n}\n\nfunction goTo(\n\tstate: RouterState,\n\tpath: string,\n\toptions: NavigateOptions = {}\n) {\n\tconst { locationHistory } = state;\n\tconst {\n\t\tfocusTargetSelector,\n\t\tisBack = false,\n\t\tskipFocus = false,\n\t\treplace = false,\n\t\t...restOptions\n\t} = options;\n\n\tconst isNavigatingToSamePath =\n\t\tlocationHistory.length > 0 &&\n\t\tlocationHistory[ locationHistory.length - 1 ].path === path;\n\tif ( isNavigatingToSamePath ) {\n\t\treturn locationHistory;\n\t}\n\n\tconst isNavigatingToPreviousPath =\n\t\tisBack &&\n\t\tlocationHistory.length > 1 &&\n\t\tlocationHistory[ locationHistory.length - 2 ].path === path;\n\n\tif ( isNavigatingToPreviousPath ) {\n\t\treturn goBack( state );\n\t}\n\n\tconst newLocation = {\n\t\t...restOptions,\n\t\tpath,\n\t\tisBack,\n\t\thasRestoredFocus: false,\n\t\tskipFocus,\n\t};\n\n\tif ( locationHistory.length === 0 ) {\n\t\treturn replace ? [] : [ newLocation ];\n\t}\n\n\tconst newLocationHistory = locationHistory.slice(\n\t\tlocationHistory.length > MAX_HISTORY_LENGTH - 1 ? 1 : 0,\n\t\t-1\n\t);\n\n\tif ( ! replace ) {\n\t\tnewLocationHistory.push(\n\t\t\t// Assign `focusTargetSelector` to the previous location in history\n\t\t\t// (the one we just navigated from).\n\t\t\t{\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tfocusTargetSelector,\n\t\t\t}\n\t\t);\n\t}\n\n\tnewLocationHistory.push( newLocation );\n\n\treturn newLocationHistory;\n}\n\nfunction goToParent(\n\tstate: RouterState,\n\toptions: NavigateToParentOptions = {}\n) {\n\tconst { locationHistory, screens } = state;\n\tconst currentPath = locationHistory[ locationHistory.length - 1 ].path;\n\tif ( currentPath === undefined ) {\n\t\treturn locationHistory;\n\t}\n\tconst parentPath = findParent( currentPath, screens );\n\tif ( parentPath === undefined ) {\n\t\treturn locationHistory;\n\t}\n\treturn goTo( state, parentPath, {\n\t\t...options,\n\t\tisBack: true,\n\t} );\n}\n\nfunction routerReducer(\n\tstate: RouterState,\n\taction: RouterAction\n): RouterState {\n\tlet { screens, locationHistory, matchedPath } = state;\n\tswitch ( action.type ) {\n\t\tcase 'add':\n\t\t\tscreens = addScreen( state, action.screen );\n\t\t\tbreak;\n\t\tcase 'remove':\n\t\t\tscreens = removeScreen( state, action.screen );\n\t\t\tbreak;\n\t\tcase 'goback':\n\t\t\tlocationHistory = goBack( state );\n\t\t\tbreak;\n\t\tcase 'goto':\n\t\t\tlocationHistory = goTo( state, action.path, action.options );\n\t\t\tbreak;\n\t\tcase 'gotoparent':\n\t\t\tlocationHistory = goToParent( state, action.options );\n\t\t\tbreak;\n\t}\n\n\t// Return early in case there is no change\n\tif (\n\t\tscreens === state.screens &&\n\t\tlocationHistory === state.locationHistory\n\t) {\n\t\treturn state;\n\t}\n\n\t// Compute the matchedPath\n\tconst currentPath =\n\t\tlocationHistory.length > 0\n\t\t\t? locationHistory[ locationHistory.length - 1 ].path\n\t\t\t: undefined;\n\tmatchedPath =\n\t\tcurrentPath !== undefined\n\t\t\t? patternMatch( currentPath, screens )\n\t\t\t: undefined;\n\n\t// If the new match is the same as the previous match,\n\t// return the previous one to keep immutability.\n\tif (\n\t\tmatchedPath &&\n\t\tstate.matchedPath &&\n\t\tmatchedPath.id === state.matchedPath.id &&\n\t\tisShallowEqual( matchedPath.params, state.matchedPath.params )\n\t) {\n\t\tmatchedPath = state.matchedPath;\n\t}\n\n\treturn { screens, locationHistory, matchedPath };\n}\n\nfunction UnconnectedNavigatorProvider(\n\tprops: WordPressComponentProps< NavigatorProviderProps, 'div' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst { initialPath, children, className, ...otherProps } =\n\t\tuseContextSystem( props, 'NavigatorProvider' );\n\n\tconst [ routerState, dispatch ] = useReducer(\n\t\trouterReducer,\n\t\tinitialPath,\n\t\t( path ) => ( {\n\t\t\tscreens: [],\n\t\t\tlocationHistory: [ { path } ],\n\t\t\tmatchedPath: undefined,\n\t\t} )\n\t);\n\n\t// The methods are constant forever, create stable references to them.\n\tconst methods = useMemo(\n\t\t() => ( {\n\t\t\tgoBack: () => dispatch( { type: 'goback' } ),\n\t\t\tgoTo: ( path: string, options?: NavigateOptions ) =>\n\t\t\t\tdispatch( { type: 'goto', path, options } ),\n\t\t\tgoToParent: ( options: NavigateToParentOptions | undefined ) =>\n\t\t\t\tdispatch( { type: 'gotoparent', options } ),\n\t\t\taddScreen: ( screen: Screen ) =>\n\t\t\t\tdispatch( { type: 'add', screen } ),\n\t\t\tremoveScreen: ( screen: Screen ) =>\n\t\t\t\tdispatch( { type: 'remove', screen } ),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst { locationHistory, matchedPath } = routerState;\n\n\tconst navigatorContextValue: NavigatorContextType = useMemo(\n\t\t() => ( {\n\t\t\tlocation: {\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tisInitial: locationHistory.length === 1,\n\t\t\t},\n\t\t\tparams: matchedPath?.params ?? {},\n\t\t\tmatch: matchedPath?.id,\n\t\t\t...methods,\n\t\t} ),\n\t\t[ locationHistory, matchedPath, methods ]\n\t);\n\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() => cx( styles.navigatorProviderWrapper, className ),\n\t\t[ className, cx ]\n\t);\n\n\treturn (\n\t\t<View ref={ forwardedRef } className={ classes } { ...otherProps }>\n\t\t\t<NavigatorContext.Provider value={ navigatorContextValue }>\n\t\t\t\t{ children }\n\t\t\t</NavigatorContext.Provider>\n\t\t</View>\n\t);\n}\n\n/**\n * The `NavigatorProvider` component allows rendering nested views/panels/menus\n * (via the `NavigatorScreen` component and navigate between these different\n * view (via the `NavigatorButton` and `NavigatorBackButton` components or the\n * `useNavigator` hook).\n *\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorBackButton as NavigatorBackButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorBackButton>\n * Go back\n * </NavigatorBackButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorProvider = contextConnect(\n\tUnconnectedNavigatorProvider,\n\t'NavigatorProvider'\n);\n\nexport default NavigatorProvider;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","useReducer","isShallowEqual","contextConnect","useContextSystem","useCx","patternMatch","findParent","View","NavigatorContext","styles","deprecated","jsx","_jsx","MAX_HISTORY_LENGTH","addScreen","screens","screen","removeScreen","filter","s","id","goBack","locationHistory","length","slice","isBack","hasRestoredFocus","goTo","state","path","options","focusTargetSelector","skipFocus","replace","restOptions","isNavigatingToSamePath","isNavigatingToPreviousPath","newLocation","newLocationHistory","push","goToParent","currentPath","undefined","parentPath","routerReducer","action","matchedPath","type","params","UnconnectedNavigatorProvider","props","forwardedRef","initialPath","children","className","otherProps","routerState","dispatch","methods","since","alternative","navigatorContextValue","_matchedPath$params","location","isInitial","match","cx","classes","navigatorProviderWrapper","ref","Provider","value","NavigatorProvider"],"sources":["@wordpress/components/src/navigator/navigator-provider/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo, useReducer } from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect, useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { patternMatch, findParent } from '../utils/router';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport * as styles from '../styles';\nimport type {\n\tNavigatorProviderProps,\n\tNavigatorLocation,\n\tNavigatorContext as NavigatorContextType,\n\tNavigateOptions,\n\tScreen,\n\tNavigateToParentOptions,\n} from '../types';\nimport deprecated from '@wordpress/deprecated';\n\ntype MatchedPath = ReturnType< typeof patternMatch >;\n\ntype RouterAction =\n\t| { type: 'add' | 'remove'; screen: Screen }\n\t| { type: 'goto'; path: string; options?: NavigateOptions }\n\t| { type: 'gotoparent'; options?: NavigateToParentOptions };\n\ntype RouterState = {\n\tscreens: Screen[];\n\tlocationHistory: NavigatorLocation[];\n\tmatchedPath: MatchedPath;\n};\n\nconst MAX_HISTORY_LENGTH = 50;\n\nfunction addScreen( { screens }: RouterState, screen: Screen ) {\n\treturn [ ...screens, screen ];\n}\n\nfunction removeScreen( { screens }: RouterState, screen: Screen ) {\n\treturn screens.filter( ( s ) => s.id !== screen.id );\n}\n\nfunction goBack( { locationHistory }: RouterState ) {\n\tif ( locationHistory.length <= 1 ) {\n\t\treturn locationHistory;\n\t}\n\treturn [\n\t\t...locationHistory.slice( 0, -2 ),\n\t\t{\n\t\t\t...locationHistory[ locationHistory.length - 2 ],\n\t\t\tisBack: true,\n\t\t\thasRestoredFocus: false,\n\t\t},\n\t];\n}\n\nfunction goTo(\n\tstate: RouterState,\n\tpath: string,\n\toptions: NavigateOptions = {}\n) {\n\tconst { locationHistory } = state;\n\tconst {\n\t\tfocusTargetSelector,\n\t\tisBack = false,\n\t\tskipFocus = false,\n\t\treplace = false,\n\t\t...restOptions\n\t} = options;\n\n\tconst isNavigatingToSamePath =\n\t\tlocationHistory.length > 0 &&\n\t\tlocationHistory[ locationHistory.length - 1 ].path === path;\n\tif ( isNavigatingToSamePath ) {\n\t\treturn locationHistory;\n\t}\n\n\tconst isNavigatingToPreviousPath =\n\t\tisBack &&\n\t\tlocationHistory.length > 1 &&\n\t\tlocationHistory[ locationHistory.length - 2 ].path === path;\n\n\tif ( isNavigatingToPreviousPath ) {\n\t\treturn goBack( state );\n\t}\n\n\tconst newLocation = {\n\t\t...restOptions,\n\t\tpath,\n\t\tisBack,\n\t\thasRestoredFocus: false,\n\t\tskipFocus,\n\t};\n\n\tif ( locationHistory.length === 0 ) {\n\t\treturn replace ? [] : [ newLocation ];\n\t}\n\n\tconst newLocationHistory = locationHistory.slice(\n\t\tlocationHistory.length > MAX_HISTORY_LENGTH - 1 ? 1 : 0,\n\t\t-1\n\t);\n\n\tif ( ! replace ) {\n\t\tnewLocationHistory.push(\n\t\t\t// Assign `focusTargetSelector` to the previous location in history\n\t\t\t// (the one we just navigated from).\n\t\t\t{\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tfocusTargetSelector,\n\t\t\t}\n\t\t);\n\t}\n\n\tnewLocationHistory.push( newLocation );\n\n\treturn newLocationHistory;\n}\n\nfunction goToParent(\n\tstate: RouterState,\n\toptions: NavigateToParentOptions = {}\n) {\n\tconst { locationHistory, screens } = state;\n\tconst currentPath = locationHistory[ locationHistory.length - 1 ].path;\n\tif ( currentPath === undefined ) {\n\t\treturn locationHistory;\n\t}\n\tconst parentPath = findParent( currentPath, screens );\n\tif ( parentPath === undefined ) {\n\t\treturn locationHistory;\n\t}\n\treturn goTo( state, parentPath, {\n\t\t...options,\n\t\tisBack: true,\n\t} );\n}\n\nfunction routerReducer(\n\tstate: RouterState,\n\taction: RouterAction\n): RouterState {\n\tlet { screens, locationHistory, matchedPath } = state;\n\tswitch ( action.type ) {\n\t\tcase 'add':\n\t\t\tscreens = addScreen( state, action.screen );\n\t\t\tbreak;\n\t\tcase 'remove':\n\t\t\tscreens = removeScreen( state, action.screen );\n\t\t\tbreak;\n\t\tcase 'goto':\n\t\t\tlocationHistory = goTo( state, action.path, action.options );\n\t\t\tbreak;\n\t\tcase 'gotoparent':\n\t\t\tlocationHistory = goToParent( state, action.options );\n\t\t\tbreak;\n\t}\n\n\t// Return early in case there is no change\n\tif (\n\t\tscreens === state.screens &&\n\t\tlocationHistory === state.locationHistory\n\t) {\n\t\treturn state;\n\t}\n\n\t// Compute the matchedPath\n\tconst currentPath =\n\t\tlocationHistory.length > 0\n\t\t\t? locationHistory[ locationHistory.length - 1 ].path\n\t\t\t: undefined;\n\tmatchedPath =\n\t\tcurrentPath !== undefined\n\t\t\t? patternMatch( currentPath, screens )\n\t\t\t: undefined;\n\n\t// If the new match is the same as the previous match,\n\t// return the previous one to keep immutability.\n\tif (\n\t\tmatchedPath &&\n\t\tstate.matchedPath &&\n\t\tmatchedPath.id === state.matchedPath.id &&\n\t\tisShallowEqual( matchedPath.params, state.matchedPath.params )\n\t) {\n\t\tmatchedPath = state.matchedPath;\n\t}\n\n\treturn { screens, locationHistory, matchedPath };\n}\n\nfunction UnconnectedNavigatorProvider(\n\tprops: WordPressComponentProps< NavigatorProviderProps, 'div' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst { initialPath, children, className, ...otherProps } =\n\t\tuseContextSystem( props, 'NavigatorProvider' );\n\n\tconst [ routerState, dispatch ] = useReducer(\n\t\trouterReducer,\n\t\tinitialPath,\n\t\t( path ) => ( {\n\t\t\tscreens: [],\n\t\t\tlocationHistory: [ { path } ],\n\t\t\tmatchedPath: undefined,\n\t\t} )\n\t);\n\n\t// The methods are constant forever, create stable references to them.\n\tconst methods = useMemo(\n\t\t() => ( {\n\t\t\t// Note: calling goBack calls `goToParent` internally, as it was established\n\t\t\t// that `goBack` should behave like `goToParent`, and `goToParent` should\n\t\t\t// be marked as deprecated.\n\t\t\tgoBack: ( options: NavigateToParentOptions | undefined ) =>\n\t\t\t\tdispatch( { type: 'gotoparent', options } ),\n\t\t\tgoTo: ( path: string, options?: NavigateOptions ) =>\n\t\t\t\tdispatch( { type: 'goto', path, options } ),\n\t\t\tgoToParent: ( options: NavigateToParentOptions | undefined ) => {\n\t\t\t\tdeprecated( `wp.components.useNavigator().goToParent`, {\n\t\t\t\t\tsince: '6.7',\n\t\t\t\t\talternative: 'wp.components.useNavigator().goBack',\n\t\t\t\t} );\n\t\t\t\tdispatch( { type: 'gotoparent', options } );\n\t\t\t},\n\t\t\taddScreen: ( screen: Screen ) =>\n\t\t\t\tdispatch( { type: 'add', screen } ),\n\t\t\tremoveScreen: ( screen: Screen ) =>\n\t\t\t\tdispatch( { type: 'remove', screen } ),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst { locationHistory, matchedPath } = routerState;\n\n\tconst navigatorContextValue: NavigatorContextType = useMemo(\n\t\t() => ( {\n\t\t\tlocation: {\n\t\t\t\t...locationHistory[ locationHistory.length - 1 ],\n\t\t\t\tisInitial: locationHistory.length === 1,\n\t\t\t},\n\t\t\tparams: matchedPath?.params ?? {},\n\t\t\tmatch: matchedPath?.id,\n\t\t\t...methods,\n\t\t} ),\n\t\t[ locationHistory, matchedPath, methods ]\n\t);\n\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() => cx( styles.navigatorProviderWrapper, className ),\n\t\t[ className, cx ]\n\t);\n\n\treturn (\n\t\t<View ref={ forwardedRef } className={ classes } { ...otherProps }>\n\t\t\t<NavigatorContext.Provider value={ navigatorContextValue }>\n\t\t\t\t{ children }\n\t\t\t</NavigatorContext.Provider>\n\t\t</View>\n\t);\n}\n\n/**\n * The `NavigatorProvider` component allows rendering nested views/panels/menus\n * (via the `NavigatorScreen` component and navigate between these different\n * view (via the `NavigatorButton` and `NavigatorBackButton` components or the\n * `useNavigator` hook).\n *\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorBackButton as NavigatorBackButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorBackButton>\n * Go back\n * </NavigatorBackButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorProvider = contextConnect(\n\tUnconnectedNavigatorProvider,\n\t'NavigatorProvider'\n);\n\nexport default NavigatorProvider;\n"],"mappings":"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","ignoreList":[]}
@@ -1,59 +1,30 @@
1
1
  /**
2
- * External dependencies
2
+ * WordPress dependencies
3
3
  */
4
+ import deprecated from '@wordpress/deprecated';
4
5
 
5
6
  /**
6
7
  * Internal dependencies
7
8
  */
8
-
9
+ import { NavigatorBackButton } from '../navigator-back-button';
9
10
  import { contextConnect } from '../../context';
10
- import { View } from '../../view';
11
- import { useNavigatorBackButton } from '../navigator-back-button/hook';
12
11
  import { jsx as _jsx } from "react/jsx-runtime";
13
12
  function UnconnectedNavigatorToParentButton(props, forwardedRef) {
14
- const navigatorToParentButtonProps = useNavigatorBackButton({
15
- ...props,
16
- goToParent: true
13
+ deprecated('wp.components.NavigatorToParentButton', {
14
+ since: '6.7',
15
+ alternative: 'wp.components.NavigatorBackButton'
17
16
  });
18
- return /*#__PURE__*/_jsx(View, {
17
+ return /*#__PURE__*/_jsx(NavigatorBackButton, {
19
18
  ref: forwardedRef,
20
- ...navigatorToParentButtonProps
19
+ ...props
21
20
  });
22
21
  }
23
22
 
24
- /*
25
- * The `NavigatorToParentButton` component can be used to navigate to a screen and
26
- * should be used in combination with the `NavigatorProvider`, the
27
- * `NavigatorScreen` and the `NavigatorButton` components (or the `useNavigator`
28
- * hook).
29
- *
30
- * @example
31
- * ```jsx
32
- * import {
33
- * __experimentalNavigatorProvider as NavigatorProvider,
34
- * __experimentalNavigatorScreen as NavigatorScreen,
35
- * __experimentalNavigatorButton as NavigatorButton,
36
- * __experimentalNavigatorToParentButton as NavigatorToParentButton,
37
- * } from '@wordpress/components';
38
- *
39
- * const MyNavigation = () => (
40
- * <NavigatorProvider initialPath="/">
41
- * <NavigatorScreen path="/">
42
- * <p>This is the home screen.</p>
43
- * <NavigatorButton path="/child">
44
- * Navigate to child screen.
45
- * </NavigatorButton>
46
- * </NavigatorScreen>
23
+ /**
24
+ * _Note: this component is deprecated. Please use the `NavigatorBackButton`
25
+ * component instead._
47
26
  *
48
- * <NavigatorScreen path="/child">
49
- * <p>This is the child screen.</p>
50
- * <NavigatorToParentButton>
51
- * Go to parent
52
- * </NavigatorToParentButton>
53
- * </NavigatorScreen>
54
- * </NavigatorProvider>
55
- * );
56
- * ```
27
+ * @deprecated
57
28
  */
58
29
  export const NavigatorToParentButton = contextConnect(UnconnectedNavigatorToParentButton, 'NavigatorToParentButton');
59
30
  export default NavigatorToParentButton;
@@ -1 +1 @@
1
- {"version":3,"names":["contextConnect","View","useNavigatorBackButton","jsx","_jsx","UnconnectedNavigatorToParentButton","props","forwardedRef","navigatorToParentButtonProps","goToParent","ref","NavigatorToParentButton"],"sources":["@wordpress/components/src/navigator/navigator-to-parent-button/component.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect } from '../../context';\nimport { View } from '../../view';\nimport { useNavigatorBackButton } from '../navigator-back-button/hook';\nimport type { NavigatorToParentButtonProps } from '../types';\n\nfunction UnconnectedNavigatorToParentButton(\n\tprops: WordPressComponentProps< NavigatorToParentButtonProps, 'button' >,\n\tforwardedRef: ForwardedRef< any >\n) {\n\tconst navigatorToParentButtonProps = useNavigatorBackButton( {\n\t\t...props,\n\t\tgoToParent: true,\n\t} );\n\n\treturn <View ref={ forwardedRef } { ...navigatorToParentButtonProps } />;\n}\n\n/*\n * The `NavigatorToParentButton` component can be used to navigate to a screen and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorScreen` and the `NavigatorButton` components (or the `useNavigator`\n * hook).\n *\n * @example\n * ```jsx\n * import {\n * __experimentalNavigatorProvider as NavigatorProvider,\n * __experimentalNavigatorScreen as NavigatorScreen,\n * __experimentalNavigatorButton as NavigatorButton,\n * __experimentalNavigatorToParentButton as NavigatorToParentButton,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <NavigatorProvider initialPath=\"/\">\n * <NavigatorScreen path=\"/\">\n * <p>This is the home screen.</p>\n * <NavigatorButton path=\"/child\">\n * Navigate to child screen.\n * </NavigatorButton>\n * </NavigatorScreen>\n *\n * <NavigatorScreen path=\"/child\">\n * <p>This is the child screen.</p>\n * <NavigatorToParentButton>\n * Go to parent\n * </NavigatorToParentButton>\n * </NavigatorScreen>\n * </NavigatorProvider>\n * );\n * ```\n */\nexport const NavigatorToParentButton = contextConnect(\n\tUnconnectedNavigatorToParentButton,\n\t'NavigatorToParentButton'\n);\n\nexport default NavigatorToParentButton;\n"],"mappings":"AAAA;AACA;AACA;;AAGA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,eAAe;AAC9C,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,sBAAsB,QAAQ,+BAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGvE,SAASC,kCAAkCA,CAC1CC,KAAwE,EACxEC,YAAiC,EAChC;EACD,MAAMC,4BAA4B,GAAGN,sBAAsB,CAAE;IAC5D,GAAGI,KAAK;IACRG,UAAU,EAAE;EACb,CAAE,CAAC;EAEH,oBAAOL,IAAA,CAACH,IAAI;IAACS,GAAG,EAAGH,YAAc;IAAA,GAAMC;EAA4B,CAAI,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,uBAAuB,GAAGX,cAAc,CACpDK,kCAAkC,EAClC,yBACD,CAAC;AAED,eAAeM,uBAAuB","ignoreList":[]}
1
+ {"version":3,"names":["deprecated","NavigatorBackButton","contextConnect","jsx","_jsx","UnconnectedNavigatorToParentButton","props","forwardedRef","since","alternative","ref","NavigatorToParentButton"],"sources":["@wordpress/components/src/navigator/navigator-to-parent-button/component.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { NavigatorBackButton } from '../navigator-back-button';\nimport type { WordPressComponentProps } from '../../context';\nimport { contextConnect } from '../../context';\nimport type { NavigatorBackButtonProps } from '../types';\n\nfunction UnconnectedNavigatorToParentButton(\n\tprops: WordPressComponentProps< NavigatorBackButtonProps, 'button' >,\n\tforwardedRef: React.ForwardedRef< any >\n) {\n\tdeprecated( 'wp.components.NavigatorToParentButton', {\n\t\tsince: '6.7',\n\t\talternative: 'wp.components.NavigatorBackButton',\n\t} );\n\n\treturn <NavigatorBackButton ref={ forwardedRef } { ...props } />;\n}\n\n/**\n * _Note: this component is deprecated. Please use the `NavigatorBackButton`\n * component instead._\n *\n * @deprecated\n */\nexport const NavigatorToParentButton = contextConnect(\n\tUnconnectedNavigatorToParentButton,\n\t'NavigatorToParentButton'\n);\n\nexport default NavigatorToParentButton;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,uBAAuB;;AAE9C;AACA;AACA;AACA,SAASC,mBAAmB,QAAQ,0BAA0B;AAE9D,SAASC,cAAc,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG/C,SAASC,kCAAkCA,CAC1CC,KAAoE,EACpEC,YAAuC,EACtC;EACDP,UAAU,CAAE,uCAAuC,EAAE;IACpDQ,KAAK,EAAE,KAAK;IACZC,WAAW,EAAE;EACd,CAAE,CAAC;EAEH,oBAAOL,IAAA,CAACH,mBAAmB;IAACS,GAAG,EAAGH,YAAc;IAAA,GAAMD;EAAK,CAAI,CAAC;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,uBAAuB,GAAGT,cAAc,CACpDG,kCAAkC,EAClC,yBACD,CAAC;AAED,eAAeM,uBAAuB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["@wordpress/components/src/navigator/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { ButtonAsButtonProps } from '../button/types';\n\nexport type MatchParams = Record< string, string | string[] >;\n\nexport type NavigateOptions = {\n\tfocusTargetSelector?: string;\n\tisBack?: boolean;\n\tskipFocus?: boolean;\n\treplace?: boolean;\n};\n\nexport type NavigateToParentOptions = Omit< NavigateOptions, 'isBack' >;\n\nexport type NavigatorLocation = NavigateOptions & {\n\tisInitial?: boolean;\n\tpath?: string;\n\thasRestoredFocus?: boolean;\n};\n\n// Returned by the `useNavigator` hook.\nexport type Navigator = {\n\tlocation: NavigatorLocation;\n\tparams: MatchParams;\n\tgoTo: ( path: string, options?: NavigateOptions ) => void;\n\tgoBack: () => void;\n\tgoToParent: ( options?: NavigateToParentOptions ) => void;\n};\n\nexport type NavigatorContext = Navigator & {\n\taddScreen: ( screen: Screen ) => void;\n\tremoveScreen: ( screen: Screen ) => void;\n\tmatch?: string;\n};\n\nexport type NavigatorProviderProps = {\n\t/**\n\t * The initial active path.\n\t */\n\tinitialPath: string;\n\t/**\n\t * The children elements.\n\t */\n\tchildren: ReactNode;\n};\n\nexport type NavigatorScreenProps = {\n\t/**\n\t * The screen's path, matched against the current path stored in the navigator.\n\t */\n\tpath: string;\n\t/**\n\t * The children elements.\n\t */\n\tchildren: ReactNode;\n};\n\nexport type NavigatorBackButtonProps = ButtonAsButtonProps;\n\nexport type NavigatorBackButtonHookProps = NavigatorBackButtonProps & {\n\t/**\n\t * Whether we should navigate to the parent screen.\n\t *\n\t * @default 'false'\n\t */\n\tgoToParent?: boolean;\n};\n\nexport type NavigatorToParentButtonProps = NavigatorBackButtonProps;\n\nexport type NavigatorButtonProps = NavigatorBackButtonProps & {\n\t/**\n\t * The path of the screen to navigate to. The value of this prop needs to be\n\t * a valid value for an HTML attribute.\n\t */\n\tpath: string;\n\t/**\n\t * The HTML attribute used to identify the `NavigatorButton`, which is used\n\t * by `Navigator` to restore focus.\n\t *\n\t * @default 'id'\n\t */\n\tattributeName?: string;\n};\n\nexport type Screen = {\n\tid: string;\n\tpath: string;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["@wordpress/components/src/navigator/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { ButtonAsButtonProps } from '../button/types';\n\nexport type MatchParams = Record< string, string | string[] >;\n\nexport type NavigateOptions = {\n\t/**\n\t * Specify the CSS selector used to restore focus on an given element when\n\t * navigating back. When not provided, the component will attempt to restore\n\t * focus on the element that originated the forward navigation.\n\t */\n\tfocusTargetSelector?: string;\n\t/**\n\t * Whether the navigation is a backwards navigation. This enables focus\n\t * restoration (when possible), and causes the animation to be backwards.\n\t */\n\tisBack?: boolean;\n\t/**\n\t * Opt out of focus management. Useful when the consumer of the component\n\t * wants to manage focus themselves.\n\t */\n\tskipFocus?: boolean;\n\t/**\n\t * Whether the navigation should replace the current location in the stack.\n\t */\n\treplace?: boolean;\n};\n\nexport type NavigateToParentOptions = Omit< NavigateOptions, 'isBack' >;\n\nexport type NavigatorLocation = NavigateOptions & {\n\t/**\n\t * Whether the current location is the initial one (ie. first in the stack).\n\t */\n\tisInitial?: boolean;\n\t/**\n\t * The path associated to the location.\n\t */\n\tpath?: string;\n\t/**\n\t * Whether focus was already restored for this location (in case of\n\t * backwards navigation).\n\t */\n\thasRestoredFocus?: boolean;\n};\n\n// Returned by the `useNavigator` hook.\nexport type Navigator = {\n\t/**\n\t * The current location.\n\t */\n\tlocation: NavigatorLocation;\n\t/**\n\t * Params associated with the current location\n\t */\n\tparams: MatchParams;\n\t/**\n\t * Navigate to a new location.\n\t */\n\tgoTo: ( path: string, options?: NavigateOptions ) => void;\n\t/**\n\t * Go back to the parent location (ie. \"/some/path\" will navigate back\n\t * to \"/some\")\n\t */\n\tgoBack: ( options?: NavigateToParentOptions ) => void;\n\t/**\n\t * _Note: This function is deprecated. Please use `goBack` instead._\n\t * @deprecated\n\t * @ignore\n\t */\n\tgoToParent: ( options?: NavigateToParentOptions ) => void;\n};\n\nexport type NavigatorContext = Navigator & {\n\taddScreen: ( screen: Screen ) => void;\n\tremoveScreen: ( screen: Screen ) => void;\n\tmatch?: string;\n};\n\nexport type NavigatorProviderProps = {\n\t/**\n\t * The initial active path.\n\t */\n\tinitialPath: string;\n\t/**\n\t * The children elements.\n\t */\n\tchildren: ReactNode;\n};\n\nexport type NavigatorScreenProps = {\n\t/**\n\t * The screen's path, matched against the current path stored in the navigator.\n\t */\n\tpath: string;\n\t/**\n\t * The children elements.\n\t */\n\tchildren: ReactNode;\n};\n\nexport type NavigatorBackButtonProps = ButtonAsButtonProps;\n\nexport type NavigatorToParentButtonProps = NavigatorBackButtonProps;\n\nexport type NavigatorButtonProps = NavigatorBackButtonProps & {\n\t/**\n\t * The path of the screen to navigate to. The value of this prop needs to be\n\t * a valid value for an HTML attribute.\n\t */\n\tpath: string;\n\t/**\n\t * The HTML attribute used to identify the `NavigatorButton`, which is used\n\t * by `Navigator` to restore focus.\n\t *\n\t * @default 'id'\n\t */\n\tattributeName?: string;\n};\n\nexport type Screen = {\n\tid: string;\n\tpath: string;\n};\n"],"mappings":"","ignoreList":[]}