@wordpress/components 21.1.0 → 21.2.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 (309) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/build/border-box-control/utils.js +42 -2
  3. package/build/border-box-control/utils.js.map +1 -1
  4. package/build/combobox-control/index.js +0 -1
  5. package/build/combobox-control/index.js.map +1 -1
  6. package/build/custom-select-control/index.js +4 -2
  7. package/build/custom-select-control/index.js.map +1 -1
  8. package/build/draggable/index.js +3 -6
  9. package/build/draggable/index.js.map +1 -1
  10. package/build/font-size-picker/index.js +46 -55
  11. package/build/font-size-picker/index.js.map +1 -1
  12. package/build/font-size-picker/styles.js +73 -0
  13. package/build/font-size-picker/styles.js.map +1 -0
  14. package/build/font-size-picker/types.js +6 -0
  15. package/build/font-size-picker/types.js.map +1 -0
  16. package/build/font-size-picker/utils.js +17 -15
  17. package/build/font-size-picker/utils.js.map +1 -1
  18. package/build/form-token-field/token-input.js +20 -1
  19. package/build/form-token-field/token-input.js.map +1 -1
  20. package/build/index.js +12 -0
  21. package/build/index.js.map +1 -1
  22. package/build/menu-item/index.js +4 -3
  23. package/build/menu-item/index.js.map +1 -1
  24. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +10 -3
  25. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js.map +1 -1
  26. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +12 -3
  27. package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  28. package/build/mobile/bottom-sheet/sub-sheet/index.native.js +4 -1
  29. package/build/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  30. package/build/mobile/color-settings/index.native.js +3 -1
  31. package/build/mobile/color-settings/index.native.js.map +1 -1
  32. package/build/mobile/color-settings/picker-screen.native.js +3 -1
  33. package/build/mobile/color-settings/picker-screen.native.js.map +1 -1
  34. package/build/mobile/image/index.native.js +3 -1
  35. package/build/mobile/image/index.native.js.map +1 -1
  36. package/build/mobile/keyboard-avoiding-view/index.ios.js +3 -1
  37. package/build/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  38. package/build/mobile/link-picker/index.native.js +3 -1
  39. package/build/mobile/link-picker/index.native.js.map +1 -1
  40. package/build/mobile/link-picker/link-picker-results.native.js +3 -1
  41. package/build/mobile/link-picker/link-picker-results.native.js.map +1 -1
  42. package/build/mobile/link-picker/link-picker-screen.native.js +3 -1
  43. package/build/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  44. package/build/mobile/link-settings/index.native.js +24 -6
  45. package/build/mobile/link-settings/index.native.js.map +1 -1
  46. package/build/mobile/link-settings/link-settings-screen.native.js +3 -1
  47. package/build/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  48. package/build/mobile/segmented-control/index.native.js +6 -2
  49. package/build/mobile/segmented-control/index.native.js.map +1 -1
  50. package/build/mobile/utils/use-unit-converter-to-mobile.native.js +6 -2
  51. package/build/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  52. package/build/navigator/navigator-screen/component.js +8 -1
  53. package/build/navigator/navigator-screen/component.js.map +1 -1
  54. package/build/notice/index.native.js +15 -19
  55. package/build/notice/index.native.js.map +1 -1
  56. package/build/notice/list.native.js +2 -3
  57. package/build/notice/list.native.js.map +1 -1
  58. package/build/palette-edit/index.js +1 -1
  59. package/build/palette-edit/index.js.map +1 -1
  60. package/build/popover/index.js +29 -32
  61. package/build/popover/index.js.map +1 -1
  62. package/build/popover/limit-shift.js +145 -0
  63. package/build/popover/limit-shift.js.map +1 -0
  64. package/build/popover/utils.js +55 -15
  65. package/build/popover/utils.js.map +1 -1
  66. package/build/resizable-box/resize-tooltip/utils.js +12 -14
  67. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  68. package/build/sandbox/index.js +13 -8
  69. package/build/sandbox/index.js.map +1 -1
  70. package/build/sandbox/index.native.js +3 -1
  71. package/build/sandbox/index.native.js.map +1 -1
  72. package/build/search-control/index.native.js +6 -2
  73. package/build/search-control/index.native.js.map +1 -1
  74. package/build/slot-fill/bubbles-virtually/slot-fill-context.js +8 -2
  75. package/build/slot-fill/bubbles-virtually/slot-fill-context.js.map +1 -1
  76. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +31 -41
  77. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  78. package/build/slot-fill/bubbles-virtually/use-slot-fills.js +39 -0
  79. package/build/slot-fill/bubbles-virtually/use-slot-fills.js.map +1 -0
  80. package/build/slot-fill/bubbles-virtually/use-slot.js +13 -4
  81. package/build/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  82. package/build/slot-fill/index.js +8 -0
  83. package/build/slot-fill/index.js.map +1 -1
  84. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +8 -8
  85. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  86. package/build/tools-panel/styles.js +27 -12
  87. package/build/tools-panel/styles.js.map +1 -1
  88. package/build/tools-panel/tools-panel-header/component.js +19 -6
  89. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  90. package/build/tools-panel/tools-panel-header/hook.js +4 -0
  91. package/build/tools-panel/tools-panel-header/hook.js.map +1 -1
  92. package/build-module/border-box-control/utils.js +36 -1
  93. package/build-module/border-box-control/utils.js.map +1 -1
  94. package/build-module/combobox-control/index.js +0 -1
  95. package/build-module/combobox-control/index.js.map +1 -1
  96. package/build-module/custom-select-control/index.js +2 -1
  97. package/build-module/custom-select-control/index.js.map +1 -1
  98. package/build-module/draggable/index.js +2 -5
  99. package/build-module/draggable/index.js.map +1 -1
  100. package/build-module/font-size-picker/index.js +45 -53
  101. package/build-module/font-size-picker/index.js.map +1 -1
  102. package/build-module/font-size-picker/styles.js +62 -0
  103. package/build-module/font-size-picker/styles.js.map +1 -0
  104. package/build-module/font-size-picker/types.js +2 -0
  105. package/build-module/font-size-picker/types.js.map +1 -0
  106. package/build-module/font-size-picker/utils.js +21 -15
  107. package/build-module/font-size-picker/utils.js.map +1 -1
  108. package/build-module/form-token-field/token-input.js +21 -2
  109. package/build-module/form-token-field/token-input.js.map +1 -1
  110. package/build-module/index.js +2 -2
  111. package/build-module/index.js.map +1 -1
  112. package/build-module/menu-item/index.js +4 -3
  113. package/build-module/menu-item/index.js.map +1 -1
  114. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +10 -3
  115. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js.map +1 -1
  116. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +12 -3
  117. package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
  118. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js +4 -1
  119. package/build-module/mobile/bottom-sheet/sub-sheet/index.native.js.map +1 -1
  120. package/build-module/mobile/color-settings/index.native.js +3 -1
  121. package/build-module/mobile/color-settings/index.native.js.map +1 -1
  122. package/build-module/mobile/color-settings/picker-screen.native.js +3 -1
  123. package/build-module/mobile/color-settings/picker-screen.native.js.map +1 -1
  124. package/build-module/mobile/image/index.native.js +3 -1
  125. package/build-module/mobile/image/index.native.js.map +1 -1
  126. package/build-module/mobile/keyboard-avoiding-view/index.ios.js +3 -1
  127. package/build-module/mobile/keyboard-avoiding-view/index.ios.js.map +1 -1
  128. package/build-module/mobile/link-picker/index.native.js +3 -1
  129. package/build-module/mobile/link-picker/index.native.js.map +1 -1
  130. package/build-module/mobile/link-picker/link-picker-results.native.js +3 -1
  131. package/build-module/mobile/link-picker/link-picker-results.native.js.map +1 -1
  132. package/build-module/mobile/link-picker/link-picker-screen.native.js +3 -1
  133. package/build-module/mobile/link-picker/link-picker-screen.native.js.map +1 -1
  134. package/build-module/mobile/link-settings/index.native.js +24 -6
  135. package/build-module/mobile/link-settings/index.native.js.map +1 -1
  136. package/build-module/mobile/link-settings/link-settings-screen.native.js +3 -1
  137. package/build-module/mobile/link-settings/link-settings-screen.native.js.map +1 -1
  138. package/build-module/mobile/segmented-control/index.native.js +6 -2
  139. package/build-module/mobile/segmented-control/index.native.js.map +1 -1
  140. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js +6 -2
  141. package/build-module/mobile/utils/use-unit-converter-to-mobile.native.js.map +1 -1
  142. package/build-module/navigator/navigator-screen/component.js +8 -1
  143. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  144. package/build-module/notice/index.native.js +16 -21
  145. package/build-module/notice/index.native.js.map +1 -1
  146. package/build-module/notice/list.native.js +3 -3
  147. package/build-module/notice/list.native.js.map +1 -1
  148. package/build-module/palette-edit/index.js +1 -1
  149. package/build-module/palette-edit/index.js.map +1 -1
  150. package/build-module/popover/index.js +31 -35
  151. package/build-module/popover/index.js.map +1 -1
  152. package/build-module/popover/limit-shift.js +136 -0
  153. package/build-module/popover/limit-shift.js.map +1 -0
  154. package/build-module/popover/utils.js +55 -15
  155. package/build-module/popover/utils.js.map +1 -1
  156. package/build-module/resizable-box/resize-tooltip/utils.js +13 -15
  157. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  158. package/build-module/sandbox/index.js +13 -8
  159. package/build-module/sandbox/index.js.map +1 -1
  160. package/build-module/sandbox/index.native.js +3 -1
  161. package/build-module/sandbox/index.native.js.map +1 -1
  162. package/build-module/search-control/index.native.js +6 -2
  163. package/build-module/search-control/index.native.js.map +1 -1
  164. package/build-module/slot-fill/bubbles-virtually/slot-fill-context.js +7 -2
  165. package/build-module/slot-fill/bubbles-virtually/slot-fill-context.js.map +1 -1
  166. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +30 -42
  167. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  168. package/build-module/slot-fill/bubbles-virtually/use-slot-fills.js +27 -0
  169. package/build-module/slot-fill/bubbles-virtually/use-slot-fills.js.map +1 -0
  170. package/build-module/slot-fill/bubbles-virtually/use-slot.js +13 -5
  171. package/build-module/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  172. package/build-module/slot-fill/index.js +1 -0
  173. package/build-module/slot-fill/index.js.map +1 -1
  174. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +7 -7
  175. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  176. package/build-module/tools-panel/styles.js +23 -12
  177. package/build-module/tools-panel/styles.js.map +1 -1
  178. package/build-module/tools-panel/tools-panel-header/component.js +19 -7
  179. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  180. package/build-module/tools-panel/tools-panel-header/hook.js +4 -0
  181. package/build-module/tools-panel/tools-panel-header/hook.js.map +1 -1
  182. package/build-style/style-rtl.css +14 -100
  183. package/build-style/style.css +14 -100
  184. package/build-types/border-box-control/utils.d.ts +1 -3
  185. package/build-types/border-box-control/utils.d.ts.map +1 -1
  186. package/build-types/custom-select-control/index.d.ts +13 -0
  187. package/build-types/custom-select-control/index.d.ts.map +1 -0
  188. package/build-types/custom-select-control/styles.d.ts +9 -0
  189. package/build-types/custom-select-control/styles.d.ts.map +1 -0
  190. package/build-types/draggable/index.d.ts.map +1 -1
  191. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  192. package/build-types/focal-point-picker/styles/focal-point-style.d.ts +3 -3
  193. package/build-types/font-size-picker/index.d.ts +5 -0
  194. package/build-types/font-size-picker/index.d.ts.map +1 -0
  195. package/build-types/font-size-picker/stories/e2e/index.d.ts +16 -0
  196. package/build-types/font-size-picker/stories/e2e/index.d.ts.map +1 -0
  197. package/build-types/font-size-picker/stories/index.d.ts +31 -0
  198. package/build-types/font-size-picker/stories/index.d.ts.map +1 -0
  199. package/build-types/font-size-picker/styles.d.ts +27 -0
  200. package/build-types/font-size-picker/styles.d.ts.map +1 -0
  201. package/build-types/font-size-picker/test/index.d.ts +2 -0
  202. package/build-types/font-size-picker/test/index.d.ts.map +1 -0
  203. package/build-types/font-size-picker/test/utils.d.ts +2 -0
  204. package/build-types/font-size-picker/test/utils.d.ts.map +1 -0
  205. package/build-types/font-size-picker/types.d.ts +93 -0
  206. package/build-types/font-size-picker/types.d.ts.map +1 -0
  207. package/build-types/font-size-picker/utils.d.ts +41 -0
  208. package/build-types/font-size-picker/utils.d.ts.map +1 -0
  209. package/build-types/form-token-field/token-input.d.ts.map +1 -1
  210. package/build-types/menu-item/index.d.ts.map +1 -1
  211. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  212. package/build-types/popover/index.d.ts.map +1 -1
  213. package/build-types/popover/limit-shift.d.ts +87 -0
  214. package/build-types/popover/limit-shift.d.ts.map +1 -0
  215. package/build-types/popover/test/index.d.ts +2 -0
  216. package/build-types/popover/test/index.d.ts.map +1 -0
  217. package/build-types/popover/types.d.ts +1 -1
  218. package/build-types/popover/types.d.ts.map +1 -1
  219. package/build-types/popover/utils.d.ts.map +1 -1
  220. package/build-types/range-control/types.d.ts +0 -32
  221. package/build-types/range-control/types.d.ts.map +1 -1
  222. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts +2 -2
  223. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts.map +1 -1
  224. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts.map +1 -1
  225. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts +2 -0
  226. package/build-types/slot-fill/bubbles-virtually/use-slot-fills.d.ts.map +1 -0
  227. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts.map +1 -1
  228. package/build-types/slot-fill/index.d.ts +1 -0
  229. package/build-types/slot-fill/index.d.ts.map +1 -1
  230. package/build-types/spinner/index.d.ts +1 -1
  231. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +1 -1
  232. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  233. package/build-types/tools-panel/styles.d.ts +6 -0
  234. package/build-types/tools-panel/styles.d.ts.map +1 -1
  235. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  236. package/build-types/tools-panel/tools-panel-header/hook.d.ts +1 -0
  237. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  238. package/build-types/tools-panel/types.d.ts +1 -0
  239. package/build-types/tools-panel/types.d.ts.map +1 -1
  240. package/package.json +19 -18
  241. package/src/alignment-matrix-control/test/index.js +17 -62
  242. package/src/border-box-control/test/utils.js +48 -0
  243. package/src/border-box-control/utils.ts +44 -1
  244. package/src/combobox-control/index.js +0 -5
  245. package/src/custom-select-control/index.js +2 -1
  246. package/src/draggable/index.js +2 -5
  247. package/src/font-size-picker/{index.js → index.tsx} +113 -79
  248. package/src/font-size-picker/stories/e2e/{index.js → index.tsx} +13 -4
  249. package/src/font-size-picker/stories/{index.js → index.tsx} +42 -36
  250. package/src/font-size-picker/styles.ts +44 -0
  251. package/src/font-size-picker/test/{index.js → index.tsx} +1 -1
  252. package/src/font-size-picker/test/{utils.js → utils.ts} +6 -2
  253. package/src/font-size-picker/types.ts +98 -0
  254. package/src/font-size-picker/{utils.js → utils.ts} +51 -27
  255. package/src/form-token-field/test/index.tsx +22 -1
  256. package/src/form-token-field/token-input.tsx +25 -3
  257. package/src/index.js +2 -1
  258. package/src/menu-item/README.md +7 -0
  259. package/src/menu-item/index.js +11 -5
  260. package/src/menu-item/style.scss +1 -0
  261. package/src/menu-item/test/index.js +36 -0
  262. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-container.native.js +9 -0
  263. package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +11 -0
  264. package/src/mobile/bottom-sheet/sub-sheet/index.native.js +3 -0
  265. package/src/mobile/color-settings/index.native.js +3 -0
  266. package/src/mobile/color-settings/picker-screen.native.js +3 -0
  267. package/src/mobile/image/index.native.js +3 -0
  268. package/src/mobile/keyboard-avoiding-view/index.ios.js +3 -0
  269. package/src/mobile/link-picker/index.native.js +3 -0
  270. package/src/mobile/link-picker/link-picker-results.native.js +3 -0
  271. package/src/mobile/link-picker/link-picker-screen.native.js +3 -0
  272. package/src/mobile/link-settings/index.native.js +18 -0
  273. package/src/mobile/link-settings/link-settings-screen.native.js +3 -0
  274. package/src/mobile/segmented-control/index.native.js +6 -0
  275. package/src/mobile/utils/use-unit-converter-to-mobile.native.js +6 -0
  276. package/src/navigator/navigator-screen/component.tsx +8 -1
  277. package/src/navigator/test/index.js +119 -54
  278. package/src/notice/index.native.js +17 -20
  279. package/src/notice/list.native.js +7 -3
  280. package/src/palette-edit/index.js +1 -1
  281. package/src/placeholder/style.scss +3 -3
  282. package/src/popover/index.tsx +26 -42
  283. package/src/popover/limit-shift.ts +205 -0
  284. package/src/popover/test/index.tsx +230 -0
  285. package/src/popover/types.ts +1 -0
  286. package/src/popover/utils.ts +58 -16
  287. package/src/range-control/types.ts +0 -33
  288. package/src/resizable-box/resize-tooltip/utils.ts +13 -13
  289. package/src/sandbox/index.js +13 -7
  290. package/src/sandbox/index.native.js +3 -0
  291. package/src/search-control/index.native.js +6 -0
  292. package/src/slot-fill/bubbles-virtually/slot-fill-context.js +6 -2
  293. package/src/slot-fill/bubbles-virtually/slot-fill-provider.js +51 -58
  294. package/src/slot-fill/bubbles-virtually/use-slot-fills.js +24 -0
  295. package/src/slot-fill/bubbles-virtually/use-slot.js +11 -6
  296. package/src/slot-fill/index.js +1 -0
  297. package/src/style.scss +0 -1
  298. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +1 -0
  299. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +9 -7
  300. package/src/tools-panel/stories/index.js +27 -0
  301. package/src/tools-panel/styles.ts +28 -1
  302. package/src/tools-panel/tools-panel-header/component.tsx +12 -5
  303. package/src/tools-panel/tools-panel-header/hook.ts +5 -0
  304. package/src/tools-panel/types.ts +1 -0
  305. package/tsconfig.json +0 -2
  306. package/tsconfig.tsbuildinfo +1 -1
  307. package/src/font-size-picker/style.scss +0 -78
  308. package/src/popover/test/__snapshots__/index.js.snap +0 -34
  309. package/src/popover/test/index.js +0 -164
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/link-picker/index.native.js"],"names":["createDirectEntry","value","type","protocol","toLowerCase","includes","startsWith","isDirectEntry","title","url","getURLFromClipboard","text","Clipboard","getString","LinkPicker","initialValue","onLinkPicked","onCancel","cancel","clipboardUrl","setValue","directEntry","pickLink","onSubmit","clear","omniCellStyle","styles","omniCell","omniCellDark","iconStyle","icon","iconDark","then","catch","safeArea","contentContainer","link","omniInput","newValue","clearIcon","cancelCircleFilled","color"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { SafeAreaView, TouchableOpacity, View } from 'react-native';\nimport Clipboard from '@react-native-clipboard/clipboard';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { BottomSheet, Icon } from '@wordpress/components';\nimport { getProtocol, isURL, prependHTTP } from '@wordpress/url';\nimport { link, cancelCircleFilled } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport LinkPickerResults from './link-picker-results';\nimport NavBar from '../bottom-sheet/nav-bar';\nimport styles from './styles.scss';\n\n// This creates a search suggestion for adding a url directly.\nexport const createDirectEntry = ( value ) => {\n\tlet type = 'URL';\n\n\tconst protocol = getProtocol( value )?.toLowerCase() || '';\n\n\tif ( protocol.includes( 'mailto' ) ) {\n\t\ttype = 'mailto';\n\t}\n\n\tif ( protocol.includes( 'tel' ) ) {\n\t\ttype = 'tel';\n\t}\n\n\tif ( value?.startsWith( '#' ) ) {\n\t\ttype = 'internal';\n\t}\n\n\treturn {\n\t\tisDirectEntry: true,\n\t\ttitle: value,\n\t\turl: type === 'URL' ? prependHTTP( value ) : value,\n\t\ttype,\n\t};\n};\n\nconst getURLFromClipboard = async () => {\n\tconst text = await Clipboard.getString();\n\treturn !! text && isURL( text ) ? text : '';\n};\n\nexport const LinkPicker = ( {\n\tvalue: initialValue,\n\tonLinkPicked,\n\tonCancel: cancel,\n} ) => {\n\tconst [ { value, clipboardUrl }, setValue ] = useState( {\n\t\tvalue: initialValue,\n\t\tclipboardUrl: '',\n\t} );\n\tconst directEntry = createDirectEntry( value );\n\n\t// The title of a direct entry is displayed as the raw input value, but if we\n\t// are replacing empty text, we want to use the generated url.\n\tconst pickLink = ( { title, url, isDirectEntry } ) => {\n\t\tonLinkPicked( { title: isDirectEntry ? url : title, url } );\n\t};\n\n\tconst onSubmit = () => {\n\t\tpickLink( directEntry );\n\t};\n\n\tconst clear = () => {\n\t\tsetValue( { value: '', clipboardUrl } );\n\t};\n\n\tconst omniCellStyle = usePreferredColorSchemeStyle(\n\t\tstyles.omniCell,\n\t\tstyles.omniCellDark\n\t);\n\n\tconst iconStyle = usePreferredColorSchemeStyle(\n\t\tstyles.icon,\n\t\tstyles.iconDark\n\t);\n\n\tuseEffect( () => {\n\t\tgetURLFromClipboard()\n\t\t\t.then( ( url ) => setValue( { value, clipboardUrl: url } ) )\n\t\t\t.catch( () => setValue( { value, clipboardUrl: '' } ) );\n\t}, [] );\n\n\t// TODO: Localize the accessibility label.\n\t// TODO: Decide on if `LinkSuggestionItemCell` with `isDirectEntry` makes sense.\n\treturn (\n\t\t<SafeAreaView style={ styles.safeArea }>\n\t\t\t<NavBar>\n\t\t\t\t<NavBar.DismissButton onPress={ cancel } />\n\t\t\t\t<NavBar.Heading>{ __( 'Link to' ) }</NavBar.Heading>\n\t\t\t\t<NavBar.ApplyButton onPress={ onSubmit } />\n\t\t\t</NavBar>\n\t\t\t<View style={ styles.contentContainer }>\n\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\ticon={ link }\n\t\t\t\t\tstyle={ omniCellStyle }\n\t\t\t\t\tvalueStyle={ styles.omniInput }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tplaceholder={ __( 'Search or type URL' ) }\n\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\tautoCorrect={ false }\n\t\t\t\t\tkeyboardType=\"url\"\n\t\t\t\t\tonChangeValue={ ( newValue ) => {\n\t\t\t\t\t\tsetValue( { value: newValue, clipboardUrl } );\n\t\t\t\t\t} }\n\t\t\t\t\tonSubmit={ onSubmit }\n\t\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-autofocus */\n\t\t\t\t\tautoFocus\n\t\t\t\t\tseparatorType=\"none\"\n\t\t\t\t>\n\t\t\t\t\t{ value !== '' && (\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tonPress={ clear }\n\t\t\t\t\t\t\tstyle={ styles.clearIcon }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ cancelCircleFilled }\n\t\t\t\t\t\t\t\tfill={ iconStyle.color }\n\t\t\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t) }\n\t\t\t\t</BottomSheet.Cell>\n\t\t\t\t{ !! clipboardUrl && clipboardUrl !== value && (\n\t\t\t\t\t<BottomSheet.LinkSuggestionItemCell\n\t\t\t\t\t\taccessible\n\t\t\t\t\t\taccessibilityLabel={ sprintf(\n\t\t\t\t\t\t\t/* translators: Copy URL from the clipboard, https://sample.url */\n\t\t\t\t\t\t\t__( 'Copy URL from the clipboard, %s' ),\n\t\t\t\t\t\t\tclipboardUrl\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tsuggestion={ {\n\t\t\t\t\t\t\ttype: 'clipboard',\n\t\t\t\t\t\t\turl: clipboardUrl,\n\t\t\t\t\t\t\tisDirectEntry: true,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonLinkPicked={ pickLink }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! value && (\n\t\t\t\t\t<LinkPickerResults\n\t\t\t\t\t\tquery={ value }\n\t\t\t\t\t\tonLinkPicked={ pickLink }\n\t\t\t\t\t\tdirectEntry={ directEntry }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</SafeAreaView>\n\t);\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/link-picker/index.native.js"],"names":["createDirectEntry","value","type","protocol","toLowerCase","includes","startsWith","isDirectEntry","title","url","getURLFromClipboard","text","Clipboard","getString","LinkPicker","initialValue","onLinkPicked","onCancel","cancel","clipboardUrl","setValue","directEntry","pickLink","onSubmit","clear","omniCellStyle","styles","omniCell","omniCellDark","iconStyle","icon","iconDark","then","catch","safeArea","contentContainer","link","omniInput","newValue","clearIcon","cancelCircleFilled","color"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { SafeAreaView, TouchableOpacity, View } from 'react-native';\nimport Clipboard from '@react-native-clipboard/clipboard';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { BottomSheet, Icon } from '@wordpress/components';\nimport { getProtocol, isURL, prependHTTP } from '@wordpress/url';\nimport { link, cancelCircleFilled } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport LinkPickerResults from './link-picker-results';\nimport NavBar from '../bottom-sheet/nav-bar';\nimport styles from './styles.scss';\n\n// This creates a search suggestion for adding a url directly.\nexport const createDirectEntry = ( value ) => {\n\tlet type = 'URL';\n\n\tconst protocol = getProtocol( value )?.toLowerCase() || '';\n\n\tif ( protocol.includes( 'mailto' ) ) {\n\t\ttype = 'mailto';\n\t}\n\n\tif ( protocol.includes( 'tel' ) ) {\n\t\ttype = 'tel';\n\t}\n\n\tif ( value?.startsWith( '#' ) ) {\n\t\ttype = 'internal';\n\t}\n\n\treturn {\n\t\tisDirectEntry: true,\n\t\ttitle: value,\n\t\turl: type === 'URL' ? prependHTTP( value ) : value,\n\t\ttype,\n\t};\n};\n\nconst getURLFromClipboard = async () => {\n\tconst text = await Clipboard.getString();\n\treturn !! text && isURL( text ) ? text : '';\n};\n\nexport const LinkPicker = ( {\n\tvalue: initialValue,\n\tonLinkPicked,\n\tonCancel: cancel,\n} ) => {\n\tconst [ { value, clipboardUrl }, setValue ] = useState( {\n\t\tvalue: initialValue,\n\t\tclipboardUrl: '',\n\t} );\n\tconst directEntry = createDirectEntry( value );\n\n\t// The title of a direct entry is displayed as the raw input value, but if we\n\t// are replacing empty text, we want to use the generated url.\n\tconst pickLink = ( { title, url, isDirectEntry } ) => {\n\t\tonLinkPicked( { title: isDirectEntry ? url : title, url } );\n\t};\n\n\tconst onSubmit = () => {\n\t\tpickLink( directEntry );\n\t};\n\n\tconst clear = () => {\n\t\tsetValue( { value: '', clipboardUrl } );\n\t};\n\n\tconst omniCellStyle = usePreferredColorSchemeStyle(\n\t\tstyles.omniCell,\n\t\tstyles.omniCellDark\n\t);\n\n\tconst iconStyle = usePreferredColorSchemeStyle(\n\t\tstyles.icon,\n\t\tstyles.iconDark\n\t);\n\n\tuseEffect( () => {\n\t\tgetURLFromClipboard()\n\t\t\t.then( ( url ) => setValue( { value, clipboardUrl: url } ) )\n\t\t\t.catch( () => setValue( { value, clipboardUrl: '' } ) );\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\t// TODO: Localize the accessibility label.\n\t// TODO: Decide on if `LinkSuggestionItemCell` with `isDirectEntry` makes sense.\n\treturn (\n\t\t<SafeAreaView style={ styles.safeArea }>\n\t\t\t<NavBar>\n\t\t\t\t<NavBar.DismissButton onPress={ cancel } />\n\t\t\t\t<NavBar.Heading>{ __( 'Link to' ) }</NavBar.Heading>\n\t\t\t\t<NavBar.ApplyButton onPress={ onSubmit } />\n\t\t\t</NavBar>\n\t\t\t<View style={ styles.contentContainer }>\n\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\ticon={ link }\n\t\t\t\t\tstyle={ omniCellStyle }\n\t\t\t\t\tvalueStyle={ styles.omniInput }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tplaceholder={ __( 'Search or type URL' ) }\n\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\tautoCorrect={ false }\n\t\t\t\t\tkeyboardType=\"url\"\n\t\t\t\t\tonChangeValue={ ( newValue ) => {\n\t\t\t\t\t\tsetValue( { value: newValue, clipboardUrl } );\n\t\t\t\t\t} }\n\t\t\t\t\tonSubmit={ onSubmit }\n\t\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-autofocus */\n\t\t\t\t\tautoFocus\n\t\t\t\t\tseparatorType=\"none\"\n\t\t\t\t>\n\t\t\t\t\t{ value !== '' && (\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tonPress={ clear }\n\t\t\t\t\t\t\tstyle={ styles.clearIcon }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ cancelCircleFilled }\n\t\t\t\t\t\t\t\tfill={ iconStyle.color }\n\t\t\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t) }\n\t\t\t\t</BottomSheet.Cell>\n\t\t\t\t{ !! clipboardUrl && clipboardUrl !== value && (\n\t\t\t\t\t<BottomSheet.LinkSuggestionItemCell\n\t\t\t\t\t\taccessible\n\t\t\t\t\t\taccessibilityLabel={ sprintf(\n\t\t\t\t\t\t\t/* translators: Copy URL from the clipboard, https://sample.url */\n\t\t\t\t\t\t\t__( 'Copy URL from the clipboard, %s' ),\n\t\t\t\t\t\t\tclipboardUrl\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tsuggestion={ {\n\t\t\t\t\t\t\ttype: 'clipboard',\n\t\t\t\t\t\t\turl: clipboardUrl,\n\t\t\t\t\t\t\tisDirectEntry: true,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonLinkPicked={ pickLink }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! value && (\n\t\t\t\t\t<LinkPickerResults\n\t\t\t\t\t\tquery={ value }\n\t\t\t\t\t\tonLinkPicked={ pickLink }\n\t\t\t\t\t\tdirectEntry={ directEntry }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</SafeAreaView>\n\t);\n};\n"]}
@@ -122,7 +122,9 @@ function LinkPickerResults(_ref) {
122
122
  fetchMoreSuggestions({
123
123
  query,
124
124
  links: [directEntry]
125
- });
125
+ }); // Disable reason: deferring this refactor to the native team.
126
+ // see https://github.com/WordPress/gutenberg/pull/41166
127
+ // eslint-disable-next-line react-hooks/exhaustive-deps
126
128
  }, [query]);
