@wordpress/editor 13.24.1 → 13.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 (307) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +1 -1
  3. package/build/components/document-bar/index.js +164 -0
  4. package/build/components/document-bar/index.js.map +1 -0
  5. package/build/components/document-outline/index.js +82 -1
  6. package/build/components/document-outline/index.js.map +1 -1
  7. package/build/components/document-tools/index.js +160 -0
  8. package/build/components/document-tools/index.js.map +1 -0
  9. package/build/components/editor-canvas/edit-template-blocks-notification.js +106 -0
  10. package/build/components/editor-canvas/edit-template-blocks-notification.js.map +1 -0
  11. package/build/components/editor-canvas/index.js +298 -0
  12. package/build/components/editor-canvas/index.js.map +1 -0
  13. package/build/components/entities-saved-states/index.js +3 -1
  14. package/build/components/entities-saved-states/index.js.map +1 -1
  15. package/build/components/global-keyboard-shortcuts/index.js +12 -2
  16. package/build/components/global-keyboard-shortcuts/index.js.map +1 -1
  17. package/build/components/global-keyboard-shortcuts/register-shortcuts.js +9 -0
  18. package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  19. package/build/components/index.js +72 -8
  20. package/build/components/index.js.map +1 -1
  21. package/build/components/index.native.js +9 -1
  22. package/build/components/index.native.js.map +1 -1
  23. package/build/components/inserter-sidebar/index.js +77 -0
  24. package/build/components/inserter-sidebar/index.js.map +1 -0
  25. package/build/components/list-view-sidebar/index.js +150 -0
  26. package/build/components/list-view-sidebar/index.js.map +1 -0
  27. package/build/components/list-view-sidebar/list-view-outline.js +28 -0
  28. package/build/components/list-view-sidebar/list-view-outline.js.map +1 -0
  29. package/build/components/offline-status/index.native.js +85 -0
  30. package/build/components/offline-status/index.native.js.map +1 -0
  31. package/build/components/page-attributes/panel.js +63 -0
  32. package/build/components/page-attributes/panel.js.map +1 -0
  33. package/build/components/post-discussion/panel.js +59 -0
  34. package/build/components/post-discussion/panel.js.map +1 -0
  35. package/build/components/post-excerpt/check.js +19 -0
  36. package/build/components/post-excerpt/check.js.map +1 -1
  37. package/build/components/post-excerpt/panel.js +55 -0
  38. package/build/components/post-excerpt/panel.js.map +1 -0
  39. package/build/components/post-excerpt/plugin.js +72 -0
  40. package/build/components/post-excerpt/plugin.js.map +1 -0
  41. package/build/components/post-featured-image/index.js +5 -8
  42. package/build/components/post-featured-image/index.js.map +1 -1
  43. package/build/components/post-featured-image/panel.js +60 -0
  44. package/build/components/post-featured-image/panel.js.map +1 -0
  45. package/build/components/post-last-revision/panel.js +27 -0
  46. package/build/components/post-last-revision/panel.js.map +1 -0
  47. package/build/components/post-publish-button/index.js +1 -0
  48. package/build/components/post-publish-button/index.js.map +1 -1
  49. package/build/components/post-publish-panel/maybe-upload-media.js +2 -4
  50. package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  51. package/build/components/post-saved-state/index.js +13 -8
  52. package/build/components/post-saved-state/index.js.map +1 -1
  53. package/build/components/post-schedule/panel.js +1 -1
  54. package/build/components/post-schedule/panel.js.map +1 -1
  55. package/build/components/post-taxonomies/panel.js +68 -0
  56. package/build/components/post-taxonomies/panel.js.map +1 -0
  57. package/build/components/post-template/block-theme.js +100 -0
  58. package/build/components/post-template/block-theme.js.map +1 -0
  59. package/build/components/post-template/classic-theme.js +171 -0
  60. package/build/components/post-template/classic-theme.js.map +1 -0
  61. package/build/components/post-template/create-new-template-modal.js +98 -0
  62. package/build/components/post-template/create-new-template-modal.js.map +1 -0
  63. package/build/components/post-template/create-new-template.js +55 -0
  64. package/build/components/post-template/create-new-template.js.map +1 -0
  65. package/build/components/post-template/hooks.js +88 -0
  66. package/build/components/post-template/hooks.js.map +1 -0
  67. package/build/components/post-template/panel.js +70 -0
  68. package/build/components/post-template/panel.js.map +1 -0
  69. package/build/components/post-template/reset-default-template.js +48 -0
  70. package/build/components/post-template/reset-default-template.js.map +1 -0
  71. package/build/components/post-template/swap-template-button.js +86 -0
  72. package/build/components/post-template/swap-template-button.js.map +1 -0
  73. package/build/components/post-title/index.native.js +25 -15
  74. package/build/components/post-title/index.native.js.map +1 -1
  75. package/build/components/post-view-link/index.js +58 -0
  76. package/build/components/post-view-link/index.js.map +1 -0
  77. package/build/components/post-visibility/check.js +5 -17
  78. package/build/components/post-visibility/check.js.map +1 -1
  79. package/build/components/preview-dropdown/index.js +118 -0
  80. package/build/components/preview-dropdown/index.js.map +1 -0
  81. package/build/components/provider/index.js +24 -82
  82. package/build/components/provider/index.js.map +1 -1
  83. package/build/components/provider/index.native.js +36 -8
  84. package/build/components/provider/index.native.js.map +1 -1
  85. package/build/components/provider/navigation-block-editing-mode.js +40 -0
  86. package/build/components/provider/navigation-block-editing-mode.js.map +1 -0
  87. package/build/components/provider/use-block-editor-settings.js +38 -15
  88. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  89. package/build/hooks/index.js +1 -0
  90. package/build/hooks/index.js.map +1 -1
  91. package/build/hooks/pattern-partial-syncing.js +49 -0
  92. package/build/hooks/pattern-partial-syncing.js.map +1 -0
  93. package/build/private-apis.js +14 -0
  94. package/build/private-apis.js.map +1 -1
  95. package/build/store/actions.js +161 -13
  96. package/build/store/actions.js.map +1 -1
  97. package/build/store/defaults.js +2 -1
  98. package/build/store/defaults.js.map +1 -1
  99. package/build/store/index.js +5 -0
  100. package/build/store/index.js.map +1 -1
  101. package/build/store/private-actions.js +52 -0
  102. package/build/store/private-actions.js.map +1 -0
  103. package/build/store/private-selectors.js +52 -0
  104. package/build/store/private-selectors.js.map +1 -0
  105. package/build/store/reducer.js +109 -27
  106. package/build/store/reducer.js.map +1 -1
  107. package/build/store/reducer.native.js +0 -1
  108. package/build/store/reducer.native.js.map +1 -1
  109. package/build/store/selectors.js +104 -9
  110. package/build/store/selectors.js.map +1 -1
  111. package/build/utils/media-upload/index.js +8 -2
  112. package/build/utils/media-upload/index.js.map +1 -1
  113. package/build-module/components/document-bar/index.js +156 -0
  114. package/build-module/components/document-bar/index.js.map +1 -0
  115. package/build-module/components/document-outline/index.js +82 -1
  116. package/build-module/components/document-outline/index.js.map +1 -1
  117. package/build-module/components/document-tools/index.js +151 -0
  118. package/build-module/components/document-tools/index.js.map +1 -0
  119. package/build-module/components/editor-canvas/edit-template-blocks-notification.js +100 -0
  120. package/build-module/components/editor-canvas/edit-template-blocks-notification.js.map +1 -0
  121. package/build-module/components/editor-canvas/index.js +289 -0
  122. package/build-module/components/editor-canvas/index.js.map +1 -0
  123. package/build-module/components/entities-saved-states/index.js +3 -1
  124. package/build-module/components/entities-saved-states/index.js.map +1 -1
  125. package/build-module/components/global-keyboard-shortcuts/index.js +12 -2
  126. package/build-module/components/global-keyboard-shortcuts/index.js.map +1 -1
  127. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js +9 -0
  128. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  129. package/build-module/components/index.js +9 -1
  130. package/build-module/components/index.js.map +1 -1
  131. package/build-module/components/index.native.js +1 -0
  132. package/build-module/components/index.native.js.map +1 -1
  133. package/build-module/components/inserter-sidebar/index.js +70 -0
  134. package/build-module/components/inserter-sidebar/index.js.map +1 -0
  135. package/build-module/components/list-view-sidebar/index.js +142 -0
  136. package/build-module/components/list-view-sidebar/index.js.map +1 -0
  137. package/build-module/components/list-view-sidebar/list-view-outline.js +20 -0
  138. package/build-module/components/list-view-sidebar/list-view-outline.js.map +1 -0
  139. package/build-module/components/offline-status/index.native.js +77 -0
  140. package/build-module/components/offline-status/index.native.js.map +1 -0
  141. package/build-module/components/page-attributes/panel.js +53 -0
  142. package/build-module/components/page-attributes/panel.js.map +1 -0
  143. package/build-module/components/post-discussion/panel.js +50 -0
  144. package/build-module/components/post-discussion/panel.js.map +1 -0
  145. package/build-module/components/post-excerpt/check.js +19 -0
  146. package/build-module/components/post-excerpt/check.js.map +1 -1
  147. package/build-module/components/post-excerpt/panel.js +48 -0
  148. package/build-module/components/post-excerpt/panel.js.map +1 -0
  149. package/build-module/components/post-excerpt/plugin.js +64 -0
  150. package/build-module/components/post-excerpt/plugin.js.map +1 -0
  151. package/build-module/components/post-featured-image/index.js +5 -8
  152. package/build-module/components/post-featured-image/index.js.map +1 -1
  153. package/build-module/components/post-featured-image/panel.js +51 -0
  154. package/build-module/components/post-featured-image/panel.js.map +1 -0
  155. package/build-module/components/post-last-revision/panel.js +18 -0
  156. package/build-module/components/post-last-revision/panel.js.map +1 -0
  157. package/build-module/components/post-publish-button/index.js +1 -0
  158. package/build-module/components/post-publish-button/index.js.map +1 -1
  159. package/build-module/components/post-publish-panel/maybe-upload-media.js +2 -4
  160. package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  161. package/build-module/components/post-saved-state/index.js +13 -8
  162. package/build-module/components/post-saved-state/index.js.map +1 -1
  163. package/build-module/components/post-schedule/panel.js +1 -1
  164. package/build-module/components/post-schedule/panel.js.map +1 -1
  165. package/build-module/components/post-taxonomies/panel.js +59 -0
  166. package/build-module/components/post-taxonomies/panel.js.map +1 -0
  167. package/build-module/components/post-template/block-theme.js +92 -0
  168. package/build-module/components/post-template/block-theme.js.map +1 -0
  169. package/build-module/components/post-template/classic-theme.js +162 -0
  170. package/build-module/components/post-template/classic-theme.js.map +1 -0
  171. package/build-module/components/post-template/create-new-template-modal.js +91 -0
  172. package/build-module/components/post-template/create-new-template-modal.js.map +1 -0
  173. package/build-module/components/post-template/create-new-template.js +47 -0
  174. package/build-module/components/post-template/create-new-template.js.map +1 -0
  175. package/build-module/components/post-template/hooks.js +78 -0
  176. package/build-module/components/post-template/hooks.js.map +1 -0
  177. package/build-module/components/post-template/panel.js +62 -0
  178. package/build-module/components/post-template/panel.js.map +1 -0
  179. package/build-module/components/post-template/reset-default-template.js +41 -0
  180. package/build-module/components/post-template/reset-default-template.js.map +1 -0
  181. package/build-module/components/post-template/swap-template-button.js +79 -0
  182. package/build-module/components/post-template/swap-template-button.js.map +1 -0
  183. package/build-module/components/post-title/index.native.js +26 -16
  184. package/build-module/components/post-title/index.native.js.map +1 -1
  185. package/build-module/components/post-view-link/index.js +51 -0
  186. package/build-module/components/post-view-link/index.js.map +1 -0
  187. package/build-module/components/post-visibility/check.js +6 -16
  188. package/build-module/components/post-visibility/check.js.map +1 -1
  189. package/build-module/components/preview-dropdown/index.js +110 -0
  190. package/build-module/components/preview-dropdown/index.js.map +1 -0
  191. package/build-module/components/provider/index.js +25 -83
  192. package/build-module/components/provider/index.js.map +1 -1
  193. package/build-module/components/provider/index.native.js +37 -9
  194. package/build-module/components/provider/index.native.js.map +1 -1
  195. package/build-module/components/provider/navigation-block-editing-mode.js +34 -0
  196. package/build-module/components/provider/navigation-block-editing-mode.js.map +1 -0
  197. package/build-module/components/provider/use-block-editor-settings.js +38 -15
  198. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  199. package/build-module/hooks/index.js +1 -0
  200. package/build-module/hooks/index.js.map +1 -1
  201. package/build-module/hooks/pattern-partial-syncing.js +46 -0
  202. package/build-module/hooks/pattern-partial-syncing.js.map +1 -0
  203. package/build-module/private-apis.js +14 -0
  204. package/build-module/private-apis.js.map +1 -1
  205. package/build-module/store/actions.js +147 -9
  206. package/build-module/store/actions.js.map +1 -1
  207. package/build-module/store/defaults.js +2 -1
  208. package/build-module/store/defaults.js.map +1 -1
  209. package/build-module/store/index.js +5 -0
  210. package/build-module/store/index.js.map +1 -1
  211. package/build-module/store/private-actions.js +44 -0
  212. package/build-module/store/private-actions.js.map +1 -0
  213. package/build-module/store/private-selectors.js +43 -0
  214. package/build-module/store/private-selectors.js.map +1 -0
  215. package/build-module/store/reducer.js +103 -26
  216. package/build-module/store/reducer.js.map +1 -1
  217. package/build-module/store/reducer.native.js +1 -2
  218. package/build-module/store/reducer.native.js.map +1 -1
  219. package/build-module/store/selectors.js +93 -6
  220. package/build-module/store/selectors.js.map +1 -1
  221. package/build-module/utils/media-upload/index.js +8 -2
  222. package/build-module/utils/media-upload/index.js.map +1 -1
  223. package/build-style/style-rtl.css +433 -0
  224. package/build-style/style.css +433 -0
  225. package/package.json +32 -31
  226. package/src/components/document-bar/index.js +193 -0
  227. package/src/components/document-bar/style.scss +130 -0
  228. package/src/components/document-outline/index.js +48 -1
  229. package/src/components/document-outline/style.scss +12 -0
  230. package/src/components/document-tools/index.js +177 -0
  231. package/src/components/document-tools/style.scss +98 -0
  232. package/src/components/editor-canvas/edit-template-blocks-notification.js +108 -0
  233. package/src/components/editor-canvas/index.js +386 -0
  234. package/src/components/editor-canvas/style.scss +5 -0
  235. package/src/components/entities-saved-states/index.js +3 -1
  236. package/src/components/entities-saved-states/style.scss +4 -0
  237. package/src/components/global-keyboard-shortcuts/index.js +12 -2
  238. package/src/components/global-keyboard-shortcuts/register-shortcuts.js +10 -0
  239. package/src/components/index.js +9 -1
  240. package/src/components/index.native.js +1 -0
  241. package/src/components/inserter-sidebar/index.js +73 -0
  242. package/src/components/inserter-sidebar/style.scss +22 -0
  243. package/src/components/list-view-sidebar/index.js +169 -0
  244. package/src/components/list-view-sidebar/list-view-outline.js +37 -0
  245. package/src/components/list-view-sidebar/style.scss +84 -0
  246. package/src/components/offline-status/index.native.js +101 -0
  247. package/src/components/offline-status/style.native.scss +28 -0
  248. package/src/components/offline-status/test/index.native.js +108 -0
  249. package/src/components/page-attributes/panel.js +62 -0
  250. package/src/components/post-discussion/panel.js +57 -0
  251. package/src/components/post-excerpt/check.js +18 -0
  252. package/src/components/post-excerpt/panel.js +57 -0
  253. package/src/components/post-excerpt/plugin.js +61 -0
  254. package/src/components/post-excerpt/test/plugin.js +36 -0
  255. package/src/components/post-featured-image/index.js +3 -7
  256. package/src/components/post-featured-image/panel.js +55 -0
  257. package/src/components/post-last-revision/panel.js +22 -0
  258. package/src/components/post-last-revision/style.scss +10 -0
  259. package/src/components/post-publish-button/index.js +1 -0
  260. package/src/components/post-publish-panel/maybe-upload-media.js +3 -8
  261. package/src/components/post-saved-state/index.js +9 -8
  262. package/src/components/post-saved-state/test/__snapshots__/index.js.snap +2 -2
  263. package/src/components/post-schedule/panel.js +1 -1
  264. package/src/components/post-taxonomies/panel.js +66 -0
  265. package/src/components/post-template/block-theme.js +110 -0
  266. package/src/components/post-template/classic-theme.js +213 -0
  267. package/src/components/post-template/create-new-template-modal.js +139 -0
  268. package/src/components/post-template/create-new-template.js +50 -0
  269. package/src/components/post-template/hooks.js +95 -0
  270. package/src/components/post-template/panel.js +66 -0
  271. package/src/components/post-template/reset-default-template.js +43 -0
  272. package/src/components/post-template/style.scss +52 -0
  273. package/src/components/post-template/swap-template-button.js +86 -0
  274. package/src/components/post-title/index.native.js +32 -18
  275. package/src/components/post-title/style.scss +1 -0
  276. package/src/components/post-title/test/__snapshots__/index.native.js.snap +25 -0
  277. package/src/components/post-title/test/index.native.js +78 -0
  278. package/src/components/post-view-link/index.js +47 -0
  279. package/src/components/post-visibility/check.js +10 -15
  280. package/src/components/post-visibility/test/check.js +24 -13
  281. package/src/components/preview-dropdown/index.js +133 -0
  282. package/src/components/preview-dropdown/style.scss +5 -0
  283. package/src/components/provider/index.js +28 -118
  284. package/src/components/provider/index.native.js +55 -14
  285. package/src/components/provider/navigation-block-editing-mode.js +37 -0
  286. package/src/components/provider/use-block-editor-settings.js +42 -17
  287. package/src/hooks/index.js +1 -0
  288. package/src/hooks/pattern-partial-syncing.js +73 -0
  289. package/src/private-apis.js +14 -0
  290. package/src/store/actions.js +160 -9
  291. package/src/store/defaults.js +1 -0
  292. package/src/store/index.js +5 -0
  293. package/src/store/private-actions.js +61 -0
  294. package/src/store/private-selectors.js +51 -0
  295. package/src/store/reducer.js +103 -26
  296. package/src/store/reducer.native.js +0 -2
  297. package/src/store/selectors.js +144 -42
  298. package/src/store/test/actions.js +56 -0
  299. package/src/store/test/reducer.js +98 -0
  300. package/src/store/test/selectors.js +137 -147
  301. package/src/style.scss +7 -0
  302. package/src/utils/media-upload/index.js +9 -2
  303. package/build/components/post-template/index.js +0 -66
  304. package/build/components/post-template/index.js.map +0 -1
  305. package/build-module/components/post-template/index.js +0 -57
  306. package/build-module/components/post-template/index.js.map +0 -1
  307. package/src/components/post-template/index.js +0 -64
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = SwapTemplateButton;
7
+ var _react = require("react");
8
+ var _element = require("@wordpress/element");
9
+ var _htmlEntities = require("@wordpress/html-entities");
10
+ var _blockEditor = require("@wordpress/block-editor");
11
+ var _components = require("@wordpress/components");
12
+ var _i18n = require("@wordpress/i18n");
13
+ var _data = require("@wordpress/data");
14
+ var _coreData = require("@wordpress/core-data");
15
+ var _blocks = require("@wordpress/blocks");
16
+ var _compose = require("@wordpress/compose");
17
+ var _hooks = require("./hooks");
18
+ /**
19
+ * WordPress dependencies
20
+ */
21
+
22
+ /**
23
+ * Internal dependencies
24
+ */
25
+
26
+ function SwapTemplateButton({
27
+ onClick
28
+ }) {
29
+ const [showModal, setShowModal] = (0, _element.useState)(false);
30
+ const onClose = (0, _element.useCallback)(() => {
31
+ setShowModal(false);
32
+ }, []);
33
+ const {
34
+ postType,
35
+ postId
36
+ } = (0, _hooks.useEditedPostContext)();
37
+ const availableTemplates = (0, _hooks.useAvailableTemplates)(postType);
38
+ const {
39
+ editEntityRecord
40
+ } = (0, _data.useDispatch)(_coreData.store);
41
+ if (!availableTemplates?.length) {
42
+ return null;
43
+ }
44
+ const onTemplateSelect = async template => {
45
+ editEntityRecord('postType', postType, postId, {
46
+ template: template.name
47
+ }, {
48
+ undoIgnore: true
49
+ });
50
+ onClose(); // Close the template suggestions modal first.
51
+ onClick();
52
+ };
53
+ return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.MenuItem, {
54
+ onClick: () => setShowModal(true)
55
+ }, (0, _i18n.__)('Swap template')), showModal && (0, _react.createElement)(_components.Modal, {
56
+ title: (0, _i18n.__)('Choose a template'),
57
+ onRequestClose: onClose,
58
+ overlayClassName: "editor-post-template__swap-template-modal",
59
+ isFullScreen: true
60
+ }, (0, _react.createElement)("div", {
61
+ className: "editor-post-template__swap-template-modal-content"
62
+ }, (0, _react.createElement)(TemplatesList, {
63
+ postType: postType,
64
+ onSelect: onTemplateSelect
65
+ }))));
66
+ }
67
+ function TemplatesList({
68
+ postType,
69
+ onSelect
70
+ }) {
71
+ const availableTemplates = (0, _hooks.useAvailableTemplates)(postType);
72
+ const templatesAsPatterns = (0, _element.useMemo)(() => availableTemplates.map(template => ({
73
+ name: template.slug,
74
+ blocks: (0, _blocks.parse)(template.content.raw),
75
+ title: (0, _htmlEntities.decodeEntities)(template.title.rendered),
76
+ id: template.id
77
+ })), [availableTemplates]);
78
+ const shownTemplates = (0, _compose.useAsyncList)(templatesAsPatterns);
79
+ return (0, _react.createElement)(_blockEditor.__experimentalBlockPatternsList, {
80
+ label: (0, _i18n.__)('Templates'),
81
+ blockPatterns: templatesAsPatterns,
82
+ shownPatterns: shownTemplates,
83
+ onClickPattern: onSelect
84
+ });
85
+ }
86
+ //# sourceMappingURL=swap-template-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_element","require","_htmlEntities","_blockEditor","_components","_i18n","_data","_coreData","_blocks","_compose","_hooks","SwapTemplateButton","onClick","showModal","setShowModal","useState","onClose","useCallback","postType","postId","useEditedPostContext","availableTemplates","useAvailableTemplates","editEntityRecord","useDispatch","coreStore","length","onTemplateSelect","template","name","undoIgnore","_react","createElement","Fragment","MenuItem","__","Modal","title","onRequestClose","overlayClassName","isFullScreen","className","TemplatesList","onSelect","templatesAsPatterns","useMemo","map","slug","blocks","parse","content","raw","decodeEntities","rendered","id","shownTemplates","useAsyncList","__experimentalBlockPatternsList","label","blockPatterns","shownPatterns","onClickPattern"],"sources":["@wordpress/editor/src/components/post-template/swap-template-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState, useCallback } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport { MenuItem, Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { useAsyncList } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useAvailableTemplates, useEditedPostContext } from './hooks';\n\nexport default function SwapTemplateButton( { onClick } ) {\n\tconst [ showModal, setShowModal ] = useState( false );\n\tconst onClose = useCallback( () => {\n\t\tsetShowModal( false );\n\t}, [] );\n\tconst { postType, postId } = useEditedPostContext();\n\tconst availableTemplates = useAvailableTemplates( postType );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tif ( ! availableTemplates?.length ) {\n\t\treturn null;\n\t}\n\tconst onTemplateSelect = async ( template ) => {\n\t\teditEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tpostId,\n\t\t\t{ template: template.name },\n\t\t\t{ undoIgnore: true }\n\t\t);\n\t\tonClose(); // Close the template suggestions modal first.\n\t\tonClick();\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem onClick={ () => setShowModal( true ) }>\n\t\t\t\t{ __( 'Swap template' ) }\n\t\t\t</MenuItem>\n\t\t\t{ showModal && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Choose a template' ) }\n\t\t\t\t\tonRequestClose={ onClose }\n\t\t\t\t\toverlayClassName=\"editor-post-template__swap-template-modal\"\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<div className=\"editor-post-template__swap-template-modal-content\">\n\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\tpostType={ postType }\n\t\t\t\t\t\t\tonSelect={ onTemplateSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction TemplatesList( { postType, onSelect } ) {\n\tconst availableTemplates = useAvailableTemplates( postType );\n\tconst templatesAsPatterns = useMemo(\n\t\t() =>\n\t\t\tavailableTemplates.map( ( template ) => ( {\n\t\t\t\tname: template.slug,\n\t\t\t\tblocks: parse( template.content.raw ),\n\t\t\t\ttitle: decodeEntities( template.title.rendered ),\n\t\t\t\tid: template.id,\n\t\t\t} ) ),\n\t\t[ availableTemplates ]\n\t);\n\tconst shownTemplates = useAsyncList( templatesAsPatterns );\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tlabel={ __( 'Templates' ) }\n\t\t\tblockPatterns={ templatesAsPatterns }\n\t\t\tshownPatterns={ shownTemplates }\n\t\t\tonClickPattern={ onSelect }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -17,6 +17,7 @@ var _i18n = require("@wordpress/i18n");
17
17
  var _blocks = require("@wordpress/blocks");
