@wordpress/block-library 8.28.5 → 8.30.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.
- package/CHANGELOG.md +4 -0
- package/build/audio/edit.js +7 -17
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js.map +1 -1
- package/build/avatar/edit.js.map +1 -1
- package/build/button/edit.js +1 -1
- package/build/button/edit.js.map +1 -1
- package/build/buttons/edit.js +1 -6
- package/build/buttons/edit.js.map +1 -1
- package/build/buttons/edit.native.js +1 -7
- package/build/buttons/edit.native.js.map +1 -1
- package/build/columns/edit.js +8 -2
- package/build/columns/edit.js.map +1 -1
- package/build/comment-author-avatar/edit.js +1 -1
- package/build/comment-author-avatar/edit.js.map +1 -1
- package/build/cover/edit/index.js.map +1 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/edit/resizable-cover-popover.js +0 -6
- package/build/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build/cover/edit.native.js.map +1 -1
- package/build/details/index.js +1 -0
- package/build/details/index.js.map +1 -1
- package/build/file/deprecated.js.map +1 -1
- package/build/file/edit.js +6 -13
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/save.js.map +1 -1
- package/build/form-input/edit.js +1 -1
- package/build/form-input/edit.js.map +1 -1
- package/build/gallery/edit.js +5 -5
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.native.js.map +1 -1
- package/build/gallery/v1/edit.js.map +1 -1
- package/build/gallery/v1/gallery.native.js.map +1 -1
- package/build/group/variations.js +12 -15
- package/build/group/variations.js.map +1 -1
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js.map +1 -1
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/list/edit.js +5 -0
- package/build/list/edit.js.map +1 -1
- package/build/list/ordered-list-settings.js +1 -1
- package/build/list/ordered-list-settings.js.map +1 -1
- package/build/list-item/edit.native.js.map +1 -1
- package/build/list-item/hooks/use-indent-list-item.js +1 -0
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-outdent-list-item.js +1 -0
- package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-space.js +16 -7
- package/build/list-item/hooks/use-space.js.map +1 -1
- package/build/media-text/media-container.native.js +1 -1
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation-link/link-ui.js.map +1 -1
- package/build/paragraph/edit.native.js.map +1 -1
- package/build/pattern/edit.js +23 -9
- package/build/pattern/edit.js.map +1 -1
- package/build/post-excerpt/edit.js.map +1 -1
- package/build/post-featured-image/dimension-controls.js.map +1 -1
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-navigation-link/edit.js.map +1 -1
- package/build/query/edit/pattern-selection-modal.js.map +1 -1
- package/build/query/utils.js +7 -5
- package/build/query/utils.js.map +1 -1
- package/build/query-pagination-next/edit.js.map +1 -1
- package/build/query-pagination-previous/edit.js.map +1 -1
- package/build/quote/deprecated.js +111 -12
- package/build/quote/deprecated.js.map +1 -1
- package/build/quote/edit.js +5 -5
- package/build/quote/edit.js.map +1 -1
- package/build/quote/index.js +1 -1
- package/build/quote/index.js.map +1 -1
- package/build/quote/save.js +2 -2
- package/build/quote/save.js.map +1 -1
- package/build/read-more/edit.js.map +1 -1
- package/build/search/edit.js +1 -1
- package/build/search/edit.js.map +1 -1
- package/build/search/edit.native.js.map +1 -1
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-title/{edit/index.js → edit.js} +1 -1
- package/build/site-title/edit.js.map +1 -0
- package/build/social-link/edit.js.map +1 -1
- package/build/social-links/edit.native.js.map +1 -1
- package/build/spacer/edit.js.map +1 -1
- package/build/table-of-contents/edit.js.map +1 -1
- package/build/template-part/edit/index.js +53 -1
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/selection-modal.js +2 -8
- package/build/template-part/edit/selection-modal.js.map +1 -1
- package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
- package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
- package/build/utils/hooks.js +55 -4
- package/build/utils/hooks.js.map +1 -1
- package/build/video/edit-common-settings.js.map +1 -1
- package/build/video/edit.js +7 -16
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +2 -7
- package/build/video/edit.native.js.map +1 -1
- package/build-module/audio/edit.js +10 -20
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/avatar/edit.js.map +1 -1
- package/build-module/button/edit.js +1 -1
- package/build-module/button/edit.js.map +1 -1
- package/build-module/buttons/edit.js +2 -7
- package/build-module/buttons/edit.js.map +1 -1
- package/build-module/buttons/edit.native.js +1 -7
- package/build-module/buttons/edit.native.js.map +1 -1
- package/build-module/columns/edit.js +8 -2
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/comment-author-avatar/edit.js +1 -1
- package/build-module/comment-author-avatar/edit.js.map +1 -1
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/edit/resizable-cover-popover.js +1 -7
- package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
- package/build-module/cover/edit.native.js.map +1 -1
- package/build-module/details/index.js +1 -0
- package/build-module/details/index.js.map +1 -1
- package/build-module/file/deprecated.js.map +1 -1
- package/build-module/file/edit.js +7 -14
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/save.js.map +1 -1
- package/build-module/form-input/edit.js +1 -1
- package/build-module/form-input/edit.js.map +1 -1
- package/build-module/gallery/edit.js +5 -5
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.native.js.map +1 -1
- package/build-module/gallery/v1/edit.js.map +1 -1
- package/build-module/gallery/v1/gallery.native.js.map +1 -1
- package/build-module/group/variations.js +12 -15
- package/build-module/group/variations.js.map +1 -1
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js.map +1 -1
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/list/edit.js +5 -0
- package/build-module/list/edit.js.map +1 -1
- package/build-module/list/ordered-list-settings.js +1 -1
- package/build-module/list/ordered-list-settings.js.map +1 -1
- package/build-module/list-item/edit.native.js.map +1 -1
- package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
- package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-space.js +17 -8
- package/build-module/list-item/hooks/use-space.js.map +1 -1
- package/build-module/media-text/media-container.native.js +1 -1
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation-link/link-ui.js.map +1 -1
- package/build-module/paragraph/edit.native.js.map +1 -1
- package/build-module/pattern/edit.js +24 -10
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/post-excerpt/edit.js.map +1 -1
- package/build-module/post-featured-image/dimension-controls.js.map +1 -1
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-navigation-link/edit.js.map +1 -1
- package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
- package/build-module/query/utils.js +7 -5
- package/build-module/query/utils.js.map +1 -1
- package/build-module/query-pagination-next/edit.js.map +1 -1
- package/build-module/query-pagination-previous/edit.js.map +1 -1
- package/build-module/quote/deprecated.js +112 -13
- package/build-module/quote/deprecated.js.map +1 -1
- package/build-module/quote/edit.js +5 -5
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/quote/index.js +1 -1
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/save.js +2 -2
- package/build-module/quote/save.js.map +1 -1
- package/build-module/read-more/edit.js.map +1 -1
- package/build-module/search/edit.js +1 -1
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/edit.native.js.map +1 -1
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-title/{edit/index.js → edit.js} +1 -1
- package/build-module/site-title/edit.js.map +1 -0
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/social-links/edit.native.js.map +1 -1
- package/build-module/spacer/edit.js.map +1 -1
- package/build-module/table-of-contents/edit.js.map +1 -1
- package/build-module/template-part/edit/index.js +57 -5
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/selection-modal.js +2 -8
- package/build-module/template-part/edit/selection-modal.js.map +1 -1
- package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
- package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
- package/build-module/utils/hooks.js +54 -3
- package/build-module/utils/hooks.js.map +1 -1
- package/build-module/video/edit-common-settings.js.map +1 -1
- package/build-module/video/edit.js +10 -19
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +2 -7
- package/build-module/video/edit.native.js.map +1 -1
- package/build-style/editor-rtl.css +4 -1
- package/build-style/editor.css +4 -1
- package/build-style/group/editor-rtl.css +1 -1
- package/build-style/group/editor.css +1 -1
- package/build-style/image/editor-rtl.css +3 -0
- package/build-style/image/editor.css +3 -0
- package/package.json +34 -34
- package/src/audio/edit.js +9 -19
- package/src/audio/edit.native.js +3 -3
- package/src/avatar/edit.js +1 -1
- package/src/avatar/index.php +12 -1
- package/src/block/index.php +2 -0
- package/src/button/edit.js +2 -2
- package/src/buttons/edit.js +3 -16
- package/src/buttons/edit.native.js +2 -18
- package/src/calendar/index.php +5 -0
- package/src/columns/edit.js +9 -2
- package/src/comment-author-avatar/edit.js +1 -1
- package/src/comments/index.php +2 -0
- package/src/cover/edit/index.js +2 -2
- package/src/cover/edit/inspector-controls.js +1 -1
- package/src/cover/edit/resizable-cover-popover.js +1 -6
- package/src/cover/edit.native.js +1 -1
- package/src/details/block.json +1 -0
- package/src/file/deprecated.js +3 -3
- package/src/file/edit.js +8 -15
- package/src/file/edit.native.js +4 -4
- package/src/file/save.js +1 -1
- package/src/form-input/edit.js +1 -1
- package/src/gallery/edit.js +6 -12
- package/src/gallery/gallery.native.js +1 -1
- package/src/gallery/test/index.native.js +1 -1
- package/src/gallery/v1/edit.js +2 -2
- package/src/gallery/v1/gallery.native.js +1 -1
- package/src/group/editor.scss +1 -1
- package/src/group/variations.js +3 -6
- package/src/image/edit.js +1 -1
- package/src/image/edit.native.js +1 -1
- package/src/image/editor.scss +6 -0
- package/src/image/image.js +2 -2
- package/src/latest-posts/edit.native.js +1 -1
- package/src/list/edit.js +5 -0
- package/src/list/ordered-list-settings.js +1 -1
- package/src/list-item/edit.native.js +1 -1
- package/src/list-item/hooks/use-indent-list-item.js +2 -0
- package/src/list-item/hooks/use-outdent-list-item.js +2 -0
- package/src/list-item/hooks/use-space.js +16 -9
- package/src/media-text/media-container.native.js +5 -3
- package/src/media-text/test/edit.native.js +58 -0
- package/src/missing/test/edit-integration.native.js +2 -1
- package/src/navigation/edit/index.js +1 -1
- package/src/navigation/edit/test/navigation-menu-selector.js +3 -3
- package/src/navigation/index.php +18 -13
- package/src/navigation-link/link-ui.js +2 -2
- package/src/paragraph/edit.native.js +1 -1
- package/src/paragraph/test/edit.native.js +36 -0
- package/src/pattern/edit.js +27 -10
- package/src/post-author-biography/index.php +4 -3
- package/src/post-author-name/index.php +4 -3
- package/src/post-excerpt/edit.js +1 -1
- package/src/post-featured-image/dimension-controls.js +4 -4
- package/src/post-featured-image/edit.js +1 -1
- package/src/post-navigation-link/edit.js +1 -1
- package/src/post-template/index.php +2 -0
- package/src/query/edit/pattern-selection-modal.js +1 -1
- package/src/query/utils.js +6 -4
- package/src/query-pagination-next/edit.js +1 -1
- package/src/query-pagination-previous/edit.js +1 -1
- package/src/quote/block.json +1 -1
- package/src/quote/deprecated.js +110 -15
- package/src/quote/edit.js +5 -5
- package/src/quote/save.js +2 -2
- package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
- package/src/read-more/edit.js +1 -1
- package/src/search/edit.js +1 -1
- package/src/search/edit.native.js +4 -4
- package/src/site-logo/edit.js +1 -1
- package/src/social-link/edit.js +1 -1
- package/src/social-links/edit.native.js +1 -1
- package/src/spacer/edit.js +1 -1
- package/src/table-of-contents/edit.js +1 -1
- package/src/template-part/edit/index.js +91 -4
- package/src/template-part/edit/selection-modal.js +4 -8
- package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
- package/src/utils/hooks.js +53 -3
- package/src/video/edit-common-settings.js +1 -1
- package/src/video/edit.js +10 -18
- package/src/video/edit.native.js +5 -8
- package/src/video/test/edit.native.js +0 -14
- package/build/site-title/edit/index.js.map +0 -1
- package/build-module/site-title/edit/index.js.map +0 -1
- /package/src/site-title/{edit/index.js → edit.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { useSelect } from '@wordpress/data';
|
|
4
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
5
5
|
import {
|
|
6
6
|
BlockSettingsMenuControls,
|
|
7
7
|
useBlockProps,
|
|
@@ -10,11 +10,14 @@ import {
|
|
|
10
10
|
RecursionProvider,
|
|
11
11
|
useHasRecursion,
|
|
12
12
|
InspectorControls,
|
|
13
|
+
__experimentalBlockPatternsList as BlockPatternsList,
|
|
13
14
|
} from '@wordpress/block-editor';
|
|
14
|
-
import { Spinner, Modal, MenuItem } from '@wordpress/components';
|
|
15
|
+
import { PanelBody, Spinner, Modal, MenuItem } from '@wordpress/components';
|
|
16
|
+
import { useAsyncList } from '@wordpress/compose';
|
|
15
17
|
import { __, sprintf } from '@wordpress/i18n';
|
|
16
18
|
import { store as coreStore } from '@wordpress/core-data';
|
|
17
19
|
import { useState } from '@wordpress/element';
|
|
20
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* Internal dependencies
|
|
@@ -24,10 +27,12 @@ import TemplatePartSelectionModal from './selection-modal';
|
|
|
24
27
|
import { TemplatePartAdvancedControls } from './advanced-controls';
|
|
25
28
|
import TemplatePartInnerBlocks from './inner-blocks';
|
|
26
29
|
import { createTemplatePartId } from './utils/create-template-part-id';
|
|
30
|
+
import { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';
|
|
27
31
|
import {
|
|
28
32
|
useAlternativeBlockPatterns,
|
|
29
33
|
useAlternativeTemplateParts,
|
|
30
34
|
useTemplatePartArea,
|
|
35
|
+
useCreateTemplatePartFromBlocks,
|
|
31
36
|
} from './utils/hooks';
|
|
32
37
|
|
|
33
38
|
function ReplaceButton( {
|
|
@@ -43,7 +48,6 @@ function ReplaceButton( {
|
|
|
43
48
|
templatePartId
|
|
44
49
|
);
|
|
45
50
|
const blockPatterns = useAlternativeBlockPatterns( area, clientId );
|
|
46
|
-
|
|
47
51
|
const hasReplacements = !! templateParts.length || !! blockPatterns.length;
|
|
48
52
|
const canReplace =
|
|
49
53
|
isEntityAvailable &&
|
|
@@ -67,11 +71,29 @@ function ReplaceButton( {
|
|
|
67
71
|
);
|
|
68
72
|
}
|
|
69
73
|
|
|
74
|
+
function TemplatesList( { availableTemplates, onSelect } ) {
|
|
75
|
+
const shownTemplates = useAsyncList( availableTemplates );
|
|
76
|
+
|
|
77
|
+
if ( ! availableTemplates ) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<BlockPatternsList
|
|
83
|
+
label={ __( 'Templates' ) }
|
|
84
|
+
blockPatterns={ availableTemplates }
|
|
85
|
+
shownPatterns={ shownTemplates }
|
|
86
|
+
onClickPattern={ onSelect }
|
|
87
|
+
/>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
70
91
|
export default function TemplatePartEdit( {
|
|
71
92
|
attributes,
|
|
72
93
|
setAttributes,
|
|
73
94
|
clientId,
|
|
74
95
|
} ) {
|
|
96
|
+
const { createSuccessNotice } = useDispatch( noticesStore );
|
|
75
97
|
const currentTheme = useSelect(
|
|
76
98
|
( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,
|
|
77
99
|
[]
|
|
@@ -117,12 +139,28 @@ export default function TemplatePartEdit( {
|
|
|
117
139
|
[ templatePartId, attributes.area, clientId ]
|
|
118
140
|
);
|
|
119
141
|
|
|
142
|
+
const { templateParts } = useAlternativeTemplateParts(
|
|
143
|
+
area,
|
|
144
|
+
templatePartId
|
|
145
|
+
);
|
|
146
|
+
const blockPatterns = useAlternativeBlockPatterns( area, clientId );
|
|
147
|
+
const hasReplacements = !! templateParts.length || !! blockPatterns.length;
|
|
120
148
|
const areaObject = useTemplatePartArea( area );
|
|
121
149
|
const blockProps = useBlockProps();
|
|
122
150
|
const isPlaceholder = ! slug;
|
|
123
151
|
const isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;
|
|
124
152
|
const TagName = tagName || areaObject.tagName;
|
|
125
153
|
|
|
154
|
+
const canReplace =
|
|
155
|
+
isEntityAvailable &&
|
|
156
|
+
hasReplacements &&
|
|
157
|
+
( area === 'header' || area === 'footer' );
|
|
158
|
+
|
|
159
|
+
const createFromBlocks = useCreateTemplatePartFromBlocks(
|
|
160
|
+
area,
|
|
161
|
+
setAttributes
|
|
162
|
+
);
|
|
163
|
+
|
|
126
164
|
// We don't want to render a missing state if we have any inner blocks.
|
|
127
165
|
// A new template part is automatically created if we have any inner blocks but no entity.
|
|
128
166
|
if (
|
|
@@ -154,6 +192,28 @@ export default function TemplatePartEdit( {
|
|
|
154
192
|
);
|
|
155
193
|
}
|
|
156
194
|
|
|
195
|
+
const partsAsPatterns = templateParts.map( ( templatePart ) =>
|
|
196
|
+
mapTemplatePartToBlockPattern( templatePart )
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
const onTemplatePartSelect = ( templatePart ) => {
|
|
200
|
+
setAttributes( {
|
|
201
|
+
slug: templatePart.slug,
|
|
202
|
+
theme: templatePart.theme,
|
|
203
|
+
area: undefined,
|
|
204
|
+
} );
|
|
205
|
+
createSuccessNotice(
|
|
206
|
+
sprintf(
|
|
207
|
+
/* translators: %s: template part title. */
|
|
208
|
+
__( 'Template Part "%s" replaceed.' ),
|
|
209
|
+
templatePart.title?.rendered || templatePart.slug
|
|
210
|
+
),
|
|
211
|
+
{
|
|
212
|
+
type: 'snackbar',
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
};
|
|
216
|
+
|
|
157
217
|
return (
|
|
158
218
|
<>
|
|
159
219
|
<RecursionProvider uniqueId={ templatePartId }>
|
|
@@ -207,6 +267,33 @@ export default function TemplatePartEdit( {
|
|
|
207
267
|
);
|
|
208
268
|
} }
|
|
209
269
|
</BlockSettingsMenuControls>
|
|
270
|
+
|
|
271
|
+
{ canReplace &&
|
|
272
|
+
( partsAsPatterns.length > 0 ||
|
|
273
|
+
blockPatterns.length > 0 ) && (
|
|
274
|
+
<InspectorControls>
|
|
275
|
+
<PanelBody title={ __( 'Replace' ) }>
|
|
276
|
+
<TemplatesList
|
|
277
|
+
availableTemplates={ partsAsPatterns }
|
|
278
|
+
onSelect={ ( pattern ) => {
|
|
279
|
+
onTemplatePartSelect(
|
|
280
|
+
pattern.templatePart
|
|
281
|
+
);
|
|
282
|
+
} }
|
|
283
|
+
/>
|
|
284
|
+
<TemplatesList
|
|
285
|
+
availableTemplates={ blockPatterns }
|
|
286
|
+
onSelect={ ( pattern, blocks ) => {
|
|
287
|
+
createFromBlocks(
|
|
288
|
+
blocks,
|
|
289
|
+
pattern.title
|
|
290
|
+
);
|
|
291
|
+
} }
|
|
292
|
+
/>
|
|
293
|
+
</PanelBody>
|
|
294
|
+
</InspectorControls>
|
|
295
|
+
) }
|
|
296
|
+
|
|
210
297
|
{ isEntityAvailable && (
|
|
211
298
|
<TemplatePartInnerBlocks
|
|
212
299
|
tagName={ TagName }
|
|
@@ -233,7 +320,7 @@ export default function TemplatePartEdit( {
|
|
|
233
320
|
onRequestClose={ () =>
|
|
234
321
|
setIsTemplatePartSelectionOpen( false )
|
|
235
322
|
}
|
|
236
|
-
isFullScreen
|
|
323
|
+
isFullScreen
|
|
237
324
|
>
|
|
238
325
|
<TemplatePartSelectionModal
|
|
239
326
|
templatePartId={ templatePartId }
|
|
@@ -5,7 +5,6 @@ import { useMemo, useState } from '@wordpress/element';
|
|
|
5
5
|
import { __, sprintf } from '@wordpress/i18n';
|
|
6
6
|
import { store as noticesStore } from '@wordpress/notices';
|
|
7
7
|
import { useDispatch } from '@wordpress/data';
|
|
8
|
-
import { parse } from '@wordpress/blocks';
|
|
9
8
|
import { useAsyncList } from '@wordpress/compose';
|
|
10
9
|
import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
|
|
11
10
|
import {
|
|
@@ -21,7 +20,7 @@ import {
|
|
|
21
20
|
useAlternativeTemplateParts,
|
|
22
21
|
useCreateTemplatePartFromBlocks,
|
|
23
22
|
} from './utils/hooks';
|
|
24
|
-
import {
|
|
23
|
+
import { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';
|
|
25
24
|
import { searchPatterns } from '../../utils/search-patterns';
|
|
26
25
|
|
|
27
26
|
export default function TemplatePartSelectionModal( {
|
|
@@ -39,12 +38,9 @@ export default function TemplatePartSelectionModal( {
|
|
|
39
38
|
);
|
|
40
39
|
// We can map template parts to block patters to reuse the BlockPatternsList UI
|
|
41
40
|
const filteredTemplateParts = useMemo( () => {
|
|
42
|
-
const partsAsPatterns = templateParts.map( ( templatePart ) =>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
blocks: parse( templatePart.content.raw ),
|
|
46
|
-
templatePart,
|
|
47
|
-
} ) );
|
|
41
|
+
const partsAsPatterns = templateParts.map( ( templatePart ) =>
|
|
42
|
+
mapTemplatePartToBlockPattern( templatePart )
|
|
43
|
+
);
|
|
48
44
|
|
|
49
45
|
return searchPatterns( partsAsPatterns, searchValue );
|
|
50
46
|
}, [ templateParts, searchValue ] );
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { parse } from '@wordpress/blocks';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { createTemplatePartId } from './create-template-part-id';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* This maps the properties of a template part to those of a block pattern.
|
|
13
|
+
* @param {Object} templatePart
|
|
14
|
+
* @return {Object} The template part in the shape of block pattern.
|
|
15
|
+
*/
|
|
16
|
+
export function mapTemplatePartToBlockPattern( templatePart ) {
|
|
17
|
+
return {
|
|
18
|
+
name: createTemplatePartId( templatePart.theme, templatePart.slug ),
|
|
19
|
+
title: templatePart.title.rendered,
|
|
20
|
+
blocks: parse( templatePart.content.raw ),
|
|
21
|
+
templatePart,
|
|
22
|
+
};
|
|
23
|
+
}
|
package/src/utils/hooks.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { useSelect } from '@wordpress/data';
|
|
5
|
+
import { useLayoutEffect, useEffect, useRef } from '@wordpress/element';
|
|
6
|
+
import { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';
|
|
7
|
+
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
5
8
|
import { store as coreStore } from '@wordpress/core-data';
|
|
6
9
|
|
|
7
10
|
/**
|
|
@@ -19,6 +22,53 @@ export function useCanEditEntity( kind, name, recordId ) {
|
|
|
19
22
|
);
|
|
20
23
|
}
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Handles uploading a media file from a blob URL on mount.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object} args Upload media arguments.
|
|
29
|
+
* @param {string} args.url Blob URL.
|
|
30
|
+
* @param {?Array} args.allowedTypes Array of allowed media types.
|
|
31
|
+
* @param {Function} args.onChange Function called when the media is uploaded.
|
|
32
|
+
* @param {Function} args.onError Function called when an error happens.
|
|
33
|
+
*/
|
|
34
|
+
export function useUploadMediaFromBlobURL( args = {} ) {
|
|
35
|
+
const latestArgs = useRef( args );
|
|
36
|
+
const { getSettings } = useSelect( blockEditorStore );
|
|
37
|
+
|
|
38
|
+
useLayoutEffect( () => {
|
|
39
|
+
latestArgs.current = args;
|
|
40
|
+
} );
|
|
41
|
+
|
|
42
|
+
useEffect( () => {
|
|
43
|
+
if (
|
|
44
|
+
! latestArgs.current.url ||
|
|
45
|
+
! isBlobURL( latestArgs.current.url )
|
|
46
|
+
) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const file = getBlobByURL( latestArgs.current.url );
|
|
51
|
+
if ( ! file ) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const { url, allowedTypes, onChange, onError } = latestArgs.current;
|
|
56
|
+
const { mediaUpload } = getSettings();
|
|
57
|
+
|
|
58
|
+
mediaUpload( {
|
|
59
|
+
filesList: [ file ],
|
|
60
|
+
allowedTypes,
|
|
61
|
+
onFileChange: ( [ media ] ) => {
|
|
62
|
+
if ( isBlobURL( media?.url ) ) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
revokeBlobURL( url );
|
|
67
|
+
onChange( media );
|
|
68
|
+
},
|
|
69
|
+
onError: ( message ) => {
|
|
70
|
+
onError( message );
|
|
71
|
+
},
|
|
72
|
+
} );
|
|
73
|
+
}, [ getSettings ] );
|
|
74
|
+
}
|
package/src/video/edit.js
CHANGED
|
@@ -6,7 +6,7 @@ import classnames from 'classnames';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import { isBlobURL } from '@wordpress/blob';
|
|
10
10
|
import {
|
|
11
11
|
BaseControl,
|
|
12
12
|
Button,
|
|
@@ -24,12 +24,11 @@ import {
|
|
|
24
24
|
MediaUploadCheck,
|
|
25
25
|
MediaReplaceFlow,
|
|
26
26
|
useBlockProps,
|
|
27
|
-
store as blockEditorStore,
|
|
28
27
|
} from '@wordpress/block-editor';
|
|
29
28
|
import { useRef, useEffect } from '@wordpress/element';
|
|
30
29
|
import { __, sprintf } from '@wordpress/i18n';
|
|
31
30
|
import { useInstanceId } from '@wordpress/compose';
|
|
32
|
-
import { useDispatch
|
|
31
|
+
import { useDispatch } from '@wordpress/data';
|
|
33
32
|
import { video as icon } from '@wordpress/icons';
|
|
34
33
|
import { store as noticesStore } from '@wordpress/notices';
|
|
35
34
|
|
|
@@ -37,6 +36,7 @@ import { store as noticesStore } from '@wordpress/notices';
|
|
|
37
36
|
* Internal dependencies
|
|
38
37
|
*/
|
|
39
38
|
import { createUpgradedEmbedBlock } from '../embed/util';
|
|
39
|
+
import { useUploadMediaFromBlobURL } from '../utils/hooks';
|
|
40
40
|
import VideoCommonSettings from './edit-common-settings';
|
|
41
41
|
import TracksEditor from './tracks-editor';
|
|
42
42
|
import Tracks from './tracks';
|
|
@@ -47,7 +47,7 @@ const placeholder = ( content ) => {
|
|
|
47
47
|
return (
|
|
48
48
|
<Placeholder
|
|
49
49
|
className="block-editor-media-placeholder"
|
|
50
|
-
withIllustration
|
|
50
|
+
withIllustration
|
|
51
51
|
icon={ icon }
|
|
52
52
|
label={ __( 'Video' ) }
|
|
53
53
|
instructions={ __(
|
|
@@ -75,21 +75,13 @@ function VideoEdit( {
|
|
|
75
75
|
const posterImageButton = useRef();
|
|
76
76
|
const { id, controls, poster, src, tracks } = attributes;
|
|
77
77
|
const isTemporaryVideo = ! id && isBlobURL( src );
|
|
78
|
-
const { getSettings } = useSelect( blockEditorStore );
|
|
79
78
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
onFileChange: ( [ media ] ) => onSelectVideo( media ),
|
|
87
|
-
onError: onUploadError,
|
|
88
|
-
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
89
|
-
} );
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}, [] );
|
|
79
|
+
useUploadMediaFromBlobURL( {
|
|
80
|
+
url: src,
|
|
81
|
+
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
82
|
+
onChange: onSelectVideo,
|
|
83
|
+
onError: onUploadError,
|
|
84
|
+
} );
|
|
93
85
|
|
|
94
86
|
useEffect( () => {
|
|
95
87
|
// Placeholder may be rendered.
|
package/src/video/edit.native.js
CHANGED
|
@@ -212,13 +212,13 @@ class VideoEdit extends Component {
|
|
|
212
212
|
render() {
|
|
213
213
|
const { setAttributes, attributes, isSelected, wasBlockJustInserted } =
|
|
214
214
|
this.props;
|
|
215
|
-
const { id, src
|
|
215
|
+
const { id, src } = attributes;
|
|
216
216
|
const { videoContainerHeight } = this.state;
|
|
217
217
|
|
|
218
218
|
const toolbarEditButton = (
|
|
219
219
|
<MediaUpload
|
|
220
220
|
allowedTypes={ [ MEDIA_TYPE_VIDEO ] }
|
|
221
|
-
isReplacingMedia
|
|
221
|
+
isReplacingMedia
|
|
222
222
|
onSelect={ this.onSelectMediaUploadOption }
|
|
223
223
|
onSelectURL={ this.onSelectURL }
|
|
224
224
|
render={ ( { open, getMediaOptions } ) => {
|
|
@@ -236,10 +236,7 @@ class VideoEdit extends Component {
|
|
|
236
236
|
></MediaUpload>
|
|
237
237
|
);
|
|
238
238
|
|
|
239
|
-
|
|
240
|
-
// handled here is a temporary fix until a we find a better approach.
|
|
241
|
-
const isSourcePresent = src || ( guid && id );
|
|
242
|
-
if ( ! isSourcePresent ) {
|
|
239
|
+
if ( ! src ) {
|
|
243
240
|
return (
|
|
244
241
|
<View style={ { flex: 1 } }>
|
|
245
242
|
<MediaPlaceholder
|
|
@@ -335,7 +332,7 @@ class VideoEdit extends Component {
|
|
|
335
332
|
}
|
|
336
333
|
style={ videoStyle }
|
|
337
334
|
source={ { uri: src } }
|
|
338
|
-
paused
|
|
335
|
+
paused
|
|
339
336
|
/>
|
|
340
337
|
</View>
|
|
341
338
|
) }
|
|
@@ -368,7 +365,7 @@ class VideoEdit extends Component {
|
|
|
368
365
|
} }
|
|
369
366
|
/>
|
|
370
367
|
<BlockCaption
|
|
371
|
-
accessible
|
|
368
|
+
accessible
|
|
372
369
|
accessibilityLabelCreator={ ( caption ) =>
|
|
373
370
|
RichText.isEmpty( caption )
|
|
374
371
|
? /* translators: accessibility text. Empty video caption. */
|
|
@@ -44,20 +44,6 @@ describe( 'Video block', () => {
|
|
|
44
44
|
initialHtml: `
|
|
45
45
|
<!-- wp:video {"id":1234} -->
|
|
46
46
|
<figure class="wp-block-video"><video controls src="https://VIDEO_URL.mp4"></video></figure>
|
|
47
|
-
<!-- /wp:video -->
|
|
48
|
-
`,
|
|
49
|
-
} );
|
|
50
|
-
const addVideoButton = screen.queryByText( 'Add video' );
|
|
51
|
-
expect( addVideoButton ).toBeNull();
|
|
52
|
-
} );
|
|
53
|
-
|
|
54
|
-
it( `should not render empty state when 'guid' and 'id' attributes are present`, async () => {
|
|
55
|
-
await initializeEditor( {
|
|
56
|
-
initialHtml: `
|
|
57
|
-
<!-- wp:video {"guid":"ABCD1234","id":1234 -->
|
|
58
|
-
<figure class="wp-block-video wp-block-embed is-type-video is-provider-videopress"><div class="wp-block-embed__wrapper">
|
|
59
|
-
https://videopress.com/<VIDEO_ID>
|
|
60
|
-
</div></figure>
|
|
61
47
|
<!-- /wp:video -->
|
|
62
48
|
`,
|
|
63
49
|
} );
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_data","_coreData","_i18n","_blockEditor","_components","_blocks","_htmlEntities","HEADING_LEVELS","SiteTitleEdit","attributes","setAttributes","insertBlocksAfter","level","textAlign","isLink","linkTarget","canUserEdit","title","useSelect","select","canUser","getEntityRecord","getEditedEntityRecord","coreStore","canEdit","settings","readOnlySettings","name","editEntityRecord","useDispatch","setTitle","newTitle","undefined","TagName","blockProps","useBlockProps","className","classnames","siteTitleContent","_react","createElement","RichText","tagName","href","__","placeholder","value","onChange","allowedFormats","disableLineBreaks","__unstableOnSplitAtEnd","createBlock","getDefaultBlockName","onClick","event","preventDefault","decodeEntities","Fragment","BlockControls","group","HeadingLevelDropdown","options","newLevel","AlignmentControl","nextAlign","InspectorControls","PanelBody","ToggleControl","__nextHasNoMarginBottom","label","checked"],"sources":["@wordpress/block-library/src/site-title/edit/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tAlignmentControl,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst HEADING_LEVELS = [ 0, 1, 2, 3, 4, 5, 6 ];\n\nexport default function SiteTitleEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { level, textAlign, isLink, linkTarget } = attributes;\n\tconst { canUserEdit, title } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst canEdit = canUser( 'update', 'settings' );\n\t\tconst settings = canEdit ? getEditedEntityRecord( 'root', 'site' ) : {};\n\t\tconst readOnlySettings = getEntityRecord( 'root', '__unstableBase' );\n\n\t\treturn {\n\t\t\tcanUserEdit: canEdit,\n\t\t\ttitle: canEdit ? settings?.title : readOnlySettings?.name,\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tfunction setTitle( newTitle ) {\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\ttitle: newTitle,\n\t\t} );\n\t}\n\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-title__placeholder': ! canUserEdit && ! title,\n\t\t} ),\n\t} );\n\tconst siteTitleContent = canUserEdit ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<RichText\n\t\t\t\ttagName={ isLink ? 'a' : 'span' }\n\t\t\t\thref={ isLink ? '#site-title-pseudo-link' : undefined }\n\t\t\t\taria-label={ __( 'Site title text' ) }\n\t\t\t\tplaceholder={ __( 'Write site title…' ) }\n\t\t\t\tvalue={ title }\n\t\t\t\tonChange={ setTitle }\n\t\t\t\tallowedFormats={ [] }\n\t\t\t\tdisableLineBreaks\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</TagName>\n\t) : (\n\t\t<TagName { ...blockProps }>\n\t\t\t{ isLink ? (\n\t\t\t\t<a\n\t\t\t\t\thref=\"#site-title-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<span>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</TagName>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\toptions={ HEADING_LEVELS }\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Make title link to home' ) }\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ siteTitleContent }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useDispatch","useSelect","store","coreStore","__","RichText","AlignmentControl","InspectorControls","BlockControls","useBlockProps","HeadingLevelDropdown","ToggleControl","PanelBody","createBlock","getDefaultBlockName","decodeEntities","HEADING_LEVELS","SiteTitleEdit","attributes","setAttributes","insertBlocksAfter","level","textAlign","isLink","linkTarget","canUserEdit","title","select","canUser","getEntityRecord","getEditedEntityRecord","canEdit","settings","readOnlySettings","name","editEntityRecord","setTitle","newTitle","undefined","TagName","blockProps","className","siteTitleContent","createElement","tagName","href","placeholder","value","onChange","allowedFormats","disableLineBreaks","__unstableOnSplitAtEnd","onClick","event","preventDefault","Fragment","group","options","newLevel","nextAlign","__nextHasNoMarginBottom","label","checked"],"sources":["@wordpress/block-library/src/site-title/edit/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tAlignmentControl,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst HEADING_LEVELS = [ 0, 1, 2, 3, 4, 5, 6 ];\n\nexport default function SiteTitleEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { level, textAlign, isLink, linkTarget } = attributes;\n\tconst { canUserEdit, title } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst canEdit = canUser( 'update', 'settings' );\n\t\tconst settings = canEdit ? getEditedEntityRecord( 'root', 'site' ) : {};\n\t\tconst readOnlySettings = getEntityRecord( 'root', '__unstableBase' );\n\n\t\treturn {\n\t\t\tcanUserEdit: canEdit,\n\t\t\ttitle: canEdit ? settings?.title : readOnlySettings?.name,\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tfunction setTitle( newTitle ) {\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\ttitle: newTitle,\n\t\t} );\n\t}\n\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-title__placeholder': ! canUserEdit && ! title,\n\t\t} ),\n\t} );\n\tconst siteTitleContent = canUserEdit ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<RichText\n\t\t\t\ttagName={ isLink ? 'a' : 'span' }\n\t\t\t\thref={ isLink ? '#site-title-pseudo-link' : undefined }\n\t\t\t\taria-label={ __( 'Site title text' ) }\n\t\t\t\tplaceholder={ __( 'Write site title…' ) }\n\t\t\t\tvalue={ title }\n\t\t\t\tonChange={ setTitle }\n\t\t\t\tallowedFormats={ [] }\n\t\t\t\tdisableLineBreaks\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</TagName>\n\t) : (\n\t\t<TagName { ...blockProps }>\n\t\t\t{ isLink ? (\n\t\t\t\t<a\n\t\t\t\t\thref=\"#site-title-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<span>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</TagName>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\toptions={ HEADING_LEVELS }\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Make title link to home' ) }\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ siteTitleContent }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
File without changes
|