@wordpress/edit-post 7.24.1 → 7.26.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 (267) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +1 -1
  3. package/build/components/browser-url/index.js +3 -2
  4. package/build/components/browser-url/index.js.map +1 -1
  5. package/build/components/header/index.js +35 -33
  6. package/build/components/header/index.js.map +1 -1
  7. package/build/components/header/mode-switcher/index.js +1 -1
  8. package/build/components/header/mode-switcher/index.js.map +1 -1
  9. package/build/components/header/more-menu/index.js +2 -1
  10. package/build/components/header/more-menu/index.js.map +1 -1
  11. package/build/components/header/writing-menu/index.js +22 -18
  12. package/build/components/header/writing-menu/index.js.map +1 -1
  13. package/build/components/keyboard-shortcuts/index.js +1 -20
  14. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  15. package/build/components/layout/index.js +45 -38
  16. package/build/components/layout/index.js.map +1 -1
  17. package/build/components/layout/index.native.js +3 -1
  18. package/build/components/layout/index.native.js.map +1 -1
  19. package/build/components/meta-boxes/meta-box-visibility.js +2 -6
  20. package/build/components/meta-boxes/meta-box-visibility.js.map +1 -1
  21. package/build/components/preferences-modal/index.js +87 -54
  22. package/build/components/preferences-modal/index.js.map +1 -1
  23. package/build/components/preferences-modal/options/enable-feature.js +23 -23
  24. package/build/components/preferences-modal/options/enable-feature.js.map +1 -1
  25. package/build/components/preferences-modal/options/enable-panel.js +3 -6
  26. package/build/components/preferences-modal/options/enable-panel.js.map +1 -1
  27. package/build/components/sidebar/plugin-document-setting-panel/index.js +3 -3
  28. package/build/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  29. package/build/components/sidebar/plugin-sidebar/index.js +2 -10
  30. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  31. package/build/components/sidebar/post-status/index.js +3 -5
  32. package/build/components/sidebar/post-status/index.js.map +1 -1
  33. package/build/components/sidebar/settings-header/index.js +17 -43
  34. package/build/components/sidebar/settings-header/index.js.map +1 -1
  35. package/build/components/sidebar/settings-sidebar/index.js +80 -26
  36. package/build/components/sidebar/settings-sidebar/index.js.map +1 -1
  37. package/build/components/start-page-options/index.js +3 -3
  38. package/build/components/start-page-options/index.js.map +1 -1
  39. package/build/components/visual-editor/index.js +20 -257
  40. package/build/components/visual-editor/index.js.map +1 -1
  41. package/build/components/welcome-guide/index.js +6 -3
  42. package/build/components/welcome-guide/index.js.map +1 -1
  43. package/build/editor.js +20 -30
  44. package/build/editor.js.map +1 -1
  45. package/build/editor.native.js +3 -11
  46. package/build/editor.native.js.map +1 -1
  47. package/build/hooks/commands/use-common-commands.js +16 -12
  48. package/build/hooks/commands/use-common-commands.js.map +1 -1
  49. package/build/hooks/use-post-history.js +79 -0
  50. package/build/hooks/use-post-history.js.map +1 -0
  51. package/build/index.js +24 -20
  52. package/build/index.js.map +1 -1
  53. package/build/index.native.js +7 -1
  54. package/build/index.native.js.map +1 -1
  55. package/build/plugins/welcome-guide-menu-item/index.js +2 -6
  56. package/build/plugins/welcome-guide-menu-item/index.js.map +1 -1
  57. package/build/store/actions.js +94 -112
  58. package/build/store/actions.js.map +1 -1
  59. package/build/store/reducer.js +1 -95
  60. package/build/store/reducer.js.map +1 -1
  61. package/build/store/selectors.js +86 -48
  62. package/build/store/selectors.js.map +1 -1
  63. package/build-module/components/browser-url/index.js +3 -2
  64. package/build-module/components/browser-url/index.js.map +1 -1
  65. package/build-module/components/header/index.js +37 -35
  66. package/build-module/components/header/index.js.map +1 -1
  67. package/build-module/components/header/mode-switcher/index.js +1 -1
  68. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  69. package/build-module/components/header/more-menu/index.js +2 -1
  70. package/build-module/components/header/more-menu/index.js.map +1 -1
  71. package/build-module/components/header/writing-menu/index.js +23 -19
  72. package/build-module/components/header/writing-menu/index.js.map +1 -1
  73. package/build-module/components/keyboard-shortcuts/index.js +1 -20
  74. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  75. package/build-module/components/layout/index.js +46 -38
  76. package/build-module/components/layout/index.js.map +1 -1
  77. package/build-module/components/layout/index.native.js +4 -2
  78. package/build-module/components/layout/index.native.js.map +1 -1
  79. package/build-module/components/meta-boxes/meta-box-visibility.js +2 -6
  80. package/build-module/components/meta-boxes/meta-box-visibility.js.map +1 -1
  81. package/build-module/components/preferences-modal/index.js +87 -54
  82. package/build-module/components/preferences-modal/index.js.map +1 -1
  83. package/build-module/components/preferences-modal/options/enable-feature.js +22 -23
  84. package/build-module/components/preferences-modal/options/enable-feature.js.map +1 -1
  85. package/build-module/components/preferences-modal/options/enable-panel.js +3 -7
  86. package/build-module/components/preferences-modal/options/enable-panel.js.map +1 -1
  87. package/build-module/components/sidebar/plugin-document-setting-panel/index.js +3 -3
  88. package/build-module/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  89. package/build-module/components/sidebar/plugin-sidebar/index.js +2 -10
  90. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  91. package/build-module/components/sidebar/post-status/index.js +4 -6
  92. package/build-module/components/sidebar/post-status/index.js.map +1 -1
  93. package/build-module/components/sidebar/settings-header/index.js +20 -46
  94. package/build-module/components/sidebar/settings-header/index.js.map +1 -1
  95. package/build-module/components/sidebar/settings-sidebar/index.js +80 -27
  96. package/build-module/components/sidebar/settings-sidebar/index.js.map +1 -1
  97. package/build-module/components/start-page-options/index.js +3 -3
  98. package/build-module/components/start-page-options/index.js.map +1 -1
  99. package/build-module/components/visual-editor/index.js +24 -261
  100. package/build-module/components/visual-editor/index.js.map +1 -1
  101. package/build-module/components/welcome-guide/index.js +6 -3
  102. package/build-module/components/welcome-guide/index.js.map +1 -1
  103. package/build-module/editor.js +20 -30
  104. package/build-module/editor.js.map +1 -1
  105. package/build-module/editor.native.js +3 -11
  106. package/build-module/editor.native.js.map +1 -1
  107. package/build-module/hooks/commands/use-common-commands.js +16 -12
  108. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  109. package/build-module/hooks/use-post-history.js +73 -0
  110. package/build-module/hooks/use-post-history.js.map +1 -0
  111. package/build-module/index.js +19 -12
  112. package/build-module/index.js.map +1 -1
  113. package/build-module/index.native.js +7 -1
  114. package/build-module/index.native.js.map +1 -1
  115. package/build-module/plugins/welcome-guide-menu-item/index.js +2 -6
  116. package/build-module/plugins/welcome-guide-menu-item/index.js.map +1 -1
  117. package/build-module/store/actions.js +86 -105
  118. package/build-module/store/actions.js.map +1 -1
  119. package/build-module/store/reducer.js +1 -92
  120. package/build-module/store/reducer.js.map +1 -1
  121. package/build-module/store/selectors.js +76 -38
  122. package/build-module/store/selectors.js.map +1 -1
  123. package/build-style/style-rtl.css +65 -473
  124. package/build-style/style.css +65 -473
  125. package/package.json +32 -32
  126. package/src/components/browser-url/index.js +4 -2
  127. package/src/components/header/index.js +45 -46
  128. package/src/components/header/mode-switcher/index.js +2 -1
  129. package/src/components/header/more-menu/index.js +1 -0
  130. package/src/components/header/style.scss +63 -37
  131. package/src/components/header/writing-menu/index.js +24 -24
  132. package/src/components/keyboard-shortcut-help-modal/test/index.js +0 -15
  133. package/src/components/keyboard-shortcuts/index.js +1 -23
  134. package/src/components/layout/index.js +31 -39
  135. package/src/components/layout/index.native.js +9 -1
  136. package/src/components/meta-boxes/meta-box-visibility.js +2 -8
  137. package/src/components/preferences-modal/index.js +128 -97
  138. package/src/components/preferences-modal/options/enable-feature.js +26 -21
  139. package/src/components/preferences-modal/options/enable-panel.js +3 -7
  140. package/src/components/preferences-modal/test/__snapshots__/meta-boxes-section.js.snap +187 -175
  141. package/src/components/preferences-modal/test/index.js +1 -52
  142. package/src/components/sidebar/plugin-document-setting-panel/index.js +3 -3
  143. package/src/components/sidebar/plugin-sidebar/index.js +1 -9
  144. package/src/components/sidebar/post-status/index.js +5 -5
  145. package/src/components/sidebar/settings-header/index.js +19 -71
  146. package/src/components/sidebar/settings-sidebar/index.js +125 -60
  147. package/src/components/sidebar/style.scss +4 -12
  148. package/src/components/start-page-options/index.js +3 -3
  149. package/src/components/text-editor/style.scss +0 -6
  150. package/src/components/visual-editor/index.js +26 -359
  151. package/src/components/visual-editor/style.scss +0 -15
  152. package/src/components/welcome-guide/index.js +4 -2
  153. package/src/editor.js +36 -35
  154. package/src/editor.native.js +2 -23
  155. package/src/hooks/commands/use-common-commands.js +14 -16
  156. package/src/hooks/use-post-history.js +73 -0
  157. package/src/index.js +24 -13
  158. package/src/index.native.js +8 -1
  159. package/src/plugins/welcome-guide-menu-item/index.js +3 -6
  160. package/src/store/actions.js +80 -131
  161. package/src/store/reducer.js +0 -93
  162. package/src/store/selectors.js +97 -55
  163. package/src/store/test/actions.js +10 -131
  164. package/src/store/test/reducer.js +1 -108
  165. package/src/store/test/selectors.js +0 -50
  166. package/src/style.scss +1 -8
  167. package/src/test/__snapshots__/editor.native.js.snap +21 -0
  168. package/src/test/editor.native.js +107 -56
  169. package/build/components/device-preview/index.js +0 -72
  170. package/build/components/device-preview/index.js.map +0 -1
  171. package/build/components/header/document-actions/index.js +0 -82
  172. package/build/components/header/document-actions/index.js.map +0 -1
  173. package/build/components/header/header-toolbar/index.js +0 -156
  174. package/build/components/header/header-toolbar/index.js.map +0 -1
  175. package/build/components/secondary-sidebar/inserter-sidebar.js +0 -73
  176. package/build/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  177. package/build/components/secondary-sidebar/list-view-outline.js +0 -112
  178. package/build/components/secondary-sidebar/list-view-outline.js.map +0 -1
  179. package/build/components/secondary-sidebar/list-view-sidebar.js +0 -148
  180. package/build/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  181. package/build/components/sidebar/discussion-panel/index.js +0 -59
  182. package/build/components/sidebar/discussion-panel/index.js.map +0 -1
  183. package/build/components/sidebar/featured-image/index.js +0 -70
  184. package/build/components/sidebar/featured-image/index.js.map +0 -1
  185. package/build/components/sidebar/last-revision/index.js +0 -21
  186. package/build/components/sidebar/last-revision/index.js.map +0 -1
  187. package/build/components/sidebar/page-attributes/index.js +0 -65
  188. package/build/components/sidebar/page-attributes/index.js.map +0 -1
  189. package/build/components/sidebar/plugin-post-excerpt/index.js +0 -72
  190. package/build/components/sidebar/plugin-post-excerpt/index.js.map +0 -1
  191. package/build/components/sidebar/post-excerpt/index.js +0 -54
  192. package/build/components/sidebar/post-excerpt/index.js.map +0 -1
  193. package/build/components/sidebar/post-taxonomies/index.js +0 -30
  194. package/build/components/sidebar/post-taxonomies/index.js.map +0 -1
  195. package/build/components/sidebar/post-taxonomies/taxonomy-panel.js +0 -56
  196. package/build/components/sidebar/post-taxonomies/taxonomy-panel.js.map +0 -1
  197. package/build/components/sidebar/post-template/create-modal.js +0 -99
  198. package/build/components/sidebar/post-template/create-modal.js.map +0 -1
  199. package/build/components/sidebar/post-template/form.js +0 -110
  200. package/build/components/sidebar/post-template/form.js.map +0 -1
  201. package/build/components/sidebar/post-template/index.js +0 -106
  202. package/build/components/sidebar/post-template/index.js.map +0 -1
  203. package/build/components/view-link/index.js +0 -53
  204. package/build/components/view-link/index.js.map +0 -1
  205. package/build-module/components/device-preview/index.js +0 -65
  206. package/build-module/components/device-preview/index.js.map +0 -1
  207. package/build-module/components/header/document-actions/index.js +0 -74
  208. package/build-module/components/header/document-actions/index.js.map +0 -1
  209. package/build-module/components/header/header-toolbar/index.js +0 -148
  210. package/build-module/components/header/header-toolbar/index.js.map +0 -1
  211. package/build-module/components/secondary-sidebar/inserter-sidebar.js +0 -66
  212. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +0 -1
  213. package/build-module/components/secondary-sidebar/list-view-outline.js +0 -105
  214. package/build-module/components/secondary-sidebar/list-view-outline.js.map +0 -1
  215. package/build-module/components/secondary-sidebar/list-view-sidebar.js +0 -140
  216. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +0 -1
  217. package/build-module/components/sidebar/discussion-panel/index.js +0 -52
  218. package/build-module/components/sidebar/discussion-panel/index.js.map +0 -1
  219. package/build-module/components/sidebar/featured-image/index.js +0 -63
  220. package/build-module/components/sidebar/featured-image/index.js.map +0 -1
  221. package/build-module/components/sidebar/last-revision/index.js +0 -13
  222. package/build-module/components/sidebar/last-revision/index.js.map +0 -1
  223. package/build-module/components/sidebar/page-attributes/index.js +0 -57
  224. package/build-module/components/sidebar/page-attributes/index.js.map +0 -1
  225. package/build-module/components/sidebar/plugin-post-excerpt/index.js +0 -64
  226. package/build-module/components/sidebar/plugin-post-excerpt/index.js.map +0 -1
  227. package/build-module/components/sidebar/post-excerpt/index.js +0 -47
  228. package/build-module/components/sidebar/post-excerpt/index.js.map +0 -1
  229. package/build-module/components/sidebar/post-taxonomies/index.js +0 -21
  230. package/build-module/components/sidebar/post-taxonomies/index.js.map +0 -1
  231. package/build-module/components/sidebar/post-taxonomies/taxonomy-panel.js +0 -48
  232. package/build-module/components/sidebar/post-taxonomies/taxonomy-panel.js.map +0 -1
  233. package/build-module/components/sidebar/post-template/create-modal.js +0 -92
  234. package/build-module/components/sidebar/post-template/create-modal.js.map +0 -1
  235. package/build-module/components/sidebar/post-template/form.js +0 -102
  236. package/build-module/components/sidebar/post-template/form.js.map +0 -1
  237. package/build-module/components/sidebar/post-template/index.js +0 -98
  238. package/build-module/components/sidebar/post-template/index.js.map +0 -1
  239. package/build-module/components/view-link/index.js +0 -46
  240. package/build-module/components/view-link/index.js.map +0 -1
  241. package/src/components/device-preview/index.js +0 -73
  242. package/src/components/header/document-actions/index.js +0 -82
  243. package/src/components/header/document-actions/style.scss +0 -64
  244. package/src/components/header/header-toolbar/index.js +0 -182
  245. package/src/components/header/header-toolbar/style.scss +0 -114
  246. package/src/components/keyboard-shortcut-help-modal/test/__snapshots__/index.js.snap +0 -929
  247. package/src/components/secondary-sidebar/inserter-sidebar.js +0 -71
  248. package/src/components/secondary-sidebar/list-view-outline.js +0 -98
  249. package/src/components/secondary-sidebar/list-view-sidebar.js +0 -170
  250. package/src/components/secondary-sidebar/style.scss +0 -120
  251. package/src/components/sidebar/discussion-panel/index.js +0 -62
  252. package/src/components/sidebar/featured-image/index.js +0 -67
  253. package/src/components/sidebar/last-revision/index.js +0 -17
  254. package/src/components/sidebar/last-revision/style.scss +0 -10
  255. package/src/components/sidebar/page-attributes/index.js +0 -65
  256. package/src/components/sidebar/plugin-post-excerpt/index.js +0 -61
  257. package/src/components/sidebar/plugin-post-excerpt/test/index.js +0 -36
  258. package/src/components/sidebar/post-excerpt/index.js +0 -59
  259. package/src/components/sidebar/post-taxonomies/index.js +0 -30
  260. package/src/components/sidebar/post-taxonomies/taxonomy-panel.js +0 -48
  261. package/src/components/sidebar/post-template/create-modal.js +0 -140
  262. package/src/components/sidebar/post-template/form.js +0 -141
  263. package/src/components/sidebar/post-template/index.js +0 -120
  264. package/src/components/sidebar/post-template/style.scss +0 -22
  265. package/src/components/sidebar/settings-header/style.scss +0 -74
  266. package/src/components/sidebar/template/style.scss +0 -35
  267. package/src/components/view-link/index.js +0 -48
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import deepFreeze from 'deep-freeze';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -11,32 +6,9 @@ import {
11
6
  isSavingMetaBoxes,
12
7
  getActiveMetaBoxLocations,
13
8
  isMetaBoxLocationActive,
14
- isEditorPanelRemoved,
15
- isInserterOpened,
16
- isListViewOpened,
17
9
  } from '../selectors';