127
129
 
128
130
  const onEndReached = () => fetchMoreSuggestions({
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/link-picker/link-picker-results.native.js"],"names":["PER_PAGE","REQUEST_DEBOUNCE_DELAY","MINIMUM_QUERY_SIZE","meetsThreshold","query","length","LinkPickerResults","onLinkPicked","directEntry","links","setLinks","hasAllSuggestions","setHasAllSuggestions","nextPage","pendingRequest","clearRequest","current","fetchMoreSuggestions","select","getSettings","fetchLinkSuggestions","search","__experimentalFetchLinkSuggestions","page","type","perPage","fetchMore","currentSuggestions","request","suggestions","onEndReached","spinner","styles","listProps","item","url","contentContainerStyle","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { ActivityIndicator, FlatList, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { BottomSheet, BottomSheetConsumer } from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\n\nconst PER_PAGE = 20;\nconst REQUEST_DEBOUNCE_DELAY = 400;\nconst MINIMUM_QUERY_SIZE = 2;\nconst meetsThreshold = ( query ) => MINIMUM_QUERY_SIZE <= query.length;\n\nexport default function LinkPickerResults( {\n\tquery,\n\tonLinkPicked,\n\tdirectEntry,\n} ) {\n\tconst [ links, setLinks ] = useState( [ directEntry ] );\n\tconst [ hasAllSuggestions, setHasAllSuggestions ] = useState( false );\n\tconst nextPage = useRef( 1 );\n\tconst pendingRequest = useRef();\n\tconst clearRequest = () => {\n\t\tpendingRequest.current = null;\n\t};\n\n\t// A stable debounced function to fetch suggestions and append.\n\tconst { fetchMoreSuggestions } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( 'core/block-editor' );\n\t\tconst fetchLinkSuggestions = async ( { search } ) => {\n\t\t\tif ( meetsThreshold( search ) ) {\n\t\t\t\treturn await getSettings().__experimentalFetchLinkSuggestions(\n\t\t\t\t\tsearch,\n\t\t\t\t\t{ page: nextPage.current, type: 'post', perPage: PER_PAGE }\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t\tconst fetchMore = async ( {\n\t\t\tquery: search,\n\t\t\tlinks: currentSuggestions,\n\t\t} ) => {\n\t\t\t// Return early if we've already detected the end of data or we are\n\t\t\t// already awaiting a response.\n\t\t\tif ( hasAllSuggestions || pendingRequest.current ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst request = fetchLinkSuggestions( { search } );\n\t\t\tpendingRequest.current = request;\n\t\t\tconst suggestions = await request;\n\n\t\t\t// Only update links for the most recent request.\n\t\t\tif ( suggestions && request === pendingRequest.current ) {\n\t\t\t\t// Since we don't have the response header, we check if the results\n\t\t\t\t// are truncated to determine we've reached the end.\n\t\t\t\tif ( suggestions.length < PER_PAGE ) {\n\t\t\t\t\tsetHasAllSuggestions( true );\n\t\t\t\t}\n\t\t\t\tsetLinks( [ ...currentSuggestions, ...suggestions ] );\n\t\t\t\tnextPage.current++;\n\t\t\t}\n\n\t\t\tclearRequest();\n\t\t};\n\t\treturn {\n\t\t\tfetchMoreSuggestions: debounce( fetchMore, REQUEST_DEBOUNCE_DELAY ),\n\t\t};\n\t}, [] );\n\n\t// Prevent setting state when unmounted.\n\tuseEffect( () => clearRequest, [] );\n\n\t// Any time the query changes, we reset pagination.\n\tuseEffect( () => {\n\t\tclearRequest();\n\t\tnextPage.current = 1;\n\t\tsetHasAllSuggestions( false );\n\t\tsetLinks( [ directEntry ] );\n\t\tfetchMoreSuggestions( { query, links: [ directEntry ] } );\n\t}, [ query ] );\n\n\tconst onEndReached = () => fetchMoreSuggestions( { query, links } );\n\n\tconst spinner = ! hasAllSuggestions && meetsThreshold( query ) && (\n\t\t<View style={ styles.spinner }>\n\t\t\t<ActivityIndicator animating />\n\t\t</View>\n\t);\n\n\treturn (\n\t\t<BottomSheetConsumer>\n\t\t\t{ ( { listProps } ) => (\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={ links }\n\t\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\t\trenderItem={ ( { item } ) => (\n\t\t\t\t\t\t<BottomSheet.LinkSuggestionItemCell\n\t\t\t\t\t\t\tsuggestion={ item }\n\t\t\t\t\t\t\tonLinkPicked={ onLinkPicked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\tkeyExtractor={ ( { url, type } ) => `${ url }-${ type }` }\n\t\t\t\t\tonEndReached={ onEndReached }\n\t\t\t\t\tonEndReachedThreshold={ 0.1 }\n\t\t\t\t\tinitialNumToRender={ PER_PAGE }\n\t\t\t\t\tListFooterComponent={ spinner }\n\t\t\t\t\t{ ...listProps }\n\t\t\t\t\tcontentContainerStyle={ [\n\t\t\t\t\t\t...listProps.contentContainerStyle,\n\t\t\t\t\t\tstyles.list,\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</BottomSheetConsumer>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/link-picker/link-picker-results.native.js"],"names":["PER_PAGE","REQUEST_DEBOUNCE_DELAY","MINIMUM_QUERY_SIZE","meetsThreshold","query","length","LinkPickerResults","onLinkPicked","directEntry","links","setLinks","hasAllSuggestions","setHasAllSuggestions","nextPage","pendingRequest","clearRequest","current","fetchMoreSuggestions","select","getSettings","fetchLinkSuggestions","search","__experimentalFetchLinkSuggestions","page","type","perPage","fetchMore","currentSuggestions","request","suggestions","onEndReached","spinner","styles","listProps","item","url","contentContainerStyle","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { ActivityIndicator, FlatList, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { BottomSheet, BottomSheetConsumer } from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\n\nconst PER_PAGE = 20;\nconst REQUEST_DEBOUNCE_DELAY = 400;\nconst MINIMUM_QUERY_SIZE = 2;\nconst meetsThreshold = ( query ) => MINIMUM_QUERY_SIZE <= query.length;\n\nexport default function LinkPickerResults( {\n\tquery,\n\tonLinkPicked,\n\tdirectEntry,\n} ) {\n\tconst [ links, setLinks ] = useState( [ directEntry ] );\n\tconst [ hasAllSuggestions, setHasAllSuggestions ] = useState( false );\n\tconst nextPage = useRef( 1 );\n\tconst pendingRequest = useRef();\n\tconst clearRequest = () => {\n\t\tpendingRequest.current = null;\n\t};\n\n\t// A stable debounced function to fetch suggestions and append.\n\tconst { fetchMoreSuggestions } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( 'core/block-editor' );\n\t\tconst fetchLinkSuggestions = async ( { search } ) => {\n\t\t\tif ( meetsThreshold( search ) ) {\n\t\t\t\treturn await getSettings().__experimentalFetchLinkSuggestions(\n\t\t\t\t\tsearch,\n\t\t\t\t\t{ page: nextPage.current, type: 'post', perPage: PER_PAGE }\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t\tconst fetchMore = async ( {\n\t\t\tquery: search,\n\t\t\tlinks: currentSuggestions,\n\t\t} ) => {\n\t\t\t// Return early if we've already detected the end of data or we are\n\t\t\t// already awaiting a response.\n\t\t\tif ( hasAllSuggestions || pendingRequest.current ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst request = fetchLinkSuggestions( { search } );\n\t\t\tpendingRequest.current = request;\n\t\t\tconst suggestions = await request;\n\n\t\t\t// Only update links for the most recent request.\n\t\t\tif ( suggestions && request === pendingRequest.current ) {\n\t\t\t\t// Since we don't have the response header, we check if the results\n\t\t\t\t// are truncated to determine we've reached the end.\n\t\t\t\tif ( suggestions.length < PER_PAGE ) {\n\t\t\t\t\tsetHasAllSuggestions( true );\n\t\t\t\t}\n\t\t\t\tsetLinks( [ ...currentSuggestions, ...suggestions ] );\n\t\t\t\tnextPage.current++;\n\t\t\t}\n\n\t\t\tclearRequest();\n\t\t};\n\t\treturn {\n\t\t\tfetchMoreSuggestions: debounce( fetchMore, REQUEST_DEBOUNCE_DELAY ),\n\t\t};\n\t}, [] );\n\n\t// Prevent setting state when unmounted.\n\tuseEffect( () => clearRequest, [] );\n\n\t// Any time the query changes, we reset pagination.\n\tuseEffect( () => {\n\t\tclearRequest();\n\t\tnextPage.current = 1;\n\t\tsetHasAllSuggestions( false );\n\t\tsetLinks( [ directEntry ] );\n\t\tfetchMoreSuggestions( { query, links: [ directEntry ] } );\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ query ] );\n\n\tconst onEndReached = () => fetchMoreSuggestions( { query, links } );\n\n\tconst spinner = ! hasAllSuggestions && meetsThreshold( query ) && (\n\t\t<View style={ styles.spinner }>\n\t\t\t<ActivityIndicator animating />\n\t\t</View>\n\t);\n\n\treturn (\n\t\t<BottomSheetConsumer>\n\t\t\t{ ( { listProps } ) => (\n\t\t\t\t<FlatList\n\t\t\t\t\tdata={ links }\n\t\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\t\trenderItem={ ( { item } ) => (\n\t\t\t\t\t\t<BottomSheet.LinkSuggestionItemCell\n\t\t\t\t\t\t\tsuggestion={ item }\n\t\t\t\t\t\t\tonLinkPicked={ onLinkPicked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\tkeyExtractor={ ( { url, type } ) => `${ url }-${ type }` }\n\t\t\t\t\tonEndReached={ onEndReached }\n\t\t\t\t\tonEndReachedThreshold={ 0.1 }\n\t\t\t\t\tinitialNumToRender={ PER_PAGE }\n\t\t\t\t\tListFooterComponent={ spinner }\n\t\t\t\t\t{ ...listProps }\n\t\t\t\t\tcontentContainerStyle={ [\n\t\t\t\t\t\t...listProps.contentContainerStyle,\n\t\t\t\t\t\tstyles.list,\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</BottomSheetConsumer>\n\t);\n}\n"]}
@@ -71,7 +71,9 @@ const LinkPickerScreen = _ref => {
71
71
  value: inputValue,
72
72
  onLinkPicked: onLinkPicked,
73
73
  onCancel: onCancel
74
- });
74
+ }); // Disable reason: deferring this refactor to the native team.
75
+ // see https://github.com/WordPress/gutenberg/pull/41166
76
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
77
  }, [inputValue]);
