@wordpress/block-library 9.1.0 → 9.3.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 +21 -17
- package/build/audio/edit.js +20 -8
- package/build/audio/edit.js.map +1 -1
- package/build/audio/index.js +4 -0
- package/build/audio/index.js.map +1 -1
- package/build/audio/transforms.js +1 -1
- package/build/audio/transforms.js.map +1 -1
- package/build/block/edit.js +0 -1
- package/build/block/edit.js.map +1 -1
- package/build/block/index.js +5 -1
- package/build/block/index.js.map +1 -1
- package/build/button/index.js +1 -0
- package/build/button/index.js.map +1 -1
- package/build/embed/embed-preview.js +4 -4
- package/build/embed/embed-preview.js.map +1 -1
- package/build/file/edit.js +14 -6
- package/build/file/edit.js.map +1 -1
- package/build/file/index.js +4 -0
- package/build/file/index.js.map +1 -1
- package/build/file/transforms.js +2 -3
- package/build/file/transforms.js.map +1 -1
- package/build/gallery/deprecated.js +6 -54
- package/build/gallery/deprecated.js.map +1 -1
- package/build/gallery/edit.js +9 -8
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/index.js +2 -2
- package/build/gallery/index.js.map +1 -1
- package/build/gallery/save.js +0 -11
- package/build/gallery/save.js.map +1 -1
- package/build/gallery/shared.js +0 -27
- package/build/gallery/shared.js.map +1 -1
- package/build/gallery/transforms.js +29 -80
- package/build/gallery/transforms.js.map +1 -1
- package/build/group/index.js +1 -0
- package/build/group/index.js.map +1 -1
- package/build/group/placeholder.js +5 -0
- package/build/group/placeholder.js.map +1 -1
- package/build/image/edit.js +13 -21
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +33 -19
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +4 -0
- package/build/image/index.js.map +1 -1
- package/build/image/transforms.js +1 -1
- package/build/image/transforms.js.map +1 -1
- package/build/list-item/edit.js +1 -1
- package/build/list-item/edit.js.map +1 -1
- package/build/list-item/hooks/use-merge.js +8 -1
- package/build/list-item/hooks/use-merge.js.map +1 -1
- package/build/list-item/index.js +11 -1
- package/build/list-item/index.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/loginout/index.js +3 -0
- package/build/loginout/index.js.map +1 -1
- package/build/media-text/edit.js +3 -2
- package/build/media-text/edit.js.map +1 -1
- package/build/navigation-submenu/edit.js +1 -1
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +1 -1
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/page-list/edit.js +1 -1
- package/build/page-list/edit.js.map +1 -1
- package/build/post-content/index.js +3 -0
- package/build/post-content/index.js.map +1 -1
- package/build/post-date/edit.js +3 -1
- package/build/post-date/edit.js.map +1 -1
- package/build/post-excerpt/index.js +3 -0
- package/build/post-excerpt/index.js.map +1 -1
- package/build/post-title/index.js +3 -0
- package/build/post-title/index.js.map +1 -1
- package/build/query/edit/inspector-controls/index.js +3 -2
- package/build/query/edit/inspector-controls/index.js.map +1 -1
- package/build/query/edit/query-toolbar.js +54 -61
- package/build/query/edit/query-toolbar.js.map +1 -1
- package/build/query/index.js +34 -0
- package/build/query/index.js.map +1 -1
- package/build/quote/edit.js +1 -0
- package/build/quote/edit.js.map +1 -1
- package/build/site-tagline/index.js +1 -0
- package/build/site-tagline/index.js.map +1 -1
- package/build/site-title/index.js +1 -0
- package/build/site-title/index.js.map +1 -1
- package/build/social-link/edit.js +9 -3
- package/build/social-link/edit.js.map +1 -1
- package/build/table/edit.js +8 -17
- package/build/table/edit.js.map +1 -1
- package/build/table-of-contents/index.js +1 -1
- package/build/template-part/edit/title-modal.js +1 -1
- package/build/template-part/edit/title-modal.js.map +1 -1
- package/build/utils/caption.js +2 -1
- package/build/utils/caption.js.map +1 -1
- package/build/utils/hooks.js +12 -0
- package/build/utils/hooks.js.map +1 -1
- package/build/verse/index.js +1 -0
- package/build/verse/index.js.map +1 -1
- package/build/video/deprecated.js +4 -0
- package/build/video/deprecated.js.map +1 -1
- package/build/video/edit.js +17 -7
- package/build/video/edit.js.map +1 -1
- package/build/video/index.js +4 -0
- package/build/video/index.js.map +1 -1
- package/build/video/transforms.js +1 -1
- package/build/video/transforms.js.map +1 -1
- package/build-module/audio/edit.js +20 -8
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/index.js +4 -0
- package/build-module/audio/index.js.map +1 -1
- package/build-module/audio/transforms.js +1 -1
- package/build-module/audio/transforms.js.map +1 -1
- package/build-module/block/edit.js +0 -1
- package/build-module/block/edit.js.map +1 -1
- package/build-module/block/index.js +5 -1
- package/build-module/block/index.js.map +1 -1
- package/build-module/button/index.js +1 -0
- package/build-module/button/index.js.map +1 -1
- package/build-module/embed/embed-preview.js +4 -4
- package/build-module/embed/embed-preview.js.map +1 -1
- package/build-module/file/edit.js +15 -7
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/index.js +4 -0
- package/build-module/file/index.js.map +1 -1
- package/build-module/file/transforms.js +2 -3
- package/build-module/file/transforms.js.map +1 -1
- package/build-module/gallery/deprecated.js +6 -54
- package/build-module/gallery/deprecated.js.map +1 -1
- package/build-module/gallery/edit.js +10 -9
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/index.js +1 -1
- package/build-module/gallery/index.js.map +1 -1
- package/build-module/gallery/save.js +0 -11
- package/build-module/gallery/save.js.map +1 -1
- package/build-module/gallery/shared.js +0 -25
- package/build-module/gallery/shared.js.map +1 -1
- package/build-module/gallery/transforms.js +29 -80
- package/build-module/gallery/transforms.js.map +1 -1
- package/build-module/group/index.js +1 -0
- package/build-module/group/index.js.map +1 -1
- package/build-module/group/placeholder.js +5 -0
- package/build-module/group/placeholder.js.map +1 -1
- package/build-module/image/edit.js +12 -20
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +28 -14
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +4 -0
- package/build-module/image/index.js.map +1 -1
- package/build-module/image/transforms.js +1 -1
- package/build-module/image/transforms.js.map +1 -1
- package/build-module/list-item/edit.js +1 -1
- package/build-module/list-item/edit.js.map +1 -1
- package/build-module/list-item/hooks/use-merge.js +8 -1
- package/build-module/list-item/hooks/use-merge.js.map +1 -1
- package/build-module/list-item/index.js +11 -1
- package/build-module/list-item/index.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/loginout/index.js +3 -0
- package/build-module/loginout/index.js.map +1 -1
- package/build-module/media-text/edit.js +3 -2
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +1 -1
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +1 -1
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/page-list/edit.js +1 -1
- package/build-module/page-list/edit.js.map +1 -1
- package/build-module/post-content/index.js +3 -0
- package/build-module/post-content/index.js.map +1 -1
- package/build-module/post-date/edit.js +4 -2
- package/build-module/post-date/edit.js.map +1 -1
- package/build-module/post-excerpt/index.js +3 -0
- package/build-module/post-excerpt/index.js.map +1 -1
- package/build-module/post-title/index.js +3 -0
- package/build-module/post-title/index.js.map +1 -1
- package/build-module/query/edit/inspector-controls/index.js +3 -2
- package/build-module/query/edit/inspector-controls/index.js.map +1 -1
- package/build-module/query/edit/query-toolbar.js +55 -62
- package/build-module/query/edit/query-toolbar.js.map +1 -1
- package/build-module/query/index.js +34 -0
- package/build-module/query/index.js.map +1 -1
- package/build-module/quote/edit.js +1 -0
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/site-tagline/index.js +1 -0
- package/build-module/site-tagline/index.js.map +1 -1
- package/build-module/site-title/index.js +1 -0
- package/build-module/site-title/index.js.map +1 -1
- package/build-module/social-link/edit.js +9 -3
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/table/edit.js +9 -18
- package/build-module/table/edit.js.map +1 -1
- package/build-module/table-of-contents/index.js +1 -1
- package/build-module/template-part/edit/title-modal.js +1 -1
- package/build-module/template-part/edit/title-modal.js.map +1 -1
- package/build-module/utils/caption.js +2 -1
- package/build-module/utils/caption.js.map +1 -1
- package/build-module/utils/hooks.js +11 -0
- package/build-module/utils/hooks.js.map +1 -1
- package/build-module/verse/index.js +1 -0
- package/build-module/verse/index.js.map +1 -1
- package/build-module/video/deprecated.js +4 -0
- package/build-module/video/deprecated.js.map +1 -1
- package/build-module/video/edit.js +18 -8
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/index.js +4 -0
- package/build-module/video/index.js.map +1 -1
- package/build-module/video/transforms.js +1 -1
- package/build-module/video/transforms.js.map +1 -1
- package/build-style/audio/style-rtl.css +1 -1
- package/build-style/audio/style.css +1 -1
- package/build-style/audio/theme-rtl.css +2 -2
- package/build-style/audio/theme.css +2 -2
- package/build-style/common-rtl.css +1 -3
- package/build-style/common.css +1 -3
- package/build-style/editor-rtl.css +3 -12
- package/build-style/editor.css +3 -12
- package/build-style/embed/style-rtl.css +1 -1
- package/build-style/embed/style.css +1 -1
- package/build-style/embed/theme-rtl.css +2 -2
- package/build-style/embed/theme.css +2 -2
- package/build-style/image/editor-rtl.css +0 -12
- package/build-style/image/editor.css +0 -12
- package/build-style/image/style-rtl.css +7 -1
- package/build-style/image/style.css +7 -1
- package/build-style/media-text/style-rtl.css +4 -0
- package/build-style/media-text/style.css +4 -0
- package/build-style/navigation/style-rtl.css +1 -0
- package/build-style/navigation/style.css +1 -0
- package/build-style/post-comments-form/style-rtl.css +11 -10
- package/build-style/post-comments-form/style.css +11 -10
- package/build-style/query/editor-rtl.css +3 -0
- package/build-style/query/editor.css +3 -0
- package/build-style/reset-rtl.css +1 -5
- package/build-style/reset.css +1 -5
- package/build-style/search/style-rtl.css +1 -2
- package/build-style/search/style.css +1 -2
- package/build-style/social-links/style-rtl.css +91 -91
- package/build-style/social-links/style.css +91 -91
- package/build-style/style-rtl.css +119 -110
- package/build-style/style.css +119 -110
- package/build-style/table/theme-rtl.css +2 -2
- package/build-style/table/theme.css +2 -2
- package/build-style/theme-rtl.css +8 -8
- package/build-style/theme.css +8 -8
- package/build-style/video/style-rtl.css +1 -1
- package/build-style/video/style.css +1 -1
- package/build-style/video/theme-rtl.css +2 -2
- package/build-style/video/theme.css +2 -2
- package/package.json +35 -35
- package/src/audio/block.json +4 -0
- package/src/audio/edit.js +19 -7
- package/src/audio/style.scss +1 -1
- package/src/audio/theme.scss +1 -1
- package/src/audio/transforms.js +1 -1
- package/src/block/block.json +5 -1
- package/src/block/edit.js +0 -1
- package/src/button/block.json +1 -0
- package/src/button/index.php +14 -1
- package/src/embed/embed-preview.js +4 -6
- package/src/embed/style.scss +1 -1
- package/src/embed/theme.scss +1 -1
- package/src/file/block.json +4 -0
- package/src/file/edit.js +19 -6
- package/src/file/transforms.js +1 -2
- package/src/gallery/deprecated.js +6 -55
- package/src/gallery/edit.js +13 -10
- package/src/gallery/gallery-styles.native.scss +0 -2
- package/src/gallery/index.js +1 -1
- package/src/gallery/save.js +0 -10
- package/src/gallery/shared.js +0 -28
- package/src/gallery/transforms.js +56 -99
- package/src/group/block.json +1 -0
- package/src/group/placeholder.js +7 -0
- package/src/image/block.json +4 -0
- package/src/image/edit.js +10 -19
- package/src/image/editor.scss +0 -13
- package/src/image/image.js +45 -16
- package/src/image/index.php +26 -5
- package/src/image/style.scss +11 -1
- package/src/image/transforms.js +1 -1
- package/src/list-item/block.json +11 -1
- package/src/list-item/edit.js +1 -1
- package/src/list-item/hooks/use-merge.js +19 -5
- package/src/lock-unlock.js +1 -1
- package/src/loginout/block.json +3 -0
- package/src/media-text/edit.js +3 -2
- package/src/media-text/index.php +68 -18
- package/src/media-text/style.scss +4 -0
- package/src/navigation/index.php +5 -3
- package/src/navigation/style.scss +1 -0
- package/src/navigation-submenu/edit.js +1 -1
- package/src/page-list/convert-to-links-modal.js +1 -1
- package/src/page-list/edit.js +1 -1
- package/src/paragraph/test/__snapshots__/edit.native.js.snap +30 -0
- package/src/paragraph/test/edit.native.js +99 -0
- package/src/post-comments-form/style.scss +15 -12
- package/src/post-content/block.json +3 -0
- package/src/post-date/edit.js +5 -1
- package/src/post-date/index.php +9 -3
- package/src/post-excerpt/block.json +3 -0
- package/src/post-title/block.json +3 -0
- package/src/query/edit/inspector-controls/index.js +3 -2
- package/src/query/edit/query-toolbar.js +60 -72
- package/src/query/editor.scss +4 -0
- package/src/query/index.js +40 -0
- package/src/quote/edit.js +1 -0
- package/src/reset.scss +11 -12
- package/src/site-tagline/block.json +1 -0
- package/src/site-title/block.json +1 -0
- package/src/social-link/edit.js +9 -3
- package/src/social-links/style.scss +2 -2
- package/src/table/edit.js +11 -24
- package/src/table/theme.scss +1 -1
- package/src/table-of-contents/block.json +1 -1
- package/src/template-part/edit/title-modal.js +1 -1
- package/src/template-part/index.php +1 -1
- package/src/utils/caption.js +5 -1
- package/src/utils/hooks.js +14 -1
- package/src/verse/block.json +1 -0
- package/src/video/block.json +4 -0
- package/src/video/edit.js +23 -8
- package/src/video/style.scss +1 -1
- package/src/video/theme.scss +1 -1
- package/src/video/transforms.js +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/gallery/edit-wrapper.js +0 -37
- package/build/gallery/edit-wrapper.js.map +0 -1
- package/build/gallery/v1/constants.js +0 -10
- package/build/gallery/v1/constants.js.map +0 -1
- package/build/gallery/v1/edit.js +0 -399
- package/build/gallery/v1/edit.js.map +0 -1
- package/build/gallery/v1/gallery-button.native.js +0 -55
- package/build/gallery/v1/gallery-button.native.js.map +0 -1
- package/build/gallery/v1/gallery-image.js +0 -285
- package/build/gallery/v1/gallery-image.js.map +0 -1
- package/build/gallery/v1/gallery-image.native.js +0 -297
- package/build/gallery/v1/gallery-image.native.js.map +0 -1
- package/build/gallery/v1/gallery.js +0 -112
- package/build/gallery/v1/gallery.js.map +0 -1
- package/build/gallery/v1/gallery.native.js +0 -139
- package/build/gallery/v1/gallery.native.js.map +0 -1
- package/build/gallery/v1/save.js +0 -81
- package/build/gallery/v1/save.js.map +0 -1
- package/build/gallery/v1/shared.js +0 -17
- package/build/gallery/v1/shared.js.map +0 -1
- package/build/gallery/v1/tiles.native.js +0 -83
- package/build/gallery/v1/tiles.native.js.map +0 -1
- package/build/utils/constants.js +0 -15
- package/build/utils/constants.js.map +0 -1
- package/build-module/gallery/edit-wrapper.js +0 -31
- package/build-module/gallery/edit-wrapper.js.map +0 -1
- package/build-module/gallery/v1/constants.js +0 -4
- package/build-module/gallery/v1/constants.js.map +0 -1
- package/build-module/gallery/v1/edit.js +0 -393
- package/build-module/gallery/v1/edit.js.map +0 -1
- package/build-module/gallery/v1/gallery-button.native.js +0 -46
- package/build-module/gallery/v1/gallery-button.native.js.map +0 -1
- package/build-module/gallery/v1/gallery-image.js +0 -279
- package/build-module/gallery/v1/gallery-image.js.map +0 -1
- package/build-module/gallery/v1/gallery-image.native.js +0 -291
- package/build-module/gallery/v1/gallery-image.native.js.map +0 -1
- package/build-module/gallery/v1/gallery.js +0 -104
- package/build-module/gallery/v1/gallery.js.map +0 -1
- package/build-module/gallery/v1/gallery.native.js +0 -131
- package/build-module/gallery/v1/gallery.native.js.map +0 -1
- package/build-module/gallery/v1/save.js +0 -74
- package/build-module/gallery/v1/save.js.map +0 -1
- package/build-module/gallery/v1/shared.js +0 -10
- package/build-module/gallery/v1/shared.js.map +0 -1
- package/build-module/gallery/v1/tiles.native.js +0 -75
- package/build-module/gallery/v1/tiles.native.js.map +0 -1
- package/build-module/utils/constants.js +0 -9
- package/build-module/utils/constants.js.map +0 -1
- package/src/gallery/edit-wrapper.js +0 -27
- package/src/gallery/v1/constants.js +0 -3
- package/src/gallery/v1/edit.js +0 -450
- package/src/gallery/v1/gallery-button.native.js +0 -47
- package/src/gallery/v1/gallery-image-style.native.scss +0 -109
- package/src/gallery/v1/gallery-image.js +0 -293
- package/src/gallery/v1/gallery-image.native.js +0 -348
- package/src/gallery/v1/gallery-styles.native.scss +0 -8
- package/src/gallery/v1/gallery.js +0 -125
- package/src/gallery/v1/gallery.native.js +0 -162
- package/src/gallery/v1/save.js +0 -98
- package/src/gallery/v1/shared.js +0 -19
- package/src/gallery/v1/tiles-styles.native.scss +0 -11
- package/src/gallery/v1/tiles.native.js +0 -79
- package/src/utils/constants.js +0 -8
package/src/gallery/edit.js
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
ToggleControl,
|
|
15
15
|
RangeControl,
|
|
16
16
|
Spinner,
|
|
17
|
+
withNotices,
|
|
17
18
|
} from '@wordpress/components';
|
|
18
19
|
import {
|
|
19
20
|
store as blockEditorStore,
|
|
@@ -237,7 +238,7 @@ function GalleryEdit( props ) {
|
|
|
237
238
|
return (
|
|
238
239
|
ALLOWED_MEDIA_TYPES.some(
|
|
239
240
|
( mediaType ) => mediaTypeSelector?.indexOf( mediaType ) === 0
|
|
240
|
-
) || file.
|
|
241
|
+
) || file.blob
|
|
241
242
|
);
|
|
242
243
|
}
|
|
243
244
|
|
|
@@ -249,9 +250,9 @@ function GalleryEdit( props ) {
|
|
|
249
250
|
const imageArray = newFileUploads
|
|
250
251
|
? Array.from( selectedImages ).map( ( file ) => {
|
|
251
252
|
if ( ! file.url ) {
|
|
252
|
-
return
|
|
253
|
-
|
|
254
|
-
}
|
|
253
|
+
return {
|
|
254
|
+
blob: createBlobURL( file ),
|
|
255
|
+
};
|
|
255
256
|
}
|
|
256
257
|
|
|
257
258
|
return file;
|
|
@@ -271,9 +272,9 @@ function GalleryEdit( props ) {
|
|
|
271
272
|
.filter( ( file ) => file.url || isValidFileType( file ) )
|
|
272
273
|
.map( ( file ) => {
|
|
273
274
|
if ( ! file.url ) {
|
|
274
|
-
return
|
|
275
|
-
|
|
276
|
-
}
|
|
275
|
+
return {
|
|
276
|
+
blob: file.blob || createBlobURL( file ),
|
|
277
|
+
};
|
|
277
278
|
}
|
|
278
279
|
|
|
279
280
|
return file;
|
|
@@ -307,6 +308,7 @@ function GalleryEdit( props ) {
|
|
|
307
308
|
const newBlocks = newImageList.map( ( image ) => {
|
|
308
309
|
return createBlock( 'core/image', {
|
|
309
310
|
id: image.id,
|
|
311
|
+
blob: image.blob,
|
|
310
312
|
url: image.url,
|
|
311
313
|
caption: image.caption,
|
|
312
314
|
alt: image.alt,
|
|
@@ -632,6 +634,7 @@ function GalleryEdit( props ) {
|
|
|
632
634
|
</>
|
|
633
635
|
);
|
|
634
636
|
}
|
|
635
|
-
export default compose( [
|
|
636
|
-
|
|
637
|
-
)
|
|
637
|
+
export default compose( [
|
|
638
|
+
withNotices,
|
|
639
|
+
withViewportMatch( { isNarrow: '< small' } ),
|
|
640
|
+
] )( GalleryEdit );
|
package/src/gallery/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { gallery as icon } from '@wordpress/icons';
|
|
|
8
8
|
*/
|
|
9
9
|
import initBlock from '../utils/init-block';
|
|
10
10
|
import deprecated from './deprecated';
|
|
11
|
-
import edit from './edit
|
|
11
|
+
import edit from './edit';
|
|
12
12
|
import metadata from './block.json';
|
|
13
13
|
import save from './save';
|
|
14
14
|
import transforms from './transforms';
|
package/src/gallery/save.js
CHANGED
|
@@ -13,17 +13,7 @@ import {
|
|
|
13
13
|
__experimentalGetElementClassName,
|
|
14
14
|
} from '@wordpress/block-editor';
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
* Internal dependencies
|
|
18
|
-
*/
|
|
19
|
-
import saveWithoutInnerBlocks from './v1/save';
|
|
20
|
-
import { isGalleryV2Enabled } from './shared';
|
|
21
|
-
|
|
22
16
|
export default function saveWithInnerBlocks( { attributes } ) {
|
|
23
|
-
if ( ! isGalleryV2Enabled() ) {
|
|
24
|
-
return saveWithoutInnerBlocks( { attributes } );
|
|
25
|
-
}
|
|
26
|
-
|
|
27
17
|
const { caption, columns, imageCrop } = attributes;
|
|
28
18
|
|
|
29
19
|
const className = clsx( 'has-nested-images', {
|
package/src/gallery/shared.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { Platform } from '@wordpress/element';
|
|
5
|
-
|
|
6
1
|
export function defaultColumnsNumber( imageCount ) {
|
|
7
2
|
return imageCount ? Math.min( 3, imageCount ) : 3;
|
|
8
3
|
}
|
|
@@ -27,26 +22,3 @@ export const pickRelevantMediaFiles = ( image, sizeSlug = 'large' ) => {
|
|
|
27
22
|
}
|
|
28
23
|
return imageProps;
|
|
29
24
|
};
|
|
30
|
-
|
|
31
|
-
function getGalleryBlockV2Enabled() {
|
|
32
|
-
// We want to fail early here, at least during beta testing phase, to ensure
|
|
33
|
-
// there aren't instances where undefined values cause false negatives.
|
|
34
|
-
if ( ! window.wp || typeof window.wp.galleryBlockV2Enabled !== 'boolean' ) {
|
|
35
|
-
throw 'window.wp.galleryBlockV2Enabled is not defined';
|
|
36
|
-
}
|
|
37
|
-
return window.wp.galleryBlockV2Enabled;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The new gallery block format is not compatible with the use_BalanceTags option
|
|
42
|
-
* in WP versions <= 5.8 https://core.trac.wordpress.org/ticket/54130. The
|
|
43
|
-
* window.wp.galleryBlockV2Enabled flag is set in lib/compat.php. This method
|
|
44
|
-
* can be removed when minimum supported WP version >=5.9.
|
|
45
|
-
*/
|
|
46
|
-
export function isGalleryV2Enabled() {
|
|
47
|
-
if ( Platform.isNative ) {
|
|
48
|
-
return getGalleryBlockV2Enabled();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
LINK_DESTINATION_NONE,
|
|
14
14
|
LINK_DESTINATION_MEDIA,
|
|
15
15
|
} from './constants';
|
|
16
|
-
import { pickRelevantMediaFiles, isGalleryV2Enabled } from './shared';
|
|
17
16
|
|
|
18
17
|
const parseShortcodeIds = ( ids ) => {
|
|
19
18
|
if ( ! ids ) {
|
|
@@ -39,7 +38,6 @@ const parseShortcodeIds = ( ids ) => {
|
|
|
39
38
|
*/
|
|
40
39
|
function updateThirdPartyTransformToGallery( block ) {
|
|
41
40
|
if (
|
|
42
|
-
isGalleryV2Enabled() &&
|
|
43
41
|
block.name === 'core/gallery' &&
|
|
44
42
|
block.attributes?.images.length > 0
|
|
45
43
|
) {
|
|
@@ -137,37 +135,21 @@ const transforms = {
|
|
|
137
135
|
|
|
138
136
|
const validImages = attributes.filter( ( { url } ) => url );
|
|
139
137
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return createBlock( 'core/image', image );
|
|
146
|
-
} );
|
|
147
|
-
|
|
148
|
-
return createBlock(
|
|
149
|
-
'core/gallery',
|
|
150
|
-
{
|
|
151
|
-
align,
|
|
152
|
-
sizeSlug,
|
|
153
|
-
},
|
|
154
|
-
innerBlocks
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
return createBlock( 'core/gallery', {
|
|
159
|
-
images: validImages.map(
|
|
160
|
-
( { id, url, alt, caption } ) => ( {
|
|
161
|
-
id: id.toString(),
|
|
162
|
-
url,
|
|
163
|
-
alt,
|
|
164
|
-
caption,
|
|
165
|
-
} )
|
|
166
|
-
),
|
|
167
|
-
ids: validImages.map( ( { id } ) => parseInt( id, 10 ) ),
|
|
168
|
-
align,
|
|
169
|
-
sizeSlug,
|
|
138
|
+
const innerBlocks = validImages.map( ( image ) => {
|
|
139
|
+
// Gallery images can't currently be resized so make sure height and width are undefined.
|
|
140
|
+
image.width = undefined;
|
|
141
|
+
image.height = undefined;
|
|
142
|
+
return createBlock( 'core/image', image );
|
|
170
143
|
} );
|
|
144
|
+
|
|
145
|
+
return createBlock(
|
|
146
|
+
'core/gallery',
|
|
147
|
+
{
|
|
148
|
+
align,
|
|
149
|
+
sizeSlug,
|
|
150
|
+
},
|
|
151
|
+
innerBlocks
|
|
152
|
+
);
|
|
171
153
|
},
|
|
172
154
|
},
|
|
173
155
|
{
|
|
@@ -220,23 +202,13 @@ const transforms = {
|
|
|
220
202
|
);
|
|
221
203
|
},
|
|
222
204
|
transform( files ) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
);
|
|
205
|
+
const innerBlocks = files.map( ( file ) =>
|
|
206
|
+
createBlock( 'core/image', {
|
|
207
|
+
blob: createBlobURL( file ),
|
|
208
|
+
} )
|
|
209
|
+
);
|
|
229
210
|
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
const block = createBlock( 'core/gallery', {
|
|
233
|
-
images: files.map( ( file ) =>
|
|
234
|
-
pickRelevantMediaFiles( {
|
|
235
|
-
url: createBlobURL( file ),
|
|
236
|
-
} )
|
|
237
|
-
),
|
|
238
|
-
} );
|
|
239
|
-
return block;
|
|
211
|
+
return createBlock( 'core/gallery', {}, innerBlocks );
|
|
240
212
|
},
|
|
241
213
|
},
|
|
242
214
|
],
|
|
@@ -244,57 +216,42 @@ const transforms = {
|
|
|
244
216
|
{
|
|
245
217
|
type: 'block',
|
|
246
218
|
blocks: [ 'core/image' ],
|
|
247
|
-
transform: ( { align
|
|
248
|
-
if (
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
} )
|
|
284
|
-
);
|
|
285
|
-
}
|
|
286
|
-
return createBlock( 'core/image', { align } );
|
|
287
|
-
}
|
|
288
|
-
if ( images.length > 0 ) {
|
|
289
|
-
return images.map( ( { url, alt, caption }, index ) =>
|
|
290
|
-
createBlock( 'core/image', {
|
|
291
|
-
id: ids[ index ],
|
|
292
|
-
url,
|
|
293
|
-
alt,
|
|
294
|
-
caption,
|
|
295
|
-
align,
|
|
296
|
-
sizeSlug,
|
|
297
|
-
} )
|
|
219
|
+
transform: ( { align }, innerBlocks ) => {
|
|
220
|
+
if ( innerBlocks.length > 0 ) {
|
|
221
|
+
return innerBlocks.map(
|
|
222
|
+
( {
|
|
223
|
+
attributes: {
|
|
224
|
+
url,
|
|
225
|
+
alt,
|
|
226
|
+
caption,
|
|
227
|
+
title,
|
|
228
|
+
href,
|
|
229
|
+
rel,
|
|
230
|
+
linkClass,
|
|
231
|
+
id,
|
|
232
|
+
sizeSlug: imageSizeSlug,
|
|
233
|
+
linkDestination,
|
|
234
|
+
linkTarget,
|
|
235
|
+
anchor,
|
|
236
|
+
className,
|
|
237
|
+
},
|
|
238
|
+
} ) =>
|
|
239
|
+
createBlock( 'core/image', {
|
|
240
|
+
align,
|
|
241
|
+
url,
|
|
242
|
+
alt,
|
|
243
|
+
caption,
|
|
244
|
+
title,
|
|
245
|
+
href,
|
|
246
|
+
rel,
|
|
247
|
+
linkClass,
|
|
248
|
+
id,
|
|
249
|
+
sizeSlug: imageSizeSlug,
|
|
250
|
+
linkDestination,
|
|
251
|
+
linkTarget,
|
|
252
|
+
anchor,
|
|
253
|
+
className,
|
|
254
|
+
} )
|
|
298
255
|
);
|
|
299
256
|
}
|
|
300
257
|
return createBlock( 'core/image', { align } );
|
package/src/group/block.json
CHANGED
package/src/group/placeholder.js
CHANGED
|
@@ -139,6 +139,13 @@ function GroupPlaceHolder( { name, onSelect } ) {
|
|
|
139
139
|
const blockProps = useBlockProps( {
|
|
140
140
|
className: 'wp-block-group__placeholder',
|
|
141
141
|
} );
|
|
142
|
+
|
|
143
|
+
useEffect( () => {
|
|
144
|
+
if ( variations && variations.length === 1 ) {
|
|
145
|
+
onSelect( variations[ 0 ] );
|
|
146
|
+
}
|
|
147
|
+
}, [ onSelect, variations ] );
|
|
148
|
+
|
|
142
149
|
return (
|
|
143
150
|
<div { ...blockProps }>
|
|
144
151
|
<Placeholder
|
package/src/image/block.json
CHANGED
package/src/image/edit.js
CHANGED
|
@@ -56,17 +56,6 @@ export const pickRelevantMediaFiles = ( image, size ) => {
|
|
|
56
56
|
return imageProps;
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
/**
|
|
60
|
-
* Is the URL a temporary blob URL? A blob URL is one that is used temporarily
|
|
61
|
-
* while the image is being uploaded and will not have an id yet allocated.
|
|
62
|
-
*
|
|
63
|
-
* @param {number=} id The id of the image.
|
|
64
|
-
* @param {string=} url The url of the image.
|
|
65
|
-
*
|
|
66
|
-
* @return {boolean} Is the URL a Blob URL
|
|
67
|
-
*/
|
|
68
|
-
const isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );
|
|
69
|
-
|
|
70
59
|
/**
|
|
71
60
|
* Is the url for the image hosted externally. An externally hosted image has no
|
|
72
61
|
* id and is not a blob url.
|
|
@@ -118,9 +107,7 @@ export function ImageEdit( {
|
|
|
118
107
|
align,
|
|
119
108
|
metadata,
|
|
120
109
|
} = attributes;
|
|
121
|
-
const [ temporaryURL, setTemporaryURL ] = useState(
|
|
122
|
-
return isTemporaryImage( id, url ) ? url : undefined;
|
|
123
|
-
} );
|
|
110
|
+
const [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );
|
|
124
111
|
|
|
125
112
|
const altRef = useRef();
|
|
126
113
|
useEffect( () => {
|
|
@@ -157,8 +144,8 @@ export function ImageEdit( {
|
|
|
157
144
|
src: undefined,
|
|
158
145
|
id: undefined,
|
|
159
146
|
url: undefined,
|
|
147
|
+
blob: undefined,
|
|
160
148
|
} );
|
|
161
|
-
setTemporaryURL( undefined );
|
|
162
149
|
}
|
|
163
150
|
|
|
164
151
|
function onSelectImage( media ) {
|
|
@@ -169,7 +156,9 @@ export function ImageEdit( {
|
|
|
169
156
|
id: undefined,
|
|
170
157
|
title: undefined,
|
|
171
158
|
caption: undefined,
|
|
159
|
+
blob: undefined,
|
|
172
160
|
} );
|
|
161
|
+
setTemporaryURL();
|
|
173
162
|
|
|
174
163
|
return;
|
|
175
164
|
}
|
|
@@ -179,8 +168,6 @@ export function ImageEdit( {
|
|
|
179
168
|
return;
|
|
180
169
|
}
|
|
181
170
|
|
|
182
|
-
setTemporaryURL();
|
|
183
|
-
|
|
184
171
|
const { imageDefaultSize } = getSettings();
|
|
185
172
|
|
|
186
173
|
// Try to use the previous selected image size if its available
|
|
@@ -254,24 +241,28 @@ export function ImageEdit( {
|
|
|
254
241
|
mediaAttributes.href = href;
|
|
255
242
|
|
|
256
243
|
setAttributes( {
|
|
244
|
+
blob: undefined,
|
|
257
245
|
...mediaAttributes,
|
|
258
246
|
...additionalAttributes,
|
|
259
247
|
linkDestination,
|
|
260
248
|
} );
|
|
249
|
+
setTemporaryURL();
|
|
261
250
|
}
|
|
262
251
|
|
|
263
252
|
function onSelectURL( newURL ) {
|
|
264
253
|
if ( newURL !== url ) {
|
|
265
254
|
setAttributes( {
|
|
255
|
+
blob: undefined,
|
|
266
256
|
url: newURL,
|
|
267
257
|
id: undefined,
|
|
268
258
|
sizeSlug: getSettings().imageDefaultSize,
|
|
269
259
|
} );
|
|
260
|
+
setTemporaryURL();
|
|
270
261
|
}
|
|
271
262
|
}
|
|
272
263
|
|
|
273
264
|
useUploadMediaFromBlobURL( {
|
|
274
|
-
url,
|
|
265
|
+
url: temporaryURL,
|
|
275
266
|
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
276
267
|
onChange: onSelectImage,
|
|
277
268
|
onError: onUploadError,
|
|
@@ -292,7 +283,7 @@ export function ImageEdit( {
|
|
|
292
283
|
const shadowProps = getShadowClassesAndStyles( attributes );
|
|
293
284
|
|
|
294
285
|
const classes = clsx( className, {
|
|
295
|
-
'is-transient': temporaryURL,
|
|
286
|
+
'is-transient': !! temporaryURL,
|
|
296
287
|
'is-resized': !! width || !! height,
|
|
297
288
|
[ `size-${ sizeSlug }` ]: sizeSlug,
|
|
298
289
|
'has-custom-border':
|
package/src/image/editor.scss
CHANGED
|
@@ -176,19 +176,6 @@ figure.wp-block-image:not(.wp-block) {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
.wp-block-image__aspect-ratio {
|
|
180
|
-
height: $grid-unit-60 - $border-width - $border-width;
|
|
181
|
-
margin-bottom: -$grid-unit-10;
|
|
182
|
-
display: flex;
|
|
183
|
-
align-items: center;
|
|
184
|
-
|
|
185
|
-
.components-button {
|
|
186
|
-
width: $button-size;
|
|
187
|
-
padding-left: 0;
|
|
188
|
-
padding-right: 0;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
179
|
.wp-block-image__toolbar_content_textarea {
|
|
193
180
|
// Corresponds to the size of the textarea in the block inspector.
|
|
194
181
|
width: 250px;
|
package/src/image/image.js
CHANGED
|
@@ -49,7 +49,7 @@ import { Caption } from '../utils/caption';
|
|
|
49
49
|
/**
|
|
50
50
|
* Module constants
|
|
51
51
|
*/
|
|
52
|
-
import {
|
|
52
|
+
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
|
|
53
53
|
import { MIN_SIZE, ALLOWED_MEDIA_TYPES } from './constants';
|
|
54
54
|
import { evalAspectRatio } from './utils';
|
|
55
55
|
|
|
@@ -182,8 +182,7 @@ export default function Image( {
|
|
|
182
182
|
allowResize &&
|
|
183
183
|
hasNonContentControls &&
|
|
184
184
|
! isWideAligned &&
|
|
185
|
-
isLargeViewport
|
|
186
|
-
parentLayoutType !== 'grid';
|
|
185
|
+
isLargeViewport;
|
|
187
186
|
const imageSizeOptions = imageSizes
|
|
188
187
|
.filter(
|
|
189
188
|
( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url
|
|
@@ -373,6 +372,8 @@ export default function Image( {
|
|
|
373
372
|
const lightboxChecked =
|
|
374
373
|
!! lightbox?.enabled || ( ! lightbox && !! lightboxSetting?.enabled );
|
|
375
374
|
|
|
375
|
+
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
376
|
+
|
|
376
377
|
const dimensionsControl = (
|
|
377
378
|
<DimensionsTool
|
|
378
379
|
value={ { width, height, scale, aspectRatio } }
|
|
@@ -403,6 +404,20 @@ export default function Image( {
|
|
|
403
404
|
/>
|
|
404
405
|
);
|
|
405
406
|
|
|
407
|
+
const aspectRatioControl = (
|
|
408
|
+
<DimensionsTool
|
|
409
|
+
value={ { aspectRatio } }
|
|
410
|
+
onChange={ ( { aspectRatio: newAspectRatio } ) => {
|
|
411
|
+
setAttributes( {
|
|
412
|
+
aspectRatio: newAspectRatio,
|
|
413
|
+
scale: 'cover',
|
|
414
|
+
} );
|
|
415
|
+
} }
|
|
416
|
+
defaultAspectRatio="auto"
|
|
417
|
+
tools={ [ 'aspectRatio' ] }
|
|
418
|
+
/>
|
|
419
|
+
);
|
|
420
|
+
|
|
406
421
|
const resetAll = () => {
|
|
407
422
|
setAttributes( {
|
|
408
423
|
alt: undefined,
|
|
@@ -419,13 +434,19 @@ export default function Image( {
|
|
|
419
434
|
<ToolsPanel
|
|
420
435
|
label={ __( 'Settings' ) }
|
|
421
436
|
resetAll={ resetAll }
|
|
422
|
-
dropdownMenuProps={
|
|
437
|
+
dropdownMenuProps={ dropdownMenuProps }
|
|
423
438
|
>
|
|
424
|
-
{ isResizable &&
|
|
439
|
+
{ isResizable &&
|
|
440
|
+
( parentLayoutType === 'grid'
|
|
441
|
+
? aspectRatioControl
|
|
442
|
+
: dimensionsControl ) }
|
|
425
443
|
</ToolsPanel>
|
|
426
444
|
</InspectorControls>
|
|
427
445
|
);
|
|
428
446
|
|
|
447
|
+
const arePatternOverridesEnabled =
|
|
448
|
+
metadata?.bindings?.__default?.source === 'core/pattern-overrides';
|
|
449
|
+
|
|
429
450
|
const {
|
|
430
451
|
lockUrlControls = false,
|
|
431
452
|
lockHrefControls = false,
|
|
@@ -440,16 +461,12 @@ export default function Image( {
|
|
|
440
461
|
return {};
|
|
441
462
|
}
|
|
442
463
|
const { getBlockBindingsSource } = unlock( select( blocksStore ) );
|
|
443
|
-
const { getBlockParentsByBlockName } = unlock(
|
|
444
|
-
select( blockEditorStore )
|
|
445
|
-
);
|
|
446
464
|
const {
|
|
447
465
|
url: urlBinding,
|
|
448
466
|
alt: altBinding,
|
|
449
467
|
title: titleBinding,
|
|
450
468
|
} = metadata?.bindings || {};
|
|
451
|
-
const hasParentPattern =
|
|
452
|
-
getBlockParentsByBlockName( clientId, 'core/block' ).length > 0;
|
|
469
|
+
const hasParentPattern = !! context[ 'pattern/overrides' ];
|
|
453
470
|
const urlBindingSource = getBlockBindingsSource(
|
|
454
471
|
urlBinding?.source
|
|
455
472
|
);
|
|
@@ -470,7 +487,7 @@ export default function Image( {
|
|
|
470
487
|
lockHrefControls:
|
|
471
488
|
// Disable editing the link of the URL if the image is inside a pattern instance.
|
|
472
489
|
// This is a temporary solution until we support overriding the link on the frontend.
|
|
473
|
-
hasParentPattern,
|
|
490
|
+
hasParentPattern || arePatternOverridesEnabled,
|
|
474
491
|
lockCaption:
|
|
475
492
|
// Disable editing the caption if the image is inside a pattern instance.
|
|
476
493
|
// This is a temporary solution until we support overriding the caption on the frontend.
|
|
@@ -505,7 +522,12 @@ export default function Image( {
|
|
|
505
522
|
: __( 'Connected to dynamic data' ),
|
|
506
523
|
};
|
|
507
524
|
},
|
|
508
|
-
[
|
|
525
|
+
[
|
|
526
|
+
arePatternOverridesEnabled,
|
|
527
|
+
context,
|
|
528
|
+
isSingleSelected,
|
|
529
|
+
metadata?.bindings,
|
|
530
|
+
]
|
|
509
531
|
);
|
|
510
532
|
|
|
511
533
|
const showUrlInput =
|
|
@@ -688,7 +710,7 @@ export default function Image( {
|
|
|
688
710
|
<ToolsPanel
|
|
689
711
|
label={ __( 'Settings' ) }
|
|
690
712
|
resetAll={ resetAll }
|
|
691
|
-
dropdownMenuProps={
|
|
713
|
+
dropdownMenuProps={ dropdownMenuProps }
|
|
692
714
|
>
|
|
693
715
|
{ isSingleSelected && (
|
|
694
716
|
<ToolsPanelItem
|
|
@@ -732,7 +754,10 @@ export default function Image( {
|
|
|
732
754
|
/>
|
|
733
755
|
</ToolsPanelItem>
|
|
734
756
|
) }
|
|
735
|
-
{ isResizable &&
|
|
757
|
+
{ isResizable &&
|
|
758
|
+
( parentLayoutType === 'grid'
|
|
759
|
+
? aspectRatioControl
|
|
760
|
+
: dimensionsControl ) }
|
|
736
761
|
{ !! imageSizeOptions.length && (
|
|
737
762
|
<ResolutionTool
|
|
738
763
|
value={ sizeSlug }
|
|
@@ -842,7 +867,7 @@ export default function Image( {
|
|
|
842
867
|
/>
|
|
843
868
|
</ImageWrapper>
|
|
844
869
|
);
|
|
845
|
-
} else if ( ! isResizable ) {
|
|
870
|
+
} else if ( ! isResizable || parentLayoutType === 'grid' ) {
|
|
846
871
|
img = (
|
|
847
872
|
<div style={ { width, height, aspectRatio } }>
|
|
848
873
|
<ImageWrapper href={ href }>{ img }</ImageWrapper>
|
|
@@ -971,7 +996,11 @@ export default function Image( {
|
|
|
971
996
|
isSelected={ isSingleSelected }
|
|
972
997
|
insertBlocksAfter={ insertBlocksAfter }
|
|
973
998
|
label={ __( 'Image caption text' ) }
|
|
974
|
-
showToolbarButton={
|
|
999
|
+
showToolbarButton={
|
|
1000
|
+
isSingleSelected &&
|
|
1001
|
+
hasNonContentControls &&
|
|
1002
|
+
! arePatternOverridesEnabled
|
|
1003
|
+
}
|
|
975
1004
|
readOnly={ lockCaption }
|
|
976
1005
|
/>
|
|
977
1006
|
</>
|
package/src/image/index.php
CHANGED
|
@@ -28,12 +28,33 @@ function render_block_core_image( $attributes, $content, $block ) {
|
|
|
28
28
|
return '';
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
$has_id_binding = isset( $attributes['metadata']['bindings']['id'] ) && isset( $attributes['id'] );
|
|
32
|
+
|
|
33
|
+
// Ensure the `wp-image-id` classname on the image block supports block bindings.
|
|
34
|
+
if ( $has_id_binding ) {
|
|
35
|
+
// If there's a mismatch with the 'wp-image-' class and the actual id, the id was
|
|
36
|
+
// probably overridden by block bindings. Update it to the correct value.
|
|
37
|
+
// See https://github.com/WordPress/gutenberg/issues/62886 for why this is needed.
|
|
38
|
+
$id = $attributes['id'];
|
|
39
|
+
$image_classnames = $p->get_attribute( 'class' );
|
|
40
|
+
$class_with_binding_value = "wp-image-$id";
|
|
41
|
+
if ( is_string( $image_classnames ) && ! str_contains( $image_classnames, $class_with_binding_value ) ) {
|
|
42
|
+
$image_classnames = preg_replace( '/wp-image-(\d+)/', $class_with_binding_value, $image_classnames );
|
|
43
|
+
$p->set_attribute( 'class', $image_classnames );
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// For backwards compatibility, the data-id html attribute is only set for
|
|
48
|
+
// image blocks nested in a gallery. Detect if the image is in a gallery by
|
|
49
|
+
// checking the data-id attribute.
|
|
50
|
+
// See the `block_core_gallery_data_id_backcompatibility` function.
|
|
31
51
|
if ( isset( $attributes['data-id'] ) ) {
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
$
|
|
52
|
+
// If there's a binding for the `id`, the `id` attribute is used for the
|
|
53
|
+
// value, since `data-id` does not support block bindings.
|
|
54
|
+
// Else the `data-id` is used for backwards compatibility, since
|
|
55
|
+
// third parties may be filtering its value.
|
|
56
|
+
$data_id = $has_id_binding ? $attributes['id'] : $attributes['data-id'];
|
|
57
|
+
$p->set_attribute( 'data-id', $data_id );
|
|
37
58
|
}
|
|
38
59
|
|
|
39
60
|
$link_destination = isset( $attributes['linkDestination'] ) ? $attributes['linkDestination'] : 'none';
|