18
18
  var _blockEditor = require("@wordpress/block-editor");
19
19
  var _editor = require("@wordpress/editor");
20
+ var _dom = require("@wordpress/dom");
20
21
  var _style = _interopRequireDefault(require("./style.scss"));
21
22
  /**
22
23
  * External dependencies
@@ -58,7 +59,6 @@ class PostTitle extends _element.Component {
58
59
  }
59
60
  onPaste({
60
61
  value,
61
- onChange,
62
62
  plainText,
63
63
  html
64
64
  }) {
@@ -71,21 +71,32 @@ class PostTitle extends _element.Component {
71
71
  HTML: html,
72
72
  plainText
73
73
  });
74
- if (content.length) {
75
- if (typeof content === 'string') {
76
- const valueToInsert = (0, _richText.create)({
77
- html: content
78
- });
79
- onChange((0, _richText.insert)(value, valueToInsert));
74
+ if (!content.length) {
75
+ return;
76
+ }
77
+ if (typeof content !== 'string') {
78
+ const [firstBlock] = content;
79
+ if (!title && (firstBlock.name === 'core/heading' || firstBlock.name === 'core/paragraph')) {
80
+ // Strip HTML to avoid unwanted HTML being added to the title.
81
+ // In the majority of cases it is assumed that HTML in the title
82
+ // is undesirable.
83
+ const contentNoHTML = (0, _dom.__unstableStripHTML)(firstBlock.attributes.content);
84
+ onUpdate(contentNoHTML);
85
+ onInsertBlockAfter(content.slice(1));
80
86
  } else {
81
- const [firstBlock] = content;
82
- if (!title && (firstBlock.name === 'core/heading' || firstBlock.name === 'core/paragraph')) {
83
- onUpdate(firstBlock.attributes.content);
84
- onInsertBlockAfter(content.slice(1));
85
- } else {
86
- onInsertBlockAfter(content);
87
- }
87
+ onInsertBlockAfter(content);
88
88
  }
89
+ } else {
90
+ // Strip HTML to avoid unwanted HTML being added to the title.
91
+ // In the majority of cases it is assumed that HTML in the title
92
+ // is undesirable.
93
+ const contentNoHTML = (0, _dom.__unstableStripHTML)(content);
94
+ const newValue = (0, _richText.insert)(value, (0, _richText.create)({
95
+ html: contentNoHTML
96
+ }));
97
+ onUpdate((0, _richText.toHTMLString)({
98
+ value: newValue
99
+ }));
89
100
  }
90
101
  }
91
102
  setRef(richText) {
@@ -137,7 +148,6 @@ class PostTitle extends _element.Component {
137
148
  unstableOnFocus: this.props.onSelect,
138
149
  onBlur: this.props.onBlur // Always assign onBlur as a props.
139
150
  ,
140
- multiline: false,
141
151
  style: titleStyles,
142
152
  styles: _style.default,
143
153
  fontSize: 24,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_element","_richText","_htmlEntities","_data","_components","_compose","_i18n","_blocks","_blockEditor","_editor","_style","_interopRequireDefault","PostTitle","Component","constructor","props","setRef","bind","onPaste","componentDidUpdate","prevProps","isSelected","isAnyBlockSelected","richTextRef","blur","onUnselect","componentDidMount","innerRef","handleFocusOutside","focus","onSelect","value","onChange","plainText","html","title","onInsertBlockAfter","onUpdate","content","pasteHandler","HTML","length","valueToInsert","create","insert","firstBlock","name","attributes","slice","richText","getTitle","postType","__","sprintf","render","placeholder","style","focusedBorderColor","borderStyle","isDimmed","globalStyles","decodedPlaceholder","decodeEntities","borderColor","titleStyles","text","color","placeholderColor","_react","createElement","View","testID","styles","titleContainer","dimmed","accessible","accessibilityLabel","accessibilityHint","RichText","Raw","tagName","tagsToEliminate","unstableOnFocus","onBlur","multiline","fontSize","lineHeight","fontWeight","deleteEnter","onSelectionChange","onEnter","onEnterPress","disableEditingMenu","__unstableIsSelected","__unstableOnCreateUndoLevel","_default","compose","withSelect","select","isPostTitleSelected","getEditedPostAttribute","editorStore","getSelectedBlockClientId","getBlockRootClientId","getSettings","blockEditorStore","selectedId","selectionIsNested","__experimentalGlobalStylesBaseStyles","withDispatch","dispatch","undo","redo","togglePostTitleSelection","editPost","clearSelectedBlock","insertDefaultBlock","insertBlocks","undefined","onUndo","onRedo","blocks","withInstanceId","withFocusOutside","exports","default"],"sources":["@wordpress/editor/src/components/post-title/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { create, insert } from '@wordpress/rich-text';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { withFocusOutside } from '@wordpress/components';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { pasteHandler } from '@wordpress/blocks';\nimport { store as blockEditorStore, RichText } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nclass PostTitle extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.setRef = this.setRef.bind( this );\n\t\tthis.onPaste = this.onPaste.bind( this );\n\t}\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Unselect if any other block is selected and blur the RichText.\n\t\tif (\n\t\t\tthis.props.isSelected &&\n\t\t\t! prevProps.isAnyBlockSelected &&\n\t\t\tthis.props.isAnyBlockSelected\n\t\t) {\n\t\t\tif ( this.richTextRef ) {\n\t\t\t\tthis.richTextRef.blur();\n\t\t\t}\n\t\t\tthis.props.onUnselect();\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.props.innerRef ) {\n\t\t\tthis.props.innerRef( this );\n\t\t}\n\t}\n\n\thandleFocusOutside() {\n\t\tthis.props.onUnselect();\n\t}\n\n\tfocus() {\n\t\tthis.props.onSelect();\n\t}\n\n\tonPaste( { value, onChange, plainText, html } ) {\n\t\tconst { title, onInsertBlockAfter, onUpdate } = this.props;\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tif ( content.length ) {\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else {\n\t\t\t\tconst [ firstBlock ] = content;\n\t\t\t\tif (\n\t\t\t\t\t! title &&\n\t\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t\t) {\n\t\t\t\t\tonUpdate( firstBlock.attributes.content );\n\t\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t\t} else {\n\t\t\t\t\tonInsertBlockAfter( content );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetRef( richText ) {\n\t\tthis.richTextRef = richText;\n\t}\n\n\tgetTitle( title, postType ) {\n\t\tif ( 'page' === postType ) {\n\t\t\treturn ! title\n\t\t\t\t? /* translators: accessibility text. empty page title. */\n\t\t\t\t __( 'Page title. Empty' )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: text content of the page title. */\n\t\t\t\t\t\t__( 'Page title. %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t );\n\t\t}\n\n\t\treturn ! title\n\t\t\t? /* translators: accessibility text. empty post title. */\n\t\t\t __( 'Post title. Empty' )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: accessibility text. %s: text content of the post title. */\n\t\t\t\t\t__( 'Post title. %s' ),\n\t\t\t\t\ttitle\n\t\t\t );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tplaceholder,\n\t\t\tstyle,\n\t\t\ttitle,\n\t\t\tfocusedBorderColor,\n\t\t\tborderStyle,\n\t\t\tisDimmed,\n\t\t\tpostType,\n\t\t\tglobalStyles,\n\t\t} = this.props;\n\n\t\tconst decodedPlaceholder = decodeEntities( placeholder );\n\t\tconst borderColor = this.props.isSelected\n\t\t\t? focusedBorderColor\n\t\t\t: 'transparent';\n\t\tconst titleStyles = {\n\t\t\t...style,\n\t\t\t...( globalStyles?.text && {\n\t\t\t\tcolor: globalStyles.text,\n\t\t\t\tplaceholderColor: globalStyles.text,\n\t\t\t} ),\n\t\t};\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\ttestID=\"post-title\"\n\t\t\t\tstyle={ [\n\t\t\t\t\tstyles.titleContainer,\n\t\t\t\t\tborderStyle,\n\t\t\t\t\t{ borderColor },\n\t\t\t\t\tisDimmed && styles.dimmed,\n\t\t\t\t] }\n\t\t\t\taccessible={ ! this.props.isSelected }\n\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\taccessibilityHint={ __( 'Updates the title.' ) }\n\t\t\t>\n\t\t\t\t<RichText.Raw\n\t\t\t\t\tsetRef={ this.setRef }\n\t\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\t\ttagName={ 'p' }\n\t\t\t\t\ttagsToEliminate={ [ 'strong' ] }\n\t\t\t\t\tunstableOnFocus={ this.props.onSelect }\n\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as a props.\n\t\t\t\t\tmultiline={ false }\n\t\t\t\t\tstyle={ titleStyles }\n\t\t\t\t\tstyles={ styles }\n\t\t\t\t\tfontSize={ 24 }\n\t\t\t\t\tlineHeight={ 1 }\n\t\t\t\t\tfontWeight={ 'bold' }\n\t\t\t\t\tdeleteEnter={ true }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tthis.props.onUpdate( value );\n\t\t\t\t\t} }\n\t\t\t\t\tonPaste={ this.onPaste }\n\t\t\t\t\tplaceholder={ decodedPlaceholder }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonSelectionChange={ () => {} }\n\t\t\t\t\tonEnter={ this.props.onEnterPress }\n\t\t\t\t\tdisableEditingMenu={ true }\n\t\t\t\t\t__unstableIsSelected={ this.props.isSelected }\n\t\t\t\t\t__unstableOnCreateUndoLevel={ () => {} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default compose(\n\twithSelect( ( select ) => {\n\t\tconst { isPostTitleSelected, getEditedPostAttribute } =\n\t\t\tselect( editorStore );\n\t\tconst { getSelectedBlockClientId, getBlockRootClientId, getSettings } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst selectedId = getSelectedBlockClientId();\n\t\tconst selectionIsNested = !! getBlockRootClientId( selectedId );\n\t\tconst globalStyles =\n\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles?.color;\n\n\t\treturn {\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t\ttitle: getEditedPostAttribute( 'title' ),\n\t\t\tisAnyBlockSelected: !! selectedId,\n\t\t\tisSelected: isPostTitleSelected(),\n\t\t\tisDimmed: selectionIsNested,\n\t\t\tglobalStyles,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { undo, redo, togglePostTitleSelection, editPost } =\n\t\t\tdispatch( editorStore );\n\n\t\tconst { clearSelectedBlock, insertDefaultBlock, insertBlocks } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonEnterPress() {\n\t\t\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t\t\t},\n\t\t\tonUndo: undo,\n\t\t\tonRedo: redo,\n\t\t\tonSelect() {\n\t\t\t\ttogglePostTitleSelection( true );\n\t\t\t\tclearSelectedBlock();\n\t\t\t},\n\t\t\tonUnselect() {\n\t\t\t\ttogglePostTitleSelection( false );\n\t\t\t},\n\t\t\tonUpdate( title ) {\n\t\t\t\teditPost( { title } );\n\t\t\t},\n\t\t\tonInsertBlockAfter( blocks ) {\n\t\t\t\tinsertBlocks( blocks, 0 );\n\t\t\t},\n\t\t};\n\t} ),\n\twithInstanceId,\n\twithFocusOutside\n)( PostTitle );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_element","_richText","_htmlEntities","_data","_components","_compose","_i18n","_blocks","_blockEditor","_editor","_dom","_style","_interopRequireDefault","PostTitle","Component","constructor","props","setRef","bind","onPaste","componentDidUpdate","prevProps","isSelected","isAnyBlockSelected","richTextRef","blur","onUnselect","componentDidMount","innerRef","handleFocusOutside","focus","onSelect","value","plainText","html","title","onInsertBlockAfter","onUpdate","content","pasteHandler","HTML","length","firstBlock","name","contentNoHTML","stripHTML","attributes","slice","newValue","insert","create","toHTMLString","richText","getTitle","postType","__","sprintf","render","placeholder","style","focusedBorderColor","borderStyle","isDimmed","globalStyles","decodedPlaceholder","decodeEntities","borderColor","titleStyles","text","color","placeholderColor","_react","createElement","View","testID","styles","titleContainer","dimmed","accessible","accessibilityLabel","accessibilityHint","RichText","Raw","tagName","tagsToEliminate","unstableOnFocus","onBlur","fontSize","lineHeight","fontWeight","deleteEnter","onChange","onSelectionChange","onEnter","onEnterPress","disableEditingMenu","__unstableIsSelected","__unstableOnCreateUndoLevel","_default","compose","withSelect","select","isPostTitleSelected","getEditedPostAttribute","editorStore","getSelectedBlockClientId","getBlockRootClientId","getSettings","blockEditorStore","selectedId","selectionIsNested","__experimentalGlobalStylesBaseStyles","withDispatch","dispatch","undo","redo","togglePostTitleSelection","editPost","clearSelectedBlock","insertDefaultBlock","insertBlocks","undefined","onUndo","onRedo","blocks","withInstanceId","withFocusOutside","exports","default"],"sources":["@wordpress/editor/src/components/post-title/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { create, toHTMLString, insert } from '@wordpress/rich-text';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { withFocusOutside } from '@wordpress/components';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { pasteHandler } from '@wordpress/blocks';\nimport { store as blockEditorStore, RichText } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nclass PostTitle extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.setRef = this.setRef.bind( this );\n\t\tthis.onPaste = this.onPaste.bind( this );\n\t}\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Unselect if any other block is selected and blur the RichText.\n\t\tif (\n\t\t\tthis.props.isSelected &&\n\t\t\t! prevProps.isAnyBlockSelected &&\n\t\t\tthis.props.isAnyBlockSelected\n\t\t) {\n\t\t\tif ( this.richTextRef ) {\n\t\t\t\tthis.richTextRef.blur();\n\t\t\t}\n\t\t\tthis.props.onUnselect();\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.props.innerRef ) {\n\t\t\tthis.props.innerRef( this );\n\t\t}\n\t}\n\n\thandleFocusOutside() {\n\t\tthis.props.onUnselect();\n\t}\n\n\tfocus() {\n\t\tthis.props.onSelect();\n\t}\n\n\tonPaste( { value, plainText, html } ) {\n\t\tconst { title, onInsertBlockAfter, onUpdate } = this.props;\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t\t// is undesirable.\n\t\t\t\tconst contentNoHTML = stripHTML(\n\t\t\t\t\tfirstBlock.attributes.content\n\t\t\t\t);\n\t\t\t\tonUpdate( contentNoHTML );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\t// Strip HTML to avoid unwanted HTML being added to the title.\n\t\t\t// In the majority of cases it is assumed that HTML in the title\n\t\t\t// is undesirable.\n\t\t\tconst contentNoHTML = stripHTML( content );\n\n\t\t\tconst newValue = insert( value, create( { html: contentNoHTML } ) );\n\t\t\tonUpdate( toHTMLString( { value: newValue } ) );\n\t\t}\n\t}\n\n\tsetRef( richText ) {\n\t\tthis.richTextRef = richText;\n\t}\n\n\tgetTitle( title, postType ) {\n\t\tif ( 'page' === postType ) {\n\t\t\treturn ! title\n\t\t\t\t? /* translators: accessibility text. empty page title. */\n\t\t\t\t __( 'Page title. Empty' )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: text content of the page title. */\n\t\t\t\t\t\t__( 'Page title. %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t );\n\t\t}\n\n\t\treturn ! title\n\t\t\t? /* translators: accessibility text. empty post title. */\n\t\t\t __( 'Post title. Empty' )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: accessibility text. %s: text content of the post title. */\n\t\t\t\t\t__( 'Post title. %s' ),\n\t\t\t\t\ttitle\n\t\t\t );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tplaceholder,\n\t\t\tstyle,\n\t\t\ttitle,\n\t\t\tfocusedBorderColor,\n\t\t\tborderStyle,\n\t\t\tisDimmed,\n\t\t\tpostType,\n\t\t\tglobalStyles,\n\t\t} = this.props;\n\n\t\tconst decodedPlaceholder = decodeEntities( placeholder );\n\t\tconst borderColor = this.props.isSelected\n\t\t\t? focusedBorderColor\n\t\t\t: 'transparent';\n\t\tconst titleStyles = {\n\t\t\t...style,\n\t\t\t...( globalStyles?.text && {\n\t\t\t\tcolor: globalStyles.text,\n\t\t\t\tplaceholderColor: globalStyles.text,\n\t\t\t} ),\n\t\t};\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\ttestID=\"post-title\"\n\t\t\t\tstyle={ [\n\t\t\t\t\tstyles.titleContainer,\n\t\t\t\t\tborderStyle,\n\t\t\t\t\t{ borderColor },\n\t\t\t\t\tisDimmed && styles.dimmed,\n\t\t\t\t] }\n\t\t\t\taccessible={ ! this.props.isSelected }\n\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\taccessibilityHint={ __( 'Updates the title.' ) }\n\t\t\t>\n\t\t\t\t<RichText.Raw\n\t\t\t\t\tsetRef={ this.setRef }\n\t\t\t\t\taccessibilityLabel={ this.getTitle( title, postType ) }\n\t\t\t\t\ttagName={ 'p' }\n\t\t\t\t\ttagsToEliminate={ [ 'strong' ] }\n\t\t\t\t\tunstableOnFocus={ this.props.onSelect }\n\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as a props.\n\t\t\t\t\tstyle={ titleStyles }\n\t\t\t\t\tstyles={ styles }\n\t\t\t\t\tfontSize={ 24 }\n\t\t\t\t\tlineHeight={ 1 }\n\t\t\t\t\tfontWeight={ 'bold' }\n\t\t\t\t\tdeleteEnter={ true }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tthis.props.onUpdate( value );\n\t\t\t\t\t} }\n\t\t\t\t\tonPaste={ this.onPaste }\n\t\t\t\t\tplaceholder={ decodedPlaceholder }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonSelectionChange={ () => {} }\n\t\t\t\t\tonEnter={ this.props.onEnterPress }\n\t\t\t\t\tdisableEditingMenu={ true }\n\t\t\t\t\t__unstableIsSelected={ this.props.isSelected }\n\t\t\t\t\t__unstableOnCreateUndoLevel={ () => {} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default compose(\n\twithSelect( ( select ) => {\n\t\tconst { isPostTitleSelected, getEditedPostAttribute } =\n\t\t\tselect( editorStore );\n\t\tconst { getSelectedBlockClientId, getBlockRootClientId, getSettings } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst selectedId = getSelectedBlockClientId();\n\t\tconst selectionIsNested = !! getBlockRootClientId( selectedId );\n\t\tconst globalStyles =\n\t\t\tgetSettings()?.__experimentalGlobalStylesBaseStyles?.color;\n\n\t\treturn {\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t\ttitle: getEditedPostAttribute( 'title' ),\n\t\t\tisAnyBlockSelected: !! selectedId,\n\t\t\tisSelected: isPostTitleSelected(),\n\t\t\tisDimmed: selectionIsNested,\n\t\t\tglobalStyles,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { undo, redo, togglePostTitleSelection, editPost } =\n\t\t\tdispatch( editorStore );\n\n\t\tconst { clearSelectedBlock, insertDefaultBlock, insertBlocks } =\n\t\t\tdispatch( blockEditorStore );\n\n\t\treturn {\n\t\t\tonEnterPress() {\n\t\t\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t\t\t},\n\t\t\tonUndo: undo,\n\t\t\tonRedo: redo,\n\t\t\tonSelect() {\n\t\t\t\ttogglePostTitleSelection( true );\n\t\t\t\tclearSelectedBlock();\n\t\t\t},\n\t\t\tonUnselect() {\n\t\t\t\ttogglePostTitleSelection( false );\n\t\t\t},\n\t\t\tonUpdate( title ) {\n\t\t\t\teditPost( { title } );\n\t\t\t},\n\t\t\tonInsertBlockAfter( blocks ) {\n\t\t\t\tinsertBlocks( blocks, 0 );\n\t\t\t},\n\t\t};\n\t} ),\n\twithInstanceId,\n\twithFocusOutside\n)( PostTitle );\n"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = PostViewLink;