76
78
  };
77
79
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/link-picker/link-picker-screen.native.js"],"names":["LinkPickerScreen","returnScreenName","navigation","route","navigateToLinkTimeoutRef","navigateBackTimeoutRef","onLinkPicked","url","title","Keyboard","dismiss","current","setTimeout","navigate","inputValue","text","onCancel","goBack","clearTimeout","params"],"mappings":";;;;;;;AASA;;AANA;;AACA;;AAUA;;AAdA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AAGA,MAAMA,gBAAgB,GAAG,QAA4B;AAAA,MAA1B;AAAEC,IAAAA;AAAF,GAA0B;AACpD,QAAMC,UAAU,GAAG,4BAAnB;AACA,QAAMC,KAAK,GAAG,uBAAd;AACA,QAAMC,wBAAwB,GAAG,qBAAQ,IAAR,CAAjC;AACA,QAAMC,sBAAsB,GAAG,qBAAQ,IAAR,CAA/B;;AAEA,QAAMC,YAAY,GAAG,SAAsB;AAAA,QAApB;AAAEC,MAAAA,GAAF;AAAOC,MAAAA;AAAP,KAAoB;;AAC1CC,0BAASC,OAAT;;AACAN,IAAAA,wBAAwB,CAACO,OAAzB,GAAmCC,UAAU,CAAE,MAAM;AACpDV,MAAAA,UAAU,CAACW,QAAX,CAAqBZ,gBAArB,EAAuC;AACtCa,QAAAA,UAAU,EAAEP,GAD0B;AAEtCQ,QAAAA,IAAI,EAAEP;AAFgC,OAAvC;AAIA,KAL4C,EAK1C,GAL0C,CAA7C;AAMA,GARD;;AAUA,QAAMQ,QAAQ,GAAG,MAAM;AACtBP,0BAASC,OAAT;;AACAL,IAAAA,sBAAsB,CAACM,OAAvB,GAAiCC,UAAU,CAAE,MAAM;AAClDV,MAAAA,UAAU,CAACe,MAAX;AACA,KAF0C,EAExC,GAFwC,CAA3C;AAGA,GALD;;AAOA,0BAAW,MAAM;AAChB,WAAO,MAAM;AACZC,MAAAA,YAAY,CAAEd,wBAAwB,CAACO,OAA3B,CAAZ;AACAO,MAAAA,YAAY,CAAEb,sBAAsB,CAACM,OAAzB,CAAZ;AACA,KAHD;AAIA,GALD,EAKG,EALH;AAOA,QAAM;AAAEG,IAAAA;AAAF,MAAiBX,KAAK,CAACgB,MAA7B;AACA,SAAO,sBAAS,MAAM;AACrB,WACC,4BAAC,YAAD;AACC,MAAA,KAAK,EAAGL,UADT;AAEC,MAAA,YAAY,EAAGR,YAFhB;AAGC,MAAA,QAAQ,EAAGU;AAHZ,MADD;AAOA,GARM,EAQJ,CAAEF,UAAF,CARI,CAAP;AASA,CAxCD;;eA0Ced,gB","sourcesContent":["/**\n * External dependencies\n */\nimport { Keyboard } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { LinkPicker } from './';\n\nconst LinkPickerScreen = ( { returnScreenName } ) => {\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst navigateToLinkTimeoutRef = useRef( null );\n\tconst navigateBackTimeoutRef = useRef( null );\n\n\tconst onLinkPicked = ( { url, title } ) => {\n\t\tKeyboard.dismiss();\n\t\tnavigateToLinkTimeoutRef.current = setTimeout( () => {\n\t\t\tnavigation.navigate( returnScreenName, {\n\t\t\t\tinputValue: url,\n\t\t\t\ttext: title,\n\t\t\t} );\n\t\t}, 100 );\n\t};\n\n\tconst onCancel = () => {\n\t\tKeyboard.dismiss();\n\t\tnavigateBackTimeoutRef.current = setTimeout( () => {\n\t\t\tnavigation.goBack();\n\t\t}, 100 );\n\t};\n\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tclearTimeout( navigateToLinkTimeoutRef.current );\n\t\t\tclearTimeout( navigateBackTimeoutRef.current );\n\t\t};\n\t}, [] );\n\n\tconst { inputValue } = route.params;\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<LinkPicker\n\t\t\t\tvalue={ inputValue }\n\t\t\t\tonLinkPicked={ onLinkPicked }\n\t\t\t\tonCancel={ onCancel }\n\t\t\t/>\n\t\t);\n\t}, [ inputValue ] );\n};\n\nexport default LinkPickerScreen;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/link-picker/link-picker-screen.native.js"],"names":["LinkPickerScreen","returnScreenName","navigation","route","navigateToLinkTimeoutRef","navigateBackTimeoutRef","onLinkPicked","url","title","Keyboard","dismiss","current","setTimeout","navigate","inputValue","text","onCancel","goBack","clearTimeout","params"],"mappings":";;;;;;;AASA;;AANA;;AACA;;AAUA;;AAdA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AAGA,MAAMA,gBAAgB,GAAG,QAA4B;AAAA,MAA1B;AAAEC,IAAAA;AAAF,GAA0B;AACpD,QAAMC,UAAU,GAAG,4BAAnB;AACA,QAAMC,KAAK,GAAG,uBAAd;AACA,QAAMC,wBAAwB,GAAG,qBAAQ,IAAR,CAAjC;AACA,QAAMC,sBAAsB,GAAG,qBAAQ,IAAR,CAA/B;;AAEA,QAAMC,YAAY,GAAG,SAAsB;AAAA,QAApB;AAAEC,MAAAA,GAAF;AAAOC,MAAAA;AAAP,KAAoB;;AAC1CC,0BAASC,OAAT;;AACAN,IAAAA,wBAAwB,CAACO,OAAzB,GAAmCC,UAAU,CAAE,MAAM;AACpDV,MAAAA,UAAU,CAACW,QAAX,CAAqBZ,gBAArB,EAAuC;AACtCa,QAAAA,UAAU,EAAEP,GAD0B;AAEtCQ,QAAAA,IAAI,EAAEP;AAFgC,OAAvC;AAIA,KAL4C,EAK1C,GAL0C,CAA7C;AAMA,GARD;;AAUA,QAAMQ,QAAQ,GAAG,MAAM;AACtBP,0BAASC,OAAT;;AACAL,IAAAA,sBAAsB,CAACM,OAAvB,GAAiCC,UAAU,CAAE,MAAM;AAClDV,MAAAA,UAAU,CAACe,MAAX;AACA,KAF0C,EAExC,GAFwC,CAA3C;AAGA,GALD;;AAOA,0BAAW,MAAM;AAChB,WAAO,MAAM;AACZC,MAAAA,YAAY,CAAEd,wBAAwB,CAACO,OAA3B,CAAZ;AACAO,MAAAA,YAAY,CAAEb,sBAAsB,CAACM,OAAzB,CAAZ;AACA,KAHD;AAIA,GALD,EAKG,EALH;AAOA,QAAM;AAAEG,IAAAA;AAAF,MAAiBX,KAAK,CAACgB,MAA7B;AACA,SAAO,sBAAS,MAAM;AACrB,WACC,4BAAC,YAAD;AACC,MAAA,KAAK,EAAGL,UADT;AAEC,MAAA,YAAY,EAAGR,YAFhB;AAGC,MAAA,QAAQ,EAAGU;AAHZ,MADD,CADqB,CAQrB;AACA;AACA;AACA,GAXM,EAWJ,CAAEF,UAAF,CAXI,CAAP;AAYA,CA3CD;;eA6Ced,gB","sourcesContent":["/**\n * External dependencies\n */\nimport { Keyboard } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { LinkPicker } from './';\n\nconst LinkPickerScreen = ( { returnScreenName } ) => {\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst navigateToLinkTimeoutRef = useRef( null );\n\tconst navigateBackTimeoutRef = useRef( null );\n\n\tconst onLinkPicked = ( { url, title } ) => {\n\t\tKeyboard.dismiss();\n\t\tnavigateToLinkTimeoutRef.current = setTimeout( () => {\n\t\t\tnavigation.navigate( returnScreenName, {\n\t\t\t\tinputValue: url,\n\t\t\t\ttext: title,\n\t\t\t} );\n\t\t}, 100 );\n\t};\n\n\tconst onCancel = () => {\n\t\tKeyboard.dismiss();\n\t\tnavigateBackTimeoutRef.current = setTimeout( () => {\n\t\t\tnavigation.goBack();\n\t\t}, 100 );\n\t};\n\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tclearTimeout( navigateToLinkTimeoutRef.current );\n\t\t\tclearTimeout( navigateBackTimeoutRef.current );\n\t\t};\n\t}, [] );\n\n\tconst { inputValue } = route.params;\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<LinkPicker\n\t\t\t\tvalue={ inputValue }\n\t\t\t\tonLinkPicked={ onLinkPicked }\n\t\t\t\tonCancel={ onCancel }\n\t\t\t/>\n\t\t);\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ inputValue ] );\n};\n\nexport default LinkPickerScreen;\n"]}
@@ -121,7 +121,10 @@ function LinkSettings(_ref) {
121
121
  (0, _element.useEffect)(() => {
122
122
  if (onHandleClosingBottomSheet) {
123
123
  onHandleClosingBottomSheet(onCloseSettingsSheet);
124
- }
124
+ } // Disable reason: deferring this refactor to the native team.
125
+ // see https://github.com/WordPress/gutenberg/pull/41166
126
+ // eslint-disable-next-line react-hooks/exhaustive-deps
127
+
125
128
  }, [urlInputValue, labelInputValue, linkRelInputValue]);
126
129
  (0, _element.useEffect)(() => {
127
130
  prevEditorSidebarOpenedRef.current = editorSidebarOpened;
@@ -130,7 +133,10 @@ function LinkSettings(_ref) {
130
133
  (0, _element.useEffect)(() => {
131
134
  if (url !== urlInputValue) {
132
135
  setUrlInputValue(url || '');
133
- }
136
+ } // Disable reason: deferring this refactor to the native team.
137
+ // see https://github.com/WordPress/gutenberg/pull/41166
138
+ // eslint-disable-next-line react-hooks/exhaustive-deps
139
+
134
140
  }, [url]);
135
141
  (0, _element.useEffect)(() => {
136
142
  setLabelInputValue(label || '');
@@ -151,7 +157,10 @@ function LinkSettings(_ref) {
151
157
 
152
158
  if (prevEditorSidebarOpened && !editorSidebarOpened) {
153
159
  onSetAttributes();
154
- }
160
+ } // Disable reason: deferring this refactor to the native team.
161
+ // see https://github.com/WordPress/gutenberg/pull/41166
162
+ // eslint-disable-next-line react-hooks/exhaustive-deps
163
+
155
164
  }, [editorSidebarOpened, isVisible]);
156
165
  (0, _element.useEffect)(() => {
157
166
  if (!urlValue && onEmptyURL) {
@@ -162,7 +171,10 @@ function LinkSettings(_ref) {
162
171
  setAttributes({
163
172
  url: (0, _url.prependHTTP)(urlValue)
164
173
  });
165
- }
174
+ } // Disable reason: deferring this refactor to the native team.
175
+ // see https://github.com/WordPress/gutenberg/pull/41166
176
+ // eslint-disable-next-line react-hooks/exhaustive-deps
177
+
166
178
  }, [urlValue]);
167
179
  const onChangeURL = (0, _element.useCallback)(value => {
168
180
  if (!value && onEmptyURL) {
@@ -183,7 +195,10 @@ function LinkSettings(_ref) {
183
195
  label: labelInputValue,
184
196
  rel: linkRelInputValue
185
197
  });
186
- }
198
+ } // Disable reason: deferring this refactor to the native team.
199
+ // see https://github.com/WordPress/gutenberg/pull/41166
200
+ // eslint-disable-next-line react-hooks/exhaustive-deps
201
+
187
202
  }, [urlInputValue, labelInputValue, linkRelInputValue, setAttributes]);