18
10
 
19
11
  describe( 'selectors', () => {
20
- describe( 'isEditorPanelRemoved', () => {
21
- it( 'should return false by default', () => {
22
- const state = deepFreeze( {
23
- removedPanels: [],
24
- } );
25
-
26
- expect( isEditorPanelRemoved( state, 'post-status' ) ).toBe(
27
- false
28
- );
29
- } );
30
-
31
- it( 'should return true when panel was removed', () => {
32
- const state = deepFreeze( {
33
- removedPanels: [ 'post-status' ],
34
- } );
35
-
36
- expect( isEditorPanelRemoved( state, 'post-status' ) ).toBe( true );
37
- } );
38
- } );
39
-
40
12
  describe( 'hasMetaBoxes', () => {
41
13
  it( 'should return true if there are active meta boxes', () => {
42
14
  const state = {
@@ -133,26 +105,4 @@ describe( 'selectors', () => {
133
105
  expect( result ).toBe( true );
134
106
  } );
135
107
  } );
136
-
137
- describe( 'isInserterOpened', () => {
138
- it( 'returns the block inserter panel isOpened state', () => {
139
- const state = {
140
- blockInserterPanel: true,
141
- };
142
- expect( isInserterOpened( state ) ).toBe( true );
143
- state.blockInserterPanel = false;
144
- expect( isInserterOpened( state ) ).toBe( false );
145
- } );
146
- } );
147
-
148
- describe( 'isListViewOpened', () => {
149
- it( 'returns the list view panel isOpened state', () => {
150
- const state = {
151
- listViewPanel: true,
152
- };
153
- expect( isListViewOpened( state ) ).toBe( true );
154
- state.listViewPanel = false;
155
- expect( isListViewOpened( state ) ).toBe( false );
156
- } );
157
- } );
158
108
  } );
package/src/style.scss CHANGED
@@ -1,20 +1,14 @@
1
1
  @import "../../interface/src/style.scss";
2
2
  @import "./components/header/style.scss";
3
3
  @import "./components/header/fullscreen-mode-close/style.scss";
4
- @import "./components/header/header-toolbar/style.scss";
5
- @import "./components/header/document-actions/style.scss";
6
4
  @import "./components/keyboard-shortcut-help-modal/style.scss";
7
5
  @import "./components/layout/style.scss";
8
6
  @import "./components/block-manager/style.scss";
9
7
  @import "./components/meta-boxes/meta-boxes-area/style.scss";
10
- @import "./components/secondary-sidebar/style.scss";
11
8
  @import "./components/sidebar/style.scss";
12
- @import "./components/sidebar/last-revision/style.scss";
13
9
  @import "./components/sidebar/post-format/style.scss";
14
10
  @import "./components/sidebar/post-slug/style.scss";
15
- @import "./components/sidebar/post-template/style.scss";
16
11
  @import "./components/sidebar/post-visibility/style.scss";
17
- @import "./components/sidebar/settings-header/style.scss";
18
12
  @import "./components/sidebar/template-summary/style.scss";
19
13
  @import "./components/text-editor/style.scss";
20
14
  @import "./components/visual-editor/style.scss";
@@ -55,8 +49,7 @@ body.js.block-editor-page {
55
49
  .edit-post-sidebar,
56
50
  .editor-post-publish-panel,
57
51
  .components-popover,
58
- .components-modal__frame,
59
- .edit-post-editor__inserter-panel {
52
+ .components-modal__frame {
60
53
  @include reset;
61
54
  }
62
55
 
@@ -0,0 +1,21 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Editor appends media correctly for allowed types 1`] = `
4
+ "<!-- wp:image -->
5
+ <figure class="wp-block-image"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt=""/></figure>
6
+ <!-- /wp:image -->
7
+
8
+ <!-- wp:image -->
9
+ <figure class="wp-block-image"><img src="https://test-site.files.wordpress.com/local-image-3.jpeg" alt=""/></figure>
10
+ <!-- /wp:image -->"
11
+ `;
12
+
13
+ exports[`Editor appends media correctly for allowed types and skips unsupported ones 1`] = `
14
+ "<!-- wp:image -->
15
+ <figure class="wp-block-image"><img src="https://test-site.files.wordpress.com/local-image-1.jpeg" alt=""/></figure>
16
+ <!-- /wp:image -->
17
+
18
+ <!-- wp:video -->
19
+ <figure class="wp-block-video"><video controls src="file:///local-video-4.mp4"></video></figure>
20
+ <!-- /wp:video -->"
21
+ `;
@@ -6,93 +6,144 @@ import {
6
6
  addBlock,
7
7
  fireEvent,
8
8
  getBlock,
9
+ getEditorHtml,
9
10
  initializeEditor,
10
- render,
11
+ screen,
11
12
  setupCoreBlocks,
12
13
  } from 'test/helpers';
14
+ import { BackHandler } from 'react-native';
13
15
 
14
16
  /**
15
17
  * WordPress dependencies
16
18
  */
17
- import RNReactNativeGutenbergBridge, {
19
+ import {
20
+ requestMediaImport,
21
+ subscribeMediaAppend,
18
22
  subscribeParentToggleHTMLMode,
19
23
  } from '@wordpress/react-native-bridge';
20
- // Force register 'core/editor' store.
21
- import { store } from '@wordpress/editor'; // eslint-disable-line no-unused-vars
22
24
 
23
- /**
24
- * Internal dependencies
25
- */
26
- import '..';
27
- import Editor from '../editor';
28
-
29
- const unsupportedBlock = `
30
- <!-- wp:notablock -->
31
- <p>Not supported</p>
32
- <!-- /wp:notablock -->
33
- `;
25
+ setupCoreBlocks();
34
26
 
35
- beforeAll( () => {
36
- jest.useFakeTimers( { legacyFakeTimers: true } );
27
+ let toggleModeCallback;
28
+ subscribeParentToggleHTMLMode.mockImplementation( ( callback ) => {
29
+ toggleModeCallback = callback;
37
30
  } );
38
31
 
39
- afterAll( () => {
40
- jest.runOnlyPendingTimers();
41
- jest.useRealTimers();
32
+ let mediaAppendCallback;
33
+ subscribeMediaAppend.mockImplementation( ( callback ) => {
34
+ mediaAppendCallback = callback;
42
35
  } );
43
36
 
44
- setupCoreBlocks();
37
+ const MEDIA = [
38
+ {
39
+ localId: 1,
40
+ mediaUrl: 'file:///local-image-1.jpeg',
41
+ mediaType: 'image',
42
+ serverId: 2000,
43
+ serverUrl: 'https://test-site.files.wordpress.com/local-image-1.jpeg',
44
+ },
45
+ {
46
+ localId: 2,
47
+ mediaUrl: 'file:///local-file-1.pdf',
48
+ mediaType: 'other',
49
+ serverId: 2001,
50
+ serverUrl: 'https://test-site.files.wordpress.com/local-file-1.pdf',
51
+ },
52
+ {
53
+ localId: 3,
54
+ mediaUrl: 'file:///local-image-3.jpeg',
55
+ mediaType: 'image',
56
+ serverId: 2002,
57
+ serverUrl: 'https://test-site.files.wordpress.com/local-image-3.jpeg',
58
+ },
59
+ {
60
+ localId: 4,
61
+ mediaUrl: 'file:///local-video-4.mp4',
62
+ mediaType: 'video',
63
+ serverId: 2003,
64
+ serverUrl: 'https://test-site.files.wordpress.com/local-video-4.mp4',
65
+ },
66
+ ];
45
67
 
46
68
  describe( 'Editor', () => {
47
- it( 'detects unsupported block and sends hasUnsupportedBlocks true to native', () => {
48
- RNReactNativeGutenbergBridge.editorDidMount = jest.fn();
49
-
50
- const appContainer = renderEditorWith( unsupportedBlock );
51
- // For some reason resetEditorBlocks() is asynchronous when dispatching editEntityRecord.
52
- act( () => {
53
- jest.runAllTicks();
54
- } );
55
- appContainer.unmount();
56
-
57
- expect(
58
- RNReactNativeGutenbergBridge.editorDidMount
59
- ).toHaveBeenCalledTimes( 1 );
60
- expect(
61
- RNReactNativeGutenbergBridge.editorDidMount
62
- ).toHaveBeenCalledWith( [ 'core/notablock' ] );
69
+ afterEach( () => {
70
+ jest.clearAllMocks();
63
71
  } );
64
72
 
65
73
  it( 'toggles the editor from Visual to HTML mode', async () => {
66
74
  // Arrange
67
- let toggleMode;
68
- subscribeParentToggleHTMLMode.mockImplementation( ( callback ) => {
69
- toggleMode = callback;
70
- } );
71
- const screen = await initializeEditor();
75
+ await initializeEditor();
72
76
  await addBlock( screen, 'Paragraph' );
73
77
 
74
78
  // Act
75
79
  const paragraphBlock = getBlock( screen, 'Paragraph' );
76
80
  fireEvent.press( paragraphBlock );
77
81
  act( () => {
78
- toggleMode();
82
+ toggleModeCallback();
79
83
  } );
80
84
 
81
85
  // Assert
82
86
  const htmlEditor = screen.getByLabelText( 'html-view-content' );
83
87
  expect( htmlEditor ).toBeVisible();
88
+
89
+ act( () => {
90
+ toggleModeCallback();
91
+ } );
84
92
  } );
85
- } );
86
93
 
87
- // Utilities.
88
- const renderEditorWith = ( content ) => {
89
- return render(
90
- <Editor
91
- initialHtml={ content }
92
- initialHtmlModeEnabled={ false }
93
- initialTitle={ '' }
94
- postType="post"
95
- postId="1"
96
- />
97
- );
98
- };
94
+ it( 'appends media correctly for allowed types', async () => {
95
+ // Arrange
96
+ requestMediaImport
97
+ .mockImplementationOnce( ( _, callback ) =>
98
+ callback( MEDIA[ 0 ].id, MEDIA[ 0 ].serverUrl )
99
+ )
100
+ .mockImplementationOnce( ( _, callback ) =>
101
+ callback( MEDIA[ 2 ].id, MEDIA[ 2 ].serverUrl )
102
+ );
103
+ await initializeEditor();
104
+
105
+ // Act
106
+ await act( () => mediaAppendCallback( MEDIA[ 0 ] ) );
107
+ await act( () => mediaAppendCallback( MEDIA[ 2 ] ) );
108
+
109
+ // Assert
110
+ expect( getEditorHtml() ).toMatchSnapshot();
111
+ } );
112
+
113
+ it( 'appends media correctly for allowed types and skips unsupported ones', async () => {
114
+ // Arrange
115
+ requestMediaImport
116
+ .mockImplementationOnce( ( _, callback ) =>
117
+ callback( MEDIA[ 0 ].id, MEDIA[ 0 ].serverUrl )
118
+ )
119
+ .mockImplementationOnce( ( _, callback ) =>
120
+ callback( MEDIA[ 3 ].id, MEDIA[ 3 ].serverUrl )
121
+ );
122
+ await initializeEditor();
123
+
124
+ // Act
125
+ await act( () => mediaAppendCallback( MEDIA[ 0 ] ) );
126
+ // Unsupported type (PDF file)
127
+ await act( () => mediaAppendCallback( MEDIA[ 1 ] ) );
128
+ await act( () => mediaAppendCallback( MEDIA[ 3 ] ) );
129
+
130
+ // Assert
131
+ expect( getEditorHtml() ).toMatchSnapshot();
132
+ } );
133
+
134
+ it( 'unselects current block when tapping on the hardware back button', async () => {
135
+ // Arrange
136
+ await initializeEditor();
137
+ await addBlock( screen, 'Spacer' );
138
+
139
+ // Act
140
+ act( () => {
141
+ BackHandler.mockPressBack();
142
+ } );
143
+
144
+ // Assert
145
+ const openBlockSettingsButton =
146
+ screen.queryAllByLabelText( 'Open Settings' );
147
+ expect( openBlockSettingsButton.length ).toBe( 0 );
148
+ } );
149
+ } );
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = DevicePreview;
7
- var _react = require("react");
8
- var _components = require("@wordpress/components");
9
- var _editor = require("@wordpress/editor");
10
- var _icons = require("@wordpress/icons");
11
- var _i18n = require("@wordpress/i18n");
12
- var _blockEditor = require("@wordpress/block-editor");
13
- var _data = require("@wordpress/data");
14
- var _coreData = require("@wordpress/core-data");
15
- var _store = require("../../store");
16
- /**
17
- * WordPress dependencies
18
- */
19
-
20
- /**
21
- * Internal dependencies
22
- */
23
-
24
- function DevicePreview() {
25
- const {
26
- hasActiveMetaboxes,
27
- isPostSaveable,
28
- isViewable,
29
- deviceType,
30
- showIconLabels
31
- } = (0, _data.useSelect)(select => {
32
- var _postType$viewable;
33
- const {
34
- getEditedPostAttribute
35
- } = select(_editor.store);
36
- const {
37
- getPostType
38
- } = select(_coreData.store);
39
- const postType = getPostType(getEditedPostAttribute('type'));
40
- return {
41
- hasActiveMetaboxes: select(_store.store).hasMetaBoxes(),
42
- isPostSaveable: select(_editor.store).isEditedPostSaveable(),
43
- isViewable: (_postType$viewable = postType?.viewable) !== null && _postType$viewable !== void 0 ? _postType$viewable : false,
44
- deviceType: select(_store.store).__experimentalGetPreviewDeviceType(),
45
- showIconLabels: select(_store.store).isFeatureActive('showIconLabels')
46
- };
47
- }, []);
48
- const {
49
- __experimentalSetPreviewDeviceType: setPreviewDeviceType
50
- } = (0, _data.useDispatch)(_store.store);
51
- return (0, _react.createElement)(_blockEditor.__experimentalPreviewOptions, {
52
- isEnabled: isPostSaveable,
53
- className: "edit-post-post-preview-dropdown",
54
- deviceType: deviceType,
55
- setDeviceType: setPreviewDeviceType,
56
- label: (0, _i18n.__)('Preview'),
57
- showIconLabels: showIconLabels
58
- }, ({
59
- onClose
60
- }) => isViewable && (0, _react.createElement)(_components.MenuGroup, null, (0, _react.createElement)("div", {
61
- className: "edit-post-header-preview__grouping-external"
62
- }, (0, _react.createElement)(_editor.PostPreviewButton, {
63
- className: "edit-post-header-preview__button-external",
64
- role: "menuitem",
65
- forceIsAutosaveable: hasActiveMetaboxes,
66
- textContent: (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Preview in new tab'), (0, _react.createElement)(_components.Icon, {
67
- icon: _icons.external
68
- })),
69
- onPreview: onClose
70
- }))));
71
- }
72
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_components","require","_editor","_icons","_i18n","_blockEditor","_data","_coreData","_store","DevicePreview","hasActiveMetaboxes","isPostSaveable","isViewable","deviceType","showIconLabels","useSelect","select","_postType$viewable","getEditedPostAttribute","editorStore","getPostType","coreStore","postType","editPostStore","hasMetaBoxes","isEditedPostSaveable","viewable","__experimentalGetPreviewDeviceType","isFeatureActive","__experimentalSetPreviewDeviceType","setPreviewDeviceType","useDispatch","_react","createElement","__experimentalPreviewOptions","isEnabled","className","setDeviceType","label","__","onClose","MenuGroup","PostPreviewButton","role","forceIsAutosaveable","textContent","Fragment","Icon","icon","external","onPreview"],"sources":["@wordpress/edit-post/src/components/device-preview/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Icon, MenuGroup } from '@wordpress/components';\nimport { PostPreviewButton, store as editorStore } from '@wordpress/editor';\nimport { external } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalPreviewOptions as PreviewOptions } from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../store';\n\nexport default function DevicePreview() {\n\tconst {\n\t\thasActiveMetaboxes,\n\t\tisPostSaveable,\n\t\tisViewable,\n\t\tdeviceType,\n\t\tshowIconLabels,\n\t} = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\tconst postType = getPostType( getEditedPostAttribute( 'type' ) );\n\n\t\treturn {\n\t\t\thasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),\n\t\t\tisPostSaveable: select( editorStore ).isEditedPostSaveable(),\n\t\t\tisViewable: postType?.viewable ?? false,\n\t\t\tdeviceType:\n\t\t\t\tselect( editPostStore ).__experimentalGetPreviewDeviceType(),\n\t\t\tshowIconLabels:\n\t\t\t\tselect( editPostStore ).isFeatureActive( 'showIconLabels' ),\n\t\t};\n\t}, [] );\n\tconst { __experimentalSetPreviewDeviceType: setPreviewDeviceType } =\n\t\tuseDispatch( editPostStore );\n\n\treturn (\n\t\t<PreviewOptions\n\t\t\tisEnabled={ isPostSaveable }\n\t\t\tclassName=\"edit-post-post-preview-dropdown\"\n\t\t\tdeviceType={ deviceType }\n\t\t\tsetDeviceType={ setPreviewDeviceType }\n\t\t\tlabel={ __( 'Preview' ) }\n\t\t\tshowIconLabels={ showIconLabels }\n\t\t>\n\t\t\t{ ( { onClose } ) =>\n\t\t\t\tisViewable && (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<div className=\"edit-post-header-preview__grouping-external\">\n\t\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\t\tclassName=\"edit-post-header-preview__button-external\"\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\tforceIsAutosaveable={ hasActiveMetaboxes }\n\t\t\t\t\t\t\t\ttextContent={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ external } />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonPreview={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t)\n\t\t\t}\n\t\t</PreviewOptions>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AAdA;AACA;AACA;;AASA;AACA;AACA;;AAGe,SAASQ,aAAaA,CAAA,EAAG;EACvC,MAAM;IACLC,kBAAkB;IAClBC,cAAc;IACdC,UAAU;IACVC,UAAU;IACVC;EACD,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAAA,IAAAC,kBAAA;IAC5B,MAAM;MAAEC;IAAuB,CAAC,GAAGF,MAAM,CAAEG,aAAY,CAAC;IACxD,MAAM;MAAEC;IAAY,CAAC,GAAGJ,MAAM,CAAEK,eAAU,CAAC;IAC3C,MAAMC,QAAQ,GAAGF,WAAW,CAAEF,sBAAsB,CAAE,MAAO,CAAE,CAAC;IAEhE,OAAO;MACNR,kBAAkB,EAAEM,MAAM,CAAEO,YAAc,CAAC,CAACC,YAAY,CAAC,CAAC;MAC1Db,cAAc,EAAEK,MAAM,CAAEG,aAAY,CAAC,CAACM,oBAAoB,CAAC,CAAC;MAC5Db,UAAU,GAAAK,kBAAA,GAAEK,QAAQ,EAAEI,QAAQ,cAAAT,kBAAA,cAAAA,kBAAA,GAAI,KAAK;MACvCJ,UAAU,EACTG,MAAM,CAAEO,YAAc,CAAC,CAACI,kCAAkC,CAAC,CAAC;MAC7Db,cAAc,EACbE,MAAM,CAAEO,YAAc,CAAC,CAACK,eAAe,CAAE,gBAAiB;IAC5D,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAM;IAAEC,kCAAkC,EAAEC;EAAqB,CAAC,GACjE,IAAAC,iBAAW,EAAER,YAAc,CAAC;EAE7B,OACC,IAAAS,MAAA,CAAAC,aAAA,EAAC5B,YAAA,CAAA6B,4BAAc;IACdC,SAAS,EAAGxB,cAAgB;IAC5ByB,SAAS,EAAC,iCAAiC;IAC3CvB,UAAU,EAAGA,UAAY;IACzBwB,aAAa,EAAGP,oBAAsB;IACtCQ,KAAK,EAAG,IAAAC,QAAE,EAAE,SAAU,CAAG;IACzBzB,cAAc,EAAGA;EAAgB,GAE/B,CAAE;IAAE0B;EAAQ,CAAC,KACd5B,UAAU,IACT,IAAAoB,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAAyC,SAAS,QACT,IAAAT,MAAA,CAAAC,aAAA;IAAKG,SAAS,EAAC;EAA6C,GAC3D,IAAAJ,MAAA,CAAAC,aAAA,EAAC/B,OAAA,CAAAwC,iBAAiB;IACjBN,SAAS,EAAC,2CAA2C;IACrDO,IAAI,EAAC,UAAU;IACfC,mBAAmB,EAAGlC,kBAAoB;IAC1CmC,WAAW,EACV,IAAAb,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAc,QAAA,QACG,IAAAP,QAAE,EAAE,oBAAqB,CAAC,EAC5B,IAAAP,MAAA,CAAAC,aAAA,EAACjC,WAAA,CAAA+C,IAAI;MAACC,IAAI,EAAGC;IAAU,CAAE,CACxB,CACF;IACDC,SAAS,EAAGV;EAAS,CACrB,CACG,CACK,CAGE,CAAC;AAEnB"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = require("react");
8
- var _i18n = require("@wordpress/i18n");
9
- var _data = require("@wordpress/data");
10
- var _blockEditor = require("@wordpress/block-editor");
11
- var _components = require("@wordpress/components");
12
- var _icons = require("@wordpress/icons");
13
- var _commands = require("@wordpress/commands");
14
- var _keycodes = require("@wordpress/keycodes");
15
- var _store = require("../../../store");
16
- /**
17
- * WordPress dependencies
18
- */
19
-
20
- /**
21
- * Internal dependencies
22
- */
23
-
24
- function DocumentActions() {
25
- const {
26
- template
27
- } = (0, _data.useSelect)(select => {
28
- const {
29
- getEditedPostTemplate
30
- } = select(_store.store);
31
- return {
32
- template: getEditedPostTemplate()
33
- };
34
- }, []);
35
- const {
36
- clearSelectedBlock
37
- } = (0, _data.useDispatch)(_blockEditor.store);
38
- const {
39
- setIsEditingTemplate
40
- } = (0, _data.useDispatch)(_store.store);
41
- const {
42
- open: openCommandCenter
43
- } = (0, _data.useDispatch)(_commands.store);
44
- if (!template) {
45
- return null;
46
- }
47
- let templateTitle = (0, _i18n.__)('Default');
48
- if (template?.title) {
49
- templateTitle = template.title;
50
- } else if (!!template) {
51
- templateTitle = template.slug;
52
- }
53
- return (0, _react.createElement)("div", {
54
- className: "edit-post-document-actions"
55
- }, (0, _react.createElement)(_components.Button, {
56
- className: "edit-post-document-actions__back",
57
- onClick: () => {
58
- clearSelectedBlock();
59
- setIsEditingTemplate(false);
60
- },
61
- icon: (0, _i18n.isRTL)() ? _icons.chevronRightSmall : _icons.chevronLeftSmall
62
- }, (0, _i18n.__)('Back')), (0, _react.createElement)(_components.Button, {
63
- className: "edit-post-document-actions__command",
64
- onClick: () => openCommandCenter()
65
- }, (0, _react.createElement)(_components.__experimentalHStack, {
66
- className: "edit-post-document-actions__title",
67
- spacing: 1,
68
- justify: "center"
69
- }, (0, _react.createElement)(_blockEditor.BlockIcon, {
70
- icon: _icons.layout
71
- }), (0, _react.createElement)(_components.__experimentalText, {
72
- size: "body",
73
- as: "h1"
74
- }, (0, _react.createElement)(_components.VisuallyHidden, {
75
- as: "span"
76
- }, (0, _i18n.__)('Editing template: ')), templateTitle)), (0, _react.createElement)("span", {
77
- className: "edit-post-document-actions__shortcut"
78
- }, _keycodes.displayShortcut.primary('k'))));
79
- }
80
- var _default = DocumentActions;
81
- exports.default = _default;
82
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_i18n","require","_data","_blockEditor","_components","_icons","_commands","_keycodes","_store","DocumentActions","template","useSelect","select","getEditedPostTemplate","editPostStore","clearSelectedBlock","useDispatch","blockEditorStore","setIsEditingTemplate","open","openCommandCenter","commandsStore","templateTitle","__","title","slug","_react","createElement","className","Button","onClick","icon","isRTL","chevronRightSmall","chevronLeftSmall","__experimentalHStack","spacing","justify","BlockIcon","layout","__experimentalText","size","as","VisuallyHidden","displayShortcut","primary","_default","exports","default"],"sources":["@wordpress/edit-post/src/components/header/document-actions/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { BlockIcon, store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\tButton,\n\tVisuallyHidden,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { layout, chevronLeftSmall, chevronRightSmall } from '@wordpress/icons';\nimport { store as commandsStore } from '@wordpress/commands';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\n\nfunction DocumentActions() {\n\tconst { template } = useSelect( ( select ) => {\n\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\n\t\treturn {\n\t\t\ttemplate: getEditedPostTemplate(),\n\t\t};\n\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\n\tif ( ! template ) {\n\t\treturn null;\n\t}\n\n\tlet templateTitle = __( 'Default' );\n\tif ( template?.title ) {\n\t\ttemplateTitle = template.title;\n\t} else if ( !! template ) {\n\t\ttemplateTitle = template.slug;\n\t}\n\n\treturn (\n\t\t<div className=\"edit-post-document-actions\">\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-post-document-actions__back\"\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t} }\n\t\t\t\ticon={ isRTL() ? chevronRightSmall : chevronLeftSmall }\n\t\t\t>\n\t\t\t\t{ __( 'Back' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-post-document-actions__command\"\n\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"edit-post-document-actions__title\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t>\n\t\t\t\t\t<BlockIcon icon={ layout } />\n\t\t\t\t\t<Text size=\"body\" as=\"h1\">\n\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t{ __( 'Editing template: ' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t{ templateTitle }\n\t\t\t\t\t</Text>\n\t\t\t\t</HStack>\n\t\t\t\t<span className=\"edit-post-document-actions__shortcut\">\n\t\t\t\t\t{ displayShortcut.primary( 'k' ) }\n\t\t\t\t</span>\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n\nexport default DocumentActions;\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAMA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AAnBA;AACA;AACA;;AAcA;AACA;AACA;;AAGA,SAASQ,eAAeA,CAAA,EAAG;EAC1B,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAC7C,MAAM;MAAEC;IAAsB,CAAC,GAAGD,MAAM,CAAEE,YAAc,CAAC;IAEzD,OAAO;MACNJ,QAAQ,EAAEG,qBAAqB,CAAC;IACjC,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAM;IAAEE;EAAmB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,kBAAiB,CAAC;EAC9D,MAAM;IAAEC;EAAqB,CAAC,GAAG,IAAAF,iBAAW,EAAEF,YAAc,CAAC;EAC7D,MAAM;IAAEK,IAAI,EAAEC;EAAkB,CAAC,GAAG,IAAAJ,iBAAW,EAAEK,eAAc,CAAC;EAEhE,IAAK,CAAEX,QAAQ,EAAG;IACjB,OAAO,IAAI;EACZ;EAEA,IAAIY,aAAa,GAAG,IAAAC,QAAE,EAAE,SAAU,CAAC;EACnC,IAAKb,QAAQ,EAAEc,KAAK,EAAG;IACtBF,aAAa,GAAGZ,QAAQ,CAACc,KAAK;EAC/B,CAAC,MAAM,IAAK,CAAC,CAAEd,QAAQ,EAAG;IACzBY,aAAa,GAAGZ,QAAQ,CAACe,IAAI;EAC9B;EAEA,OACC,IAAAC,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA4B,GAC1C,IAAAF,MAAA,CAAAC,aAAA,EAACvB,WAAA,CAAAyB,MAAM;IACND,SAAS,EAAC,kCAAkC;IAC5CE,OAAO,EAAGA,CAAA,KAAM;MACff,kBAAkB,CAAC,CAAC;MACpBG,oBAAoB,CAAE,KAAM,CAAC;IAC9B,CAAG;IACHa,IAAI,EAAG,IAAAC,WAAK,EAAC,CAAC,GAAGC,wBAAiB,GAAGC;EAAkB,GAErD,IAAAX,QAAE,EAAE,MAAO,CACN,CAAC,EACT,IAAAG,MAAA,CAAAC,aAAA,EAACvB,WAAA,CAAAyB,MAAM;IACND,SAAS,EAAC,qCAAqC;IAC/CE,OAAO,EAAGA,CAAA,KAAMV,iBAAiB,CAAC;EAAG,GAErC,IAAAM,MAAA,CAAAC,aAAA,EAACvB,WAAA,CAAA+B,oBAAM;IACNP,SAAS,EAAC,mCAAmC;IAC7CQ,OAAO,EAAG,CAAG;IACbC,OAAO,EAAC;EAAQ,GAEhB,IAAAX,MAAA,CAAAC,aAAA,EAACxB,YAAA,CAAAmC,SAAS;IAACP,IAAI,EAAGQ;EAAQ,CAAE,CAAC,EAC7B,IAAAb,MAAA,CAAAC,aAAA,EAACvB,WAAA,CAAAoC,kBAAI;IAACC,IAAI,EAAC,MAAM;IAACC,EAAE,EAAC;EAAI,GACxB,IAAAhB,MAAA,CAAAC,aAAA,EAACvB,WAAA,CAAAuC,cAAc;IAACD,EAAE,EAAC;EAAM,GACtB,IAAAnB,QAAE,EAAE,oBAAqB,CACZ,CAAC,EACfD,aACG,CACC,CAAC,EACT,IAAAI,MAAA,CAAAC,aAAA;IAAMC,SAAS,EAAC;EAAsC,GACnDgB,yBAAe,CAACC,OAAO,CAAE,GAAI,CAC1B,CACC,CACJ,CAAC;AAER;AAAC,IAAAC,QAAA,GAEcrC,eAAe;AAAAsC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -1,156 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = require("react");
8
- var _compose = require("@wordpress/compose");
9
- var _data = require("@wordpress/data");
10
- var _i18n = require("@wordpress/i18n");
11
- var _blockEditor = require("@wordpress/block-editor");
12
- var _editor = require("@wordpress/editor");
13
- var _components = require("@wordpress/components");
14
- var _icons = require("@wordpress/icons");
15
- var _element = require("@wordpress/element");
16
- var _keyboardShortcuts = require("@wordpress/keyboard-shortcuts");
17
- var _store = require("../../../store");
18
- var _lockUnlock = require("../../../lock-unlock");
19
- /**
20
- * WordPress dependencies
21
- */
22
-
23
- /**
24
- * Internal dependencies
25
- */
26
-
27
- const {
28
- useShouldContextualToolbarShow
29
- } = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
30
- const preventDefault = event => {
31
- event.preventDefault();
32
- };
33
- function HeaderToolbar({
34
- hasFixedToolbar,
35
- setListViewToggleElement
36
- }) {
37
- const inserterButton = (0, _element.useRef)();
38
- const {
39
- setIsInserterOpened,
40
- setIsListViewOpened
41
- } = (0, _data.useDispatch)(_store.store);
42
- const {
43
- isInserterEnabled,
44
- isInserterOpened,
45
- isTextModeEnabled,
46
- showIconLabels,
47
- isListViewOpen,
48
- listViewShortcut
49
- } = (0, _data.useSelect)(select => {
50
- const {
51
- hasInserterItems,
52
- getBlockRootClientId,
53
- getBlockSelectionEnd
54
- } = select(_blockEditor.store);
55
- const {
56
- getEditorSettings
57
- } = select(_editor.store);
58
- const {
59
- getEditorMode,
60
- isFeatureActive,
61
- isListViewOpened
62
- } = select(_store.store);
63
- const {
64
- getShortcutRepresentation
65
- } = select(_keyboardShortcuts.store);
66
- return {
67
- // This setting (richEditingEnabled) should not live in the block editor's setting.
68
- isInserterEnabled: getEditorMode() === 'visual' && getEditorSettings().richEditingEnabled && hasInserterItems(getBlockRootClientId(getBlockSelectionEnd())),
69
- isInserterOpened: select(_store.store).isInserterOpened(),
70
- isTextModeEnabled: getEditorMode() === 'text',
71
- showIconLabels: isFeatureActive('showIconLabels'),
72
- isListViewOpen: isListViewOpened(),
73
- listViewShortcut: getShortcutRepresentation('core/edit-post/toggle-list-view')
74
- };
75
- }, []);
76
- const isLargeViewport = (0, _compose.useViewportMatch)('medium');
77
- const isWideViewport = (0, _compose.useViewportMatch)('wide');
78
- const {
79
- shouldShowContextualToolbar,
80
- canFocusHiddenToolbar,
81
- fixedToolbarCanBeFocused
82
- } = useShouldContextualToolbarShow();
83
- // If there's a block toolbar to be focused, disable the focus shortcut for the document toolbar.
84
- // There's a fixed block toolbar when the fixed toolbar option is enabled or when the browser width is less than the large viewport.
85
- const blockToolbarCanBeFocused = shouldShowContextualToolbar || canFocusHiddenToolbar || fixedToolbarCanBeFocused;
86
- /* translators: accessibility text for the editor toolbar */
87
- const toolbarAriaLabel = (0, _i18n.__)('Document tools');
88
- const toggleListView = (0, _element.useCallback)(() => setIsListViewOpened(!isListViewOpen), [setIsListViewOpened, isListViewOpen]);
89
- const overflowItems = (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ToolbarItem, {
90
- as: _components.Button,
91
- className: "edit-post-header-toolbar__document-overview-toggle",
92
- icon: _icons.listView,
93
- disabled: isTextModeEnabled,
94
- isPressed: isListViewOpen
95
- /* translators: button label text should, if possible, be under 16 characters. */,
96
- label: (0, _i18n.__)('Document Overview'),
97
- onClick: toggleListView,
98
- shortcut: listViewShortcut,
99
- showTooltip: !showIconLabels,
100
- variant: showIconLabels ? 'tertiary' : undefined,
101
- "aria-expanded": isListViewOpen,
102
- ref: setListViewToggleElement
103
- }));
104
- const toggleInserter = (0, _element.useCallback)(() => {
105
- if (isInserterOpened) {
106
- // Focusing the inserter button should close the inserter popover.
107
- // However, there are some cases it won't close when the focus is lost.
108
- // See https://github.com/WordPress/gutenberg/issues/43090 for more details.
109
- inserterButton.current.focus();
110
- setIsInserterOpened(false);
111
- } else {
112
- setIsInserterOpened(true);
113
- }
114
- }, [isInserterOpened, setIsInserterOpened]);
115
-
116
- /* translators: button label text should, if possible, be under 16 characters. */
117
- const longLabel = (0, _i18n._x)('Toggle block inserter', 'Generic label for block inserter button');
118
- const shortLabel = !isInserterOpened ? (0, _i18n.__)('Add') : (0, _i18n.__)('Close');
119
- return (0, _react.createElement)(_blockEditor.NavigableToolbar, {
120
- className: "edit-post-header-toolbar",
121
- "aria-label": toolbarAriaLabel,
122
- shouldUseKeyboardFocusShortcut: !blockToolbarCanBeFocused,
123
- variant: "unstyled"
124
- }, (0, _react.createElement)("div", {
125
- className: "edit-post-header-toolbar__left"
126
- }, (0, _react.createElement)(_components.ToolbarItem, {
127
- ref: inserterButton,
128
- as: _components.Button,
129
- className: "edit-post-header-toolbar__inserter-toggle",
130
- variant: "primary",
131
- isPressed: isInserterOpened,
132
- onMouseDown: preventDefault,
133
- onClick: toggleInserter,
134
- disabled: !isInserterEnabled,
135
- icon: _icons.plus,
136
- label: showIconLabels ? shortLabel : longLabel,
137
- showTooltip: !showIconLabels,
138
- "aria-expanded": isInserterOpened
139
- }), (isWideViewport || !showIconLabels) && (0, _react.createElement)(_react.Fragment, null, isLargeViewport && !hasFixedToolbar && (0, _react.createElement)(_components.ToolbarItem, {
140
- as: _blockEditor.ToolSelector,
141
- showTooltip: !showIconLabels,
142
- variant: showIconLabels ? 'tertiary' : undefined,
143
- disabled: isTextModeEnabled
144
- }), (0, _react.createElement)(_components.ToolbarItem, {
145
- as: _editor.EditorHistoryUndo,
146
- showTooltip: !showIconLabels,
147
- variant: showIconLabels ? 'tertiary' : undefined
148
- }), (0, _react.createElement)(_components.ToolbarItem, {
149
- as: _editor.EditorHistoryRedo,
150
- showTooltip: !showIconLabels,
151
- variant: showIconLabels ? 'tertiary' : undefined
152
- }), overflowItems)));
153
- }
154
- var _default = HeaderToolbar;
155
- exports.default = _default;
156
- //# sourceMappingURL=index.js.map