@wordpress/block-library 9.35.1-next.16d95556a.0 → 9.36.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/accordion/view.js +46 -4
- package/build/accordion/view.js.map +2 -2
- package/build/accordion-heading/block.json +1 -1
- package/build/accordion-heading/deprecated.js +1 -1
- package/build/accordion-heading/deprecated.js.map +2 -2
- package/build/accordion-panel/block.json +1 -1
- package/build/audio/index.js +29 -0
- package/build/audio/index.js.map +3 -3
- package/build/breadcrumbs/edit.js +1 -1
- package/build/breadcrumbs/edit.js.map +2 -2
- package/build/button/index.js +25 -0
- package/build/button/index.js.map +3 -3
- package/build/code/index.js +15 -0
- package/build/code/index.js.map +3 -3
- package/build/cover/edit/block-controls.js +37 -3
- package/build/cover/edit/block-controls.js.map +3 -3
- package/build/cover/edit/cover-placeholder.js +0 -1
- package/build/cover/edit/cover-placeholder.js.map +2 -2
- package/build/cover/edit/embed-video-url-input.js +83 -0
- package/build/cover/edit/embed-video-url-input.js.map +7 -0
- package/build/cover/edit/index.js +60 -0
- package/build/cover/edit/index.js.map +2 -2
- package/build/cover/embed-video-utils.js +151 -0
- package/build/cover/embed-video-utils.js.map +7 -0
- package/build/cover/index.js +28 -0
- package/build/cover/index.js.map +3 -3
- package/build/cover/save.js +12 -0
- package/build/cover/save.js.map +2 -2
- package/build/cover/shared.js +3 -0
- package/build/cover/shared.js.map +2 -2
- package/build/details/index.js +15 -0
- package/build/details/index.js.map +3 -3
- package/build/file/index.js +33 -0
- package/build/file/index.js.map +3 -3
- package/build/freeform/block.json +1 -1
- package/build/gallery/edit.js +0 -2
- package/build/gallery/edit.js.map +2 -2
- package/build/heading/index.js +15 -0
- package/build/heading/index.js.map +3 -3
- package/build/html/modal.js +139 -148
- package/build/html/modal.js.map +3 -3
- package/build/image/edit.js +0 -1
- package/build/image/edit.js.map +2 -2
- package/build/image/image.js +0 -1
- package/build/image/image.js.map +2 -2
- package/build/image/index.js +46 -0
- package/build/image/index.js.map +3 -3
- package/build/list-item/index.js +15 -0
- package/build/list-item/index.js.map +3 -3
- package/build/math/block.json +28 -1
- package/build/math/edit.js +4 -1
- package/build/math/edit.js.map +2 -2
- package/build/media-text/index.js +35 -0
- package/build/media-text/index.js.map +3 -3
- package/build/media-text/media-container.js +0 -2
- package/build/media-text/media-container.js.map +2 -2
- package/build/missing/block.json +1 -1
- package/build/missing/edit.js +2 -2
- package/build/missing/edit.js.map +1 -1
- package/build/more/index.js +16 -0
- package/build/more/index.js.map +3 -3
- package/build/navigation/block.json +2 -2
- package/build/navigation-link/block.json +2 -1
- package/build/navigation-link/edit.js +42 -11
- package/build/navigation-link/edit.js.map +2 -2
- package/build/navigation-link/index.js +25 -0
- package/build/navigation-link/index.js.map +3 -3
- package/build/navigation-link/shared/controls.js +15 -19
- package/build/navigation-link/shared/controls.js.map +2 -2
- package/build/navigation-link/shared/index.js +4 -0
- package/build/navigation-link/shared/index.js.map +2 -2
- package/build/navigation-link/shared/use-entity-binding.js +3 -2
- package/build/navigation-link/shared/use-entity-binding.js.map +2 -2
- package/build/navigation-submenu/block.json +2 -1
- package/build/navigation-submenu/index.js +25 -0
- package/build/navigation-submenu/index.js.map +3 -3
- package/build/paragraph/deprecated-attributes.js +68 -0
- package/build/paragraph/deprecated-attributes.js.map +7 -0
- package/build/paragraph/edit.js +2 -0
- package/build/paragraph/edit.js.map +3 -3
- package/build/paragraph/index.js +15 -0
- package/build/paragraph/index.js.map +3 -3
- package/build/pattern/block.json +1 -1
- package/build/post-comments-count/edit.js +1 -2
- package/build/post-comments-count/edit.js.map +2 -2
- package/build/post-comments-link/edit.js +10 -7
- package/build/post-comments-link/edit.js.map +2 -2
- package/build/preformatted/index.js +15 -0
- package/build/preformatted/index.js.map +3 -3
- package/build/pullquote/index.js +20 -0
- package/build/pullquote/index.js.map +3 -3
- package/build/search/index.js +26 -0
- package/build/search/index.js.map +3 -3
- package/build/social-link/index.js +25 -0
- package/build/social-link/index.js.map +3 -3
- package/build/social-links/edit.js +1 -1
- package/build/social-links/edit.js.map +1 -1
- package/build/tabs/view.js +17 -4
- package/build/tabs/view.js.map +2 -2
- package/build/template-part/edit/index.js +37 -7
- package/build/template-part/edit/index.js.map +2 -2
- package/build/template-part/edit/utils/hooks.js +2 -3
- package/build/template-part/edit/utils/hooks.js.map +2 -2
- package/build/term-count/index.js +1 -0
- package/build/term-count/index.js.map +2 -2
- package/build/term-name/index.js +1 -0
- package/build/term-name/index.js.map +2 -2
- package/build/verse/index.js +15 -0
- package/build/verse/index.js.map +3 -3
- package/build/video/index.js +30 -0
- package/build/video/index.js.map +3 -3
- package/build-module/accordion/view.js +46 -4
- package/build-module/accordion/view.js.map +2 -2
- package/build-module/accordion-heading/block.json +1 -1
- package/build-module/accordion-heading/deprecated.js +1 -1
- package/build-module/accordion-heading/deprecated.js.map +2 -2
- package/build-module/accordion-panel/block.json +1 -1
- package/build-module/audio/index.js +29 -0
- package/build-module/audio/index.js.map +2 -2
- package/build-module/breadcrumbs/edit.js +1 -1
- package/build-module/breadcrumbs/edit.js.map +2 -2
- package/build-module/button/index.js +25 -0
- package/build-module/button/index.js.map +2 -2
- package/build-module/code/index.js +15 -0
- package/build-module/code/index.js.map +2 -2
- package/build-module/cover/edit/block-controls.js +27 -3
- package/build-module/cover/edit/block-controls.js.map +2 -2
- package/build-module/cover/edit/cover-placeholder.js +0 -1
- package/build-module/cover/edit/cover-placeholder.js.map +2 -2
- package/build-module/cover/edit/embed-video-url-input.js +67 -0
- package/build-module/cover/edit/embed-video-url-input.js.map +7 -0
- package/build-module/cover/edit/index.js +61 -0
- package/build-module/cover/edit/index.js.map +2 -2
- package/build-module/cover/embed-video-utils.js +122 -0
- package/build-module/cover/embed-video-utils.js.map +7 -0
- package/build-module/cover/index.js +28 -0
- package/build-module/cover/index.js.map +2 -2
- package/build-module/cover/save.js +13 -0
- package/build-module/cover/save.js.map +2 -2
- package/build-module/cover/shared.js +2 -0
- package/build-module/cover/shared.js.map +2 -2
- package/build-module/details/index.js +15 -0
- package/build-module/details/index.js.map +2 -2
- package/build-module/file/index.js +34 -1
- package/build-module/file/index.js.map +2 -2
- package/build-module/freeform/block.json +1 -1
- package/build-module/gallery/edit.js +0 -2
- package/build-module/gallery/edit.js.map +2 -2
- package/build-module/heading/index.js +15 -0
- package/build-module/heading/index.js.map +2 -2
- package/build-module/html/modal.js +141 -150
- package/build-module/html/modal.js.map +2 -2
- package/build-module/image/edit.js +0 -1
- package/build-module/image/edit.js.map +2 -2
- package/build-module/image/image.js +0 -1
- package/build-module/image/image.js.map +2 -2
- package/build-module/image/index.js +46 -0
- package/build-module/image/index.js.map +2 -2
- package/build-module/list-item/index.js +15 -0
- package/build-module/list-item/index.js.map +2 -2
- package/build-module/math/block.json +28 -1
- package/build-module/math/edit.js +4 -1
- package/build-module/math/edit.js.map +2 -2
- package/build-module/media-text/index.js +35 -0
- package/build-module/media-text/index.js.map +2 -2
- package/build-module/media-text/media-container.js +0 -2
- package/build-module/media-text/media-container.js.map +2 -2
- package/build-module/missing/block.json +1 -1
- package/build-module/missing/edit.js +2 -2
- package/build-module/missing/edit.js.map +1 -1
- package/build-module/more/index.js +16 -0
- package/build-module/more/index.js.map +2 -2
- package/build-module/navigation/block.json +2 -2
- package/build-module/navigation-link/block.json +2 -1
- package/build-module/navigation-link/edit.js +56 -15
- package/build-module/navigation-link/edit.js.map +2 -2
- package/build-module/navigation-link/index.js +26 -1
- package/build-module/navigation-link/index.js.map +2 -2
- package/build-module/navigation-link/shared/controls.js +12 -18
- package/build-module/navigation-link/shared/controls.js.map +2 -2
- package/build-module/navigation-link/shared/index.js +3 -1
- package/build-module/navigation-link/shared/index.js.map +2 -2
- package/build-module/navigation-link/shared/use-entity-binding.js +3 -2
- package/build-module/navigation-link/shared/use-entity-binding.js.map +2 -2
- package/build-module/navigation-submenu/block.json +2 -1
- package/build-module/navigation-submenu/index.js +26 -1
- package/build-module/navigation-submenu/index.js.map +2 -2
- package/build-module/paragraph/deprecated-attributes.js +37 -0
- package/build-module/paragraph/deprecated-attributes.js.map +7 -0
- package/build-module/paragraph/edit.js +2 -0
- package/build-module/paragraph/edit.js.map +2 -2
- package/build-module/paragraph/index.js +15 -0
- package/build-module/paragraph/index.js.map +2 -2
- package/build-module/pattern/block.json +1 -1
- package/build-module/post-comments-count/edit.js +1 -3
- package/build-module/post-comments-count/edit.js.map +2 -2
- package/build-module/post-comments-link/edit.js +10 -8
- package/build-module/post-comments-link/edit.js.map +2 -2
- package/build-module/preformatted/index.js +15 -0
- package/build-module/preformatted/index.js.map +2 -2
- package/build-module/pullquote/index.js +20 -0
- package/build-module/pullquote/index.js.map +2 -2
- package/build-module/search/index.js +26 -0
- package/build-module/search/index.js.map +2 -2
- package/build-module/social-link/index.js +25 -0
- package/build-module/social-link/index.js.map +2 -2
- package/build-module/social-links/edit.js +1 -1
- package/build-module/social-links/edit.js.map +1 -1
- package/build-module/tabs/view.js +17 -4
- package/build-module/tabs/view.js.map +2 -2
- package/build-module/template-part/edit/index.js +37 -7
- package/build-module/template-part/edit/index.js.map +2 -2
- package/build-module/template-part/edit/utils/hooks.js +2 -3
- package/build-module/template-part/edit/utils/hooks.js.map +2 -2
- package/build-module/term-count/index.js +1 -0
- package/build-module/term-count/index.js.map +2 -2
- package/build-module/term-name/index.js +1 -0
- package/build-module/term-name/index.js.map +2 -2
- package/build-module/verse/index.js +15 -0
- package/build-module/verse/index.js.map +2 -2
- package/build-module/video/index.js +30 -0
- package/build-module/video/index.js.map +2 -2
- package/build-style/accordion/style-rtl.css +3 -0
- package/build-style/accordion/style.css +3 -0
- package/build-style/accordion-heading/style-rtl.css +1 -2
- package/build-style/accordion-heading/style.css +1 -2
- package/build-style/accordion-item/style-rtl.css +0 -7
- package/build-style/accordion-item/style.css +0 -7
- package/build-style/accordion-panel/style-rtl.css +1 -4
- package/build-style/accordion-panel/style.css +1 -4
- package/build-style/cover/style-rtl.css +47 -0
- package/build-style/cover/style.css +47 -0
- package/build-style/editor-rtl.css +11 -13
- package/build-style/editor.css +11 -13
- package/build-style/html/editor-rtl.css +11 -13
- package/build-style/html/editor.css +11 -13
- package/build-style/style-rtl.css +52 -12
- package/build-style/style.css +52 -12
- package/package.json +37 -37
- package/src/accordion/style.scss +4 -0
- package/src/accordion/view.js +60 -3
- package/src/accordion-heading/block.json +1 -1
- package/src/accordion-heading/deprecated.js +1 -1
- package/src/accordion-heading/style.scss +1 -9
- package/src/accordion-item/index.php +1 -0
- package/src/accordion-item/style.scss +2 -9
- package/src/accordion-panel/block.json +1 -1
- package/src/accordion-panel/style.scss +1 -5
- package/src/audio/index.js +31 -0
- package/src/breadcrumbs/edit.js +4 -2
- package/src/breadcrumbs/index.php +171 -100
- package/src/button/index.js +27 -0
- package/src/code/index.js +17 -0
- package/src/cover/edit/block-controls.js +26 -2
- package/src/cover/edit/cover-placeholder.js +0 -1
- package/src/cover/edit/embed-video-url-input.js +74 -0
- package/src/cover/edit/index.js +81 -0
- package/src/cover/embed-video-utils.js +196 -0
- package/src/cover/index.js +30 -0
- package/src/cover/index.php +106 -0
- package/src/cover/save.js +14 -0
- package/src/cover/shared.js +1 -0
- package/src/cover/style.scss +47 -0
- package/src/details/index.js +17 -0
- package/src/file/index.js +36 -1
- package/src/freeform/block.json +1 -1
- package/src/gallery/edit.js +0 -2
- package/src/heading/index.js +17 -0
- package/src/html/editor.scss +10 -15
- package/src/html/modal.js +23 -38
- package/src/image/edit.js +0 -1
- package/src/image/image.js +0 -1
- package/src/image/index.js +48 -0
- package/src/image/index.php +1 -0
- package/src/list-item/index.js +17 -0
- package/src/math/block.json +28 -1
- package/src/math/edit.js +4 -1
- package/src/media-text/index.js +37 -0
- package/src/media-text/media-container.js +0 -2
- package/src/missing/block.json +1 -1
- package/src/missing/edit.js +2 -2
- package/src/more/index.js +18 -0
- package/src/navigation/block.json +2 -2
- package/src/navigation-link/block.json +2 -1
- package/src/navigation-link/edit.js +98 -29
- package/src/navigation-link/index.js +28 -1
- package/src/navigation-link/shared/controls.js +13 -17
- package/src/navigation-link/shared/index.js +1 -1
- package/src/navigation-link/shared/use-entity-binding.js +5 -2
- package/src/navigation-submenu/block.json +2 -1
- package/src/navigation-submenu/index.js +28 -1
- package/src/paragraph/deprecated-attributes.js +45 -0
- package/src/paragraph/edit.js +2 -0
- package/src/paragraph/index.js +17 -0
- package/src/pattern/block.json +1 -1
- package/src/post-comments-count/edit.js +1 -9
- package/src/post-comments-link/edit.js +8 -18
- package/src/preformatted/index.js +17 -0
- package/src/pullquote/index.js +22 -0
- package/src/search/index.js +28 -0
- package/src/social-link/index.js +27 -0
- package/src/social-links/edit.js +1 -1
- package/src/style.scss +1 -0
- package/src/tabs/view.js +19 -4
- package/src/template-part/edit/index.js +44 -6
- package/src/template-part/edit/utils/hooks.js +2 -4
- package/src/term-count/index.js +1 -0
- package/src/term-name/index.js +1 -0
- package/src/verse/index.js +17 -0
- package/src/video/index.js +32 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cover/embed-video-utils.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlockVariations } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { matchesPatterns } from '../embed/util';\n\nconst DEFAULT_EMBED_BLOCK = 'core/embed';\n\n// List of supported video providers for cover block backgrounds\nconst VIDEO_PROVIDERS = [\n\t'youtube',\n\t'vimeo',\n\t'videopress',\n\t'animoto',\n\t'tiktok',\n\t'wordpress-tv',\n];\n\n/**\n * Checks if a URL is a valid video embed URL from supported providers.\n *\n * @param {string} url The URL to validate.\n * @return {boolean} True if the URL matches a supported video provider pattern.\n */\nexport function isValidVideoEmbedUrl( url ) {\n\tif ( ! url ) {\n\t\treturn false;\n\t}\n\n\tconst embedBlock = findVideoEmbedProvider( url );\n\treturn embedBlock !== null;\n}\n\n/**\n * Finds the embed provider for a given URL if it's a supported video provider.\n *\n * @param {string} url The URL to check.\n * @return {string|null} The provider name slug (e.g., 'youtube') or null if not found.\n */\nexport function getVideoEmbedProvider( url ) {\n\tconst embedBlock = findVideoEmbedProvider( url );\n\treturn embedBlock ? embedBlock.name : null;\n}\n\n/**\n * Finds a matching video embed block variation for the given URL.\n *\n * @param {string} url The URL to match against provider patterns.\n * @return {Object|null} The matching block variation or null if not found.\n */\nfunction findVideoEmbedProvider( url ) {\n\tconst embedVariations = getBlockVariations( DEFAULT_EMBED_BLOCK );\n\n\tif ( ! embedVariations ) {\n\t\treturn null;\n\t}\n\n\tconst matchingVariation = embedVariations.find( ( { patterns } ) =>\n\t\tmatchesPatterns( url, patterns )\n\t);\n\n\tif (\n\t\t! matchingVariation ||\n\t\t! VIDEO_PROVIDERS.includes( matchingVariation.name )\n\t) {\n\t\treturn null;\n\t}\n\n\treturn matchingVariation;\n}\n\n/**\n * Extracts iframe src from embed HTML.\n *\n * @param {string} html The embed HTML.\n * @return {string|null} The iframe src URL or null if not found.\n */\nexport function getIframeSrc( html ) {\n\tif ( ! html ) {\n\t\treturn null;\n\t}\n\n\tconst srcMatch = html.match( /src=[\"']([^\"']+)[\"']/ );\n\treturn srcMatch ? srcMatch[ 1 ] : null;\n}\n\n/**\n * Detects the video provider from an iframe src URL.\n *\n * @param {string} src The iframe src URL.\n * @return {string|null} The provider name slug or null if not recognized.\n */\nexport function detectProviderFromSrc( src ) {\n\tif ( ! src ) {\n\t\treturn null;\n\t}\n\n\tconst lowerSrc = src.toLowerCase();\n\n\tif (\n\t\tlowerSrc.includes( 'youtube.com' ) ||\n\t\tlowerSrc.includes( 'youtu.be' )\n\t) {\n\t\treturn 'youtube';\n\t}\n\tif ( lowerSrc.includes( 'vimeo.com' ) ) {\n\t\treturn 'vimeo';\n\t}\n\tif ( lowerSrc.includes( 'videopress.com' ) ) {\n\t\treturn 'videopress';\n\t}\n\tif ( lowerSrc.includes( 'animoto.com' ) ) {\n\t\treturn 'animoto';\n\t}\n\tif ( lowerSrc.includes( 'tiktok.com' ) ) {\n\t\treturn 'tiktok';\n\t}\n\tif ( lowerSrc.includes( 'wordpress.tv' ) ) {\n\t\treturn 'wordpress-tv';\n\t}\n\n\treturn null;\n}\n\n/**\n * Modifies an iframe src URL to add background video parameters.\n * Automatically detects the provider from the URL.\n *\n * @param {string} src The iframe src URL.\n * @return {string} The modified URL.\n */\nexport function getBackgroundVideoSrc( src ) {\n\tif ( ! src ) {\n\t\treturn src;\n\t}\n\n\ttry {\n\t\tconst url = new URL( src );\n\n\t\t// Detect provider from the iframe src URL\n\t\tconst provider = detectProviderFromSrc( src );\n\n\t\t// Add provider-specific parameters for background video behavior\n\t\tswitch ( provider ) {\n\t\t\tcase 'youtube':\n\t\t\t\t// YouTube parameters for background video\n\t\t\t\turl.searchParams.set( 'autoplay', '1' );\n\t\t\t\turl.searchParams.set( 'mute', '1' );\n\t\t\t\turl.searchParams.set( 'loop', '1' );\n\t\t\t\turl.searchParams.set( 'controls', '0' );\n\t\t\t\turl.searchParams.set( 'showinfo', '0' );\n\t\t\t\turl.searchParams.set( 'modestbranding', '1' );\n\t\t\t\turl.searchParams.set( 'playsinline', '1' );\n\t\t\t\turl.searchParams.set( 'rel', '0' );\n\t\t\t\t// For loop to work, we need the playlist parameter\n\t\t\t\tconst videoId = url.pathname.split( '/' ).pop();\n\t\t\t\tif ( videoId ) {\n\t\t\t\t\turl.searchParams.set( 'playlist', videoId );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'vimeo':\n\t\t\t\t// Vimeo parameters for background video\n\t\t\t\turl.searchParams.set( 'autoplay', '1' );\n\t\t\t\turl.searchParams.set( 'muted', '1' );\n\t\t\t\turl.searchParams.set( 'loop', '1' );\n\t\t\t\turl.searchParams.set( 'background', '1' );\n\t\t\t\turl.searchParams.set( 'controls', '0' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'videopress':\n\t\t\tcase 'wordpress-tv':\n\t\t\t\t// VideoPress parameters\n\t\t\t\turl.searchParams.set( 'autoplay', '1' );\n\t\t\t\turl.searchParams.set( 'loop', '1' );\n\t\t\t\turl.searchParams.set( 'muted', '1' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// Generic parameters that might work for other providers\n\t\t\t\turl.searchParams.set( 'autoplay', '1' );\n\t\t\t\turl.searchParams.set( 'muted', '1' );\n\t\t\t\turl.searchParams.set( 'loop', '1' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn url.toString();\n\t} catch ( error ) {\n\t\t// If URL parsing fails, return original src\n\t\treturn src;\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// packages/block-library/src/cover/index.js
|
|
2
2
|
import { __ } from "@wordpress/i18n";
|
|
3
3
|
import { cover as icon } from "@wordpress/icons";
|
|
4
|
+
import { privateApis as blocksPrivateApis } from "@wordpress/blocks";
|
|
4
5
|
import initBlock from "../utils/init-block";
|
|
5
6
|
import deprecated from "./deprecated";
|
|
6
7
|
import edit from "./edit";
|
|
@@ -8,6 +9,8 @@ import metadata from "./block.json";
|
|
|
8
9
|
import save from "./save";
|
|
9
10
|
import transforms from "./transforms";
|
|
10
11
|
import variations from "./variations";
|
|
12
|
+
import { unlock } from "../lock-unlock";
|
|
13
|
+
var { fieldsKey, formKey } = unlock(blocksPrivateApis);
|
|
11
14
|
var { name } = metadata;
|
|
12
15
|
var settings = {
|
|
13
16
|
icon,
|
|
@@ -41,6 +44,31 @@ var settings = {
|
|
|
41
44
|
deprecated,
|
|
42
45
|
variations
|
|
43
46
|
};
|
|
47
|
+
if (window.__experimentalContentOnlyPatternInsertion) {
|
|
48
|
+
settings[fieldsKey] = [
|
|
49
|
+
{
|
|
50
|
+
id: "background",
|
|
51
|
+
label: __("Background"),
|
|
52
|
+
type: "media",
|
|
53
|
+
mapping: {
|
|
54
|
+
type: "backgroundType",
|
|
55
|
+
id: "id",
|
|
56
|
+
url: "url",
|
|
57
|
+
alt: "alt",
|
|
58
|
+
featuredImage: "useFeaturedImage"
|
|
59
|
+
},
|
|
60
|
+
args: {
|
|
61
|
+
// TODO - How to support custom gradient?
|
|
62
|
+
// Build it into Media, or use a custom control?
|
|
63
|
+
allowedTypes: ["image", "video"],
|
|
64
|
+
multiple: false
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
];
|
|
68
|
+
settings[formKey] = {
|
|
69
|
+
fields: ["content"]
|
|
70
|
+
};
|
|
71
|
+
}
|
|
44
72
|
var init = () => initBlock({ name, metadata, settings });
|
|
45
73
|
export {
|
|
46
74
|
init,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cover/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { cover as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\nimport variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tcustomOverlayColor: '#065174',\n\t\t\tdimRatio: 40,\n\t\t\turl: 'https://s.w.org/images/core/5.3/Windbuchencom.jpg',\n\t\t\tstyle: {\n\t\t\t\ttypography: {\n\t\t\t\t\tfontSize: 48,\n\t\t\t\t},\n\t\t\t\tcolor: {\n\t\t\t\t\ttext: 'white',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: `<strong>${ __( 'Snow Patrol' ) }</strong>`,\n\t\t\t\t\talign: 'center',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tsave,\n\tedit,\n\tdeprecated,\n\tvariations,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,SAAS,YAAY;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { cover as icon } from '@wordpress/icons';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\nimport variations from './variations';\nimport { unlock } from '../lock-unlock';\n\nconst { fieldsKey, formKey } = unlock( blocksPrivateApis );\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tcustomOverlayColor: '#065174',\n\t\t\tdimRatio: 40,\n\t\t\turl: 'https://s.w.org/images/core/5.3/Windbuchencom.jpg',\n\t\t\tstyle: {\n\t\t\t\ttypography: {\n\t\t\t\t\tfontSize: 48,\n\t\t\t\t},\n\t\t\t\tcolor: {\n\t\t\t\t\ttext: 'white',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: `<strong>${ __( 'Snow Patrol' ) }</strong>`,\n\t\t\t\t\talign: 'center',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tsave,\n\tedit,\n\tdeprecated,\n\tvariations,\n};\n\nif ( window.__experimentalContentOnlyPatternInsertion ) {\n\tsettings[ fieldsKey ] = [\n\t\t{\n\t\t\tid: 'background',\n\t\t\tlabel: __( 'Background' ),\n\t\t\ttype: 'media',\n\t\t\tmapping: {\n\t\t\t\ttype: 'backgroundType',\n\t\t\t\tid: 'id',\n\t\t\t\turl: 'url',\n\t\t\t\talt: 'alt',\n\t\t\t\tfeaturedImage: 'useFeaturedImage',\n\t\t\t},\n\t\t\targs: {\n\t\t\t\t// TODO - How to support custom gradient?\n\t\t\t\t// Build it into Media, or use a custom control?\n\t\t\t\tallowedTypes: [ 'image', 'video' ],\n\t\t\t\tmultiple: false,\n\t\t\t},\n\t\t},\n\t];\n\tsettings[ formKey ] = {\n\t\tfields: [ 'content' ],\n\t};\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,SAAS,YAAY;AAC9B,SAAS,eAAe,yBAAyB;AAKjD,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AAEvB,IAAM,EAAE,WAAW,QAAQ,IAAI,OAAQ,iBAAkB;AAEzD,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,QACN,YAAY;AAAA,UACX,UAAU;AAAA,QACX;AAAA,QACA,OAAO;AAAA,UACN,MAAM;AAAA,QACP;AAAA,MACD;AAAA,IACD;AAAA,IACA,aAAa;AAAA,MACZ;AAAA,QACC,MAAM;AAAA,QACN,YAAY;AAAA,UACX,SAAS,WAAY,GAAI,aAAc,CAAE;AAAA,UACzC,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAK,OAAO,2CAA4C;AACvD,WAAU,SAAU,IAAI;AAAA,IACvB;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,YAAa;AAAA,MACxB,MAAM;AAAA,MACN,SAAS;AAAA,QACR,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,eAAe;AAAA,MAChB;AAAA,MACA,MAAM;AAAA;AAAA;AAAA,QAGL,cAAc,CAAE,SAAS,OAAQ;AAAA,QACjC,UAAU;AAAA,MACX;AAAA,IACD;AAAA,EACD;AACA,WAAU,OAAQ,IAAI;AAAA,IACrB,QAAQ,CAAE,SAAU;AAAA,EACrB;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
IMAGE_BACKGROUND_TYPE,
|
|
11
11
|
VIDEO_BACKGROUND_TYPE,
|
|
12
|
+
EMBED_VIDEO_BACKGROUND_TYPE,
|
|
12
13
|
dimRatioToClass,
|
|
13
14
|
isContentPositionCenter,
|
|
14
15
|
getPositionClassName,
|
|
@@ -46,6 +47,7 @@ function save({ attributes }) {
|
|
|
46
47
|
const minHeight = minHeightProp && minHeightUnit ? `${minHeightProp}${minHeightUnit}` : minHeightProp;
|
|
47
48
|
const isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;
|
|
48
49
|
const isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;
|
|
50
|
+
const isEmbedVideoBackground = EMBED_VIDEO_BACKGROUND_TYPE === backgroundType;
|
|
49
51
|
const isImgElement = !(hasParallax || isRepeated);
|
|
50
52
|
const style = {
|
|
51
53
|
minHeight: minHeight || void 0
|
|
@@ -117,6 +119,17 @@ function save({ attributes }) {
|
|
|
117
119
|
"data-object-position": objectPosition
|
|
118
120
|
}
|
|
119
121
|
),
|
|
122
|
+
isEmbedVideoBackground && url && /* @__PURE__ */ jsx(
|
|
123
|
+
"figure",
|
|
124
|
+
{
|
|
125
|
+
className: clsx(
|
|
126
|
+
"wp-block-cover__video-background",
|
|
127
|
+
"wp-block-cover__embed-background",
|
|
128
|
+
"wp-block-embed"
|
|
129
|
+
),
|
|
130
|
+
children: /* @__PURE__ */ jsx("div", { className: "wp-block-embed__wrapper", children: url })
|
|
131
|
+
}
|
|
132
|
+
),
|
|
120
133
|
/* @__PURE__ */ jsx(
|
|
121
134
|
"span",
|
|
122
135
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cover/save.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseInnerBlocksProps,\n\tgetColorClassName,\n\t__experimentalGetGradientClass,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tdimRatioToClass,\n\tisContentPositionCenter,\n\tgetPositionClassName,\n\tmediaPosition,\n} from './shared';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tbackgroundType,\n\t\tgradient,\n\t\tcontentPosition,\n\t\tcustomGradient,\n\t\tcustomOverlayColor,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\tuseFeaturedImage,\n\t\thasParallax,\n\t\tisDark,\n\t\tisRepeated,\n\t\toverlayColor,\n\t\turl,\n\t\talt,\n\t\tid,\n\t\tminHeight: minHeightProp,\n\t\tminHeightUnit,\n\t\ttagName: Tag,\n\t\tsizeSlug,\n\t\tposter,\n\t} = attributes;\n\tconst overlayColorClass = getColorClassName(\n\t\t'background-color',\n\t\toverlayColor\n\t);\n\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\tconst minHeight =\n\t\tminHeightProp && minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\tconst style = {\n\t\tminHeight: minHeight || undefined,\n\t};\n\n\tconst bgStyle = {\n\t\tbackgroundColor: ! overlayColorClass ? customOverlayColor : undefined,\n\t\tbackground: customGradient ? customGradient : undefined,\n\t};\n\n\tconst objectPosition =\n\t\t// prettier-ignore\n\t\tfocalPoint && isImgElement\n\t\t\t ? mediaPosition(focalPoint)\n\t\t\t : undefined;\n\n\tconst backgroundImage = url ? `url(${ url })` : undefined;\n\n\tconst backgroundPosition = mediaPosition( focalPoint );\n\n\tconst classes = clsx(\n\t\t{\n\t\t\t'is-light': ! isDark,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t\t'has-custom-content-position':\n\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t},\n\t\tgetPositionClassName( contentPosition )\n\t);\n\n\tconst imgClasses = clsx(\n\t\t'wp-block-cover__image-background',\n\t\tid ? `wp-image-${ id }` : null,\n\t\t{\n\t\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t}\n\t);\n\n\tconst gradientValue = gradient || customGradient;\n\n\treturn (\n\t\t<Tag { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t{ ! useFeaturedImage &&\n\t\t\t\tisImageBackground &&\n\t\t\t\turl &&\n\t\t\t\t( isImgElement ? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ imgClasses }\n\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\trole={ alt ? 'img' : undefined }\n\t\t\t\t\t\taria-label={ alt ? alt : undefined }\n\t\t\t\t\t\tclassName={ imgClasses }\n\t\t\t\t\t\tstyle={ { backgroundPosition, backgroundImage } }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t{ isVideoBackground && url && (\n\t\t\t\t<video\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t) }\n\t\t\t\t\tautoPlay\n\t\t\t\t\tmuted\n\t\t\t\t\tloop\n\t\t\t\t\tplaysInline\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ /* The `wp-block-cover__background` needs to be immediately before\n\t\t\tthe `wp-block-cover__inner-container`, so the exclusion CSS selector\n\t\t\t`.wp-block-cover__background + .wp-block-cover__inner-container`\n\t\t\tworks properly. If it needs to be changed in the future, the\n\t\t\tselector for the backward compatibility for v14 deprecation also\n\t\t\tneeds change. */ }\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\toverlayColorClass,\n\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t{\n\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\tstyle={ bgStyle }\n\t\t\t/>\n\n\t\t\t<div\n\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</Tag>\n\t);\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,OAAO,UAAU;AAKjB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAKP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseInnerBlocksProps,\n\tgetColorClassName,\n\t__experimentalGetGradientClass,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tEMBED_VIDEO_BACKGROUND_TYPE,\n\tdimRatioToClass,\n\tisContentPositionCenter,\n\tgetPositionClassName,\n\tmediaPosition,\n} from './shared';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tbackgroundType,\n\t\tgradient,\n\t\tcontentPosition,\n\t\tcustomGradient,\n\t\tcustomOverlayColor,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\tuseFeaturedImage,\n\t\thasParallax,\n\t\tisDark,\n\t\tisRepeated,\n\t\toverlayColor,\n\t\turl,\n\t\talt,\n\t\tid,\n\t\tminHeight: minHeightProp,\n\t\tminHeightUnit,\n\t\ttagName: Tag,\n\t\tsizeSlug,\n\t\tposter,\n\t} = attributes;\n\tconst overlayColorClass = getColorClassName(\n\t\t'background-color',\n\t\toverlayColor\n\t);\n\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\tconst minHeight =\n\t\tminHeightProp && minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\tconst isEmbedVideoBackground =\n\t\tEMBED_VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\tconst style = {\n\t\tminHeight: minHeight || undefined,\n\t};\n\n\tconst bgStyle = {\n\t\tbackgroundColor: ! overlayColorClass ? customOverlayColor : undefined,\n\t\tbackground: customGradient ? customGradient : undefined,\n\t};\n\n\tconst objectPosition =\n\t\t// prettier-ignore\n\t\tfocalPoint && isImgElement\n\t\t\t ? mediaPosition(focalPoint)\n\t\t\t : undefined;\n\n\tconst backgroundImage = url ? `url(${ url })` : undefined;\n\n\tconst backgroundPosition = mediaPosition( focalPoint );\n\n\tconst classes = clsx(\n\t\t{\n\t\t\t'is-light': ! isDark,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t\t'has-custom-content-position':\n\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t},\n\t\tgetPositionClassName( contentPosition )\n\t);\n\n\tconst imgClasses = clsx(\n\t\t'wp-block-cover__image-background',\n\t\tid ? `wp-image-${ id }` : null,\n\t\t{\n\t\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t}\n\t);\n\n\tconst gradientValue = gradient || customGradient;\n\n\treturn (\n\t\t<Tag { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t{ ! useFeaturedImage &&\n\t\t\t\tisImageBackground &&\n\t\t\t\turl &&\n\t\t\t\t( isImgElement ? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ imgClasses }\n\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\trole={ alt ? 'img' : undefined }\n\t\t\t\t\t\taria-label={ alt ? alt : undefined }\n\t\t\t\t\t\tclassName={ imgClasses }\n\t\t\t\t\t\tstyle={ { backgroundPosition, backgroundImage } }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t{ isVideoBackground && url && (\n\t\t\t\t<video\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t) }\n\t\t\t\t\tautoPlay\n\t\t\t\t\tmuted\n\t\t\t\t\tloop\n\t\t\t\t\tplaysInline\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isEmbedVideoBackground && url && (\n\t\t\t\t<figure\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t'wp-block-cover__embed-background',\n\t\t\t\t\t\t'wp-block-embed'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"wp-block-embed__wrapper\">{ url }</div>\n\t\t\t\t</figure>\n\t\t\t) }\n\n\t\t\t{ /* The `wp-block-cover__background` needs to be immediately before\n\t\t\tthe `wp-block-cover__inner-container`, so the exclusion CSS selector\n\t\t\t`.wp-block-cover__background + .wp-block-cover__inner-container`\n\t\t\tworks properly. If it needs to be changed in the future, the\n\t\t\tselector for the backward compatibility for v14 deprecation also\n\t\t\tneeds change. */ }\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\toverlayColorClass,\n\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t{\n\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\tstyle={ bgStyle }\n\t\t\t/>\n\n\t\t\t<div\n\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</Tag>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14,6 +14,7 @@ var POSITION_CLASSNAMES = {
|
|
|
14
14
|
};
|
|
15
15
|
var IMAGE_BACKGROUND_TYPE = "image";
|
|
16
16
|
var VIDEO_BACKGROUND_TYPE = "video";
|
|
17
|
+
var EMBED_VIDEO_BACKGROUND_TYPE = "embed-video";
|
|
17
18
|
var COVER_MIN_HEIGHT = 50;
|
|
18
19
|
var COVER_MAX_HEIGHT = 1e3;
|
|
19
20
|
var COVER_DEFAULT_HEIGHT = 300;
|
|
@@ -70,6 +71,7 @@ export {
|
|
|
70
71
|
COVER_MAX_HEIGHT,
|
|
71
72
|
COVER_MIN_HEIGHT,
|
|
72
73
|
DEFAULT_FOCAL_POINT,
|
|
74
|
+
EMBED_VIDEO_BACKGROUND_TYPE,
|
|
73
75
|
IMAGE_BACKGROUND_TYPE,
|
|
74
76
|
VIDEO_BACKGROUND_TYPE,
|
|
75
77
|
attributesFromMedia,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cover/shared.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlobTypeByURL, isBlobURL } from '@wordpress/blob';\n\nconst POSITION_CLASSNAMES = {\n\t'top left': 'is-position-top-left',\n\t'top center': 'is-position-top-center',\n\t'top right': 'is-position-top-right',\n\t'center left': 'is-position-center-left',\n\t'center center': 'is-position-center-center',\n\tcenter: 'is-position-center-center',\n\t'center right': 'is-position-center-right',\n\t'bottom left': 'is-position-bottom-left',\n\t'bottom center': 'is-position-bottom-center',\n\t'bottom right': 'is-position-bottom-right',\n};\n\nexport const IMAGE_BACKGROUND_TYPE = 'image';\nexport const VIDEO_BACKGROUND_TYPE = 'video';\nexport const COVER_MIN_HEIGHT = 50;\nexport const COVER_MAX_HEIGHT = 1000;\nexport const COVER_DEFAULT_HEIGHT = 300;\nexport const DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };\nexport const ALLOWED_MEDIA_TYPES = [ 'image', 'video' ];\n\nexport function mediaPosition( { x, y } = DEFAULT_FOCAL_POINT ) {\n\treturn `${ Math.round( x * 100 ) }% ${ Math.round( y * 100 ) }%`;\n}\n\nexport function dimRatioToClass( ratio ) {\n\treturn ratio === 50 || ratio === undefined\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n\nexport function attributesFromMedia( media ) {\n\tif ( ! media || ( ! media.url && ! media.src ) ) {\n\t\treturn {\n\t\t\turl: undefined,\n\t\t\tid: undefined,\n\t\t};\n\t}\n\n\tif ( isBlobURL( media.url ) ) {\n\t\tmedia.type = getBlobTypeByURL( media.url );\n\t}\n\n\tlet mediaType;\n\t// For media selections originated from a file upload.\n\tif ( media.media_type ) {\n\t\tif ( media.media_type === IMAGE_BACKGROUND_TYPE ) {\n\t\t\tmediaType = IMAGE_BACKGROUND_TYPE;\n\t\t} else {\n\t\t\t// Only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t// Videos contain the media type of 'file' in the object returned from the rest api.\n\t\t\tmediaType = VIDEO_BACKGROUND_TYPE;\n\t\t}\n\t\t// For media selections originated from existing files in the media library.\n\t} else if (\n\t\tmedia.type &&\n\t\t( media.type === IMAGE_BACKGROUND_TYPE ||\n\t\t\tmedia.type === VIDEO_BACKGROUND_TYPE )\n\t) {\n\t\tmediaType = media.type;\n\t} else {\n\t\treturn;\n\t}\n\n\treturn {\n\t\turl: media.url || media.src,\n\t\tid: media.id,\n\t\talt: media?.alt,\n\t\tbackgroundType: mediaType,\n\t\t...( mediaType === VIDEO_BACKGROUND_TYPE\n\t\t\t? { hasParallax: undefined }\n\t\t\t: {} ),\n\t};\n}\n\n/**\n * Checks of the contentPosition is the center (default) position.\n *\n * @param {string} contentPosition The current content position.\n * @return {boolean} Whether the contentPosition is center.\n */\nexport function isContentPositionCenter( contentPosition ) {\n\treturn (\n\t\t! contentPosition ||\n\t\tcontentPosition === 'center center' ||\n\t\tcontentPosition === 'center'\n\t);\n}\n\n/**\n * Retrieves the className for the current contentPosition.\n * The default position (center) will not have a className.\n *\n * @param {string} contentPosition The current content position.\n * @return {string} The className assigned to the contentPosition.\n */\nexport function getPositionClassName( contentPosition ) {\n\t/*\n\t * Only render a className if the contentPosition is not center (the default).\n\t */\n\tif ( isContentPositionCenter( contentPosition ) ) {\n\t\treturn '';\n\t}\n\n\treturn POSITION_CLASSNAMES[ contentPosition ];\n}\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,kBAAkB,iBAAiB;AAE5C,IAAM,sBAAsB;AAAA,EAC3B,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,gBAAgB;AACjB;AAEO,IAAM,wBAAwB;AAC9B,IAAM,wBAAwB;AAC9B,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,sBAAsB,EAAE,GAAG,KAAK,GAAG,IAAI;AAC7C,IAAM,sBAAsB,CAAE,SAAS,OAAQ;AAE/C,SAAS,cAAe,EAAE,GAAG,EAAE,IAAI,qBAAsB;AAC/D,SAAO,GAAI,KAAK,MAAO,IAAI,GAAI,CAAE,KAAM,KAAK,MAAO,IAAI,GAAI,CAAE;AAC9D;AAEO,SAAS,gBAAiB,OAAQ;AACxC,SAAO,UAAU,MAAM,UAAU,SAC9B,OACA,wBAAwB,KAAK,KAAK,MAAO,QAAQ,EAAG;AACxD;AAEO,SAAS,oBAAqB,OAAQ;AAC5C,MAAK,CAAE,SAAW,CAAE,MAAM,OAAO,CAAE,MAAM,KAAQ;AAChD,WAAO;AAAA,MACN,KAAK;AAAA,MACL,IAAI;AAAA,IACL;AAAA,EACD;AAEA,MAAK,UAAW,MAAM,GAAI,GAAI;AAC7B,UAAM,OAAO,iBAAkB,MAAM,GAAI;AAAA,EAC1C;AAEA,MAAI;AAEJ,MAAK,MAAM,YAAa;AACvB,QAAK,MAAM,eAAe,uBAAwB;AACjD,kBAAY;AAAA,IACb,OAAO;AAGN,kBAAY;AAAA,IACb;AAAA,EAED,WACC,MAAM,SACJ,MAAM,SAAS,yBAChB,MAAM,SAAS,wBACf;AACD,gBAAY,MAAM;AAAA,EACnB,OAAO;AACN;AAAA,EACD;AAEA,SAAO;AAAA,IACN,KAAK,MAAM,OAAO,MAAM;AAAA,IACxB,IAAI,MAAM;AAAA,IACV,KAAK,OAAO;AAAA,IACZ,gBAAgB;AAAA,IAChB,GAAK,cAAc,wBAChB,EAAE,aAAa,OAAU,IACzB,CAAC;AAAA,EACL;AACD;AAQO,SAAS,wBAAyB,iBAAkB;AAC1D,SACC,CAAE,mBACF,oBAAoB,mBACpB,oBAAoB;AAEtB;AASO,SAAS,qBAAsB,iBAAkB;AAIvD,MAAK,wBAAyB,eAAgB,GAAI;AACjD,WAAO;AAAA,EACR;AAEA,SAAO,oBAAqB,eAAgB;AAC7C;",
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlobTypeByURL, isBlobURL } from '@wordpress/blob';\n\nconst POSITION_CLASSNAMES = {\n\t'top left': 'is-position-top-left',\n\t'top center': 'is-position-top-center',\n\t'top right': 'is-position-top-right',\n\t'center left': 'is-position-center-left',\n\t'center center': 'is-position-center-center',\n\tcenter: 'is-position-center-center',\n\t'center right': 'is-position-center-right',\n\t'bottom left': 'is-position-bottom-left',\n\t'bottom center': 'is-position-bottom-center',\n\t'bottom right': 'is-position-bottom-right',\n};\n\nexport const IMAGE_BACKGROUND_TYPE = 'image';\nexport const VIDEO_BACKGROUND_TYPE = 'video';\nexport const EMBED_VIDEO_BACKGROUND_TYPE = 'embed-video';\nexport const COVER_MIN_HEIGHT = 50;\nexport const COVER_MAX_HEIGHT = 1000;\nexport const COVER_DEFAULT_HEIGHT = 300;\nexport const DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };\nexport const ALLOWED_MEDIA_TYPES = [ 'image', 'video' ];\n\nexport function mediaPosition( { x, y } = DEFAULT_FOCAL_POINT ) {\n\treturn `${ Math.round( x * 100 ) }% ${ Math.round( y * 100 ) }%`;\n}\n\nexport function dimRatioToClass( ratio ) {\n\treturn ratio === 50 || ratio === undefined\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n\nexport function attributesFromMedia( media ) {\n\tif ( ! media || ( ! media.url && ! media.src ) ) {\n\t\treturn {\n\t\t\turl: undefined,\n\t\t\tid: undefined,\n\t\t};\n\t}\n\n\tif ( isBlobURL( media.url ) ) {\n\t\tmedia.type = getBlobTypeByURL( media.url );\n\t}\n\n\tlet mediaType;\n\t// For media selections originated from a file upload.\n\tif ( media.media_type ) {\n\t\tif ( media.media_type === IMAGE_BACKGROUND_TYPE ) {\n\t\t\tmediaType = IMAGE_BACKGROUND_TYPE;\n\t\t} else {\n\t\t\t// Only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t// Videos contain the media type of 'file' in the object returned from the rest api.\n\t\t\tmediaType = VIDEO_BACKGROUND_TYPE;\n\t\t}\n\t\t// For media selections originated from existing files in the media library.\n\t} else if (\n\t\tmedia.type &&\n\t\t( media.type === IMAGE_BACKGROUND_TYPE ||\n\t\t\tmedia.type === VIDEO_BACKGROUND_TYPE )\n\t) {\n\t\tmediaType = media.type;\n\t} else {\n\t\treturn;\n\t}\n\n\treturn {\n\t\turl: media.url || media.src,\n\t\tid: media.id,\n\t\talt: media?.alt,\n\t\tbackgroundType: mediaType,\n\t\t...( mediaType === VIDEO_BACKGROUND_TYPE\n\t\t\t? { hasParallax: undefined }\n\t\t\t: {} ),\n\t};\n}\n\n/**\n * Checks of the contentPosition is the center (default) position.\n *\n * @param {string} contentPosition The current content position.\n * @return {boolean} Whether the contentPosition is center.\n */\nexport function isContentPositionCenter( contentPosition ) {\n\treturn (\n\t\t! contentPosition ||\n\t\tcontentPosition === 'center center' ||\n\t\tcontentPosition === 'center'\n\t);\n}\n\n/**\n * Retrieves the className for the current contentPosition.\n * The default position (center) will not have a className.\n *\n * @param {string} contentPosition The current content position.\n * @return {string} The className assigned to the contentPosition.\n */\nexport function getPositionClassName( contentPosition ) {\n\t/*\n\t * Only render a className if the contentPosition is not center (the default).\n\t */\n\tif ( isContentPositionCenter( contentPosition ) ) {\n\t\treturn '';\n\t}\n\n\treturn POSITION_CLASSNAMES[ contentPosition ];\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,kBAAkB,iBAAiB;AAE5C,IAAM,sBAAsB;AAAA,EAC3B,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,gBAAgB;AACjB;AAEO,IAAM,wBAAwB;AAC9B,IAAM,wBAAwB;AAC9B,IAAM,8BAA8B;AACpC,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,sBAAsB,EAAE,GAAG,KAAK,GAAG,IAAI;AAC7C,IAAM,sBAAsB,CAAE,SAAS,OAAQ;AAE/C,SAAS,cAAe,EAAE,GAAG,EAAE,IAAI,qBAAsB;AAC/D,SAAO,GAAI,KAAK,MAAO,IAAI,GAAI,CAAE,KAAM,KAAK,MAAO,IAAI,GAAI,CAAE;AAC9D;AAEO,SAAS,gBAAiB,OAAQ;AACxC,SAAO,UAAU,MAAM,UAAU,SAC9B,OACA,wBAAwB,KAAK,KAAK,MAAO,QAAQ,EAAG;AACxD;AAEO,SAAS,oBAAqB,OAAQ;AAC5C,MAAK,CAAE,SAAW,CAAE,MAAM,OAAO,CAAE,MAAM,KAAQ;AAChD,WAAO;AAAA,MACN,KAAK;AAAA,MACL,IAAI;AAAA,IACL;AAAA,EACD;AAEA,MAAK,UAAW,MAAM,GAAI,GAAI;AAC7B,UAAM,OAAO,iBAAkB,MAAM,GAAI;AAAA,EAC1C;AAEA,MAAI;AAEJ,MAAK,MAAM,YAAa;AACvB,QAAK,MAAM,eAAe,uBAAwB;AACjD,kBAAY;AAAA,IACb,OAAO;AAGN,kBAAY;AAAA,IACb;AAAA,EAED,WACC,MAAM,SACJ,MAAM,SAAS,yBAChB,MAAM,SAAS,wBACf;AACD,gBAAY,MAAM;AAAA,EACnB,OAAO;AACN;AAAA,EACD;AAEA,SAAO;AAAA,IACN,KAAK,MAAM,OAAO,MAAM;AAAA,IACxB,IAAI,MAAM;AAAA,IACV,KAAK,OAAO;AAAA,IACZ,gBAAgB;AAAA,IAChB,GAAK,cAAc,wBAChB,EAAE,aAAa,OAAU,IACzB,CAAC;AAAA,EACL;AACD;AAQO,SAAS,wBAAyB,iBAAkB;AAC1D,SACC,CAAE,mBACF,oBAAoB,mBACpB,oBAAoB;AAEtB;AASO,SAAS,qBAAsB,iBAAkB;AAIvD,MAAK,wBAAyB,eAAgB,GAAI;AACjD,WAAO;AAAA,EACR;AAEA,SAAO,oBAAqB,eAAgB;AAC7C;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
// packages/block-library/src/details/index.js
|
|
2
2
|
import { details as icon } from "@wordpress/icons";
|
|
3
3
|
import { __, sprintf } from "@wordpress/i18n";
|
|
4
|
+
import { privateApis as blocksPrivateApis } from "@wordpress/blocks";
|
|
4
5
|
import initBlock from "../utils/init-block";
|
|
5
6
|
import metadata from "./block.json";
|
|
6
7
|
import edit from "./edit";
|
|
7
8
|
import save from "./save";
|
|
8
9
|
import transforms from "./transforms";
|
|
10
|
+
import { unlock } from "../lock-unlock";
|
|
11
|
+
var { fieldsKey, formKey } = unlock(blocksPrivateApis);
|
|
9
12
|
var { name } = metadata;
|
|
10
13
|
var settings = {
|
|
11
14
|
icon,
|
|
@@ -44,6 +47,18 @@ var settings = {
|
|
|
44
47
|
edit,
|
|
45
48
|
transforms
|
|
46
49
|
};
|
|
50
|
+
if (window.__experimentalContentOnlyPatternInsertion) {
|
|
51
|
+
settings[fieldsKey] = [
|
|
52
|
+
{
|
|
53
|
+
id: "summary",
|
|
54
|
+
label: __("Summary"),
|
|
55
|
+
type: "richtext"
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
settings[formKey] = {
|
|
59
|
+
fields: ["summary"]
|
|
60
|
+
};
|
|
61
|
+
}
|
|
47
62
|
var init = () => initBlock({ name, metadata, settings });
|
|
48
63
|
export {
|
|
49
64
|
init,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/details/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { details as icon } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tsummary: __( 'La Mancha' ),\n\t\t\tshowContent: true,\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t'In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst { summary } = attributes;\n\n\t\tconst customName = attributes?.metadata?.name;\n\t\tconst hasSummary = summary?.trim().length > 0;\n\n\t\t// In the list view, use the block's summary as the label.\n\t\t// If the summary is empty, fall back to the default label.\n\t\tif ( context === 'list-view' && ( customName || hasSummary ) ) {\n\t\t\treturn customName || summary;\n\t\t}\n\n\t\tif ( context === 'accessibility' ) {\n\t\t\treturn ! hasSummary\n\t\t\t\t? __( 'Details. Empty.' )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: accessibility text; summary title. */\n\t\t\t\t\t\t__( 'Details. %s' ),\n\t\t\t\t\t\tsummary\n\t\t\t\t );\n\t\t}\n\t},\n\tsave,\n\tedit,\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,WAAW,YAAY;AAChC,SAAS,IAAI,eAAe;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { details as icon } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport transforms from './transforms';\nimport { unlock } from '../lock-unlock';\n\nconst { fieldsKey, formKey } = unlock( blocksPrivateApis );\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tsummary: __( 'La Mancha' ),\n\t\t\tshowContent: true,\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t'In a village of La Mancha, the name of which I have no desire to call to mind, there lived not long since one of those gentlemen that keep a lance in the lance-rack, an old buckler, a lean hack, and a greyhound for coursing.'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst { summary } = attributes;\n\n\t\tconst customName = attributes?.metadata?.name;\n\t\tconst hasSummary = summary?.trim().length > 0;\n\n\t\t// In the list view, use the block's summary as the label.\n\t\t// If the summary is empty, fall back to the default label.\n\t\tif ( context === 'list-view' && ( customName || hasSummary ) ) {\n\t\t\treturn customName || summary;\n\t\t}\n\n\t\tif ( context === 'accessibility' ) {\n\t\t\treturn ! hasSummary\n\t\t\t\t? __( 'Details. Empty.' )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: accessibility text; summary title. */\n\t\t\t\t\t\t__( 'Details. %s' ),\n\t\t\t\t\t\tsummary\n\t\t\t\t );\n\t\t}\n\t},\n\tsave,\n\tedit,\n\ttransforms,\n};\n\nif ( window.__experimentalContentOnlyPatternInsertion ) {\n\tsettings[ fieldsKey ] = [\n\t\t{\n\t\t\tid: 'summary',\n\t\t\tlabel: __( 'Summary' ),\n\t\t\ttype: 'richtext',\n\t\t},\n\t];\n\tsettings[ formKey ] = {\n\t\tfields: [ 'summary' ],\n\t};\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,WAAW,YAAY;AAChC,SAAS,IAAI,eAAe;AAC5B,SAAS,eAAe,yBAAyB;AAKjD,OAAO,eAAe;AACtB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AAEvB,IAAM,EAAE,WAAW,QAAQ,IAAI,OAAQ,iBAAkB;AAEzD,IAAM,EAAE,KAAK,IAAI;AAGV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,SAAS,GAAI,WAAY;AAAA,MACzB,aAAa;AAAA,IACd;AAAA,IACA,aAAa;AAAA,MACZ;AAAA,QACC,MAAM;AAAA,QACN,YAAY;AAAA,UACX,SAAS;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,oBAAqB,YAAY,EAAE,QAAQ,GAAI;AAC9C,UAAM,EAAE,QAAQ,IAAI;AAEpB,UAAM,aAAa,YAAY,UAAU;AACzC,UAAM,aAAa,SAAS,KAAK,EAAE,SAAS;AAI5C,QAAK,YAAY,gBAAiB,cAAc,aAAe;AAC9D,aAAO,cAAc;AAAA,IACtB;AAEA,QAAK,YAAY,iBAAkB;AAClC,aAAO,CAAE,aACN,GAAI,iBAAkB,IACtB;AAAA;AAAA,QAEA,GAAI,aAAc;AAAA,QAClB;AAAA,MACA;AAAA,IACJ;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAK,OAAO,2CAA4C;AACvD,WAAU,SAAU,IAAI;AAAA,IACvB;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,SAAU;AAAA,MACrB,MAAM;AAAA,IACP;AAAA,EACD;AACA,WAAU,OAAQ,IAAI;AAAA,IACrB,QAAQ,CAAE,SAAU;AAAA,EACrB;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// packages/block-library/src/file/index.js
|
|
2
|
-
import { _x } from "@wordpress/i18n";
|
|
2
|
+
import { _x, __ } from "@wordpress/i18n";
|
|
3
3
|
import { file as icon } from "@wordpress/icons";
|
|
4
|
+
import { privateApis as blocksPrivateApis } from "@wordpress/blocks";
|
|
4
5
|
import initBlock from "../utils/init-block";
|
|
5
6
|
import deprecated from "./deprecated";
|
|
6
7
|
import edit from "./edit";
|
|
7
8
|
import metadata from "./block.json";
|
|
8
9
|
import save from "./save";
|
|
9
10
|
import transforms from "./transforms";
|
|
11
|
+
import { unlock } from "../lock-unlock";
|
|
12
|
+
var { fieldsKey, formKey } = unlock(blocksPrivateApis);
|
|
10
13
|
var { name } = metadata;
|
|
11
14
|
var settings = {
|
|
12
15
|
icon,
|
|
@@ -21,6 +24,36 @@ var settings = {
|
|
|
21
24
|
edit,
|
|
22
25
|
save
|
|
23
26
|
};
|
|
27
|
+
if (window.__experimentalContentOnlyPatternInsertion) {
|
|
28
|
+
settings[fieldsKey] = [
|
|
29
|
+
{
|
|
30
|
+
id: "file",
|
|
31
|
+
label: __("File"),
|
|
32
|
+
type: "media",
|
|
33
|
+
mapping: {
|
|
34
|
+
id: "id",
|
|
35
|
+
url: "href"
|
|
36
|
+
},
|
|
37
|
+
args: {
|
|
38
|
+
allowedTypes: [],
|
|
39
|
+
multiple: false
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "fileName",
|
|
44
|
+
label: __("Filename"),
|
|
45
|
+
type: "richtext"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "downloadButtonText",
|
|
49
|
+
label: __("Button Text"),
|
|
50
|
+
type: "richtext"
|
|
51
|
+
}
|
|
52
|
+
];
|
|
53
|
+
settings[formKey] = {
|
|
54
|
+
fields: ["file"]
|
|
55
|
+
};
|
|
56
|
+
}
|
|
24
57
|
var init = () => initBlock({ name, metadata, settings });
|
|
25
58
|
export {
|
|
26
59
|
init,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/file/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\thref: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg',\n\t\t\tfileName: _x( 'Armstrong_Small_Step', 'Name of the file' ),\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
-
"mappings": ";AAGA,SAAS,UAAU;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { _x, __ } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\nimport { unlock } from '../lock-unlock';\n\nconst { fieldsKey, formKey } = unlock( blocksPrivateApis );\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\thref: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg',\n\t\t\tfileName: _x( 'Armstrong_Small_Step', 'Name of the file' ),\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nif ( window.__experimentalContentOnlyPatternInsertion ) {\n\tsettings[ fieldsKey ] = [\n\t\t{\n\t\t\tid: 'file',\n\t\t\tlabel: __( 'File' ),\n\t\t\ttype: 'media',\n\t\t\tmapping: {\n\t\t\t\tid: 'id',\n\t\t\t\turl: 'href',\n\t\t\t},\n\t\t\targs: {\n\t\t\t\tallowedTypes: [],\n\t\t\t\tmultiple: false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: 'fileName',\n\t\t\tlabel: __( 'Filename' ),\n\t\t\ttype: 'richtext',\n\t\t},\n\t\t{\n\t\t\tid: 'downloadButtonText',\n\t\t\tlabel: __( 'Button Text' ),\n\t\t\ttype: 'richtext',\n\t\t},\n\t];\n\tsettings[ formKey ] = {\n\t\tfields: [ 'file' ],\n\t};\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,IAAI,UAAU;AACvB,SAAS,QAAQ,YAAY;AAC7B,SAAS,eAAe,yBAAyB;AAKjD,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AAEvB,IAAM,EAAE,WAAW,QAAQ,IAAI,OAAQ,iBAAkB;AAEzD,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,MAAM;AAAA,MACN,UAAU,GAAI,wBAAwB,kBAAmB;AAAA,IAC1D;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAK,OAAO,2CAA4C;AACvD,WAAU,SAAU,IAAI;AAAA,IACvB;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,MAAO;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA,QACR,IAAI;AAAA,QACJ,KAAK;AAAA,MACN;AAAA,MACA,MAAM;AAAA,QACL,cAAc,CAAC;AAAA,QACf,UAAU;AAAA,MACX;AAAA,IACD;AAAA,IACA;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,UAAW;AAAA,MACtB,MAAM;AAAA,IACP;AAAA,IACA;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,aAAc;AAAA,MACzB,MAAM;AAAA,IACP;AAAA,EACD;AACA,WAAU,OAAQ,IAAI;AAAA,IACrB,QAAQ,CAAE,MAAO;AAAA,EAClB;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -461,7 +461,6 @@ function GalleryEdit(props) {
|
|
|
461
461
|
instructions: PLACEHOLDER_TEXT
|
|
462
462
|
},
|
|
463
463
|
onSelect: updateImages,
|
|
464
|
-
accept: "image/*",
|
|
465
464
|
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
466
465
|
multiple: true,
|
|
467
466
|
onError: onUploadError,
|
|
@@ -766,7 +765,6 @@ function GalleryEdit(props) {
|
|
|
766
765
|
MediaReplaceFlow,
|
|
767
766
|
{
|
|
768
767
|
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
769
|
-
accept: "image/*",
|
|
770
768
|
handleUpload: false,
|
|
771
769
|
onSelect: updateImages,
|
|
772
770
|
name: __("Add"),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/gallery/edit.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToolbarDropdownMenu,\n\tPanelBody,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n\tuseSettings,\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 { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tlink as linkIcon,\n\tcustomLink,\n\timage as imageIcon,\n\tlinkOff,\n\tfullscreen,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\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\tLINK_DESTINATION_LIGHTBOX,\n\tDEFAULT_MEDIA_SIZE_SLUG,\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 LINK_OPTIONS = [\n\t{\n\t\ticon: customLink,\n\t\tlabel: __( 'Link images to attachment pages' ),\n\t\tvalue: LINK_DESTINATION_ATTACHMENT,\n\t\tnoticeText: __( 'Attachment Pages' ),\n\t},\n\t{\n\t\ticon: imageIcon,\n\t\tlabel: __( 'Link images to media files' ),\n\t\tvalue: LINK_DESTINATION_MEDIA,\n\t\tnoticeText: __( 'Media Files' ),\n\t},\n\t{\n\t\ticon: fullscreen,\n\t\tlabel: __( 'Enlarge on click' ),\n\t\tvalue: LINK_DESTINATION_LIGHTBOX,\n\t\tnoticeText: __( 'Lightbox effect' ),\n\t\tinfoText: __( 'Scale images with a lightbox effect' ),\n\t},\n\t{\n\t\ticon: linkOff,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tnoticeText: __( 'None' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'Add media' )\n\t: __( 'Drag and drop images, upload, or choose from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nconst DEFAULT_BLOCK = { name: 'core/image' };\nconst EMPTY_ARRAY = [];\n\nexport default function 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 [ lightboxSetting, defaultRatios, themeRatios, showDefaultRatios ] =\n\t\tuseSettings(\n\t\t\t'blocks.core/image.lightbox',\n\t\t\t'dimensions.aspectRatios.default',\n\t\t\t'dimensions.aspectRatios.theme',\n\t\t\t'dimensions.defaultAspectRatios'\n\t\t);\n\n\tconst linkOptions = ! lightboxSetting?.allowEditing\n\t\t? LINK_OPTIONS.filter(\n\t\t\t\t( option ) => option.value !== LINK_DESTINATION_LIGHTBOX\n\t\t )\n\t\t: LINK_OPTIONS;\n\n\tconst {\n\t\tcolumns,\n\t\timageCrop,\n\t\trandomOrder,\n\t\tlinkTarget,\n\t\tlinkTo,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t} = 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 {\n\t\tgetBlock,\n\t\tgetSettings,\n\t\tinnerBlockImages,\n\t\tblockWasJustInserted,\n\t\tmultiGallerySelection,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\tgetSettings: _getSettings,\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\twasBlockJustInserted,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst multiSelectedClientIds = getMultiSelectedBlockClientIds();\n\n\t\t\treturn {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tgetSettings: _getSettings,\n\t\t\t\tinnerBlockImages:\n\t\t\t\t\t_getBlock( clientId )?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\tblockWasJustInserted: wasBlockJustInserted(\n\t\t\t\t\tclientId,\n\t\t\t\t\t'inserter_menu'\n\t\t\t\t),\n\t\t\t\tmultiGallerySelection:\n\t\t\t\t\tmultiSelectedClientIds.length &&\n\t\t\t\t\tmultiSelectedClientIds.every(\n\t\t\t\t\t\t( _clientId ) =>\n\t\t\t\t\t\t\tgetBlockName( _clientId ) === 'core/gallery'\n\t\t\t\t\t),\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\tconst themeOptions = themeRatios?.map( ( { name, ratio } ) => ( {\n\t\tlabel: name,\n\t\tvalue: ratio,\n\t} ) );\n\tconst defaultOptions = defaultRatios?.map( ( { name, ratio } ) => ( {\n\t\tlabel: name,\n\t\tvalue: ratio,\n\t} ) );\n\tconst aspectRatioOptions = [\n\t\t{\n\t\t\tlabel: _x(\n\t\t\t\t'Original',\n\t\t\t\t'Aspect ratio option for dimensions control'\n\t\t\t),\n\t\t\tvalue: 'auto',\n\t\t},\n\t\t...( showDefaultRatios ? defaultOptions || [] : [] ),\n\t\t...( themeOptions || [] ),\n\t];\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}\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\taspectRatio: aspectRatio === 'auto' ? undefined : aspectRatio,\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.blob\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 {\n\t\t\t\t\t\t\tblob: 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 {\n\t\t\t\t\t\tblob: file.blob || 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\tblob: image.blob,\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\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue,\n\t\t\t\tfalse,\n\t\t\t\tblock.attributes,\n\t\t\t\tlightboxSetting\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\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.noticeText\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 toggleRandomOrder() {\n\t\tsetAttributes( { randomOrder: ! randomOrder } );\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, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\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, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\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 ?? newSizeSlug\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\tfunction setAspectRatio( value ) {\n\t\tsetAttributes( { aspectRatio: value } );\n\n\t\t// Update all inner image blocks with the new aspect ratio\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = {\n\t\t\t\taspectRatio: value === 'auto' ? undefined : value,\n\t\t\t};\n\t\t} );\n\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\n\t\tconst aspectRatioText = aspectRatioOptions.find(\n\t\t\t( option ) => option.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: aspect ratio setting */\n\t\t\t\t__( 'All gallery images updated to aspect ratio: %s' ),\n\t\t\t\taspectRatioText?.label || value\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-aspectRatio',\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 && blockWasJustInserted,\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: clsx( 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\tdefaultBlock: DEFAULT_BLOCK,\n\t\tdirectInsert: true,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t...nativeInnerBlockProps,\n\t} );\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\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{ Platform.isWeb && (\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tcolumns: undefined,\n\t\t\t\t\t\t\t\timageCrop: true,\n\t\t\t\t\t\t\t\trandomOrder: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tsetAspectRatio( 'auto' );\n\n\t\t\t\t\t\t\tif ( sizeSlug !== DEFAULT_MEDIA_SIZE_SLUG ) {\n\t\t\t\t\t\t\t\tupdateImagesSize( DEFAULT_MEDIA_SIZE_SLUG );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( linkTarget ) {\n\t\t\t\t\t\t\t\ttoggleOpenInNewTab( false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\t!! columns && columns !== images.length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tsetColumnsNumber( undefined )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t\t\t: defaultColumnsNumber(\n\t\t\t\t\t\t\t\t\t\t\t\t\timages.length\n\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tmax={ Math.min(\n\t\t\t\t\t\t\t\t\t\tMAX_COLUMNS,\n\t\t\t\t\t\t\t\t\t\timages.length\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\tsizeSlug !== DEFAULT_MEDIA_SIZE_SLUG\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tupdateImagesSize( DEFAULT_MEDIA_SIZE_SLUG )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\tlabel={ __( 'Crop images to fit' ) }\n\t\t\t\t\t\t\thasValue={ () => ! imageCrop }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { imageCrop: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Crop images to fit' ) }\n\t\t\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\tlabel={ __( 'Randomize order' ) }\n\t\t\t\t\t\t\thasValue={ () => !! randomOrder }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { randomOrder: false } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Randomize order' ) }\n\t\t\t\t\t\t\t\tchecked={ !! randomOrder }\n\t\t\t\t\t\t\t\tonChange={ toggleRandomOrder }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\tlabel={ __( 'Open images in new tab' ) }\n\t\t\t\t\t\t\t\thasValue={ () => !! linkTarget }\n\t\t\t\t\t\t\t\tonDeselect={ () => toggleOpenInNewTab( false ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Open images in new tab' ) }\n\t\t\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ aspectRatioOptions.length > 1 && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\t!! aspectRatio && aspectRatio !== 'auto'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel={ __( 'Aspect ratio' ) }\n\t\t\t\t\t\t\t\tonDeselect={ () => setAspectRatio( 'auto' ) }\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Aspect ratio' ) }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Set a consistent aspect ratio for all images in the gallery.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tvalue={ aspectRatio }\n\t\t\t\t\t\t\t\t\toptions={ aspectRatioOptions }\n\t\t\t\t\t\t\t\t\tonChange={ setAspectRatio }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t) }\n\t\t\t\t{ Platform.isNative && (\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\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={ __( 'Link' ) }\n\t\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\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={ __( 'Crop images to fit' ) }\n\t\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\t/>\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={ __( 'Randomize order' ) }\n\t\t\t\t\t\t\tchecked={ !! randomOrder }\n\t\t\t\t\t\t\tonChange={ toggleRandomOrder }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Open images in new tab' ) }\n\t\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ aspectRatioOptions.length > 1 && (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Aspect Ratio' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Set a consistent aspect ratio for all images in the gallery.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ aspectRatio }\n\t\t\t\t\t\t\t\toptions={ aspectRatioOptions }\n\t\t\t\t\t\t\t\tonChange={ setAspectRatio }\n\t\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ Platform.isWeb ? (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t{ linkOptions.map( ( linkItem ) => {\n\t\t\t\t\t\t\t\t\tconst isOptionSelected =\n\t\t\t\t\t\t\t\t\t\tlinkTo === linkItem.value;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ linkItem.value }\n\t\t\t\t\t\t\t\t\t\t\tisSelected={ isOptionSelected }\n\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t'components-dropdown-menu__menu-item',\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t'is-active':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisOptionSelected,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ linkItem.icon }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetLinkTo( linkItem.value );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\tinfo={ linkItem.infoText }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ linkItem.label }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</MenuGroup>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolbarDropdownMenu>\n\t\t\t\t</BlockControls>\n\t\t\t) : null }\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<>\n\t\t\t\t\t{ ! multiGallerySelection && (\n\t\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</BlockControls>\n\t\t\t\t\t) }\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\tmultiGallerySelection={ multiGallerySelection }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToolbarDropdownMenu,\n\tPanelBody,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n\tuseSettings,\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 { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tlink as linkIcon,\n\tcustomLink,\n\timage as imageIcon,\n\tlinkOff,\n\tfullscreen,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\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\tLINK_DESTINATION_LIGHTBOX,\n\tDEFAULT_MEDIA_SIZE_SLUG,\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 LINK_OPTIONS = [\n\t{\n\t\ticon: customLink,\n\t\tlabel: __( 'Link images to attachment pages' ),\n\t\tvalue: LINK_DESTINATION_ATTACHMENT,\n\t\tnoticeText: __( 'Attachment Pages' ),\n\t},\n\t{\n\t\ticon: imageIcon,\n\t\tlabel: __( 'Link images to media files' ),\n\t\tvalue: LINK_DESTINATION_MEDIA,\n\t\tnoticeText: __( 'Media Files' ),\n\t},\n\t{\n\t\ticon: fullscreen,\n\t\tlabel: __( 'Enlarge on click' ),\n\t\tvalue: LINK_DESTINATION_LIGHTBOX,\n\t\tnoticeText: __( 'Lightbox effect' ),\n\t\tinfoText: __( 'Scale images with a lightbox effect' ),\n\t},\n\t{\n\t\ticon: linkOff,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tnoticeText: __( 'None' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'Add media' )\n\t: __( 'Drag and drop images, upload, or choose from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nconst DEFAULT_BLOCK = { name: 'core/image' };\nconst EMPTY_ARRAY = [];\n\nexport default function 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 [ lightboxSetting, defaultRatios, themeRatios, showDefaultRatios ] =\n\t\tuseSettings(\n\t\t\t'blocks.core/image.lightbox',\n\t\t\t'dimensions.aspectRatios.default',\n\t\t\t'dimensions.aspectRatios.theme',\n\t\t\t'dimensions.defaultAspectRatios'\n\t\t);\n\n\tconst linkOptions = ! lightboxSetting?.allowEditing\n\t\t? LINK_OPTIONS.filter(\n\t\t\t\t( option ) => option.value !== LINK_DESTINATION_LIGHTBOX\n\t\t )\n\t\t: LINK_OPTIONS;\n\n\tconst {\n\t\tcolumns,\n\t\timageCrop,\n\t\trandomOrder,\n\t\tlinkTarget,\n\t\tlinkTo,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t} = 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 {\n\t\tgetBlock,\n\t\tgetSettings,\n\t\tinnerBlockImages,\n\t\tblockWasJustInserted,\n\t\tmultiGallerySelection,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\tgetSettings: _getSettings,\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\twasBlockJustInserted,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst multiSelectedClientIds = getMultiSelectedBlockClientIds();\n\n\t\t\treturn {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tgetSettings: _getSettings,\n\t\t\t\tinnerBlockImages:\n\t\t\t\t\t_getBlock( clientId )?.innerBlocks ?? EMPTY_ARRAY,\n\t\t\t\tblockWasJustInserted: wasBlockJustInserted(\n\t\t\t\t\tclientId,\n\t\t\t\t\t'inserter_menu'\n\t\t\t\t),\n\t\t\t\tmultiGallerySelection:\n\t\t\t\t\tmultiSelectedClientIds.length &&\n\t\t\t\t\tmultiSelectedClientIds.every(\n\t\t\t\t\t\t( _clientId ) =>\n\t\t\t\t\t\t\tgetBlockName( _clientId ) === 'core/gallery'\n\t\t\t\t\t),\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\tconst themeOptions = themeRatios?.map( ( { name, ratio } ) => ( {\n\t\tlabel: name,\n\t\tvalue: ratio,\n\t} ) );\n\tconst defaultOptions = defaultRatios?.map( ( { name, ratio } ) => ( {\n\t\tlabel: name,\n\t\tvalue: ratio,\n\t} ) );\n\tconst aspectRatioOptions = [\n\t\t{\n\t\t\tlabel: _x(\n\t\t\t\t'Original',\n\t\t\t\t'Aspect ratio option for dimensions control'\n\t\t\t),\n\t\t\tvalue: 'auto',\n\t\t},\n\t\t...( showDefaultRatios ? defaultOptions || [] : [] ),\n\t\t...( themeOptions || [] ),\n\t];\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}\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\taspectRatio: aspectRatio === 'auto' ? undefined : aspectRatio,\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.blob\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 {\n\t\t\t\t\t\t\tblob: 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 {\n\t\t\t\t\t\tblob: file.blob || 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\tblob: image.blob,\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\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue,\n\t\t\t\tfalse,\n\t\t\t\tblock.attributes,\n\t\t\t\tlightboxSetting\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\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.noticeText\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 toggleRandomOrder() {\n\t\tsetAttributes( { randomOrder: ! randomOrder } );\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, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\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, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\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 ?? newSizeSlug\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\tfunction setAspectRatio( value ) {\n\t\tsetAttributes( { aspectRatio: value } );\n\n\t\t// Update all inner image blocks with the new aspect ratio\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = {\n\t\t\t\taspectRatio: value === 'auto' ? undefined : value,\n\t\t\t};\n\t\t} );\n\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\n\t\tconst aspectRatioText = aspectRatioOptions.find(\n\t\t\t( option ) => option.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: aspect ratio setting */\n\t\t\t\t__( 'All gallery images updated to aspect ratio: %s' ),\n\t\t\t\taspectRatioText?.label || value\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-aspectRatio',\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 && blockWasJustInserted,\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\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: clsx( 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\tdefaultBlock: DEFAULT_BLOCK,\n\t\tdirectInsert: true,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t...nativeInnerBlockProps,\n\t} );\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\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{ Platform.isWeb && (\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tcolumns: undefined,\n\t\t\t\t\t\t\t\timageCrop: true,\n\t\t\t\t\t\t\t\trandomOrder: false,\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tsetAspectRatio( 'auto' );\n\n\t\t\t\t\t\t\tif ( sizeSlug !== DEFAULT_MEDIA_SIZE_SLUG ) {\n\t\t\t\t\t\t\t\tupdateImagesSize( DEFAULT_MEDIA_SIZE_SLUG );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( linkTarget ) {\n\t\t\t\t\t\t\t\ttoggleOpenInNewTab( false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\t!! columns && columns !== images.length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tsetColumnsNumber( undefined )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t\t\t: defaultColumnsNumber(\n\t\t\t\t\t\t\t\t\t\t\t\t\timages.length\n\t\t\t\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tmax={ Math.min(\n\t\t\t\t\t\t\t\t\t\tMAX_COLUMNS,\n\t\t\t\t\t\t\t\t\t\timages.length\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\tsizeSlug !== DEFAULT_MEDIA_SIZE_SLUG\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\tupdateImagesSize( DEFAULT_MEDIA_SIZE_SLUG )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\tlabel={ __( 'Crop images to fit' ) }\n\t\t\t\t\t\t\thasValue={ () => ! imageCrop }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { imageCrop: true } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Crop images to fit' ) }\n\t\t\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\tlabel={ __( 'Randomize order' ) }\n\t\t\t\t\t\t\thasValue={ () => !! randomOrder }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { randomOrder: false } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Randomize order' ) }\n\t\t\t\t\t\t\t\tchecked={ !! randomOrder }\n\t\t\t\t\t\t\t\tonChange={ toggleRandomOrder }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t\tlabel={ __( 'Open images in new tab' ) }\n\t\t\t\t\t\t\t\thasValue={ () => !! linkTarget }\n\t\t\t\t\t\t\t\tonDeselect={ () => toggleOpenInNewTab( false ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Open images in new tab' ) }\n\t\t\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ aspectRatioOptions.length > 1 && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\t!! aspectRatio && aspectRatio !== 'auto'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlabel={ __( 'Aspect ratio' ) }\n\t\t\t\t\t\t\t\tonDeselect={ () => setAspectRatio( 'auto' ) }\n\t\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Aspect ratio' ) }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Set a consistent aspect ratio for all images in the gallery.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tvalue={ aspectRatio }\n\t\t\t\t\t\t\t\t\toptions={ aspectRatioOptions }\n\t\t\t\t\t\t\t\t\tonChange={ setAspectRatio }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t) }\n\t\t\t\t{ Platform.isNative && (\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\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={ __( 'Link' ) }\n\t\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\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={ __( 'Crop images to fit' ) }\n\t\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\t/>\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={ __( 'Randomize order' ) }\n\t\t\t\t\t\t\tchecked={ !! randomOrder }\n\t\t\t\t\t\t\tonChange={ toggleRandomOrder }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Open images in new tab' ) }\n\t\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ aspectRatioOptions.length > 1 && (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Aspect Ratio' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Set a consistent aspect ratio for all images in the gallery.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ aspectRatio }\n\t\t\t\t\t\t\t\toptions={ aspectRatioOptions }\n\t\t\t\t\t\t\t\tonChange={ setAspectRatio }\n\t\t\t\t\t\t\t\thideCancelButton\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ Platform.isWeb ? (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t{ linkOptions.map( ( linkItem ) => {\n\t\t\t\t\t\t\t\t\tconst isOptionSelected =\n\t\t\t\t\t\t\t\t\t\tlinkTo === linkItem.value;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ linkItem.value }\n\t\t\t\t\t\t\t\t\t\t\tisSelected={ isOptionSelected }\n\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t'components-dropdown-menu__menu-item',\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t'is-active':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisOptionSelected,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ linkItem.icon }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetLinkTo( linkItem.value );\n\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\tinfo={ linkItem.infoText }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ linkItem.label }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</MenuGroup>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolbarDropdownMenu>\n\t\t\t\t</BlockControls>\n\t\t\t) : null }\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<>\n\t\t\t\t\t{ ! multiGallerySelection && (\n\t\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</BlockControls>\n\t\t\t\t\t) }\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\tmultiGallerySelection={ multiGallerySelection }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|