7
+ var _react = require("react");
8
+ var _i18n = require("@wordpress/i18n");
9
+ var _components = require("@wordpress/components");
10
+ var _icons = require("@wordpress/icons");
11
+ var _coreData = require("@wordpress/core-data");
12
+ var _data = require("@wordpress/data");
13
+ var _preferences = require("@wordpress/preferences");
14
+ var _store = require("../../store");
15
+ /**
16
+ * WordPress dependencies
17
+ */
18
+
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+
23
+ function PostViewLink() {
24
+ const {
25
+ hasLoaded,
26
+ permalink,
27
+ isPublished,
28
+ label,
29
+ showIconLabels
30
+ } = (0, _data.useSelect)(select => {
31
+ // Grab post type to retrieve the view_item label.
32
+ const postTypeSlug = select(_store.store).getCurrentPostType();
33
+ const postType = select(_coreData.store).getPostType(postTypeSlug);
34
+ const {
35
+ get
36
+ } = select(_preferences.store);
37
+ return {
38
+ permalink: select(_store.store).getPermalink(),
39
+ isPublished: select(_store.store).isCurrentPostPublished(),
40
+ label: postType?.labels.view_item,
41
+ hasLoaded: !!postType,
42
+ showIconLabels: get('core', 'showIconLabels')
43
+ };
44
+ }, []);
45
+
46
+ // Only render the view button if the post is published and has a permalink.
47
+ if (!isPublished || !permalink || !hasLoaded) {
48
+ return null;
49
+ }
50
+ return (0, _react.createElement)(_components.Button, {
51
+ icon: _icons.external,
52
+ label: label || (0, _i18n.__)('View post'),
53
+ href: permalink,
54
+ target: "_blank",
55
+ showTooltip: !showIconLabels
56
+ });
57
+ }
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_i18n","require","_components","_icons","_coreData","_data","_preferences","_store","PostViewLink","hasLoaded","permalink","isPublished","label","showIconLabels","useSelect","select","postTypeSlug","editorStore","getCurrentPostType","postType","coreStore","getPostType","get","preferencesStore","getPermalink","isCurrentPostPublished","labels","view_item","_react","createElement","Button","icon","external","__","href","target","showTooltip"],"sources":["@wordpress/editor/src/components/post-view-link/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { external } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostViewLink() {\n\tconst { hasLoaded, permalink, isPublished, label, showIconLabels } =\n\t\tuseSelect( ( select ) => {\n\t\t\t// Grab post type to retrieve the view_item label.\n\t\t\tconst postTypeSlug = select( editorStore ).getCurrentPostType();\n\t\t\tconst postType = select( coreStore ).getPostType( postTypeSlug );\n\t\t\tconst { get } = select( preferencesStore );\n\n\t\t\treturn {\n\t\t\t\tpermalink: select( editorStore ).getPermalink(),\n\t\t\t\tisPublished: select( editorStore ).isCurrentPostPublished(),\n\t\t\t\tlabel: postType?.labels.view_item,\n\t\t\t\thasLoaded: !! postType,\n\t\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\t};\n\t\t}, [] );\n\n\t// Only render the view button if the post is published and has a permalink.\n\tif ( ! isPublished || ! permalink || ! hasLoaded ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ticon={ external }\n\t\t\tlabel={ label || __( 'View post' ) }\n\t\t\thref={ permalink }\n\t\t\ttarget=\"_blank\"\n\t\t\tshowTooltip={ ! showIconLabels }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAKA,IAAAM,MAAA,GAAAN,OAAA;AAbA;AACA;AACA;;AAQA;AACA;AACA;;AAGe,SAASO,YAAYA,CAAA,EAAG;EACtC,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC,WAAW;IAAEC,KAAK;IAAEC;EAAe,CAAC,GACjE,IAAAC,eAAS,EAAIC,MAAM,IAAM;IACxB;IACA,MAAMC,YAAY,GAAGD,MAAM,CAAEE,YAAY,CAAC,CAACC,kBAAkB,CAAC,CAAC;IAC/D,MAAMC,QAAQ,GAAGJ,MAAM,CAAEK,eAAU,CAAC,CAACC,WAAW,CAAEL,YAAa,CAAC;IAChE,MAAM;MAAEM;IAAI,CAAC,GAAGP,MAAM,CAAEQ,kBAAiB,CAAC;IAE1C,OAAO;MACNb,SAAS,EAAEK,MAAM,CAAEE,YAAY,CAAC,CAACO,YAAY,CAAC,CAAC;MAC/Cb,WAAW,EAAEI,MAAM,CAAEE,YAAY,CAAC,CAACQ,sBAAsB,CAAC,CAAC;MAC3Db,KAAK,EAAEO,QAAQ,EAAEO,MAAM,CAACC,SAAS;MACjClB,SAAS,EAAE,CAAC,CAAEU,QAAQ;MACtBN,cAAc,EAAES,GAAG,CAAE,MAAM,EAAE,gBAAiB;IAC/C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAER;EACA,IAAK,CAAEX,WAAW,IAAI,CAAED,SAAS,IAAI,CAAED,SAAS,EAAG;IAClD,OAAO,IAAI;EACZ;EAEA,OACC,IAAAmB,MAAA,CAAAC,aAAA,EAAC3B,WAAA,CAAA4B,MAAM;IACNC,IAAI,EAAGC,eAAU;IACjBpB,KAAK,EAAGA,KAAK,IAAI,IAAAqB,QAAE,EAAE,WAAY,CAAG;IACpCC,IAAI,EAAGxB,SAAW;IAClByB,MAAM,EAAC,QAAQ;IACfC,WAAW,EAAG,CAAEvB;EAAgB,CAChC,CAAC;AAEJ"}
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.PostVisibilityCheck = PostVisibilityCheck;
7
- exports.default = void 0;
8
- var _compose = require("@wordpress/compose");
6
+ exports.default = PostVisibilityCheck;
9
7
  var _data = require("@wordpress/data");
10
8
  var _store = require("../../store");
11
9
  /**
@@ -17,24 +15,14 @@ var _store = require("../../store");
17
15
  */
18
16
 
19
17
  function PostVisibilityCheck({
20
- hasPublishAction,
21
18
  render
22
19
  }) {
23
- const canEdit = hasPublishAction;
20
+ const canEdit = (0, _data.useSelect)(select => {
21
+ var _select$getCurrentPos;
22
+ return (_select$getCurrentPos = select(_store.store).getCurrentPost()._links?.['wp:action-publish']) !== null && _select$getCurrentPos !== void 0 ? _select$getCurrentPos : false;
23
+ });
24
24
  return render({
25
25
  canEdit
26
26
  });
27
27
  }
28
- var _default = (0, _compose.compose)([(0, _data.withSelect)(select => {
29
- var _getCurrentPost$_link;
30
- const {
31
- getCurrentPost,
32
- getCurrentPostType
33
- } = select(_store.store);
34
- return {
35
- hasPublishAction: (_getCurrentPost$_link = getCurrentPost()._links?.['wp:action-publish']) !== null && _getCurrentPost$_link !== void 0 ? _getCurrentPost$_link : false,
36
- postType: getCurrentPostType()
37
- };
38
- })])(PostVisibilityCheck);
39
- exports.default = _default;
40
28
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_compose","require","_data","_store","PostVisibilityCheck","hasPublishAction","render","canEdit","_default","compose","withSelect","select","_getCurrentPost$_link","getCurrentPost","getCurrentPostType","editorStore","_links","postType","exports","default"],"sources":["@wordpress/editor/src/components/post-visibility/check.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport function PostVisibilityCheck( { hasPublishAction, render } ) {\n\tconst canEdit = hasPublishAction;\n\treturn render( { canEdit } );\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getCurrentPost, getCurrentPostType } = select( editorStore );\n\t\treturn {\n\t\t\thasPublishAction:\n\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t} ),\n] )( PostVisibilityCheck );\n"],"mappings":";;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGO,SAASG,mBAAmBA,CAAE;EAAEC,gBAAgB;EAAEC;AAAO,CAAC,EAAG;EACnE,MAAMC,OAAO,GAAGF,gBAAgB;EAChC,OAAOC,MAAM,CAAE;IAAEC;EAAQ,CAAE,CAAC;AAC7B;AAAC,IAAAC,QAAA,GAEc,IAAAC,gBAAO,EAAE,CACvB,IAAAC,gBAAU,EAAIC,MAAM,IAAM;EAAA,IAAAC,qBAAA;EACzB,MAAM;IAAEC,cAAc;IAAEC;EAAmB,CAAC,GAAGH,MAAM,CAAEI,YAAY,CAAC;EACpE,OAAO;IACNV,gBAAgB,GAAAO,qBAAA,GACfC,cAAc,CAAC,CAAC,CAACG,MAAM,GAAI,mBAAmB,CAAE,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,KAAK;IAC1DK,QAAQ,EAAEH,kBAAkB,CAAC;EAC9B,CAAC;AACF,CAAE,CAAC,CACF,CAAC,CAAEV,mBAAoB,CAAC;AAAAc,OAAA,CAAAC,OAAA,GAAAX,QAAA"}
1
+ {"version":3,"names":["_data","require","_store","PostVisibilityCheck","render","canEdit","useSelect","select","_select$getCurrentPos","editorStore","getCurrentPost","_links"],"sources":["@wordpress/editor/src/components/post-visibility/check.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostVisibilityCheck( { render } ) {\n\tconst canEdit = useSelect( ( select ) => {\n\t\treturn (\n\t\t\tselect( editorStore ).getCurrentPost()._links?.[\n\t\t\t\t'wp:action-publish'\n\t\t\t] ?? false\n\t\t);\n\t} );\n\n\treturn render( { canEdit } );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGe,SAASE,mBAAmBA,CAAE;EAAEC;AAAO,CAAC,EAAG;EACzD,MAAMC,OAAO,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAAA,IAAAC,qBAAA;IACxC,QAAAA,qBAAA,GACCD,MAAM,CAAEE,YAAY,CAAC,CAACC,cAAc,CAAC,CAAC,CAACC,MAAM,GAC5C,mBAAmB,CACnB,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,KAAK;EAEZ,CAAE,CAAC;EAEH,OAAOJ,MAAM,CAAE;IAAEC;EAAQ,CAAE,CAAC;AAC7B"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = PreviewDropdown;
8
+ var _react = require("react");
9
+ var _compose = require("@wordpress/compose");
10
+ var _components = require("@wordpress/components");
11
+ var _i18n = require("@wordpress/i18n");
12
+ var _icons = require("@wordpress/icons");
13
+ var _data = require("@wordpress/data");
14
+ var _coreData = require("@wordpress/core-data");
15
+ var _preferences = require("@wordpress/preferences");
16
+ var _store = require("../../store");
17
+ var _postPreviewButton = _interopRequireDefault(require("../post-preview-button"));
18
+ /**
19
+ * WordPress dependencies
20
+ */
21
+
22
+ /**
23
+ * Internal dependencies
24
+ */
25
+
26
+ function PreviewDropdown({
27
+ forceIsAutosaveable,
28
+ disabled
29
+ }) {
30
+ const {
31
+ deviceType,
32
+ homeUrl,
33
+ isTemplate,
34
+ isViewable,
35
+ showIconLabels
36
+ } = (0, _data.useSelect)(select => {
37
+ var _getPostType$viewable;
38
+ const {
39
+ getDeviceType,
40
+ getCurrentPostType
41
+ } = select(_store.store);
42
+ const {
43
+ getUnstableBase,
44
+ getPostType
45
+ } = select(_coreData.store);
46
+ const {
47
+ get
48
+ } = select(_preferences.store);
49
+ const _currentPostType = getCurrentPostType();
50
+ return {
51
+ deviceType: getDeviceType(),
52
+ homeUrl: getUnstableBase()?.home,
53
+ isTemplate: _currentPostType === 'wp_template',
54
+ isViewable: (_getPostType$viewable = getPostType(_currentPostType)?.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false,
55
+ showIconLabels: get('core', 'showIconLabels')
56
+ };
57
+ }, []);
58
+ const {
59
+ setDeviceType
60
+ } = (0, _data.useDispatch)(_store.store);
61
+ const isMobile = (0, _compose.useViewportMatch)('medium', '<');
62
+ if (isMobile) return null;
63
+ const popoverProps = {
64
+ placement: 'bottom-end'
65
+ };
66
+ const toggleProps = {
67
+ className: 'editor-preview-dropdown__toggle',
68
+ size: 'compact',
69
+ showTooltip: !showIconLabels,
70
+ disabled,
71
+ __experimentalIsFocusable: disabled
72
+ };
73
+ const menuProps = {
74
+ 'aria-label': (0, _i18n.__)('View options')
75
+ };
76
+ const deviceIcons = {
77
+ mobile: _icons.mobile,
78
+ tablet: _icons.tablet,
79
+ desktop: _icons.desktop
80
+ };
81
+ return (0, _react.createElement)(_components.DropdownMenu, {
82
+ className: "editor-preview-dropdown",
83
+ popoverProps: popoverProps,
84
+ toggleProps: toggleProps,
85
+ menuProps: menuProps,
86
+ icon: deviceIcons[deviceType.toLowerCase()],
87
+ label: (0, _i18n.__)('View'),
88
+ disableOpenOnArrowDown: disabled
89
+ }, ({
90
+ onClose
91
+ }) => (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.MenuGroup, null, (0, _react.createElement)(_components.MenuItem, {
92
+ onClick: () => setDeviceType('Desktop'),
93
+ icon: deviceType === 'Desktop' && _icons.check
94
+ }, (0, _i18n.__)('Desktop')), (0, _react.createElement)(_components.MenuItem, {
95
+ onClick: () => setDeviceType('Tablet'),
96
+ icon: deviceType === 'Tablet' && _icons.check
97
+ }, (0, _i18n.__)('Tablet')), (0, _react.createElement)(_components.MenuItem, {
98
+ onClick: () => setDeviceType('Mobile'),
99
+ icon: deviceType === 'Mobile' && _icons.check
100
+ }, (0, _i18n.__)('Mobile'))), isTemplate && (0, _react.createElement)(_components.MenuGroup, null, (0, _react.createElement)(_components.MenuItem, {
101
+ href: homeUrl,
102
+ target: "_blank",
103
+ icon: _icons.external,
104
+ onClick: onClose
105
+ }, (0, _i18n.__)('View site'), (0, _react.createElement)(_components.VisuallyHidden, {
106
+ as: "span"
107
+ }, /* translators: accessibility text */
108
+ (0, _i18n.__)('(opens in a new tab)')))), isViewable && (0, _react.createElement)(_components.MenuGroup, null, (0, _react.createElement)(_postPreviewButton.default, {
109
+ className: "editor-preview-dropdown__button-external",
110
+ role: "menuitem",
111
+ forceIsAutosaveable: forceIsAutosaveable,
112
+ textContent: (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Preview in new tab'), (0, _react.createElement)(_components.Icon, {
113
+ icon: _icons.external
114
+ })),
115
+ onPreview: onClose
116
+ }))));
117
+ }
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_compose","require","_components","_i18n","_icons","_data","_coreData","_preferences","_store","_postPreviewButton","_interopRequireDefault","PreviewDropdown","forceIsAutosaveable","disabled","deviceType","homeUrl","isTemplate","isViewable","showIconLabels","useSelect","select","_getPostType$viewable","getDeviceType","getCurrentPostType","editorStore","getUnstableBase","getPostType","coreStore","get","preferencesStore","_currentPostType","home","viewable","setDeviceType","useDispatch","isMobile","useViewportMatch","popoverProps","placement","toggleProps","className","size","showTooltip","__experimentalIsFocusable","menuProps","__","deviceIcons","mobile","tablet","desktop","_react","createElement","DropdownMenu","icon","toLowerCase","label","disableOpenOnArrowDown","onClose","Fragment","MenuGroup","MenuItem","onClick","check","href","target","external","VisuallyHidden","as","default","role","textContent","Icon","onPreview"],"sources":["@wordpress/editor/src/components/preview-dropdown/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tVisuallyHidden,\n\tIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check, desktop, mobile, tablet, external } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport PostPreviewButton from '../post-preview-button';\n\nexport default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {\n\tconst { deviceType, homeUrl, isTemplate, isViewable, showIconLabels } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getDeviceType, getCurrentPostType } = select( editorStore );\n\t\t\tconst { getUnstableBase, getPostType } = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst _currentPostType = getCurrentPostType();\n\t\t\treturn {\n\t\t\t\tdeviceType: getDeviceType(),\n\t\t\t\thomeUrl: getUnstableBase()?.home,\n\t\t\t\tisTemplate: _currentPostType === 'wp_template',\n\t\t\t\tisViewable: getPostType( _currentPostType )?.viewable ?? false,\n\t\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\t};\n\t\t}, [] );\n\tconst { setDeviceType } = useDispatch( editorStore );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tif ( isMobile ) return null;\n\n\tconst popoverProps = {\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'editor-preview-dropdown__toggle',\n\t\tsize: 'compact',\n\t\tshowTooltip: ! showIconLabels,\n\t\tdisabled,\n\t\t__experimentalIsFocusable: disabled,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tmobile,\n\t\ttablet,\n\t\tdesktop,\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"editor-preview-dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ __( 'View' ) }\n\t\t\tdisableOpenOnArrowDown={ disabled }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Desktop' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Desktop' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Desktop' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Tablet' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Tablet' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Tablet' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Mobile' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Mobile' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Mobile' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ isTemplate && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isViewable && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\t\tclassName=\"editor-preview-dropdown__button-external\"\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\tforceIsAutosaveable={ forceIsAutosaveable }\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</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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"}