@wordpress/block-library 8.24.1 → 8.25.1-next.79a6196f.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/LICENSE.md +1 -1
- package/build/audio/edit.js +15 -62
- package/build/audio/edit.js.map +1 -1
- package/build/audio/edit.native.js +1 -1
- package/build/audio/edit.native.js.map +1 -1
- package/build/audio/index.js +2 -2
- package/build/block/edit.js +157 -19
- package/build/block/edit.js.map +1 -1
- package/build/block/index.js +3 -2
- package/build/block/index.js.map +1 -1
- package/build/block/v1/edit.js +116 -0
- package/build/block/v1/edit.js.map +1 -0
- package/build/block/{edit.native.js → v1/edit.native.js} +2 -2
- package/build/block/v1/edit.native.js.map +1 -0
- package/build/button/index.js +2 -2
- package/build/button/save.js +1 -1
- package/build/button/save.js.map +1 -1
- package/build/code/edit.native.js +13 -14
- package/build/code/edit.native.js.map +1 -1
- package/build/code/index.js +2 -2
- package/build/code/save.js +6 -2
- package/build/code/save.js.map +1 -1
- package/build/comments-title/deprecated.js +1 -1
- package/build/comments-title/index.js +1 -1
- package/build/cover/edit/inspector-controls.js +1 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/edit.native.js +1 -0
- package/build/cover/edit.native.js.map +1 -1
- package/build/details/index.js +2 -2
- package/build/embed/deprecated.js +2 -2
- package/build/embed/embed-preview.native.js +1 -1
- package/build/embed/embed-preview.native.js.map +1 -1
- package/build/embed/icons.js +1 -1
- package/build/embed/icons.js.map +1 -1
- package/build/embed/index.js +2 -2
- package/build/embed/transforms.js +2 -2
- package/build/embed/util.js +6 -6
- package/build/embed/util.js.map +1 -1
- package/build/file/edit.js +20 -28
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/index.js +4 -4
- package/build/file/save.js +4 -1
- package/build/file/save.js.map +1 -1
- package/build/form-input/deprecated.js +147 -0
- package/build/form-input/deprecated.js.map +1 -0
- package/build/form-input/edit.js +1 -1
- package/build/form-input/edit.js.map +1 -1
- package/build/form-input/index.js +4 -2
- package/build/form-input/index.js.map +1 -1
- package/build/form-input/save.js +7 -9
- package/build/form-input/save.js.map +1 -1
- package/build/gallery/edit.js +38 -58
- package/build/gallery/edit.js.map +1 -1
- package/build/gallery/gallery.js +19 -24
- package/build/gallery/gallery.js.map +1 -1
- package/build/gallery/gallery.native.js +1 -1
- package/build/gallery/gallery.native.js.map +1 -1
- package/build/gallery/index.js +8 -4
- package/build/gallery/index.js.map +1 -1
- package/build/gallery/transforms.js +4 -68
- package/build/gallery/transforms.js.map +1 -1
- package/build/gallery/v1/gallery.native.js +1 -1
- package/build/gallery/v1/gallery.native.js.map +1 -1
- package/build/group/edit.js +6 -1
- package/build/group/edit.js.map +1 -1
- package/build/group/index.js +5 -1
- package/build/group/index.js.map +1 -1
- package/build/heading/index.js +3 -6
- package/build/heading/index.js.map +1 -1
- package/build/image/deprecated.js +11 -0
- package/build/image/deprecated.js.map +1 -1
- package/build/image/edit.native.js +4 -1
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +35 -71
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +2 -2
- package/build/image/save.js +3 -1
- package/build/image/save.js.map +1 -1
- package/build/image/view.js +7 -1
- package/build/image/view.js.map +1 -1
- package/build/list/edit.js +10 -15
- package/build/list/edit.js.map +1 -1
- package/build/list-item/edit.js +17 -2
- package/build/list-item/edit.js.map +1 -1
- package/build/list-item/hooks/use-enter.js +5 -3
- package/build/list-item/hooks/use-enter.js.map +1 -1
- package/build/list-item/hooks/use-enter.native.js +4 -3
- package/build/list-item/hooks/use-enter.native.js.map +1 -1
- package/build/list-item/hooks/use-indent-list-item.js +2 -3
- package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-merge.js +1 -1
- package/build/list-item/hooks/use-merge.js.map +1 -1
- package/build/list-item/hooks/use-outdent-list-item.js +3 -17
- package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build/list-item/hooks/use-space.js +8 -4
- package/build/list-item/hooks/use-space.js.map +1 -1
- package/build/list-item/index.js +10 -3
- package/build/list-item/index.js.map +1 -1
- package/build/media-text/media-container.native.js +3 -0
- package/build/media-text/media-container.native.js.map +1 -1
- package/build/navigation/constants.js +3 -1
- package/build/navigation/constants.js.map +1 -1
- package/build/navigation/edit/index.js +5 -1
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/view.js +25 -1
- package/build/navigation/view.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +2 -2
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/paragraph/edit.js +54 -32
- package/build/paragraph/edit.js.map +1 -1
- package/build/paragraph/index.js +2 -4
- package/build/paragraph/index.js.map +1 -1
- package/build/paragraph/transforms.js +2 -4
- package/build/paragraph/transforms.js.map +1 -1
- package/build/pattern/edit.js +24 -2
- package/build/pattern/edit.js.map +1 -1
- package/build/pattern/recursion-detector.js +147 -0
- package/build/pattern/recursion-detector.js.map +1 -0
- package/build/post-featured-image/edit.js +19 -2
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/index.js +4 -0
- package/build/post-featured-image/index.js.map +1 -1
- package/build/post-title/index.js +1 -3
- package/build/post-title/index.js.map +1 -1
- package/build/preformatted/index.js +2 -3
- package/build/preformatted/index.js.map +1 -1
- package/build/pullquote/index.js +5 -7
- package/build/pullquote/index.js.map +1 -1
- package/build/query/edit/inspector-controls/index.js +3 -1
- package/build/query/edit/inspector-controls/index.js.map +1 -1
- package/build/query/edit/inspector-controls/taxonomy-controls.js +2 -0
- package/build/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
- package/build/query-pagination-numbers/index.js +1 -1
- package/build/query-title/index.js +1 -3
- package/build/query-title/index.js.map +1 -1
- package/build/quote/index.js +3 -5
- package/build/quote/index.js.map +1 -1
- package/build/quote/transforms.js +7 -6
- package/build/quote/transforms.js.map +1 -1
- package/build/search/edit.js +3 -5
- package/build/search/edit.js.map +1 -1
- package/build/search/index.js +0 -4
- package/build/search/index.js.map +1 -1
- package/build/site-logo/edit.js +7 -6
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-title/index.js +1 -5
- package/build/site-title/index.js.map +1 -1
- package/build/social-link/icons/gravatar.js +22 -0
- package/build/social-link/icons/gravatar.js.map +1 -0
- package/build/social-link/icons/index.js +11 -0
- package/build/social-link/icons/index.js.map +1 -1
- package/build/social-link/variations.js +7 -0
- package/build/social-link/variations.js.map +1 -1
- package/build/spacer/edit.native.js +2 -2
- package/build/spacer/edit.native.js.map +1 -1
- package/build/table/edit.js +3 -1
- package/build/table/edit.js.map +1 -1
- package/build/table/index.js +9 -10
- package/build/table/index.js.map +1 -1
- package/build/table-of-contents/edit.js +2 -2
- package/build/table-of-contents/edit.js.map +1 -1
- package/build/table-of-contents/index.js +5 -2
- package/build/table-of-contents/index.js.map +1 -1
- package/build/tag-cloud/edit.js +5 -9
- package/build/tag-cloud/edit.js.map +1 -1
- package/build/utils/caption.js +90 -0
- package/build/utils/caption.js.map +1 -0
- package/build/utils/constants.js +16 -0
- package/build/utils/constants.js.map +1 -0
- package/build/utils/remove-anchor-tag.js +2 -1
- package/build/utils/remove-anchor-tag.js.map +1 -1
- package/build/verse/index.js +3 -5
- package/build/verse/index.js.map +1 -1
- package/build/video/deprecated.js +2 -2
- package/build/video/edit.js +16 -57
- package/build/video/edit.js.map +1 -1
- package/build/video/edit.native.js +1 -1
- package/build/video/edit.native.js.map +1 -1
- package/build/video/index.js +2 -2
- package/build-module/audio/edit.js +19 -66
- package/build-module/audio/edit.js.map +1 -1
- package/build-module/audio/edit.native.js +2 -2
- package/build-module/audio/edit.native.js.map +1 -1
- package/build-module/audio/index.js +2 -2
- package/build-module/block/edit.js +160 -22
- package/build-module/block/edit.js.map +1 -1
- package/build-module/block/index.js +3 -2
- package/build-module/block/index.js.map +1 -1
- package/build-module/block/v1/edit.js +108 -0
- package/build-module/block/v1/edit.js.map +1 -0
- package/build-module/block/{edit.native.js → v1/edit.native.js} +2 -2
- package/build-module/block/v1/edit.native.js.map +1 -0
- package/build-module/button/index.js +2 -2
- package/build-module/button/save.js +1 -1
- package/build-module/button/save.js.map +1 -1
- package/build-module/code/edit.native.js +14 -16
- package/build-module/code/edit.native.js.map +1 -1
- package/build-module/code/index.js +2 -2
- package/build-module/code/save.js +6 -2
- package/build-module/code/save.js.map +1 -1
- package/build-module/comments-title/deprecated.js +1 -1
- package/build-module/comments-title/index.js +1 -1
- package/build-module/cover/edit/inspector-controls.js +1 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/edit.native.js +1 -0
- package/build-module/cover/edit.native.js.map +1 -1
- package/build-module/details/index.js +2 -2
- package/build-module/embed/deprecated.js +2 -2
- package/build-module/embed/embed-preview.native.js +2 -2
- package/build-module/embed/embed-preview.native.js.map +1 -1
- package/build-module/embed/icons.js +1 -1
- package/build-module/embed/icons.js.map +1 -1
- package/build-module/embed/index.js +2 -2
- package/build-module/embed/transforms.js +2 -2
- package/build-module/embed/util.js +6 -6
- package/build-module/embed/util.js.map +1 -1
- package/build-module/file/edit.js +20 -28
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/index.js +4 -4
- package/build-module/file/save.js +4 -1
- package/build-module/file/save.js.map +1 -1
- package/build-module/form-input/deprecated.js +138 -0
- package/build-module/form-input/deprecated.js.map +1 -0
- package/build-module/form-input/edit.js +1 -1
- package/build-module/form-input/edit.js.map +1 -1
- package/build-module/form-input/index.js +4 -2
- package/build-module/form-input/index.js.map +1 -1
- package/build-module/form-input/save.js +8 -10
- package/build-module/form-input/save.js.map +1 -1
- package/build-module/gallery/edit.js +41 -61
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/gallery/gallery.js +18 -21
- package/build-module/gallery/gallery.js.map +1 -1
- package/build-module/gallery/gallery.native.js +2 -2
- package/build-module/gallery/gallery.native.js.map +1 -1
- package/build-module/gallery/index.js +8 -4
- package/build-module/gallery/index.js.map +1 -1
- package/build-module/gallery/transforms.js +4 -68
- package/build-module/gallery/transforms.js.map +1 -1
- package/build-module/gallery/v1/gallery.native.js +2 -2
- package/build-module/gallery/v1/gallery.native.js.map +1 -1
- package/build-module/group/edit.js +6 -1
- package/build-module/group/edit.js.map +1 -1
- package/build-module/group/index.js +5 -1
- package/build-module/group/index.js.map +1 -1
- package/build-module/heading/index.js +3 -6
- package/build-module/heading/index.js.map +1 -1
- package/build-module/image/deprecated.js +11 -0
- package/build-module/image/deprecated.js.map +1 -1
- package/build-module/image/edit.native.js +5 -2
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +35 -71
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +2 -2
- package/build-module/image/save.js +3 -1
- package/build-module/image/save.js.map +1 -1
- package/build-module/image/view.js +7 -1
- package/build-module/image/view.js.map +1 -1
- package/build-module/list/edit.js +10 -15
- package/build-module/list/edit.js.map +1 -1
- package/build-module/list-item/edit.js +18 -3
- package/build-module/list-item/edit.js.map +1 -1
- package/build-module/list-item/hooks/use-enter.js +5 -3
- package/build-module/list-item/hooks/use-enter.js.map +1 -1
- package/build-module/list-item/hooks/use-enter.native.js +4 -3
- package/build-module/list-item/hooks/use-enter.native.js.map +1 -1
- package/build-module/list-item/hooks/use-indent-list-item.js +2 -3
- package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-merge.js +1 -1
- package/build-module/list-item/hooks/use-merge.js.map +1 -1
- package/build-module/list-item/hooks/use-outdent-list-item.js +3 -17
- package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
- package/build-module/list-item/hooks/use-space.js +8 -4
- package/build-module/list-item/hooks/use-space.js.map +1 -1
- package/build-module/list-item/index.js +10 -3
- package/build-module/list-item/index.js.map +1 -1
- package/build-module/media-text/media-container.native.js +3 -0
- package/build-module/media-text/media-container.native.js.map +1 -1
- package/build-module/navigation/constants.js +1 -0
- package/build-module/navigation/constants.js.map +1 -1
- package/build-module/navigation/edit/index.js +7 -3
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/view.js +25 -1
- package/build-module/navigation/view.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +2 -2
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/paragraph/edit.js +54 -32
- package/build-module/paragraph/edit.js.map +1 -1
- package/build-module/paragraph/index.js +2 -4
- package/build-module/paragraph/index.js.map +1 -1
- package/build-module/paragraph/transforms.js +2 -4
- package/build-module/paragraph/transforms.js.map +1 -1
- package/build-module/pattern/edit.js +26 -4
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/pattern/recursion-detector.js +139 -0
- package/build-module/pattern/recursion-detector.js.map +1 -0
- package/build-module/post-featured-image/edit.js +19 -2
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/index.js +4 -0
- package/build-module/post-featured-image/index.js.map +1 -1
- package/build-module/post-title/index.js +1 -3
- package/build-module/post-title/index.js.map +1 -1
- package/build-module/preformatted/index.js +2 -3
- package/build-module/preformatted/index.js.map +1 -1
- package/build-module/pullquote/index.js +5 -7
- package/build-module/pullquote/index.js.map +1 -1
- package/build-module/query/edit/inspector-controls/index.js +3 -1
- package/build-module/query/edit/inspector-controls/index.js.map +1 -1
- package/build-module/query/edit/inspector-controls/taxonomy-controls.js +2 -0
- package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
- package/build-module/query-pagination-numbers/index.js +1 -1
- package/build-module/query-title/index.js +1 -3
- package/build-module/query-title/index.js.map +1 -1
- package/build-module/quote/index.js +3 -5
- package/build-module/quote/index.js.map +1 -1
- package/build-module/quote/transforms.js +7 -6
- package/build-module/quote/transforms.js.map +1 -1
- package/build-module/search/edit.js +3 -5
- package/build-module/search/edit.js.map +1 -1
- package/build-module/search/index.js +0 -4
- package/build-module/search/index.js.map +1 -1
- package/build-module/site-logo/edit.js +7 -6
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-title/index.js +1 -5
- package/build-module/site-title/index.js.map +1 -1
- package/build-module/social-link/icons/gravatar.js +14 -0
- package/build-module/social-link/icons/gravatar.js.map +1 -0
- package/build-module/social-link/icons/index.js +1 -0
- package/build-module/social-link/icons/index.js.map +1 -1
- package/build-module/social-link/variations.js +8 -1
- package/build-module/social-link/variations.js.map +1 -1
- package/build-module/spacer/edit.native.js +2 -2
- package/build-module/spacer/edit.native.js.map +1 -1
- package/build-module/table/edit.js +3 -1
- package/build-module/table/edit.js.map +1 -1
- package/build-module/table/index.js +9 -10
- package/build-module/table/index.js.map +1 -1
- package/build-module/table-of-contents/edit.js +1 -1
- package/build-module/table-of-contents/edit.js.map +1 -1
- package/build-module/table-of-contents/index.js +5 -1
- package/build-module/table-of-contents/index.js.map +1 -1
- package/build-module/tag-cloud/edit.js +6 -10
- package/build-module/tag-cloud/edit.js.map +1 -1
- package/build-module/utils/caption.js +82 -0
- package/build-module/utils/caption.js.map +1 -0
- package/build-module/utils/constants.js +9 -0
- package/build-module/utils/constants.js.map +1 -0
- package/build-module/utils/remove-anchor-tag.js +2 -1
- package/build-module/utils/remove-anchor-tag.js.map +1 -1
- package/build-module/verse/index.js +3 -5
- package/build-module/verse/index.js.map +1 -1
- package/build-module/video/deprecated.js +2 -2
- package/build-module/video/edit.js +21 -62
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/edit.native.js +2 -2
- package/build-module/video/edit.native.js.map +1 -1
- package/build-module/video/index.js +2 -2
- package/build-style/button/editor-rtl.css +0 -37
- package/build-style/button/editor.css +0 -37
- package/build-style/button/style-rtl.css +6 -6
- package/build-style/button/style.css +6 -6
- package/build-style/editor-rtl.css +3 -55
- package/build-style/editor.css +3 -55
- package/build-style/navigation/editor-rtl.css +2 -4
- package/build-style/navigation/editor.css +2 -4
- package/build-style/navigation/style-rtl.css +14 -18
- package/build-style/navigation/style.css +14 -18
- package/build-style/search/style-rtl.css +26 -27
- package/build-style/search/style.css +26 -27
- package/build-style/social-links/style-rtl.css +14 -2
- package/build-style/social-links/style.css +14 -2
- package/build-style/style-rtl.css +60 -53
- package/build-style/style.css +60 -53
- package/build-style/table/editor-rtl.css +1 -14
- package/build-style/table/editor.css +1 -14
- package/package.json +32 -32
- package/src/audio/block.json +2 -2
- package/src/audio/edit.js +29 -92
- package/src/audio/edit.native.js +2 -1
- package/src/audio/test/__snapshots__/edit.native.js.snap +12 -0
- package/src/audio/test/edit.native.js +29 -0
- package/src/block/edit.js +218 -37
- package/src/block/index.js +3 -2
- package/src/block/index.php +48 -0
- package/src/block/v1/edit.js +163 -0
- package/src/block/{edit.native.js → v1/edit.native.js} +2 -2
- package/src/button/block.json +2 -2
- package/src/button/editor.scss +0 -43
- package/src/button/save.js +1 -1
- package/src/button/style.scss +6 -6
- package/src/buttons/test/__snapshots__/edit.native.js.snap +6 -0
- package/src/buttons/test/edit.native.js +49 -0
- package/src/code/block.json +2 -2
- package/src/code/edit.native.js +11 -13
- package/src/code/save.js +4 -1
- package/src/code/test/edit.native.js +2 -2
- package/src/comments-title/block.json +1 -1
- package/src/cover/edit/inspector-controls.js +1 -1
- package/src/cover/edit.native.js +1 -0
- package/src/cover/test/edit.native.js +7 -1
- package/src/details/block.json +2 -2
- package/src/embed/block.json +2 -2
- package/src/embed/embed-preview.native.js +2 -1
- package/src/embed/icons.js +1 -1
- package/src/embed/util.js +2 -2
- package/src/file/block.json +4 -4
- package/src/file/edit.js +18 -25
- package/src/file/edit.native.js +1 -1
- package/src/file/save.js +5 -1
- package/src/form-input/block.json +2 -2
- package/src/form-input/deprecated.js +142 -0
- package/src/form-input/edit.js +1 -1
- package/src/form-input/index.js +2 -0
- package/src/form-input/save.js +27 -24
- package/src/gallery/block.json +8 -4
- package/src/gallery/edit.js +70 -98
- package/src/gallery/gallery.js +22 -36
- package/src/gallery/gallery.native.js +6 -2
- package/src/gallery/index.php +15 -0
- package/src/gallery/transforms.js +2 -55
- package/src/gallery/v1/gallery.native.js +2 -1
- package/src/group/block.json +5 -1
- package/src/group/edit.js +4 -1
- package/src/heading/block.json +3 -6
- package/src/image/block.json +2 -2
- package/src/image/deprecated.js +8 -0
- package/src/image/edit.native.js +5 -3
- package/src/image/image.js +77 -127
- package/src/image/index.php +1 -6
- package/src/image/save.js +3 -1
- package/src/image/view.js +5 -2
- package/src/list/edit.js +27 -35
- package/src/list-item/block.json +10 -3
- package/src/list-item/edit.js +18 -2
- package/src/list-item/hooks/use-enter.js +63 -62
- package/src/list-item/hooks/use-enter.native.js +9 -5
- package/src/list-item/hooks/use-indent-list-item.js +43 -53
- package/src/list-item/hooks/use-merge.js +1 -1
- package/src/list-item/hooks/use-outdent-list-item.js +50 -69
- package/src/list-item/hooks/use-space.js +7 -4
- package/src/media-text/media-container.native.js +3 -1
- package/src/navigation/constants.js +2 -0
- package/src/navigation/edit/index.js +18 -3
- package/src/navigation/editor.scss +1 -1
- package/src/navigation/index.php +1 -1
- package/src/navigation/style.scss +18 -16
- package/src/navigation/view.js +29 -3
- package/src/navigation-link/test/__snapshots__/hooks.js.snap +6 -3
- package/src/page-list/convert-to-links-modal.js +2 -2
- package/src/paragraph/block.json +2 -4
- package/src/paragraph/edit.js +53 -40
- package/src/paragraph/test/__snapshots__/edit.native.js.snap +12 -0
- package/src/paragraph/test/edit.native.js +114 -0
- package/src/pattern/edit.js +35 -3
- package/src/pattern/index.php +16 -0
- package/src/pattern/recursion-detector.js +145 -0
- package/src/pattern/test/index.js +74 -0
- package/src/post-featured-image/block.json +4 -0
- package/src/post-featured-image/edit.js +32 -1
- package/src/post-featured-image/index.php +31 -0
- package/src/post-title/block.json +1 -3
- package/src/preformatted/block.json +2 -3
- package/src/pullquote/block.json +5 -7
- package/src/query/edit/inspector-controls/index.js +2 -0
- package/src/query/edit/inspector-controls/taxonomy-controls.js +2 -0
- package/src/query-pagination-numbers/block.json +1 -1
- package/src/query-title/block.json +1 -3
- package/src/quote/block.json +3 -5
- package/src/quote/transforms.js +12 -11
- package/src/search/block.json +0 -4
- package/src/search/edit.js +2 -8
- package/src/search/index.php +3 -7
- package/src/search/style.scss +27 -29
- package/src/site-logo/edit.js +3 -4
- package/src/site-title/block.json +1 -5
- package/src/social-link/icons/gravatar.js +10 -0
- package/src/social-link/icons/index.js +1 -0
- package/src/social-link/index.php +5 -1
- package/src/social-link/socials-with-bg.scss +5 -0
- package/src/social-link/socials-without-bg.scss +4 -0
- package/src/social-link/variations.js +7 -0
- package/src/social-links/style.scss +14 -8
- package/src/spacer/edit.native.js +4 -2
- package/src/table/block.json +9 -10
- package/src/table/edit.js +3 -1
- package/src/table/editor.scss +1 -17
- package/src/table-of-contents/edit.js +1 -1
- package/src/table-of-contents/index.js +5 -1
- package/src/tag-cloud/edit.js +7 -7
- package/src/template-part/index.php +6 -0
- package/src/utils/caption.js +108 -0
- package/src/utils/constants.js +8 -0
- package/src/utils/remove-anchor-tag.js +2 -1
- package/src/verse/block.json +3 -5
- package/src/video/block.json +2 -2
- package/src/video/edit.js +40 -100
- package/src/video/edit.native.js +2 -1
- package/build/block/edit.native.js.map +0 -1
- package/build/table-of-contents/icon.js +0 -22
- package/build/table-of-contents/icon.js.map +0 -1
- package/build-module/block/edit.native.js.map +0 -1
- package/build-module/table-of-contents/icon.js +0 -15
- package/build-module/table-of-contents/icon.js.map +0 -1
- package/src/table-of-contents/icon.js +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","paragraph","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","usesContext","attributes","align","type","content","source","selector","__experimentalRole","dropCap","placeholder","direction","supports","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","
|
|
1
|
+
{"version":3,"names":["__","paragraph","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","usesContext","attributes","align","type","content","source","selector","__experimentalRole","dropCap","placeholder","direction","supports","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalTextDecoration","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","__experimentalTextTransform","__experimentalWritingMode","__experimentalSelector","__unstablePasteTextInline","editorStyle","style","save","transforms","settings","example","__experimentalLabel","context","customName","length","merge","attributesToMerge","init"],"sources":["@wordpress/block-library/src/paragraph/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { paragraph 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\tcontent: __(\n\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),\n\t\t},\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst customName = attributes?.metadata?.name;\n\n\t\tif ( context === 'list-view' && customName ) {\n\t\t\treturn customName;\n\t\t}\n\n\t\tif ( context === 'accessibility' ) {\n\t\t\tif ( customName ) {\n\t\t\t\treturn customName;\n\t\t\t}\n\n\t\t\tconst { content } = attributes;\n\t\t\treturn ! content || content.length === 0 ? __( 'Empty' ) : content;\n\t\t}\n\t},\n\ttransforms,\n\tdeprecated,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent:\n\t\t\t\t( attributes.content || '' ) +\n\t\t\t\t( attributesToMerge.content || '' ),\n\t\t};\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,IAAIC,IAAI,QAAQ,kBAAkB;;AAEpD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,WAAA;EAAAC,UAAA;IAAAC,KAAA;MAAAC,IAAA;IAAA;IAAAC,OAAA;MAAAD,IAAA;MAAAE,MAAA;MAAAC,QAAA;MAAAC,kBAAA;IAAA;IAAAC,OAAA;MAAAL,IAAA;MAAA;IAAA;IAAAM,WAAA;MAAAN,IAAA;IAAA;IAAAO,SAAA;MAAAP,IAAA;MAAA;IAAA;EAAA;EAAAQ,QAAA;IAAAC,MAAA;IAAAC,SAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAL,6BAAA;QAAAI,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,4BAAA;MAAAC,uBAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAC,2BAAA;MAAAC,yBAAA;MAAAf,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAS,sBAAA;IAAAC,yBAAA;EAAA;EAAAC,WAAA;EAAAC,KAAA;AAAA;AAE1B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAE5C;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAM6C,QAAQ,GAAG;EACvBpD,IAAI;EACJqD,OAAO,EAAE;IACRvC,UAAU,EAAE;MACXG,OAAO,EAAEnB,EAAE,CACV,kOACD;IACD;EACD,CAAC;EACDwD,mBAAmBA,CAAExC,UAAU,EAAE;IAAEyC;EAAQ,CAAC,EAAG;IAC9C,MAAMC,UAAU,GAAG1C,UAAU,EAAEV,QAAQ,EAAEG,IAAI;IAE7C,IAAKgD,OAAO,KAAK,WAAW,IAAIC,UAAU,EAAG;MAC5C,OAAOA,UAAU;IAClB;IAEA,IAAKD,OAAO,KAAK,eAAe,EAAG;MAClC,IAAKC,UAAU,EAAG;QACjB,OAAOA,UAAU;MAClB;MAEA,MAAM;QAAEvC;MAAQ,CAAC,GAAGH,UAAU;MAC9B,OAAO,CAAEG,OAAO,IAAIA,OAAO,CAACwC,MAAM,KAAK,CAAC,GAAG3D,EAAE,CAAE,OAAQ,CAAC,GAAGmB,OAAO;IACnE;EACD,CAAC;EACDkC,UAAU;EACVjD,UAAU;EACVwD,KAAKA,CAAE5C,UAAU,EAAE6C,iBAAiB,EAAG;IACtC,OAAO;MACN1C,OAAO,EACN,CAAEH,UAAU,CAACG,OAAO,IAAI,EAAE,KACxB0C,iBAAiB,CAAC1C,OAAO,IAAI,EAAE;IACnC,CAAC;EACF,CAAC;EACDd,IAAI;EACJ+C;AACD,CAAC;AAED,OAAO,MAAMU,IAAI,GAAGA,CAAA,KAAM3D,SAAS,CAAE;EAAEM,IAAI;EAAEH,QAAQ;EAAEgD;AAAS,CAAE,CAAC"}
|
|
@@ -23,10 +23,9 @@ const {
|
|
|
23
23
|
type: "string"
|
|
24
24
|
},
|
|
25
25
|
content: {
|
|
26
|
-
type: "
|
|
27
|
-
source: "
|
|
26
|
+
type: "rich-text",
|
|
27
|
+
source: "rich-text",
|
|
28
28
|
selector: "p",
|
|
29
|
-
"default": "",
|
|
30
29
|
__experimentalRole: "content"
|
|
31
30
|
},
|
|
32
31
|
dropCap: {
|
|
@@ -52,7 +51,6 @@ const {
|
|
|
52
51
|
text: true
|
|
53
52
|
}
|
|
54
53
|
},
|
|
55
|
-
__experimentalConnections: true,
|
|
56
54
|
spacing: {
|
|
57
55
|
margin: true,
|
|
58
56
|
padding: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createBlock","getBlockAttributes","name","$schema","apiVersion","title","category","description","keywords","textdomain","usesContext","attributes","align","type","content","source","selector","__experimentalRole","dropCap","placeholder","direction","supports","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","
|
|
1
|
+
{"version":3,"names":["createBlock","getBlockAttributes","name","$schema","apiVersion","title","category","description","keywords","textdomain","usesContext","attributes","align","type","content","source","selector","__experimentalRole","dropCap","placeholder","direction","supports","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalTextDecoration","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","__experimentalTextTransform","__experimentalWritingMode","__experimentalSelector","__unstablePasteTextInline","editorStyle","style","transforms","from","priority","schema","phrasingContentSchema","isPaste","p","children","transform","node","outerHTML","textAlign"],"sources":["@wordpress/block-library/src/paragraph/transforms.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlock, getBlockAttributes } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\t// Paragraph is a fallback and should be matched last.\n\t\t\tpriority: 20,\n\t\t\tselector: 'p',\n\t\t\tschema: ( { phrasingContentSchema, isPaste } ) => ( {\n\t\t\t\tp: {\n\t\t\t\t\tchildren: phrasingContentSchema,\n\t\t\t\t\tattributes: isPaste ? [] : [ 'style', 'id' ],\n\t\t\t\t},\n\t\t\t} ),\n\t\t\ttransform( node ) {\n\t\t\t\tconst attributes = getBlockAttributes( name, node.outerHTML );\n\t\t\t\tconst { textAlign } = node.style || {};\n\n\t\t\t\tif (\n\t\t\t\t\ttextAlign === 'left' ||\n\t\t\t\t\ttextAlign === 'center' ||\n\t\t\t\t\ttextAlign === 'right'\n\t\t\t\t) {\n\t\t\t\t\tattributes.align = textAlign;\n\t\t\t\t}\n\n\t\t\t\treturn createBlock( name, attributes );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,kBAAkB,QAAQ,mBAAmB;;AAEnE;AACA;AACA;AAFA;EAAAC,IAAA,EAAAA;AAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAF,IAAA;EAAAG,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,WAAA;EAAAC,UAAA;IAAAC,KAAA;MAAAC,IAAA;IAAA;IAAAC,OAAA;MAAAD,IAAA;MAAAE,MAAA;MAAAC,QAAA;MAAAC,kBAAA;IAAA;IAAAC,OAAA;MAAAL,IAAA;MAAA;IAAA;IAAAM,WAAA;MAAAN,IAAA;IAAA;IAAAO,SAAA;MAAAP,IAAA;MAAA;IAAA;EAAA;EAAAQ,QAAA;IAAAC,MAAA;IAAAC,SAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAL,6BAAA;QAAAI,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,4BAAA;MAAAC,uBAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAC,2BAAA;MAAAC,yBAAA;MAAAf,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAS,sBAAA;IAAAC,yBAAA;EAAA;EAAAC,WAAA;EAAAC,KAAA;AAAA;AAKA,MAAMC,UAAU,GAAG;EAClBC,IAAI,EAAE,CACL;IACCnC,IAAI,EAAE,KAAK;IACX;IACAoC,QAAQ,EAAE,EAAE;IACZjC,QAAQ,EAAE,GAAG;IACbkC,MAAM,EAAEA,CAAE;MAAEC,qBAAqB;MAAEC;IAAQ,CAAC,MAAQ;MACnDC,CAAC,EAAE;QACFC,QAAQ,EAAEH,qBAAqB;QAC/BxC,UAAU,EAAEyC,OAAO,GAAG,EAAE,GAAG,CAAE,OAAO,EAAE,IAAI;MAC3C;IACD,CAAC,CAAE;IACHG,SAASA,CAAEC,IAAI,EAAG;MACjB,MAAM7C,UAAU,GAAGV,kBAAkB,CAAEC,IAAI,EAAEsD,IAAI,CAACC,SAAU,CAAC;MAC7D,MAAM;QAAEC;MAAU,CAAC,GAAGF,IAAI,CAACV,KAAK,IAAI,CAAC,CAAC;MAEtC,IACCY,SAAS,KAAK,MAAM,IACpBA,SAAS,KAAK,QAAQ,IACtBA,SAAS,KAAK,OAAO,EACpB;QACD/C,UAAU,CAACC,KAAK,GAAG8C,SAAS;MAC7B;MAEA,OAAO1D,WAAW,CAAEE,IAAI,EAAES,UAAW,CAAC;IACvC;EACD,CAAC;AAEH,CAAC;AAED,eAAeoC,UAAU"}
|
|
@@ -4,9 +4,15 @@ import { createElement } from "react";
|
|
|
4
4
|
*/
|
|
5
5
|
import { cloneBlock } from '@wordpress/blocks';
|
|
6
6
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
7
|
-
import { useEffect } from '@wordpress/element';
|
|
8
|
-
import { store as blockEditorStore, useBlockProps } from '@wordpress/block-editor';
|
|
7
|
+
import { useState, useEffect } from '@wordpress/element';
|
|
8
|
+
import { Warning, store as blockEditorStore, useBlockProps } from '@wordpress/block-editor';
|
|
9
9
|
import { store as coreStore } from '@wordpress/core-data';
|
|
10
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
import { useParsePatternDependencies } from './recursion-detector';
|
|
10
16
|
const PatternEdit = ({
|
|
11
17
|
attributes,
|
|
12
18
|
clientId
|
|
@@ -22,6 +28,8 @@ const PatternEdit = ({
|
|
|
22
28
|
getBlockRootClientId,
|
|
23
29
|
getBlockEditingMode
|
|
24
30
|
} = useSelect(blockEditorStore);
|
|
31
|
+
const [hasRecursionError, setHasRecursionError] = useState(false);
|
|
32
|
+
const parsePatternDependencies = useParsePatternDependencies();
|
|
25
33
|
|
|
26
34
|
// Duplicated in packages/edit-site/src/components/start-template-options/index.js.
|
|
27
35
|
function injectThemeAttributeInBlockTemplateContent(block) {
|
|
@@ -44,7 +52,14 @@ const PatternEdit = ({
|
|
|
44
52
|
// This change won't be saved.
|
|
45
53
|
// It will continue to pull from the pattern file unless changes are made to its respective template part.
|
|
46
54
|
useEffect(() => {
|
|
47
|
-
if (selectedPattern?.blocks) {
|
|
55
|
+
if (!hasRecursionError && selectedPattern?.blocks) {
|
|
56
|
+
try {
|
|
57
|
+
parsePatternDependencies(selectedPattern);
|
|
58
|
+
} catch (error) {
|
|
59
|
+
setHasRecursionError(true);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
48
63
|
// We batch updates to block list settings to avoid triggering cascading renders
|
|
49
64
|
// for each container block included in a tree and optimize initial render.
|
|
50
65
|
// Since the above uses microtasks, we need to use a microtask here as well,
|
|
@@ -67,8 +82,15 @@ const PatternEdit = ({
|
|
|
67
82
|
setBlockEditingMode(rootClientId, rootEditingMode);
|
|
68
83
|
});
|
|
69
84
|
}
|
|
70
|
-
}, [clientId, selectedPattern
|
|
85
|
+
}, [clientId, hasRecursionError, selectedPattern, __unstableMarkNextChangeAsNotPersistent, replaceBlocks, getBlockEditingMode, setBlockEditingMode, getBlockRootClientId]);
|
|
71
86
|
const props = useBlockProps();
|
|
87
|
+
if (hasRecursionError) {
|
|
88
|
+
return createElement("div", {
|
|
89
|
+
...props
|
|
90
|
+
}, createElement(Warning, null, sprintf(
|
|
91
|
+
// translators: A warning in which %s is the name of a pattern.
|
|
92
|
+
__('Pattern "%s" cannot be rendered inside itself.'), selectedPattern?.name)));
|
|
93
|
+
}
|
|
72
94
|
return createElement("div", {
|
|
73
95
|
...props
|
|
74
96
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["cloneBlock","useSelect","useDispatch","useEffect","store","blockEditorStore","useBlockProps","coreStore","PatternEdit","attributes","clientId","selectedPattern","select","__experimentalGetParsedPattern","slug","currentThemeStylesheet","getCurrentTheme","stylesheet","replaceBlocks","setBlockEditingMode","__unstableMarkNextChangeAsNotPersistent","getBlockRootClientId","getBlockEditingMode","injectThemeAttributeInBlockTemplateContent","block","innerBlocks","find","innerBlock","name","map","theme","undefined","blocks","window","queueMicrotask","rootClientId","clonedBlocks","rootEditingMode","props","createElement"],"sources":["@wordpress/block-library/src/pattern/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { cloneBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\nconst PatternEdit = ( { attributes, clientId } ) => {\n\tconst selectedPattern = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).__experimentalGetParsedPattern(\n\t\t\t\tattributes.slug\n\t\t\t),\n\t\t[ attributes.slug ]\n\t);\n\n\tconst currentThemeStylesheet = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tsetBlockEditingMode,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\tconst { getBlockRootClientId, getBlockEditingMode } =\n\t\tuseSelect( blockEditorStore );\n\n\t// Duplicated in packages/edit-site/src/components/start-template-options/index.js.\n\tfunction injectThemeAttributeInBlockTemplateContent( block ) {\n\t\tif (\n\t\t\tblock.innerBlocks.find(\n\t\t\t\t( innerBlock ) => innerBlock.name === 'core/template-part'\n\t\t\t)\n\t\t) {\n\t\t\tblock.innerBlocks = block.innerBlocks.map( ( innerBlock ) => {\n\t\t\t\tif (\n\t\t\t\t\tinnerBlock.name === 'core/template-part' &&\n\t\t\t\t\tinnerBlock.attributes.theme === undefined\n\t\t\t\t) {\n\t\t\t\t\tinnerBlock.attributes.theme = currentThemeStylesheet;\n\t\t\t\t}\n\t\t\t\treturn innerBlock;\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tblock.name === 'core/template-part' &&\n\t\t\tblock.attributes.theme === undefined\n\t\t) {\n\t\t\tblock.attributes.theme = currentThemeStylesheet;\n\t\t}\n\t\treturn block;\n\t}\n\n\t// Run this effect when the component loads.\n\t// This adds the Pattern's contents to the post.\n\t// This change won't be saved.\n\t// It will continue to pull from the pattern file unless changes are made to its respective template part.\n\tuseEffect( () => {\n\t\tif ( selectedPattern?.blocks ) {\n\t\t\t// We batch updates to block list settings to avoid triggering cascading renders\n\t\t\t// for each container block included in a tree and optimize initial render.\n\t\t\t// Since the above uses microtasks, we need to use a microtask here as well,\n\t\t\t// because nested pattern blocks cannot be inserted if the parent block supports\n\t\t\t// inner blocks but doesn't have blockSettings in the state.\n\t\t\twindow.queueMicrotask( () => {\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\t\t// Clone blocks from the pattern before insertion to ensure they receive\n\t\t\t\t// distinct client ids. See https://github.com/WordPress/gutenberg/issues/50628.\n\t\t\t\tconst clonedBlocks = selectedPattern.blocks.map( ( block ) =>\n\t\t\t\t\tcloneBlock(\n\t\t\t\t\t\tinjectThemeAttributeInBlockTemplateContent( block )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst rootEditingMode = getBlockEditingMode( rootClientId );\n\t\t\t\t// Temporarily set the root block to default mode to allow replacing the pattern.\n\t\t\t\t// This could happen when the page is disabling edits of non-content blocks.\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( rootClientId, 'default' );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\treplaceBlocks( clientId, clonedBlocks );\n\t\t\t\t// Restore the root block's original mode.\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( rootClientId, rootEditingMode );\n\t\t\t} );\n\t\t}\n\t}, [\n\t\tclientId,\n\t\tselectedPattern
|
|
1
|
+
{"version":3,"names":["cloneBlock","useSelect","useDispatch","useState","useEffect","Warning","store","blockEditorStore","useBlockProps","coreStore","__","sprintf","useParsePatternDependencies","PatternEdit","attributes","clientId","selectedPattern","select","__experimentalGetParsedPattern","slug","currentThemeStylesheet","getCurrentTheme","stylesheet","replaceBlocks","setBlockEditingMode","__unstableMarkNextChangeAsNotPersistent","getBlockRootClientId","getBlockEditingMode","hasRecursionError","setHasRecursionError","parsePatternDependencies","injectThemeAttributeInBlockTemplateContent","block","innerBlocks","find","innerBlock","name","map","theme","undefined","blocks","error","window","queueMicrotask","rootClientId","clonedBlocks","rootEditingMode","props","createElement"],"sources":["@wordpress/block-library/src/pattern/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { cloneBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useEffect } from '@wordpress/element';\nimport {\n\tWarning,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useParsePatternDependencies } from './recursion-detector';\n\nconst PatternEdit = ( { attributes, clientId } ) => {\n\tconst selectedPattern = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).__experimentalGetParsedPattern(\n\t\t\t\tattributes.slug\n\t\t\t),\n\t\t[ attributes.slug ]\n\t);\n\n\tconst currentThemeStylesheet = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tsetBlockEditingMode,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\tconst { getBlockRootClientId, getBlockEditingMode } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst [ hasRecursionError, setHasRecursionError ] = useState( false );\n\tconst parsePatternDependencies = useParsePatternDependencies();\n\n\t// Duplicated in packages/edit-site/src/components/start-template-options/index.js.\n\tfunction injectThemeAttributeInBlockTemplateContent( block ) {\n\t\tif (\n\t\t\tblock.innerBlocks.find(\n\t\t\t\t( innerBlock ) => innerBlock.name === 'core/template-part'\n\t\t\t)\n\t\t) {\n\t\t\tblock.innerBlocks = block.innerBlocks.map( ( innerBlock ) => {\n\t\t\t\tif (\n\t\t\t\t\tinnerBlock.name === 'core/template-part' &&\n\t\t\t\t\tinnerBlock.attributes.theme === undefined\n\t\t\t\t) {\n\t\t\t\t\tinnerBlock.attributes.theme = currentThemeStylesheet;\n\t\t\t\t}\n\t\t\t\treturn innerBlock;\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tblock.name === 'core/template-part' &&\n\t\t\tblock.attributes.theme === undefined\n\t\t) {\n\t\t\tblock.attributes.theme = currentThemeStylesheet;\n\t\t}\n\t\treturn block;\n\t}\n\n\t// Run this effect when the component loads.\n\t// This adds the Pattern's contents to the post.\n\t// This change won't be saved.\n\t// It will continue to pull from the pattern file unless changes are made to its respective template part.\n\tuseEffect( () => {\n\t\tif ( ! hasRecursionError && selectedPattern?.blocks ) {\n\t\t\ttry {\n\t\t\t\tparsePatternDependencies( selectedPattern );\n\t\t\t} catch ( error ) {\n\t\t\t\tsetHasRecursionError( true );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We batch updates to block list settings to avoid triggering cascading renders\n\t\t\t// for each container block included in a tree and optimize initial render.\n\t\t\t// Since the above uses microtasks, we need to use a microtask here as well,\n\t\t\t// because nested pattern blocks cannot be inserted if the parent block supports\n\t\t\t// inner blocks but doesn't have blockSettings in the state.\n\t\t\twindow.queueMicrotask( () => {\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\t\t// Clone blocks from the pattern before insertion to ensure they receive\n\t\t\t\t// distinct client ids. See https://github.com/WordPress/gutenberg/issues/50628.\n\t\t\t\tconst clonedBlocks = selectedPattern.blocks.map( ( block ) =>\n\t\t\t\t\tcloneBlock(\n\t\t\t\t\t\tinjectThemeAttributeInBlockTemplateContent( block )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst rootEditingMode = getBlockEditingMode( rootClientId );\n\t\t\t\t// Temporarily set the root block to default mode to allow replacing the pattern.\n\t\t\t\t// This could happen when the page is disabling edits of non-content blocks.\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( rootClientId, 'default' );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\treplaceBlocks( clientId, clonedBlocks );\n\t\t\t\t// Restore the root block's original mode.\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( rootClientId, rootEditingMode );\n\t\t\t} );\n\t\t}\n\t}, [\n\t\tclientId,\n\t\thasRecursionError,\n\t\tselectedPattern,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceBlocks,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tgetBlockRootClientId,\n\t] );\n\n\tconst props = useBlockProps();\n\n\tif ( hasRecursionError ) {\n\t\treturn (\n\t\t\t<div { ...props }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t// translators: A warning in which %s is the name of a pattern.\n\t\t\t\t\t\t__( 'Pattern \"%s\" cannot be rendered inside itself.' ),\n\t\t\t\t\t\tselectedPattern?.name\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn <div { ...props } />;\n};\n\nexport default PatternEdit;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THIS MODULE IS INTENTIONALLY KEPT WITHIN THE PATTERN BLOCK'S SOURCE.
|
|
3
|
+
*
|
|
4
|
+
* This is because this approach for preventing infinite loops due to
|
|
5
|
+
* recursively rendering blocks is specific to the way that the `core/pattern`
|
|
6
|
+
* block behaves in the editor. Any other block types that deal with recursion
|
|
7
|
+
* SHOULD USE THE STANDARD METHOD for avoiding loops:
|
|
8
|
+
*
|
|
9
|
+
* @see https://github.com/WordPress/gutenberg/pull/31455
|
|
10
|
+
* @see packages/block-editor/src/components/recursion-provider/README.md
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* WordPress dependencies
|
|
15
|
+
*/
|
|
16
|
+
import { useRegistry } from '@wordpress/data';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Naming is hard.
|
|
20
|
+
*
|
|
21
|
+
* @see useParsePatternDependencies
|
|
22
|
+
*
|
|
23
|
+
* @type {WeakMap<Object, Function>}
|
|
24
|
+
*/
|
|
25
|
+
const cachedParsers = new WeakMap();
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Hook used by PatternEdit to parse block patterns. It returns a function that
|
|
29
|
+
* takes a pattern and returns nothing but throws an error if the pattern is
|
|
30
|
+
* recursive.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```js
|
|
34
|
+
* const parsePatternDependencies = useParsePatternDependencies();
|
|
35
|
+
* parsePatternDependencies( selectedPattern );
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @see parsePatternDependencies
|
|
39
|
+
*
|
|
40
|
+
* @return {Function} A function to parse block patterns.
|
|
41
|
+
*/
|
|
42
|
+
export function useParsePatternDependencies() {
|
|
43
|
+
const registry = useRegistry();
|
|
44
|
+
|
|
45
|
+
// Instead of caching maps, go straight to the point and cache bound
|
|
46
|
+
// functions. Each of those functions is bound to a different Map that will
|
|
47
|
+
// keep track of patterns in the context of the given registry.
|
|
48
|
+
if (!cachedParsers.has(registry)) {
|
|
49
|
+
const deps = new Map();
|
|
50
|
+
cachedParsers.set(registry, parsePatternDependencies.bind(null, deps));
|
|
51
|
+
}
|
|
52
|
+
return cachedParsers.get(registry);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Parse a given pattern and traverse its contents to detect any subsequent
|
|
57
|
+
* patterns on which it may depend. Such occurrences will be added to an
|
|
58
|
+
* internal dependency graph. If a circular dependency is detected, an
|
|
59
|
+
* error will be thrown.
|
|
60
|
+
*
|
|
61
|
+
* EXPORTED FOR TESTING PURPOSES ONLY.
|
|
62
|
+
*
|
|
63
|
+
* @param {Map<string, Set<string>>} deps Map of pattern dependencies.
|
|
64
|
+
* @param {Object} pattern Pattern.
|
|
65
|
+
* @param {string} pattern.name Pattern name.
|
|
66
|
+
* @param {Array} pattern.blocks Pattern's block list.
|
|
67
|
+
*
|
|
68
|
+
* @throws {Error} If a circular dependency is detected.
|
|
69
|
+
*/
|
|
70
|
+
export function parsePatternDependencies(deps, {
|
|
71
|
+
name,
|
|
72
|
+
blocks
|
|
73
|
+
}) {
|
|
74
|
+
const queue = [...blocks];
|
|
75
|
+
while (queue.length) {
|
|
76
|
+
const block = queue.shift();
|
|
77
|
+
for (const innerBlock of (_block$innerBlocks = block.innerBlocks) !== null && _block$innerBlocks !== void 0 ? _block$innerBlocks : []) {
|
|
78
|
+
var _block$innerBlocks;
|
|
79
|
+
queue.unshift(innerBlock);
|
|
80
|
+
}
|
|
81
|
+
if (block.name === 'core/pattern') {
|
|
82
|
+
registerDependency(deps, name, block.attributes.slug);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Declare that pattern `a` depends on pattern `b`. If a circular
|
|
89
|
+
* dependency is detected, an error will be thrown.
|
|
90
|
+
*
|
|
91
|
+
* EXPORTED FOR TESTING PURPOSES ONLY.
|
|
92
|
+
*
|
|
93
|
+
* @param {Map<string, Set<string>>} deps Map of pattern dependencies.
|
|
94
|
+
* @param {string} a Slug for pattern A.
|
|
95
|
+
* @param {string} b Slug for pattern B.
|
|
96
|
+
*
|
|
97
|
+
* @throws {Error} If a circular dependency is detected.
|
|
98
|
+
*/
|
|
99
|
+
export function registerDependency(deps, a, b) {
|
|
100
|
+
if (!deps.has(a)) {
|
|
101
|
+
deps.set(a, new Set());
|
|
102
|
+
}
|
|
103
|
+
deps.get(a).add(b);
|
|
104
|
+
if (hasCycle(deps, a)) {
|
|
105
|
+
throw new TypeError(`Pattern ${a} has a circular dependency and cannot be rendered.`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Determine if a given pattern has circular dependencies on other patterns.
|
|
111
|
+
* This will be determined by running a depth-first search on the current state
|
|
112
|
+
* of the graph represented by `patternDependencies`.
|
|
113
|
+
*
|
|
114
|
+
* @param {Map<string, Set<string>>} deps Map of pattern dependencies.
|
|
115
|
+
* @param {string} slug Pattern slug.
|
|
116
|
+
* @param {Set<string>} [visitedNodes] Set to track visited nodes in the graph.
|
|
117
|
+
* @param {Set<string>} [currentPath] Set to track and backtrack graph paths.
|
|
118
|
+
* @return {boolean} Whether any cycle was found.
|
|
119
|
+
*/
|
|
120
|
+
function hasCycle(deps, slug, visitedNodes = new Set(), currentPath = new Set()) {
|
|
121
|
+
var _deps$get;
|
|
122
|
+
visitedNodes.add(slug);
|
|
123
|
+
currentPath.add(slug);
|
|
124
|
+
const dependencies = (_deps$get = deps.get(slug)) !== null && _deps$get !== void 0 ? _deps$get : new Set();
|
|
125
|
+
for (const dependency of dependencies) {
|
|
126
|
+
if (!visitedNodes.has(dependency)) {
|
|
127
|
+
if (hasCycle(deps, dependency, visitedNodes, currentPath)) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
} else if (currentPath.has(dependency)) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Remove the current node from the current path when backtracking
|
|
136
|
+
currentPath.delete(slug);
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=recursion-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useRegistry","cachedParsers","WeakMap","useParsePatternDependencies","registry","has","deps","Map","set","parsePatternDependencies","bind","get","name","blocks","queue","length","block","shift","innerBlock","_block$innerBlocks","innerBlocks","unshift","registerDependency","attributes","slug","a","b","Set","add","hasCycle","TypeError","visitedNodes","currentPath","_deps$get","dependencies","dependency","delete"],"sources":["@wordpress/block-library/src/pattern/recursion-detector.js"],"sourcesContent":["/**\n * THIS MODULE IS INTENTIONALLY KEPT WITHIN THE PATTERN BLOCK'S SOURCE.\n *\n * This is because this approach for preventing infinite loops due to\n * recursively rendering blocks is specific to the way that the `core/pattern`\n * block behaves in the editor. Any other block types that deal with recursion\n * SHOULD USE THE STANDARD METHOD for avoiding loops:\n *\n * @see https://github.com/WordPress/gutenberg/pull/31455\n * @see packages/block-editor/src/components/recursion-provider/README.md\n */\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry } from '@wordpress/data';\n\n/**\n * Naming is hard.\n *\n * @see useParsePatternDependencies\n *\n * @type {WeakMap<Object, Function>}\n */\nconst cachedParsers = new WeakMap();\n\n/**\n * Hook used by PatternEdit to parse block patterns. It returns a function that\n * takes a pattern and returns nothing but throws an error if the pattern is\n * recursive.\n *\n * @example\n * ```js\n * const parsePatternDependencies = useParsePatternDependencies();\n * parsePatternDependencies( selectedPattern );\n * ```\n *\n * @see parsePatternDependencies\n *\n * @return {Function} A function to parse block patterns.\n */\nexport function useParsePatternDependencies() {\n\tconst registry = useRegistry();\n\n\t// Instead of caching maps, go straight to the point and cache bound\n\t// functions. Each of those functions is bound to a different Map that will\n\t// keep track of patterns in the context of the given registry.\n\tif ( ! cachedParsers.has( registry ) ) {\n\t\tconst deps = new Map();\n\t\tcachedParsers.set(\n\t\t\tregistry,\n\t\t\tparsePatternDependencies.bind( null, deps )\n\t\t);\n\t}\n\treturn cachedParsers.get( registry );\n}\n\n/**\n * Parse a given pattern and traverse its contents to detect any subsequent\n * patterns on which it may depend. Such occurrences will be added to an\n * internal dependency graph. If a circular dependency is detected, an\n * error will be thrown.\n *\n * EXPORTED FOR TESTING PURPOSES ONLY.\n *\n * @param {Map<string, Set<string>>} deps Map of pattern dependencies.\n * @param {Object} pattern Pattern.\n * @param {string} pattern.name Pattern name.\n * @param {Array} pattern.blocks Pattern's block list.\n *\n * @throws {Error} If a circular dependency is detected.\n */\nexport function parsePatternDependencies( deps, { name, blocks } ) {\n\tconst queue = [ ...blocks ];\n\twhile ( queue.length ) {\n\t\tconst block = queue.shift();\n\t\tfor ( const innerBlock of block.innerBlocks ?? [] ) {\n\t\t\tqueue.unshift( innerBlock );\n\t\t}\n\t\tif ( block.name === 'core/pattern' ) {\n\t\t\tregisterDependency( deps, name, block.attributes.slug );\n\t\t}\n\t}\n}\n\n/**\n * Declare that pattern `a` depends on pattern `b`. If a circular\n * dependency is detected, an error will be thrown.\n *\n * EXPORTED FOR TESTING PURPOSES ONLY.\n *\n * @param {Map<string, Set<string>>} deps Map of pattern dependencies.\n * @param {string} a Slug for pattern A.\n * @param {string} b Slug for pattern B.\n *\n * @throws {Error} If a circular dependency is detected.\n */\nexport function registerDependency( deps, a, b ) {\n\tif ( ! deps.has( a ) ) {\n\t\tdeps.set( a, new Set() );\n\t}\n\tdeps.get( a ).add( b );\n\tif ( hasCycle( deps, a ) ) {\n\t\tthrow new TypeError(\n\t\t\t`Pattern ${ a } has a circular dependency and cannot be rendered.`\n\t\t);\n\t}\n}\n\n/**\n * Determine if a given pattern has circular dependencies on other patterns.\n * This will be determined by running a depth-first search on the current state\n * of the graph represented by `patternDependencies`.\n *\n * @param {Map<string, Set<string>>} deps Map of pattern dependencies.\n * @param {string} slug Pattern slug.\n * @param {Set<string>} [visitedNodes] Set to track visited nodes in the graph.\n * @param {Set<string>} [currentPath] Set to track and backtrack graph paths.\n * @return {boolean} Whether any cycle was found.\n */\nfunction hasCycle(\n\tdeps,\n\tslug,\n\tvisitedNodes = new Set(),\n\tcurrentPath = new Set()\n) {\n\tvisitedNodes.add( slug );\n\tcurrentPath.add( slug );\n\n\tconst dependencies = deps.get( slug ) ?? new Set();\n\n\tfor ( const dependency of dependencies ) {\n\t\tif ( ! visitedNodes.has( dependency ) ) {\n\t\t\tif ( hasCycle( deps, dependency, visitedNodes, currentPath ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if ( currentPath.has( dependency ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// Remove the current node from the current path when backtracking\n\tcurrentPath.delete( slug );\n\treturn false;\n}\n"],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import { useEntityProp, store as coreStore } from '@wordpress/core-data';
|
|
|
11
11
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
12
12
|
import { MenuItem, ToggleControl, PanelBody, Placeholder, Button, TextControl } from '@wordpress/components';
|
|
13
13
|
import { InspectorControls, BlockControls, MediaPlaceholder, MediaReplaceFlow, useBlockProps, store as blockEditorStore, __experimentalUseBorderProps as useBorderProps } from '@wordpress/block-editor';
|
|
14
|
+
import { useMemo } from '@wordpress/element';
|
|
14
15
|
import { __, sprintf } from '@wordpress/i18n';
|
|
15
16
|
import { upload } from '@wordpress/icons';
|
|
16
17
|
import { store as noticesStore } from '@wordpress/notices';
|
|
@@ -47,9 +48,25 @@ export default function PostFeaturedImageEdit({
|
|
|
47
48
|
scale,
|
|
48
49
|
sizeSlug,
|
|
49
50
|
rel,
|
|
50
|
-
linkTarget
|
|
51
|
+
linkTarget,
|
|
52
|
+
useFirstImageFromPost
|
|
51
53
|
} = attributes;
|
|
52
|
-
const [
|
|
54
|
+
const [storedFeaturedImage, setFeaturedImage] = useEntityProp('postType', postTypeSlug, 'featured_media', postId);
|
|
55
|
+
|
|
56
|
+
// Fallback to post content if no featured image is set.
|
|
57
|
+
// This is needed for the "Use first image from post" option.
|
|
58
|
+
const [postContent] = useEntityProp('postType', postTypeSlug, 'content', postId);
|
|
59
|
+
const featuredImage = useMemo(() => {
|
|
60
|
+
if (storedFeaturedImage) {
|
|
61
|
+
return storedFeaturedImage;
|
|
62
|
+
}
|
|
63
|
+
if (!useFirstImageFromPost) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const imageOpener = /<!--\s+wp:(?:core\/)?image\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\s+\/?-->).)*)?}\s+)?-->/.exec(postContent);
|
|
67
|
+
const imageId = imageOpener?.groups?.attrs && JSON.parse(imageOpener.groups.attrs)?.id;
|
|
68
|
+
return imageId;
|
|
69
|
+
}, [storedFeaturedImage, useFirstImageFromPost, postContent]);
|
|
53
70
|
const {
|
|
54
71
|
media,
|
|
55
72
|
postType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useEntityProp","store","coreStore","useSelect","useDispatch","MenuItem","ToggleControl","PanelBody","Placeholder","Button","TextControl","InspectorControls","BlockControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","blockEditorStore","__experimentalUseBorderProps","useBorderProps","__","sprintf","upload","noticesStore","DimensionControls","Overlay","ALLOWED_MEDIA_TYPES","getMediaSourceUrlBySizeSlug","media","slug","media_details","sizes","source_url","disabledClickProps","onClick","event","preventDefault","PostFeaturedImageEdit","clientId","attributes","setAttributes","context","postId","postType","postTypeSlug","queryId","isDescendentOfQueryLoop","Number","isFinite","isLink","aspectRatio","height","width","scale","sizeSlug","rel","linkTarget","featuredImage","setFeaturedImage","postPermalink","select","getMedia","getPostType","getEditedEntityRecord","link","mediaUrl","imageSizes","getSettings","imageSizeOptions","filter","map","name","value","label","blockProps","style","borderProps","placeholder","content","createElement","className","withIllustration","onSelectImage","id","createErrorNotice","onUploadError","message","type","controls","Fragment","title","__nextHasNoMarginBottom","labels","singular_name","onChange","checked","newRel","image","href","target","imageStyles","objectFit","onSelect","accept","allowedTypes","onError","mediaLibraryButton","open","icon","variant","showTooltip","tooltipPosition","src","alt","alt_text","group","mediaId","mediaURL"],"sources":["@wordpress/block-library/src/post-featured-image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tMenuItem,\n\tToggleControl,\n\tPanelBody,\n\tPlaceholder,\n\tButton,\n\tTextControl,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport DimensionControls from './dimension-controls';\nimport Overlay from './overlay';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction getMediaSourceUrlBySizeSlug( media, slug ) {\n\treturn (\n\t\tmedia?.media_details?.sizes?.[ slug ]?.source_url || media?.source_url\n\t);\n}\n\nconst disabledClickProps = {\n\tonClick: ( event ) => event.preventDefault(),\n\t'aria-disabled': true,\n};\n\nexport default function PostFeaturedImageEdit( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType: postTypeSlug, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst {\n\t\tisLink,\n\t\taspectRatio,\n\t\theight,\n\t\twidth,\n\t\tscale,\n\t\tsizeSlug,\n\t\trel,\n\t\tlinkTarget,\n\t} = attributes;\n\tconst [ featuredImage, setFeaturedImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\tconst { media, postType, postPermalink } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getMedia, getPostType, getEditedEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\treturn {\n\t\t\t\tmedia:\n\t\t\t\t\tfeaturedImage &&\n\t\t\t\t\tgetMedia( featuredImage, {\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t} ),\n\t\t\t\tpostType: postTypeSlug && getPostType( postTypeSlug ),\n\t\t\t\tpostPermalink: getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostTypeSlug,\n\t\t\t\t\tpostId\n\t\t\t\t)?.link,\n\t\t\t};\n\t\t},\n\t\t[ featuredImage, postTypeSlug, postId ]\n\t);\n\n\tconst mediaUrl = getMediaSourceUrlBySizeSlug( media, sizeSlug );\n\n\tconst imageSizes = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().imageSizes,\n\t\t[]\n\t);\n\tconst imageSizeOptions = imageSizes\n\t\t.filter( ( { slug } ) => {\n\t\t\treturn media?.media_details?.sizes?.[ slug ]?.source_url;\n\t\t} )\n\t\t.map( ( { name, slug } ) => ( {\n\t\t\tvalue: slug,\n\t\t\tlabel: name,\n\t\t} ) );\n\n\tconst blockProps = useBlockProps( {\n\t\tstyle: { width, height, aspectRatio },\n\t} );\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-media-placeholder',\n\t\t\t\t\tborderProps.className\n\t\t\t\t) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\tstyle={ {\n\t\t\t\t\theight: !! aspectRatio && '100%',\n\t\t\t\t\twidth: !! aspectRatio && '100%',\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst onSelectImage = ( value ) => {\n\t\tif ( value?.id ) {\n\t\t\tsetFeaturedImage( value.id );\n\t\t}\n\t};\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst controls = (\n\t\t<>\n\t\t\t<DimensionControls\n\t\t\t\tclientId={ clientId }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\timageSizeOptions={ imageSizeOptions }\n\t\t\t/>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Page\".\n\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<>\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 in new tab' ) }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\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\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\t\t\tvalue={ rel }\n\t\t\t\t\t\t\t\tonChange={ ( newRel ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { rel: newRel } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\tlet image;\n\n\t/**\n\t * A Post Featured Image block should not have image replacement\n\t * or upload options in the following cases:\n\t * - Is placed in a Query Loop. This is a consious decision to\n\t * prevent content editing of different posts in Query Loop, and\n\t * this could change in the future.\n\t * - Is in a context where it does not have a postId (for example\n\t * in a template or template part).\n\t */\n\tif ( ! featuredImage && ( isDescendentOfQueryLoop || ! postId ) ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ controls }\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={ postPermalink }\n\t\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\t\t{ ...disabledClickProps }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ placeholder() }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tplaceholder()\n\t\t\t\t\t) }\n\t\t\t\t\t<Overlay\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst label = __( 'Add a featured image' );\n\tconst imageStyles = {\n\t\t...borderProps.style,\n\t\theight: aspectRatio ? '100%' : height,\n\t\twidth: !! aspectRatio && '100%',\n\t\tobjectFit: !! ( height || aspectRatio ) && scale,\n\t};\n\n\t/**\n\t * When the post featured image block is placed in a context where:\n\t * - It has a postId (for example in a single post)\n\t * - It is not inside a query loop\n\t * - It has no image assigned yet\n\t * Then display the placeholder with the image upload option.\n\t */\n\tif ( ! featuredImage ) {\n\t\timage = (\n\t\t\t<MediaPlaceholder\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tmediaLibraryButton={ ( { open } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\ttooltipPosition=\"top center\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t} else {\n\t\t// We have a Featured image so show a Placeholder if is loading.\n\t\timage = ! media ? (\n\t\t\tplaceholder()\n\t\t) : (\n\t\t\t<img\n\t\t\t\tclassName={ borderProps.className }\n\t\t\t\tsrc={ mediaUrl }\n\t\t\t\talt={\n\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The image's alt text.\n\t\t\t\t\t\t\t\t__( 'Featured image: %s' ),\n\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Featured image' )\n\t\t\t\t}\n\t\t\t\tstyle={ imageStyles }\n\t\t\t/>\n\t\t);\n\t}\n\n\t/**\n\t * When the post featured image block:\n\t * - Has an image assigned\n\t * - Is not inside a query loop\n\t * Then display the image and the image replacement option.\n\t */\n\treturn (\n\t\t<>\n\t\t\t{ controls }\n\t\t\t{ !! media && ! isDescendentOfQueryLoop && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ featuredImage }\n\t\t\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t>\n\t\t\t\t\t\t<MenuItem onClick={ () => setFeaturedImage( 0 ) }>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /* If the featured image is linked, wrap in an <a /> tag to trigger any inherited link element styles */ }\n\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ postPermalink }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\t{ ...disabledClickProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ image }\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\timage\n\t\t\t\t) }\n\t\t\t\t<Overlay\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","useEntityProp","store","coreStore","useSelect","useDispatch","MenuItem","ToggleControl","PanelBody","Placeholder","Button","TextControl","InspectorControls","BlockControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","blockEditorStore","__experimentalUseBorderProps","useBorderProps","useMemo","__","sprintf","upload","noticesStore","DimensionControls","Overlay","ALLOWED_MEDIA_TYPES","getMediaSourceUrlBySizeSlug","media","slug","media_details","sizes","source_url","disabledClickProps","onClick","event","preventDefault","PostFeaturedImageEdit","clientId","attributes","setAttributes","context","postId","postType","postTypeSlug","queryId","isDescendentOfQueryLoop","Number","isFinite","isLink","aspectRatio","height","width","scale","sizeSlug","rel","linkTarget","useFirstImageFromPost","storedFeaturedImage","setFeaturedImage","postContent","featuredImage","imageOpener","exec","imageId","groups","attrs","JSON","parse","id","postPermalink","select","getMedia","getPostType","getEditedEntityRecord","link","mediaUrl","imageSizes","getSettings","imageSizeOptions","filter","map","name","value","label","blockProps","style","borderProps","placeholder","content","createElement","className","withIllustration","onSelectImage","createErrorNotice","onUploadError","message","type","controls","Fragment","title","__nextHasNoMarginBottom","labels","singular_name","onChange","checked","newRel","image","href","target","imageStyles","objectFit","onSelect","accept","allowedTypes","onError","mediaLibraryButton","open","icon","variant","showTooltip","tooltipPosition","src","alt","alt_text","group","mediaId","mediaURL"],"sources":["@wordpress/block-library/src/post-featured-image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tMenuItem,\n\tToggleControl,\n\tPanelBody,\n\tPlaceholder,\n\tButton,\n\tTextControl,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport DimensionControls from './dimension-controls';\nimport Overlay from './overlay';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction getMediaSourceUrlBySizeSlug( media, slug ) {\n\treturn (\n\t\tmedia?.media_details?.sizes?.[ slug ]?.source_url || media?.source_url\n\t);\n}\n\nconst disabledClickProps = {\n\tonClick: ( event ) => event.preventDefault(),\n\t'aria-disabled': true,\n};\n\nexport default function PostFeaturedImageEdit( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType: postTypeSlug, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst {\n\t\tisLink,\n\t\taspectRatio,\n\t\theight,\n\t\twidth,\n\t\tscale,\n\t\tsizeSlug,\n\t\trel,\n\t\tlinkTarget,\n\t\tuseFirstImageFromPost,\n\t} = attributes;\n\n\tconst [ storedFeaturedImage, setFeaturedImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\t// Fallback to post content if no featured image is set.\n\t// This is needed for the \"Use first image from post\" option.\n\tconst [ postContent ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\t'content',\n\t\tpostId\n\t);\n\n\tconst featuredImage = useMemo( () => {\n\t\tif ( storedFeaturedImage ) {\n\t\t\treturn storedFeaturedImage;\n\t\t}\n\n\t\tif ( ! useFirstImageFromPost ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageOpener =\n\t\t\t/<!--\\s+wp:(?:core\\/)?image\\s+(?<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\\s+\\/?-->).)*)?}\\s+)?-->/.exec(\n\t\t\t\tpostContent\n\t\t\t);\n\t\tconst imageId =\n\t\t\timageOpener?.groups?.attrs &&\n\t\t\tJSON.parse( imageOpener.groups.attrs )?.id;\n\t\treturn imageId;\n\t}, [ storedFeaturedImage, useFirstImageFromPost, postContent ] );\n\n\tconst { media, postType, postPermalink } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getMedia, getPostType, getEditedEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\treturn {\n\t\t\t\tmedia:\n\t\t\t\t\tfeaturedImage &&\n\t\t\t\t\tgetMedia( featuredImage, {\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t} ),\n\t\t\t\tpostType: postTypeSlug && getPostType( postTypeSlug ),\n\t\t\t\tpostPermalink: getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostTypeSlug,\n\t\t\t\t\tpostId\n\t\t\t\t)?.link,\n\t\t\t};\n\t\t},\n\t\t[ featuredImage, postTypeSlug, postId ]\n\t);\n\n\tconst mediaUrl = getMediaSourceUrlBySizeSlug( media, sizeSlug );\n\n\tconst imageSizes = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().imageSizes,\n\t\t[]\n\t);\n\tconst imageSizeOptions = imageSizes\n\t\t.filter( ( { slug } ) => {\n\t\t\treturn media?.media_details?.sizes?.[ slug ]?.source_url;\n\t\t} )\n\t\t.map( ( { name, slug } ) => ( {\n\t\t\tvalue: slug,\n\t\t\tlabel: name,\n\t\t} ) );\n\n\tconst blockProps = useBlockProps( {\n\t\tstyle: { width, height, aspectRatio },\n\t} );\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-media-placeholder',\n\t\t\t\t\tborderProps.className\n\t\t\t\t) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\tstyle={ {\n\t\t\t\t\theight: !! aspectRatio && '100%',\n\t\t\t\t\twidth: !! aspectRatio && '100%',\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst onSelectImage = ( value ) => {\n\t\tif ( value?.id ) {\n\t\t\tsetFeaturedImage( value.id );\n\t\t}\n\t};\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst controls = (\n\t\t<>\n\t\t\t<DimensionControls\n\t\t\t\tclientId={ clientId }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\timageSizeOptions={ imageSizeOptions }\n\t\t\t/>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tpostType?.labels.singular_name\n\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Page\".\n\t\t\t\t\t\t\t\t\t\t__( 'Link to %s' ),\n\t\t\t\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __( 'Link to post' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<>\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 in new tab' ) }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\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\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\t\t\tvalue={ rel }\n\t\t\t\t\t\t\t\tonChange={ ( newRel ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( { rel: newRel } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\tlet image;\n\n\t/**\n\t * A Post Featured Image block should not have image replacement\n\t * or upload options in the following cases:\n\t * - Is placed in a Query Loop. This is a consious decision to\n\t * prevent content editing of different posts in Query Loop, and\n\t * this could change in the future.\n\t * - Is in a context where it does not have a postId (for example\n\t * in a template or template part).\n\t */\n\tif ( ! featuredImage && ( isDescendentOfQueryLoop || ! postId ) ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ controls }\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={ postPermalink }\n\t\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\t\t{ ...disabledClickProps }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ placeholder() }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tplaceholder()\n\t\t\t\t\t) }\n\t\t\t\t\t<Overlay\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst label = __( 'Add a featured image' );\n\tconst imageStyles = {\n\t\t...borderProps.style,\n\t\theight: aspectRatio ? '100%' : height,\n\t\twidth: !! aspectRatio && '100%',\n\t\tobjectFit: !! ( height || aspectRatio ) && scale,\n\t};\n\n\t/**\n\t * When the post featured image block is placed in a context where:\n\t * - It has a postId (for example in a single post)\n\t * - It is not inside a query loop\n\t * - It has no image assigned yet\n\t * Then display the placeholder with the image upload option.\n\t */\n\tif ( ! featuredImage ) {\n\t\timage = (\n\t\t\t<MediaPlaceholder\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tmediaLibraryButton={ ( { open } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\ttooltipPosition=\"top center\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t} else {\n\t\t// We have a Featured image so show a Placeholder if is loading.\n\t\timage = ! media ? (\n\t\t\tplaceholder()\n\t\t) : (\n\t\t\t<img\n\t\t\t\tclassName={ borderProps.className }\n\t\t\t\tsrc={ mediaUrl }\n\t\t\t\talt={\n\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The image's alt text.\n\t\t\t\t\t\t\t\t__( 'Featured image: %s' ),\n\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Featured image' )\n\t\t\t\t}\n\t\t\t\tstyle={ imageStyles }\n\t\t\t/>\n\t\t);\n\t}\n\n\t/**\n\t * When the post featured image block:\n\t * - Has an image assigned\n\t * - Is not inside a query loop\n\t * Then display the image and the image replacement option.\n\t */\n\treturn (\n\t\t<>\n\t\t\t{ controls }\n\t\t\t{ !! media && ! isDescendentOfQueryLoop && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ featuredImage }\n\t\t\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t>\n\t\t\t\t\t\t<MenuItem onClick={ () => setFeaturedImage( 0 ) }>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /* If the featured image is linked, wrap in an <a /> tag to trigger any inherited link element styles */ }\n\t\t\t\t{ !! isLink ? (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ postPermalink }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\t{ ...disabledClickProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ image }\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\timage\n\t\t\t\t) }\n\t\t\t\t<Overlay\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["postFeaturedImage","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","isLink","type","aspectRatio","width","height","scale","sizeSlug","rel","attribute","linkTarget","overlayColor","customOverlayColor","dimRatio","gradient","customGradient","usesContext","supports","align","color","__experimentalDuotone","text","background","__experimentalBorder","radius","__experimentalSelector","__experimentalSkipSerialization","__experimentalDefaultControls","html","spacing","margin","padding","editorStyle","style","edit","settings","init"],"sources":["@wordpress/block-library/src/post-featured-image/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { postFeaturedImage as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,iBAAiB,IAAIC,IAAI,QAAQ,kBAAkB;;AAE5D;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,MAAA;MAAAC,IAAA;MAAA;IAAA;IAAAC,WAAA;MAAAD,IAAA;IAAA;IAAAE,KAAA;MAAAF,IAAA;IAAA;IAAAG,MAAA;MAAAH,IAAA;IAAA;IAAAI,KAAA;MAAAJ,IAAA;MAAA;IAAA;IAAAK,QAAA;MAAAL,IAAA;IAAA;IAAAM,GAAA;MAAAN,IAAA;MAAAO,SAAA;MAAA;IAAA;IAAAC,UAAA;MAAAR,IAAA;MAAA;IAAA;IAAAS,YAAA;MAAAT,IAAA;IAAA;IAAAU,kBAAA;MAAAV,IAAA;IAAA;IAAAW,QAAA;MAAAX,IAAA;MAAA;IAAA;IAAAY,QAAA;MAAAZ,IAAA;IAAA;IAAAa,cAAA;MAAAb,IAAA;IAAA;EAAA;
|
|
1
|
+
{"version":3,"names":["postFeaturedImage","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","isLink","type","aspectRatio","width","height","scale","sizeSlug","rel","attribute","linkTarget","overlayColor","customOverlayColor","dimRatio","gradient","customGradient","useFirstImageFromPost","usesContext","supports","align","color","__experimentalDuotone","text","background","__experimentalBorder","radius","__experimentalSelector","__experimentalSkipSerialization","__experimentalDefaultControls","html","spacing","margin","padding","editorStyle","style","edit","settings","init"],"sources":["@wordpress/block-library/src/post-featured-image/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { postFeaturedImage as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,iBAAiB,IAAIC,IAAI,QAAQ,kBAAkB;;AAE5D;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,MAAA;MAAAC,IAAA;MAAA;IAAA;IAAAC,WAAA;MAAAD,IAAA;IAAA;IAAAE,KAAA;MAAAF,IAAA;IAAA;IAAAG,MAAA;MAAAH,IAAA;IAAA;IAAAI,KAAA;MAAAJ,IAAA;MAAA;IAAA;IAAAK,QAAA;MAAAL,IAAA;IAAA;IAAAM,GAAA;MAAAN,IAAA;MAAAO,SAAA;MAAA;IAAA;IAAAC,UAAA;MAAAR,IAAA;MAAA;IAAA;IAAAS,YAAA;MAAAT,IAAA;IAAA;IAAAU,kBAAA;MAAAV,IAAA;IAAA;IAAAW,QAAA;MAAAX,IAAA;MAAA;IAAA;IAAAY,QAAA;MAAAZ,IAAA;IAAA;IAAAa,cAAA;MAAAb,IAAA;IAAA;IAAAc,qBAAA;MAAAd,IAAA;MAAA;IAAA;EAAA;EAAAe,WAAA;EAAAC,QAAA;IAAAC,KAAA;IAAAC,KAAA;MAAAC,qBAAA;MAAAC,IAAA;MAAAC,UAAA;IAAA;IAAAC,oBAAA;MAAAJ,KAAA;MAAAK,MAAA;MAAArB,KAAA;MAAAsB,sBAAA;MAAAC,+BAAA;MAAAC,6BAAA;QAAAR,KAAA;QAAAK,MAAA;QAAArB,KAAA;MAAA;IAAA;IAAAyB,IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;EAAA;EAAAC,WAAA;EAAAC,KAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAExC;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMyC,QAAQ,GAAG;EACvB9C,IAAI;EACJ6C;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAM9C,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAE4C;AAAS,CAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["title","icon","initBlock","metadata","$schema","apiVersion","name","category","description","textdomain","usesContext","attributes","textAlign","type","level","isLink","rel","attribute","linkTarget","supports","align","html","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","
|
|
1
|
+
{"version":3,"names":["title","icon","initBlock","metadata","$schema","apiVersion","name","category","description","textdomain","usesContext","attributes","textAlign","type","level","isLink","rel","attribute","linkTarget","supports","align","html","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","style","edit","deprecated","settings","init"],"sources":["@wordpress/block-library/src/post-title/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { title as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,IAAI,QAAQ,kBAAkB;;AAEhD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAN,KAAA;EAAAO,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,WAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,KAAA;MAAAD,IAAA;MAAA;IAAA;IAAAE,MAAA;MAAAF,IAAA;MAAA;IAAA;IAAAG,GAAA;MAAAH,IAAA;MAAAI,SAAA;MAAA;IAAA;IAAAC,UAAA;MAAAL,IAAA;MAAA;IAAA;EAAA;EAAAM,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;QAAAH,IAAA;MAAA;IAAA;IAAAI,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;EAAA;EAAAQ,KAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEpC;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMqC,QAAQ,GAAG;EACvB1C,IAAI;EACJwC,IAAI;EACJC;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAM1C,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEwC;AAAS,CAAE,CAAC"}
|
|
@@ -19,10 +19,9 @@ const metadata = {
|
|
|
19
19
|
textdomain: "default",
|
|
20
20
|
attributes: {
|
|
21
21
|
content: {
|
|
22
|
-
type: "
|
|
23
|
-
source: "
|
|
22
|
+
type: "rich-text",
|
|
23
|
+
source: "rich-text",
|
|
24
24
|
selector: "pre",
|
|
25
|
-
"default": "",
|
|
26
25
|
__unstablePreserveWhiteSpace: true,
|
|
27
26
|
__experimentalRole: "content"
|
|
28
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","preformatted","icon","initBlock","edit","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","content","type","source","selector","__unstablePreserveWhiteSpace","__experimentalRole","supports","anchor","color","gradients","__experimentalDefaultControls","background","text","spacing","padding","margin","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","style","save","transforms","settings","example","merge","attributesToMerge","init"],"sources":["@wordpress/block-library/src/preformatted/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { preformatted as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\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\t/* eslint-disable @wordpress/i18n-no-collapsible-whitespace */\n\t\t\t// translators: Sample content for the Preformatted block. Can be replaced with a more locale-adequate work.\n\t\t\tcontent: __(\n\t\t\t\t'EXT. XANADU - FAINT DAWN - 1940 (MINIATURE)\\nWindow, very small in the distance, illuminated.\\nAll around this is an almost totally black screen. Now, as the camera moves slowly towards the window which is almost a postage stamp in the frame, other forms appear;'\n\t\t\t),\n\t\t\t/* eslint-enable @wordpress/i18n-no-collapsible-whitespace */\n\t\t},\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent: attributes.content + '\\n\\n' + attributesToMerge.content,\n\t\t};\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,IAAIC,IAAI,QAAQ,kBAAkB;;AAEvD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,OAAA;MAAAC,IAAA;MAAAC,MAAA;MAAAC,QAAA;
|
|
1
|
+
{"version":3,"names":["__","preformatted","icon","initBlock","edit","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","content","type","source","selector","__unstablePreserveWhiteSpace","__experimentalRole","supports","anchor","color","gradients","__experimentalDefaultControls","background","text","spacing","padding","margin","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","style","save","transforms","settings","example","merge","attributesToMerge","init"],"sources":["@wordpress/block-library/src/preformatted/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { preformatted as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\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\t/* eslint-disable @wordpress/i18n-no-collapsible-whitespace */\n\t\t\t// translators: Sample content for the Preformatted block. Can be replaced with a more locale-adequate work.\n\t\t\tcontent: __(\n\t\t\t\t'EXT. XANADU - FAINT DAWN - 1940 (MINIATURE)\\nWindow, very small in the distance, illuminated.\\nAll around this is an almost totally black screen. Now, as the camera moves slowly towards the window which is almost a postage stamp in the frame, other forms appear;'\n\t\t\t),\n\t\t\t/* eslint-enable @wordpress/i18n-no-collapsible-whitespace */\n\t\t},\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent: attributes.content + '\\n\\n' + attributesToMerge.content,\n\t\t};\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,IAAIC,IAAI,QAAQ,kBAAkB;;AAEvD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,OAAA;MAAAC,IAAA;MAAAC,MAAA;MAAAC,QAAA;MAAAC,4BAAA;MAAAC,kBAAA;IAAA;EAAA;EAAAC,QAAA;IAAAC,MAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,OAAA;MAAAC,MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;EAAA;EAAAQ,KAAA;AAAA;AAE1B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEjC;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMkC,QAAQ,GAAG;EACvBxC,IAAI;EACJyC,OAAO,EAAE;IACR9B,UAAU,EAAE;MACX;MACA;MACAC,OAAO,EAAEd,EAAE,CACV,wQACD;MACA;IACD;EACD,CAAC;;EACDyC,UAAU;EACVrC,IAAI;EACJoC,IAAI;EACJI,KAAKA,CAAE/B,UAAU,EAAEgC,iBAAiB,EAAG;IACtC,OAAO;MACN/B,OAAO,EAAED,UAAU,CAACC,OAAO,GAAG,MAAM,GAAG+B,iBAAiB,CAAC/B;IAC1D,CAAC;EACF;AACD,CAAC;AAED,OAAO,MAAMgC,IAAI,GAAGA,CAAA,KAAM3C,SAAS,CAAE;EAAEK,IAAI;EAAEH,QAAQ;EAAEqC;AAAS,CAAE,CAAC"}
|
|
@@ -20,16 +20,15 @@ const metadata = {
|
|
|
20
20
|
textdomain: "default",
|
|
21
21
|
attributes: {
|
|
22
22
|
value: {
|
|
23
|
-
type: "
|
|
24
|
-
source: "
|
|
23
|
+
type: "rich-text",
|
|
24
|
+
source: "rich-text",
|
|
25
25
|
selector: "p",
|
|
26
26
|
__experimentalRole: "content"
|
|
27
27
|
},
|
|
28
28
|
citation: {
|
|
29
|
-
type: "
|
|
30
|
-
source: "
|
|
29
|
+
type: "rich-text",
|
|
30
|
+
source: "rich-text",
|
|
31
31
|
selector: "cite",
|
|
32
|
-
"default": "",
|
|
33
32
|
__experimentalRole: "content"
|
|
34
33
|
},
|
|
35
34
|
textAlign: {
|
|
@@ -58,8 +57,7 @@ const metadata = {
|
|
|
58
57
|
__experimentalTextDecoration: true,
|
|
59
58
|
__experimentalLetterSpacing: true,
|
|
60
59
|
__experimentalDefaultControls: {
|
|
61
|
-
fontSize: true
|
|
62
|
-
fontAppearance: true
|
|
60
|
+
fontSize: true
|
|
63
61
|
}
|
|
64
62
|
},
|
|
65
63
|
__experimentalBorder: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","pullquote","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","value","type","source","selector","__experimentalRole","citation","textAlign","supports","anchor","align","color","gradients","background","link","__experimentalDefaultControls","text","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","
|
|
1
|
+
{"version":3,"names":["__","pullquote","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","description","textdomain","attributes","value","type","source","selector","__experimentalRole","citation","textAlign","supports","anchor","align","color","gradients","background","link","__experimentalDefaultControls","text","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","__experimentalBorder","radius","style","width","__experimentalStyle","editorStyle","save","transforms","settings","example","init"],"sources":["@wordpress/block-library/src/pullquote/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { pullquote 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\tvalue:\n\t\t\t\t// translators: Quote serving as example for the Pullquote block. Attributed to Matt Mullenweg.\n\t\t\t\t__(\n\t\t\t\t\t'One of the hardest things to do in technology is disrupt yourself.'\n\t\t\t\t),\n\t\t\tcitation: __( 'Matt Mullenweg' ),\n\t\t},\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,IAAIC,IAAI,QAAQ,kBAAkB;;AAEpD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,KAAA;MAAAC,IAAA;MAAAC,MAAA;MAAAC,QAAA;MAAAC,kBAAA;IAAA;IAAAC,QAAA;MAAAJ,IAAA;MAAAC,MAAA;MAAAC,QAAA;MAAAC,kBAAA;IAAA;IAAAE,SAAA;MAAAL,IAAA;IAAA;EAAA;EAAAM,QAAA;IAAAC,MAAA;IAAAC,KAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,UAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAF,UAAA;QAAAG,IAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAV,6BAAA;QAAAG,QAAA;MAAA;IAAA;IAAAQ,oBAAA;MAAAf,KAAA;MAAAgB,MAAA;MAAAC,KAAA;MAAAC,KAAA;MAAAd,6BAAA;QAAAJ,KAAA;QAAAgB,MAAA;QAAAC,KAAA;QAAAC,KAAA;MAAA;IAAA;IAAAC,mBAAA;MAAAb,UAAA;QAAAC,QAAA;QAAAC,UAAA;MAAA;IAAA;EAAA;EAAAY,WAAA;EAAAH,KAAA;AAAA;AAE1B,OAAOI,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEtC;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMuC,QAAQ,GAAG;EACvB9C,IAAI;EACJ+C,OAAO,EAAE;IACRnC,UAAU,EAAE;MACXC,KAAK;MACJ;MACAf,EAAE,CACD,oEACD,CAAC;MACFoB,QAAQ,EAAEpB,EAAE,CAAE,gBAAiB;IAChC;EACD,CAAC;EACD+C,UAAU;EACV1C,IAAI;EACJyC,IAAI;EACJ1C;AACD,CAAC;AAED,OAAO,MAAM8C,IAAI,GAAGA,CAAA,KAAM/C,SAAS,CAAE;EAAEM,IAAI;EAAEH,QAAQ;EAAE0C;AAAS,CAAE,CAAC"}
|