188
203
  const onCloseSettingsSheet = (0, _element.useCallback)(() => {
189
204
  if (onCloseSettingsSheetConsumed.current) {
@@ -211,7 +226,10 @@ function LinkSettings(_ref) {
211
226
  linkTarget: newLinkTarget,
212
227
  rel: updatedRel
213
228
  });
214
- }, [linkRelInputValue]);
229
+ }, // Disable reason: deferring this refactor to the native team.
230
+ // see https://github.com/WordPress/gutenberg/pull/41166
231
+ // eslint-disable-next-line react-hooks/exhaustive-deps
232
+ [linkRelInputValue]);
215
233
  const onChangeLinkRel = (0, _element.useCallback)(value => {
216
234
  setLinkRelInputValue(value);
217
235
  }, []);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/link-settings/index.native.js"],"names":["NEW_TAB_REL","LinkSettings","isVisible","onClose","setAttributes","onEmptyURL","options","withBottomSheet","actions","editorSidebarOpened","showIcon","onLinkCellPressed","urlValue","url","label","linkTarget","rel","urlInputValue","setUrlInputValue","labelInputValue","setLabelInputValue","linkRelInputValue","setLinkRelInputValue","onCloseSettingsSheetConsumed","prevEditorSidebarOpenedRef","onHandleClosingBottomSheet","BottomSheetContext","onCloseSettingsSheet","current","prevEditorSidebarOpened","isSettingSheetOpen","autoFill","getURLFromClipboard","onSetAttributes","onChangeURL","value","onChangeLabel","newURL","onChangeOpenInNewTab","newLinkTarget","undefined","updatedRel","onChangeLinkRel","clipboardText","Clipboard","getString","getSettings","valueMask","link","placeholder","Platform","OS","autoFocus","linkLabel","openInNewTab","external","linkRel","LinkRelIcon","styles","linkSettingsPanel","footer","separatorType","select","isEditorSidebarOpened"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform } from 'react-native';\nimport Clipboard from '@react-native-clipboard/clipboard';\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport {\n\tuseEffect,\n\tuseState,\n\tuseRef,\n\tuseContext,\n\tuseCallback,\n} from '@wordpress/element';\nimport { link, external } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BottomSheet from '../bottom-sheet';\nimport { BottomSheetContext } from '../bottom-sheet/bottom-sheet-context';\nimport PanelBody from '../../panel/body';\nimport TextControl from '../../text-control';\nimport ToggleControl from '../../toggle-control';\nimport FooterMessageControl from '../../footer-message-control';\nimport PanelActions from '../../panel/actions';\nimport LinkRelIcon from './link-rel';\n\nimport styles from './style.scss';\n\nconst NEW_TAB_REL = 'noreferrer noopener';\nfunction LinkSettings( {\n\t// Control link settings `BottomSheet` visibility\n\tisVisible,\n\t// Callback that is called on closing bottom sheet\n\tonClose,\n\t// Function called to set attributes\n\tsetAttributes,\n\t// Callback that is called when url input field is empty\n\tonEmptyURL,\n\t// Object of available options along with specific, customizable properties.\n\t// Available options keys:\n\t//\t* url - uses `TextControl` component to set `attributes.url`\n\t//\t* linkLabel - uses `TextControl` component to set `attributes.label`\n\t//\t* openInNewTab - uses `ToggleControl` component to set `attributes.linkTarget` and `attributes.rel`\n\t//\t* linkRel - uses `TextControl` component to set `attributes.rel`\n\t//\t* footer - uses `FooterMessageControl` component to display message, e.g. about missing functionality\n\t// Available properties:\n\t//\t* label - control component label, e.g. `Button Link URL`\n\t//\t* placeholder - control component placeholder, e.g. `Add URL`\n\t//\t* autoFocus (url only) - whether url input should be focused on sheet opening\n\t//\t* autoFill (url only) - whether url input should be filled with url from clipboard\n\t// Example:\n\t//\tconst options = {\n\t//\t\turl: {\n\t//\t\t\tlabel: __( 'Button Link URL' ),\n\t//\t\t\tplaceholder: __( 'Add URL' ),\n\t//\t\t\tautoFocus: true,\n\t//\t\t\tautoFill: true,\n\t//\t\t}\n\t//\t}\n\toptions,\n\t// Specifies whether settings should be wrapped into `BottomSheet`\n\twithBottomSheet,\n\t// Defines buttons which will be displayed below the all options.\n\t// It's an array of objects with following properties:\n\t//\t* label - button title\n\t//\t* onPress - callback that is called on pressing button\n\t// Example:\n\t// \tconst actions = [\n\t//\t\t{\n\t//\t\t\tlabel: __( 'Remove link' ),\n\t//\t\t\tonPress: () => setAttributes({ url: '' }),\n\t//\t\t},\n\t//\t];\n\tactions,\n\t// Specifies whether general `BottomSheet` is opened\n\teditorSidebarOpened,\n\t// Specifies whether icon should be displayed next to the label\n\tshowIcon,\n\tonLinkCellPressed,\n\turlValue,\n\t// Attributes properties\n\turl,\n\tlabel = '',\n\tlinkTarget,\n\trel = '',\n} ) {\n\tconst [ urlInputValue, setUrlInputValue ] = useState( '' );\n\tconst [ labelInputValue, setLabelInputValue ] = useState( '' );\n\tconst [ linkRelInputValue, setLinkRelInputValue ] = useState( '' );\n\tconst onCloseSettingsSheetConsumed = useRef( false );\n\tconst prevEditorSidebarOpenedRef = useRef();\n\n\tconst { onHandleClosingBottomSheet } = useContext( BottomSheetContext );\n\tuseEffect( () => {\n\t\tif ( onHandleClosingBottomSheet ) {\n\t\t\tonHandleClosingBottomSheet( onCloseSettingsSheet );\n\t\t}\n\t}, [ urlInputValue, labelInputValue, linkRelInputValue ] );\n\n\tuseEffect( () => {\n\t\tprevEditorSidebarOpenedRef.current = editorSidebarOpened;\n\t} );\n\tconst prevEditorSidebarOpened = prevEditorSidebarOpenedRef.current;\n\n\tuseEffect( () => {\n\t\tif ( url !== urlInputValue ) {\n\t\t\tsetUrlInputValue( url || '' );\n\t\t}\n\t}, [ url ] );\n\n\tuseEffect( () => {\n\t\tsetLabelInputValue( label || '' );\n\t}, [ label ] );\n\n\tuseEffect( () => {\n\t\tsetLinkRelInputValue( rel || '' );\n\t}, [ rel ] );\n\n\tuseEffect( () => {\n\t\tconst isSettingSheetOpen = isVisible || editorSidebarOpened;\n\t\tif ( isSettingSheetOpen ) {\n\t\t\tonCloseSettingsSheetConsumed.current = false;\n\t\t}\n\n\t\tif ( options.url.autoFill && isSettingSheetOpen && ! url ) {\n\t\t\tgetURLFromClipboard();\n\t\t}\n\n\t\tif ( prevEditorSidebarOpened && ! editorSidebarOpened ) {\n\t\t\tonSetAttributes();\n\t\t}\n\t}, [ editorSidebarOpened, isVisible ] );\n\n\tuseEffect( () => {\n\t\tif ( ! urlValue && onEmptyURL ) {\n\t\t\tonEmptyURL();\n\t\t}\n\n\t\tif ( prependHTTP( urlValue ) !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: prependHTTP( urlValue ),\n\t\t\t} );\n\t\t}\n\t}, [ urlValue ] );\n\n\tconst onChangeURL = useCallback(\n\t\t( value ) => {\n\t\t\tif ( ! value && onEmptyURL ) {\n\t\t\t\tonEmptyURL();\n\t\t\t}\n\t\t\tsetUrlInputValue( value );\n\t\t},\n\t\t[ onEmptyURL ]\n\t);\n\n\tconst onChangeLabel = useCallback( ( value ) => {\n\t\tsetLabelInputValue( value );\n\t}, [] );\n\n\tconst onSetAttributes = useCallback( () => {\n\t\tconst newURL = prependHTTP( urlInputValue );\n\t\tif (\n\t\t\turl !== newURL ||\n\t\t\tlabelInputValue !== label ||\n\t\t\tlinkRelInputValue !== rel\n\t\t) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tlabel: labelInputValue,\n\t\t\t\trel: linkRelInputValue,\n\t\t\t} );\n\t\t}\n\t}, [ urlInputValue, labelInputValue, linkRelInputValue, setAttributes ] );\n\n\tconst onCloseSettingsSheet = useCallback( () => {\n\t\tif ( onCloseSettingsSheetConsumed.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonCloseSettingsSheetConsumed.current = true;\n\n\t\tonSetAttributes();\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t}, [ onClose, onSetAttributes ] );\n\n\tconst onChangeOpenInNewTab = useCallback(\n\t\t( value ) => {\n\t\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\t\tlet updatedRel = linkRelInputValue;\n\t\t\tif ( newLinkTarget && ! linkRelInputValue ) {\n\t\t\t\tupdatedRel = NEW_TAB_REL;\n\t\t\t} else if ( ! newLinkTarget && linkRelInputValue === NEW_TAB_REL ) {\n\t\t\t\tupdatedRel = undefined;\n\t\t\t}\n\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTarget: newLinkTarget,\n\t\t\t\trel: updatedRel,\n\t\t\t} );\n\t\t},\n\t\t[ linkRelInputValue ]\n\t);\n\n\tconst onChangeLinkRel = useCallback( ( value ) => {\n\t\tsetLinkRelInputValue( value );\n\t}, [] );\n\n\tasync function getURLFromClipboard() {\n\t\tconst clipboardText = await Clipboard.getString();\n\n\t\tif ( ! clipboardText ) {\n\t\t\treturn;\n\t\t}\n\t\t// Check if pasted text is URL.\n\t\tif ( ! isURL( clipboardText ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( { url: clipboardText } );\n\t}\n\n\tfunction getSettings() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ options.url &&\n\t\t\t\t\t( onLinkCellPressed ? (\n\t\t\t\t\t\t<BottomSheet.LinkCell\n\t\t\t\t\t\t\tshowIcon={ showIcon }\n\t\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\t\tvalueMask={ options.url.valueMask }\n\t\t\t\t\t\t\tonPress={ onLinkCellPressed }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\ticon={ showIcon && link }\n\t\t\t\t\t\t\tlabel={ options.url.label }\n\t\t\t\t\t\t\tvalue={ urlInputValue }\n\t\t\t\t\t\t\tvaluePlaceholder={ options.url.placeholder }\n\t\t\t\t\t\t\tonChange={ onChangeURL }\n\t\t\t\t\t\t\tonSubmit={ onCloseSettingsSheet }\n\t\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\t\tautoCorrect={ false }\n\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\tautoFocus={\n\t\t\t\t\t\t\t\tPlatform.OS === 'ios' && options.url.autoFocus\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tkeyboardType=\"url\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ options.linkLabel && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ options.linkLabel.label }\n\t\t\t\t\t\tvalue={ labelInputValue }\n\t\t\t\t\t\tvaluePlaceholder={ options.linkLabel.placeholder }\n\t\t\t\t\t\tonChange={ onChangeLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! urlInputValue && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ options.openInNewTab && (\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\ticon={ showIcon && external }\n\t\t\t\t\t\t\t\tlabel={ options.openInNewTab.label }\n\t\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\tonChange={ onChangeOpenInNewTab }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ options.linkRel && (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\ticon={ showIcon && LinkRelIcon }\n\t\t\t\t\t\t\t\tlabel={ options.linkRel.label }\n\t\t\t\t\t\t\t\tvalue={ linkRelInputValue }\n\t\t\t\t\t\t\t\tvaluePlaceholder={ options.linkRel.placeholder }\n\t\t\t\t\t\t\t\tonChange={ onChangeLinkRel }\n\t\t\t\t\t\t\t\tonSubmit={ onCloseSettingsSheet }\n\t\t\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\t\t\tautoCorrect={ false }\n\t\t\t\t\t\t\t\tkeyboardType=\"default\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( ! withBottomSheet ) {\n\t\treturn getSettings();\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<PanelBody style={ styles.linkSettingsPanel }>\n\t\t\t\t{ getSettings() }\n\t\t\t</PanelBody>\n\t\t\t{ options.footer && (\n\t\t\t\t<PanelBody style={ styles.linkSettingsPanel }>\n\t\t\t\t\t<FooterMessageControl\n\t\t\t\t\t\tlabel={ options.footer.label }\n\t\t\t\t\t\tseparatorType={ options.footer.separatorType }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t) }\n\t\t\t{ actions && <PanelActions actions={ actions } /> }\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { isEditorSidebarOpened } = select( 'core/edit-post' );\n\t\treturn {\n\t\t\teditorSidebarOpened: isEditorSidebarOpened(),\n\t\t};\n\t} ),\n] )( LinkSettings );\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/link-settings/index.native.js"],"names":["NEW_TAB_REL","LinkSettings","isVisible","onClose","setAttributes","onEmptyURL","options","withBottomSheet","actions","editorSidebarOpened","showIcon","onLinkCellPressed","urlValue","url","label","linkTarget","rel","urlInputValue","setUrlInputValue","labelInputValue","setLabelInputValue","linkRelInputValue","setLinkRelInputValue","onCloseSettingsSheetConsumed","prevEditorSidebarOpenedRef","onHandleClosingBottomSheet","BottomSheetContext","onCloseSettingsSheet","current","prevEditorSidebarOpened","isSettingSheetOpen","autoFill","getURLFromClipboard","onSetAttributes","onChangeURL","value","onChangeLabel","newURL","onChangeOpenInNewTab","newLinkTarget","undefined","updatedRel","onChangeLinkRel","clipboardText","Clipboard","getString","getSettings","valueMask","link","placeholder","Platform","OS","autoFocus","linkLabel","openInNewTab","external","linkRel","LinkRelIcon","styles","linkSettingsPanel","footer","separatorType","select","isEditorSidebarOpened"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform } from 'react-native';\nimport Clipboard from '@react-native-clipboard/clipboard';\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport {\n\tuseEffect,\n\tuseState,\n\tuseRef,\n\tuseContext,\n\tuseCallback,\n} from '@wordpress/element';\nimport { link, external } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BottomSheet from '../bottom-sheet';\nimport { BottomSheetContext } from '../bottom-sheet/bottom-sheet-context';\nimport PanelBody from '../../panel/body';\nimport TextControl from '../../text-control';\nimport ToggleControl from '../../toggle-control';\nimport FooterMessageControl from '../../footer-message-control';\nimport PanelActions from '../../panel/actions';\nimport LinkRelIcon from './link-rel';\n\nimport styles from './style.scss';\n\nconst NEW_TAB_REL = 'noreferrer noopener';\nfunction LinkSettings( {\n\t// Control link settings `BottomSheet` visibility\n\tisVisible,\n\t// Callback that is called on closing bottom sheet\n\tonClose,\n\t// Function called to set attributes\n\tsetAttributes,\n\t// Callback that is called when url input field is empty\n\tonEmptyURL,\n\t// Object of available options along with specific, customizable properties.\n\t// Available options keys:\n\t//\t* url - uses `TextControl` component to set `attributes.url`\n\t//\t* linkLabel - uses `TextControl` component to set `attributes.label`\n\t//\t* openInNewTab - uses `ToggleControl` component to set `attributes.linkTarget` and `attributes.rel`\n\t//\t* linkRel - uses `TextControl` component to set `attributes.rel`\n\t//\t* footer - uses `FooterMessageControl` component to display message, e.g. about missing functionality\n\t// Available properties:\n\t//\t* label - control component label, e.g. `Button Link URL`\n\t//\t* placeholder - control component placeholder, e.g. `Add URL`\n\t//\t* autoFocus (url only) - whether url input should be focused on sheet opening\n\t//\t* autoFill (url only) - whether url input should be filled with url from clipboard\n\t// Example:\n\t//\tconst options = {\n\t//\t\turl: {\n\t//\t\t\tlabel: __( 'Button Link URL' ),\n\t//\t\t\tplaceholder: __( 'Add URL' ),\n\t//\t\t\tautoFocus: true,\n\t//\t\t\tautoFill: true,\n\t//\t\t}\n\t//\t}\n\toptions,\n\t// Specifies whether settings should be wrapped into `BottomSheet`\n\twithBottomSheet,\n\t// Defines buttons which will be displayed below the all options.\n\t// It's an array of objects with following properties:\n\t//\t* label - button title\n\t//\t* onPress - callback that is called on pressing button\n\t// Example:\n\t// \tconst actions = [\n\t//\t\t{\n\t//\t\t\tlabel: __( 'Remove link' ),\n\t//\t\t\tonPress: () => setAttributes({ url: '' }),\n\t//\t\t},\n\t//\t];\n\tactions,\n\t// Specifies whether general `BottomSheet` is opened\n\teditorSidebarOpened,\n\t// Specifies whether icon should be displayed next to the label\n\tshowIcon,\n\tonLinkCellPressed,\n\turlValue,\n\t// Attributes properties\n\turl,\n\tlabel = '',\n\tlinkTarget,\n\trel = '',\n} ) {\n\tconst [ urlInputValue, setUrlInputValue ] = useState( '' );\n\tconst [ labelInputValue, setLabelInputValue ] = useState( '' );\n\tconst [ linkRelInputValue, setLinkRelInputValue ] = useState( '' );\n\tconst onCloseSettingsSheetConsumed = useRef( false );\n\tconst prevEditorSidebarOpenedRef = useRef();\n\n\tconst { onHandleClosingBottomSheet } = useContext( BottomSheetContext );\n\tuseEffect( () => {\n\t\tif ( onHandleClosingBottomSheet ) {\n\t\t\tonHandleClosingBottomSheet( onCloseSettingsSheet );\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ urlInputValue, labelInputValue, linkRelInputValue ] );\n\n\tuseEffect( () => {\n\t\tprevEditorSidebarOpenedRef.current = editorSidebarOpened;\n\t} );\n\tconst prevEditorSidebarOpened = prevEditorSidebarOpenedRef.current;\n\n\tuseEffect( () => {\n\t\tif ( url !== urlInputValue ) {\n\t\t\tsetUrlInputValue( url || '' );\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ url ] );\n\n\tuseEffect( () => {\n\t\tsetLabelInputValue( label || '' );\n\t}, [ label ] );\n\n\tuseEffect( () => {\n\t\tsetLinkRelInputValue( rel || '' );\n\t}, [ rel ] );\n\n\tuseEffect( () => {\n\t\tconst isSettingSheetOpen = isVisible || editorSidebarOpened;\n\t\tif ( isSettingSheetOpen ) {\n\t\t\tonCloseSettingsSheetConsumed.current = false;\n\t\t}\n\n\t\tif ( options.url.autoFill && isSettingSheetOpen && ! url ) {\n\t\t\tgetURLFromClipboard();\n\t\t}\n\n\t\tif ( prevEditorSidebarOpened && ! editorSidebarOpened ) {\n\t\t\tonSetAttributes();\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ editorSidebarOpened, isVisible ] );\n\n\tuseEffect( () => {\n\t\tif ( ! urlValue && onEmptyURL ) {\n\t\t\tonEmptyURL();\n\t\t}\n\n\t\tif ( prependHTTP( urlValue ) !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: prependHTTP( urlValue ),\n\t\t\t} );\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ urlValue ] );\n\n\tconst onChangeURL = useCallback(\n\t\t( value ) => {\n\t\t\tif ( ! value && onEmptyURL ) {\n\t\t\t\tonEmptyURL();\n\t\t\t}\n\t\t\tsetUrlInputValue( value );\n\t\t},\n\t\t[ onEmptyURL ]\n\t);\n\n\tconst onChangeLabel = useCallback( ( value ) => {\n\t\tsetLabelInputValue( value );\n\t}, [] );\n\n\tconst onSetAttributes = useCallback( () => {\n\t\tconst newURL = prependHTTP( urlInputValue );\n\t\tif (\n\t\t\turl !== newURL ||\n\t\t\tlabelInputValue !== label ||\n\t\t\tlinkRelInputValue !== rel\n\t\t) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tlabel: labelInputValue,\n\t\t\t\trel: linkRelInputValue,\n\t\t\t} );\n\t\t}\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ urlInputValue, labelInputValue, linkRelInputValue, setAttributes ] );\n\n\tconst onCloseSettingsSheet = useCallback( () => {\n\t\tif ( onCloseSettingsSheetConsumed.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonCloseSettingsSheetConsumed.current = true;\n\n\t\tonSetAttributes();\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t}, [ onClose, onSetAttributes ] );\n\n\tconst onChangeOpenInNewTab = useCallback(\n\t\t( value ) => {\n\t\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\t\tlet updatedRel = linkRelInputValue;\n\t\t\tif ( newLinkTarget && ! linkRelInputValue ) {\n\t\t\t\tupdatedRel = NEW_TAB_REL;\n\t\t\t} else if ( ! newLinkTarget && linkRelInputValue === NEW_TAB_REL ) {\n\t\t\t\tupdatedRel = undefined;\n\t\t\t}\n\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTarget: newLinkTarget,\n\t\t\t\trel: updatedRel,\n\t\t\t} );\n\t\t},\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ linkRelInputValue ]\n\t);\n\n\tconst onChangeLinkRel = useCallback( ( value ) => {\n\t\tsetLinkRelInputValue( value );\n\t}, [] );\n\n\tasync function getURLFromClipboard() {\n\t\tconst clipboardText = await Clipboard.getString();\n\n\t\tif ( ! clipboardText ) {\n\t\t\treturn;\n\t\t}\n\t\t// Check if pasted text is URL.\n\t\tif ( ! isURL( clipboardText ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( { url: clipboardText } );\n\t}\n\n\tfunction getSettings() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ options.url &&\n\t\t\t\t\t( onLinkCellPressed ? (\n\t\t\t\t\t\t<BottomSheet.LinkCell\n\t\t\t\t\t\t\tshowIcon={ showIcon }\n\t\t\t\t\t\t\tvalue={ url }\n\t\t\t\t\t\t\tvalueMask={ options.url.valueMask }\n\t\t\t\t\t\t\tonPress={ onLinkCellPressed }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\ticon={ showIcon && link }\n\t\t\t\t\t\t\tlabel={ options.url.label }\n\t\t\t\t\t\t\tvalue={ urlInputValue }\n\t\t\t\t\t\t\tvaluePlaceholder={ options.url.placeholder }\n\t\t\t\t\t\t\tonChange={ onChangeURL }\n\t\t\t\t\t\t\tonSubmit={ onCloseSettingsSheet }\n\t\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\t\tautoCorrect={ false }\n\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\tautoFocus={\n\t\t\t\t\t\t\t\tPlatform.OS === 'ios' && options.url.autoFocus\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tkeyboardType=\"url\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ options.linkLabel && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ options.linkLabel.label }\n\t\t\t\t\t\tvalue={ labelInputValue }\n\t\t\t\t\t\tvaluePlaceholder={ options.linkLabel.placeholder }\n\t\t\t\t\t\tonChange={ onChangeLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! urlInputValue && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ options.openInNewTab && (\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\ticon={ showIcon && external }\n\t\t\t\t\t\t\t\tlabel={ options.openInNewTab.label }\n\t\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\tonChange={ onChangeOpenInNewTab }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ options.linkRel && (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\ticon={ showIcon && LinkRelIcon }\n\t\t\t\t\t\t\t\tlabel={ options.linkRel.label }\n\t\t\t\t\t\t\t\tvalue={ linkRelInputValue }\n\t\t\t\t\t\t\t\tvaluePlaceholder={ options.linkRel.placeholder }\n\t\t\t\t\t\t\t\tonChange={ onChangeLinkRel }\n\t\t\t\t\t\t\t\tonSubmit={ onCloseSettingsSheet }\n\t\t\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\t\t\tautoCorrect={ false }\n\t\t\t\t\t\t\t\tkeyboardType=\"default\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( ! withBottomSheet ) {\n\t\treturn getSettings();\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<PanelBody style={ styles.linkSettingsPanel }>\n\t\t\t\t{ getSettings() }\n\t\t\t</PanelBody>\n\t\t\t{ options.footer && (\n\t\t\t\t<PanelBody style={ styles.linkSettingsPanel }>\n\t\t\t\t\t<FooterMessageControl\n\t\t\t\t\t\tlabel={ options.footer.label }\n\t\t\t\t\t\tseparatorType={ options.footer.separatorType }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t) }\n\t\t\t{ actions && <PanelActions actions={ actions } /> }\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { isEditorSidebarOpened } = select( 'core/edit-post' );\n\t\treturn {\n\t\t\teditorSidebarOpened: isEditorSidebarOpened(),\n\t\t};\n\t} ),\n] )( LinkSettings );\n"]}
@@ -52,7 +52,9 @@ const LinkSettingsScreen = props => {
52
52
  return (0, _element.createElement)(_.default, (0, _extends2.default)({}, props, {
53
53
  onLinkCellPressed: props.hasPicker ? onLinkCellPressed : undefined,
54
54
  urlValue: inputValue
55
- }));
55
+ })); // Disable reason: deferring this refactor to the native team.
56
+ // see https://github.com/WordPress/gutenberg/pull/41166
57
+ // eslint-disable-next-line react-hooks/exhaustive-deps
56
58
  }, [props, inputValue, navigation, route]);
57
59
  };
58
60
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/link-settings/link-settings-screen.native.js"],"names":["LinkSettingsScreen","props","navigation","route","url","inputValue","params","onLinkCellPressed","navigate","hasPicker","undefined"],"mappings":";;;;;;;;;AAQA;;;;AALA;;AAUA;;AAbA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAGA,MAAMA,kBAAkB,GAAKC,KAAF,IAAa;AACvC,QAAMC,UAAU,GAAG,4BAAnB;AACA,QAAMC,KAAK,GAAG,uBAAd;AACA,QAAM;AAAEC,IAAAA,GAAG,GAAG;AAAR,MAAeH,KAArB;AACA,QAAM;AAAEI,IAAAA,UAAU,GAAGD;AAAf,MAAuBD,KAAK,CAACG,MAAN,IAAgB,EAA7C;;AAEA,QAAMC,iBAAiB,GAAG,MAAM;AAC/B,QAAKN,KAAK,CAACM,iBAAX,EAA+B;AAC9BN,MAAAA,KAAK,CAACM,iBAAN,CAAyB;AAAEL,QAAAA;AAAF,OAAzB;AACA,KAFD,MAEO;AACNA,MAAAA,UAAU,CAACM,QAAX,CAAqB,YAArB,EAAmC;AAAEH,QAAAA;AAAF,OAAnC;AACA;AACD,GAND;;AAQA,SAAO,sBAAS,MAAM;AACrB,WACC,4BAAC,SAAD,6BACMJ,KADN;AAEC,MAAA,iBAAiB,EAChBA,KAAK,CAACQ,SAAN,GAAkBF,iBAAlB,GAAsCG,SAHxC;AAKC,MAAA,QAAQ,EAAGL;AALZ,OADD;AASA,GAVM,EAUJ,CAAEJ,KAAF,EAASI,UAAT,EAAqBH,UAArB,EAAiCC,KAAjC,CAVI,CAAP;AAWA,CAzBD;;eA2BeH,kB","sourcesContent":["/**\n * External dependencies\n */\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport LinkSettings from './';\n\nconst LinkSettingsScreen = ( props ) => {\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst { url = '' } = props;\n\tconst { inputValue = url } = route.params || {};\n\n\tconst onLinkCellPressed = () => {\n\t\tif ( props.onLinkCellPressed ) {\n\t\t\tprops.onLinkCellPressed( { navigation } );\n\t\t} else {\n\t\t\tnavigation.navigate( 'linkPicker', { inputValue } );\n\t\t}\n\t};\n\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<LinkSettings\n\t\t\t\t{ ...props }\n\t\t\t\tonLinkCellPressed={\n\t\t\t\t\tprops.hasPicker ? onLinkCellPressed : undefined\n\t\t\t\t}\n\t\t\t\turlValue={ inputValue }\n\t\t\t/>\n\t\t);\n\t}, [ props, inputValue, navigation, route ] );\n};\n\nexport default LinkSettingsScreen;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/link-settings/link-settings-screen.native.js"],"names":["LinkSettingsScreen","props","navigation","route","url","inputValue","params","onLinkCellPressed","navigate","hasPicker","undefined"],"mappings":";;;;;;;;;AAQA;;;;AALA;;AAUA;;AAbA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAGA,MAAMA,kBAAkB,GAAKC,KAAF,IAAa;AACvC,QAAMC,UAAU,GAAG,4BAAnB;AACA,QAAMC,KAAK,GAAG,uBAAd;AACA,QAAM;AAAEC,IAAAA,GAAG,GAAG;AAAR,MAAeH,KAArB;AACA,QAAM;AAAEI,IAAAA,UAAU,GAAGD;AAAf,MAAuBD,KAAK,CAACG,MAAN,IAAgB,EAA7C;;AAEA,QAAMC,iBAAiB,GAAG,MAAM;AAC/B,QAAKN,KAAK,CAACM,iBAAX,EAA+B;AAC9BN,MAAAA,KAAK,CAACM,iBAAN,CAAyB;AAAEL,QAAAA;AAAF,OAAzB;AACA,KAFD,MAEO;AACNA,MAAAA,UAAU,CAACM,QAAX,CAAqB,YAArB,EAAmC;AAAEH,QAAAA;AAAF,OAAnC;AACA;AACD,GAND;;AAQA,SAAO,sBAAS,MAAM;AACrB,WACC,4BAAC,SAAD,6BACMJ,KADN;AAEC,MAAA,iBAAiB,EAChBA,KAAK,CAACQ,SAAN,GAAkBF,iBAAlB,GAAsCG,SAHxC;AAKC,MAAA,QAAQ,EAAGL;AALZ,OADD,CADqB,CAUrB;AACA;AACA;AACA,GAbM,EAaJ,CAAEJ,KAAF,EAASI,UAAT,EAAqBH,UAArB,EAAiCC,KAAjC,CAbI,CAAP;AAcA,CA5BD;;eA8BeH,kB","sourcesContent":["/**\n * External dependencies\n */\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport LinkSettings from './';\n\nconst LinkSettingsScreen = ( props ) => {\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst { url = '' } = props;\n\tconst { inputValue = url } = route.params || {};\n\n\tconst onLinkCellPressed = () => {\n\t\tif ( props.onLinkCellPressed ) {\n\t\t\tprops.onLinkCellPressed( { navigation } );\n\t\t} else {\n\t\t\tnavigation.navigate( 'linkPicker', { inputValue } );\n\t\t}\n\t};\n\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<LinkSettings\n\t\t\t\t{ ...props }\n\t\t\t\tonLinkCellPressed={\n\t\t\t\t\tprops.hasPicker ? onLinkCellPressed : undefined\n\t\t\t\t}\n\t\t\t\turlValue={ inputValue }\n\t\t\t/>\n\t\t);\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ props, inputValue, navigation, route ] );\n};\n\nexport default LinkSettingsScreen;\n"]}
@@ -78,10 +78,14 @@ const SegmentedControls = _ref2 => {
78
78
  const [positionAnimationValue] = (0, _element.useState)(new _reactNative.Animated.Value(0));
79
79
  (0, _element.useEffect)(() => {
80
80
  setActiveSegmentIndex(selectedSegmentIndex);
81
- segmentHandler(segments[selectedSegmentIndex]);
81
+ segmentHandler(segments[selectedSegmentIndex]); // Disable reason: deferring this refactor to the native team.
82
+ // see https://github.com/WordPress/gutenberg/pull/41166
83
+ // eslint-disable-next-line react-hooks/exhaustive-deps
82
84
  }, []);
83
85
  (0, _element.useEffect)(() => {
84
- positionAnimationValue.setValue(calculateEndValue(activeSegmentIndex));
86
+ positionAnimationValue.setValue(calculateEndValue(activeSegmentIndex)); // Disable reason: deferring this refactor to the native team.
87
+ // see https://github.com/WordPress/gutenberg/pull/41166
88
+ // eslint-disable-next-line react-hooks/exhaustive-deps
85
89
  }, [segmentsDimensions]);
86
90
  const containerStyle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.container, _style.default.containerDark);
