@wordpress/block-library 10.1.1-next.v.202607070741.0 → 10.2.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 +9 -0
- package/build/accordion/block.json +1 -0
- package/build/button/edit.cjs +18 -8
- package/build/button/edit.cjs.map +2 -2
- package/build/cover/block.json +11 -0
- package/build/cover/edit/block-controls.cjs +11 -4
- package/build/cover/edit/block-controls.cjs.map +2 -2
- package/build/cover/edit/embed-video-url-input.cjs +5 -3
- package/build/cover/edit/embed-video-url-input.cjs.map +3 -3
- package/build/cover/edit/index.cjs +1 -1
- package/build/cover/edit/index.cjs.map +2 -2
- package/build/cover/embed-video-utils.cjs +17 -7
- package/build/cover/embed-video-utils.cjs.map +2 -2
- package/build/details/transforms.cjs +1 -3
- package/build/details/transforms.cjs.map +2 -2
- package/build/embed/embed-placeholder.cjs +0 -1
- package/build/embed/embed-placeholder.cjs.map +2 -2
- package/build/file/edit.cjs +4 -3
- package/build/file/edit.cjs.map +2 -2
- package/build/file/transforms.cjs +25 -60
- package/build/file/transforms.cjs.map +2 -2
- package/build/gallery/block.json +4 -2
- package/build/gallery/edit.cjs +1 -1
- package/build/gallery/edit.cjs.map +3 -3
- package/build/gallery/gap-styles.cjs +49 -13
- package/build/gallery/gap-styles.cjs.map +3 -3
- package/build/group/transforms.cjs +1 -1
- package/build/group/transforms.cjs.map +2 -2
- package/build/icon/components/custom-inserter/icon-grid.cjs +25 -12
- package/build/icon/components/custom-inserter/icon-grid.cjs.map +2 -2
- package/build/icon/components/custom-inserter/index.cjs +100 -31
- package/build/icon/components/custom-inserter/index.cjs.map +3 -3
- package/build/icon/edit.cjs +11 -12
- package/build/icon/edit.cjs.map +2 -2
- package/build/image/block.json +1 -1
- package/build/image/edit.cjs +0 -34
- package/build/image/edit.cjs.map +2 -2
- package/build/image/image.cjs +4 -23
- package/build/image/image.cjs.map +3 -3
- package/build/image/transforms.cjs +78 -0
- package/build/image/transforms.cjs.map +3 -3
- package/build/index.cjs +18 -8
- package/build/index.cjs.map +2 -2
- package/build/latest-posts/edit.cjs +5 -8
- package/build/latest-posts/edit.cjs.map +2 -2
- package/build/list-item/edit.cjs +1 -1
- package/build/list-item/edit.cjs.map +2 -2
- package/build/list-item/hooks/use-enter.cjs +14 -17
- package/build/list-item/hooks/use-enter.cjs.map +3 -3
- package/build/list-item/hooks/use-space.cjs +3 -2
- package/build/list-item/hooks/use-space.cjs.map +3 -3
- package/build/paragraph/block.json +1 -0
- package/build/paragraph/use-enter.cjs +3 -7
- package/build/paragraph/use-enter.cjs.map +3 -3
- package/build/playlist/block.json +29 -10
- package/build/playlist/edit.cjs +216 -14
- package/build/playlist/edit.cjs.map +3 -3
- package/build/playlist/index.cjs +1 -1
- package/build/playlist/index.cjs.map +2 -2
- package/build/playlist/utils.cjs +19 -5
- package/build/playlist/utils.cjs.map +2 -2
- package/build/playlist/view.cjs +83 -13
- package/build/playlist/view.cjs.map +2 -2
- package/build/playlist-track/block.json +4 -2
- package/build/playlist-track/edit.cjs +94 -64
- package/build/playlist-track/edit.cjs.map +2 -2
- package/build/post-content/block.json +1 -0
- package/build/post-template/block.json +2 -1
- package/build/post-template/edit.cjs +10 -1
- package/build/post-template/edit.cjs.map +2 -2
- package/build/pullquote/block.json +3 -1
- package/build/query/block.json +3 -2
- package/build/query/edit/inspector-controls/index.cjs +38 -4
- package/build/query/edit/inspector-controls/index.cjs.map +2 -2
- package/build/query/edit/inspector-controls/offset-controls.cjs +0 -1
- package/build/query/edit/inspector-controls/offset-controls.cjs.map +2 -2
- package/build/query/edit/inspector-controls/pages-control.cjs +0 -1
- package/build/query/edit/inspector-controls/pages-control.cjs.map +2 -2
- package/build/query/edit/query-content.cjs +10 -3
- package/build/query/edit/query-content.cjs.map +2 -2
- package/build/query/index.cjs +2 -1
- package/build/query/index.cjs.map +2 -2
- package/build/quote/block.json +3 -1
- package/build/quote/transforms.cjs +1 -3
- package/build/quote/transforms.cjs.map +2 -2
- package/build/rss/edit.cjs +0 -1
- package/build/rss/edit.cjs.map +2 -2
- package/build/tab-list/block.json +2 -2
- package/build/tab-list/edit.cjs +65 -11
- package/build/tab-list/edit.cjs.map +3 -3
- package/build/tab-panel/block.json +1 -6
- package/build/tab-panel/edit.cjs +15 -15
- package/build/tab-panel/edit.cjs.map +2 -2
- package/build/tab-panels/block.json +0 -1
- package/build/tabs/block.json +0 -5
- package/build/tabs/edit.cjs +4 -39
- package/build/tabs/edit.cjs.map +3 -3
- package/build/tabs/use-tab-list-items-sync.cjs +19 -1
- package/build/tabs/use-tab-list-items-sync.cjs.map +2 -2
- package/build/term-name/block.json +1 -3
- package/build/term-name/deprecated.cjs +105 -0
- package/build/term-name/deprecated.cjs.map +7 -0
- package/build/term-name/edit.cjs +11 -37
- package/build/term-name/edit.cjs.map +3 -3
- package/build/term-name/index.cjs +3 -1
- package/build/term-name/index.cjs.map +3 -3
- package/build/utils/waveform-player.cjs +138 -22
- package/build/utils/waveform-player.cjs.map +2 -2
- package/build/utils/waveform-utils.cjs +315 -17
- package/build/utils/waveform-utils.cjs.map +2 -2
- package/build/video/edit.cjs +2 -11
- package/build/video/edit.cjs.map +3 -3
- package/build-module/accordion/block.json +1 -0
- package/build-module/button/edit.mjs +19 -14
- package/build-module/button/edit.mjs.map +2 -2
- package/build-module/cover/block.json +11 -0
- package/build-module/cover/edit/block-controls.mjs +11 -4
- package/build-module/cover/edit/block-controls.mjs.map +2 -2
- package/build-module/cover/edit/embed-video-url-input.mjs +5 -4
- package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
- package/build-module/cover/edit/index.mjs +1 -1
- package/build-module/cover/edit/index.mjs.map +2 -2
- package/build-module/cover/embed-video-utils.mjs +16 -7
- package/build-module/cover/embed-video-utils.mjs.map +2 -2
- package/build-module/details/transforms.mjs +2 -7
- package/build-module/details/transforms.mjs.map +2 -2
- package/build-module/embed/embed-placeholder.mjs +0 -1
- package/build-module/embed/embed-placeholder.mjs.map +2 -2
- package/build-module/file/edit.mjs +4 -3
- package/build-module/file/edit.mjs.map +2 -2
- package/build-module/file/transforms.mjs +25 -60
- package/build-module/file/transforms.mjs.map +2 -2
- package/build-module/gallery/block.json +4 -2
- package/build-module/gallery/edit.mjs +3 -3
- package/build-module/gallery/edit.mjs.map +2 -2
- package/build-module/gallery/gap-styles.mjs +53 -14
- package/build-module/gallery/gap-styles.mjs.map +2 -2
- package/build-module/group/transforms.mjs +2 -5
- package/build-module/group/transforms.mjs.map +2 -2
- package/build-module/icon/components/custom-inserter/icon-grid.mjs +25 -12
- package/build-module/icon/components/custom-inserter/icon-grid.mjs.map +2 -2
- package/build-module/icon/components/custom-inserter/index.mjs +102 -33
- package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
- package/build-module/icon/edit.mjs +11 -12
- package/build-module/icon/edit.mjs.map +2 -2
- package/build-module/image/block.json +1 -1
- package/build-module/image/edit.mjs +0 -34
- package/build-module/image/edit.mjs.map +2 -2
- package/build-module/image/image.mjs +4 -13
- package/build-module/image/image.mjs.map +2 -2
- package/build-module/image/transforms.mjs +78 -0
- package/build-module/image/transforms.mjs.map +2 -2
- package/build-module/index.mjs +18 -8
- package/build-module/index.mjs.map +2 -2
- package/build-module/latest-posts/edit.mjs +5 -8
- package/build-module/latest-posts/edit.mjs.map +2 -2
- package/build-module/list-item/edit.mjs +1 -1
- package/build-module/list-item/edit.mjs.map +2 -2
- package/build-module/list-item/hooks/use-enter.mjs +15 -21
- package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
- package/build-module/list-item/hooks/use-space.mjs +4 -6
- package/build-module/list-item/hooks/use-space.mjs.map +2 -2
- package/build-module/paragraph/block.json +1 -0
- package/build-module/paragraph/use-enter.mjs +4 -11
- package/build-module/paragraph/use-enter.mjs.map +2 -2
- package/build-module/playlist/block.json +29 -10
- package/build-module/playlist/edit.mjs +220 -16
- package/build-module/playlist/edit.mjs.map +2 -2
- package/build-module/playlist/index.mjs +1 -1
- package/build-module/playlist/index.mjs.map +2 -2
- package/build-module/playlist/utils.mjs +17 -4
- package/build-module/playlist/utils.mjs.map +2 -2
- package/build-module/playlist/view.mjs +89 -14
- package/build-module/playlist/view.mjs.map +2 -2
- package/build-module/playlist-track/block.json +4 -2
- package/build-module/playlist-track/edit.mjs +96 -65
- package/build-module/playlist-track/edit.mjs.map +2 -2
- package/build-module/post-content/block.json +1 -0
- package/build-module/post-template/block.json +2 -1
- package/build-module/post-template/edit.mjs +10 -1
- package/build-module/post-template/edit.mjs.map +2 -2
- package/build-module/pullquote/block.json +3 -1
- package/build-module/query/block.json +3 -2
- package/build-module/query/edit/inspector-controls/index.mjs +40 -5
- package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/offset-controls.mjs +0 -1
- package/build-module/query/edit/inspector-controls/offset-controls.mjs.map +2 -2
- package/build-module/query/edit/inspector-controls/pages-control.mjs +0 -1
- package/build-module/query/edit/inspector-controls/pages-control.mjs.map +2 -2
- package/build-module/query/edit/query-content.mjs +10 -3
- package/build-module/query/edit/query-content.mjs.map +2 -2
- package/build-module/query/index.mjs +2 -1
- package/build-module/query/index.mjs.map +2 -2
- package/build-module/quote/block.json +3 -1
- package/build-module/quote/transforms.mjs +2 -4
- package/build-module/quote/transforms.mjs.map +2 -2
- package/build-module/rss/edit.mjs +0 -1
- package/build-module/rss/edit.mjs.map +2 -2
- package/build-module/tab-list/block.json +2 -2
- package/build-module/tab-list/edit.mjs +72 -13
- package/build-module/tab-list/edit.mjs.map +2 -2
- package/build-module/tab-panel/block.json +1 -6
- package/build-module/tab-panel/edit.mjs +16 -16
- package/build-module/tab-panel/edit.mjs.map +2 -2
- package/build-module/tab-panels/block.json +0 -1
- package/build-module/tabs/block.json +0 -5
- package/build-module/tabs/edit.mjs +5 -45
- package/build-module/tabs/edit.mjs.map +2 -2
- package/build-module/tabs/use-tab-list-items-sync.mjs +19 -1
- package/build-module/tabs/use-tab-list-items-sync.mjs.map +2 -2
- package/build-module/term-name/block.json +1 -3
- package/build-module/term-name/deprecated.mjs +74 -0
- package/build-module/term-name/deprecated.mjs.map +7 -0
- package/build-module/term-name/edit.mjs +11 -28
- package/build-module/term-name/edit.mjs.map +2 -2
- package/build-module/term-name/index.mjs +3 -1
- package/build-module/term-name/index.mjs.map +2 -2
- package/build-module/utils/waveform-player.mjs +144 -23
- package/build-module/utils/waveform-player.mjs.map +2 -2
- package/build-module/utils/waveform-utils.mjs +310 -16
- package/build-module/utils/waveform-utils.mjs.map +2 -2
- package/build-module/video/edit.mjs +2 -11
- package/build-module/video/edit.mjs.map +2 -2
- package/build-style/editor-rtl.css +46 -21
- package/build-style/editor.css +46 -21
- package/build-style/icon/editor-rtl.css +80 -7
- package/build-style/icon/editor.css +80 -7
- package/build-style/more/editor-rtl.css +2 -2
- package/build-style/more/editor.css +2 -2
- package/build-style/navigation/editor-rtl.css +3 -4
- package/build-style/navigation/editor.css +3 -4
- package/build-style/navigation-link/editor-rtl.css +1 -1
- package/build-style/navigation-link/editor.css +1 -1
- package/build-style/nextpage/editor-rtl.css +2 -2
- package/build-style/nextpage/editor.css +2 -2
- package/build-style/playlist/editor-rtl.css +6 -0
- package/build-style/playlist/editor.css +6 -0
- package/build-style/playlist/style-rtl.css +37 -1
- package/build-style/playlist/style.css +37 -1
- package/build-style/playlist-track/style-rtl.css +10 -0
- package/build-style/playlist-track/style.css +10 -0
- package/build-style/style-rtl.css +47 -1
- package/build-style/style.css +47 -1
- package/build-style/video/editor-rtl.css +1 -1
- package/build-style/video/editor.css +1 -1
- package/build-types/table-of-contents/list.d.ts +1 -1
- package/build-types/table-of-contents/list.d.ts.map +1 -1
- package/package.json +46 -44
- package/src/accordion/README.md +1 -0
- package/src/accordion/block.json +1 -0
- package/src/button/edit.js +21 -15
- package/src/cover/README.md +60 -0
- package/src/cover/block.json +11 -0
- package/src/cover/edit/block-controls.js +21 -11
- package/src/cover/edit/embed-video-url-input.js +5 -4
- package/src/cover/edit/index.js +9 -11
- package/src/cover/embed-video-utils.js +38 -13
- package/src/details/transforms.js +2 -7
- package/src/embed/embed-placeholder.js +0 -1
- package/src/file/edit.js +8 -8
- package/src/file/transforms.js +28 -60
- package/src/gallery/README.md +1 -1
- package/src/gallery/block.json +4 -2
- package/src/gallery/edit.js +3 -3
- package/src/gallery/gap-styles.js +79 -20
- package/src/gallery/index.php +103 -43
- package/src/group/transforms.js +2 -5
- package/src/icon/components/custom-inserter/icon-grid.js +40 -11
- package/src/icon/components/custom-inserter/index.js +98 -25
- package/src/icon/edit.js +11 -17
- package/src/icon/editor.scss +33 -8
- package/src/image/README.md +1 -1
- package/src/image/block.json +1 -1
- package/src/image/edit.js +0 -52
- package/src/image/editor.scss +2 -0
- package/src/image/image.js +19 -24
- package/src/image/transforms.js +128 -0
- package/src/index.js +19 -7
- package/src/latest-posts/edit.js +5 -8
- package/src/latest-posts/index.php +46 -16
- package/src/list-item/edit.js +1 -1
- package/src/list-item/hooks/use-enter.js +15 -22
- package/src/list-item/hooks/use-space.js +4 -6
- package/src/media-text/editor.scss +1 -0
- package/src/more/editor.scss +1 -1
- package/src/navigation/editor.scss +1 -2
- package/src/navigation-link/editor.scss +1 -1
- package/src/navigation-link/index.php +6 -3
- package/src/navigation-submenu/index.php +6 -3
- package/src/nextpage/editor.scss +1 -1
- package/src/paragraph/README.md +1 -0
- package/src/paragraph/block.json +1 -0
- package/src/paragraph/use-enter.js +4 -11
- package/src/playlist/README.md +17 -18
- package/src/playlist/block.json +29 -10
- package/src/playlist/edit.js +247 -15
- package/src/playlist/editor.scss +6 -0
- package/src/playlist/index.js +1 -1
- package/src/playlist/index.php +58 -14
- package/src/playlist/style.scss +51 -1
- package/src/playlist/test/edit.js +13 -2
- package/src/playlist/utils.js +25 -7
- package/src/playlist/view.js +97 -16
- package/src/playlist-track/README.md +3 -3
- package/src/playlist-track/block.json +4 -2
- package/src/playlist-track/edit.js +94 -70
- package/src/playlist-track/index.php +20 -6
- package/src/playlist-track/style.scss +10 -0
- package/src/playlist-track/test/edit.js +169 -0
- package/src/post-content/README.md +1 -0
- package/src/post-content/block.json +1 -0
- package/src/post-template/README.md +1 -0
- package/src/post-template/block.json +2 -1
- package/src/post-template/edit.js +9 -0
- package/src/pullquote/README.md +1 -0
- package/src/pullquote/block.json +3 -1
- package/src/query/README.md +2 -1
- package/src/query/block.json +3 -2
- package/src/query/edit/inspector-controls/index.js +43 -3
- package/src/query/edit/inspector-controls/offset-controls.js +0 -1
- package/src/query/edit/inspector-controls/pages-control.js +0 -1
- package/src/query/edit/query-content.js +19 -3
- package/src/query/index.js +1 -0
- package/src/quote/README.md +1 -0
- package/src/quote/block.json +3 -1
- package/src/quote/transforms.js +2 -4
- package/src/rss/edit.js +0 -1
- package/src/rss/index.php +1 -1
- package/src/tab-list/README.md +4 -5
- package/src/tab-list/block.json +2 -2
- package/src/tab-list/edit.js +90 -28
- package/src/tab-list/index.php +9 -4
- package/src/tab-panel/README.md +4 -6
- package/src/tab-panel/block.json +1 -6
- package/src/tab-panel/edit.js +19 -24
- package/src/tab-panels/README.md +5 -3
- package/src/tab-panels/block.json +0 -1
- package/src/tabs/README.md +18 -9
- package/src/tabs/block.json +0 -5
- package/src/tabs/edit.js +7 -64
- package/src/tabs/use-tab-list-items-sync.js +24 -4
- package/src/template-part/index.php +1 -16
- package/src/term-name/README.md +1 -1
- package/src/term-name/block.json +1 -3
- package/src/term-name/deprecated.js +74 -0
- package/src/term-name/edit.js +2 -18
- package/src/term-name/index.js +2 -0
- package/src/utils/media-control.scss +1 -5
- package/src/utils/test/waveform-player.js +297 -34
- package/src/utils/test/waveform-utils.js +410 -5
- package/src/utils/waveform-player.js +189 -59
- package/src/utils/waveform-utils.js +443 -40
- package/src/video/edit.js +0 -8
- package/src/video/editor.scss +1 -1
- package/build/image/animated-gif-convert-control.cjs +0 -105
- package/build/image/animated-gif-convert-control.cjs.map +0 -7
- package/build/utils/gif-conversion-attributes.cjs +0 -40
- package/build/utils/gif-conversion-attributes.cjs.map +0 -7
- package/build/video/gif-restore-control.cjs +0 -73
- package/build/video/gif-restore-control.cjs.map +0 -7
- package/build-module/image/animated-gif-convert-control.mjs +0 -87
- package/build-module/image/animated-gif-convert-control.mjs.map +0 -7
- package/build-module/utils/gif-conversion-attributes.mjs +0 -15
- package/build-module/utils/gif-conversion-attributes.mjs.map +0 -7
- package/build-module/video/gif-restore-control.mjs +0 -55
- package/build-module/video/gif-restore-control.mjs.map +0 -7
- package/src/image/animated-gif-convert-control.js +0 -135
- package/src/image/test/animated-gif-convert-control.js +0 -276
- package/src/utils/gif-conversion-attributes.js +0 -30
- package/src/utils/test/gif-conversion-attributes.js +0 -60
- package/src/video/gif-restore-control.js +0 -92
|
@@ -20,6 +20,7 @@ import { crop, link } from '@wordpress/icons';
|
|
|
20
20
|
import { ALLOWED_MEDIA_TYPES, EMBED_VIDEO_BACKGROUND_TYPE } from '../shared';
|
|
21
21
|
import { unlock } from '../../lock-unlock';
|
|
22
22
|
import EmbedVideoUrlInput from './embed-video-url-input';
|
|
23
|
+
import { getAllowedVideoProviders } from '../embed-video-utils';
|
|
23
24
|
|
|
24
25
|
const { cleanEmptyObject } = unlock( blockEditorPrivateApis );
|
|
25
26
|
|
|
@@ -43,9 +44,15 @@ export default function CoverBlockControls( {
|
|
|
43
44
|
minHeight,
|
|
44
45
|
minHeightUnit,
|
|
45
46
|
backgroundType,
|
|
47
|
+
allowedVideoProviders,
|
|
46
48
|
} = attributes;
|
|
47
49
|
const { hasInnerBlocks, url } = currentSettings;
|
|
48
50
|
|
|
51
|
+
const filteredVideoProviders = getAllowedVideoProviders(
|
|
52
|
+
allowedVideoProviders
|
|
53
|
+
);
|
|
54
|
+
const hasAllowedVideoProviders = filteredVideoProviders.length > 0;
|
|
55
|
+
|
|
49
56
|
const [ prevMinHeightValue, setPrevMinHeightValue ] = useState( minHeight );
|
|
50
57
|
const [ prevMinHeightUnit, setPrevMinHeightUnit ] =
|
|
51
58
|
useState( minHeightUnit );
|
|
@@ -132,17 +139,19 @@ export default function CoverBlockControls( {
|
|
|
132
139
|
onReset={ onClearMedia }
|
|
133
140
|
variant="toolbar"
|
|
134
141
|
>
|
|
135
|
-
{ ( { onClose } ) =>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
{ ( { onClose } ) =>
|
|
143
|
+
hasAllowedVideoProviders ? (
|
|
144
|
+
<MenuItem
|
|
145
|
+
icon={ link }
|
|
146
|
+
onClick={ () => {
|
|
147
|
+
setIsEmbedUrlInputOpen( true );
|
|
148
|
+
onClose();
|
|
149
|
+
} }
|
|
150
|
+
>
|
|
151
|
+
{ __( 'Embed video from URL' ) }
|
|
152
|
+
</MenuItem>
|
|
153
|
+
) : null
|
|
154
|
+
}
|
|
146
155
|
</MediaReplaceFlow>
|
|
147
156
|
</BlockControls>
|
|
148
157
|
{ isEmbedUrlInputOpen && (
|
|
@@ -156,6 +165,7 @@ export default function CoverBlockControls( {
|
|
|
156
165
|
? url
|
|
157
166
|
: ''
|
|
158
167
|
}
|
|
168
|
+
allowedVideoProviders={ filteredVideoProviders }
|
|
159
169
|
/>
|
|
160
170
|
) }
|
|
161
171
|
</>
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
import { useState } from '@wordpress/element';
|
|
5
5
|
import {
|
|
6
6
|
__experimentalConfirmDialog as ConfirmDialog,
|
|
7
|
-
__experimentalVStack as VStack,
|
|
8
7
|
TextControl,
|
|
9
8
|
Notice,
|
|
10
9
|
} from '@wordpress/components';
|
|
11
10
|
import { __ } from '@wordpress/i18n';
|
|
11
|
+
import { Stack } from '@wordpress/ui';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Internal dependencies
|
|
@@ -19,6 +19,7 @@ export default function EmbedVideoUrlInput( {
|
|
|
19
19
|
onSubmit,
|
|
20
20
|
onClose,
|
|
21
21
|
initialUrl = '',
|
|
22
|
+
allowedVideoProviders,
|
|
22
23
|
} ) {
|
|
23
24
|
const [ url, setUrl ] = useState( initialUrl );
|
|
24
25
|
const [ error, setError ] = useState( '' );
|
|
@@ -29,7 +30,7 @@ export default function EmbedVideoUrlInput( {
|
|
|
29
30
|
return;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
if ( ! isValidVideoEmbedUrl( url ) ) {
|
|
33
|
+
if ( ! isValidVideoEmbedUrl( url, allowedVideoProviders ) ) {
|
|
33
34
|
setError(
|
|
34
35
|
__(
|
|
35
36
|
'This URL is not supported. Please enter a valid video link from a supported provider.'
|
|
@@ -50,7 +51,7 @@ export default function EmbedVideoUrlInput( {
|
|
|
50
51
|
confirmButtonText={ __( 'Add video' ) }
|
|
51
52
|
size="medium"
|
|
52
53
|
>
|
|
53
|
-
<
|
|
54
|
+
<Stack direction="column" gap="lg">
|
|
54
55
|
{ error && (
|
|
55
56
|
<Notice status="error" isDismissible={ false }>
|
|
56
57
|
{ error }
|
|
@@ -71,7 +72,7 @@ export default function EmbedVideoUrlInput( {
|
|
|
71
72
|
'Add a background video to the cover block that will autoplay in a loop.'
|
|
72
73
|
) }
|
|
73
74
|
/>
|
|
74
|
-
</
|
|
75
|
+
</Stack>
|
|
75
76
|
</ConfirmDialog>
|
|
76
77
|
);
|
|
77
78
|
}
|
package/src/cover/edit/index.js
CHANGED
|
@@ -243,8 +243,7 @@ function CoverEdit( {
|
|
|
243
243
|
if ( ! currentAttrs.isUserOverlayColor ) {
|
|
244
244
|
newOverlayColor = averageBackgroundColor;
|
|
245
245
|
setOverlayColor( newOverlayColor );
|
|
246
|
-
|
|
247
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
246
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
248
247
|
__unstableMarkNextChangeAsNotPersistent();
|
|
249
248
|
}
|
|
250
249
|
|
|
@@ -302,11 +301,13 @@ function CoverEdit( {
|
|
|
302
301
|
|
|
303
302
|
const onClearMedia = () => {
|
|
304
303
|
let newOverlayColor = overlayColor.color;
|
|
305
|
-
|
|
304
|
+
|
|
305
|
+
// Skip for embeds, which never auto-assign an overlay color; otherwise
|
|
306
|
+
// the non-persistent flag lands on the media reset itself (unsaveable).
|
|
307
|
+
if ( ! isUserOverlayColor && overlayColor.color ) {
|
|
306
308
|
newOverlayColor = DEFAULT_OVERLAY_COLOR;
|
|
307
309
|
setOverlayColor( undefined );
|
|
308
|
-
|
|
309
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
310
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
310
311
|
__unstableMarkNextChangeAsNotPersistent();
|
|
311
312
|
}
|
|
312
313
|
|
|
@@ -341,8 +342,7 @@ function CoverEdit( {
|
|
|
341
342
|
);
|
|
342
343
|
|
|
343
344
|
setOverlayColor( newOverlayColor );
|
|
344
|
-
|
|
345
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
345
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
346
346
|
__unstableMarkNextChangeAsNotPersistent();
|
|
347
347
|
|
|
348
348
|
setAttributes( {
|
|
@@ -549,8 +549,7 @@ function CoverEdit( {
|
|
|
549
549
|
if ( ! currentAttrs.isUserOverlayColor ) {
|
|
550
550
|
newOverlayColor = averageBackgroundColor;
|
|
551
551
|
setOverlayColor( newOverlayColor );
|
|
552
|
-
|
|
553
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
552
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
554
553
|
__unstableMarkNextChangeAsNotPersistent();
|
|
555
554
|
}
|
|
556
555
|
|
|
@@ -604,8 +603,7 @@ function CoverEdit( {
|
|
|
604
603
|
} else {
|
|
605
604
|
setOverlayColor( undefined );
|
|
606
605
|
}
|
|
607
|
-
|
|
608
|
-
// Make undo revert the next setAttributes and the previous setOverlayColor.
|
|
606
|
+
// Fold next attribute change into the same undo level as the setOverlayColor above.
|
|
609
607
|
__unstableMarkNextChangeAsNotPersistent();
|
|
610
608
|
}
|
|
611
609
|
|
|
@@ -11,7 +11,7 @@ import { matchesPatterns } from '../embed/util';
|
|
|
11
11
|
const DEFAULT_EMBED_BLOCK = 'core/embed';
|
|
12
12
|
|
|
13
13
|
// List of supported video providers for cover block backgrounds
|
|
14
|
-
const
|
|
14
|
+
const DEFAULT_VIDEO_PROVIDERS = [
|
|
15
15
|
'youtube',
|
|
16
16
|
'vimeo',
|
|
17
17
|
'videopress',
|
|
@@ -21,38 +21,63 @@ const VIDEO_PROVIDERS = [
|
|
|
21
21
|
];
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Resolves the list of providers that are actually allowed.
|
|
25
25
|
*
|
|
26
|
-
* @param {string}
|
|
27
|
-
* @return {
|
|
26
|
+
* @param {string[]} [allowedVideoProviders] The providers configured via the block attribute.
|
|
27
|
+
* @return {string[]} The supported providers that remain allowed.
|
|
28
28
|
*/
|
|
29
|
-
export function
|
|
29
|
+
export function getAllowedVideoProviders( allowedVideoProviders ) {
|
|
30
|
+
if ( ! Array.isArray( allowedVideoProviders ) ) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return DEFAULT_VIDEO_PROVIDERS.filter( ( provider ) =>
|
|
35
|
+
allowedVideoProviders.includes( provider )
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Checks if a URL is a valid video embed URL from allowed providers.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} url The URL to validate.
|
|
43
|
+
* @param {string[]} [allowedProviders] The allowed providers, Defaults to all
|
|
44
|
+
* supported providers.
|
|
45
|
+
* @return {boolean} True if the URL matches an allowed video provider pattern.
|
|
46
|
+
*/
|
|
47
|
+
export function isValidVideoEmbedUrl( url, allowedProviders ) {
|
|
30
48
|
if ( ! url ) {
|
|
31
49
|
return false;
|
|
32
50
|
}
|
|
33
51
|
|
|
34
|
-
const embedBlock = findVideoEmbedProvider( url );
|
|
52
|
+
const embedBlock = findVideoEmbedProvider( url, allowedProviders );
|
|
35
53
|
return embedBlock !== null;
|
|
36
54
|
}
|
|
37
55
|
|
|
38
56
|
/**
|
|
39
|
-
* Finds the embed provider for a given URL if it's
|
|
57
|
+
* Finds the embed provider for a given URL if it's an allowed video provider.
|
|
40
58
|
*
|
|
41
|
-
* @param {string}
|
|
59
|
+
* @param {string} url The URL to check.
|
|
60
|
+
* @param {string[]} [allowedProviders] The allowed providers, Defaults to all
|
|
61
|
+
* supported providers.
|
|
42
62
|
* @return {string|null} The provider name slug (e.g., 'youtube') or null if not found.
|
|
43
63
|
*/
|
|
44
|
-
export function getVideoEmbedProvider( url ) {
|
|
45
|
-
const embedBlock = findVideoEmbedProvider( url );
|
|
64
|
+
export function getVideoEmbedProvider( url, allowedProviders ) {
|
|
65
|
+
const embedBlock = findVideoEmbedProvider( url, allowedProviders );
|
|
46
66
|
return embedBlock ? embedBlock.name : null;
|
|
47
67
|
}
|
|
48
68
|
|
|
49
69
|
/**
|
|
50
70
|
* Finds a matching video embed block variation for the given URL.
|
|
51
71
|
*
|
|
52
|
-
* @param {string}
|
|
72
|
+
* @param {string} url The URL to match against provider patterns.
|
|
73
|
+
* @param {string[]} [allowedProviders] The allowed providers, Defaults to all
|
|
74
|
+
* supported providers.
|
|
53
75
|
* @return {Object|null} The matching block variation or null if not found.
|
|
54
76
|
*/
|
|
55
|
-
function findVideoEmbedProvider(
|
|
77
|
+
function findVideoEmbedProvider(
|
|
78
|
+
url,
|
|
79
|
+
allowedProviders = DEFAULT_VIDEO_PROVIDERS
|
|
80
|
+
) {
|
|
56
81
|
const embedVariations = getBlockVariations( DEFAULT_EMBED_BLOCK );
|
|
57
82
|
|
|
58
83
|
if ( ! embedVariations ) {
|
|
@@ -65,7 +90,7 @@ function findVideoEmbedProvider( url ) {
|
|
|
65
90
|
|
|
66
91
|
if (
|
|
67
92
|
! matchingVariation ||
|
|
68
|
-
!
|
|
93
|
+
! allowedProviders.includes( matchingVariation.name )
|
|
69
94
|
) {
|
|
70
95
|
return null;
|
|
71
96
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
createBlock,
|
|
6
|
-
__experimentalCloneSanitizedBlock,
|
|
7
|
-
} from '@wordpress/blocks';
|
|
4
|
+
import { createBlock, cloneSanitizedBlock } from '@wordpress/blocks';
|
|
8
5
|
|
|
9
6
|
export default {
|
|
10
7
|
from: [
|
|
@@ -21,9 +18,7 @@ export default {
|
|
|
21
18
|
return createBlock(
|
|
22
19
|
'core/details',
|
|
23
20
|
{},
|
|
24
|
-
blocks.map( ( block ) =>
|
|
25
|
-
__experimentalCloneSanitizedBlock( block )
|
|
26
|
-
)
|
|
21
|
+
blocks.map( ( block ) => cloneSanitizedBlock( block ) )
|
|
27
22
|
);
|
|
28
23
|
},
|
|
29
24
|
},
|
package/src/file/edit.js
CHANGED
|
@@ -77,14 +77,14 @@ function FileEdit( { attributes, isSelected, setAttributes, clientId } ) {
|
|
|
77
77
|
const [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );
|
|
78
78
|
const { media } = useSelect(
|
|
79
79
|
( select ) => ( {
|
|
80
|
-
media:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
media: !! id
|
|
81
|
+
? select( coreStore ).getEntityRecord(
|
|
82
|
+
'postType',
|
|
83
|
+
'attachment',
|
|
84
|
+
id,
|
|
85
|
+
{ context: 'view' }
|
|
86
|
+
)
|
|
87
|
+
: undefined,
|
|
88
88
|
} ),
|
|
89
89
|
[ id ]
|
|
90
90
|
);
|
package/src/file/transforms.js
CHANGED
|
@@ -11,6 +11,31 @@ import { getFilename } from '@wordpress/url';
|
|
|
11
11
|
// Transforms bypass the default variation, so set the localized default here.
|
|
12
12
|
const downloadButtonText = _x( 'Download', 'button label' );
|
|
13
13
|
|
|
14
|
+
// The File → audio/video/image transforms are identical apart from the target
|
|
15
|
+
// block, its media MIME type, and the src attribute name (image uses `url`).
|
|
16
|
+
const toMediaTransform = ( blockName, mediaType, srcAttribute ) => ( {
|
|
17
|
+
type: 'block',
|
|
18
|
+
blocks: [ blockName ],
|
|
19
|
+
isMatch: ( { id } ) => {
|
|
20
|
+
if ( ! id ) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const { getEntityRecord } = select( coreStore );
|
|
24
|
+
const media = getEntityRecord( 'postType', 'attachment', id, {
|
|
25
|
+
context: 'view',
|
|
26
|
+
} );
|
|
27
|
+
return !! media && media.mime_type.includes( mediaType );
|
|
28
|
+
},
|
|
29
|
+
transform: ( attributes ) => {
|
|
30
|
+
return createBlock( blockName, {
|
|
31
|
+
[ srcAttribute ]: attributes.href,
|
|
32
|
+
caption: attributes.fileName,
|
|
33
|
+
id: attributes.id,
|
|
34
|
+
anchor: attributes.anchor,
|
|
35
|
+
} );
|
|
36
|
+
},
|
|
37
|
+
} );
|
|
38
|
+
|
|
14
39
|
const transforms = {
|
|
15
40
|
from: [
|
|
16
41
|
{
|
|
@@ -78,66 +103,9 @@ const transforms = {
|
|
|
78
103
|
},
|
|
79
104
|
],
|
|
80
105
|
to: [
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
isMatch: ( { id } ) => {
|
|
85
|
-
if ( ! id ) {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
const { getEntityRecord } = select( coreStore );
|
|
89
|
-
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
90
|
-
return !! media && media.mime_type.includes( 'audio' );
|
|
91
|
-
},
|
|
92
|
-
transform: ( attributes ) => {
|
|
93
|
-
return createBlock( 'core/audio', {
|
|
94
|
-
src: attributes.href,
|
|
95
|
-
caption: attributes.fileName,
|
|
96
|
-
id: attributes.id,
|
|
97
|
-
anchor: attributes.anchor,
|
|
98
|
-
} );
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
type: 'block',
|
|
103
|
-
blocks: [ 'core/video' ],
|
|
104
|
-
isMatch: ( { id } ) => {
|
|
105
|
-
if ( ! id ) {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
const { getEntityRecord } = select( coreStore );
|
|
109
|
-
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
110
|
-
return !! media && media.mime_type.includes( 'video' );
|
|
111
|
-
},
|
|
112
|
-
transform: ( attributes ) => {
|
|
113
|
-
return createBlock( 'core/video', {
|
|
114
|
-
src: attributes.href,
|
|
115
|
-
caption: attributes.fileName,
|
|
116
|
-
id: attributes.id,
|
|
117
|
-
anchor: attributes.anchor,
|
|
118
|
-
} );
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: 'block',
|
|
123
|
-
blocks: [ 'core/image' ],
|
|
124
|
-
isMatch: ( { id } ) => {
|
|
125
|
-
if ( ! id ) {
|
|
126
|
-
return false;
|
|
127
|
-
}
|
|
128
|
-
const { getEntityRecord } = select( coreStore );
|
|
129
|
-
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
130
|
-
return !! media && media.mime_type.includes( 'image' );
|
|
131
|
-
},
|
|
132
|
-
transform: ( attributes ) => {
|
|
133
|
-
return createBlock( 'core/image', {
|
|
134
|
-
url: attributes.href,
|
|
135
|
-
caption: attributes.fileName,
|
|
136
|
-
id: attributes.id,
|
|
137
|
-
anchor: attributes.anchor,
|
|
138
|
-
} );
|
|
139
|
-
},
|
|
140
|
-
},
|
|
106
|
+
toMediaTransform( 'core/audio', 'audio', 'src' ),
|
|
107
|
+
toMediaTransform( 'core/video', 'video', 'src' ),
|
|
108
|
+
toMediaTransform( 'core/image', 'image', 'url' ),
|
|
141
109
|
],
|
|
142
110
|
};
|
|
143
111
|
|
package/src/gallery/README.md
CHANGED
|
@@ -47,7 +47,7 @@ _Defined via the [`supports`](https://developer.wordpress.org/block-editor/refer
|
|
|
47
47
|
- [`spacing`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#spacing):
|
|
48
48
|
- `margin`: `true`
|
|
49
49
|
- `padding`: `true`
|
|
50
|
-
- `blockGap`: `["horizontal","vertical"]`
|
|
50
|
+
- `blockGap`: `{"sides":["horizontal","vertical"],"__experimentalDefault":"var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )"}`
|
|
51
51
|
- [`color`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color):
|
|
52
52
|
- [`text`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color-text): `false`
|
|
53
53
|
- [`background`](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-supports/#color-background): `true`
|
package/src/gallery/block.json
CHANGED
|
@@ -142,8 +142,10 @@
|
|
|
142
142
|
"spacing": {
|
|
143
143
|
"margin": true,
|
|
144
144
|
"padding": true,
|
|
145
|
-
"blockGap":
|
|
146
|
-
|
|
145
|
+
"blockGap": {
|
|
146
|
+
"sides": [ "horizontal", "vertical" ],
|
|
147
|
+
"__experimentalDefault": "var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )"
|
|
148
|
+
},
|
|
147
149
|
"__experimentalDefaultControls": {
|
|
148
150
|
"blockGap": true,
|
|
149
151
|
"margin": false,
|
package/src/gallery/edit.js
CHANGED
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
import useImageSizes from './use-image-sizes';
|
|
67
67
|
import useGetNewImages from './use-get-new-images';
|
|
68
68
|
import useGetMedia from './use-get-media';
|
|
69
|
-
import
|
|
69
|
+
import GalleryGapCustomProperties from './gap-styles';
|
|
70
70
|
import useDynamicGallery from './use-dynamic-gallery';
|
|
71
71
|
import { GallerySourcePanel, GalleryDynamicView } from './dynamic-gallery';
|
|
72
72
|
import { getDynamicSource, ATTACHED_MEDIA } from './dynamic-source';
|
|
@@ -941,8 +941,8 @@ export default function GalleryEdit( props ) {
|
|
|
941
941
|
/>
|
|
942
942
|
</BlockControls>
|
|
943
943
|
) }
|
|
944
|
-
<
|
|
945
|
-
|
|
944
|
+
<GalleryGapCustomProperties
|
|
945
|
+
style={ attributes.style }
|
|
946
946
|
clientId={ clientId }
|
|
947
947
|
/>
|
|
948
948
|
</>
|
|
@@ -3,35 +3,94 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import {
|
|
5
5
|
__experimentalGetGapCSSValue as getGapCSSValue,
|
|
6
|
+
privateApis as blockEditorPrivateApis,
|
|
7
|
+
store as blockEditorStore,
|
|
6
8
|
useStyleOverride,
|
|
9
|
+
useSettings,
|
|
7
10
|
} from '@wordpress/block-editor';
|
|
11
|
+
import { useSelect } from '@wordpress/data';
|
|
12
|
+
import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Internal dependencies
|
|
16
|
+
*/
|
|
17
|
+
import { unlock } from '../lock-unlock';
|
|
18
|
+
|
|
19
|
+
const { getResponsiveMediaQueries } = unlock( globalStylesEnginePrivateApis );
|
|
20
|
+
const { globalStylesDataKey } = unlock( blockEditorPrivateApis );
|
|
21
|
+
const GALLERY_BLOCK_NAME = 'core/gallery';
|
|
22
|
+
|
|
23
|
+
// --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default
|
|
24
|
+
// gap on the gallery.
|
|
25
|
+
const FALLBACK_VALUE = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
|
|
26
|
+
|
|
27
|
+
function getGalleryGapCustomPropertyStyle( selector, blockGap ) {
|
|
28
|
+
let column = FALLBACK_VALUE;
|
|
29
|
+
if ( blockGap ) {
|
|
23
30
|
column =
|
|
24
31
|
typeof blockGap === 'string'
|
|
25
|
-
? getGapCSSValue( blockGap )
|
|
26
|
-
: getGapCSSValue( blockGap?.left ) ||
|
|
27
|
-
gapValue = row === column ? row : `${ row } ${ column }`;
|
|
32
|
+
? getGapCSSValue( blockGap ) || FALLBACK_VALUE
|
|
33
|
+
: getGapCSSValue( blockGap?.left ) || FALLBACK_VALUE;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
// The unstable gallery gap calculation requires a real value (such as `0px`) and not `0`.
|
|
31
|
-
|
|
32
|
-
--wp--style--unstable-gallery-gap: ${ column === '0' ? '0px' : column }
|
|
33
|
-
gap: ${ gapValue }
|
|
37
|
+
return `${ selector } {
|
|
38
|
+
--wp--style--unstable-gallery-gap: ${ column === '0' ? '0px' : column }
|
|
34
39
|
}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function getBlockGapValue( style ) {
|
|
43
|
+
if ( ! Object.hasOwn( style?.spacing || {}, 'blockGap' ) ) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return style.spacing.blockGap;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default function GalleryGapCustomProperties( { style, clientId } ) {
|
|
51
|
+
const selector = `#block-${ clientId }`;
|
|
52
|
+
const [ viewportSettings ] = useSettings( 'viewport' );
|
|
53
|
+
const globalStyles = useSelect(
|
|
54
|
+
( select ) =>
|
|
55
|
+
select( blockEditorStore ).getSettings()?.[ globalStylesDataKey ],
|
|
56
|
+
[]
|
|
57
|
+
);
|
|
58
|
+
const globalGalleryStyles =
|
|
59
|
+
globalStyles?.blocks?.[ GALLERY_BLOCK_NAME ] || {};
|
|
60
|
+
const styleBlockGap = getBlockGapValue( style );
|
|
61
|
+
const globalGalleryBlockGap =
|
|
62
|
+
globalGalleryStyles?.spacing?.blockGap ?? FALLBACK_VALUE;
|
|
63
|
+
// Prefer the block's own gap value, then Gallery global styles. Missing
|
|
64
|
+
// values fall back to the Gallery blockGap default.
|
|
65
|
+
const blockGap =
|
|
66
|
+
styleBlockGap === undefined ? globalGalleryBlockGap : styleBlockGap;
|
|
67
|
+
let gap = getGalleryGapCustomPropertyStyle( selector, blockGap );
|
|
68
|
+
|
|
69
|
+
Object.entries( getResponsiveMediaQueries( viewportSettings ) ).forEach(
|
|
70
|
+
( [ viewport, mediaQuery ] ) => {
|
|
71
|
+
const styleViewportBlockGap = getBlockGapValue(
|
|
72
|
+
style?.[ viewport ]
|
|
73
|
+
);
|
|
74
|
+
// Viewport-specific block values win. Gallery global viewport values
|
|
75
|
+
// only apply when the block has no base gap, so they do not override an instance value.
|
|
76
|
+
const globalViewportBlockGap =
|
|
77
|
+
styleBlockGap === undefined
|
|
78
|
+
? globalGalleryStyles?.[ viewport ]?.spacing?.blockGap
|
|
79
|
+
: undefined;
|
|
80
|
+
const viewportBlockGap =
|
|
81
|
+
styleViewportBlockGap === undefined
|
|
82
|
+
? globalViewportBlockGap
|
|
83
|
+
: styleViewportBlockGap;
|
|
84
|
+
if ( viewportBlockGap === undefined || viewportBlockGap === null ) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
gap += `${ mediaQuery }{${ getGalleryGapCustomPropertyStyle(
|
|
89
|
+
selector,
|
|
90
|
+
viewportBlockGap
|
|
91
|
+
) }}`;
|
|
92
|
+
}
|
|
93
|
+
);
|
|
35
94
|
|
|
36
95
|
useStyleOverride( { css: gap } );
|
|
37
96
|
|