@wordpress/block-library 8.29.0 → 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 +2 -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/block/deprecated.js +71 -11
- package/build/block/deprecated.js.map +1 -1
- package/build/block/edit.js +49 -24
- package/build/block/edit.js.map +1 -1
- package/build/button/edit.js +2 -2
- package/build/button/edit.js.map +1 -1
- package/build/buttons/edit.native.js.map +1 -1
- package/build/buttons/transforms.js +16 -2
- package/build/buttons/transforms.js.map +1 -1
- package/build/code/transforms.js +17 -6
- package/build/code/transforms.js.map +1 -1
- package/build/columns/edit.js +3 -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/block-controls.js +14 -3
- package/build/cover/edit/block-controls.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/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.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/heading/transforms.js +17 -4
- package/build/heading/transforms.js.map +1 -1
- package/build/image/edit.js +8 -4
- package/build/image/edit.js.map +1 -1
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +22 -8
- package/build/image/image.js.map +1 -1
- package/build/latest-posts/edit.native.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.js +1 -3
- package/build/list-item/edit.js.map +1 -1
- package/build/list-item/edit.native.js.map +1 -1
- package/build/list-item/hooks/index.js +0 -7
- package/build/list-item/hooks/index.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/list-item/index.js +4 -1
- package/build/list-item/index.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 +11 -0
- 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 +8 -11
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-navigation-link/edit.js.map +1 -1
- package/build/post-title/edit.js +2 -2
- package/build/post-title/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 +7 -2
- 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/caption.js +15 -5
- package/build/utils/caption.js.map +1 -1
- package/build/utils/get-transformed-metadata.js +57 -0
- package/build/utils/get-transformed-metadata.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/block/deprecated.js +71 -11
- package/build-module/block/deprecated.js.map +1 -1
- package/build-module/block/edit.js +49 -24
- package/build-module/block/edit.js.map +1 -1
- package/build-module/button/edit.js +3 -3
- package/build-module/button/edit.js.map +1 -1
- package/build-module/buttons/edit.native.js.map +1 -1
- package/build-module/buttons/transforms.js +16 -2
- package/build-module/buttons/transforms.js.map +1 -1
- package/build-module/code/transforms.js +17 -6
- package/build-module/code/transforms.js.map +1 -1
- package/build-module/columns/edit.js +3 -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/block-controls.js +15 -4
- package/build-module/cover/edit/block-controls.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/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.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/heading/transforms.js +17 -4
- package/build-module/heading/transforms.js.map +1 -1
- package/build-module/image/edit.js +9 -5
- 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 +23 -9
- package/build-module/image/image.js.map +1 -1
- package/build-module/latest-posts/edit.native.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.js +2 -4
- package/build-module/list-item/edit.js.map +1 -1
- package/build-module/list-item/edit.native.js.map +1 -1
- package/build-module/list-item/hooks/index.js +0 -1
- package/build-module/list-item/hooks/index.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/list-item/index.js +4 -1
- package/build-module/list-item/index.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 +11 -0
- 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 +9 -12
- 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/post-title/edit.js +2 -2
- package/build-module/post-title/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 +7 -2
- 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/caption.js +13 -3
- package/build-module/utils/caption.js.map +1 -1
- package/build-module/utils/get-transformed-metadata.js +51 -0
- package/build-module/utils/get-transformed-metadata.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/common-rtl.css +1 -0
- package/build-style/common.css +1 -0
- package/build-style/cover/style-rtl.css +2 -1
- package/build-style/cover/style.css +2 -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/build-style/search/style-rtl.css +2 -0
- package/build-style/search/style.css +2 -0
- package/build-style/style-rtl.css +4 -1
- package/build-style/style.css +4 -1
- 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/block/deprecated.js +76 -11
- package/src/block/edit.js +64 -19
- package/src/block/index.php +23 -12
- package/src/button/edit.js +4 -3
- package/src/buttons/edit.native.js +1 -1
- package/src/buttons/transforms.js +14 -4
- package/src/calendar/index.php +5 -0
- package/src/code/transforms.js +20 -5
- package/src/columns/edit.js +3 -2
- package/src/comment-author-avatar/edit.js +1 -1
- package/src/comments/index.php +2 -0
- package/src/cover/edit/block-controls.js +16 -2
- 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/cover/style.scss +3 -2
- 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/footnotes/index.php +1 -1
- package/src/form-input/edit.js +1 -1
- package/src/gallery/edit.js +3 -3
- 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/heading/transforms.js +27 -8
- package/src/image/edit.js +13 -5
- package/src/image/edit.native.js +1 -1
- package/src/image/editor.scss +6 -0
- package/src/image/image.js +34 -22
- package/src/latest-posts/edit.native.js +1 -1
- package/src/list/ordered-list-settings.js +1 -1
- package/src/list-item/edit.js +1 -2
- package/src/list-item/edit.native.js +1 -1
- package/src/list-item/hooks/index.js +0 -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/list-item/index.js +3 -0
- 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 +26 -17
- 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 +14 -0
- 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 +10 -12
- package/src/post-navigation-link/edit.js +1 -1
- package/src/post-template/index.php +2 -0
- package/src/post-title/edit.js +49 -43
- 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/search/index.php +1 -1
- package/src/search/style.scss +2 -0
- package/src/site-logo/edit.js +11 -6
- 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/caption.js +10 -1
- package/src/utils/get-transformed-metadata.js +65 -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/list-item/hooks/use-copy.js +0 -39
- package/build/list-item/hooks/use-copy.js.map +0 -1
- package/build/site-title/edit/index.js.map +0 -1
- package/build-module/list-item/hooks/use-copy.js +0 -32
- package/build-module/list-item/hooks/use-copy.js.map +0 -1
- package/build-module/site-title/edit/index.js.map +0 -1
- package/src/list-item/hooks/use-copy.js +0 -38
- /package/src/site-title/{edit/index.js → edit.js} +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { getBlockType } from '@wordpress/blocks';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Transform the metadata attribute with only the values and bindings specified by each transform.
|
|
8
|
+
* Returns `undefined` if the input metadata is falsy.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} metadata Original metadata attribute from the block that is being transformed.
|
|
11
|
+
* @param {Object} newBlockName Name of the final block after the transformation.
|
|
12
|
+
* @param {Function} bindingsCallback Optional callback to transform the `bindings` property object.
|
|
13
|
+
* @return {Object|undefined} New metadata object only with the relevant properties.
|
|
14
|
+
*/
|
|
15
|
+
export function getTransformedMetadata(
|
|
16
|
+
metadata,
|
|
17
|
+
newBlockName,
|
|
18
|
+
bindingsCallback
|
|
19
|
+
) {
|
|
20
|
+
if ( ! metadata ) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const { supports } = getBlockType( newBlockName );
|
|
24
|
+
// Fixed until an opt-in mechanism is implemented.
|
|
25
|
+
const BLOCK_BINDINGS_SUPPORTED_BLOCKS = [
|
|
26
|
+
'core/paragraph',
|
|
27
|
+
'core/heading',
|
|
28
|
+
'core/image',
|
|
29
|
+
'core/button',
|
|
30
|
+
];
|
|
31
|
+
// The metadata properties that should be preserved after the transform.
|
|
32
|
+
const transformSupportedProps = [];
|
|
33
|
+
// If it support bindings, and there is a transform bindings callback, add the `id` and `bindings` properties.
|
|
34
|
+
if (
|
|
35
|
+
BLOCK_BINDINGS_SUPPORTED_BLOCKS.includes( newBlockName ) &&
|
|
36
|
+
bindingsCallback
|
|
37
|
+
) {
|
|
38
|
+
transformSupportedProps.push( 'id', 'bindings' );
|
|
39
|
+
}
|
|
40
|
+
// If it support block naming (true by default), add the `name` property.
|
|
41
|
+
if ( supports.renaming !== false ) {
|
|
42
|
+
transformSupportedProps.push( 'name' );
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Return early if no supported properties.
|
|
46
|
+
if ( ! transformSupportedProps.length ) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const newMetadata = Object.entries( metadata ).reduce(
|
|
51
|
+
( obj, [ prop, value ] ) => {
|
|
52
|
+
// If prop is not supported, don't add it to the new metadata object.
|
|
53
|
+
if ( ! transformSupportedProps.includes( prop ) ) {
|
|
54
|
+
return obj;
|
|
55
|
+
}
|
|
56
|
+
obj[ prop ] =
|
|
57
|
+
prop === 'bindings' ? bindingsCallback( value ) : value;
|
|
58
|
+
return obj;
|
|
59
|
+
},
|
|
60
|
+
{}
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
// Return undefined if object is empty.
|
|
64
|
+
return Object.keys( newMetadata ).length ? newMetadata : undefined;
|
|
65
|
+
}
|
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,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = useCopy;
|
|
7
|
-
var _compose = require("@wordpress/compose");
|
|
8
|
-
var _blockEditor = require("@wordpress/block-editor");
|
|
9
|
-
var _data = require("@wordpress/data");
|
|
10
|
-
/**
|
|
11
|
-
* WordPress dependencies
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
function useCopy(clientId) {
|
|
15
|
-
const {
|
|
16
|
-
getBlockRootClientId,
|
|
17
|
-
getBlockName,
|
|
18
|
-
getBlockAttributes
|
|
19
|
-
} = (0, _data.useSelect)(_blockEditor.store);
|
|
20
|
-
return (0, _compose.useRefEffect)(node => {
|
|
21
|
-
function onCopy(event) {
|
|
22
|
-
// The event propagates through all nested lists, so don't override
|
|
23
|
-
// when copying nested list items.
|
|
24
|
-
if (event.clipboardData.getData('__unstableWrapperBlockName')) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const rootClientId = getBlockRootClientId(clientId);
|
|
28
|
-
event.clipboardData.setData('__unstableWrapperBlockName', getBlockName(rootClientId));
|
|
29
|
-
event.clipboardData.setData('__unstableWrapperBlockAttributes', JSON.stringify(getBlockAttributes(rootClientId)));
|
|
30
|
-
}
|
|
31
|
-
node.addEventListener('copy', onCopy);
|
|
32
|
-
node.addEventListener('cut', onCopy);
|
|
33
|
-
return () => {
|
|
34
|
-
node.removeEventListener('copy', onCopy);
|
|
35
|
-
node.removeEventListener('cut', onCopy);
|
|
36
|
-
};
|
|
37
|
-
}, []);
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=use-copy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_compose","require","_blockEditor","_data","useCopy","clientId","getBlockRootClientId","getBlockName","getBlockAttributes","useSelect","blockEditorStore","useRefEffect","node","onCopy","event","clipboardData","getData","rootClientId","setData","JSON","stringify","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-copy.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useCopy( clientId ) {\n\tconst { getBlockRootClientId, getBlockName, getBlockAttributes } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onCopy( event ) {\n\t\t\t// The event propagates through all nested lists, so don't override\n\t\t\t// when copying nested list items.\n\t\t\tif ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockName',\n\t\t\t\tgetBlockName( rootClientId )\n\t\t\t);\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockAttributes',\n\t\t\t\tJSON.stringify( getBlockAttributes( rootClientId ) )\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'copy', onCopy );\n\t\tnode.addEventListener( 'cut', onCopy );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'copy', onCopy );\n\t\t\tnode.removeEventListener( 'cut', onCopy );\n\t\t};\n\t}, [] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKe,SAASG,OAAOA,CAAEC,QAAQ,EAAG;EAC3C,MAAM;IAAEC,oBAAoB;IAAEC,YAAY;IAAEC;EAAmB,CAAC,GAC/D,IAAAC,eAAS,EAAEC,kBAAiB,CAAC;EAE9B,OAAO,IAAAC,qBAAY,EAAIC,IAAI,IAAM;IAChC,SAASC,MAAMA,CAAEC,KAAK,EAAG;MACxB;MACA;MACA,IAAKA,KAAK,CAACC,aAAa,CAACC,OAAO,CAAE,4BAA6B,CAAC,EAAG;QAClE;MACD;MAEA,MAAMC,YAAY,GAAGX,oBAAoB,CAAED,QAAS,CAAC;MACrDS,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,4BAA4B,EAC5BX,YAAY,CAAEU,YAAa,CAC5B,CAAC;MACDH,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,kCAAkC,EAClCC,IAAI,CAACC,SAAS,CAAEZ,kBAAkB,CAAES,YAAa,CAAE,CACpD,CAAC;IACF;IAEAL,IAAI,CAACS,gBAAgB,CAAE,MAAM,EAAER,MAAO,CAAC;IACvCD,IAAI,CAACS,gBAAgB,CAAE,KAAK,EAAER,MAAO,CAAC;IACtC,OAAO,MAAM;MACZD,IAAI,CAACU,mBAAmB,CAAE,MAAM,EAAET,MAAO,CAAC;MAC1CD,IAAI,CAACU,mBAAmB,CAAE,KAAK,EAAET,MAAO,CAAC;IAC1C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR"}
|
|
@@ -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,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useRefEffect } from '@wordpress/compose';
|
|
5
|
-
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
6
|
-
import { useSelect } from '@wordpress/data';
|
|
7
|
-
export default function useCopy(clientId) {
|
|
8
|
-
const {
|
|
9
|
-
getBlockRootClientId,
|
|
10
|
-
getBlockName,
|
|
11
|
-
getBlockAttributes
|
|
12
|
-
} = useSelect(blockEditorStore);
|
|
13
|
-
return useRefEffect(node => {
|
|
14
|
-
function onCopy(event) {
|
|
15
|
-
// The event propagates through all nested lists, so don't override
|
|
16
|
-
// when copying nested list items.
|
|
17
|
-
if (event.clipboardData.getData('__unstableWrapperBlockName')) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const rootClientId = getBlockRootClientId(clientId);
|
|
21
|
-
event.clipboardData.setData('__unstableWrapperBlockName', getBlockName(rootClientId));
|
|
22
|
-
event.clipboardData.setData('__unstableWrapperBlockAttributes', JSON.stringify(getBlockAttributes(rootClientId)));
|
|
23
|
-
}
|
|
24
|
-
node.addEventListener('copy', onCopy);
|
|
25
|
-
node.addEventListener('cut', onCopy);
|
|
26
|
-
return () => {
|
|
27
|
-
node.removeEventListener('copy', onCopy);
|
|
28
|
-
node.removeEventListener('cut', onCopy);
|
|
29
|
-
};
|
|
30
|
-
}, []);
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=use-copy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useRefEffect","store","blockEditorStore","useSelect","useCopy","clientId","getBlockRootClientId","getBlockName","getBlockAttributes","node","onCopy","event","clipboardData","getData","rootClientId","setData","JSON","stringify","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-copy.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useCopy( clientId ) {\n\tconst { getBlockRootClientId, getBlockName, getBlockAttributes } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onCopy( event ) {\n\t\t\t// The event propagates through all nested lists, so don't override\n\t\t\t// when copying nested list items.\n\t\t\tif ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockName',\n\t\t\t\tgetBlockName( rootClientId )\n\t\t\t);\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockAttributes',\n\t\t\t\tJSON.stringify( getBlockAttributes( rootClientId ) )\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'copy', onCopy );\n\t\tnode.addEventListener( 'cut', onCopy );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'copy', onCopy );\n\t\t\tnode.removeEventListener( 'cut', onCopy );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AACjD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,SAAS,QAAQ,iBAAiB;AAE3C,eAAe,SAASC,OAAOA,CAAEC,QAAQ,EAAG;EAC3C,MAAM;IAAEC,oBAAoB;IAAEC,YAAY;IAAEC;EAAmB,CAAC,GAC/DL,SAAS,CAAED,gBAAiB,CAAC;EAE9B,OAAOF,YAAY,CAAIS,IAAI,IAAM;IAChC,SAASC,MAAMA,CAAEC,KAAK,EAAG;MACxB;MACA;MACA,IAAKA,KAAK,CAACC,aAAa,CAACC,OAAO,CAAE,4BAA6B,CAAC,EAAG;QAClE;MACD;MAEA,MAAMC,YAAY,GAAGR,oBAAoB,CAAED,QAAS,CAAC;MACrDM,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,4BAA4B,EAC5BR,YAAY,CAAEO,YAAa,CAC5B,CAAC;MACDH,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,kCAAkC,EAClCC,IAAI,CAACC,SAAS,CAAET,kBAAkB,CAAEM,YAAa,CAAE,CACpD,CAAC;IACF;IAEAL,IAAI,CAACS,gBAAgB,CAAE,MAAM,EAAER,MAAO,CAAC;IACvCD,IAAI,CAACS,gBAAgB,CAAE,KAAK,EAAER,MAAO,CAAC;IACtC,OAAO,MAAM;MACZD,IAAI,CAACU,mBAAmB,CAAE,MAAM,EAAET,MAAO,CAAC;MAC1CD,IAAI,CAACU,mBAAmB,CAAE,KAAK,EAAET,MAAO,CAAC;IAC1C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR"}
|
|
@@ -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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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useRefEffect } from '@wordpress/compose';
|
|
5
|
-
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
6
|
-
import { useSelect } from '@wordpress/data';
|
|
7
|
-
|
|
8
|
-
export default function useCopy( clientId ) {
|
|
9
|
-
const { getBlockRootClientId, getBlockName, getBlockAttributes } =
|
|
10
|
-
useSelect( blockEditorStore );
|
|
11
|
-
|
|
12
|
-
return useRefEffect( ( node ) => {
|
|
13
|
-
function onCopy( event ) {
|
|
14
|
-
// The event propagates through all nested lists, so don't override
|
|
15
|
-
// when copying nested list items.
|
|
16
|
-
if ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const rootClientId = getBlockRootClientId( clientId );
|
|
21
|
-
event.clipboardData.setData(
|
|
22
|
-
'__unstableWrapperBlockName',
|
|
23
|
-
getBlockName( rootClientId )
|
|
24
|
-
);
|
|
25
|
-
event.clipboardData.setData(
|
|
26
|
-
'__unstableWrapperBlockAttributes',
|
|
27
|
-
JSON.stringify( getBlockAttributes( rootClientId ) )
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
node.addEventListener( 'copy', onCopy );
|
|
32
|
-
node.addEventListener( 'cut', onCopy );
|
|
33
|
-
return () => {
|
|
34
|
-
node.removeEventListener( 'copy', onCopy );
|
|
35
|
-
node.removeEventListener( 'cut', onCopy );
|
|
36
|
-
};
|
|
37
|
-
}, [] );
|
|
38
|
-
}
|
|
File without changes
|