@wordpress/block-editor 8.5.7 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +5 -2
  3. package/build/components/block-alignment-control/constants.js +48 -0
  4. package/build/components/block-alignment-control/constants.js.map +1 -0
  5. package/build/components/block-alignment-control/ui.js +9 -40
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +92 -0
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -0
  9. package/build/components/block-alignment-matrix-control/index.js +1 -6
  10. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  11. package/build/components/block-content-overlay/index.js +5 -74
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-draggable/draggable-chip.native.js +64 -0
  14. package/build/components/block-draggable/draggable-chip.native.js.map +1 -0
  15. package/build/components/block-draggable/dropping-insertion-point.native.js +157 -0
  16. package/build/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  17. package/build/components/block-draggable/index.native.js +484 -0
  18. package/build/components/block-draggable/index.native.js.map +1 -0
  19. package/build/components/block-draggable/use-scroll-when-dragging.native.js +130 -0
  20. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  21. package/build/components/block-list/block-list-context.native.js +195 -0
  22. package/build/components/block-list/block-list-context.native.js.map +1 -0
  23. package/build/components/block-list/block-list-item-cell.native.js +67 -0
  24. package/build/components/block-list/block-list-item-cell.native.js.map +1 -0
  25. package/build/components/block-list/block-list-item.native.js +12 -9
  26. package/build/components/block-list/block-list-item.native.js.map +1 -1
  27. package/build/components/block-list/block.native.js +29 -6
  28. package/build/components/block-list/block.native.js.map +1 -1
  29. package/build/components/block-list/index.native.js +75 -23
  30. package/build/components/block-list/index.native.js.map +1 -1
  31. package/build/components/block-list/use-block-props/index.js +8 -4
  32. package/build/components/block-list/use-block-props/index.js.map +1 -1
  33. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -7
  34. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  35. package/build/components/block-list/use-in-between-inserter.js +1 -1
  36. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  37. package/build/components/block-lock/modal.js +34 -4
  38. package/build/components/block-lock/modal.js.map +1 -1
  39. package/build/components/block-lock/toolbar.js +2 -1
  40. package/build/components/block-lock/toolbar.js.map +1 -1
  41. package/build/components/block-lock/use-block-lock.js +4 -1
  42. package/build/components/block-lock/use-block-lock.js.map +1 -1
  43. package/build/components/block-mobile-toolbar/index.native.js +9 -3
  44. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  45. package/build/components/block-mover/button.js +4 -4
  46. package/build/components/block-mover/button.js.map +1 -1
  47. package/build/components/block-mover/index.js +39 -65
  48. package/build/components/block-mover/index.js.map +1 -1
  49. package/build/components/block-mover/index.native.js +17 -4
  50. package/build/components/block-mover/index.native.js.map +1 -1
  51. package/build/components/block-navigation/dropdown.js +11 -5
  52. package/build/components/block-navigation/dropdown.js.map +1 -1
  53. package/build/components/block-popover/inbetween.js +191 -0
  54. package/build/components/block-popover/inbetween.js.map +1 -0
  55. package/build/components/block-popover/index.js +85 -0
  56. package/build/components/block-popover/index.js.map +1 -0
  57. package/build/components/{block-tools → block-popover}/use-popover-scroll.js +4 -1
  58. package/build/components/block-popover/use-popover-scroll.js.map +1 -0
  59. package/build/components/block-preview/index.js +1 -1
  60. package/build/components/block-preview/index.js.map +1 -1
  61. package/build/components/block-styles/index.js +1 -10
  62. package/build/components/block-styles/index.js.map +1 -1
  63. package/build/components/block-tools/back-compat.js +2 -2
  64. package/build/components/block-tools/back-compat.js.map +1 -1
  65. package/build/components/block-tools/block-selection-button.js +4 -2
  66. package/build/components/block-tools/block-selection-button.js.map +1 -1
  67. package/build/components/block-tools/index.js +5 -5
  68. package/build/components/block-tools/index.js.map +1 -1
  69. package/build/components/block-tools/insertion-point.js +14 -121
  70. package/build/components/block-tools/insertion-point.js.map +1 -1
  71. package/build/components/block-tools/selected-block-popover.js +216 -0
  72. package/build/components/block-tools/selected-block-popover.js.map +1 -0
  73. package/build/components/border-radius-control/input-controls.js +10 -3
  74. package/build/components/border-radius-control/input-controls.js.map +1 -1
  75. package/build/components/color-style-selector/index.js +9 -0
  76. package/build/components/color-style-selector/index.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +149 -44
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/duotone-control/index.js +5 -1
  80. package/build/components/duotone-control/index.js.map +1 -1
  81. package/build/components/image-editor/use-save-image.js +3 -1
  82. package/build/components/image-editor/use-save-image.js.map +1 -1
  83. package/build/components/index.js +5 -23
  84. package/build/components/index.js.map +1 -1
  85. package/build/components/inserter/index.native.js +31 -9
  86. package/build/components/inserter/index.native.js.map +1 -1
  87. package/build/components/link-control/constants.js +11 -1
  88. package/build/components/link-control/constants.js.map +1 -1
  89. package/build/components/link-control/search-results.js +4 -3
  90. package/build/components/link-control/search-results.js.map +1 -1
  91. package/build/components/link-control/use-search-handler.js +4 -4
  92. package/build/components/link-control/use-search-handler.js.map +1 -1
  93. package/build/components/list-view/block.js +15 -15
  94. package/build/components/list-view/block.js.map +1 -1
  95. package/build/components/list-view/branch.js +9 -13
  96. package/build/components/list-view/branch.js.map +1 -1
  97. package/build/components/list-view/context.js +1 -4
  98. package/build/components/list-view/context.js.map +1 -1
  99. package/build/components/list-view/drop-indicator.js +0 -1
  100. package/build/components/list-view/drop-indicator.js.map +1 -1
  101. package/build/components/list-view/index.js +15 -32
  102. package/build/components/list-view/index.js.map +1 -1
  103. package/build/components/navigable-toolbar/index.js +12 -2
  104. package/build/components/navigable-toolbar/index.js.map +1 -1
  105. package/build/components/rich-text/format-toolbar-container.js +0 -1
  106. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  107. package/build/components/rich-text/index.js +1 -6
  108. package/build/components/rich-text/index.js.map +1 -1
  109. package/build/components/rich-text/index.native.js +0 -4
  110. package/build/components/rich-text/index.native.js.map +1 -1
  111. package/build/components/url-input/index.js +11 -4
  112. package/build/components/url-input/index.js.map +1 -1
  113. package/build/components/use-block-display-information/index.js +3 -1
  114. package/build/components/use-block-display-information/index.js.map +1 -1
  115. package/build/components/use-block-drop-zone/index.native.js +167 -0
  116. package/build/components/use-block-drop-zone/index.native.js.map +1 -0
  117. package/build/components/use-on-block-drop/index.native.js +95 -0
  118. package/build/components/use-on-block-drop/index.native.js.map +1 -0
  119. package/build/components/use-setting/index.js +42 -18
  120. package/build/components/use-setting/index.js.map +1 -1
  121. package/build/hooks/anchor.js.map +1 -1
  122. package/build/hooks/border.js +463 -44
  123. package/build/hooks/border.js.map +1 -1
  124. package/build/hooks/color-panel.js +14 -7
  125. package/build/hooks/color-panel.js.map +1 -1
  126. package/build/hooks/dimensions.js +2 -2
  127. package/build/hooks/dimensions.js.map +1 -1
  128. package/build/hooks/index.js +3 -1
  129. package/build/hooks/index.js.map +1 -1
  130. package/build/hooks/margin.js +64 -12
  131. package/build/hooks/margin.js.map +1 -1
  132. package/build/hooks/padding.js +60 -12
  133. package/build/hooks/padding.js.map +1 -1
  134. package/build/hooks/settings.js +32 -0
  135. package/build/hooks/settings.js.map +1 -0
  136. package/build/hooks/style.js +14 -13
  137. package/build/hooks/style.js.map +1 -1
  138. package/build/hooks/typography.js +6 -2
  139. package/build/hooks/typography.js.map +1 -1
  140. package/build/hooks/use-border-props.js +22 -32
  141. package/build/hooks/use-border-props.js.map +1 -1
  142. package/build/store/actions.js +14 -2
  143. package/build/store/actions.js.map +1 -1
  144. package/build/store/defaults.js +0 -1
  145. package/build/store/defaults.js.map +1 -1
  146. package/build/store/reducer.js +0 -26
  147. package/build/store/reducer.js.map +1 -1
  148. package/build/store/selectors.js +47 -15
  149. package/build/store/selectors.js.map +1 -1
  150. package/build-module/components/block-alignment-control/constants.js +36 -0
  151. package/build-module/components/block-alignment-control/constants.js.map +1 -0
  152. package/build-module/components/block-alignment-control/ui.js +4 -35
  153. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  154. package/build-module/components/block-alignment-control/ui.native.js +78 -0
  155. package/build-module/components/block-alignment-control/ui.native.js.map +1 -0
  156. package/build-module/components/block-alignment-matrix-control/index.js +1 -6
  157. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  158. package/build-module/components/block-content-overlay/index.js +4 -70
  159. package/build-module/components/block-content-overlay/index.js.map +1 -1
  160. package/build-module/components/block-draggable/draggable-chip.native.js +50 -0
  161. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -0
  162. package/build-module/components/block-draggable/dropping-insertion-point.native.js +137 -0
  163. package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
  164. package/build-module/components/block-draggable/index.native.js +449 -0
  165. package/build-module/components/block-draggable/index.native.js.map +1 -0
  166. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +120 -0
  167. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
  168. package/build-module/components/block-list/block-list-context.native.js +179 -0
  169. package/build-module/components/block-list/block-list-context.native.js.map +1 -0
  170. package/build-module/components/block-list/block-list-item-cell.native.js +59 -0
  171. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -0
  172. package/build-module/components/block-list/block-list-item.native.js +12 -9
  173. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  174. package/build-module/components/block-list/block.native.js +28 -6
  175. package/build-module/components/block-list/block.native.js.map +1 -1
  176. package/build-module/components/block-list/index.native.js +72 -23
  177. package/build-module/components/block-list/index.native.js.map +1 -1
  178. package/build-module/components/block-list/use-block-props/index.js +9 -5
  179. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  180. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -7
  181. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  182. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  183. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  184. package/build-module/components/block-lock/modal.js +34 -5
  185. package/build-module/components/block-lock/modal.js.map +1 -1
  186. package/build-module/components/block-lock/toolbar.js +2 -1
  187. package/build-module/components/block-lock/toolbar.js.map +1 -1
  188. package/build-module/components/block-lock/use-block-lock.js +4 -1
  189. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  190. package/build-module/components/block-mobile-toolbar/index.native.js +8 -3
  191. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  192. package/build-module/components/block-mover/button.js +5 -5
  193. package/build-module/components/block-mover/button.js.map +1 -1
  194. package/build-module/components/block-mover/index.js +38 -63
  195. package/build-module/components/block-mover/index.js.map +1 -1
  196. package/build-module/components/block-mover/index.native.js +18 -5
  197. package/build-module/components/block-mover/index.native.js.map +1 -1
  198. package/build-module/components/block-navigation/dropdown.js +10 -5
  199. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  200. package/build-module/components/block-popover/inbetween.js +173 -0
  201. package/build-module/components/block-popover/inbetween.js.map +1 -0
  202. package/build-module/components/block-popover/index.js +72 -0
  203. package/build-module/components/block-popover/index.js.map +1 -0
  204. package/build-module/components/{block-tools → block-popover}/use-popover-scroll.js +3 -1
  205. package/build-module/components/block-popover/use-popover-scroll.js.map +1 -0
  206. package/build-module/components/block-preview/index.js +1 -1
  207. package/build-module/components/block-preview/index.js.map +1 -1
  208. package/build-module/components/block-styles/index.js +1 -9
  209. package/build-module/components/block-styles/index.js.map +1 -1
  210. package/build-module/components/block-tools/back-compat.js +1 -1
  211. package/build-module/components/block-tools/back-compat.js.map +1 -1
  212. package/build-module/components/block-tools/block-selection-button.js +3 -2
  213. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  214. package/build-module/components/block-tools/index.js +3 -3
  215. package/build-module/components/block-tools/index.js.map +1 -1
  216. package/build-module/components/block-tools/insertion-point.js +16 -121
  217. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  218. package/build-module/components/block-tools/selected-block-popover.js +199 -0
  219. package/build-module/components/block-tools/selected-block-popover.js.map +1 -0
  220. package/build-module/components/border-radius-control/input-controls.js +11 -4
  221. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  222. package/build-module/components/color-style-selector/index.js +6 -0
  223. package/build-module/components/color-style-selector/index.js.map +1 -1
  224. package/build-module/components/colors-gradients/dropdown.js +151 -46
  225. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  226. package/build-module/components/duotone-control/index.js +4 -1
  227. package/build-module/components/duotone-control/index.js.map +1 -1
  228. package/build-module/components/image-editor/use-save-image.js +2 -1
  229. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  230. package/build-module/components/index.js +1 -3
  231. package/build-module/components/index.js.map +1 -1
  232. package/build-module/components/inserter/index.native.js +32 -11
  233. package/build-module/components/inserter/index.native.js.map +1 -1
  234. package/build-module/components/link-control/constants.js +5 -0
  235. package/build-module/components/link-control/constants.js.map +1 -1
  236. package/build-module/components/link-control/search-results.js +3 -4
  237. package/build-module/components/link-control/search-results.js.map +1 -1
  238. package/build-module/components/link-control/use-search-handler.js +5 -5
  239. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  240. package/build-module/components/list-view/block.js +15 -16
  241. package/build-module/components/list-view/block.js.map +1 -1
  242. package/build-module/components/list-view/branch.js +9 -13
  243. package/build-module/components/list-view/branch.js.map +1 -1
  244. package/build-module/components/list-view/context.js +1 -4
  245. package/build-module/components/list-view/context.js.map +1 -1
  246. package/build-module/components/list-view/drop-indicator.js +0 -1
  247. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  248. package/build-module/components/list-view/index.js +15 -31
  249. package/build-module/components/list-view/index.js.map +1 -1
  250. package/build-module/components/navigable-toolbar/index.js +12 -2
  251. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  252. package/build-module/components/rich-text/format-toolbar-container.js +0 -1
  253. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  254. package/build-module/components/rich-text/index.js +1 -5
  255. package/build-module/components/rich-text/index.js.map +1 -1
  256. package/build-module/components/rich-text/index.native.js +0 -4
  257. package/build-module/components/rich-text/index.native.js.map +1 -1
  258. package/build-module/components/url-input/index.js +11 -4
  259. package/build-module/components/url-input/index.js.map +1 -1
  260. package/build-module/components/use-block-display-information/index.js +3 -1
  261. package/build-module/components/use-block-display-information/index.js.map +1 -1
  262. package/build-module/components/use-block-drop-zone/index.native.js +148 -0
  263. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -0
  264. package/build-module/components/use-on-block-drop/index.native.js +83 -0
  265. package/build-module/components/use-on-block-drop/index.native.js.map +1 -0
  266. package/build-module/components/use-setting/index.js +43 -19
  267. package/build-module/components/use-setting/index.js.map +1 -1
  268. package/build-module/hooks/anchor.js.map +1 -1
  269. package/build-module/hooks/border.js +453 -44
  270. package/build-module/hooks/border.js.map +1 -1
  271. package/build-module/hooks/color-panel.js +11 -6
  272. package/build-module/hooks/color-panel.js.map +1 -1
  273. package/build-module/hooks/dimensions.js +5 -5
  274. package/build-module/hooks/dimensions.js.map +1 -1
  275. package/build-module/hooks/index.js +2 -1
  276. package/build-module/hooks/index.js.map +1 -1
  277. package/build-module/hooks/margin.js +61 -13
  278. package/build-module/hooks/margin.js.map +1 -1
  279. package/build-module/hooks/padding.js +57 -13
  280. package/build-module/hooks/padding.js.map +1 -1
  281. package/build-module/hooks/settings.js +29 -0
  282. package/build-module/hooks/settings.js.map +1 -0
  283. package/build-module/hooks/style.js +15 -14
  284. package/build-module/hooks/style.js.map +1 -1
  285. package/build-module/hooks/typography.js +6 -2
  286. package/build-module/hooks/typography.js.map +1 -1
  287. package/build-module/hooks/use-border-props.js +21 -30
  288. package/build-module/hooks/use-border-props.js.map +1 -1
  289. package/build-module/store/actions.js +14 -2
  290. package/build-module/store/actions.js.map +1 -1
  291. package/build-module/store/defaults.js +0 -1
  292. package/build-module/store/defaults.js.map +1 -1
  293. package/build-module/store/reducer.js +0 -24
  294. package/build-module/store/reducer.js.map +1 -1
  295. package/build-module/store/selectors.js +44 -15
  296. package/build-module/store/selectors.js.map +1 -1
  297. package/build-style/style-rtl.css +148 -410
  298. package/build-style/style.css +148 -410
  299. package/package.json +28 -28
  300. package/src/components/block-alignment-control/constants.js +45 -0
  301. package/src/components/block-alignment-control/ui.js +69 -109
  302. package/src/components/block-alignment-control/ui.native.js +86 -0
  303. package/src/components/block-alignment-matrix-control/index.js +1 -5
  304. package/src/components/block-content-overlay/index.js +9 -79
  305. package/src/components/block-content-overlay/style.scss +2 -11
  306. package/src/components/block-draggable/draggable-chip.native.js +49 -0
  307. package/src/components/block-draggable/dropping-insertion-point.native.js +181 -0
  308. package/src/components/block-draggable/dropping-insertion-point.native.scss +8 -0
  309. package/src/components/block-draggable/index.native.js +458 -0
  310. package/src/components/block-draggable/style.native.scss +19 -0
  311. package/src/components/block-draggable/use-scroll-when-dragging.native.js +135 -0
  312. package/src/components/block-list/block-list-context.native.js +175 -0
  313. package/src/components/block-list/block-list-item-cell.native.js +49 -0
  314. package/src/components/block-list/block-list-item.native.js +7 -11
  315. package/src/components/block-list/block.native.js +38 -8
  316. package/src/components/block-list/index.native.js +54 -13
  317. package/src/components/block-list/style.scss +7 -18
  318. package/src/components/block-list/test/block-list-context.native.js +253 -0
  319. package/src/components/block-list/test/fixtures/block-list-context.native.js +79 -0
  320. package/src/components/block-list/use-block-props/index.js +10 -5
  321. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -11
  322. package/src/components/block-list/use-in-between-inserter.js +1 -1
  323. package/src/components/block-lock/modal.js +42 -3
  324. package/src/components/block-lock/toolbar.js +2 -2
  325. package/src/components/block-lock/use-block-lock.js +4 -1
  326. package/src/components/block-mobile-toolbar/index.native.js +8 -1
  327. package/src/components/block-mover/button.js +5 -7
  328. package/src/components/block-mover/index.js +37 -60
  329. package/src/components/block-mover/index.native.js +22 -6
  330. package/src/components/block-mover/stories/index.js +110 -0
  331. package/src/components/block-mover/style.scss +48 -138
  332. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +6 -0
  333. package/src/components/block-navigation/dropdown.js +12 -8
  334. package/src/components/block-popover/README.md +41 -0
  335. package/src/components/block-popover/inbetween.js +188 -0
  336. package/src/components/block-popover/index.js +75 -0
  337. package/src/components/block-popover/style.scss +28 -0
  338. package/src/components/{block-tools → block-popover}/use-popover-scroll.js +3 -1
  339. package/src/components/block-preview/index.js +1 -4
  340. package/src/components/block-styles/index.js +1 -12
  341. package/src/components/block-switcher/style.scss +2 -43
  342. package/src/components/block-toolbar/style.scss +0 -12
  343. package/src/components/block-tools/back-compat.js +1 -1
  344. package/src/components/block-tools/block-selection-button.js +3 -1
  345. package/src/components/block-tools/index.js +6 -4
  346. package/src/components/block-tools/insertion-point.js +19 -152
  347. package/src/components/block-tools/{block-popover.js → selected-block-popover.js} +24 -151
  348. package/src/components/block-tools/style.scss +12 -135
  349. package/src/components/border-radius-control/input-controls.js +16 -8
  350. package/src/components/border-radius-control/style.scss +7 -3
  351. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  352. package/src/components/color-style-selector/index.js +18 -9
  353. package/src/components/colors-gradients/dropdown.js +156 -62
  354. package/src/components/colors-gradients/style.scss +51 -23
  355. package/src/components/default-block-appender/style.scss +1 -2
  356. package/src/components/duotone-control/index.js +8 -1
  357. package/src/components/duotone-control/style.scss +1 -7
  358. package/src/components/gradients/README.md +29 -0
  359. package/src/components/image-editor/use-save-image.js +2 -1
  360. package/src/components/image-size-control/README.md +1 -1
  361. package/src/components/index.js +1 -3
  362. package/src/components/inserter/index.native.js +60 -25
  363. package/src/components/inserter/style.native.scss +25 -3
  364. package/src/components/inserter/style.scss +2 -1
  365. package/src/components/link-control/constants.js +11 -0
  366. package/src/components/link-control/search-results.js +4 -5
  367. package/src/components/link-control/use-search-handler.js +11 -5
  368. package/src/components/list-view/block.js +24 -34
  369. package/src/components/list-view/branch.js +10 -20
  370. package/src/components/list-view/context.js +1 -4
  371. package/src/components/list-view/drop-indicator.js +0 -1
  372. package/src/components/list-view/index.js +11 -41
  373. package/src/components/list-view/style.scss +2 -1
  374. package/src/components/navigable-toolbar/README.md +16 -0
  375. package/src/components/navigable-toolbar/index.js +12 -2
  376. package/src/components/preview-options/style.scss +0 -4
  377. package/src/components/rich-text/format-toolbar-container.js +0 -1
  378. package/src/components/rich-text/index.js +1 -3
  379. package/src/components/rich-text/index.native.js +0 -4
  380. package/src/components/rich-text/style.scss +2 -8
  381. package/src/components/url-input/index.js +9 -4
  382. package/src/components/use-block-display-information/index.js +2 -0
  383. package/src/components/use-block-drop-zone/index.native.js +173 -0
  384. package/src/components/use-on-block-drop/index.native.js +119 -0
  385. package/src/components/use-setting/index.js +57 -21
  386. package/src/hooks/anchor.js +1 -1
  387. package/src/hooks/border.js +429 -72
  388. package/src/hooks/color-panel.js +13 -9
  389. package/src/hooks/color.scss +0 -62
  390. package/src/hooks/dimensions.js +44 -38
  391. package/src/hooks/index.js +2 -1
  392. package/src/hooks/margin.js +64 -15
  393. package/src/hooks/padding.js +60 -15
  394. package/src/hooks/padding.scss +12 -0
  395. package/src/hooks/settings.js +32 -0
  396. package/src/hooks/style.js +25 -39
  397. package/src/hooks/test/settings.js +48 -0
  398. package/src/hooks/typography.js +2 -0
  399. package/src/hooks/use-border-props.js +15 -32
  400. package/src/store/actions.js +14 -2
  401. package/src/store/defaults.js +0 -1
  402. package/src/store/reducer.js +0 -21
  403. package/src/store/selectors.js +46 -15
  404. package/src/store/test/actions.js +0 -18
  405. package/src/store/test/reducer.js +0 -19
  406. package/src/store/test/selectors.js +17 -19
  407. package/src/style.scss +2 -3
  408. package/tsconfig.tsbuildinfo +1 -1
  409. package/build/components/block-mobile-toolbar/index.js +0 -42
  410. package/build/components/block-mobile-toolbar/index.js.map +0 -1
  411. package/build/components/block-tools/block-popover.js +0 -327
  412. package/build/components/block-tools/block-popover.js.map +0 -1
  413. package/build/components/block-tools/use-popover-scroll.js.map +0 -1
  414. package/build/components/border-style-control/index.js +0 -60
  415. package/build/components/border-style-control/index.js.map +0 -1
  416. package/build/components/colors-gradients/tools-panel-color-dropdown.js +0 -89
  417. package/build/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  418. package/build/components/list-view/appender.js +0 -93
  419. package/build/components/list-view/appender.js.map +0 -1
  420. package/build/components/list-view/list-item.js +0 -62
  421. package/build/components/list-view/list-item.js.map +0 -1
  422. package/build/components/rich-text/use-caret-in-format.js +0 -43
  423. package/build/components/rich-text/use-caret-in-format.js.map +0 -1
  424. package/build/hooks/border-color.js +0 -302
  425. package/build/hooks/border-color.js.map +0 -1
  426. package/build/hooks/border-style.js +0 -96
  427. package/build/hooks/border-style.js.map +0 -1
  428. package/build/hooks/border-width.js +0 -162
  429. package/build/hooks/border-width.js.map +0 -1
  430. package/build-module/components/block-mobile-toolbar/index.js +0 -31
  431. package/build-module/components/block-mobile-toolbar/index.js.map +0 -1
  432. package/build-module/components/block-tools/block-popover.js +0 -306
  433. package/build-module/components/block-tools/block-popover.js.map +0 -1
  434. package/build-module/components/block-tools/use-popover-scroll.js.map +0 -1
  435. package/build-module/components/border-style-control/index.js +0 -50
  436. package/build-module/components/border-style-control/index.js.map +0 -1
  437. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js +0 -75
  438. package/build-module/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
  439. package/build-module/components/list-view/appender.js +0 -76
  440. package/build-module/components/list-view/appender.js.map +0 -1
  441. package/build-module/components/list-view/list-item.js +0 -47
  442. package/build-module/components/list-view/list-item.js.map +0 -1
  443. package/build-module/components/rich-text/use-caret-in-format.js +0 -33
  444. package/build-module/components/rich-text/use-caret-in-format.js.map +0 -1
  445. package/build-module/hooks/border-color.js +0 -276
  446. package/build-module/hooks/border-color.js.map +0 -1
  447. package/build-module/hooks/border-style.js +0 -78
  448. package/build-module/hooks/border-style.js.map +0 -1
  449. package/build-module/hooks/border-width.js +0 -143
  450. package/build-module/hooks/border-width.js.map +0 -1
  451. package/src/components/block-alignment-matrix-control/style.scss +0 -10
  452. package/src/components/block-mobile-toolbar/index.js +0 -24
  453. package/src/components/block-mobile-toolbar/style.scss +0 -29
  454. package/src/components/border-style-control/index.js +0 -47
  455. package/src/components/border-style-control/style.scss +0 -18
  456. package/src/components/colors-gradients/tools-panel-color-dropdown.js +0 -85
  457. package/src/components/list-view/appender.js +0 -82
  458. package/src/components/list-view/list-item.js +0 -59
  459. package/src/components/rich-text/use-caret-in-format.js +0 -28
  460. package/src/hooks/border-color.js +0 -315
  461. package/src/hooks/border-style.js +0 -64
  462. package/src/hooks/border-width.js +0 -139
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = DroppingInsertionPoint;
9
+
10
+ var _element = require("@wordpress/element");
11
+
12
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
13
+
14
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
15
+
16
+ var _data = require("@wordpress/data");
17
+
18
+ var _reactNativeBridge = require("@wordpress/react-native-bridge");
19
+
20
+ var _store = require("../../store");
21
+
22
+ var _blockListContext = require("../block-list/block-list-context");
23
+
24
+ var _droppingInsertionPoint = _interopRequireDefault(require("./dropping-insertion-point.scss"));
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ /**
31
+ * External dependencies
32
+ */
33
+
34
+ /**
35
+ * WordPress dependencies
36
+ */
37
+
38
+ /**
39
+ * Internal dependencies
40
+ */
41
+
42
+ /**
43
+ * Dropping zone indicator component.
44
+ *
45
+ * This component shows where a block can be dropped when it's being dragged.
46
+ *
47
+ * @param {Object} props Component props.
48
+ * @param {Object} props.scroll Scroll offset object.
49
+ * @param {Object} props.currentYPosition Current Y coordinate position when dragging.
50
+ * @param {import('react-native-reanimated').SharedValue} props.isDragging Whether or not dragging has started.
51
+ * @param {import('react-native-reanimated').SharedValue} props.targetBlockIndex Current block target index.
52
+ *
53
+ * @return {JSX.Element} The component to be rendered.
54
+ */
55
+ function DroppingInsertionPoint(_ref) {
56
+ let {
57
+ scroll,
58
+ currentYPosition,
59
+ isDragging,
60
+ targetBlockIndex
61
+ } = _ref;
62
+ const {
63
+ getBlockOrder,
64
+ isBlockBeingDragged,
65
+ isDraggingBlocks,
66
+ getPreviousBlockClientId,
67
+ getNextBlockClientId
68
+ } = (0, _data.useSelect)(_store.store);
69
+ const {
70
+ blocksLayouts,
71
+ findBlockLayoutByClientId
72
+ } = (0, _blockListContext.useBlockListContext)();
73
+ const {
74
+ top,
75
+ bottom
76
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
77
+ const {
78
+ height
79
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaFrame)();
80
+ const safeAreaOffset = top + bottom;
81
+ const maxHeight = height - (safeAreaOffset + _droppingInsertionPoint.default['dropping-insertion-point'].height);
82
+ const blockYPosition = (0, _reactNativeReanimated.useSharedValue)(0);
83
+ const opacity = (0, _reactNativeReanimated.useSharedValue)(0);
84
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => isDragging.value, value => {
85
+ if (!value) {
86
+ opacity.value = 0;
87
+ blockYPosition.value = 0;
88
+ }
89
+ });
90
+
91
+ function getSelectedBlockIndicatorPosition(positions) {
92
+ const currentYPositionWithScroll = currentYPosition.value + scroll.offsetY.value;
93
+ const midpoint = (positions.top + positions.bottom) / 2;
94
+ return midpoint < currentYPositionWithScroll ? positions.bottom : positions.top;
95
+ }
96
+
97
+ function setIndicatorPosition(index) {
98
+ const insertionPointIndex = index;
99
+ const order = getBlockOrder();
100
+ const isDraggingAnyBlocks = isDraggingBlocks();
101
+
102
+ if (!isDraggingAnyBlocks || insertionPointIndex === null || !order.length) {
103
+ return;
104
+ }
105
+
106
+ let previousClientId = order[insertionPointIndex - 1];
107
+ let nextClientId = order[insertionPointIndex];
108
+
109
+ while (isBlockBeingDragged(previousClientId)) {
110
+ previousClientId = getPreviousBlockClientId(previousClientId);
111
+ }
112
+
113
+ while (isBlockBeingDragged(nextClientId)) {
114
+ nextClientId = getNextBlockClientId(nextClientId);
115
+ }
116
+
117
+ const previousElement = previousClientId ? findBlockLayoutByClientId(blocksLayouts.current, previousClientId) : null;
118
+ const nextElement = nextClientId ? findBlockLayoutByClientId(blocksLayouts.current, nextClientId) : null;
119
+ const previousElementPosition = previousElement ? previousElement.y + previousElement.height : 0;
120
+ const nextElementPosition = nextElement ? nextElement.y : 0;
121
+ const elementsPositions = {
122
+ top: Math.floor(previousElement ? previousElementPosition : nextElementPosition),
123
+ bottom: Math.floor(nextElement ? nextElementPosition : previousElementPosition)
124
+ };
125
+ const nextPosition = elementsPositions.top !== elementsPositions.bottom ? getSelectedBlockIndicatorPosition(elementsPositions) : elementsPositions.top;
126
+
127
+ if (nextPosition && blockYPosition.value !== nextPosition) {
128
+ opacity.value = 0;
129
+ blockYPosition.value = nextPosition;
130
+ opacity.value = (0, _reactNativeReanimated.withTiming)(1);
131
+ (0, _reactNativeBridge.generateHapticFeedback)();
132
+ }
133
+ }
134
+
135
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => targetBlockIndex.value, (value, previous) => {
136
+ if (value !== previous) {
137
+ (0, _reactNativeReanimated.runOnJS)(setIndicatorPosition)(value);
138
+ }
139
+ });
140
+ const animatedStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
141
+ const translationY = blockYPosition.value - scroll.offsetY.value; // Prevents overflowing behind the header/footer
142
+
143
+ const shouldHideIndicator = translationY < 0 || translationY > maxHeight;
144
+ return {
145
+ opacity: shouldHideIndicator ? 0 : opacity.value,
146
+ transform: [{
147
+ translateY: translationY
148
+ }]
149
+ };
150
+ });
151
+ const insertionPointStyles = [_droppingInsertionPoint.default['dropping-insertion-point'], animatedStyles];
152
+ return (0, _element.createElement)(_reactNativeReanimated.default.View, {
153
+ pointerEvents: "none",
154
+ style: insertionPointStyles
155
+ });
156
+ }
157
+ //# sourceMappingURL=dropping-insertion-point.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/dropping-insertion-point.native.js"],"names":["DroppingInsertionPoint","scroll","currentYPosition","isDragging","targetBlockIndex","getBlockOrder","isBlockBeingDragged","isDraggingBlocks","getPreviousBlockClientId","getNextBlockClientId","blockEditorStore","blocksLayouts","findBlockLayoutByClientId","top","bottom","height","safeAreaOffset","maxHeight","styles","blockYPosition","opacity","value","getSelectedBlockIndicatorPosition","positions","currentYPositionWithScroll","offsetY","midpoint","setIndicatorPosition","index","insertionPointIndex","order","isDraggingAnyBlocks","length","previousClientId","nextClientId","previousElement","current","nextElement","previousElementPosition","y","nextElementPosition","elementsPositions","Math","floor","nextPosition","previous","animatedStyles","translationY","shouldHideIndicator","transform","translateY","insertionPointStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport Animated, {\n\tuseSharedValue,\n\tuseAnimatedStyle,\n\twithTiming,\n\tuseAnimatedReaction,\n\trunOnJS,\n} from 'react-native-reanimated';\nimport {\n\tuseSafeAreaInsets,\n\tuseSafeAreaFrame,\n} from 'react-native-safe-area-context';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { generateHapticFeedback } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockListContext } from '../block-list/block-list-context';\nimport styles from './dropping-insertion-point.scss';\n\n/**\n * Dropping zone indicator component.\n *\n * This component shows where a block can be dropped when it's being dragged.\n *\n * @param {Object} props Component props.\n * @param {Object} props.scroll Scroll offset object.\n * @param {Object} props.currentYPosition Current Y coordinate position when dragging.\n * @param {import('react-native-reanimated').SharedValue} props.isDragging Whether or not dragging has started.\n * @param {import('react-native-reanimated').SharedValue} props.targetBlockIndex Current block target index.\n *\n * @return {JSX.Element} The component to be rendered.\n */\nexport default function DroppingInsertionPoint( {\n\tscroll,\n\tcurrentYPosition,\n\tisDragging,\n\ttargetBlockIndex,\n} ) {\n\tconst {\n\t\tgetBlockOrder,\n\t\tisBlockBeingDragged,\n\t\tisDraggingBlocks,\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t} = useSelect( blockEditorStore );\n\n\tconst { blocksLayouts, findBlockLayoutByClientId } = useBlockListContext();\n\tconst { top, bottom } = useSafeAreaInsets();\n\tconst { height } = useSafeAreaFrame();\n\tconst safeAreaOffset = top + bottom;\n\tconst maxHeight =\n\t\theight -\n\t\t( safeAreaOffset + styles[ 'dropping-insertion-point' ].height );\n\n\tconst blockYPosition = useSharedValue( 0 );\n\tconst opacity = useSharedValue( 0 );\n\n\tuseAnimatedReaction(\n\t\t() => isDragging.value,\n\t\t( value ) => {\n\t\t\tif ( ! value ) {\n\t\t\t\topacity.value = 0;\n\t\t\t\tblockYPosition.value = 0;\n\t\t\t}\n\t\t}\n\t);\n\n\tfunction getSelectedBlockIndicatorPosition( positions ) {\n\t\tconst currentYPositionWithScroll =\n\t\t\tcurrentYPosition.value + scroll.offsetY.value;\n\t\tconst midpoint = ( positions.top + positions.bottom ) / 2;\n\n\t\treturn midpoint < currentYPositionWithScroll\n\t\t\t? positions.bottom\n\t\t\t: positions.top;\n\t}\n\n\tfunction setIndicatorPosition( index ) {\n\t\tconst insertionPointIndex = index;\n\t\tconst order = getBlockOrder();\n\t\tconst isDraggingAnyBlocks = isDraggingBlocks();\n\n\t\tif (\n\t\t\t! isDraggingAnyBlocks ||\n\t\t\tinsertionPointIndex === null ||\n\t\t\t! order.length\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet previousClientId = order[ insertionPointIndex - 1 ];\n\t\tlet nextClientId = order[ insertionPointIndex ];\n\n\t\twhile ( isBlockBeingDragged( previousClientId ) ) {\n\t\t\tpreviousClientId = getPreviousBlockClientId( previousClientId );\n\t\t}\n\n\t\twhile ( isBlockBeingDragged( nextClientId ) ) {\n\t\t\tnextClientId = getNextBlockClientId( nextClientId );\n\t\t}\n\n\t\tconst previousElement = previousClientId\n\t\t\t? findBlockLayoutByClientId(\n\t\t\t\t\tblocksLayouts.current,\n\t\t\t\t\tpreviousClientId\n\t\t\t )\n\t\t\t: null;\n\t\tconst nextElement = nextClientId\n\t\t\t? findBlockLayoutByClientId( blocksLayouts.current, nextClientId )\n\t\t\t: null;\n\n\t\tconst previousElementPosition = previousElement\n\t\t\t? previousElement.y + previousElement.height\n\t\t\t: 0;\n\t\tconst nextElementPosition = nextElement ? nextElement.y : 0;\n\n\t\tconst elementsPositions = {\n\t\t\ttop: Math.floor(\n\t\t\t\tpreviousElement ? previousElementPosition : nextElementPosition\n\t\t\t),\n\t\t\tbottom: Math.floor(\n\t\t\t\tnextElement ? nextElementPosition : previousElementPosition\n\t\t\t),\n\t\t};\n\n\t\tconst nextPosition =\n\t\t\telementsPositions.top !== elementsPositions.bottom\n\t\t\t\t? getSelectedBlockIndicatorPosition( elementsPositions )\n\t\t\t\t: elementsPositions.top;\n\n\t\tif ( nextPosition && blockYPosition.value !== nextPosition ) {\n\t\t\topacity.value = 0;\n\t\t\tblockYPosition.value = nextPosition;\n\t\t\topacity.value = withTiming( 1 );\n\t\t\tgenerateHapticFeedback();\n\t\t}\n\t}\n\n\tuseAnimatedReaction(\n\t\t() => targetBlockIndex.value,\n\t\t( value, previous ) => {\n\t\t\tif ( value !== previous ) {\n\t\t\t\trunOnJS( setIndicatorPosition )( value );\n\t\t\t}\n\t\t}\n\t);\n\n\tconst animatedStyles = useAnimatedStyle( () => {\n\t\tconst translationY = blockYPosition.value - scroll.offsetY.value;\n\t\t// Prevents overflowing behind the header/footer\n\t\tconst shouldHideIndicator =\n\t\t\ttranslationY < 0 || translationY > maxHeight;\n\n\t\treturn {\n\t\t\topacity: shouldHideIndicator ? 0 : opacity.value,\n\t\t\ttransform: [\n\t\t\t\t{\n\t\t\t\t\ttranslateY: translationY,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t} );\n\n\tconst insertionPointStyles = [\n\t\tstyles[ 'dropping-insertion-point' ],\n\t\tanimatedStyles,\n\t];\n\n\treturn (\n\t\t<Animated.View pointerEvents=\"none\" style={ insertionPointStyles } />\n\t);\n}\n"]}
@@ -0,0 +1,484 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.BlockDraggableWrapper = void 0;
9
+
10
+ var _element = require("@wordpress/element");
11
+
12
+ var _reactNative = require("react-native");
13
+
14
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
15
+
16
+ var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
17
+
18
+ var _components = require("@wordpress/components");
19
+
20
+ var _data = require("@wordpress/data");
21
+
22
+ var _blocks = require("@wordpress/blocks");
23
+
24
+ var _reactNativeBridge = require("@wordpress/react-native-bridge");
25
+
26
+ var _reactNativeAztec = _interopRequireDefault(require("@wordpress/react-native-aztec"));
27
+
28
+ var _useScrollWhenDragging = _interopRequireDefault(require("./use-scroll-when-dragging"));
29
+
30
+ var _draggableChip = _interopRequireDefault(require("./draggable-chip"));
31
+
32
+ var _store = require("../../store");
33
+
34
+ var _blockListContext = require("../block-list/block-list-context");
35
+
36
+ var _droppingInsertionPoint = _interopRequireDefault(require("./dropping-insertion-point"));
37
+
38
+ var _useBlockDropZone = _interopRequireDefault(require("../use-block-drop-zone"));
39
+
40
+ var _style = _interopRequireDefault(require("./style.scss"));
41
+
42
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
+
44
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
+
46
+ /**
47
+ * External dependencies
48
+ */
49
+
50
+ /**
51
+ * WordPress dependencies
52
+ */
53
+
54
+ /**
55
+ * Internal dependencies
56
+ */
57
+ const CHIP_OFFSET_TO_TOUCH_POSITION = 32;
58
+ const BLOCK_OPACITY_ANIMATION_CONFIG = {
59
+ duration: 350
60
+ };
61
+ const BLOCK_OPACITY_ANIMATION_DELAY = 250;
62
+ const DEFAULT_LONG_PRESS_MIN_DURATION = 500;
63
+ const DEFAULT_IOS_LONG_PRESS_MIN_DURATION = DEFAULT_LONG_PRESS_MIN_DURATION - 50;
64
+ /**
65
+ * Block draggable wrapper component
66
+ *
67
+ * This component handles all the interactions for dragging blocks.
68
+ * It relies on the block list and its context for dragging, hence it
69
+ * should be rendered between the `BlockListProvider` component and the
70
+ * block list rendering. It also requires listening to scroll events,
71
+ * therefore for this purpose, it returns the `onScroll` event handler
72
+ * that should be attached to the list that renders the blocks.
73
+ *
74
+ *
75
+ * @param {Object} props Component props.
76
+ * @param {JSX.Element} props.children Children to be rendered.
77
+ * @param {boolean} props.isRTL Check if current locale is RTL.
78
+ *
79
+ * @return {Function} Render function that passes `onScroll` event handler.
80
+ */
81
+
82
+ const BlockDraggableWrapper = _ref => {
83
+ let {
84
+ children,
85
+ isRTL
86
+ } = _ref;
87
+ const [draggedBlockIcon, setDraggedBlockIcon] = (0, _element.useState)();
88
+ const {
89
+ selectBlock,
90
+ startDraggingBlocks,
91
+ stopDraggingBlocks
92
+ } = (0, _data.useDispatch)(_store.store);
93
+ const {
94
+ scrollRef
95
+ } = (0, _blockListContext.useBlockListContext)();
96
+ const animatedScrollRef = (0, _reactNativeReanimated.useAnimatedRef)();
97
+ const {
98
+ left,
99
+ right
100
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
101
+ const {
102
+ width
103
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaFrame)();
104
+ const safeAreaOffset = left + right;
105
+ const contentWidth = width - safeAreaOffset;
106
+ animatedScrollRef(scrollRef);
107
+ const scroll = {
108
+ offsetY: (0, _reactNativeReanimated.useSharedValue)(0)
109
+ };
110
+ const chip = {
111
+ x: (0, _reactNativeReanimated.useSharedValue)(0),
112
+ y: (0, _reactNativeReanimated.useSharedValue)(0),
113
+ width: (0, _reactNativeReanimated.useSharedValue)(0),
114
+ height: (0, _reactNativeReanimated.useSharedValue)(0)
115
+ };
116
+ const currentYPosition = (0, _reactNativeReanimated.useSharedValue)(0);
117
+ const isDragging = (0, _reactNativeReanimated.useSharedValue)(false);
118
+ const [startScrolling, scrollOnDragOver, stopScrolling, draggingScrollHandler] = (0, _useScrollWhenDragging.default)();
119
+
120
+ const scrollHandler = event => {
121
+ 'worklet';
122
+
123
+ const {
124
+ contentOffset
125
+ } = event;
126
+ scroll.offsetY.value = contentOffset.y;
127
+ draggingScrollHandler(event);
128
+ };
129
+
130
+ const {
131
+ onBlockDragOver,
132
+ onBlockDragEnd,
133
+ onBlockDrop,
134
+ targetBlockIndex
135
+ } = (0, _useBlockDropZone.default)(); // Stop dragging blocks if the block draggable is unmounted.
136
+
137
+ (0, _element.useEffect)(() => {
138
+ return () => {
139
+ if (isDragging.value) {
140
+ stopDraggingBlocks();
141
+ }
142
+ };
143
+ }, []);
144
+
145
+ const setDraggedBlockIconByClientId = clientId => {
146
+ var _getBlockType;
147
+
148
+ const blockName = (0, _data.select)(_store.store).getBlockName(clientId);
149
+ const blockIcon = (_getBlockType = (0, _blocks.getBlockType)(blockName)) === null || _getBlockType === void 0 ? void 0 : _getBlockType.icon;
150
+
151
+ if (blockIcon) {
152
+ setDraggedBlockIcon(blockIcon);
153
+ }
154
+ };
155
+
156
+ const onStartDragging = _ref2 => {
157
+ let {
158
+ clientId,
159
+ position
160
+ } = _ref2;
161
+
162
+ if (clientId) {
163
+ startDraggingBlocks([clientId]);
164
+ setDraggedBlockIconByClientId(clientId);
165
+ (0, _reactNativeReanimated.runOnUI)(startScrolling)(position.y);
166
+ (0, _reactNativeBridge.generateHapticFeedback)();
167
+ } else {
168
+ // We stop dragging if no block is found.
169
+ (0, _reactNativeReanimated.runOnUI)(stopDragging)();
170
+ }
171
+ };
172
+
173
+ const onStopDragging = _ref3 => {
174
+ let {
175
+ clientId
176
+ } = _ref3;
177
+
178
+ if (clientId) {
179
+ onBlockDrop({
180
+ // Dropping is only allowed at root level
181
+ srcRootClientId: '',
182
+ srcClientIds: [clientId],
183
+ type: 'block'
184
+ });
185
+ selectBlock(clientId);
186
+ setDraggedBlockIcon(undefined);
187
+ }
188
+
189
+ onBlockDragEnd();
190
+ stopDraggingBlocks();
191
+ };
192
+
193
+ const onChipLayout = _ref4 => {
194
+ let {
195
+ nativeEvent: {
196
+ layout
197
+ }
198
+ } = _ref4;
199
+
200
+ if (layout.width > 0) {
201
+ chip.width.value = layout.width;
202
+ }
203
+
204
+ if (layout.height > 0) {
205
+ chip.height.value = layout.height;
206
+ }
207
+ };
208
+
209
+ const startDragging = _ref5 => {
210
+ 'worklet';
211
+
212
+ let {
213
+ x,
214
+ y,
215
+ id
216
+ } = _ref5;
217
+ const dragPosition = {
218
+ x,
219
+ y
220
+ };
221
+ chip.x.value = dragPosition.x;
222
+ chip.y.value = dragPosition.y;
223
+ currentYPosition.value = dragPosition.y;
224
+ isDragging.value = true;
225
+ (0, _reactNativeReanimated.runOnJS)(onStartDragging)({
226
+ clientId: id,
227
+ position: dragPosition
228
+ });
229
+ };
230
+
231
+ const updateDragging = _ref6 => {
232
+ 'worklet';
233
+
234
+ let {
235
+ x,
236
+ y
237
+ } = _ref6;
238
+ const dragPosition = {
239
+ x,
240
+ y
241
+ };
242
+ chip.x.value = dragPosition.x;
243
+ chip.y.value = dragPosition.y;
244
+ currentYPosition.value = dragPosition.y;
245
+ (0, _reactNativeReanimated.runOnJS)(onBlockDragOver)({
246
+ x,
247
+ y: y + scroll.offsetY.value
248
+ }); // Update scrolling velocity
249
+
250
+ scrollOnDragOver(dragPosition.y);
251
+ };
252
+
253
+ const stopDragging = _ref7 => {
254
+ 'worklet';
255
+
256
+ let {
257
+ id
258
+ } = _ref7;
259
+ isDragging.value = false;
260
+ stopScrolling();
261
+ (0, _reactNativeReanimated.runOnJS)(onStopDragging)({
262
+ clientId: id
263
+ });
264
+ };
265
+
266
+ const chipDynamicStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
267
+ const chipOffset = chip.width.value / 2;
268
+ const translateX = !isRTL ? chip.x.value - chipOffset : -(contentWidth - (chip.x.value + chipOffset));
269
+ return {
270
+ transform: [{
271
+ translateX
272
+ }, {
273
+ translateY: chip.y.value - chip.height.value - CHIP_OFFSET_TO_TOUCH_POSITION
274
+ }]
275
+ };
276
+ });
277
+ const chipStyles = [chipDynamicStyles, _style.default['draggable-chip__wrapper']];
278
+
279
+ const exitingAnimation = _ref8 => {
280
+ 'worklet';
281
+
282
+ let {
283
+ currentHeight,
284
+ currentWidth
285
+ } = _ref8;
286
+ const translateX = !isRTL ? 0 : currentWidth * -1;
287
+ const duration = 150;
288
+ const animations = {
289
+ transform: [{
290
+ translateY: (0, _reactNativeReanimated.withTiming)(currentHeight, {
291
+ duration
292
+ })
293
+ }, {
294
+ translateX: (0, _reactNativeReanimated.withTiming)(translateX, {
295
+ duration
296
+ })
297
+ }, {
298
+ scale: (0, _reactNativeReanimated.withTiming)(0, {
299
+ duration
300
+ })
301
+ }]
302
+ };
303
+ const initialValues = {
304
+ transform: [{
305
+ translateY: 0
306
+ }, {
307
+ translateX
308
+ }, {
309
+ scale: 1
310
+ }]
311
+ };
312
+ return {
313
+ initialValues,
314
+ animations
315
+ };
316
+ };
317
+
318
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_droppingInsertionPoint.default, {
319
+ scroll: scroll,
320
+ currentYPosition: currentYPosition,
321
+ isDragging: isDragging,
322
+ targetBlockIndex: targetBlockIndex
323
+ }), (0, _element.createElement)(_components.Draggable, {
324
+ onDragStart: startDragging,
325
+ onDragOver: updateDragging,
326
+ onDragEnd: stopDragging
327
+ }, children({
328
+ onScroll: scrollHandler
329
+ })), (0, _element.createElement)(_reactNativeReanimated.default.View, {
330
+ onLayout: onChipLayout,
331
+ style: chipStyles,
332
+ pointerEvents: "none"
333
+ }, draggedBlockIcon && (0, _element.createElement)(_reactNativeReanimated.default.View, {
334
+ entering: _reactNativeReanimated.ZoomInEasyDown.duration(200),
335
+ exiting: exitingAnimation
336
+ }, (0, _element.createElement)(_draggableChip.default, {
337
+ icon: draggedBlockIcon
338
+ }))));
339
+ };
340
+ /**
341
+ * Block draggable component
342
+ *
343
+ * This component serves for animating the block when it is being dragged.
344
+ * Hence, it should be wrapped around the rendering of a block.
345
+ *
346
+ * @param {Object} props Component props.
347
+ * @param {JSX.Element} props.children Children to be rendered.
348
+ * @param {string} props.clientId Client id of the block.
349
+ * @param {string} [props.draggingClientId] Client id to use for dragging. If not defined, the value from `clientId` will be used.
350
+ * @param {boolean} [props.enabled] Enables the draggable trigger.
351
+ *
352
+ * @return {Function} Render function which includes the parameter `isDraggable` to determine if the block can be dragged.
353
+ */
354
+
355
+
356
+ exports.BlockDraggableWrapper = BlockDraggableWrapper;
357
+
358
+ const BlockDraggable = _ref9 => {
359
+ let {
360
+ clientId,
361
+ children,
362
+ draggingClientId,
363
+ enabled = true
364
+ } = _ref9;
365
+ const wasBeingDragged = (0, _element.useRef)(false);
366
+ const [isEditingText, setIsEditingText] = (0, _element.useState)(false);
367
+ const [isScreenReaderEnabled, setIsScreenReaderEnabled] = (0, _element.useState)(false);
368
+ const draggingAnimation = {
369
+ opacity: (0, _reactNativeReanimated.useSharedValue)(1)
370
+ };
371
+
372
+ const startDraggingBlock = () => {
373
+ draggingAnimation.opacity.value = (0, _reactNativeReanimated.withTiming)(0.4, BLOCK_OPACITY_ANIMATION_CONFIG);
374
+ };
375
+
376
+ const stopDraggingBlock = () => {
377
+ draggingAnimation.opacity.value = (0, _reactNativeReanimated.withDelay)(BLOCK_OPACITY_ANIMATION_DELAY, (0, _reactNativeReanimated.withTiming)(1, BLOCK_OPACITY_ANIMATION_CONFIG));
378
+ };
379
+
380
+ const {
381
+ isDraggable,
382
+ isBeingDragged,
383
+ isBlockSelected
384
+ } = (0, _data.useSelect)(_select => {
385
+ const {
386
+ getBlockRootClientId,
387
+ getTemplateLock,
388
+ isBlockBeingDragged,
389
+ getSelectedBlockClientId
390
+ } = _select(_store.store);
391
+
392
+ const rootClientId = getBlockRootClientId(clientId);
393
+ const templateLock = rootClientId ? getTemplateLock(rootClientId) : null;
394
+ const selectedBlockClientId = getSelectedBlockClientId();
395
+ return {
396
+ isBeingDragged: isBlockBeingDragged(clientId),
397
+ isDraggable: 'all' !== templateLock,
398
+ isBlockSelected: selectedBlockClientId && selectedBlockClientId === clientId
399
+ };
400
+ }, [clientId]);
401
+ (0, _element.useEffect)(() => {
402
+ if (isBeingDragged !== wasBeingDragged.current) {
403
+ if (isBeingDragged) {
404
+ startDraggingBlock();
405
+ } else {
406
+ stopDraggingBlock();
407
+ }
408
+ }
409
+
410
+ wasBeingDragged.current = isBeingDragged;
411
+ }, [isBeingDragged]);
412
+ const onFocusChangeAztec = (0, _element.useCallback)(_ref10 => {
413
+ let {
414
+ isFocused
415
+ } = _ref10;
416
+ setIsEditingText(isFocused);
417
+ }, []);
418
+ (0, _element.useEffect)(() => {
419
+ let mounted = true;
420
+
421
+ const isAnyAztecInputFocused = _reactNativeAztec.default.InputState.isFocused();
422
+
423
+ if (isAnyAztecInputFocused) {
424
+ setIsEditingText(isAnyAztecInputFocused);
425
+ }
426
+
427
+ _reactNativeAztec.default.InputState.addFocusChangeListener(onFocusChangeAztec);
428
+
429
+ const screenReaderChangedListener = _reactNative.AccessibilityInfo.addEventListener('screenReaderChanged', setIsScreenReaderEnabled);
430
+
431
+ _reactNative.AccessibilityInfo.isScreenReaderEnabled().then(screenReaderEnabled => {
432
+ if (mounted) {
433
+ setIsScreenReaderEnabled(screenReaderEnabled);
434
+ }
435
+ });
436
+
437
+ return () => {
438
+ mounted = false;
439
+
440
+ _reactNativeAztec.default.InputState.removeFocusChangeListener(onFocusChangeAztec);
441
+
442
+ screenReaderChangedListener.remove();
443
+ };
444
+ }, []);
445
+ const onLongPressDraggable = (0, _element.useCallback)(() => {
446
+ // Ensure that no text input is focused when starting the dragging gesture in order to prevent conflicts with text editing.
447
+ _reactNativeAztec.default.InputState.blurCurrentFocusedElement();
448
+ }, []);
449
+ const animatedWrapperStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
450
+ return {
451
+ opacity: draggingAnimation.opacity.value
452
+ };
453
+ });
454
+ const wrapperStyles = [animatedWrapperStyles, _style.default['draggable-wrapper__container']];
455
+ const canDragBlock = enabled && !isScreenReaderEnabled && (!isBlockSelected || !isEditingText);
456
+
457
+ if (!isDraggable) {
458
+ return children({
459
+ isDraggable: false
460
+ });
461
+ }
462
+
463
+ return (0, _element.createElement)(_components.DraggableTrigger, {
464
+ id: draggingClientId || clientId,
465
+ enabled: enabled && canDragBlock,
466
+ minDuration: _element.Platform.select({
467
+ // On iOS, using a lower min duration than the default
468
+ // value prevents the long-press gesture from being
469
+ // triggered in underneath elements. This is required to
470
+ // prevent enabling text editing when dragging is available.
471
+ ios: canDragBlock ? DEFAULT_IOS_LONG_PRESS_MIN_DURATION : DEFAULT_LONG_PRESS_MIN_DURATION,
472
+ android: DEFAULT_LONG_PRESS_MIN_DURATION
473
+ }),
474
+ onLongPress: onLongPressDraggable
475
+ }, (0, _element.createElement)(_reactNativeReanimated.default.View, {
476
+ style: wrapperStyles
477
+ }, children({
478
+ isDraggable: true
479
+ })));
480
+ };
481
+
482
+ var _default = BlockDraggable;
483
+ exports.default = _default;
484
+ //# sourceMappingURL=index.native.js.map