@wordpress/block-library 8.24.0 → 8.25.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 -52
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js +1 -1
- package/build/audio/edit.native.js.map +1 -1
- package/build/audio/index.js +2 -2
- package/build/block/edit.js +102 -11
- package/build/block/edit.js.map +1 -1
- package/build/block/index.js +3 -2
- package/build/block/index.js.map +1 -1
- package/build/block/v1/edit.js +116 -0
- package/build/block/v1/edit.js.map +1 -0
- package/build/block/{edit.native.js → v1/edit.native.js} +2 -2
- package/build/block/v1/edit.native.js.map +1 -0
- package/build/button/index.js +2 -2
- package/build/button/save.js +1 -1
- package/build/button/save.js.map +1 -1
- package/build/code/edit.native.js +13 -14
- package/build/code/edit.native.js.map +1 -1
- package/build/code/index.js +2 -2
- package/build/code/save.js +6 -2
- package/build/code/save.js.map +1 -1
- package/build/details/index.js +2 -2
- package/build/embed/deprecated.js +2 -2
- package/build/embed/embed-preview.native.js +1 -1
- package/build/embed/embed-preview.native.js.map +1 -1
- package/build/embed/icons.js +1 -1
- package/build/embed/icons.js.map +1 -1
- package/build/embed/index.js +2 -2
- package/build/embed/transforms.js +2 -2
- package/build/embed/util.js +2 -2
- package/build/file/edit.js +1 -1
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/index.js +4 -4
- package/build/file/save.js +4 -1
- package/build/file/save.js.map +1 -1
- package/build/form-input/deprecated.js +147 -0
- package/build/form-input/deprecated.js.map +1 -0
- package/build/form-input/edit.js +1 -1
- package/build/form-input/edit.js.map +1 -1
- package/build/form-input/index.js +4 -2
- package/build/form-input/index.js.map +1 -1
- package/build/form-input/save.js +7 -9
- package/build/form-input/save.js.map +1 -1
- package/build/gallery/edit.js +2 -41
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.js +18 -24
- package/build/gallery/gallery.js.map +1 -1
- package/build/gallery/gallery.native.js +1 -1
- package/build/gallery/gallery.native.js.map +1 -1
- package/build/gallery/index.js +4 -4
- package/build/gallery/v1/gallery.native.js +1 -1
- package/build/gallery/v1/gallery.native.js.map +1 -1
- package/build/group/edit.js +6 -1
- package/build/group/edit.js.map +1 -1
- package/build/heading/index.js +3 -6
- package/build/heading/index.js.map +1 -1
- package/build/image/edit.native.js +1 -1
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +14 -51
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +2 -2
- package/build/image/save.js +3 -1
- package/build/image/save.js.map +1 -1
- package/build/list-item/index.js +10 -3
- package/build/list-item/index.js.map +1 -1
- package/build/navigation/edit/index.js +1 -1
- package/build/navigation/edit/index.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +2 -2
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/paragraph/edit.js +54 -32
- package/build/paragraph/edit.js.map +1 -1
- package/build/paragraph/index.js +2 -3
- package/build/paragraph/index.js.map +1 -1
- package/build/paragraph/transforms.js +2 -3
- package/build/paragraph/transforms.js.map +1 -1
- package/build/post-title/index.js +1 -3
- package/build/post-title/index.js.map +1 -1
- package/build/preformatted/index.js +2 -3
- package/build/preformatted/index.js.map +1 -1
- package/build/pullquote/index.js +5 -7
- package/build/pullquote/index.js.map +1 -1
- package/build/query/edit/inspector-controls/taxonomy-controls.js +2 -0
- package/build/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
- package/build/query-title/index.js +1 -3
- package/build/query-title/index.js.map +1 -1
- package/build/quote/index.js +3 -5
- package/build/quote/index.js.map +1 -1
- package/build/quote/transforms.js +7 -6
- package/build/quote/transforms.js.map +1 -1
- package/build/site-title/index.js +1 -5
- package/build/site-title/index.js.map +1 -1
- package/build/social-link/icons/gravatar.js +22 -0
- package/build/social-link/icons/gravatar.js.map +1 -0
- package/build/social-link/icons/index.js +11 -0
- package/build/social-link/icons/index.js.map +1 -1
- package/build/social-link/variations.js +7 -0
- package/build/social-link/variations.js.map +1 -1
- package/build/table/edit.js +3 -1
- package/build/table/edit.js.map +1 -1
- package/build/table/index.js +9 -10
- package/build/table/index.js.map +1 -1
- package/build/table-of-contents/edit.js +2 -2
- package/build/table-of-contents/edit.js.map +1 -1
- package/build/table-of-contents/index.js +5 -2
- package/build/table-of-contents/index.js.map +1 -1
- package/build/utils/caption.js +90 -0
- package/build/utils/caption.js.map +1 -0
- package/build/utils/remove-anchor-tag.js +2 -1
- package/build/utils/remove-anchor-tag.js.map +1 -1
- package/build/verse/index.js +3 -5
- package/build/verse/index.js.map +1 -1
- package/build/video/deprecated.js +2 -2
- package/build/video/edit.js +8 -52
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +1 -1
- package/build/video/edit.native.js.map +1 -1
- package/build/video/index.js +2 -2
- package/build-module/audio/edit.js +11 -56
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js +2 -2
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/audio/index.js +2 -2
- package/build-module/block/edit.js +104 -13
- package/build-module/block/edit.js.map +1 -1
- package/build-module/block/index.js +3 -2
- package/build-module/block/index.js.map +1 -1
- package/build-module/block/v1/edit.js +108 -0
- package/build-module/block/v1/edit.js.map +1 -0
- package/build-module/block/{edit.native.js → v1/edit.native.js} +2 -2
- package/build-module/block/v1/edit.native.js.map +1 -0
- package/build-module/button/index.js +2 -2
- package/build-module/button/save.js +1 -1
- package/build-module/button/save.js.map +1 -1
- package/build-module/code/edit.native.js +14 -16
- package/build-module/code/edit.native.js.map +1 -1
- package/build-module/code/index.js +2 -2
- package/build-module/code/save.js +6 -2
- package/build-module/code/save.js.map +1 -1
- package/build-module/details/index.js +2 -2
- package/build-module/embed/deprecated.js +2 -2
- package/build-module/embed/embed-preview.native.js +2 -2
- package/build-module/embed/embed-preview.native.js.map +1 -1
- package/build-module/embed/icons.js +1 -1
- package/build-module/embed/icons.js.map +1 -1
- package/build-module/embed/index.js +2 -2
- package/build-module/embed/transforms.js +2 -2
- package/build-module/embed/util.js +2 -2
- package/build-module/file/edit.js +1 -1
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/index.js +4 -4
- package/build-module/file/save.js +4 -1
- package/build-module/file/save.js.map +1 -1
- package/build-module/form-input/deprecated.js +138 -0
- package/build-module/form-input/deprecated.js.map +1 -0
- package/build-module/form-input/edit.js +1 -1
- package/build-module/form-input/edit.js.map +1 -1
- package/build-module/form-input/index.js +4 -2
- package/build-module/form-input/index.js.map +1 -1
- package/build-module/form-input/save.js +8 -10
- package/build-module/form-input/save.js.map +1 -1
- package/build-module/gallery/edit.js +5 -44
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.js +17 -21
- package/build-module/gallery/gallery.js.map +1 -1
- package/build-module/gallery/gallery.native.js +2 -2
- package/build-module/gallery/gallery.native.js.map +1 -1
- package/build-module/gallery/index.js +4 -4
- package/build-module/gallery/v1/gallery.native.js +2 -2
- package/build-module/gallery/v1/gallery.native.js.map +1 -1
- package/build-module/group/edit.js +6 -1
- package/build-module/group/edit.js.map +1 -1
- package/build-module/heading/index.js +3 -6
- package/build-module/heading/index.js.map +1 -1
- package/build-module/image/edit.native.js +2 -2
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +19 -56
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +2 -2
- package/build-module/image/save.js +3 -1
- package/build-module/image/save.js.map +1 -1
- package/build-module/list-item/index.js +10 -3
- package/build-module/list-item/index.js.map +1 -1
- package/build-module/navigation/edit/index.js +2 -2
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +2 -2
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/paragraph/edit.js +54 -32
- package/build-module/paragraph/edit.js.map +1 -1
- package/build-module/paragraph/index.js +2 -3
- package/build-module/paragraph/index.js.map +1 -1
- package/build-module/paragraph/transforms.js +2 -3
- package/build-module/paragraph/transforms.js.map +1 -1
- package/build-module/post-title/index.js +1 -3
- package/build-module/post-title/index.js.map +1 -1
- package/build-module/preformatted/index.js +2 -3
- package/build-module/preformatted/index.js.map +1 -1
- package/build-module/pullquote/index.js +5 -7
- package/build-module/pullquote/index.js.map +1 -1
- package/build-module/query/edit/inspector-controls/taxonomy-controls.js +2 -0
- package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
- package/build-module/query-title/index.js +1 -3
- package/build-module/query-title/index.js.map +1 -1
- package/build-module/quote/index.js +3 -5
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/transforms.js +7 -6
- package/build-module/quote/transforms.js.map +1 -1
- package/build-module/site-title/index.js +1 -5
- package/build-module/site-title/index.js.map +1 -1
- package/build-module/social-link/icons/gravatar.js +14 -0
- package/build-module/social-link/icons/gravatar.js.map +1 -0
- package/build-module/social-link/icons/index.js +1 -0
- package/build-module/social-link/icons/index.js.map +1 -1
- package/build-module/social-link/variations.js +8 -1
- package/build-module/social-link/variations.js.map +1 -1
- package/build-module/table/edit.js +3 -1
- package/build-module/table/edit.js.map +1 -1
- package/build-module/table/index.js +9 -10
- package/build-module/table/index.js.map +1 -1
- package/build-module/table-of-contents/edit.js +1 -1
- package/build-module/table-of-contents/edit.js.map +1 -1
- package/build-module/table-of-contents/index.js +5 -1
- package/build-module/table-of-contents/index.js.map +1 -1
- package/build-module/utils/caption.js +82 -0
- package/build-module/utils/caption.js.map +1 -0
- package/build-module/utils/remove-anchor-tag.js +2 -1
- package/build-module/utils/remove-anchor-tag.js.map +1 -1
- package/build-module/verse/index.js +3 -5
- package/build-module/verse/index.js.map +1 -1
- package/build-module/video/deprecated.js +2 -2
- package/build-module/video/edit.js +13 -57
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +2 -2
- package/build-module/video/edit.native.js.map +1 -1
- package/build-module/video/index.js +2 -2
- package/build-style/editor-rtl.css +1 -11
- package/build-style/editor.css +1 -11
- package/build-style/social-links/style-rtl.css +14 -2
- package/build-style/social-links/style.css +14 -2
- package/build-style/style-rtl.css +14 -2
- package/build-style/style.css +14 -2
- package/build-style/table/editor-rtl.css +1 -11
- package/build-style/table/editor.css +1 -11
- package/package.json +32 -32
- package/src/audio/block.json +2 -2
- package/src/audio/edit.js +11 -74
- package/src/audio/edit.native.js +2 -1
- package/src/block/edit.js +143 -16
- package/src/block/index.js +3 -2
- package/src/block/index.php +48 -0
- package/src/block/v1/edit.js +163 -0
- package/src/block/{edit.native.js → v1/edit.native.js} +2 -2
- package/src/button/block.json +2 -2
- package/src/button/save.js +1 -1
- package/src/code/block.json +2 -2
- package/src/code/edit.native.js +11 -13
- package/src/code/save.js +4 -1
- package/src/code/test/edit.native.js +2 -2
- package/src/cover/test/edit.native.js +7 -1
- package/src/details/block.json +2 -2
- package/src/embed/block.json +2 -2
- package/src/embed/embed-preview.native.js +2 -1
- package/src/embed/icons.js +1 -1
- package/src/file/block.json +4 -4
- package/src/file/edit.js +1 -1
- package/src/file/edit.native.js +1 -1
- package/src/file/save.js +5 -1
- package/src/form-input/block.json +2 -2
- package/src/form-input/deprecated.js +142 -0
- package/src/form-input/edit.js +1 -1
- package/src/form-input/index.js +2 -0
- package/src/form-input/save.js +27 -24
- package/src/gallery/block.json +4 -4
- package/src/gallery/edit.js +4 -59
- package/src/gallery/gallery.js +19 -36
- package/src/gallery/gallery.native.js +6 -2
- package/src/gallery/v1/gallery.native.js +2 -1
- package/src/group/edit.js +4 -1
- package/src/heading/block.json +3 -6
- package/src/image/block.json +2 -2
- package/src/image/edit.native.js +2 -3
- package/src/image/image.js +24 -93
- package/src/image/save.js +3 -1
- package/src/list-item/block.json +10 -3
- package/src/navigation/edit/index.js +7 -2
- package/src/navigation/index.php +1 -1
- package/src/navigation-link/test/__snapshots__/hooks.js.snap +6 -3
- package/src/page-list/convert-to-links-modal.js +2 -2
- package/src/paragraph/block.json +2 -3
- package/src/paragraph/edit.js +53 -40
- package/src/post-title/block.json +1 -3
- package/src/preformatted/block.json +2 -3
- package/src/pullquote/block.json +5 -7
- package/src/query/edit/inspector-controls/taxonomy-controls.js +2 -0
- package/src/query-title/block.json +1 -3
- package/src/quote/block.json +3 -5
- package/src/quote/transforms.js +12 -11
- package/src/site-title/block.json +1 -5
- package/src/social-link/icons/gravatar.js +10 -0
- package/src/social-link/icons/index.js +1 -0
- package/src/social-link/index.php +4 -0
- package/src/social-link/socials-with-bg.scss +5 -0
- package/src/social-link/socials-without-bg.scss +4 -0
- package/src/social-link/variations.js +7 -0
- package/src/social-links/style.scss +14 -8
- package/src/table/block.json +9 -10
- package/src/table/edit.js +3 -1
- package/src/table/editor.scss +1 -14
- package/src/table-of-contents/edit.js +1 -1
- package/src/table-of-contents/index.js +5 -1
- package/src/utils/caption.js +108 -0
- package/src/utils/remove-anchor-tag.js +2 -1
- package/src/verse/block.json +3 -5
- package/src/video/block.json +2 -2
- package/src/video/edit.js +12 -74
- package/src/video/edit.native.js +2 -1
- package/build/block/edit.native.js.map +0 -1
- package/build/table-of-contents/icon.js +0 -22
- package/build/table-of-contents/icon.js.map +0 -1
- package/build-module/block/edit.native.js.map +0 -1
- package/build-module/table-of-contents/icon.js +0 -15
- package/build-module/table-of-contents/icon.js.map +0 -1
- package/src/table-of-contents/icon.js +0 -18
|
@@ -7,10 +7,10 @@ import classnames from 'classnames';
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
import { compose
|
|
11
|
-
import { BaseControl, PanelBody, SelectControl, ToggleControl, RangeControl, Spinner
|
|
10
|
+
import { compose } from '@wordpress/compose';
|
|
11
|
+
import { BaseControl, PanelBody, SelectControl, ToggleControl, RangeControl, Spinner } from '@wordpress/components';
|
|
12
12
|
import { store as blockEditorStore, MediaPlaceholder, InspectorControls, useBlockProps, useInnerBlocksProps, BlockControls, MediaReplaceFlow } from '@wordpress/block-editor';
|
|
13
|
-
import { Platform,
|
|
13
|
+
import { Platform, useEffect, useMemo } from '@wordpress/element';
|
|
14
14
|
import { __, _x, sprintf } from '@wordpress/i18n';
|
|
15
15
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
16
16
|
import { withViewportMatch } from '@wordpress/viewport';
|
|
@@ -18,7 +18,6 @@ import { View } from '@wordpress/primitives';
|
|
|
18
18
|
import { createBlock } from '@wordpress/blocks';
|
|
19
19
|
import { createBlobURL } from '@wordpress/blob';
|
|
20
20
|
import { store as noticesStore } from '@wordpress/notices';
|
|
21
|
-
import { caption as captionIcon } from '@wordpress/icons';
|
|
22
21
|
|
|
23
22
|
/**
|
|
24
23
|
* Internal dependencies
|
|
@@ -66,31 +65,8 @@ function GalleryEdit(props) {
|
|
|
66
65
|
imageCrop,
|
|
67
66
|
linkTarget,
|
|
68
67
|
linkTo,
|
|
69
|
-
sizeSlug
|
|
70
|
-
caption
|
|
68
|
+
sizeSlug
|
|
71
69
|
} = attributes;
|
|
72
|
-
const [showCaption, setShowCaption] = useState(!!caption);
|
|
73
|
-
const prevCaption = usePrevious(caption);
|
|
74
|
-
|
|
75
|
-
// We need to show the caption when changes come from
|
|
76
|
-
// history navigation(undo/redo).
|
|
77
|
-
useEffect(() => {
|
|
78
|
-
if (caption && !prevCaption) {
|
|
79
|
-
setShowCaption(true);
|
|
80
|
-
}
|
|
81
|
-
}, [caption, prevCaption]);
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
if (!isSelected && !caption) {
|
|
84
|
-
setShowCaption(false);
|
|
85
|
-
}
|
|
86
|
-
}, [isSelected, caption]);
|
|
87
|
-
|
|
88
|
-
// Focus the caption when we click to add one.
|
|
89
|
-
const captionRef = useCallback(node => {
|
|
90
|
-
if (node && !caption) {
|
|
91
|
-
node.focus();
|
|
92
|
-
}
|
|
93
|
-
}, [caption]);
|
|
94
70
|
const {
|
|
95
71
|
__unstableMarkNextChangeAsNotPersistent,
|
|
96
72
|
replaceInnerBlocks,
|
|
@@ -426,20 +402,6 @@ function GalleryEdit(props) {
|
|
|
426
402
|
}, createElement(BaseControl.VisualLabel, null, __('Resolution')), createElement(View, {
|
|
427
403
|
className: 'gallery-image-sizes__loading'
|
|
428
404
|
}, createElement(Spinner, null), __('Loading options…'))))), Platform.isWeb && createElement(Fragment, null, createElement(BlockControls, {
|
|
429
|
-
group: "block"
|
|
430
|
-
}, !isContentLocked && createElement(ToolbarButton, {
|
|
431
|
-
onClick: () => {
|
|
432
|
-
setShowCaption(!showCaption);
|
|
433
|
-
if (showCaption && caption) {
|
|
434
|
-
setAttributes({
|
|
435
|
-
caption: undefined
|
|
436
|
-
});
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
icon: captionIcon,
|
|
440
|
-
isPressed: showCaption,
|
|
441
|
-
label: showCaption ? __('Remove caption') : __('Add caption')
|
|
442
|
-
})), createElement(BlockControls, {
|
|
443
405
|
group: "other"
|
|
444
406
|
}, createElement(MediaReplaceFlow, {
|
|
445
407
|
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
@@ -455,8 +417,7 @@ function GalleryEdit(props) {
|
|
|
455
417
|
clientId: clientId
|
|
456
418
|
})), createElement(Gallery, {
|
|
457
419
|
...props,
|
|
458
|
-
|
|
459
|
-
ref: Platform.isWeb ? captionRef : undefined,
|
|
420
|
+
isContentLocked: isContentLocked,
|
|
460
421
|
images: images,
|
|
461
422
|
mediaPlaceholder: !hasImages || Platform.isNative ? mediaPlaceholder : undefined,
|
|
462
423
|
blockProps: innerBlocksProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","compose","usePrevious","BaseControl","PanelBody","SelectControl","ToggleControl","RangeControl","Spinner","ToolbarButton","store","blockEditorStore","MediaPlaceholder","InspectorControls","useBlockProps","useInnerBlocksProps","BlockControls","MediaReplaceFlow","Platform","useCallback","useEffect","useState","useMemo","__","_x","sprintf","useSelect","useDispatch","withViewportMatch","View","createBlock","createBlobURL","noticesStore","caption","captionIcon","sharedIcon","defaultColumnsNumber","pickRelevantMediaFiles","getHrefAndDestination","getUpdatedLinkTargetSettings","getImageSizeAttributes","Gallery","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","useImageSizes","useGetNewImages","useGetMedia","GapStyles","MAX_COLUMNS","linkOptions","value","label","ALLOWED_MEDIA_TYPES","allowedBlocks","PLACEHOLDER_TEXT","isNative","MOBILE_CONTROL_PROPS_RANGE_CONTROL","type","GalleryEdit","props","setAttributes","attributes","className","clientId","isSelected","insertBlocksAfter","isContentLocked","onFocus","columns","imageCrop","linkTarget","linkTo","sizeSlug","showCaption","setShowCaption","prevCaption","captionRef","node","focus","__unstableMarkNextChangeAsNotPersistent","replaceInnerBlocks","updateBlockAttributes","selectBlock","createSuccessNotice","createErrorNotice","getBlock","getSettings","preferredStyle","select","settings","preferredStyleVariations","__experimentalPreferredStyleVariations","innerBlockImages","_select$getBlock$inne","innerBlocks","wasBlockJustInserted","images","map","block","id","url","fromSavedContent","Boolean","originalContent","imageData","newImages","forEach","newImage","buildImageAttributes","align","undefined","imageSizeOptions","imageAttributes","image","find","newClassName","newLinkTarget","rel","linkDestination","raw","alt","alt_text","isValidFileType","file","nativeFileData","mediaTypeSelector","media_type","some","mediaType","indexOf","updateImages","selectedImages","newFileUploads","Object","prototype","toString","call","imageArray","Array","from","every","processedImages","filter","newOrderMap","reduce","result","index","existingImageBlocks","img","newImageList","existingImg","newBlocks","concat","sort","a","b","length","onUploadError","message","setLinkTo","changedAttributes","blocks","push","linkToText","linkType","setColumnsNumber","toggleImageCrop","getImageCropHelp","checked","toggleOpenInNewTab","openInNewTab","noticeText","updateImagesSize","newSizeSlug","imageSize","size","window","wp","media","view","defaultProps","link","hasImages","hasImageIds","imagesUploading","mediaPlaceholderProps","web","addToGallery","disableMediaButtons","native","isAppender","autoOpenMediaUpload","mediaPlaceholder","createElement","handleUpload","icon","labels","title","instructions","onSelect","accept","allowedTypes","multiple","onError","blockProps","nativeInnerBlockProps","marginHorizontal","marginVertical","innerBlocksProps","orientation","renderAppender","children","hasLinkTo","Fragment","__nextHasNoMarginBottom","onChange","min","max","Math","required","__next40pxDefaultSize","help","options","hideCancelButton","isWeb","VisualLabel","group","onClick","isPressed","name","mediaIds","blockGap","style","spacing","ref","isNarrow"],"sources":["@wordpress/block-library/src/gallery/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { compose, usePrevious } from '@wordpress/compose';\nimport {\n\tBaseControl,\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tSpinner,\n\tToolbarButton,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n} from '@wordpress/block-editor';\nimport {\n\tPlatform,\n\tuseCallback,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { caption as captionIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport {\n\tgetUpdatedLinkTargetSettings,\n\tgetImageSizeAttributes,\n} from '../image/utils';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\nimport useImageSizes from './use-image-sizes';\nimport useGetNewImages from './use-get-new-images';\nimport useGetMedia from './use-get-media';\nimport GapStyles from './gap-styles';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst allowedBlocks = [ 'core/image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'Add media' )\n\t: __( 'Drag images, upload new ones or select files from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tsetAttributes,\n\t\tattributes,\n\t\tclassName,\n\t\tclientId,\n\t\tisSelected,\n\t\tinsertBlocksAfter,\n\t\tisContentLocked,\n\t\tonFocus,\n\t} = props;\n\n\tconst { columns, imageCrop, linkTarget, linkTo, sizeSlug, caption } =\n\t\tattributes;\n\tconst [ showCaption, setShowCaption ] = useState( !! caption );\n\tconst prevCaption = usePrevious( caption );\n\n\t// We need to show the caption when changes come from\n\t// history navigation(undo/redo).\n\tuseEffect( () => {\n\t\tif ( caption && ! prevCaption ) {\n\t\t\tsetShowCaption( true );\n\t\t}\n\t}, [ caption, prevCaption ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && ! caption ) {\n\t\t\tsetShowCaption( false );\n\t\t}\n\t}, [ isSelected, caption ] );\n\n\t// Focus the caption when we click to add one.\n\tconst captionRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( node && ! caption ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ caption ]\n\t);\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceInnerBlocks,\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst { getBlock, getSettings, preferredStyle } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\tconst preferredStyleVariations =\n\t\t\tsettings.__experimentalPreferredStyleVariations;\n\t\treturn {\n\t\t\tgetBlock: select( blockEditorStore ).getBlock,\n\t\t\tgetSettings: select( blockEditorStore ).getSettings,\n\t\t\tpreferredStyle: preferredStyleVariations?.value?.[ 'core/image' ],\n\t\t};\n\t}, [] );\n\n\tconst innerBlockImages = useSelect(\n\t\t( select ) => {\n\t\t\tconst innerBlocks =\n\t\t\t\tselect( blockEditorStore ).getBlock( clientId )?.innerBlocks ??\n\t\t\t\t[];\n\t\t\treturn innerBlocks;\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst wasBlockJustInserted = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).wasBlockJustInserted(\n\t\t\t\tclientId,\n\t\t\t\t'inserter_menu'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo(\n\t\t() =>\n\t\t\tinnerBlockImages?.map( ( block ) => ( {\n\t\t\t\tclientId: block.clientId,\n\t\t\t\tid: block.attributes.id,\n\t\t\t\turl: block.attributes.url,\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tfromSavedContent: Boolean( block.originalContent ),\n\t\t\t} ) ),\n\t\t[ innerBlockImages ]\n\t);\n\n\tconst imageData = useGetMedia( innerBlockImages );\n\n\tconst newImages = useGetNewImages( images, imageData );\n\n\tuseEffect( () => {\n\t\tnewImages?.forEach( ( newImage ) => {\n\t\t\t// Update the images data without creating new undo levels.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( newImage.clientId, {\n\t\t\t\t...buildImageAttributes( newImage.attributes ),\n\t\t\t\tid: newImage.id,\n\t\t\t\talign: undefined,\n\t\t\t} );\n\t\t} );\n\t}, [ newImages ] );\n\n\tconst imageSizeOptions = useImageSizes(\n\t\timageData,\n\t\tisSelected,\n\t\tgetSettings\n\t);\n\n\t/**\n\t * Determines the image attributes that should be applied to an image block\n\t * after the gallery updates.\n\t *\n\t * The gallery will receive the full collection of images when a new image\n\t * is added. As a result we need to reapply the image's original settings if\n\t * it already existed in the gallery. If the image is in fact new, we need\n\t * to apply the gallery's current settings to the image.\n\t *\n\t * @param {Object} imageAttributes Media object for the actual image.\n\t * @return {Object} Attributes to set on the new image block.\n\t */\n\tfunction buildImageAttributes( imageAttributes ) {\n\t\tconst image = imageAttributes.id\n\t\t\t? imageData.find( ( { id } ) => id === imageAttributes.id )\n\t\t\t: null;\n\n\t\tlet newClassName;\n\t\tif ( imageAttributes.className && imageAttributes.className !== '' ) {\n\t\t\tnewClassName = imageAttributes.className;\n\t\t} else {\n\t\t\tnewClassName = preferredStyle\n\t\t\t\t? `is-style-${ preferredStyle }`\n\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet newLinkTarget;\n\t\tif ( imageAttributes.linkTarget || imageAttributes.rel ) {\n\t\t\t// When transformed from image blocks, the link destination and rel attributes are inherited.\n\t\t\tnewLinkTarget = {\n\t\t\t\tlinkTarget: imageAttributes.linkTarget,\n\t\t\t\trel: imageAttributes.rel,\n\t\t\t};\n\t\t} else {\n\t\t\t// When an image is added, update the link destination and rel attributes according to the gallery settings\n\t\t\tnewLinkTarget = getUpdatedLinkTargetSettings(\n\t\t\t\tlinkTarget,\n\t\t\t\tattributes\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t...pickRelevantMediaFiles( image, sizeSlug ),\n\t\t\t...getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tlinkTo,\n\t\t\t\timageAttributes?.linkDestination\n\t\t\t),\n\t\t\t...newLinkTarget,\n\t\t\tclassName: newClassName,\n\t\t\tsizeSlug,\n\t\t\tcaption: imageAttributes.caption || image.caption?.raw,\n\t\t\talt: imageAttributes.alt || image.alt_text,\n\t\t};\n\t}\n\n\tfunction isValidFileType( file ) {\n\t\t// It's necessary to retrieve the media type from the raw image data for already-uploaded images on native.\n\t\tconst nativeFileData =\n\t\t\tPlatform.isNative && file.id\n\t\t\t\t? imageData.find( ( { id } ) => id === file.id )\n\t\t\t\t: null;\n\n\t\tconst mediaTypeSelector = nativeFileData\n\t\t\t? nativeFileData?.media_type\n\t\t\t: file.type;\n\n\t\treturn (\n\t\t\tALLOWED_MEDIA_TYPES.some(\n\t\t\t\t( mediaType ) => mediaTypeSelector?.indexOf( mediaType ) === 0\n\t\t\t) || file.url?.indexOf( 'blob:' ) === 0\n\t\t);\n\t}\n\n\tfunction updateImages( selectedImages ) {\n\t\tconst newFileUploads =\n\t\t\tObject.prototype.toString.call( selectedImages ) ===\n\t\t\t'[object FileList]';\n\n\t\tconst imageArray = newFileUploads\n\t\t\t? Array.from( selectedImages ).map( ( file ) => {\n\t\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn file;\n\t\t\t } )\n\t\t\t: selectedImages;\n\n\t\tif ( ! imageArray.every( isValidFileType ) ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\t__(\n\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t),\n\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t);\n\t\t}\n\n\t\tconst processedImages = imageArray\n\t\t\t.filter( ( file ) => file.url || isValidFileType( file ) )\n\t\t\t.map( ( file ) => {\n\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn file;\n\t\t\t} );\n\n\t\t// Because we are reusing existing innerImage blocks any reordering\n\t\t// done in the media library will be lost so we need to reapply that ordering\n\t\t// once the new image blocks are merged in with existing.\n\t\tconst newOrderMap = processedImages.reduce(\n\t\t\t( result, image, index ) => (\n\t\t\t\t( result[ image.id ] = index ), result\n\t\t\t),\n\t\t\t{}\n\t\t);\n\n\t\tconst existingImageBlocks = ! newFileUploads\n\t\t\t? innerBlockImages.filter( ( block ) =>\n\t\t\t\t\tprocessedImages.find(\n\t\t\t\t\t\t( img ) => img.id === block.attributes.id\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: innerBlockImages;\n\n\t\tconst newImageList = processedImages.filter(\n\t\t\t( img ) =>\n\t\t\t\t! existingImageBlocks.find(\n\t\t\t\t\t( existingImg ) => img.id === existingImg.attributes.id\n\t\t\t\t)\n\t\t);\n\n\t\tconst newBlocks = newImageList.map( ( image ) => {\n\t\t\treturn createBlock( 'core/image', {\n\t\t\t\tid: image.id,\n\t\t\t\turl: image.url,\n\t\t\t\tcaption: image.caption,\n\t\t\t\talt: image.alt,\n\t\t\t} );\n\t\t} );\n\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\texistingImageBlocks\n\t\t\t\t.concat( newBlocks )\n\t\t\t\t.sort(\n\t\t\t\t\t( a, b ) =>\n\t\t\t\t\t\tnewOrderMap[ a.attributes.id ] -\n\t\t\t\t\t\tnewOrderMap[ b.attributes.id ]\n\t\t\t\t)\n\t\t);\n\n\t\t// Select the first block to scroll into view when new blocks are added.\n\t\tif ( newBlocks?.length > 0 ) {\n\t\t\tselectBlock( newBlocks[ 0 ].clientId );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst linkToText = [ ...linkOptions ].find(\n\t\t\t( linkType ) => linkType.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image links updated to: %s' ),\n\t\t\t\tlinkToText.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-linkTo',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction toggleOpenInNewTab( openInNewTab ) {\n\t\tconst newLinkTarget = openInNewTab ? '_blank' : undefined;\n\t\tsetAttributes( { linkTarget: newLinkTarget } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = getUpdatedLinkTargetSettings(\n\t\t\t\tnewLinkTarget,\n\t\t\t\tblock.attributes\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst noticeText = openInNewTab\n\t\t\t? __( 'All gallery images updated to open in new tab' )\n\t\t\t: __( 'All gallery images updated to not open in new tab' );\n\t\tcreateSuccessNotice( noticeText, {\n\t\t\tid: 'gallery-attributes-openInNewTab',\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tsetAttributes( { sizeSlug: newSizeSlug } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getImageSizeAttributes(\n\t\t\t\timage,\n\t\t\t\tnewSizeSlug\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst imageSize = imageSizeOptions.find(\n\t\t\t( size ) => size.value === newSizeSlug\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image sizes updated to: %s' ),\n\t\t\t\timageSize.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-sizeSlug',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\tconst imagesUploading = images.some( ( img ) =>\n\t\t! Platform.isNative\n\t\t\t? ! img.id && img.url?.indexOf( 'blob:' ) === 0\n\t\t\t: img.url?.indexOf( 'file:' ) === 0\n\t);\n\n\t// MediaPlaceholder props are different between web and native hence, we provide a platform-specific set.\n\tconst mediaPlaceholderProps = Platform.select( {\n\t\tweb: {\n\t\t\taddToGallery: false,\n\t\t\tdisableMediaButtons: imagesUploading,\n\t\t\tvalue: {},\n\t\t},\n\t\tnative: {\n\t\t\taddToGallery: hasImageIds,\n\t\t\tisAppender: hasImages,\n\t\t\tdisableMediaButtons:\n\t\t\t\t( hasImages && ! isSelected ) || imagesUploading,\n\t\t\tvalue: hasImageIds ? images : {},\n\t\t\tautoOpenMediaUpload:\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted,\n\t\t\tonFocus,\n\t\t},\n\t} );\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\thandleUpload={ false }\n\t\t\ticon={ sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Gallery' ),\n\t\t\t\tinstructions: PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ updateImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tonError={ onUploadError }\n\t\t\t{ ...mediaPlaceholderProps }\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( className, 'has-nested-images' ),\n\t} );\n\n\tconst nativeInnerBlockProps = Platform.isNative && {\n\t\tmarginHorizontal: 0,\n\t\tmarginVertical: 0,\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t...nativeInnerBlockProps,\n\t} );\n\n\tif ( ! hasImages ) {\n\t\treturn (\n\t\t\t<View { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t);\n\t}\n\n\tconst hasLinkTo = linkTo && linkTo !== 'none';\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t\t{ hasLinkTo && (\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\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ Platform.isWeb && ! imageSizeOptions && hasImageIds && (\n\t\t\t\t\t\t<BaseControl className={ 'gallery-image-sizes' }>\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Resolution' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<View className={ 'gallery-image-sizes__loading' }>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t{ __( 'Loading options…' ) }\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t\t{ ! isContentLocked && (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetShowCaption( ! showCaption );\n\t\t\t\t\t\t\t\t\tif ( showCaption && caption ) {\n\t\t\t\t\t\t\t\t\t\tsetAttributes( { caption: undefined } );\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\ticon={ captionIcon }\n\t\t\t\t\t\t\t\tisPressed={ showCaption }\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tshowCaption\n\t\t\t\t\t\t\t\t\t\t? __( 'Remove caption' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Add caption' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\t\t\tmultiple={ true }\n\t\t\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<GapStyles\n\t\t\t\t\t\tblockGap={ attributes.style?.spacing?.blockGap }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tshowCaption={ showCaption }\n\t\t\t\tref={ Platform.isWeb ? captionRef : undefined }\n\t\t\t\timages={ images }\n\t\t\t\tmediaPlaceholder={\n\t\t\t\t\t! hasImages || Platform.isNative\n\t\t\t\t\t\t? mediaPlaceholder\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tblockProps={ innerBlocksProps }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</>\n\t);\n}\nexport default compose( [ withViewportMatch( { isNarrow: '< small' } ) ] )(\n\tGalleryEdit\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","compose","BaseControl","PanelBody","SelectControl","ToggleControl","RangeControl","Spinner","store","blockEditorStore","MediaPlaceholder","InspectorControls","useBlockProps","useInnerBlocksProps","BlockControls","MediaReplaceFlow","Platform","useEffect","useMemo","__","_x","sprintf","useSelect","useDispatch","withViewportMatch","View","createBlock","createBlobURL","noticesStore","sharedIcon","defaultColumnsNumber","pickRelevantMediaFiles","getHrefAndDestination","getUpdatedLinkTargetSettings","getImageSizeAttributes","Gallery","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","useImageSizes","useGetNewImages","useGetMedia","GapStyles","MAX_COLUMNS","linkOptions","value","label","ALLOWED_MEDIA_TYPES","allowedBlocks","PLACEHOLDER_TEXT","isNative","MOBILE_CONTROL_PROPS_RANGE_CONTROL","type","GalleryEdit","props","setAttributes","attributes","className","clientId","isSelected","insertBlocksAfter","isContentLocked","onFocus","columns","imageCrop","linkTarget","linkTo","sizeSlug","__unstableMarkNextChangeAsNotPersistent","replaceInnerBlocks","updateBlockAttributes","selectBlock","createSuccessNotice","createErrorNotice","getBlock","getSettings","preferredStyle","select","settings","preferredStyleVariations","__experimentalPreferredStyleVariations","innerBlockImages","_select$getBlock$inne","innerBlocks","wasBlockJustInserted","images","map","block","id","url","fromSavedContent","Boolean","originalContent","imageData","newImages","forEach","newImage","buildImageAttributes","align","undefined","imageSizeOptions","imageAttributes","image","find","newClassName","newLinkTarget","rel","linkDestination","caption","raw","alt","alt_text","isValidFileType","file","nativeFileData","mediaTypeSelector","media_type","some","mediaType","indexOf","updateImages","selectedImages","newFileUploads","Object","prototype","toString","call","imageArray","Array","from","every","processedImages","filter","newOrderMap","reduce","result","index","existingImageBlocks","img","newImageList","existingImg","newBlocks","concat","sort","a","b","length","onUploadError","message","setLinkTo","changedAttributes","blocks","push","linkToText","linkType","setColumnsNumber","toggleImageCrop","getImageCropHelp","checked","toggleOpenInNewTab","openInNewTab","noticeText","updateImagesSize","newSizeSlug","imageSize","size","window","wp","media","view","defaultProps","link","hasImages","hasImageIds","imagesUploading","mediaPlaceholderProps","web","addToGallery","disableMediaButtons","native","isAppender","autoOpenMediaUpload","mediaPlaceholder","createElement","handleUpload","icon","labels","title","instructions","onSelect","accept","allowedTypes","multiple","onError","blockProps","nativeInnerBlockProps","marginHorizontal","marginVertical","innerBlocksProps","orientation","renderAppender","children","hasLinkTo","Fragment","__nextHasNoMarginBottom","onChange","min","max","Math","required","__next40pxDefaultSize","help","options","hideCancelButton","isWeb","VisualLabel","group","name","mediaIds","blockGap","style","spacing","isNarrow"],"sources":["@wordpress/block-library/src/gallery/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport {\n\tBaseControl,\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tSpinner,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n} from '@wordpress/block-editor';\nimport { Platform, useEffect, useMemo } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport {\n\tgetUpdatedLinkTargetSettings,\n\tgetImageSizeAttributes,\n} from '../image/utils';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\nimport useImageSizes from './use-image-sizes';\nimport useGetNewImages from './use-get-new-images';\nimport useGetMedia from './use-get-media';\nimport GapStyles from './gap-styles';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst allowedBlocks = [ 'core/image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'Add media' )\n\t: __( 'Drag images, upload new ones or select files from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tsetAttributes,\n\t\tattributes,\n\t\tclassName,\n\t\tclientId,\n\t\tisSelected,\n\t\tinsertBlocksAfter,\n\t\tisContentLocked,\n\t\tonFocus,\n\t} = props;\n\n\tconst { columns, imageCrop, linkTarget, linkTo, sizeSlug } = attributes;\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceInnerBlocks,\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst { getBlock, getSettings, preferredStyle } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\tconst preferredStyleVariations =\n\t\t\tsettings.__experimentalPreferredStyleVariations;\n\t\treturn {\n\t\t\tgetBlock: select( blockEditorStore ).getBlock,\n\t\t\tgetSettings: select( blockEditorStore ).getSettings,\n\t\t\tpreferredStyle: preferredStyleVariations?.value?.[ 'core/image' ],\n\t\t};\n\t}, [] );\n\n\tconst innerBlockImages = useSelect(\n\t\t( select ) => {\n\t\t\tconst innerBlocks =\n\t\t\t\tselect( blockEditorStore ).getBlock( clientId )?.innerBlocks ??\n\t\t\t\t[];\n\t\t\treturn innerBlocks;\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst wasBlockJustInserted = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).wasBlockJustInserted(\n\t\t\t\tclientId,\n\t\t\t\t'inserter_menu'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo(\n\t\t() =>\n\t\t\tinnerBlockImages?.map( ( block ) => ( {\n\t\t\t\tclientId: block.clientId,\n\t\t\t\tid: block.attributes.id,\n\t\t\t\turl: block.attributes.url,\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tfromSavedContent: Boolean( block.originalContent ),\n\t\t\t} ) ),\n\t\t[ innerBlockImages ]\n\t);\n\n\tconst imageData = useGetMedia( innerBlockImages );\n\n\tconst newImages = useGetNewImages( images, imageData );\n\n\tuseEffect( () => {\n\t\tnewImages?.forEach( ( newImage ) => {\n\t\t\t// Update the images data without creating new undo levels.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( newImage.clientId, {\n\t\t\t\t...buildImageAttributes( newImage.attributes ),\n\t\t\t\tid: newImage.id,\n\t\t\t\talign: undefined,\n\t\t\t} );\n\t\t} );\n\t}, [ newImages ] );\n\n\tconst imageSizeOptions = useImageSizes(\n\t\timageData,\n\t\tisSelected,\n\t\tgetSettings\n\t);\n\n\t/**\n\t * Determines the image attributes that should be applied to an image block\n\t * after the gallery updates.\n\t *\n\t * The gallery will receive the full collection of images when a new image\n\t * is added. As a result we need to reapply the image's original settings if\n\t * it already existed in the gallery. If the image is in fact new, we need\n\t * to apply the gallery's current settings to the image.\n\t *\n\t * @param {Object} imageAttributes Media object for the actual image.\n\t * @return {Object} Attributes to set on the new image block.\n\t */\n\tfunction buildImageAttributes( imageAttributes ) {\n\t\tconst image = imageAttributes.id\n\t\t\t? imageData.find( ( { id } ) => id === imageAttributes.id )\n\t\t\t: null;\n\n\t\tlet newClassName;\n\t\tif ( imageAttributes.className && imageAttributes.className !== '' ) {\n\t\t\tnewClassName = imageAttributes.className;\n\t\t} else {\n\t\t\tnewClassName = preferredStyle\n\t\t\t\t? `is-style-${ preferredStyle }`\n\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet newLinkTarget;\n\t\tif ( imageAttributes.linkTarget || imageAttributes.rel ) {\n\t\t\t// When transformed from image blocks, the link destination and rel attributes are inherited.\n\t\t\tnewLinkTarget = {\n\t\t\t\tlinkTarget: imageAttributes.linkTarget,\n\t\t\t\trel: imageAttributes.rel,\n\t\t\t};\n\t\t} else {\n\t\t\t// When an image is added, update the link destination and rel attributes according to the gallery settings\n\t\t\tnewLinkTarget = getUpdatedLinkTargetSettings(\n\t\t\t\tlinkTarget,\n\t\t\t\tattributes\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t...pickRelevantMediaFiles( image, sizeSlug ),\n\t\t\t...getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tlinkTo,\n\t\t\t\timageAttributes?.linkDestination\n\t\t\t),\n\t\t\t...newLinkTarget,\n\t\t\tclassName: newClassName,\n\t\t\tsizeSlug,\n\t\t\tcaption: imageAttributes.caption || image.caption?.raw,\n\t\t\talt: imageAttributes.alt || image.alt_text,\n\t\t};\n\t}\n\n\tfunction isValidFileType( file ) {\n\t\t// It's necessary to retrieve the media type from the raw image data for already-uploaded images on native.\n\t\tconst nativeFileData =\n\t\t\tPlatform.isNative && file.id\n\t\t\t\t? imageData.find( ( { id } ) => id === file.id )\n\t\t\t\t: null;\n\n\t\tconst mediaTypeSelector = nativeFileData\n\t\t\t? nativeFileData?.media_type\n\t\t\t: file.type;\n\n\t\treturn (\n\t\t\tALLOWED_MEDIA_TYPES.some(\n\t\t\t\t( mediaType ) => mediaTypeSelector?.indexOf( mediaType ) === 0\n\t\t\t) || file.url?.indexOf( 'blob:' ) === 0\n\t\t);\n\t}\n\n\tfunction updateImages( selectedImages ) {\n\t\tconst newFileUploads =\n\t\t\tObject.prototype.toString.call( selectedImages ) ===\n\t\t\t'[object FileList]';\n\n\t\tconst imageArray = newFileUploads\n\t\t\t? Array.from( selectedImages ).map( ( file ) => {\n\t\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn file;\n\t\t\t } )\n\t\t\t: selectedImages;\n\n\t\tif ( ! imageArray.every( isValidFileType ) ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\t__(\n\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t),\n\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t);\n\t\t}\n\n\t\tconst processedImages = imageArray\n\t\t\t.filter( ( file ) => file.url || isValidFileType( file ) )\n\t\t\t.map( ( file ) => {\n\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn file;\n\t\t\t} );\n\n\t\t// Because we are reusing existing innerImage blocks any reordering\n\t\t// done in the media library will be lost so we need to reapply that ordering\n\t\t// once the new image blocks are merged in with existing.\n\t\tconst newOrderMap = processedImages.reduce(\n\t\t\t( result, image, index ) => (\n\t\t\t\t( result[ image.id ] = index ), result\n\t\t\t),\n\t\t\t{}\n\t\t);\n\n\t\tconst existingImageBlocks = ! newFileUploads\n\t\t\t? innerBlockImages.filter( ( block ) =>\n\t\t\t\t\tprocessedImages.find(\n\t\t\t\t\t\t( img ) => img.id === block.attributes.id\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: innerBlockImages;\n\n\t\tconst newImageList = processedImages.filter(\n\t\t\t( img ) =>\n\t\t\t\t! existingImageBlocks.find(\n\t\t\t\t\t( existingImg ) => img.id === existingImg.attributes.id\n\t\t\t\t)\n\t\t);\n\n\t\tconst newBlocks = newImageList.map( ( image ) => {\n\t\t\treturn createBlock( 'core/image', {\n\t\t\t\tid: image.id,\n\t\t\t\turl: image.url,\n\t\t\t\tcaption: image.caption,\n\t\t\t\talt: image.alt,\n\t\t\t} );\n\t\t} );\n\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\texistingImageBlocks\n\t\t\t\t.concat( newBlocks )\n\t\t\t\t.sort(\n\t\t\t\t\t( a, b ) =>\n\t\t\t\t\t\tnewOrderMap[ a.attributes.id ] -\n\t\t\t\t\t\tnewOrderMap[ b.attributes.id ]\n\t\t\t\t)\n\t\t);\n\n\t\t// Select the first block to scroll into view when new blocks are added.\n\t\tif ( newBlocks?.length > 0 ) {\n\t\t\tselectBlock( newBlocks[ 0 ].clientId );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst linkToText = [ ...linkOptions ].find(\n\t\t\t( linkType ) => linkType.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image links updated to: %s' ),\n\t\t\t\tlinkToText.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-linkTo',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction toggleOpenInNewTab( openInNewTab ) {\n\t\tconst newLinkTarget = openInNewTab ? '_blank' : undefined;\n\t\tsetAttributes( { linkTarget: newLinkTarget } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = getUpdatedLinkTargetSettings(\n\t\t\t\tnewLinkTarget,\n\t\t\t\tblock.attributes\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst noticeText = openInNewTab\n\t\t\t? __( 'All gallery images updated to open in new tab' )\n\t\t\t: __( 'All gallery images updated to not open in new tab' );\n\t\tcreateSuccessNotice( noticeText, {\n\t\t\tid: 'gallery-attributes-openInNewTab',\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tsetAttributes( { sizeSlug: newSizeSlug } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getImageSizeAttributes(\n\t\t\t\timage,\n\t\t\t\tnewSizeSlug\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst imageSize = imageSizeOptions.find(\n\t\t\t( size ) => size.value === newSizeSlug\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image sizes updated to: %s' ),\n\t\t\t\timageSize.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-sizeSlug',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\tconst imagesUploading = images.some( ( img ) =>\n\t\t! Platform.isNative\n\t\t\t? ! img.id && img.url?.indexOf( 'blob:' ) === 0\n\t\t\t: img.url?.indexOf( 'file:' ) === 0\n\t);\n\n\t// MediaPlaceholder props are different between web and native hence, we provide a platform-specific set.\n\tconst mediaPlaceholderProps = Platform.select( {\n\t\tweb: {\n\t\t\taddToGallery: false,\n\t\t\tdisableMediaButtons: imagesUploading,\n\t\t\tvalue: {},\n\t\t},\n\t\tnative: {\n\t\t\taddToGallery: hasImageIds,\n\t\t\tisAppender: hasImages,\n\t\t\tdisableMediaButtons:\n\t\t\t\t( hasImages && ! isSelected ) || imagesUploading,\n\t\t\tvalue: hasImageIds ? images : {},\n\t\t\tautoOpenMediaUpload:\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted,\n\t\t\tonFocus,\n\t\t},\n\t} );\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\thandleUpload={ false }\n\t\t\ticon={ sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Gallery' ),\n\t\t\t\tinstructions: PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ updateImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tonError={ onUploadError }\n\t\t\t{ ...mediaPlaceholderProps }\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( className, 'has-nested-images' ),\n\t} );\n\n\tconst nativeInnerBlockProps = Platform.isNative && {\n\t\tmarginHorizontal: 0,\n\t\tmarginVertical: 0,\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t...nativeInnerBlockProps,\n\t} );\n\n\tif ( ! hasImages ) {\n\t\treturn (\n\t\t\t<View { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t);\n\t}\n\n\tconst hasLinkTo = linkTo && linkTo !== 'none';\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t\t{ hasLinkTo && (\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\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ Platform.isWeb && ! imageSizeOptions && hasImageIds && (\n\t\t\t\t\t\t<BaseControl className={ 'gallery-image-sizes' }>\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Resolution' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<View className={ 'gallery-image-sizes__loading' }>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t{ __( 'Loading options…' ) }\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\t\t\tmultiple={ true }\n\t\t\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<GapStyles\n\t\t\t\t\t\tblockGap={ attributes.style?.spacing?.blockGap }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tisContentLocked={ isContentLocked }\n\t\t\t\timages={ images }\n\t\t\t\tmediaPlaceholder={\n\t\t\t\t\t! hasImages || Platform.isNative\n\t\t\t\t\t\t? mediaPlaceholder\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tblockProps={ innerBlocksProps }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</>\n\t);\n}\nexport default compose( [ withViewportMatch( { isNarrow: '< small' } ) ] )(\n\tGalleryEdit\n);\n"],"mappings":"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"}
|
|
@@ -7,12 +7,14 @@ import classnames from 'classnames';
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
import { RichText, __experimentalGetElementClassName } from '@wordpress/block-editor';
|
|
11
10
|
import { __ } from '@wordpress/i18n';
|
|
12
|
-
import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
|
|
13
11
|
import { View } from '@wordpress/primitives';
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
import { Caption } from '../utils/caption';
|
|
17
|
+
export default function Gallery(props) {
|
|
16
18
|
const {
|
|
17
19
|
attributes,
|
|
18
20
|
isSelected,
|
|
@@ -21,12 +23,11 @@ export const Gallery = (props, captionRef) => {
|
|
|
21
23
|
insertBlocksAfter,
|
|
22
24
|
blockProps,
|
|
23
25
|
__unstableLayoutClassNames: layoutClassNames,
|
|
24
|
-
|
|
26
|
+
isContentLocked
|
|
25
27
|
} = props;
|
|
26
28
|
const {
|
|
27
29
|
align,
|
|
28
30
|
columns,
|
|
29
|
-
caption,
|
|
30
31
|
imageCrop
|
|
31
32
|
} = attributes;
|
|
32
33
|
return createElement("figure", {
|
|
@@ -39,20 +40,15 @@ export const Gallery = (props, captionRef) => {
|
|
|
39
40
|
})
|
|
40
41
|
}, blockProps.children, isSelected && !blockProps.children && createElement(View, {
|
|
41
42
|
className: "blocks-gallery-media-placeholder-wrapper"
|
|
42
|
-
}, mediaPlaceholder),
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
caption: value
|
|
52
|
-
}),
|
|
53
|
-
inlineToolbar: true,
|
|
54
|
-
__unstableOnSplitAtEnd: () => insertBlocksAfter(createBlock(getDefaultBlockName()))
|
|
43
|
+
}, mediaPlaceholder), createElement(Caption, {
|
|
44
|
+
attributes: attributes,
|
|
45
|
+
setAttributes: setAttributes,
|
|
46
|
+
isSelected: isSelected,
|
|
47
|
+
insertBlocksAfter: insertBlocksAfter,
|
|
48
|
+
showToolbarButton: !isContentLocked,
|
|
49
|
+
className: "blocks-gallery-caption",
|
|
50
|
+
label: __('Gallery caption text'),
|
|
51
|
+
placeholder: __('Add gallery caption')
|
|
55
52
|
}));
|
|
56
|
-
}
|
|
57
|
-
export default forwardRef(Gallery);
|
|
53
|
+
}
|
|
58
54
|
//# sourceMappingURL=gallery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","
|
|
1
|
+
{"version":3,"names":["classnames","__","View","Caption","Gallery","props","attributes","isSelected","setAttributes","mediaPlaceholder","insertBlocksAfter","blockProps","__unstableLayoutClassNames","layoutClassNames","isContentLocked","align","columns","imageCrop","createElement","className","undefined","children","showToolbarButton","label","placeholder"],"sources":["@wordpress/block-library/src/gallery/gallery.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { View } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport { Caption } from '../utils/caption';\n\nexport default function Gallery( props ) {\n\tconst {\n\t\tattributes,\n\t\tisSelected,\n\t\tsetAttributes,\n\t\tmediaPlaceholder,\n\t\tinsertBlocksAfter,\n\t\tblockProps,\n\t\t__unstableLayoutClassNames: layoutClassNames,\n\t\tisContentLocked,\n\t} = props;\n\n\tconst { align, columns, imageCrop } = attributes;\n\n\treturn (\n\t\t<figure\n\t\t\t{ ...blockProps }\n\t\t\tclassName={ classnames(\n\t\t\t\tblockProps.className,\n\t\t\t\tlayoutClassNames,\n\t\t\t\t'blocks-gallery-grid',\n\t\t\t\t{\n\t\t\t\t\t[ `align${ align }` ]: align,\n\t\t\t\t\t[ `columns-${ columns }` ]: columns !== undefined,\n\t\t\t\t\t[ `columns-default` ]: columns === undefined,\n\t\t\t\t\t'is-cropped': imageCrop,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ blockProps.children }\n\t\t\t{ isSelected && ! blockProps.children && (\n\t\t\t\t<View className=\"blocks-gallery-media-placeholder-wrapper\">\n\t\t\t\t\t{ mediaPlaceholder }\n\t\t\t\t</View>\n\t\t\t) }\n\t\t\t<Caption\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tshowToolbarButton={ ! isContentLocked }\n\t\t\t\tclassName=\"blocks-gallery-caption\"\n\t\t\t\tlabel={ __( 'Gallery caption text' ) }\n\t\t\t\tplaceholder={ __( 'Add gallery caption' ) }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,QAAQ,uBAAuB;;AAE5C;AACA;AACA;AACA,SAASC,OAAO,QAAQ,kBAAkB;AAE1C,eAAe,SAASC,OAAOA,CAAEC,KAAK,EAAG;EACxC,MAAM;IACLC,UAAU;IACVC,UAAU;IACVC,aAAa;IACbC,gBAAgB;IAChBC,iBAAiB;IACjBC,UAAU;IACVC,0BAA0B,EAAEC,gBAAgB;IAC5CC;EACD,CAAC,GAAGT,KAAK;EAET,MAAM;IAAEU,KAAK;IAAEC,OAAO;IAAEC;EAAU,CAAC,GAAGX,UAAU;EAEhD,OACCY,aAAA;IAAA,GACMP,UAAU;IACfQ,SAAS,EAAGnB,UAAU,CACrBW,UAAU,CAACQ,SAAS,EACpBN,gBAAgB,EAChB,qBAAqB,EACrB;MACC,CAAG,QAAQE,KAAO,EAAC,GAAIA,KAAK;MAC5B,CAAG,WAAWC,OAAS,EAAC,GAAIA,OAAO,KAAKI,SAAS;MACjD,CAAG,iBAAgB,GAAIJ,OAAO,KAAKI,SAAS;MAC5C,YAAY,EAAEH;IACf,CACD;EAAG,GAEDN,UAAU,CAACU,QAAQ,EACnBd,UAAU,IAAI,CAAEI,UAAU,CAACU,QAAQ,IACpCH,aAAA,CAAChB,IAAI;IAACiB,SAAS,EAAC;EAA0C,GACvDV,gBACG,CACN,EACDS,aAAA,CAACf,OAAO;IACPG,UAAU,EAAGA,UAAY;IACzBE,aAAa,EAAGA,aAAe;IAC/BD,UAAU,EAAGA,UAAY;IACzBG,iBAAiB,EAAGA,iBAAmB;IACvCY,iBAAiB,EAAG,CAAER,eAAiB;IACvCK,SAAS,EAAC,wBAAwB;IAClCI,KAAK,EAAGtB,EAAE,CAAE,sBAAuB,CAAG;IACtCuB,WAAW,EAAGvB,EAAE,CAAE,qBAAsB;EAAG,CAC3C,CACM,CAAC;AAEX"}
|
|
@@ -14,7 +14,7 @@ import styles from './gallery-styles.scss';
|
|
|
14
14
|
* WordPress dependencies
|
|
15
15
|
*/
|
|
16
16
|
import { __, sprintf } from '@wordpress/i18n';
|
|
17
|
-
import { BlockCaption, useInnerBlocksProps } from '@wordpress/block-editor';
|
|
17
|
+
import { BlockCaption, RichText, useInnerBlocksProps } from '@wordpress/block-editor';
|
|
18
18
|
import { useState, useEffect } from '@wordpress/element';
|
|
19
19
|
import { mediaUploadSync } from '@wordpress/react-native-bridge';
|
|
20
20
|
import { WIDE_ALIGNMENTS } from '@wordpress/components';
|
|
@@ -84,7 +84,7 @@ export const Gallery = props => {
|
|
|
84
84
|
clientId: clientId,
|
|
85
85
|
isSelected: isCaptionSelected,
|
|
86
86
|
accessible: true,
|
|
87
|
-
accessibilityLabelCreator: caption =>
|
|
87
|
+
accessibilityLabelCreator: caption => RichText.isEmpty(caption) ? /* translators: accessibility text. Empty gallery caption. */
|
|
88
88
|
|
|
89
89
|
'Gallery caption. Empty' : sprintf( /* translators: accessibility text. %s: gallery caption. */
|
|
90
90
|
__('Gallery caption. %s'), caption),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","defaultColumnsNumber","styles","__","sprintf","BlockCaption","useInnerBlocksProps","useState","useEffect","mediaUploadSync","WIDE_ALIGNMENTS","useResizeObserver","TILE_SPACING","MAX_DISPLAYED_COLUMNS","MAX_DISPLAYED_COLUMNS_NARROW","Gallery","props","isCaptionSelected","setIsCaptionSelected","resizeObserver","sizes","maxWidth","setMaxWidth","mediaPlaceholder","attributes","images","isNarrow","onBlur","insertBlocksAfter","clientId","width","align","columns","length","displayedColumns","Math","min","innerBlocksProps","contentResizeMode","allowedBlocks","orientation","renderAppender","numColumns","marginHorizontal","marginVertical","layout","type","alignments","gridProperties","parentWidth","focusGalleryCaption","isFullWidth","full","createElement","style","fullWidth","galleryAppender","isSelected","accessible","accessibilityLabelCreator","caption","onFocus"],"sources":["@wordpress/block-library/src/gallery/gallery.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * Internal dependencies\n */\nimport { defaultColumnsNumber } from './shared';\nimport styles from './gallery-styles.scss';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {
|
|
1
|
+
{"version":3,"names":["View","defaultColumnsNumber","styles","__","sprintf","BlockCaption","RichText","useInnerBlocksProps","useState","useEffect","mediaUploadSync","WIDE_ALIGNMENTS","useResizeObserver","TILE_SPACING","MAX_DISPLAYED_COLUMNS","MAX_DISPLAYED_COLUMNS_NARROW","Gallery","props","isCaptionSelected","setIsCaptionSelected","resizeObserver","sizes","maxWidth","setMaxWidth","mediaPlaceholder","attributes","images","isNarrow","onBlur","insertBlocksAfter","clientId","width","align","columns","length","displayedColumns","Math","min","innerBlocksProps","contentResizeMode","allowedBlocks","orientation","renderAppender","numColumns","marginHorizontal","marginVertical","layout","type","alignments","gridProperties","parentWidth","focusGalleryCaption","isFullWidth","full","createElement","style","fullWidth","galleryAppender","isSelected","accessible","accessibilityLabelCreator","caption","isEmpty","onFocus"],"sources":["@wordpress/block-library/src/gallery/gallery.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * Internal dependencies\n */\nimport { defaultColumnsNumber } from './shared';\nimport styles from './gallery-styles.scss';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockCaption,\n\tRichText,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { useState, useEffect } from '@wordpress/element';\nimport { mediaUploadSync } from '@wordpress/react-native-bridge';\nimport { WIDE_ALIGNMENTS } from '@wordpress/components';\nimport { useResizeObserver } from '@wordpress/compose';\n\nconst TILE_SPACING = 8;\n\n// we must limit displayed columns since readable content max-width is 580px\nconst MAX_DISPLAYED_COLUMNS = 4;\nconst MAX_DISPLAYED_COLUMNS_NARROW = 2;\n\nexport const Gallery = ( props ) => {\n\tconst [ isCaptionSelected, setIsCaptionSelected ] = useState( false );\n\tconst [ resizeObserver, sizes ] = useResizeObserver();\n\tconst [ maxWidth, setMaxWidth ] = useState( 0 );\n\tuseEffect( mediaUploadSync, [] );\n\n\tconst {\n\t\tmediaPlaceholder,\n\t\tattributes,\n\t\timages,\n\t\tisNarrow,\n\t\tonBlur,\n\t\tinsertBlocksAfter,\n\t\tclientId,\n\t} = props;\n\n\tuseEffect( () => {\n\t\tconst { width } = sizes || {};\n\t\tif ( width ) {\n\t\t\tsetMaxWidth( width );\n\t\t}\n\t}, [ sizes ] );\n\n\tconst { align, columns = defaultColumnsNumber( images.length ) } =\n\t\tattributes;\n\n\tconst displayedColumns = Math.min(\n\t\tcolumns,\n\t\tisNarrow ? MAX_DISPLAYED_COLUMNS_NARROW : MAX_DISPLAYED_COLUMNS\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{},\n\t\t{\n\t\t\tcontentResizeMode: 'stretch',\n\t\t\tallowedBlocks: [ 'core/image' ],\n\t\t\torientation: 'horizontal',\n\t\t\trenderAppender: false,\n\t\t\tnumColumns: displayedColumns,\n\t\t\tmarginHorizontal: TILE_SPACING,\n\t\t\tmarginVertical: TILE_SPACING,\n\t\t\tlayout: { type: 'default', alignments: [] },\n\t\t\tgridProperties: {\n\t\t\t\tnumColumns: displayedColumns,\n\t\t\t},\n\t\t\tparentWidth: maxWidth + 2 * TILE_SPACING,\n\t\t}\n\t);\n\n\tconst focusGalleryCaption = () => {\n\t\tif ( ! isCaptionSelected ) {\n\t\t\tsetIsCaptionSelected( true );\n\t\t}\n\t};\n\n\tconst isFullWidth = align === WIDE_ALIGNMENTS.alignments.full;\n\n\treturn (\n\t\t<View style={ isFullWidth && styles.fullWidth }>\n\t\t\t{ resizeObserver }\n\t\t\t<View { ...innerBlocksProps } />\n\t\t\t<View\n\t\t\t\tstyle={ [\n\t\t\t\t\tisFullWidth && styles.fullWidth,\n\t\t\t\t\tstyles.galleryAppender,\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t\t<BlockCaption\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisSelected={ isCaptionSelected }\n\t\t\t\taccessible={ true }\n\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\tRichText.isEmpty( caption )\n\t\t\t\t\t\t? /* translators: accessibility text. Empty gallery caption. */\n\n\t\t\t\t\t\t 'Gallery caption. Empty'\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: accessibility text. %s: gallery caption. */\n\t\t\t\t\t\t\t\t__( 'Gallery caption. %s' ),\n\t\t\t\t\t\t\t\tcaption\n\t\t\t\t\t\t )\n\t\t\t\t}\n\t\t\t\tonFocus={ focusGalleryCaption }\n\t\t\t\tonBlur={ onBlur } // Always assign onBlur as props.\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nexport default Gallery;\n"],"mappings":"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"}
|
|
@@ -57,8 +57,8 @@ const metadata = {
|
|
|
57
57
|
attribute: "data-id"
|
|
58
58
|
},
|
|
59
59
|
caption: {
|
|
60
|
-
type: "
|
|
61
|
-
source: "
|
|
60
|
+
type: "rich-text",
|
|
61
|
+
source: "rich-text",
|
|
62
62
|
selector: ".blocks-gallery-item__caption"
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -83,8 +83,8 @@ const metadata = {
|
|
|
83
83
|
maximum: 8
|
|
84
84
|
},
|
|
85
85
|
caption: {
|
|
86
|
-
type: "
|
|
87
|
-
source: "
|
|
86
|
+
type: "rich-text",
|
|
87
|
+
source: "rich-text",
|
|
88
88
|
selector: ".blocks-gallery-caption"
|
|
89
89
|
},
|
|
90
90
|
imageCrop: {
|
|
@@ -16,7 +16,7 @@ import Tiles from './tiles';
|
|
|
16
16
|
* WordPress dependencies
|
|
17
17
|
*/
|
|
18
18
|
import { __, sprintf } from '@wordpress/i18n';
|
|
19
|
-
import { BlockCaption, store as blockEditorStore } from '@wordpress/block-editor';
|
|
19
|
+
import { BlockCaption, RichText, store as blockEditorStore } from '@wordpress/block-editor';
|
|
20
20
|
import { useState, useEffect } from '@wordpress/element';
|
|
21
21
|
import { mediaUploadSync } from '@wordpress/react-native-bridge';
|
|
22
22
|
import { useSelect } from '@wordpress/data';
|
|
@@ -115,7 +115,7 @@ export const Gallery = props => {
|
|
|
115
115
|
clientId: clientId,
|
|
116
116
|
isSelected: isCaptionSelected,
|
|
117
117
|
accessible: true,
|
|
118
|
-
accessibilityLabelCreator: caption =>
|
|
118
|
+
accessibilityLabelCreator: caption => RichText.isEmpty(caption) ? /* translators: accessibility text. Empty gallery caption. */
|
|
119
119
|
'Gallery caption. Empty' : sprintf( /* translators: accessibility text. %s: gallery caption. */
|
|
120
120
|
__('Gallery caption. %s'), caption),
|
|
121
121
|
onFocus: focusGalleryCaption,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","GalleryImage","defaultColumnsNumberV1","styles","Tiles","__","sprintf","BlockCaption","store","blockEditorStore","useState","useEffect","mediaUploadSync","useSelect","alignmentHelpers","TILE_SPACING","MAX_DISPLAYED_COLUMNS","MAX_DISPLAYED_COLUMNS_NARROW","isFullWidth","Gallery","props","isCaptionSelected","setIsCaptionSelected","isRTL","select","getSettings","clientId","selectedImage","mediaPlaceholder","onBlur","onMoveBackward","onMoveForward","onRemoveImage","onSelectImage","onSetImageAttributes","onFocusGalleryCaption","attributes","isSelected","isNarrow","onFocus","insertBlocksAfter","align","columns","imageCrop","images","displayedColumns","Math","min","selectImage","index","focusGalleryCaption","createElement","style","flex","spacing","galleryTilesContainerSelected","undefined","map","img","ariaLabel","length","key","id","url","alt","parseInt","isCropped","isFirstItem","isLastItem","isBlockSelected","onRemove","onSelect","onSelectBlock","setAttributes","attrs","caption","fullWidth","accessible","accessibilityLabelCreator"],"sources":["@wordpress/block-library/src/gallery/v1/gallery.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * Internal dependencies\n */\nimport GalleryImage from './gallery-image';\nimport { defaultColumnsNumberV1 } from '../deprecated';\nimport styles from './gallery-styles.scss';\nimport Tiles from './tiles';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockCaption,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useState, useEffect } from '@wordpress/element';\nimport { mediaUploadSync } from '@wordpress/react-native-bridge';\nimport { useSelect } from '@wordpress/data';\nimport { alignmentHelpers } from '@wordpress/components';\n\nconst TILE_SPACING = 15;\n\n// we must limit displayed columns since readable content max-width is 580px\nconst MAX_DISPLAYED_COLUMNS = 4;\nconst MAX_DISPLAYED_COLUMNS_NARROW = 2;\n\nconst { isFullWidth } = alignmentHelpers;\n\nexport const Gallery = ( props ) => {\n\tconst [ isCaptionSelected, setIsCaptionSelected ] = useState( false );\n\tuseEffect( mediaUploadSync, [] );\n\n\tconst isRTL = useSelect( ( select ) => {\n\t\treturn !! select( blockEditorStore ).getSettings().isRTL;\n\t}, [] );\n\n\tconst {\n\t\tclientId,\n\t\tselectedImage,\n\t\tmediaPlaceholder,\n\t\tonBlur,\n\t\tonMoveBackward,\n\t\tonMoveForward,\n\t\tonRemoveImage,\n\t\tonSelectImage,\n\t\tonSetImageAttributes,\n\t\tonFocusGalleryCaption,\n\t\tattributes,\n\t\tisSelected,\n\t\tisNarrow,\n\t\tonFocus,\n\t\tinsertBlocksAfter,\n\t} = props;\n\n\tconst {\n\t\talign,\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\timageCrop,\n\t\timages,\n\t} = attributes;\n\n\t// limit displayed columns when isNarrow is true (i.e. when viewport width is\n\t// less than \"small\", where small = 600)\n\tconst displayedColumns = isNarrow\n\t\t? Math.min( columns, MAX_DISPLAYED_COLUMNS_NARROW )\n\t\t: Math.min( columns, MAX_DISPLAYED_COLUMNS );\n\n\tconst selectImage = ( index ) => {\n\t\treturn () => {\n\t\t\tif ( isCaptionSelected ) {\n\t\t\t\tsetIsCaptionSelected( false );\n\t\t\t}\n\t\t\t// We need to fully invoke the curried function here.\n\t\t\tonSelectImage( index )();\n\t\t};\n\t};\n\n\tconst focusGalleryCaption = () => {\n\t\tif ( ! isCaptionSelected ) {\n\t\t\tsetIsCaptionSelected( true );\n\t\t}\n\t\tonFocusGalleryCaption();\n\t};\n\n\treturn (\n\t\t<View style={ { flex: 1 } }>\n\t\t\t<Tiles\n\t\t\t\tcolumns={ displayedColumns }\n\t\t\t\tspacing={ TILE_SPACING }\n\t\t\t\tstyle={\n\t\t\t\t\tisSelected\n\t\t\t\t\t\t? styles.galleryTilesContainerSelected\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ images.map( ( img, index ) => {\n\t\t\t\t\tconst ariaLabel = sprintf(\n\t\t\t\t\t\t/* translators: 1: the order number of the image. 2: the total number of images. */\n\t\t\t\t\t\t__( 'image %1$d of %2$d in gallery' ),\n\t\t\t\t\t\tindex + 1,\n\t\t\t\t\t\timages.length\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<GalleryImage\n\t\t\t\t\t\t\tkey={ img.id ? `${ img.id }-${ index }` : img.url }\n\t\t\t\t\t\t\turl={ img.url }\n\t\t\t\t\t\t\talt={ img.alt }\n\t\t\t\t\t\t\tid={ parseInt( img.id, 10 ) } // make id an integer explicitly\n\t\t\t\t\t\t\tisCropped={ imageCrop }\n\t\t\t\t\t\t\tisFirstItem={ index === 0 }\n\t\t\t\t\t\t\tisLastItem={ index + 1 === images.length }\n\t\t\t\t\t\t\tisSelected={ isSelected && selectedImage === index }\n\t\t\t\t\t\t\tisBlockSelected={ isSelected }\n\t\t\t\t\t\t\tonMoveBackward={ onMoveBackward( index ) }\n\t\t\t\t\t\t\tonMoveForward={ onMoveForward( index ) }\n\t\t\t\t\t\t\tonRemove={ onRemoveImage( index ) }\n\t\t\t\t\t\t\tonSelect={ selectImage( index ) }\n\t\t\t\t\t\t\tonSelectBlock={ onFocus }\n\t\t\t\t\t\t\tsetAttributes={ ( attrs ) =>\n\t\t\t\t\t\t\t\tonSetImageAttributes( index, attrs )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcaption={ img.caption }\n\t\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\t\tisRTL={ isRTL }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Tiles>\n\t\t\t<View style={ isFullWidth( align ) && styles.fullWidth }>\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t\t<BlockCaption\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisSelected={ isCaptionSelected }\n\t\t\t\taccessible={ true }\n\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\
|
|
1
|
+
{"version":3,"names":["View","GalleryImage","defaultColumnsNumberV1","styles","Tiles","__","sprintf","BlockCaption","RichText","store","blockEditorStore","useState","useEffect","mediaUploadSync","useSelect","alignmentHelpers","TILE_SPACING","MAX_DISPLAYED_COLUMNS","MAX_DISPLAYED_COLUMNS_NARROW","isFullWidth","Gallery","props","isCaptionSelected","setIsCaptionSelected","isRTL","select","getSettings","clientId","selectedImage","mediaPlaceholder","onBlur","onMoveBackward","onMoveForward","onRemoveImage","onSelectImage","onSetImageAttributes","onFocusGalleryCaption","attributes","isSelected","isNarrow","onFocus","insertBlocksAfter","align","columns","imageCrop","images","displayedColumns","Math","min","selectImage","index","focusGalleryCaption","createElement","style","flex","spacing","galleryTilesContainerSelected","undefined","map","img","ariaLabel","length","key","id","url","alt","parseInt","isCropped","isFirstItem","isLastItem","isBlockSelected","onRemove","onSelect","onSelectBlock","setAttributes","attrs","caption","fullWidth","accessible","accessibilityLabelCreator","isEmpty"],"sources":["@wordpress/block-library/src/gallery/v1/gallery.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * Internal dependencies\n */\nimport GalleryImage from './gallery-image';\nimport { defaultColumnsNumberV1 } from '../deprecated';\nimport styles from './gallery-styles.scss';\nimport Tiles from './tiles';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockCaption,\n\tRichText,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useState, useEffect } from '@wordpress/element';\nimport { mediaUploadSync } from '@wordpress/react-native-bridge';\nimport { useSelect } from '@wordpress/data';\nimport { alignmentHelpers } from '@wordpress/components';\n\nconst TILE_SPACING = 15;\n\n// we must limit displayed columns since readable content max-width is 580px\nconst MAX_DISPLAYED_COLUMNS = 4;\nconst MAX_DISPLAYED_COLUMNS_NARROW = 2;\n\nconst { isFullWidth } = alignmentHelpers;\n\nexport const Gallery = ( props ) => {\n\tconst [ isCaptionSelected, setIsCaptionSelected ] = useState( false );\n\tuseEffect( mediaUploadSync, [] );\n\n\tconst isRTL = useSelect( ( select ) => {\n\t\treturn !! select( blockEditorStore ).getSettings().isRTL;\n\t}, [] );\n\n\tconst {\n\t\tclientId,\n\t\tselectedImage,\n\t\tmediaPlaceholder,\n\t\tonBlur,\n\t\tonMoveBackward,\n\t\tonMoveForward,\n\t\tonRemoveImage,\n\t\tonSelectImage,\n\t\tonSetImageAttributes,\n\t\tonFocusGalleryCaption,\n\t\tattributes,\n\t\tisSelected,\n\t\tisNarrow,\n\t\tonFocus,\n\t\tinsertBlocksAfter,\n\t} = props;\n\n\tconst {\n\t\talign,\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\timageCrop,\n\t\timages,\n\t} = attributes;\n\n\t// limit displayed columns when isNarrow is true (i.e. when viewport width is\n\t// less than \"small\", where small = 600)\n\tconst displayedColumns = isNarrow\n\t\t? Math.min( columns, MAX_DISPLAYED_COLUMNS_NARROW )\n\t\t: Math.min( columns, MAX_DISPLAYED_COLUMNS );\n\n\tconst selectImage = ( index ) => {\n\t\treturn () => {\n\t\t\tif ( isCaptionSelected ) {\n\t\t\t\tsetIsCaptionSelected( false );\n\t\t\t}\n\t\t\t// We need to fully invoke the curried function here.\n\t\t\tonSelectImage( index )();\n\t\t};\n\t};\n\n\tconst focusGalleryCaption = () => {\n\t\tif ( ! isCaptionSelected ) {\n\t\t\tsetIsCaptionSelected( true );\n\t\t}\n\t\tonFocusGalleryCaption();\n\t};\n\n\treturn (\n\t\t<View style={ { flex: 1 } }>\n\t\t\t<Tiles\n\t\t\t\tcolumns={ displayedColumns }\n\t\t\t\tspacing={ TILE_SPACING }\n\t\t\t\tstyle={\n\t\t\t\t\tisSelected\n\t\t\t\t\t\t? styles.galleryTilesContainerSelected\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ images.map( ( img, index ) => {\n\t\t\t\t\tconst ariaLabel = sprintf(\n\t\t\t\t\t\t/* translators: 1: the order number of the image. 2: the total number of images. */\n\t\t\t\t\t\t__( 'image %1$d of %2$d in gallery' ),\n\t\t\t\t\t\tindex + 1,\n\t\t\t\t\t\timages.length\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<GalleryImage\n\t\t\t\t\t\t\tkey={ img.id ? `${ img.id }-${ index }` : img.url }\n\t\t\t\t\t\t\turl={ img.url }\n\t\t\t\t\t\t\talt={ img.alt }\n\t\t\t\t\t\t\tid={ parseInt( img.id, 10 ) } // make id an integer explicitly\n\t\t\t\t\t\t\tisCropped={ imageCrop }\n\t\t\t\t\t\t\tisFirstItem={ index === 0 }\n\t\t\t\t\t\t\tisLastItem={ index + 1 === images.length }\n\t\t\t\t\t\t\tisSelected={ isSelected && selectedImage === index }\n\t\t\t\t\t\t\tisBlockSelected={ isSelected }\n\t\t\t\t\t\t\tonMoveBackward={ onMoveBackward( index ) }\n\t\t\t\t\t\t\tonMoveForward={ onMoveForward( index ) }\n\t\t\t\t\t\t\tonRemove={ onRemoveImage( index ) }\n\t\t\t\t\t\t\tonSelect={ selectImage( index ) }\n\t\t\t\t\t\t\tonSelectBlock={ onFocus }\n\t\t\t\t\t\t\tsetAttributes={ ( attrs ) =>\n\t\t\t\t\t\t\t\tonSetImageAttributes( index, attrs )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcaption={ img.caption }\n\t\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\t\tisRTL={ isRTL }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Tiles>\n\t\t\t<View style={ isFullWidth( align ) && styles.fullWidth }>\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t\t<BlockCaption\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisSelected={ isCaptionSelected }\n\t\t\t\taccessible={ true }\n\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\tRichText.isEmpty( caption )\n\t\t\t\t\t\t? /* translators: accessibility text. Empty gallery caption. */\n\t\t\t\t\t\t 'Gallery caption. Empty'\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t/* translators: accessibility text. %s: gallery caption. */\n\t\t\t\t\t\t\t\t__( 'Gallery caption. %s' ),\n\t\t\t\t\t\t\t\tcaption\n\t\t\t\t\t\t )\n\t\t\t\t}\n\t\t\t\tonFocus={ focusGalleryCaption }\n\t\t\t\tonBlur={ onBlur } // Always assign onBlur as props.\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</View>\n\t);\n};\n\nexport default Gallery;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,cAAc;;AAEnC;AACA;AACA;AACA,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,SAASC,sBAAsB,QAAQ,eAAe;AACtD,OAAOC,MAAM,MAAM,uBAAuB;AAC1C,OAAOC,KAAK,MAAM,SAAS;;AAE3B;AACA;AACA;AACA,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SACCC,YAAY,EACZC,QAAQ,EACRC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,QAAQ,EAAEC,SAAS,QAAQ,oBAAoB;AACxD,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,gBAAgB,QAAQ,uBAAuB;AAExD,MAAMC,YAAY,GAAG,EAAE;;AAEvB;AACA,MAAMC,qBAAqB,GAAG,CAAC;AAC/B,MAAMC,4BAA4B,GAAG,CAAC;AAEtC,MAAM;EAAEC;AAAY,CAAC,GAAGJ,gBAAgB;AAExC,OAAO,MAAMK,OAAO,GAAKC,KAAK,IAAM;EACnC,MAAM,CAAEC,iBAAiB,EAAEC,oBAAoB,CAAE,GAAGZ,QAAQ,CAAE,KAAM,CAAC;EACrEC,SAAS,CAAEC,eAAe,EAAE,EAAG,CAAC;EAEhC,MAAMW,KAAK,GAAGV,SAAS,CAAIW,MAAM,IAAM;IACtC,OAAO,CAAC,CAAEA,MAAM,CAAEf,gBAAiB,CAAC,CAACgB,WAAW,CAAC,CAAC,CAACF,KAAK;EACzD,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IACLG,QAAQ;IACRC,aAAa;IACbC,gBAAgB;IAChBC,MAAM;IACNC,cAAc;IACdC,aAAa;IACbC,aAAa;IACbC,aAAa;IACbC,oBAAoB;IACpBC,qBAAqB;IACrBC,UAAU;IACVC,UAAU;IACVC,QAAQ;IACRC,OAAO;IACPC;EACD,CAAC,GAAGpB,KAAK;EAET,MAAM;IACLqB,KAAK;IACLC,OAAO,GAAGzC,sBAAsB,CAAEmC,UAAW,CAAC;IAC9CO,SAAS;IACTC;EACD,CAAC,GAAGR,UAAU;;EAEd;EACA;EACA,MAAMS,gBAAgB,GAAGP,QAAQ,GAC9BQ,IAAI,CAACC,GAAG,CAAEL,OAAO,EAAEzB,4BAA6B,CAAC,GACjD6B,IAAI,CAACC,GAAG,CAAEL,OAAO,EAAE1B,qBAAsB,CAAC;EAE7C,MAAMgC,WAAW,GAAKC,KAAK,IAAM;IAChC,OAAO,MAAM;MACZ,IAAK5B,iBAAiB,EAAG;QACxBC,oBAAoB,CAAE,KAAM,CAAC;MAC9B;MACA;MACAW,aAAa,CAAEgB,KAAM,CAAC,CAAC,CAAC;IACzB,CAAC;EACF,CAAC;EAED,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;IACjC,IAAK,CAAE7B,iBAAiB,EAAG;MAC1BC,oBAAoB,CAAE,IAAK,CAAC;IAC7B;IACAa,qBAAqB,CAAC,CAAC;EACxB,CAAC;EAED,OACCgB,aAAA,CAACpD,IAAI;IAACqD,KAAK,EAAG;MAAEC,IAAI,EAAE;IAAE;EAAG,GAC1BF,aAAA,CAAChD,KAAK;IACLuC,OAAO,EAAGG,gBAAkB;IAC5BS,OAAO,EAAGvC,YAAc;IACxBqC,KAAK,EACJf,UAAU,GACPnC,MAAM,CAACqD,6BAA6B,GACpCC;EACH,GAECZ,MAAM,CAACa,GAAG,CAAE,CAAEC,GAAG,EAAET,KAAK,KAAM;IAC/B,MAAMU,SAAS,GAAGtD,OAAO,EACxB;IACAD,EAAE,CAAE,+BAAgC,CAAC,EACrC6C,KAAK,GAAG,CAAC,EACTL,MAAM,CAACgB,MACR,CAAC;IAED,OACCT,aAAA,CAACnD,YAAY;MACZ6D,GAAG,EAAGH,GAAG,CAACI,EAAE,GAAI,GAAGJ,GAAG,CAACI,EAAI,IAAIb,KAAO,EAAC,GAAGS,GAAG,CAACK,GAAK;MACnDA,GAAG,EAAGL,GAAG,CAACK,GAAK;MACfC,GAAG,EAAGN,GAAG,CAACM,GAAK;MACfF,EAAE,EAAGG,QAAQ,CAAEP,GAAG,CAACI,EAAE,EAAE,EAAG,CAAG,CAAC;MAAA;MAC9BI,SAAS,EAAGvB,SAAW;MACvBwB,WAAW,EAAGlB,KAAK,KAAK,CAAG;MAC3BmB,UAAU,EAAGnB,KAAK,GAAG,CAAC,KAAKL,MAAM,CAACgB,MAAQ;MAC1CvB,UAAU,EAAGA,UAAU,IAAIV,aAAa,KAAKsB,KAAO;MACpDoB,eAAe,EAAGhC,UAAY;MAC9BP,cAAc,EAAGA,cAAc,CAAEmB,KAAM,CAAG;MAC1ClB,aAAa,EAAGA,aAAa,CAAEkB,KAAM,CAAG;MACxCqB,QAAQ,EAAGtC,aAAa,CAAEiB,KAAM,CAAG;MACnCsB,QAAQ,EAAGvB,WAAW,CAAEC,KAAM,CAAG;MACjCuB,aAAa,EAAGjC,OAAS;MACzBkC,aAAa,EAAKC,KAAK,IACtBxC,oBAAoB,CAAEe,KAAK,EAAEyB,KAAM,CACnC;MACDC,OAAO,EAAGjB,GAAG,CAACiB,OAAS;MACvB,cAAahB,SAAW;MACxBpC,KAAK,EAAGA;IAAO,CACf,CAAC;EAEJ,CAAE,CACI,CAAC,EACR4B,aAAA,CAACpD,IAAI;IAACqD,KAAK,EAAGlC,WAAW,CAAEuB,KAAM,CAAC,IAAIvC,MAAM,CAAC0E;EAAW,GACrDhD,gBACG,CAAC,EACPuB,aAAA,CAAC7C,YAAY;IACZoB,QAAQ,EAAGA,QAAU;IACrBW,UAAU,EAAGhB,iBAAmB;IAChCwD,UAAU,EAAG,IAAM;IACnBC,yBAAyB,EAAKH,OAAO,IACpCpE,QAAQ,CAACwE,OAAO,CAAEJ,OAAQ,CAAC,GACxB;IACA,wBAAwB,GACxBtE,OAAO,EACP;IACAD,EAAE,CAAE,qBAAsB,CAAC,EAC3BuE,OACA,CACH;IACDpC,OAAO,EAAGW,mBAAqB;IAC/BrB,MAAM,EAAGA,MAAQ,CAAC;IAAA;IAClBW,iBAAiB,EAAGA;EAAmB,CACvC,CACI,CAAC;AAET,CAAC;AAED,eAAerB,OAAO"}
|
|
@@ -5,6 +5,7 @@ import { createElement, Fragment } from "react";
|
|
|
5
5
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
6
6
|
import { InnerBlocks, useBlockProps, InspectorControls, useInnerBlocksProps, store as blockEditorStore } from '@wordpress/block-editor';
|
|
7
7
|
import { SelectControl } from '@wordpress/components';
|
|
8
|
+
import { useRef } from '@wordpress/element';
|
|
8
9
|
import { __ } from '@wordpress/i18n';
|
|
9
10
|
import { View } from '@wordpress/primitives';
|
|
10
11
|
|
|
@@ -101,7 +102,10 @@ function GroupEdit({
|
|
|
101
102
|
const layoutSupportEnabled = themeSupportsLayout || type === 'flex' || type === 'grid';
|
|
102
103
|
|
|
103
104
|
// Hooks.
|
|
104
|
-
const
|
|
105
|
+
const ref = useRef();
|
|
106
|
+
const blockProps = useBlockProps({
|
|
107
|
+
ref
|
|
108
|
+
});
|
|
105
109
|
const [showPlaceholder, setShowPlaceholder] = useShouldShowPlaceHolder({
|
|
106
110
|
attributes,
|
|
107
111
|
usedLayoutType: type,
|
|
@@ -124,6 +128,7 @@ function GroupEdit({
|
|
|
124
128
|
const innerBlocksProps = useInnerBlocksProps(layoutSupportEnabled ? blockProps : {
|
|
125
129
|
className: 'wp-block-group__inner-container'
|
|
126
130
|
}, {
|
|
131
|
+
dropZoneElement: ref.current,
|
|
127
132
|
templateLock,
|
|
128
133
|
allowedBlocks,
|
|
129
134
|
renderAppender
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDispatch","useSelect","InnerBlocks","useBlockProps","InspectorControls","useInnerBlocksProps","store","blockEditorStore","SelectControl","__","View","GroupPlaceHolder","useShouldShowPlaceHolder","GroupEditControls","tagName","onSelectTagName","htmlElementMessages","header","main","section","article","aside","footer","createElement","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help","GroupEdit","attributes","name","setAttributes","clientId","hasInnerBlocks","themeSupportsLayout","select","getBlock","getSettings","block","innerBlocks","length","supportsLayout","TagName","templateLock","allowedBlocks","layout","type","layoutSupportEnabled","blockProps","showPlaceholder","setShowPlaceholder","usedLayoutType","renderAppender","ButtonBlockAppender","innerBlocksProps","className","selectBlock","selectVariation","nextVariation","Fragment","children","onSelect"],"sources":["@wordpress/block-library/src/group/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tInnerBlocks,\n\tuseBlockProps,\n\tInspectorControls,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { View } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport GroupPlaceHolder, { useShouldShowPlaceHolder } from './placeholder';\n\n/**\n * Render inspector controls for the Group block.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The HTML tag name.\n * @param {Function} props.onSelectTagName onChange function for the SelectControl.\n *\n * @return {JSX.Element} The control group.\n */\nfunction GroupEditControls( { tagName, onSelectTagName } ) {\n\tconst htmlElementMessages = {\n\t\theader: __(\n\t\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t\t),\n\t\tmain: __(\n\t\t\t'The <main> element should be used for the primary content of your document only. '\n\t\t),\n\t\tsection: __(\n\t\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t\t),\n\t\tarticle: __(\n\t\t\t'The <article> element should represent a self-contained, syndicatable portion of the document.'\n\t\t),\n\t\taside: __(\n\t\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t\t),\n\t\tfooter: __(\n\t\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t\t),\n\t};\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t] }\n\t\t\t\tvalue={ tagName }\n\t\t\t\tonChange={ onSelectTagName }\n\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nfunction GroupEdit( { attributes, name, setAttributes, clientId } ) {\n\tconst { hasInnerBlocks, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getSettings } = select( blockEditorStore );\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: !! ( block && block.innerBlocks.length ),\n\t\t\t\tthemeSupportsLayout: getSettings()?.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\ttagName: TagName = 'div',\n\t\ttemplateLock,\n\t\tallowedBlocks,\n\t\tlayout = {},\n\t} = attributes;\n\n\t// Layout settings.\n\tconst { type = 'default' } = layout;\n\tconst layoutSupportEnabled =\n\t\tthemeSupportsLayout || type === 'flex' || type === 'grid';\n\n\t// Hooks.\n\tconst blockProps = useBlockProps();\n\n\tconst [ showPlaceholder, setShowPlaceholder ] = useShouldShowPlaceHolder( {\n\t\tattributes,\n\t\tusedLayoutType: type,\n\t\thasInnerBlocks,\n\t} );\n\n\t// Default to the regular appender being rendered.\n\tlet renderAppender;\n\tif ( showPlaceholder ) {\n\t\t// In the placeholder state, ensure the appender is not rendered.\n\t\t// This is needed because `...innerBlocksProps` is used in the placeholder\n\t\t// state so that blocks can dragged onto the placeholder area\n\t\t// from both the list view and in the editor canvas.\n\t\trenderAppender = false;\n\t} else if ( ! hasInnerBlocks ) {\n\t\t// When there is no placeholder, but the block is also empty,\n\t\t// use the larger button appender.\n\t\trenderAppender = InnerBlocks.ButtonBlockAppender;\n\t}\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\tlayoutSupportEnabled\n\t\t\t? blockProps\n\t\t\t: { className: 'wp-block-group__inner-container' },\n\t\t{\n\t\t\ttemplateLock,\n\t\t\tallowedBlocks,\n\t\t\trenderAppender,\n\t\t}\n\t);\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\tconst selectVariation = ( nextVariation ) => {\n\t\tsetAttributes( nextVariation.attributes );\n\t\tselectBlock( clientId, -1 );\n\t\tsetShowPlaceholder( false );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GroupEditControls\n\t\t\t\ttagName={ TagName }\n\t\t\t\tonSelectTagName={ ( value ) =>\n\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ showPlaceholder && (\n\t\t\t\t<View>\n\t\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t\t<GroupPlaceHolder\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tonSelect={ selectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t) }\n\t\t\t{ layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...innerBlocksProps } />\n\t\t\t) }\n\t\t\t{ /* Ideally this is not needed but it's there for backward compatibility reason\n\t\t\t\tto keep this div for themes that might rely on its presence */ }\n\t\t\t{ ! layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t</TagName>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default GroupEdit;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SACCC,WAAW,EACXC,aAAa,EACbC,iBAAiB,EACjBC,mBAAmB,EACnBC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,QAAQ,uBAAuB;;AAE5C;AACA;AACA;AACA,OAAOC,gBAAgB,IAAIC,wBAAwB,QAAQ,eAAe;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAAE;EAAEC,OAAO;EAAEC;AAAgB,CAAC,EAAG;EAC1D,MAAMC,mBAAmB,GAAG;IAC3BC,MAAM,EAAER,EAAE,CACT,qHACD,CAAC;IACDS,IAAI,EAAET,EAAE,CACP,mFACD,CAAC;IACDU,OAAO,EAAEV,EAAE,CACV,kIACD,CAAC;IACDW,OAAO,EAAEX,EAAE,CACV,gGACD,CAAC;IACDY,KAAK,EAAEZ,EAAE,CACR,uIACD,CAAC;IACDa,MAAM,EAAEb,EAAE,CACT,8HACD;EACD,CAAC;EACD,OACCc,aAAA,CAACnB,iBAAiB;IAACoB,KAAK,EAAC;EAAU,GAClCD,aAAA,CAACf,aAAa;IACbiB,uBAAuB;IACvBC,qBAAqB;IACrBC,KAAK,EAAGlB,EAAE,CAAE,cAAe,CAAG;IAC9BmB,OAAO,EAAG,CACT;MAAED,KAAK,EAAElB,EAAE,CAAE,iBAAkB,CAAC;MAAEoB,KAAK,EAAE;IAAM,CAAC,EAChD;MAAEF,KAAK,EAAE,UAAU;MAAEE,KAAK,EAAE;IAAS,CAAC,EACtC;MAAEF,KAAK,EAAE,QAAQ;MAAEE,KAAK,EAAE;IAAO,CAAC,EAClC;MAAEF,KAAK,EAAE,WAAW;MAAEE,KAAK,EAAE;IAAU,CAAC,EACxC;MAAEF,KAAK,EAAE,WAAW;MAAEE,KAAK,EAAE;IAAU,CAAC,EACxC;MAAEF,KAAK,EAAE,SAAS;MAAEE,KAAK,EAAE;IAAQ,CAAC,EACpC;MAAEF,KAAK,EAAE,UAAU;MAAEE,KAAK,EAAE;IAAS,CAAC,CACpC;IACHA,KAAK,EAAGf,OAAS;IACjBgB,QAAQ,EAAGf,eAAiB;IAC5BgB,IAAI,EAAGf,mBAAmB,CAAEF,OAAO;EAAI,CACvC,CACiB,CAAC;AAEtB;AAEA,SAASkB,SAASA,CAAE;EAAEC,UAAU;EAAEC,IAAI;EAAEC,aAAa;EAAEC;AAAS,CAAC,EAAG;EACnE,MAAM;IAAEC,cAAc;IAAEC;EAAoB,CAAC,GAAGrC,SAAS,CACtDsC,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC;IAAY,CAAC,GAAGF,MAAM,CAAEhC,gBAAiB,CAAC;IAC5D,MAAMmC,KAAK,GAAGF,QAAQ,CAAEJ,QAAS,CAAC;IAClC,OAAO;MACNC,cAAc,EAAE,CAAC,EAAIK,KAAK,IAAIA,KAAK,CAACC,WAAW,CAACC,MAAM,CAAE;MACxDN,mBAAmB,EAAEG,WAAW,CAAC,CAAC,EAAEI;IACrC,CAAC;EACF,CAAC,EACD,CAAET,QAAQ,CACX,CAAC;EAED,MAAM;IACLtB,OAAO,EAAEgC,OAAO,GAAG,KAAK;IACxBC,YAAY;IACZC,aAAa;IACbC,MAAM,GAAG,CAAC;EACX,CAAC,GAAGhB,UAAU;;EAEd;EACA,MAAM;IAAEiB,IAAI,GAAG;EAAU,CAAC,GAAGD,MAAM;EACnC,MAAME,oBAAoB,GACzBb,mBAAmB,IAAIY,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,MAAM;;EAE1D;EACA,MAAME,UAAU,GAAGjD,aAAa,CAAC,CAAC;EAElC,MAAM,CAAEkD,eAAe,EAAEC,kBAAkB,CAAE,GAAG1C,wBAAwB,CAAE;IACzEqB,UAAU;IACVsB,cAAc,EAAEL,IAAI;IACpBb;EACD,CAAE,CAAC;;EAEH;EACA,IAAImB,cAAc;EAClB,IAAKH,eAAe,EAAG;IACtB;IACA;IACA;IACA;IACAG,cAAc,GAAG,KAAK;EACvB,CAAC,MAAM,IAAK,CAAEnB,cAAc,EAAG;IAC9B;IACA;IACAmB,cAAc,GAAGtD,WAAW,CAACuD,mBAAmB;EACjD;EAEA,MAAMC,gBAAgB,GAAGrD,mBAAmB,CAC3C8C,oBAAoB,GACjBC,UAAU,GACV;IAAEO,SAAS,EAAE;EAAkC,CAAC,EACnD;IACCZ,YAAY;IACZC,aAAa;IACbQ;EACD,CACD,CAAC;EAED,MAAM;IAAEI;EAAY,CAAC,GAAG5D,WAAW,CAAEO,gBAAiB,CAAC;EAEvD,MAAMsD,eAAe,GAAKC,aAAa,IAAM;IAC5C3B,aAAa,CAAE2B,aAAa,CAAC7B,UAAW,CAAC;IACzC2B,WAAW,CAAExB,QAAQ,EAAE,CAAC,CAAE,CAAC;IAC3BkB,kBAAkB,CAAE,KAAM,CAAC;EAC5B,CAAC;EAED,OACC/B,aAAA,CAAAwC,QAAA,QACCxC,aAAA,CAACV,iBAAiB;IACjBC,OAAO,EAAGgC,OAAS;IACnB/B,eAAe,EAAKc,KAAK,IACxBM,aAAa,CAAE;MAAErB,OAAO,EAAEe;IAAM,CAAE;EAClC,CACD,CAAC,EACAwB,eAAe,IAChB9B,aAAA,CAACb,IAAI,QACFgD,gBAAgB,CAACM,QAAQ,EAC3BzC,aAAA,CAACZ,gBAAgB;IAChBuB,IAAI,EAAGA,IAAM;IACb+B,QAAQ,EAAGJ;EAAiB,CAC5B,CACI,CACN,EACCV,oBAAoB,IAAI,CAAEE,eAAe,IAC1C9B,aAAA,CAACuB,OAAO;IAAA,GAAMY;EAAgB,CAAI,CAClC,EAGC,CAAEP,oBAAoB,IAAI,CAAEE,eAAe,IAC5C9B,aAAA,CAACuB,OAAO;IAAA,GAAMM;EAAU,GACvB7B,aAAA;IAAA,GAAUmC;EAAgB,CAAI,CACtB,CAET,CAAC;AAEL;AAEA,eAAe1B,SAAS"}
|
|
1
|
+
{"version":3,"names":["useDispatch","useSelect","InnerBlocks","useBlockProps","InspectorControls","useInnerBlocksProps","store","blockEditorStore","SelectControl","useRef","__","View","GroupPlaceHolder","useShouldShowPlaceHolder","GroupEditControls","tagName","onSelectTagName","htmlElementMessages","header","main","section","article","aside","footer","createElement","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help","GroupEdit","attributes","name","setAttributes","clientId","hasInnerBlocks","themeSupportsLayout","select","getBlock","getSettings","block","innerBlocks","length","supportsLayout","TagName","templateLock","allowedBlocks","layout","type","layoutSupportEnabled","ref","blockProps","showPlaceholder","setShowPlaceholder","usedLayoutType","renderAppender","ButtonBlockAppender","innerBlocksProps","className","dropZoneElement","current","selectBlock","selectVariation","nextVariation","Fragment","children","onSelect"],"sources":["@wordpress/block-library/src/group/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tInnerBlocks,\n\tuseBlockProps,\n\tInspectorControls,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { View } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport GroupPlaceHolder, { useShouldShowPlaceHolder } from './placeholder';\n\n/**\n * Render inspector controls for the Group block.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The HTML tag name.\n * @param {Function} props.onSelectTagName onChange function for the SelectControl.\n *\n * @return {JSX.Element} The control group.\n */\nfunction GroupEditControls( { tagName, onSelectTagName } ) {\n\tconst htmlElementMessages = {\n\t\theader: __(\n\t\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t\t),\n\t\tmain: __(\n\t\t\t'The <main> element should be used for the primary content of your document only. '\n\t\t),\n\t\tsection: __(\n\t\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t\t),\n\t\tarticle: __(\n\t\t\t'The <article> element should represent a self-contained, syndicatable portion of the document.'\n\t\t),\n\t\taside: __(\n\t\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t\t),\n\t\tfooter: __(\n\t\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t\t),\n\t};\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t] }\n\t\t\t\tvalue={ tagName }\n\t\t\t\tonChange={ onSelectTagName }\n\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nfunction GroupEdit( { attributes, name, setAttributes, clientId } ) {\n\tconst { hasInnerBlocks, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getSettings } = select( blockEditorStore );\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: !! ( block && block.innerBlocks.length ),\n\t\t\t\tthemeSupportsLayout: getSettings()?.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\ttagName: TagName = 'div',\n\t\ttemplateLock,\n\t\tallowedBlocks,\n\t\tlayout = {},\n\t} = attributes;\n\n\t// Layout settings.\n\tconst { type = 'default' } = layout;\n\tconst layoutSupportEnabled =\n\t\tthemeSupportsLayout || type === 'flex' || type === 'grid';\n\n\t// Hooks.\n\tconst ref = useRef();\n\tconst blockProps = useBlockProps( { ref } );\n\n\tconst [ showPlaceholder, setShowPlaceholder ] = useShouldShowPlaceHolder( {\n\t\tattributes,\n\t\tusedLayoutType: type,\n\t\thasInnerBlocks,\n\t} );\n\n\t// Default to the regular appender being rendered.\n\tlet renderAppender;\n\tif ( showPlaceholder ) {\n\t\t// In the placeholder state, ensure the appender is not rendered.\n\t\t// This is needed because `...innerBlocksProps` is used in the placeholder\n\t\t// state so that blocks can dragged onto the placeholder area\n\t\t// from both the list view and in the editor canvas.\n\t\trenderAppender = false;\n\t} else if ( ! hasInnerBlocks ) {\n\t\t// When there is no placeholder, but the block is also empty,\n\t\t// use the larger button appender.\n\t\trenderAppender = InnerBlocks.ButtonBlockAppender;\n\t}\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\tlayoutSupportEnabled\n\t\t\t? blockProps\n\t\t\t: { className: 'wp-block-group__inner-container' },\n\t\t{\n\t\t\tdropZoneElement: ref.current,\n\t\t\ttemplateLock,\n\t\t\tallowedBlocks,\n\t\t\trenderAppender,\n\t\t}\n\t);\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\tconst selectVariation = ( nextVariation ) => {\n\t\tsetAttributes( nextVariation.attributes );\n\t\tselectBlock( clientId, -1 );\n\t\tsetShowPlaceholder( false );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GroupEditControls\n\t\t\t\ttagName={ TagName }\n\t\t\t\tonSelectTagName={ ( value ) =>\n\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ showPlaceholder && (\n\t\t\t\t<View>\n\t\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t\t<GroupPlaceHolder\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tonSelect={ selectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t) }\n\t\t\t{ layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...innerBlocksProps } />\n\t\t\t) }\n\t\t\t{ /* Ideally this is not needed but it's there for backward compatibility reason\n\t\t\t\tto keep this div for themes that might rely on its presence */ }\n\t\t\t{ ! layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t</TagName>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default GroupEdit;\n"],"mappings":"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"}
|