87
91
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/segmented-control/index.native.js"],"names":["ANIMATION_DURATION","isIOS","Platform","OS","Segment","isSelected","title","onPress","onLayout","props","isSelectedIOS","segmentStyle","styles","segment","segmentIOS","textStyle","buttonTextDefault","buttonTextDefaultDark","selectedTextStyle","buttonTextSelected","buttonTextSelectedDark","shadowStyle","shadowIOS","SegmentedControls","segments","segmentHandler","selectedIndex","addonLeft","addonRight","selectedSegmentIndex","activeSegmentIndex","setActiveSegmentIndex","segmentsDimensions","setSegmentsDimensions","width","height","positionAnimationValue","Animated","Value","setValue","calculateEndValue","containerStyle","container","containerDark","performSwatchAnimation","index","timing","toValue","duration","easing","Easing","ease","useNativeDriver","start","paddingLeft","offset","containerIOS","widths","Object","values","map","dimension","widthsDistance","slice","widthsDistanceSum","reduce","sum","n","endValue","onHandlePress","segmentOnLayout","event","nativeEvent","layout","selectedStyle","selected","selectedDark","outlineStyle","outline","outlineIOS","row","flex","length","left"],"mappings":";;;;;;;;;AAcA;;;;AAXA;;AAYA;;AAKA;;AACA;;AArBA;AACA;AACA;;AASA;AACA;AACA;;AAIA;AACA;AACA;AAIA,MAAMA,kBAAkB,GAAG,GAA3B;AAEA,MAAMC,KAAK,GAAGC,sBAASC,EAAT,KAAgB,KAA9B;;AAEA,MAAMC,OAAO,GAAG,QAA0D;AAAA,MAAxD;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA,OAArB;AAA8BC,IAAAA,QAA9B;AAAwC,OAAGC;AAA3C,GAAwD;AACzE,QAAMC,aAAa,GAAGT,KAAK,IAAII,UAA/B;AAEA,QAAMM,YAAY,GAAG,CAAEC,eAAOC,OAAT,EAAkBZ,KAAK,IAAIW,eAAOE,UAAlC,CAArB;AAEA,QAAMC,SAAS,GAAG,2CACjBH,eAAOI,iBADU,EAEjBJ,eAAOK,qBAFU,CAAlB;AAIA,QAAMC,iBAAiB,GAAG,2CACzBN,eAAOO,kBADkB,EAEzBP,eAAOQ,sBAFkB,CAA1B;AAIA,QAAMC,WAAW,GAAG,2CAA8BT,eAAOU,SAArC,EAAgD,EAAhD,CAApB;AAEA,SACC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGZ,aAAa,IAAIW;AAA/B,KACC,4BAAC,qCAAD;AAA0B,IAAA,OAAO,EAAGd;AAApC,KACC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGI,YAAd;AAA6B,IAAA,QAAQ,EAAGH;AAAxC,KAAwDC,KAAxD,GACC,4BAAC,iBAAD;AACC,IAAA,KAAK,EAAG,CAAEM,SAAF,EAAaV,UAAU,IAAIa,iBAA3B,CADT;AAEC,IAAA,qBAAqB,EAAG;AAFzB,KAIGZ,KAJH,CADD,CADD,CADD,CADD;AAcA,CA7BD;;AA+BA,MAAMiB,iBAAiB,GAAG,SAMnB;AAAA,MANqB;AAC3BC,IAAAA,QAD2B;AAE3BC,IAAAA,cAF2B;AAG3BC,IAAAA,aAH2B;AAI3BC,IAAAA,SAJ2B;AAK3BC,IAAAA;AAL2B,GAMrB;AACN,QAAMC,oBAAoB,GAAGH,aAAa,IAAI,CAA9C;AACA,QAAM,CAAEI,kBAAF,EAAsBC,qBAAtB,IACL,uBAAUF,oBAAV,CADD;AAEA,QAAM,CAAEG,kBAAF,EAAsBC,qBAAtB,IAAgD,uBAAU;AAC/D,KAAEH,kBAAF,GAAwB;AAAEI,MAAAA,KAAK,EAAE,CAAT;AAAYC,MAAAA,MAAM,EAAE;AAApB;AADuC,GAAV,CAAtD;AAGA,QAAM,CAAEC,sBAAF,IAA6B,uBAAU,IAAIC,sBAASC,KAAb,CAAoB,CAApB,CAAV,CAAnC;AAEA,0BAAW,MAAM;AAChBP,IAAAA,qBAAqB,CAAEF,oBAAF,CAArB;AACAJ,IAAAA,cAAc,CAAED,QAAQ,CAAEK,oBAAF,CAAV,CAAd;AACA,GAHD,EAGG,EAHH;AAKA,0BAAW,MAAM;AAChBO,IAAAA,sBAAsB,CAACG,QAAvB,CACCC,iBAAiB,CAAEV,kBAAF,CADlB;AAGA,GAJD,EAIG,CAAEE,kBAAF,CAJH;AAMA,QAAMS,cAAc,GAAG,2CACtB7B,eAAO8B,SADe,EAEtB9B,eAAO+B,aAFe,CAAvB;;AAKA,WAASC,sBAAT,CAAiCC,KAAjC,EAAyC;AACxCR,0BAASS,MAAT,CAAiBV,sBAAjB,EAAyC;AACxCW,MAAAA,OAAO,EAAEP,iBAAiB,CAAEK,KAAF,CADc;AAExCG,MAAAA,QAAQ,EAAEhD,kBAF8B;AAGxCiD,MAAAA,MAAM,EAAEC,oBAAOC,IAHyB;AAIxCC,MAAAA,eAAe,EAAE;AAJuB,KAAzC,EAKIC,KALJ;AAMA;;AAED,WAASb,iBAAT,CAA4BK,KAA5B,EAAoC;AACnC,UAAM;AAAES,MAAAA,WAAW,EAAEC;AAAf,QAA0BtD,KAAK,GAClCW,eAAO4C,YAD2B,GAElC5C,eAAO8B,SAFV;AAGA,UAAMe,MAAM,GAAGC,MAAM,CAACC,MAAP,CAAe3B,kBAAf,EAAoC4B,GAApC,CACZC,SAAF,IAAiBA,SAAS,CAAC3B,KADb,CAAf;AAGA,UAAM4B,cAAc,GAAGL,MAAM,CAACM,KAAP,CAAc,CAAd,EAAiBlB,KAAjB,CAAvB;AACA,UAAMmB,iBAAiB,GAAGF,cAAc,CAACG,MAAf,CACzB,CAAEC,GAAF,EAAOC,CAAP,KAAcD,GAAG,GAAGC,CADK,EAEzB,CAFyB,CAA1B;AAKA,UAAMC,QAAQ,GAAGvB,KAAK,KAAK,CAAV,GAAc,CAAd,GAAkBmB,iBAAnC;AACA,WAAOI,QAAQ,GAAGb,MAAlB;AACA;;AAED,WAASc,aAAT,CAAwBxD,OAAxB,EAAiCgC,KAAjC,EAAyC;AACxC,iDAAwB7C,kBAAxB;AACA+B,IAAAA,qBAAqB,CAAEc,KAAF,CAArB;AACApB,IAAAA,cAAc,CAAEZ,OAAF,CAAd;AACA+B,IAAAA,sBAAsB,CAAEC,KAAF,CAAtB;AACA;;AAED,WAASyB,eAAT,CAA0BC,KAA1B,EAAiC1B,KAAjC,EAAyC;AACxC,UAAM;AAAEX,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAoBoC,KAAK,CAACC,WAAN,CAAkBC,MAA5C;AAEAxC,IAAAA,qBAAqB,CAAE,EACtB,GAAGD,kBADmB;AAEtB,OAAEa,KAAF,GAAW;AAAEX,QAAAA,KAAF;AAASC,QAAAA;AAAT;AAFW,KAAF,CAArB;AAIA;;AAED,QAAMuC,aAAa,GAAG,2CACrB9D,eAAO+D,QADc,EAErB/D,eAAOgE,YAFc,CAAtB;AAKA,QAAM1C,KAAK,GAAGF,kBAAkB,CAAEF,kBAAF,CAAlB,CAAyCI,KAAvD;AACA,QAAMC,MAAM,GAAGH,kBAAkB,CAAEF,kBAAF,CAAlB,CAAyCK,MAAxD;AAEA,QAAM0C,YAAY,GAAG,CAAEjE,eAAOkE,OAAT,EAAkB7E,KAAK,IAAIW,eAAOmE,UAAlC,CAArB;AAEA,SACC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGnE,eAAOoE;AAArB,KACC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGpE,eAAOqE;AAArB,KAA8BtD,SAA9B,CADD,EAEC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAG,CAAEc,cAAF,EAAkBxC,KAAK,IAAIW,eAAO4C,YAAlC;AAAd,KACGhC,QAAQ,CAACoC,GAAT,CAAc,CAAE/C,OAAF,EAAWgC,KAAX,KAAsB;AACrC,WACC,4BAAC,OAAD;AACC,MAAA,KAAK,EAAGhC,OADT;AAEC,MAAA,OAAO,EAAG,MAAMwD,aAAa,CAAExD,OAAF,EAAWgC,KAAX,CAF9B;AAGC,MAAA,UAAU,EAAGf,kBAAkB,KAAKe,KAHrC;AAIC,MAAA,GAAG,EAAGA,KAJP;AAKC,MAAA,QAAQ,EAAK0B,KAAF,IACVD,eAAe,CAAEC,KAAF,EAAS1B,KAAT,CANjB;AAQC,MAAA,kBAAkB,EAAG;AACpB8B,QAAAA,QAAQ,EAAE7C,kBAAkB,KAAKe;AADb,OARtB;AAWC,MAAA,iBAAiB,EAAG,QAXrB;AAYC,MAAA,kBAAkB,EAAGhC,OAZtB;AAaC,MAAA,iBAAiB,EAAI,GAAGgC,KAAK,GAAG,CAAG,OAClCrB,QAAQ,CAAC0D,MACT;AAfF,MADD;AAmBA,GApBC,CADH,EAsBC,4BAAC,qBAAD,CAAU,IAAV;AACC,IAAA,KAAK,EAAG,CACP;AACChD,MAAAA,KADD;AAECiD,MAAAA,IAAI,EAAE/C,sBAFP;AAGCD,MAAAA;AAHD,KADO,EAMPuC,aANO,EAOPG,YAPO;AADT,IAtBD,CAFD,EAoCC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGjE,eAAOqE;AAArB,KAA8BrD,UAA9B,CApCD,CADD;AAwCA,CA3HD;;eA6HeL,iB","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tText,\n\tPlatform,\n\tAnimated,\n\tEasing,\n} from 'react-native';\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { performLayoutAnimation } from '../layout-animation';\nimport styles from './style.scss';\n\nconst ANIMATION_DURATION = 200;\n\nconst isIOS = Platform.OS === 'ios';\n\nconst Segment = ( { isSelected, title, onPress, onLayout, ...props } ) => {\n\tconst isSelectedIOS = isIOS && isSelected;\n\n\tconst segmentStyle = [ styles.segment, isIOS && styles.segmentIOS ];\n\n\tconst textStyle = usePreferredColorSchemeStyle(\n\t\tstyles.buttonTextDefault,\n\t\tstyles.buttonTextDefaultDark\n\t);\n\tconst selectedTextStyle = usePreferredColorSchemeStyle(\n\t\tstyles.buttonTextSelected,\n\t\tstyles.buttonTextSelectedDark\n\t);\n\tconst shadowStyle = usePreferredColorSchemeStyle( styles.shadowIOS, {} );\n\n\treturn (\n\t\t<View style={ isSelectedIOS && shadowStyle }>\n\t\t\t<TouchableWithoutFeedback onPress={ onPress }>\n\t\t\t\t<View style={ segmentStyle } onLayout={ onLayout } { ...props }>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={ [ textStyle, isSelected && selectedTextStyle ] }\n\t\t\t\t\t\tmaxFontSizeMultiplier={ 2 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t</View>\n\t);\n};\n\nconst SegmentedControls = ( {\n\tsegments,\n\tsegmentHandler,\n\tselectedIndex,\n\taddonLeft,\n\taddonRight,\n} ) => {\n\tconst selectedSegmentIndex = selectedIndex || 0;\n\tconst [ activeSegmentIndex, setActiveSegmentIndex ] =\n\t\tuseState( selectedSegmentIndex );\n\tconst [ segmentsDimensions, setSegmentsDimensions ] = useState( {\n\t\t[ activeSegmentIndex ]: { width: 0, height: 0 },\n\t} );\n\tconst [ positionAnimationValue ] = useState( new Animated.Value( 0 ) );\n\n\tuseEffect( () => {\n\t\tsetActiveSegmentIndex( selectedSegmentIndex );\n\t\tsegmentHandler( segments[ selectedSegmentIndex ] );\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tpositionAnimationValue.setValue(\n\t\t\tcalculateEndValue( activeSegmentIndex )\n\t\t);\n\t}, [ segmentsDimensions ] );\n\n\tconst containerStyle = usePreferredColorSchemeStyle(\n\t\tstyles.container,\n\t\tstyles.containerDark\n\t);\n\n\tfunction performSwatchAnimation( index ) {\n\t\tAnimated.timing( positionAnimationValue, {\n\t\t\ttoValue: calculateEndValue( index ),\n\t\t\tduration: ANIMATION_DURATION,\n\t\t\teasing: Easing.ease,\n\t\t\tuseNativeDriver: false,\n\t\t} ).start();\n\t}\n\n\tfunction calculateEndValue( index ) {\n\t\tconst { paddingLeft: offset } = isIOS\n\t\t\t? styles.containerIOS\n\t\t\t: styles.container;\n\t\tconst widths = Object.values( segmentsDimensions ).map(\n\t\t\t( dimension ) => dimension.width\n\t\t);\n\t\tconst widthsDistance = widths.slice( 0, index );\n\t\tconst widthsDistanceSum = widthsDistance.reduce(\n\t\t\t( sum, n ) => sum + n,\n\t\t\t0\n\t\t);\n\n\t\tconst endValue = index === 0 ? 0 : widthsDistanceSum;\n\t\treturn endValue + offset;\n\t}\n\n\tfunction onHandlePress( segment, index ) {\n\t\tperformLayoutAnimation( ANIMATION_DURATION );\n\t\tsetActiveSegmentIndex( index );\n\t\tsegmentHandler( segment );\n\t\tperformSwatchAnimation( index );\n\t}\n\n\tfunction segmentOnLayout( event, index ) {\n\t\tconst { width, height } = event.nativeEvent.layout;\n\n\t\tsetSegmentsDimensions( {\n\t\t\t...segmentsDimensions,\n\t\t\t[ index ]: { width, height },\n\t\t} );\n\t}\n\n\tconst selectedStyle = usePreferredColorSchemeStyle(\n\t\tstyles.selected,\n\t\tstyles.selectedDark\n\t);\n\n\tconst width = segmentsDimensions[ activeSegmentIndex ].width;\n\tconst height = segmentsDimensions[ activeSegmentIndex ].height;\n\n\tconst outlineStyle = [ styles.outline, isIOS && styles.outlineIOS ];\n\n\treturn (\n\t\t<View style={ styles.row }>\n\t\t\t<View style={ styles.flex }>{ addonLeft }</View>\n\t\t\t<View style={ [ containerStyle, isIOS && styles.containerIOS ] }>\n\t\t\t\t{ segments.map( ( segment, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Segment\n\t\t\t\t\t\t\ttitle={ segment }\n\t\t\t\t\t\t\tonPress={ () => onHandlePress( segment, index ) }\n\t\t\t\t\t\t\tisSelected={ activeSegmentIndex === index }\n\t\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\t\tonLayout={ ( event ) =>\n\t\t\t\t\t\t\t\tsegmentOnLayout( event, index )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taccessibilityState={ {\n\t\t\t\t\t\t\t\tselected: activeSegmentIndex === index,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taccessibilityRole={ 'button' }\n\t\t\t\t\t\t\taccessibilityLabel={ segment }\n\t\t\t\t\t\t\taccessibilityHint={ `${ index + 1 } on ${\n\t\t\t\t\t\t\t\tsegments.length\n\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t<Animated.View\n\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tleft: positionAnimationValue,\n\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tselectedStyle,\n\t\t\t\t\t\toutlineStyle,\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t\t<View style={ styles.flex }>{ addonRight }</View>\n\t\t</View>\n\t);\n};\n\nexport default SegmentedControls;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/segmented-control/index.native.js"],"names":["ANIMATION_DURATION","isIOS","Platform","OS","Segment","isSelected","title","onPress","onLayout","props","isSelectedIOS","segmentStyle","styles","segment","segmentIOS","textStyle","buttonTextDefault","buttonTextDefaultDark","selectedTextStyle","buttonTextSelected","buttonTextSelectedDark","shadowStyle","shadowIOS","SegmentedControls","segments","segmentHandler","selectedIndex","addonLeft","addonRight","selectedSegmentIndex","activeSegmentIndex","setActiveSegmentIndex","segmentsDimensions","setSegmentsDimensions","width","height","positionAnimationValue","Animated","Value","setValue","calculateEndValue","containerStyle","container","containerDark","performSwatchAnimation","index","timing","toValue","duration","easing","Easing","ease","useNativeDriver","start","paddingLeft","offset","containerIOS","widths","Object","values","map","dimension","widthsDistance","slice","widthsDistanceSum","reduce","sum","n","endValue","onHandlePress","segmentOnLayout","event","nativeEvent","layout","selectedStyle","selected","selectedDark","outlineStyle","outline","outlineIOS","row","flex","length","left"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tText,\n\tPlatform,\n\tAnimated,\n\tEasing,\n} from 'react-native';\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { performLayoutAnimation } from '../layout-animation';\nimport styles from './style.scss';\n\nconst ANIMATION_DURATION = 200;\n\nconst isIOS = Platform.OS === 'ios';\n\nconst Segment = ( { isSelected, title, onPress, onLayout, ...props } ) => {\n\tconst isSelectedIOS = isIOS && isSelected;\n\n\tconst segmentStyle = [ styles.segment, isIOS && styles.segmentIOS ];\n\n\tconst textStyle = usePreferredColorSchemeStyle(\n\t\tstyles.buttonTextDefault,\n\t\tstyles.buttonTextDefaultDark\n\t);\n\tconst selectedTextStyle = usePreferredColorSchemeStyle(\n\t\tstyles.buttonTextSelected,\n\t\tstyles.buttonTextSelectedDark\n\t);\n\tconst shadowStyle = usePreferredColorSchemeStyle( styles.shadowIOS, {} );\n\n\treturn (\n\t\t<View style={ isSelectedIOS && shadowStyle }>\n\t\t\t<TouchableWithoutFeedback onPress={ onPress }>\n\t\t\t\t<View style={ segmentStyle } onLayout={ onLayout } { ...props }>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={ [ textStyle, isSelected && selectedTextStyle ] }\n\t\t\t\t\t\tmaxFontSizeMultiplier={ 2 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t</View>\n\t);\n};\n\nconst SegmentedControls = ( {\n\tsegments,\n\tsegmentHandler,\n\tselectedIndex,\n\taddonLeft,\n\taddonRight,\n} ) => {\n\tconst selectedSegmentIndex = selectedIndex || 0;\n\tconst [ activeSegmentIndex, setActiveSegmentIndex ] =\n\t\tuseState( selectedSegmentIndex );\n\tconst [ segmentsDimensions, setSegmentsDimensions ] = useState( {\n\t\t[ activeSegmentIndex ]: { width: 0, height: 0 },\n\t} );\n\tconst [ positionAnimationValue ] = useState( new Animated.Value( 0 ) );\n\n\tuseEffect( () => {\n\t\tsetActiveSegmentIndex( selectedSegmentIndex );\n\t\tsegmentHandler( segments[ selectedSegmentIndex ] );\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tpositionAnimationValue.setValue(\n\t\t\tcalculateEndValue( activeSegmentIndex )\n\t\t);\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ segmentsDimensions ] );\n\n\tconst containerStyle = usePreferredColorSchemeStyle(\n\t\tstyles.container,\n\t\tstyles.containerDark\n\t);\n\n\tfunction performSwatchAnimation( index ) {\n\t\tAnimated.timing( positionAnimationValue, {\n\t\t\ttoValue: calculateEndValue( index ),\n\t\t\tduration: ANIMATION_DURATION,\n\t\t\teasing: Easing.ease,\n\t\t\tuseNativeDriver: false,\n\t\t} ).start();\n\t}\n\n\tfunction calculateEndValue( index ) {\n\t\tconst { paddingLeft: offset } = isIOS\n\t\t\t? styles.containerIOS\n\t\t\t: styles.container;\n\t\tconst widths = Object.values( segmentsDimensions ).map(\n\t\t\t( dimension ) => dimension.width\n\t\t);\n\t\tconst widthsDistance = widths.slice( 0, index );\n\t\tconst widthsDistanceSum = widthsDistance.reduce(\n\t\t\t( sum, n ) => sum + n,\n\t\t\t0\n\t\t);\n\n\t\tconst endValue = index === 0 ? 0 : widthsDistanceSum;\n\t\treturn endValue + offset;\n\t}\n\n\tfunction onHandlePress( segment, index ) {\n\t\tperformLayoutAnimation( ANIMATION_DURATION );\n\t\tsetActiveSegmentIndex( index );\n\t\tsegmentHandler( segment );\n\t\tperformSwatchAnimation( index );\n\t}\n\n\tfunction segmentOnLayout( event, index ) {\n\t\tconst { width, height } = event.nativeEvent.layout;\n\n\t\tsetSegmentsDimensions( {\n\t\t\t...segmentsDimensions,\n\t\t\t[ index ]: { width, height },\n\t\t} );\n\t}\n\n\tconst selectedStyle = usePreferredColorSchemeStyle(\n\t\tstyles.selected,\n\t\tstyles.selectedDark\n\t);\n\n\tconst width = segmentsDimensions[ activeSegmentIndex ].width;\n\tconst height = segmentsDimensions[ activeSegmentIndex ].height;\n\n\tconst outlineStyle = [ styles.outline, isIOS && styles.outlineIOS ];\n\n\treturn (\n\t\t<View style={ styles.row }>\n\t\t\t<View style={ styles.flex }>{ addonLeft }</View>\n\t\t\t<View style={ [ containerStyle, isIOS && styles.containerIOS ] }>\n\t\t\t\t{ segments.map( ( segment, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Segment\n\t\t\t\t\t\t\ttitle={ segment }\n\t\t\t\t\t\t\tonPress={ () => onHandlePress( segment, index ) }\n\t\t\t\t\t\t\tisSelected={ activeSegmentIndex === index }\n\t\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\t\tonLayout={ ( event ) =>\n\t\t\t\t\t\t\t\tsegmentOnLayout( event, index )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taccessibilityState={ {\n\t\t\t\t\t\t\t\tselected: activeSegmentIndex === index,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taccessibilityRole={ 'button' }\n\t\t\t\t\t\t\taccessibilityLabel={ segment }\n\t\t\t\t\t\t\taccessibilityHint={ `${ index + 1 } on ${\n\t\t\t\t\t\t\t\tsegments.length\n\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t<Animated.View\n\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tleft: positionAnimationValue,\n\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tselectedStyle,\n\t\t\t\t\t\toutlineStyle,\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t\t<View style={ styles.flex }>{ addonRight }</View>\n\t\t</View>\n\t);\n};\n\nexport default SegmentedControls;\n"]}
@@ -95,7 +95,9 @@ const useConvertUnitToMobile = (value, unit) => {
95
95
 
96
96
  return () => {
97
97
  dimensionsChangeSubscription.remove();
98
- };
98
+ }; // Disable reason: deferring this refactor to the native team.
99
+ // see https://github.com/WordPress/gutenberg/pull/41166
100
+ // eslint-disable-next-line react-hooks/exhaustive-deps
99
101
  }, []);
100
102
  const onDimensionsChange = (0, _element.useCallback)(_ref2 => {
101
103
  let {
@@ -108,7 +110,9 @@ const useConvertUnitToMobile = (value, unit) => {
108
110
  valueToConvert,
109
111
  valueUnit
110
112
  } = getValueAndUnit(value, unit) || {};
111
- return convertUnitToMobile(windowSizes, styles, valueToConvert, valueUnit);
113
+ return convertUnitToMobile(windowSizes, styles, valueToConvert, valueUnit); // Disable reason: deferring this refactor to the native team.
114
+ // see https://github.com/WordPress/gutenberg/pull/41166
115
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
116
  }, [windowSizes, value, unit]);
113
117
  };
114
118
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/mobile/utils/use-unit-converter-to-mobile.native.js"],"names":["getValueAndUnit","value","unit","regex","splitValue","match","filter","v","valueToConvert","valueUnit","undefined","convertUnitToMobile","containerSize","globalStyles","width","height","fontSize","Number","vw","Math","round","vh","useConvertUnitToMobile","styles","GlobalStylesContext","windowSizes","setWindowSizes","Dimensions","get","dimensionsChangeSubscription","addEventListener","onDimensionsChange","remove","window"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Dimensions } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport GlobalStylesContext from '../global-styles-context';\n\nconst getValueAndUnit = ( value, unit ) => {\n\tconst regex = /(\\d+\\.?\\d*)(.*)/;\n\n\tconst splitValue = `${ value }`\n\t\t?.match( regex )\n\t\t?.filter( ( v ) => v !== '' );\n\n\tif ( splitValue ) {\n\t\treturn {\n\t\t\tvalueToConvert: splitValue[ 1 ],\n\t\t\tvalueUnit: unit || splitValue[ 2 ],\n\t\t};\n\t}\n\treturn undefined;\n};\n\nconst convertUnitToMobile = ( containerSize, globalStyles, value, unit ) => {\n\tconst { width, height } = containerSize;\n\tconst { valueToConvert, valueUnit } = getValueAndUnit( value, unit ) || {};\n\tconst { fontSize = 16 } = globalStyles || {};\n\n\tif ( valueToConvert === undefined ) {\n\t\treturn undefined;\n\t}\n\n\tswitch ( valueUnit ) {\n\t\tcase 'rem':\n\t\tcase 'em':\n\t\t\treturn valueToConvert * fontSize;\n\t\tcase '%':\n\t\t\treturn Number( valueToConvert / 100 ) * width;\n\t\tcase 'px':\n\t\t\treturn Number( valueToConvert );\n\t\tcase 'vw':\n\t\t\tconst vw = width / 100;\n\t\t\treturn Math.round( valueToConvert * vw );\n\t\tcase 'vh':\n\t\t\tconst vh = height / 100;\n\t\t\treturn Math.round( valueToConvert * vh );\n\t\tdefault:\n\t\t\treturn Number( valueToConvert / 100 ) * width;\n\t}\n};\n\nconst useConvertUnitToMobile = ( value, unit ) => {\n\tconst { globalStyles: styles } = useContext( GlobalStylesContext );\n\tconst [ windowSizes, setWindowSizes ] = useState(\n\t\tDimensions.get( 'window' )\n\t);\n\n\tuseEffect( () => {\n\t\tconst dimensionsChangeSubscription = Dimensions.addEventListener(\n\t\t\t'change',\n\t\t\tonDimensionsChange\n\t\t);\n\n\t\treturn () => {\n\t\t\tdimensionsChangeSubscription.remove();\n\t\t};\n\t}, [] );\n\n\tconst onDimensionsChange = useCallback( ( { window } ) => {\n\t\tsetWindowSizes( window );\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst { valueToConvert, valueUnit } =\n\t\t\tgetValueAndUnit( value, unit ) || {};\n\n\t\treturn convertUnitToMobile(\n\t\t\twindowSizes,\n\t\t\tstyles,\n\t\t\tvalueToConvert,\n\t\t\tvalueUnit\n\t\t);\n\t}, [ windowSizes, value, unit ] );\n};\n\nexport { convertUnitToMobile, useConvertUnitToMobile, getValueAndUnit };\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/mobile/utils/use-unit-converter-to-mobile.native.js"],"names":["getValueAndUnit","value","unit","regex","splitValue","match","filter","v","valueToConvert","valueUnit","undefined","convertUnitToMobile","containerSize","globalStyles","width","height","fontSize","Number","vw","Math","round","vh","useConvertUnitToMobile","styles","GlobalStylesContext","windowSizes","setWindowSizes","Dimensions","get","dimensionsChangeSubscription","addEventListener","onDimensionsChange","remove","window"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Dimensions } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport GlobalStylesContext from '../global-styles-context';\n\nconst getValueAndUnit = ( value, unit ) => {\n\tconst regex = /(\\d+\\.?\\d*)(.*)/;\n\n\tconst splitValue = `${ value }`\n\t\t?.match( regex )\n\t\t?.filter( ( v ) => v !== '' );\n\n\tif ( splitValue ) {\n\t\treturn {\n\t\t\tvalueToConvert: splitValue[ 1 ],\n\t\t\tvalueUnit: unit || splitValue[ 2 ],\n\t\t};\n\t}\n\treturn undefined;\n};\n\nconst convertUnitToMobile = ( containerSize, globalStyles, value, unit ) => {\n\tconst { width, height } = containerSize;\n\tconst { valueToConvert, valueUnit } = getValueAndUnit( value, unit ) || {};\n\tconst { fontSize = 16 } = globalStyles || {};\n\n\tif ( valueToConvert === undefined ) {\n\t\treturn undefined;\n\t}\n\n\tswitch ( valueUnit ) {\n\t\tcase 'rem':\n\t\tcase 'em':\n\t\t\treturn valueToConvert * fontSize;\n\t\tcase '%':\n\t\t\treturn Number( valueToConvert / 100 ) * width;\n\t\tcase 'px':\n\t\t\treturn Number( valueToConvert );\n\t\tcase 'vw':\n\t\t\tconst vw = width / 100;\n\t\t\treturn Math.round( valueToConvert * vw );\n\t\tcase 'vh':\n\t\t\tconst vh = height / 100;\n\t\t\treturn Math.round( valueToConvert * vh );\n\t\tdefault:\n\t\t\treturn Number( valueToConvert / 100 ) * width;\n\t}\n};\n\nconst useConvertUnitToMobile = ( value, unit ) => {\n\tconst { globalStyles: styles } = useContext( GlobalStylesContext );\n\tconst [ windowSizes, setWindowSizes ] = useState(\n\t\tDimensions.get( 'window' )\n\t);\n\n\tuseEffect( () => {\n\t\tconst dimensionsChangeSubscription = Dimensions.addEventListener(\n\t\t\t'change',\n\t\t\tonDimensionsChange\n\t\t);\n\n\t\treturn () => {\n\t\t\tdimensionsChangeSubscription.remove();\n\t\t};\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst onDimensionsChange = useCallback( ( { window } ) => {\n\t\tsetWindowSizes( window );\n\t}, [] );\n\n\treturn useMemo( () => {\n\t\tconst { valueToConvert, valueUnit } =\n\t\t\tgetValueAndUnit( value, unit ) || {};\n\n\t\treturn convertUnitToMobile(\n\t\t\twindowSizes,\n\t\t\tstyles,\n\t\t\tvalueToConvert,\n\t\t\tvalueUnit\n\t\t);\n\t\t// Disable reason: deferring this refactor to the native team.\n\t\t// see https://github.com/WordPress/gutenberg/pull/41166\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ windowSizes, value, unit ] );\n};\n\nexport { convertUnitToMobile, useConvertUnitToMobile, getValueAndUnit };\n"]}
@@ -45,7 +45,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
45
45
  } : {
46
46
  name: "1ulogbc-classes",
47
47
  styles: "overflow-x:auto;max-height:100%;label:classes;",
48
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkB3b3JkcHJlc3MvY29tcG9uZW50cy9zcmMvbmF2aWdhdG9yL25hdmlnYXRvci1zY3JlZW4vY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErREkiLCJmaWxlIjoiQHdvcmRwcmVzcy9jb21wb25lbnRzL3NyYy9uYXZpZ2F0b3IvbmF2aWdhdG9yLXNjcmVlbi9jb21wb25lbnQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHR5cGUgeyBGb3J3YXJkZWRSZWYgfSBmcm9tICdyZWFjdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyBtb3Rpb24sIE1vdGlvblByb3BzIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBmb2N1cyB9IGZyb20gJ0B3b3JkcHJlc3MvZG9tJztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAnQHdvcmRwcmVzcy9lbGVtZW50JztcbmltcG9ydCB7XG5cdHVzZVJlZHVjZWRNb3Rpb24sXG5cdHVzZU1lcmdlUmVmcyxcblx0dXNlUHJldmlvdXMsXG59IGZyb20gJ0B3b3JkcHJlc3MvY29tcG9zZSc7XG5pbXBvcnQgeyBpc1JUTCB9IGZyb20gJ0B3b3JkcHJlc3MvaTE4bic7XG5pbXBvcnQgeyBlc2NhcGVBdHRyaWJ1dGUgfSBmcm9tICdAd29yZHByZXNzL2VzY2FwZS1odG1sJztcblxuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHtcblx0Y29udGV4dENvbm5lY3QsXG5cdHVzZUNvbnRleHRTeXN0ZW0sXG5cdFdvcmRQcmVzc0NvbXBvbmVudFByb3BzLFxufSBmcm9tICcuLi8uLi91aS9jb250ZXh0JztcbmltcG9ydCB7IHVzZUN4IH0gZnJvbSAnLi4vLi4vdXRpbHMvaG9va3MvdXNlLWN4JztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi8uLi92aWV3JztcbmltcG9ydCB7IE5hdmlnYXRvckNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgTmF2aWdhdG9yU2NyZWVuUHJvcHMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGFuaW1hdGlvbkVudGVyRGVsYXkgPSAwO1xuY29uc3QgYW5pbWF0aW9uRW50ZXJEdXJhdGlvbiA9IDAuMTQ7XG5jb25zdCBhbmltYXRpb25FeGl0RHVyYXRpb24gPSAwLjE0O1xuY29uc3QgYW5pbWF0aW9uRXhpdERlbGF5ID0gMDtcblxuLy8gUHJvcHMgc3BlY2lmaWMgdG8gYGZyYW1lci1tb3Rpb25gIGNhbid0IGJlIGN1cnJlbnRseSBwYXNzZWQgdG8gYE5hdmlnYXRvclNjcmVlbmAsXG4vLyBhcyBzb21lIG9mIHRoZW0gd291bGQgb3ZlcmxhcCB3aXRoIEhUTUwgcHJvcHMgKGUuZy4gYG9uQW5pbWF0aW9uU3RhcnRgLCAuLi4pXG50eXBlIFByb3BzID0gT21pdDxcblx0V29yZFByZXNzQ29tcG9uZW50UHJvcHM8IE5hdmlnYXRvclNjcmVlblByb3BzLCAnZGl2JywgZmFsc2UgPixcblx0a2V5b2YgTW90aW9uUHJvcHNcbj47XG5cbmZ1bmN0aW9uIE5hdmlnYXRvclNjcmVlbiggcHJvcHM6IFByb3BzLCBmb3J3YXJkZWRSZWY6IEZvcndhcmRlZFJlZjwgYW55ID4gKSB7XG5cdGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcGF0aCwgLi4ub3RoZXJQcm9wcyB9ID0gdXNlQ29udGV4dFN5c3RlbShcblx0XHRwcm9wcyxcblx0XHQnTmF2aWdhdG9yU2NyZWVuJ1xuXHQpO1xuXG5cdGNvbnN0IHByZWZlcnNSZWR1Y2VkTW90aW9uID0gdXNlUmVkdWNlZE1vdGlvbigpO1xuXHRjb25zdCB7IGxvY2F0aW9uIH0gPSB1c2VDb250ZXh0KCBOYXZpZ2F0b3JDb250ZXh0ICk7XG5cdGNvbnN0IGlzTWF0Y2ggPSBsb2NhdGlvbi5wYXRoID09PSBlc2NhcGVBdHRyaWJ1dGUoIHBhdGggKTtcblx0Y29uc3Qgd3JhcHBlclJlZiA9IHVzZVJlZjwgSFRNTERpdkVsZW1lbnQgPiggbnVsbCApO1xuXG5cdGNvbnN0IHByZXZpb3VzTG9jYXRpb24gPSB1c2VQcmV2aW91cyggbG9jYXRpb24gKTtcblxuXHRjb25zdCBjeCA9IHVzZUN4KCk7XG5cdGNvbnN0IGNsYXNzZXMgPSB1c2VNZW1vKFxuXHRcdCgpID0+XG5cdFx0XHRjeChcblx0XHRcdFx0Y3NzKCB7XG5cdFx0XHRcdFx0Ly8gRW5zdXJlcyBob3Jpem9udGFsIG92ZXJmbG93IGlzIHZpc3VhbGx5IGFjY2Vzc2libGUuXG5cdFx0XHRcdFx0b3ZlcmZsb3dYOiAnYXV0bycsXG5cdFx0XHRcdFx0Ly8gSW4gY2FzZSB0aGUgcm9vdCBoYXMgYSBoZWlnaHQsIGl0IHNob3VsZCBub3QgYmUgZXhjZWVkZWQuXG5cdFx0XHRcdFx0bWF4SGVpZ2h0OiAnMTAwJScsXG5cdFx0XHRcdH0gKSxcblx0XHRcdFx0Y2xhc3NOYW1lXG5cdFx0XHQpLFxuXHRcdFsgY2xhc3NOYW1lLCBjeCBdXG5cdCk7XG5cblx0Ly8gRm9jdXMgcmVzdG9yYXRpb25cblx0Y29uc3QgaXNJbml0aWFsTG9jYXRpb24gPSBsb2NhdGlvbi5pc0luaXRpYWwgJiYgISBsb2NhdGlvbi5pc0JhY2s7XG5cdHVzZUVmZmVjdCggKCkgPT4ge1xuXHRcdC8vIE9ubHkgYXR0ZW1wdCB0byByZXN0b3JlIGZvY3VzOlxuXHRcdC8vIC0gaWYgdGhlIGN1cnJlbnQgbG9jYXRpb24gaXMgbm90IHRoZSBpbml0aWFsIG9uZSAodG8gYXZvaWQgbW92aW5nIGZvY3VzIG9uIHBhZ2UgbG9hZClcblx0XHQvLyAtIHdoZW4gdGhlIHNjcmVlbiBiZWNvbWVzIHZpc2libGVcblx0XHQvLyAtIGlmIHRoZSB3cmFwcGVyIHJlZiBoYXMgYmVlbiBhc3NpZ25lZFxuXHRcdGlmICggaXNJbml0aWFsTG9jYXRpb24gfHwgISBpc01hdGNoIHx8ICEgd3JhcHBlclJlZi5jdXJyZW50ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuXHRcdC8vIFdoZW4gbmF2aWdhdGluZyBiYWNrLCBpZiBhIHNlbGVjdG9yIGlzIHByb3ZpZGVkLCB1c2UgaXQgdG8gbG9vayBmb3IgdGhlXG5cdFx0Ly8gdGFyZ2V0IGVsZW1lbnQgKGFzc3VtZWQgdG8gYmUgYSBub2RlIGluc2lkZSB0aGUgY3VycmVudCBOYXZpZ2F0b3JTY3JlZW4pXG5cdFx0aWYgKCBsb2NhdGlvbi5pc0JhY2sgJiYgcHJldmlvdXNMb2NhdGlvbj8uZm9jdXNUYXJnZXRTZWxlY3RvciApIHtcblx0XHRcdGVsZW1lbnRUb0ZvY3VzID0gd3JhcHBlclJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHRcdHByZXZpb3VzTG9jYXRpb24uZm9jdXNUYXJnZXRTZWxlY3RvclxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGUgcHJldmlvdXMgcXVlcnkgZGlkbid0IHJ1biBvciBmaW5kIGFueSBlbGVtZW50IHRvIGZvY3VzLCBmYWxsYmFja1xuXHRcdC8vIHRvIHRoZSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50IGluIHRoZSBzY3JlZW4gKG9yIHRoZSBzY3JlZW4gaXRzZWxmKS5cblx0XHRpZiAoICEgZWxlbWVudFRvRm9jdXMgKSB7XG5cdFx0XHRjb25zdCBmaXJzdFRhYmJhYmxlID0gKFxuXHRcdFx0XHRmb2N1cy50YWJiYWJsZS5maW5kKCB3cmFwcGVyUmVmLmN1cnJlbnQgKSBhcyBIVE1MRWxlbWVudFtdXG5cdFx0XHQgKVsgMCBdO1xuXG5cdFx0XHRlbGVtZW50VG9Gb2N1cyA9IGZpcnN0VGFiYmFibGUgPz8gd3JhcHBlclJlZi5jdXJyZW50O1xuXHRcdH1cblxuXHRcdGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG5cdH0sIFtcblx0XHRpc0luaXRpYWxMb2NhdGlvbixcblx0XHRpc01hdGNoLFxuXHRcdGxvY2F0aW9uLmlzQmFjayxcblx0XHRwcmV2aW91c0xvY2F0aW9uPy5mb2N1c1RhcmdldFNlbGVjdG9yLFxuXHRdICk7XG5cblx0Y29uc3QgbWVyZ2VkV3JhcHBlclJlZiA9IHVzZU1lcmdlUmVmcyggWyBmb3J3YXJkZWRSZWYsIHdyYXBwZXJSZWYgXSApO1xuXG5cdGlmICggISBpc01hdGNoICkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0aWYgKCBwcmVmZXJzUmVkdWNlZE1vdGlvbiApIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFZpZXdcblx0XHRcdFx0cmVmPXsgbWVyZ2VkV3JhcHBlclJlZiB9XG5cdFx0XHRcdGNsYXNzTmFtZT17IGNsYXNzZXMgfVxuXHRcdFx0XHR7IC4uLm90aGVyUHJvcHMgfVxuXHRcdFx0PlxuXHRcdFx0XHR7IGNoaWxkcmVuIH1cblx0XHRcdDwvVmlldz5cblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgYW5pbWF0ZSA9IHtcblx0XHRvcGFjaXR5OiAxLFxuXHRcdHRyYW5zaXRpb246IHtcblx0XHRcdGRlbGF5OiBhbmltYXRpb25FbnRlckRlbGF5LFxuXHRcdFx0ZHVyYXRpb246IGFuaW1hdGlvbkVudGVyRHVyYXRpb24sXG5cdFx0XHRlYXNlOiAnZWFzZUluT3V0Jyxcblx0XHR9LFxuXHRcdHg6IDAsXG5cdH07XG5cdGNvbnN0IGluaXRpYWwgPSB7XG5cdFx0b3BhY2l0eTogMCxcblx0XHR4OlxuXHRcdFx0KCBpc1JUTCgpICYmIGxvY2F0aW9uLmlzQmFjayApIHx8ICggISBpc1JUTCgpICYmICEgbG9jYXRpb24uaXNCYWNrIClcblx0XHRcdFx0PyA1MFxuXHRcdFx0XHQ6IC01MCxcblx0fTtcblx0Y29uc3QgZXhpdCA9IHtcblx0XHRkZWxheTogYW5pbWF0aW9uRXhpdERlbGF5LFxuXHRcdG9wYWNpdHk6IDAsXG5cdFx0eDpcblx0XHRcdCggISBpc1JUTCgpICYmIGxvY2F0aW9uLmlzQmFjayApIHx8ICggaXNSVEwoKSAmJiAhIGxvY2F0aW9uLmlzQmFjayApXG5cdFx0XHRcdD8gNTBcblx0XHRcdFx0OiAtNTAsXG5cdFx0dHJhbnNpdGlvbjoge1xuXHRcdFx0ZHVyYXRpb246IGFuaW1hdGlvbkV4aXREdXJhdGlvbixcblx0XHRcdGVhc2U6ICdlYXNlSW5PdXQnLFxuXHRcdH0sXG5cdH07XG5cblx0Y29uc3QgYW5pbWF0ZWRQcm9wcyA9IHtcblx0XHRhbmltYXRlLFxuXHRcdGV4aXQsXG5cdFx0aW5pdGlhbCxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxtb3Rpb24uZGl2XG5cdFx0XHRyZWY9eyBtZXJnZWRXcmFwcGVyUmVmIH1cblx0XHRcdGNsYXNzTmFtZT17IGNsYXNzZXMgfVxuXHRcdFx0eyAuLi5vdGhlclByb3BzIH1cblx0XHRcdHsgLi4uYW5pbWF0ZWRQcm9wcyB9XG5cdFx0PlxuXHRcdFx0eyBjaGlsZHJlbiB9XG5cdFx0PC9tb3Rpb24uZGl2PlxuXHQpO1xufVxuXG4vKipcbiAqIFRoZSBgTmF2aWdhdG9yU2NyZWVuYCBjb21wb25lbnQgcmVwcmVzZW50cyBhIHNpbmdsZSB2aWV3L3NjcmVlbi9wYW5lbCBhbmRcbiAqIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGBOYXZpZ2F0b3JQcm92aWRlcmAsIHRoZVxuICogYE5hdmlnYXRvckJ1dHRvbmAgYW5kIHRoZSBgTmF2aWdhdG9yQmFja0J1dHRvbmAgY29tcG9uZW50cyAob3IgdGhlIGB1c2VOYXZpZ2F0b3JgXG4gKiBob29rKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBganN4XG4gKiBpbXBvcnQge1xuICogICBfX2V4cGVyaW1lbnRhbE5hdmlnYXRvclByb3ZpZGVyIGFzIE5hdmlnYXRvclByb3ZpZGVyLFxuICogICBfX2V4cGVyaW1lbnRhbE5hdmlnYXRvclNjcmVlbiBhcyBOYXZpZ2F0b3JTY3JlZW4sXG4gKiAgIF9fZXhwZXJpbWVudGFsTmF2aWdhdG9yQnV0dG9uIGFzIE5hdmlnYXRvckJ1dHRvbixcbiAqICAgX19leHBlcmltZW50YWxOYXZpZ2F0b3JCYWNrQnV0dG9uIGFzIE5hdmlnYXRvckJhY2tCdXR0b24sXG4gKiB9IGZyb20gJ0B3b3JkcHJlc3MvY29tcG9uZW50cyc7XG4gKlxuICogY29uc3QgTXlOYXZpZ2F0aW9uID0gKCkgPT4gKFxuICogICA8TmF2aWdhdG9yUHJvdmlkZXIgaW5pdGlhbFBhdGg9XCIvXCI+XG4gKiAgICAgPE5hdmlnYXRvclNjcmVlbiBwYXRoPVwiL1wiPlxuICogICAgICAgPHA+VGhpcyBpcyB0aGUgaG9tZSBzY3JlZW4uPC9wPlxuICogICAgICAgIDxOYXZpZ2F0b3JCdXR0b24gcGF0aD1cIi9jaGlsZFwiPlxuICogICAgICAgICAgTmF2aWdhdGUgdG8gY2hpbGQgc2NyZWVuLlxuICogICAgICAgPC9OYXZpZ2F0b3JCdXR0b24+XG4gKiAgICAgPC9OYXZpZ2F0b3JTY3JlZW4+XG4gKlxuICogICAgIDxOYXZpZ2F0b3JTY3JlZW4gcGF0aD1cIi9jaGlsZFwiPlxuICogICAgICAgPHA+VGhpcyBpcyB0aGUgY2hpbGQgc2NyZWVuLjwvcD5cbiAqICAgICAgIDxOYXZpZ2F0b3JCYWNrQnV0dG9uPlxuICogICAgICAgICBHbyBiYWNrXG4gKiAgICAgICA8L05hdmlnYXRvckJhY2tCdXR0b24+XG4gKiAgICAgPC9OYXZpZ2F0b3JTY3JlZW4+XG4gKiAgIDwvTmF2aWdhdG9yUHJvdmlkZXI+XG4gKiApO1xuICogYGBgXG4gKi9cbmNvbnN0IENvbm5lY3RlZE5hdmlnYXRvclNjcmVlbiA9IGNvbnRleHRDb25uZWN0KFxuXHROYXZpZ2F0b3JTY3JlZW4sXG5cdCdOYXZpZ2F0b3JTY3JlZW4nXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBDb25uZWN0ZWROYXZpZ2F0b3JTY3JlZW47XG4iXX0= */",
48
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkB3b3JkcHJlc3MvY29tcG9uZW50cy9zcmMvbmF2aWdhdG9yL25hdmlnYXRvci1zY3JlZW4vY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErREkiLCJmaWxlIjoiQHdvcmRwcmVzcy9jb21wb25lbnRzL3NyYy9uYXZpZ2F0b3IvbmF2aWdhdG9yLXNjcmVlbi9jb21wb25lbnQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFeHRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHR5cGUgeyBGb3J3YXJkZWRSZWYgfSBmcm9tICdyZWFjdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5pbXBvcnQgeyBtb3Rpb24sIE1vdGlvblByb3BzIH0gZnJvbSAnZnJhbWVyLW1vdGlvbic7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbi8qKlxuICogV29yZFByZXNzIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBmb2N1cyB9IGZyb20gJ0B3b3JkcHJlc3MvZG9tJztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAnQHdvcmRwcmVzcy9lbGVtZW50JztcbmltcG9ydCB7XG5cdHVzZVJlZHVjZWRNb3Rpb24sXG5cdHVzZU1lcmdlUmVmcyxcblx0dXNlUHJldmlvdXMsXG59IGZyb20gJ0B3b3JkcHJlc3MvY29tcG9zZSc7XG5pbXBvcnQgeyBpc1JUTCB9IGZyb20gJ0B3b3JkcHJlc3MvaTE4bic7XG5pbXBvcnQgeyBlc2NhcGVBdHRyaWJ1dGUgfSBmcm9tICdAd29yZHByZXNzL2VzY2FwZS1odG1sJztcblxuLyoqXG4gKiBJbnRlcm5hbCBkZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IHtcblx0Y29udGV4dENvbm5lY3QsXG5cdHVzZUNvbnRleHRTeXN0ZW0sXG5cdFdvcmRQcmVzc0NvbXBvbmVudFByb3BzLFxufSBmcm9tICcuLi8uLi91aS9jb250ZXh0JztcbmltcG9ydCB7IHVzZUN4IH0gZnJvbSAnLi4vLi4vdXRpbHMvaG9va3MvdXNlLWN4JztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi8uLi92aWV3JztcbmltcG9ydCB7IE5hdmlnYXRvckNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgTmF2aWdhdG9yU2NyZWVuUHJvcHMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGFuaW1hdGlvbkVudGVyRGVsYXkgPSAwO1xuY29uc3QgYW5pbWF0aW9uRW50ZXJEdXJhdGlvbiA9IDAuMTQ7XG5jb25zdCBhbmltYXRpb25FeGl0RHVyYXRpb24gPSAwLjE0O1xuY29uc3QgYW5pbWF0aW9uRXhpdERlbGF5ID0gMDtcblxuLy8gUHJvcHMgc3BlY2lmaWMgdG8gYGZyYW1lci1tb3Rpb25gIGNhbid0IGJlIGN1cnJlbnRseSBwYXNzZWQgdG8gYE5hdmlnYXRvclNjcmVlbmAsXG4vLyBhcyBzb21lIG9mIHRoZW0gd291bGQgb3ZlcmxhcCB3aXRoIEhUTUwgcHJvcHMgKGUuZy4gYG9uQW5pbWF0aW9uU3RhcnRgLCAuLi4pXG50eXBlIFByb3BzID0gT21pdDxcblx0V29yZFByZXNzQ29tcG9uZW50UHJvcHM8IE5hdmlnYXRvclNjcmVlblByb3BzLCAnZGl2JywgZmFsc2UgPixcblx0a2V5b2YgTW90aW9uUHJvcHNcbj47XG5cbmZ1bmN0aW9uIE5hdmlnYXRvclNjcmVlbiggcHJvcHM6IFByb3BzLCBmb3J3YXJkZWRSZWY6IEZvcndhcmRlZFJlZjwgYW55ID4gKSB7XG5cdGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgcGF0aCwgLi4ub3RoZXJQcm9wcyB9ID0gdXNlQ29udGV4dFN5c3RlbShcblx0XHRwcm9wcyxcblx0XHQnTmF2aWdhdG9yU2NyZWVuJ1xuXHQpO1xuXG5cdGNvbnN0IHByZWZlcnNSZWR1Y2VkTW90aW9uID0gdXNlUmVkdWNlZE1vdGlvbigpO1xuXHRjb25zdCB7IGxvY2F0aW9uIH0gPSB1c2VDb250ZXh0KCBOYXZpZ2F0b3JDb250ZXh0ICk7XG5cdGNvbnN0IGlzTWF0Y2ggPSBsb2NhdGlvbi5wYXRoID09PSBlc2NhcGVBdHRyaWJ1dGUoIHBhdGggKTtcblx0Y29uc3Qgd3JhcHBlclJlZiA9IHVzZVJlZjwgSFRNTERpdkVsZW1lbnQgPiggbnVsbCApO1xuXG5cdGNvbnN0IHByZXZpb3VzTG9jYXRpb24gPSB1c2VQcmV2aW91cyggbG9jYXRpb24gKTtcblxuXHRjb25zdCBjeCA9IHVzZUN4KCk7XG5cdGNvbnN0IGNsYXNzZXMgPSB1c2VNZW1vKFxuXHRcdCgpID0+XG5cdFx0XHRjeChcblx0XHRcdFx0Y3NzKCB7XG5cdFx0XHRcdFx0Ly8gRW5zdXJlcyBob3Jpem9udGFsIG92ZXJmbG93IGlzIHZpc3VhbGx5IGFjY2Vzc2libGUuXG5cdFx0XHRcdFx0b3ZlcmZsb3dYOiAnYXV0bycsXG5cdFx0XHRcdFx0Ly8gSW4gY2FzZSB0aGUgcm9vdCBoYXMgYSBoZWlnaHQsIGl0IHNob3VsZCBub3QgYmUgZXhjZWVkZWQuXG5cdFx0XHRcdFx0bWF4SGVpZ2h0OiAnMTAwJScsXG5cdFx0XHRcdH0gKSxcblx0XHRcdFx0Y2xhc3NOYW1lXG5cdFx0XHQpLFxuXHRcdFsgY2xhc3NOYW1lLCBjeCBdXG5cdCk7XG5cblx0Ly8gRm9jdXMgcmVzdG9yYXRpb25cblx0Y29uc3QgaXNJbml0aWFsTG9jYXRpb24gPSBsb2NhdGlvbi5pc0luaXRpYWwgJiYgISBsb2NhdGlvbi5pc0JhY2s7XG5cdHVzZUVmZmVjdCggKCkgPT4ge1xuXHRcdC8vIE9ubHkgYXR0ZW1wdCB0byByZXN0b3JlIGZvY3VzOlxuXHRcdC8vIC0gaWYgdGhlIGN1cnJlbnQgbG9jYXRpb24gaXMgbm90IHRoZSBpbml0aWFsIG9uZSAodG8gYXZvaWQgbW92aW5nIGZvY3VzIG9uIHBhZ2UgbG9hZClcblx0XHQvLyAtIHdoZW4gdGhlIHNjcmVlbiBiZWNvbWVzIHZpc2libGVcblx0XHQvLyAtIGlmIHRoZSB3cmFwcGVyIHJlZiBoYXMgYmVlbiBhc3NpZ25lZFxuXHRcdGlmICggaXNJbml0aWFsTG9jYXRpb24gfHwgISBpc01hdGNoIHx8ICEgd3JhcHBlclJlZi5jdXJyZW50ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB3cmFwcGVyUmVmLmN1cnJlbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuXG5cdFx0Ly8gSWYgYW4gZWxlbWVudCBpcyBhbHJlYWR5IGZvY3VzZWQgd2l0aGluIHRoZSB3cmFwcGVyIGRvIG5vdCBmb2N1cyB0aGVcblx0XHQvLyBlbGVtZW50LiBUaGlzIHByZXZlbnRzIGlucHV0cyBvciBidXR0b25zIGZyb20gbG9zaW5nIGZvY3VzIHVuZWNlc3NhcmlseS5cblx0XHRpZiAoIHdyYXBwZXJSZWYuY3VycmVudC5jb250YWlucyggYWN0aXZlRWxlbWVudCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuXHRcdC8vIFdoZW4gbmF2aWdhdGluZyBiYWNrLCBpZiBhIHNlbGVjdG9yIGlzIHByb3ZpZGVkLCB1c2UgaXQgdG8gbG9vayBmb3IgdGhlXG5cdFx0Ly8gdGFyZ2V0IGVsZW1lbnQgKGFzc3VtZWQgdG8gYmUgYSBub2RlIGluc2lkZSB0aGUgY3VycmVudCBOYXZpZ2F0b3JTY3JlZW4pXG5cdFx0aWYgKCBsb2NhdGlvbi5pc0JhY2sgJiYgcHJldmlvdXNMb2NhdGlvbj8uZm9jdXNUYXJnZXRTZWxlY3RvciApIHtcblx0XHRcdGVsZW1lbnRUb0ZvY3VzID0gd3JhcHBlclJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHRcdHByZXZpb3VzTG9jYXRpb24uZm9jdXNUYXJnZXRTZWxlY3RvclxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyBJZiB0aGUgcHJldmlvdXMgcXVlcnkgZGlkbid0IHJ1biBvciBmaW5kIGFueSBlbGVtZW50IHRvIGZvY3VzLCBmYWxsYmFja1xuXHRcdC8vIHRvIHRoZSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50IGluIHRoZSBzY3JlZW4gKG9yIHRoZSBzY3JlZW4gaXRzZWxmKS5cblx0XHRpZiAoICEgZWxlbWVudFRvRm9jdXMgKSB7XG5cdFx0XHRjb25zdCBmaXJzdFRhYmJhYmxlID0gKFxuXHRcdFx0XHRmb2N1cy50YWJiYWJsZS5maW5kKCB3cmFwcGVyUmVmLmN1cnJlbnQgKSBhcyBIVE1MRWxlbWVudFtdXG5cdFx0XHQgKVsgMCBdO1xuXHRcdFx0ZWxlbWVudFRvRm9jdXMgPSBmaXJzdFRhYmJhYmxlID8/IHdyYXBwZXJSZWYuY3VycmVudDtcblx0XHR9XG5cblx0XHRlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xuXHR9LCBbXG5cdFx0aXNJbml0aWFsTG9jYXRpb24sXG5cdFx0aXNNYXRjaCxcblx0XHRsb2NhdGlvbi5pc0JhY2ssXG5cdFx0cHJldmlvdXNMb2NhdGlvbj8uZm9jdXNUYXJnZXRTZWxlY3Rvcixcblx0XSApO1xuXG5cdGNvbnN0IG1lcmdlZFdyYXBwZXJSZWYgPSB1c2VNZXJnZVJlZnMoIFsgZm9yd2FyZGVkUmVmLCB3cmFwcGVyUmVmIF0gKTtcblxuXHRpZiAoICEgaXNNYXRjaCApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGlmICggcHJlZmVyc1JlZHVjZWRNb3Rpb24gKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxWaWV3XG5cdFx0XHRcdHJlZj17IG1lcmdlZFdyYXBwZXJSZWYgfVxuXHRcdFx0XHRjbGFzc05hbWU9eyBjbGFzc2VzIH1cblx0XHRcdFx0eyAuLi5vdGhlclByb3BzIH1cblx0XHRcdD5cblx0XHRcdFx0eyBjaGlsZHJlbiB9XG5cdFx0XHQ8L1ZpZXc+XG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGFuaW1hdGUgPSB7XG5cdFx0b3BhY2l0eTogMSxcblx0XHR0cmFuc2l0aW9uOiB7XG5cdFx0XHRkZWxheTogYW5pbWF0aW9uRW50ZXJEZWxheSxcblx0XHRcdGR1cmF0aW9uOiBhbmltYXRpb25FbnRlckR1cmF0aW9uLFxuXHRcdFx0ZWFzZTogJ2Vhc2VJbk91dCcsXG5cdFx0fSxcblx0XHR4OiAwLFxuXHR9O1xuXHRjb25zdCBpbml0aWFsID0ge1xuXHRcdG9wYWNpdHk6IDAsXG5cdFx0eDpcblx0XHRcdCggaXNSVEwoKSAmJiBsb2NhdGlvbi5pc0JhY2sgKSB8fCAoICEgaXNSVEwoKSAmJiAhIGxvY2F0aW9uLmlzQmFjayApXG5cdFx0XHRcdD8gNTBcblx0XHRcdFx0OiAtNTAsXG5cdH07XG5cdGNvbnN0IGV4aXQgPSB7XG5cdFx0ZGVsYXk6IGFuaW1hdGlvbkV4aXREZWxheSxcblx0XHRvcGFjaXR5OiAwLFxuXHRcdHg6XG5cdFx0XHQoICEgaXNSVEwoKSAmJiBsb2NhdGlvbi5pc0JhY2sgKSB8fCAoIGlzUlRMKCkgJiYgISBsb2NhdGlvbi5pc0JhY2sgKVxuXHRcdFx0XHQ/IDUwXG5cdFx0XHRcdDogLTUwLFxuXHRcdHRyYW5zaXRpb246IHtcblx0XHRcdGR1cmF0aW9uOiBhbmltYXRpb25FeGl0RHVyYXRpb24sXG5cdFx0XHRlYXNlOiAnZWFzZUluT3V0Jyxcblx0XHR9LFxuXHR9O1xuXG5cdGNvbnN0IGFuaW1hdGVkUHJvcHMgPSB7XG5cdFx0YW5pbWF0ZSxcblx0XHRleGl0LFxuXHRcdGluaXRpYWwsXG5cdH07XG5cblx0cmV0dXJuIChcblx0XHQ8bW90aW9uLmRpdlxuXHRcdFx0cmVmPXsgbWVyZ2VkV3JhcHBlclJlZiB9XG5cdFx0XHRjbGFzc05hbWU9eyBjbGFzc2VzIH1cblx0XHRcdHsgLi4ub3RoZXJQcm9wcyB9XG5cdFx0XHR7IC4uLmFuaW1hdGVkUHJvcHMgfVxuXHRcdD5cblx0XHRcdHsgY2hpbGRyZW4gfVxuXHRcdDwvbW90aW9uLmRpdj5cblx0KTtcbn1cblxuLyoqXG4gKiBUaGUgYE5hdmlnYXRvclNjcmVlbmAgY29tcG9uZW50IHJlcHJlc2VudHMgYSBzaW5nbGUgdmlldy9zY3JlZW4vcGFuZWwgYW5kXG4gKiBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgTmF2aWdhdG9yUHJvdmlkZXJgLCB0aGVcbiAqIGBOYXZpZ2F0b3JCdXR0b25gIGFuZCB0aGUgYE5hdmlnYXRvckJhY2tCdXR0b25gIGNvbXBvbmVudHMgKG9yIHRoZSBgdXNlTmF2aWdhdG9yYFxuICogaG9vaykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzeFxuICogaW1wb3J0IHtcbiAqICAgX19leHBlcmltZW50YWxOYXZpZ2F0b3JQcm92aWRlciBhcyBOYXZpZ2F0b3JQcm92aWRlcixcbiAqICAgX19leHBlcmltZW50YWxOYXZpZ2F0b3JTY3JlZW4gYXMgTmF2aWdhdG9yU2NyZWVuLFxuICogICBfX2V4cGVyaW1lbnRhbE5hdmlnYXRvckJ1dHRvbiBhcyBOYXZpZ2F0b3JCdXR0b24sXG4gKiAgIF9fZXhwZXJpbWVudGFsTmF2aWdhdG9yQmFja0J1dHRvbiBhcyBOYXZpZ2F0b3JCYWNrQnV0dG9uLFxuICogfSBmcm9tICdAd29yZHByZXNzL2NvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IE15TmF2aWdhdGlvbiA9ICgpID0+IChcbiAqICAgPE5hdmlnYXRvclByb3ZpZGVyIGluaXRpYWxQYXRoPVwiL1wiPlxuICogICAgIDxOYXZpZ2F0b3JTY3JlZW4gcGF0aD1cIi9cIj5cbiAqICAgICAgIDxwPlRoaXMgaXMgdGhlIGhvbWUgc2NyZWVuLjwvcD5cbiAqICAgICAgICA8TmF2aWdhdG9yQnV0dG9uIHBhdGg9XCIvY2hpbGRcIj5cbiAqICAgICAgICAgIE5hdmlnYXRlIHRvIGNoaWxkIHNjcmVlbi5cbiAqICAgICAgIDwvTmF2aWdhdG9yQnV0dG9uPlxuICogICAgIDwvTmF2aWdhdG9yU2NyZWVuPlxuICpcbiAqICAgICA8TmF2aWdhdG9yU2NyZWVuIHBhdGg9XCIvY2hpbGRcIj5cbiAqICAgICAgIDxwPlRoaXMgaXMgdGhlIGNoaWxkIHNjcmVlbi48L3A+XG4gKiAgICAgICA8TmF2aWdhdG9yQmFja0J1dHRvbj5cbiAqICAgICAgICAgR28gYmFja1xuICogICAgICAgPC9OYXZpZ2F0b3JCYWNrQnV0dG9uPlxuICogICAgIDwvTmF2aWdhdG9yU2NyZWVuPlxuICogICA8L05hdmlnYXRvclByb3ZpZGVyPlxuICogKTtcbiAqIGBgYFxuICovXG5jb25zdCBDb25uZWN0ZWROYXZpZ2F0b3JTY3JlZW4gPSBjb250ZXh0Q29ubmVjdChcblx0TmF2aWdhdG9yU2NyZWVuLFxuXHQnTmF2aWdhdG9yU2NyZWVuJ1xuKTtcblxuZXhwb3J0IGRlZmF1bHQgQ29ubmVjdGVkTmF2aWdhdG9yU2NyZWVuO1xuIl19 */",
49
49
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
50
50
  };
51
51
 
@@ -76,6 +76,13 @@ function NavigatorScreen(props, forwardedRef) {
76
76
  return;
77
77
  }
78
78
 
79
+ const activeElement = wrapperRef.current.ownerDocument.activeElement; // If an element is already focused within the wrapper do not focus the
80
+ // element. This prevents inputs or buttons from losing focus unecessarily.
81
+
82
+ if (wrapperRef.current.contains(activeElement)) {
83
+ return;
84
+ }
85
+
79
86
  let elementToFocus = null; // When navigating back, if a selector is provided, use it to look for the
80
87
  // target element (assumed to be a node inside the current NavigatorScreen)
81
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/components/src/navigator/navigator-screen/component.tsx"],"names":["animationEnterDelay","animationEnterDuration","animationExitDuration","animationExitDelay","NavigatorScreen","props","forwardedRef","children","className","path","otherProps","prefersReducedMotion","location","NavigatorContext","isMatch","wrapperRef","previousLocation","cx","classes","isInitialLocation","isInitial","isBack","current","elementToFocus","focusTargetSelector","querySelector","firstTabbable","focus","tabbable","find","mergedWrapperRef","animate","opacity","transition","delay","duration","ease","x","initial","exit","animatedProps","ConnectedNavigatorScreen"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { motion, MotionProps } from 'framer-motion';\nimport { css } from '@emotion/react';\n\n/**\n * WordPress dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport { useContext, useEffect, useMemo, useRef } from '@wordpress/element';\nimport {\n\tuseReducedMotion,\n\tuseMergeRefs,\n\tusePrevious,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\nimport { escapeAttribute } from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\nimport {\n\tcontextConnect,\n\tuseContextSystem,\n\tWordPressComponentProps,\n} from '../../ui/context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport type { NavigatorScreenProps } from '../types';\n\nconst animationEnterDelay = 0;\nconst animationEnterDuration = 0.14;\nconst animationExitDuration = 0.14;\nconst animationExitDelay = 0;\n\n// Props specific to `framer-motion` can't be currently passed to `NavigatorScreen`,\n// as some of them would overlap with HTML props (e.g. `onAnimationStart`, ...)\ntype Props = Omit<\n\tWordPressComponentProps< NavigatorScreenProps, 'div', false >,\n\tkeyof MotionProps\n>;\n\nfunction NavigatorScreen( props: Props, forwardedRef: ForwardedRef< any > ) {\n\tconst { children, className, path, ...otherProps } = useContextSystem(\n\t\tprops,\n\t\t'NavigatorScreen'\n\t);\n\n\tconst prefersReducedMotion = useReducedMotion();\n\tconst { location } = useContext( NavigatorContext );\n\tconst isMatch = location.path === escapeAttribute( path );\n\tconst wrapperRef = useRef< HTMLDivElement >( null );\n\n\tconst previousLocation = usePrevious( location );\n\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() =>\n\t\t\tcx(\n\t\t\t\tcss( {\n\t\t\t\t\t// Ensures horizontal overflow is visually accessible.\n\t\t\t\t\toverflowX: 'auto',\n\t\t\t\t\t// In case the root has a height, it should not be exceeded.\n\t\t\t\t\tmaxHeight: '100%',\n\t\t\t\t} ),\n\t\t\t\tclassName\n\t\t\t),\n\t\t[ className, cx ]\n\t);\n\n\t// Focus restoration\n\tconst isInitialLocation = location.isInitial && ! location.isBack;\n\tuseEffect( () => {\n\t\t// Only attempt to restore focus:\n\t\t// - if the current location is not the initial one (to avoid moving focus on page load)\n\t\t// - when the screen becomes visible\n\t\t// - if the wrapper ref has been assigned\n\t\tif ( isInitialLocation || ! isMatch || ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet elementToFocus: HTMLElement | null = null;\n\n\t\t// When navigating back, if a selector is provided, use it to look for the\n\t\t// target element (assumed to be a node inside the current NavigatorScreen)\n\t\tif ( location.isBack && previousLocation?.focusTargetSelector ) {\n\t\t\telementToFocus = wrapperRef.current.querySelector(\n\t\t\t\tpreviousLocation.focusTargetSelector\n\t\t\t);\n\t\t}\n\n\t\t// If the previous query didn't run or find any element to focus, fallback\n\t\t// to the first tabbable element in the screen (or the screen itself).\n\t\tif ( ! elementToFocus ) {\n\t\t\tconst firstTabbable = (\n\t\t\t\tfocus.tabbable.find( wrapperRef.current ) as HTMLElement[]\n\t\t\t )[ 0 ];\n\n\t\t\telementToFocus = firstTabbable ?? wrapperRef.current;\n\t\t}\n\n\t\telementToFocus.focus();\n\t}, [\n\t\tisInitialLocation,\n\t\tisMatch,\n\t\tlocation.isBack,\n\t\tpreviousLocation?.focusTargetSelector,\n\t] );\n\n\tconst mergedWrapperRef = useMergeRefs( [ forwardedRef, wrapperRef ] );\n\n\tif ( ! isMatch ) {\n\t\treturn null;\n\t}\n\n\tif ( prefersReducedMotion ) {\n\t\treturn (\n\t\t\t<View\n\t\t\t\tref={ mergedWrapperRef }\n\t\t\t\tclassName={ classes }\n\t\t\t\t{ ...otherProps }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</View>\n\t\t);\n\t}\n\n\tconst animate = {\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tdelay: animationEnterDelay,\n\t\t\tduration: animationEnterDuration,\n\t\t\tease: 'easeInOut',\n\t\t},\n\t\tx: 0,\n\t};\n\tconst initial = {\n\t\topacity: 0,\n\t\tx:\n\t\t\t( isRTL() && location.isBack ) || ( ! isRTL() && ! location.isBack )\n\t\t\t\t? 50\n\t\t\t\t: -50,\n\t};\n\tconst exit = {\n\t\tdelay: animationExitDelay,\n\t\topacity: 0,\n\t\tx:\n\t\t\t( ! isRTL() && location.isBack ) || ( isRTL() && ! location.isBack )\n\t\t\t\t? 50\n\t\t\t\t: -50,\n\t\ttransition: {\n\t\t\tduration: animationExitDuration,\n\t\t\tease: 'easeInOut',\n\t\t},\n\t};\n\n\tconst animatedProps = {\n\t\tanimate,\n\t\texit,\n\t\tinitial,\n\t};\n\n\treturn (\n\t\t<motion.div\n\t\t\tref={ mergedWrapperRef }\n\t\t\tclassName={ classes }\n\t\t\t{ ...otherProps }\n\t\t\t{ ...animatedProps }\n\t\t>\n\t\t\t{ children }\n\t\t</motion.div>\n\t);\n}\n\n/**\n * The `NavigatorScreen` component represents a single view/screen/panel and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorButton` and the `NavigatorBackButton` 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 */\nconst ConnectedNavigatorScreen = contextConnect(\n\tNavigatorScreen,\n\t'NavigatorScreen'\n);\n\nexport default ConnectedNavigatorScreen;\n"]}
1
+ {"version":3,"sources":["@wordpress/components/src/navigator/navigator-screen/component.tsx"],"names":["animationEnterDelay","animationEnterDuration","animationExitDuration","animationExitDelay","NavigatorScreen","props","forwardedRef","children","className","path","otherProps","prefersReducedMotion","location","NavigatorContext","isMatch","wrapperRef","previousLocation","cx","classes","isInitialLocation","isInitial","isBack","current","activeElement","ownerDocument","contains","elementToFocus","focusTargetSelector","querySelector","firstTabbable","focus","tabbable","find","mergedWrapperRef","animate","opacity","transition","delay","duration","ease","x","initial","exit","animatedProps","ConnectedNavigatorScreen"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport { motion, MotionProps } from 'framer-motion';\nimport { css } from '@emotion/react';\n\n/**\n * WordPress dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport { useContext, useEffect, useMemo, useRef } from '@wordpress/element';\nimport {\n\tuseReducedMotion,\n\tuseMergeRefs,\n\tusePrevious,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\nimport { escapeAttribute } from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\nimport {\n\tcontextConnect,\n\tuseContextSystem,\n\tWordPressComponentProps,\n} from '../../ui/context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport { View } from '../../view';\nimport { NavigatorContext } from '../context';\nimport type { NavigatorScreenProps } from '../types';\n\nconst animationEnterDelay = 0;\nconst animationEnterDuration = 0.14;\nconst animationExitDuration = 0.14;\nconst animationExitDelay = 0;\n\n// Props specific to `framer-motion` can't be currently passed to `NavigatorScreen`,\n// as some of them would overlap with HTML props (e.g. `onAnimationStart`, ...)\ntype Props = Omit<\n\tWordPressComponentProps< NavigatorScreenProps, 'div', false >,\n\tkeyof MotionProps\n>;\n\nfunction NavigatorScreen( props: Props, forwardedRef: ForwardedRef< any > ) {\n\tconst { children, className, path, ...otherProps } = useContextSystem(\n\t\tprops,\n\t\t'NavigatorScreen'\n\t);\n\n\tconst prefersReducedMotion = useReducedMotion();\n\tconst { location } = useContext( NavigatorContext );\n\tconst isMatch = location.path === escapeAttribute( path );\n\tconst wrapperRef = useRef< HTMLDivElement >( null );\n\n\tconst previousLocation = usePrevious( location );\n\n\tconst cx = useCx();\n\tconst classes = useMemo(\n\t\t() =>\n\t\t\tcx(\n\t\t\t\tcss( {\n\t\t\t\t\t// Ensures horizontal overflow is visually accessible.\n\t\t\t\t\toverflowX: 'auto',\n\t\t\t\t\t// In case the root has a height, it should not be exceeded.\n\t\t\t\t\tmaxHeight: '100%',\n\t\t\t\t} ),\n\t\t\t\tclassName\n\t\t\t),\n\t\t[ className, cx ]\n\t);\n\n\t// Focus restoration\n\tconst isInitialLocation = location.isInitial && ! location.isBack;\n\tuseEffect( () => {\n\t\t// Only attempt to restore focus:\n\t\t// - if the current location is not the initial one (to avoid moving focus on page load)\n\t\t// - when the screen becomes visible\n\t\t// - if the wrapper ref has been assigned\n\t\tif ( isInitialLocation || ! isMatch || ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeElement = wrapperRef.current.ownerDocument.activeElement;\n\n\t\t// If an element is already focused within the wrapper do not focus the\n\t\t// element. This prevents inputs or buttons from losing focus unecessarily.\n\t\tif ( wrapperRef.current.contains( activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet elementToFocus: HTMLElement | null = null;\n\n\t\t// When navigating back, if a selector is provided, use it to look for the\n\t\t// target element (assumed to be a node inside the current NavigatorScreen)\n\t\tif ( location.isBack && previousLocation?.focusTargetSelector ) {\n\t\t\telementToFocus = wrapperRef.current.querySelector(\n\t\t\t\tpreviousLocation.focusTargetSelector\n\t\t\t);\n\t\t}\n\n\t\t// If the previous query didn't run or find any element to focus, fallback\n\t\t// to the first tabbable element in the screen (or the screen itself).\n\t\tif ( ! elementToFocus ) {\n\t\t\tconst firstTabbable = (\n\t\t\t\tfocus.tabbable.find( wrapperRef.current ) as HTMLElement[]\n\t\t\t )[ 0 ];\n\t\t\telementToFocus = firstTabbable ?? wrapperRef.current;\n\t\t}\n\n\t\telementToFocus.focus();\n\t}, [\n\t\tisInitialLocation,\n\t\tisMatch,\n\t\tlocation.isBack,\n\t\tpreviousLocation?.focusTargetSelector,\n\t] );\n\n\tconst mergedWrapperRef = useMergeRefs( [ forwardedRef, wrapperRef ] );\n\n\tif ( ! isMatch ) {\n\t\treturn null;\n\t}\n\n\tif ( prefersReducedMotion ) {\n\t\treturn (\n\t\t\t<View\n\t\t\t\tref={ mergedWrapperRef }\n\t\t\t\tclassName={ classes }\n\t\t\t\t{ ...otherProps }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</View>\n\t\t);\n\t}\n\n\tconst animate = {\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tdelay: animationEnterDelay,\n\t\t\tduration: animationEnterDuration,\n\t\t\tease: 'easeInOut',\n\t\t},\n\t\tx: 0,\n\t};\n\tconst initial = {\n\t\topacity: 0,\n\t\tx:\n\t\t\t( isRTL() && location.isBack ) || ( ! isRTL() && ! location.isBack )\n\t\t\t\t? 50\n\t\t\t\t: -50,\n\t};\n\tconst exit = {\n\t\tdelay: animationExitDelay,\n\t\topacity: 0,\n\t\tx:\n\t\t\t( ! isRTL() && location.isBack ) || ( isRTL() && ! location.isBack )\n\t\t\t\t? 50\n\t\t\t\t: -50,\n\t\ttransition: {\n\t\t\tduration: animationExitDuration,\n\t\t\tease: 'easeInOut',\n\t\t},\n\t};\n\n\tconst animatedProps = {\n\t\tanimate,\n\t\texit,\n\t\tinitial,\n\t};\n\n\treturn (\n\t\t<motion.div\n\t\t\tref={ mergedWrapperRef }\n\t\t\tclassName={ classes }\n\t\t\t{ ...otherProps }\n\t\t\t{ ...animatedProps }\n\t\t>\n\t\t\t{ children }\n\t\t</motion.div>\n\t);\n}\n\n/**\n * The `NavigatorScreen` component represents a single view/screen/panel and\n * should be used in combination with the `NavigatorProvider`, the\n * `NavigatorButton` and the `NavigatorBackButton` 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 */\nconst ConnectedNavigatorScreen = contextConnect(\n\tNavigatorScreen,\n\t'NavigatorScreen'\n);\n\nexport default ConnectedNavigatorScreen;\n"]}